IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ トヨタ自動車株式会社の特許一覧

特許7544019手領域検出装置、手領域検出方法及び手領域検出用コンピュータプログラム
<>
  • 特許-手領域検出装置、手領域検出方法及び手領域検出用コンピュータプログラム 図1
  • 特許-手領域検出装置、手領域検出方法及び手領域検出用コンピュータプログラム 図2
  • 特許-手領域検出装置、手領域検出方法及び手領域検出用コンピュータプログラム 図3
  • 特許-手領域検出装置、手領域検出方法及び手領域検出用コンピュータプログラム 図4
  • 特許-手領域検出装置、手領域検出方法及び手領域検出用コンピュータプログラム 図5
  • 特許-手領域検出装置、手領域検出方法及び手領域検出用コンピュータプログラム 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-26
(45)【発行日】2024-09-03
(54)【発明の名称】手領域検出装置、手領域検出方法及び手領域検出用コンピュータプログラム
(51)【国際特許分類】
   G06T 7/00 20170101AFI20240827BHJP
   G06T 7/20 20170101ALI20240827BHJP
   G08G 1/16 20060101ALI20240827BHJP
【FI】
G06T7/00 660Z
G06T7/00 350B
G06T7/20 300Z
G08G1/16 F
【請求項の数】 5
(21)【出願番号】P 2021198850
(22)【出願日】2021-12-07
(65)【公開番号】P2023084580
(43)【公開日】2023-06-19
【審査請求日】2023-07-25
(73)【特許権者】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【弁理士】
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100092624
【弁理士】
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100147555
【弁理士】
【氏名又は名称】伊藤 公一
(74)【代理人】
【識別番号】100123593
【弁理士】
【氏名又は名称】関根 宣夫
(74)【代理人】
【識別番号】100133835
【弁理士】
【氏名又は名称】河野 努
(72)【発明者】
【氏名】山崎 将幸
【審査官】佐田 宏史
(56)【参考文献】
【文献】特開2009-104297(JP,A)
【文献】特開2010-170275(JP,A)
【文献】特開2020-052476(JP,A)
【文献】特開2021-174537(JP,A)
【文献】特開2017-102603(JP,A)
【文献】特開2013-030099(JP,A)
【文献】中国特許出願公開第107341811(CN,A)
【文献】青山 章一郎、外3名,“携帯電話向け非接触掌紋認証 アルゴリズムの提案からAndroid端末向けアプリの開発まで”,画像ラボ,日本,日本工業出版株式会社,2014年05月10日,Vol.25, No.5,pp.16-22
【文献】Lei Gu et al.,"Hand gesture interface based on improved adaptive hand area detection and contour signature",2012 International Symposium on Intelligent Signal Processing and Communications Systems,米国,IEEE,2012年11月04日,pp.463-468
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/00,7/00-7/90
G06V 10/00-10/98
G08G 1/16
(57)【特許請求の範囲】
【請求項1】
画素ごとに手が表されている確からしさを表す確信度を算出するように予め学習された識別器に画像を入力することで、前記画像の画素ごとに前記確信度を算出する確信度算出部と、
前記画像の端部における複数の所定点のそれぞれについて、当該所定点において手が前記画像からはみ出している確からしさを判定するはみ出し判定部と、
前記複数の所定点のうち、手が前記画像からはみ出している確からしさが高い所定点ほど、手領域検出閾値を低く設定するとともに、前記画像の各画素についての前記手領域検出閾値を、当該画素から前記複数の所定点のそれぞれまでの距離に応じて前記複数の所定点のそれぞれの前記手領域検出閾値を加重平均することで算出した値に設定する閾値設定部と、
前記画像の各画素のうち、当該画素についての前記確信度が当該画素について設定された前記手領域検出閾値よりも高い画素の集合を、手が表されている手領域として検出する検出部と、
を有する手領域検出装置。
【請求項2】
前記はみ出し判定部は、前記複数の所定点のそれぞれにおける前記確からしさを算出するように予め学習されたはみ出し識別器に前記画像を入力することで、前記複数の所定点のそれぞれにおける前記確からしさを算出する、請求項1に記載の手領域検出装置。
【請求項3】
前記はみ出し判定部は、直近の所定期間において得られた時系列の一連の過去画像のそれぞれにおける前記手領域から前記画像における前記手領域の位置を予測し、前記複数の所定点のうち、予測した前記手領域に含まれる所定点における前記確からしさを、予測した前記手領域に含まれない所定点における前記確からしさよりも高くする、請求項1に記載の手領域検出装置。
【請求項4】
手領域検出装置が、画素ごとに手が表されている確からしさを表す確信度を算出するように予め学習された識別器に画像を入力することで、前記画像の画素ごとに前記確信度を算出し、
前記手領域検出装置が、前記画像の端部における複数の所定点のそれぞれについて、当該所定点において手が前記画像からはみ出している確からしさを判定し、
前記手領域検出装置が、前記複数の所定点のうち、手が前記画像からはみ出している確からしさが高い所定点ほど、手領域検出閾値を低く設定するとともに、前記画像の各画素についての前記手領域検出閾値を、当該画素から前記複数の所定点のそれぞれまでの距離に応じて前記複数の所定点のそれぞれの前記手領域検出閾値を加重平均することで算出した値に設定し、
前記手領域検出装置が、前記画像の各画素のうち、当該画素についての前記確信度が当該画素について設定された前記手領域検出閾値よりも高い画素の集合を、手が表されている手領域として検出する、
ことを含む手領域検出方法。
【請求項5】
画素ごとに手が表されている確からしさを表す確信度を算出するように予め学習された識別器に画像を入力することで、前記画像の画素ごとに前記確信度を算出し、
前記画像の端部における複数の所定点のそれぞれについて、当該所定点において手が前記画像からはみ出している確からしさを判定し、
前記複数の所定点のうち、手が前記画像からはみ出している確からしさが高い所定点ほど、手領域検出閾値を低く設定するとともに、前記画像の各画素についての前記手領域検出閾値を、当該画素から前記複数の所定点のそれぞれまでの距離に応じて前記複数の所定点のそれぞれの前記手領域検出閾値を加重平均することで算出した値に設定し、
前記画像の各画素のうち、当該画素についての前記確信度が当該画素について設定された前記手領域検出閾値よりも高い画素の集合を、手が表されている手領域として検出する、
ことをコンピュータに実行させるための手領域検出用コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像において手が表されている手領域を検出する手領域検出装置、手領域検出方法及び手領域検出用コンピュータプログラムに関する。
【背景技術】
【0002】
ドライバモニタカメラあるいはWebカメラなどのカメラを用いて撮影対象となる人物の顔を継続的に撮影して得られた時系列の一連の画像からその人物の顔を検出することで、その人物をモニタリングする技術が研究されている。しかし、その人物の手の位置によっては、カメラの撮影範囲内に、その人物の顔だけでなく、手が写りこむことがある。そこで、カメラにより生成された画像上に写っている手を検出することが提案されている(特許文献1を参照)。
【0003】
特許文献1に開示された脇見判定装置は、運転者の顔を連続して撮影して撮影画像を取得し、その後に、取得された撮影画像を用いて、運転者の顔向きの方向を検出し、その検出結果に基づいて、運転者が脇見をしているか否かを判定する。さらに、この脇見判定装置は、取得された撮影画像の中に運転者の手が写っている場合に、その撮影画像を用いて運転者の手の形状を検出する。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2013-164663号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
撮影対象となる人物の手がその人物の顔とともに写っている場合、手が顔よりもカメラの近くに位置しているために、画像上で手が大きく写ることがある。そのため、場合によっては、画像の何れかの端部から手がはみ出し、手全体が画像に写っていないことがある。このような場合、手領域を正確に検出することが困難となることがある。
【0006】
そこで、本発明は、画像上で手が表されている手領域を精度良く検出することが可能な手領域検出装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
一つの実施形態によれば、手領域検出装置が提供される。この手領域検出装置は、画素ごとに手が表されている確からしさを表す確信度を算出するように予め学習された識別器に画像を入力することで、画像の画素ごとに確信度を算出する確信度算出部と、画像の端部における複数の所定点のそれぞれについて、その所定点において手が画像からはみ出している確からしさを判定するはみ出し判定部と、複数の所定点のうち、手が画像からはみ出している確からしさが高い所定点ほど、手領域検出閾値を低く設定するとともに、画像の各画素についての手領域検出閾値を、その画素から複数の所定点のそれぞれまでの距離に応じて複数の所定点のそれぞれの手領域検出閾値を加重平均することで算出した値に設定する閾値設定部と、画像の各画素のうち、その画素についての確信度がその画素について設定された手領域検出閾値よりも高い画素の集合を、手が表されている手領域として検出する検出部とを有する。
【0008】
この手領域検出装置において、はみ出し判定部は、複数の所定点のそれぞれにおける手が画像からはみ出している確からしさを算出するように予め学習されたはみ出し識別器に画像を入力することで、複数の所定点のそれぞれにおけるその確からしさを算出することが好ましい。
【0009】
あるいは、この手領域検出装置において、はみ出し判定部は、直近の所定期間において得られた時系列の一連の過去画像のそれぞれにおける手領域から、上記の画像における手領域の位置を予測し、複数の所定点のうち、予測した手領域に含まれる所定点における手が画像からはみ出している確からしさを、予測した手領域に含まれない所定点における確からしさよりも高くすることが好ましい。
【0010】
他の実施形態によれば、手領域検出方法が提供される。この手領域検出方法は、画素ごとに手が表されている確からしさを表す確信度を算出するように予め学習された識別器に画像を入力することで、画像の画素ごとに確信度を算出し、画像の端部における複数の所定点のそれぞれについて、その所定点において手が画像からはみ出している確からしさを判定し、複数の所定点のうち、手が画像からはみ出している確からしさが高い所定点ほど、手領域検出閾値を低く設定するとともに、画像の各画素についての手領域検出閾値を、その画素から複数の所定点のそれぞれまでの距離に応じて複数の所定点のそれぞれの手領域検出閾値を加重平均することで算出した値に設定し、画像の各画素のうち、その画素についての確信度がその画素について設定された手領域検出閾値よりも高い画素の集合を、手が表されている手領域として検出する、ことを含む。
【0011】
さらに他の実施形態によれば、手領域検出用コンピュータプログラムが提供される。この手領域検出用コンピュータプログラムは、画素ごとに手が表されている確からしさを表す確信度を算出するように予め学習された識別器に画像を入力することで、画像の画素ごとに確信度を算出し、画像の端部における複数の所定点のそれぞれについて、その所定点において手が画像からはみ出している確からしさを判定し、複数の所定点のうち、手が画像からはみ出している確からしさが高い所定点ほど、手領域検出閾値を低く設定するとともに、画像の各画素についての手領域検出閾値を、その画素から複数の所定点のそれぞれまでの距離に応じて複数の所定点のそれぞれの手領域検出閾値を加重平均することで算出した値に設定し、画像の各画素のうち、その画素についての確信度がその画素について設定された手領域検出閾値よりも高い画素の集合を、手が表されている手領域として検出する、ことをコンピュータに実行させるための命令を含む。
【発明の効果】
【0012】
本開示に係る手領域検出装置は、画像上で手が表されている手領域を精度良く検出することができるという効果を奏する。
【図面の簡単な説明】
【0013】
図1】手領域検出装置が実装される車両制御システムの概略構成図である。
図2】手領域検出装置の一つの実施形態である電子制御装置のハードウェア構成図である。
図3】手領域検出処理を含むドライバモニタ処理に関する、電子制御装置のプロセッサの機能ブロック図である。
図4】顔画像に設定される各所定点の一例を示す図である。
図5】(a)は、手が表された画像の一例を示す図であり、(b)は、(a)に示された画像の各画素に対して設定された手領域検出閾値の一例を示す図である。
図6】手領域検出処理を含むドライバモニタ処理の動作フローチャートである。
【発明を実施するための形態】
【0014】
以下、図を参照しつつ、手領域検出装置、及び、手領域検出装置上で実行される手領域検出方法及び手領域検出用コンピュータプログラムについて説明する。この手領域検出装置は、撮影対象となる人物の手が表されている画像において、画素ごとに、その画素に手が表されている確からしさを表す確信度を算出し、その確信度が手領域検出閾値よりも高い画素の集合を、手が表されている手領域として検出する。ただし、手の一部が画像からはみ出していると、手がはみ出している画像端の付近の画素において、手の輪郭といった手らしさを表す特徴が失われてしまう。そのため、精度良く手領域を検出することが困難となる。そこで、この手領域検出装置は、画像端に設定される複数の所定点のそれぞれについて、その所定点において手が画像からはみ出している確からしさを算出し、その確からしさが高い所定点ほど、手領域検出閾値を低く設定する。さらに、この手領域検出装置は、画像の各画素についての手領域検出閾値を、その画素から各所定点までの距離に応じて各所定点の手領域検出閾値を加重平均することで算出した値に設定する。
【0015】
以下では、手領域検出装置を、車両のドライバの顔を継続的に撮影することで得られた時系列の一連の画像に基づいてドライバをモニタリングするドライバモニタ装置に適用した例について説明する。このドライバモニタ装置は、ドライバの頭部を撮影するように設けられたドライバモニタカメラにより生成された画像から、ドライバの顔が表された顔領域を検出し、その検出結果に基づいてドライバの状態を判定する。ただし、このドライバモニタ装置は、上記の手領域検出処理により画像から手領域が検出され、手領域によってドライバの顔の少なくとも一部が隠されているときには、ドライバの状態を判定しないようにする。
【0016】
図1は、手領域検出装置が実装される車両制御システムの概略構成図である。また図2は、手領域検出装置の一つの実施形態である電子制御装置のハードウェア構成図である。本実施形態では、車両10に搭載され、かつ、車両10を制御する車両制御システム1は、ドライバモニタカメラ2と、ユーザインターフェース3と、手領域検出装置の一例である電子制御装置(ECU)4とを有する。ドライバモニタカメラ2及びユーザインターフェース3とECU4とは、コントローラエリアネットワークといった規格に準拠した車内ネットワークを介して通信可能に接続される。なお、車両制御システム1は、車両10の自己位置を測位するためのGPS受信機(図示せず)をさらに有してもよい。また、車両制御システム1は、車両10の周囲を撮影するためのカメラ(図示せず)、または、LiDARあるいはレーダといった車両10から車両10の周囲に存在する物体までの距離を測定する距離センサ(図示せず)の少なくとも何れかをさらに有していてもよい。さらにまた、車両制御システム1は、他の機器と無線通信するための無線通信端末(図示せず)を有していてもよい。さらにまた、車両制御システム1は、車両10の走行ルートを探索するためのナビゲーション装置(図示せず)を有していてもよい。
【0017】
ドライバモニタカメラ2は、カメラまたは車内撮像部の一例であり、CCDあるいはC-MOSなど、可視光または赤外光に感度を有する光電変換素子のアレイで構成された2次元検出器と、その2次元検出器上に撮影対象となる領域の像を結像する結像光学系を有する。ドライバモニタカメラ2は、赤外LEDといったドライバを照明するための光源をさらに有していてもよい。そしてドライバモニタカメラ2は、車両10の運転席に着座したドライバの頭部がその撮影対象領域に含まれるように、すなわち、ドライバの頭部を撮影可能なように、例えば、インストルメントパネルまたはその近傍にドライバへ向けて取り付けられる。そしてドライバモニタカメラ2は、所定の撮影周期(例えば1/30秒~1/10秒)ごとにドライバの頭部を撮影し、ドライバの顔が表された画像(以下、説明の便宜上、顔画像と呼ぶ)を生成する。ドライバモニタカメラ2により得られた顔画像は、カラー画像であってもよく、あるいは、グレー画像であってもよい。ドライバモニタカメラ2は、顔画像を生成する度に、その生成した顔画像を、車内ネットワークを介してECU4へ出力する。
【0018】
ユーザインターフェース3は、通知部の一例であり、例えば、液晶ディスプレイまたは有機ELディスプレイといった表示装置を有する。ユーザインターフェース3は、車両10の車室内、例えば、インスツルメンツパネルに、ドライバへ向けて設置される。そしてユーザインターフェース3は、ECU4から車内ネットワークを介して受信した各種の情報を表示することで、その情報をドライバへ通知する。ユーザインターフェース3は、さらに、車室内に設置されるスピーカを有していてもよい。この場合、ユーザインターフェース3は、ECU4から車内ネットワークを介して受信した各種の情報を音声信号として出力することで、その情報をドライバへ通知する。さらに、ユーザインターフェース3は、インスツルメンツパネル内またはその近傍に設けられる光源、あるいは、ステアリングまたはドライバシートに設けられる振動機器を有していてもよい。この場合、ユーザインターフェース3は、ECU4から車内ネットワークを介して受信した情報に応じて、光源を点灯または点滅させ、あるいは、振動機器を振動させることでドライバにその情報を通知する。
【0019】
ECU4は、顔画像に基づいてドライバの顔の向きを検出し、その顔の向きに基づいてドライバの状態を判定する。そしてECU4は、ドライバの状態が、ドライバが余所見をしているといった運転に適さない状態である場合、ユーザインターフェース3を介してドライバへ警告する。
【0020】
図2に示されるように、ECU4は、通信インターフェース21と、メモリ22と、プロセッサ23とを有する。通信インターフェース21、メモリ22及びプロセッサ23は、それぞれ、別個の回路として構成されてもよく、あるいは、一つの集積回路として一体的に構成されてもよい。
【0021】
通信インターフェース21は、ECU4を車内ネットワークに接続するためのインターフェース回路を有する。そして通信インターフェース21は、ドライバモニタカメラ2から顔画像を受信する度に、受信した顔画像をプロセッサ23へわたす。また、通信インターフェース21は、ユーザインターフェース3に表示させる情報をプロセッサ23から受け取ると、その情報をユーザインターフェース3へ出力する。
【0022】
メモリ22は、記憶部の一例であり、例えば、揮発性の半導体メモリ及び不揮発性の半導体メモリを有する。そしてメモリ22は、ECU4のプロセッサ23により実行される手領域検出処理を含むドライバモニタ処理において使用される各種のアルゴリズム及び各種のデータを記憶する。例えば、メモリ22は、手が表されている確からしさを表す確信度の算出に使用される識別器を規定するためのパラメータセットを記憶する。同様に、メモリ22は、手が顔画像からはみ出ししている確からしさを表すはみ出し度の算出に使用される識別器を規定するためのパラメータセットを記憶する。さらに、メモリ22は、はみ出し度と手領域検出閾値の関係を表す参照テーブルなどを記憶する。さらに、メモリ22は、ドライバモニタカメラ2から受け取った顔画像、及び、ドライバモニタ処理の途中で生成される各種のデータを一時的に記憶する。
【0023】
プロセッサ23は、1個または複数個のCPU(Central Processing Unit)及びその周辺回路を有する。プロセッサ23は、論理演算ユニット、数値演算ユニットあるいはグラフィック処理ユニットといった他の演算回路をさらに有していてもよい。そしてプロセッサ23は、所定の周期ごとに、ECU4がドライバモニタカメラ2から受け取った最新の顔画像に対して手領域検出処理を含むドライバモニタ処理を実行する。
【0024】
図3は、手領域検出処理を含むドライバモニタ処理に関する、プロセッサ23の機能ブロック図である。プロセッサ23は、確信度算出部31と、はみ出し判定部32と、閾値設定部33と、手領域検出部34と、顔検出部35と、状態判定部36とを有する。プロセッサ23が有するこれらの各部は、例えば、プロセッサ23上で動作するコンピュータプログラムにより実現される機能モジュールである。あるいは、プロセッサ23が有するこれらの各部は、プロセッサ23に設けられる、専用の演算回路であってもよい。なお、プロセッサ23が有するこれらの各部のうち、確信度算出部31、はみ出し判定部32、閾値設定部33及び手領域検出部34が手領域検出処理に関連する。
【0025】
確信度算出部31は、顔画像の画素ごとに、手が表されている確からしさを表す確信度を算出する。本実施形態では、確信度算出部31は、顔画像の各画素について確信度を算出するように予め学習された識別器に顔画像を入力することで、画素ごとに確信度を算出する。
【0026】
確信度算出部31は、そのような識別器として、例えば、Fully Convolutional Network、U-Net、または、SegNetといった、セマンティックセグメンテーション用のディープニューラルネットワーク(DNN)を用いることができる。あるいは、確信度算出部31は、そのような識別器として、ランダムフォレストといった他のセグメンテーション手法に従った識別器を利用してもよい。識別器は、その識別器に応じた学習手法、例えば、誤差逆伝搬法により、手が表された多数の教師画像を用いて予め学習される。
【0027】
確信度算出部31は、顔画像の画素ごとの確信度を、手領域検出部34へ通知する。
【0028】
はみ出し判定部32は、顔画像の画像端における複数の所定点のそれぞれについて、その所定点において手が顔画像からはみ出している確からしさを判定する。本実施形態では、はみ出し判定部32は、各所定点において手が顔画像からはみ出している確からしさを表すはみ出し度を算出するように予め学習されたはみ出し識別器に顔画像を入力することで、所定点ごとにはみ出し度を算出する。
【0029】
所定点は、例えば、顔画像の上下左右のそれぞれの辺の中点に設定される。あるいは、所定点は、顔画像の上下左右のそれぞれの辺について、その辺を3~5等分する位置に設定されてもよい。あるいはまた、所定点は、顔画像の4個のコーナーのそれぞれに設定されてもよい。
【0030】
図4は、顔画像に設定される各所定点の一例を示す図である。本実施形態では、図4に示されるように、顔画像400の各コーナー及び各辺の中点に所定点401が設定される。すなわち、本実施形態では、顔画像400に対して8個の所定点401が設定される。
【0031】
各所定点におけるはみ出し度を算出するはみ出し識別器は、所定点ごとのはみ出し度を、0~1の間何れかの値として出力するように構成される。あるいは、はみ出し識別器は、所定点ごとのはみ出し度として、はみ出していないことを表す値(例えば、0)、または、はみ出していることを表す値(例えば、1)の何れかの値を出力するように構成されてもよい。
【0032】
はみ出し判定部32は、はみ出し識別器として、例えば、コンボリューショナルニューラルネットワーク型(CNN)のアーキテクチャを有するDNNを用いることができる。この場合、1以上の畳み込み層よりも下流側に、各所定点におけるはみ出し度を算出するための出力層が設けられる。そして出力層は、各畳み込み層により算出された特徴マップに対して、所定点ごとにsigmoid演算を実行することで、所定点ごとにはみ出し度を算出する。あるいは、はみ出し判定部32は、はみ出し識別器として、サポートベクトル回帰といった他の機械学習手法に従った識別器を利用してもよい。はみ出し識別器は、そのはみ出し識別器に応じた学習手法、例えば、誤差逆伝搬法により、手が表され、かつ、手の一部がはみ出した多数の教師画像を用いて予め学習される。
【0033】
はみ出し判定部32は、各所定点について算出したはみ出し度を閾値設定部33へ通知する。
【0034】
閾値設定部33は、顔画像の各画素について、手領域検出閾値を設定する。本実施形態では、閾値設定部33は、先ず、顔画像の各所定点について、その所定点におけるはみ出し度が高いほど、手領域検出閾値を低くする。これにより、ドライバの手がはみ出している可能性が高いほど、手領域検出閾値が低く設定されるので、ドライバの手が顔画像からはみ出していても、手領域を精度良く検出することが可能となる。
【0035】
閾値設定部33は、はみ出し度と手領域検出閾値との関係を表す関係式に従って、各所定点について、その所定点におけるはみ出し度に応じた手領域検出閾値を設定する。あるいは、閾値設定部33は、はみ出し度と手領域検出閾値との関係を表す参照テーブルを参照することで、各所定点について、その所定点におけるはみ出し度に応じた手領域検出閾値を設定してもよい。
【0036】
さらに、閾値設定部33は、顔画像の各所定点以外の各画素について、その画素から各所定点までの距離に応じて各所定点の手領域検出閾値を加重平均することで、その画素についての手領域検出閾値を設定する。その際、閾値設定部33は、着目する画素に近い所定点ほど、その所定点についての手領域検出閾値に対する重みを大きくすればよい。また、閾値設定部33は、所定距離よりも遠い所定点に対する重み係数を0に設定してもよい。したがって、手が顔画像からはみ出している位置に近い画素ほど、設定される手領域検出閾値は低くなる。
【0037】
図5(a)は、手が表された画像の一例を示す図であり、図5(b)は、図5(a)に示された画像の各画素に対して設定された手領域検出閾値の一例を示す図である。図5(b)に示される閾値画像510の各画素について、暗いほど、図5(a)に示される画像500の対応位置の画素に設定される手領域検出閾値が低いことを表す。図5(a)に示される例では、画像500に表されている手501は、画像500の左端及び上端の大部分、及び、右端の一部において画像500からはみ出している。そのため、図5(b)の閾値画像510に示されるように、画像500の上端または左端に近い位置の画素ほど、手領域検出閾値は低く設定される。逆に、画像500の右下のコーナーに近い位置の画素ほど、手領域検出閾値は高く設定される。
【0038】
閾値設定部33は、顔画像の画素ごとの手領域検出閾値を、手領域検出部34へ通知する。
【0039】
手領域検出部34は、検出部の一例であり、顔画像の画素ごとに、その画素について算出された確信度をその画素について設定された手領域検出閾値と比較する。そして手領域検出部34は、確信度が手領域検出閾値よりも高い画素を選択し、選択した画素の集合を、ドライバの手が表されている手領域として検出する。
【0040】
手領域検出部34は、検出された手領域を表す情報(例えば、顔画像と同じサイズを有し、手領域内の画素と手領域外の画素とで異なる値を有する2値画像)を、顔検出部35及び状態判定部36へ通知する。
【0041】
顔検出部35は、顔画像から、ドライバの顔が表された顔領域を検出する。例えば、顔検出部35は、例えば、顔画像を、画像からドライバの顔を検出するように予め学習された識別器に入力することで顔領域を検出する。顔検出部35は、そのような識別器として、例えば、Single Shot MultiBox Detector(SSD)、または、Faster R-CNNといった、CNN型のアーキテクチャを持つDNNを用いることができる。あるいは、顔検出部35は、そのような識別器として、AdaBoost識別器を利用してもよい。この場合、顔検出部35は、顔画像にウィンドウを設定し、そのウィンドウからHaar-like特徴量といった、顔の有無の判定に有用な特徴量を算出する。そして顔検出部35は、算出した特徴量を識別器に入力することで、そのウィンドウにドライバの顔が表されているか否かを判定する。顔検出部35は、顔画像上でのウィンドウの位置、サイズ、アスペクト比及び向きなどを様々に変えながら上記の処理を行って、ドライバの顔が検出されたウィンドウを、顔領域とすればよい。なお、顔検出部35は、手領域以外でウィンドウを設定するようにしてもよい。識別器は、顔が表された画像及び顔が表されていない画像を含む教師データを用いてその識別器に適用される機械学習手法に応じた所定の学習手法に従って予め学習される。また、顔検出部35は、画像から顔領域を検出する他の手法に従って、顔画像から顔領域を検出してもよい。
【0042】
さらに、顔検出部35は、検出された顔領域から、顔の個々の器官ごとに、その器官の複数の特徴点を検出する。
【0043】
顔検出部35は、顔の個々の器官の複数の特徴点を検出するために、その特徴点を検出するように設計された検出器を顔領域に適用することで、個々の器官の特徴点を検出することができる。顔検出部35は、は、そのような検出器として、例えば、Active Shape Model(ASM)あるいはActive Appearance Model(AAM)といった、顔全体の情報を利用する検出器を利用することができる。あるいは、顔検出部35は、は、顔の個々の器官の特徴点を検出するように予め学習されたDNNを検出器として利用してもよい。
【0044】
顔検出部35は、顔画像から検出した顔領域を示す情報(例えば、顔画像上での顔領域の左上端座標、水平方向の幅及び垂直方向の高さ)及び顔の個々の器官の特徴点の位置を状態判定部36へ通知する。
【0045】
状態判定部36は、顔領域及び顔の各器官の特徴点に基づいて、ドライバの状態を判定する。ただし、状態判定部36は、ドライバの手がドライバの顔の少なくとも一部を隠している場合には、ドライバの状態を判定しない。例えば、顔画像に占める手領域の割合が所定割合(例えば、3~4割)以上である場合、状態判定部36は、ドライバの顔の少なくとも一部がドライバの手で隠されていると判定して、ドライバの状態を判定しない。また、顔の何れかの器官の特徴点が検出されておらず、かつ、顔領域と手領域とが接している場合も、状態判定部36は、ドライバの顔の少なくとも一部がドライバの手で隠されていると判定してもよい。あるいは、顔領域の面積に対する手領域の面積の比が所定割合以上である場合も、状態判定部36は、ドライバの顔の少なくとも一部がドライバの手で隠されていると判定してもよい。そのため、これらの場合にも、状態判定部36は、ドライバの状態を判定しなくてもよい。そして状態判定部36は、最後に判定されたドライバの状態を、現時点におけるドライバの状態とする。
【0046】
本実施形態では、状態判定部36は、顔領域に表されたドライバの顔の向きとドライバの顔の基準方向とを比較することで、ドライバの状態が車両10の運転に適した状態か否か判定する。なお、顔の基準方向は、メモリ22に予め記憶される。
【0047】
状態判定部36は、検出された顔の特徴点を、顔の3次元形状を表す3次元顔モデルにフィッティングする。そして状態判定部36は、各特徴点が3次元顔モデルに最もフィッティングする際の3次元顔モデルの顔の向きを、ドライバの顔の向きとして検出する。あるいは、状態判定部36は、画像に表された顔の向きを判定する他の手法に従って、顔画像に基づいてドライバの顔の向きを検出してもよい。なお、ドライバの顔の向きは、例えば、ドライバモニタカメラ2に対して正対する方向を基準とする、ピッチ角、ヨー角及びロール角の組み合わせで表される。
【0048】
状態判定部36は、顔領域に表されたドライバの顔の向きとドライバの顔の基準方向との差の絶対値を算出し、その差の絶対値を所定の顔向き許容範囲と比較する。そして状態判定部36は、その差の絶対値が顔向き許容範囲から外れている場合、ドライバは余所見をしている、すなわち、ドライバの状態は車両10の運転に適した状態でないと判定する。
【0049】
なお、ドライバは、車両10の周辺の状況の確認のために、車両10の正面方向以外を向くことがある。ただしそのような場合でも、ドライバが車両10の運転に集中していれば、ドライバは、車両10の正面方向以外を継続して向くことはない。そこで変形例によれば、状態判定部36は、ドライバの顔の向きとドライバの顔の基準方向との差の絶対値が顔向き許容範囲から外れている時間が所定時間(例えば、数秒間)以上継続すると、ドライバの状態は車両10の運転に適した状態でないと判定してもよい。
【0050】
状態判定部36は、ドライバの状態が車両10の運転に適した状態でないと判定した場合、ドライバに対して車両10の正面を向くように警告する警告メッセージを含む警告情報を生成する。そして状態判定部36は、生成した警告情報を、通信インターフェース21を介してユーザインターフェース3へ出力することで、ユーザインターフェース3にその警告メッセージまたは警告用のアイコンを表示させる。あるいは、状態判定部36は、ユーザインターフェース3が有するスピーカに、ドライバに対して車両10の正面を向くように警告する音声を出力させる。あるいはまた、状態判定部36は、ユーザインターフェース3が有する光源を点灯または点滅させ、あるいは、ユーザインターフェース3が有する振動機器を振動させる。
【0051】
図6は、プロセッサ23により実行される、手領域検出処理を含むドライバモニタ処理の動作フローチャートである。プロセッサ23は、以下の動作フローチャートに従って、所定の周期ごとにドライバモニタ処理を実行すればよい。なお、以下に示される動作フローチャートのうち、ステップS101~S105の処理が、手領域検出処理に相当する。
【0052】
プロセッサ23の確信度算出部31は、ドライバモニタカメラ2からECU4が受け取った最新の顔画像の画素ごとに、手が表されている確からしさを表す確信度を算出する(ステップS101)。また、プロセッサ23のはみ出し判定部32は、顔画像の画像端における複数の所定点のそれぞれについて、その所定点において手が顔画像からはみ出している確からしさを表すはみ出し度を算出する(ステップS102)。
【0053】
プロセッサ23の閾値設定部33は、顔画像の各所定点について、その所定点におけるはみ出し度が高いほど、手領域検出閾値を低い値に設定する(ステップS103)。さらに、閾値設定部33は、顔画像の各所定点以外の各画素について、その画素から各所定点までの距離に応じて各所定点の手領域検出閾値を加重平均することで、その画素についての手領域検出閾値を設定する(ステップS104)。
【0054】
プロセッサ23の手領域検出部34は、顔画像の各画素のうち、確信度が手領域検出閾値よりも高い画素を選択し、選択した画素の集合を、ドライバの手が表されている手領域として検出する(ステップS105)。
【0055】
プロセッサ23の顔検出部35は、顔画像から、ドライバの顔が表された顔領域を検出するとともに、顔の各器官の特徴点を検出する(ステップS106)。
【0056】
プロセッサ23の状態判定部36は、手領域に基づいて、ドライバの顔の少なくとも一部がドライバの手で隠されているか否か判定する(ステップS107)。ドライバの顔の少なくとも一部がドライバの手で隠されている場合(ステップS107-Yes)、状態判定部36は、最後に判定されたドライバの状態を、現時点におけるドライバの状態とする(ステップS108)。
【0057】
一方、ドライバの顔がドライバの手で隠されていない場合(ステップS107-No)、状態判定部36は、顔領域及び顔の各器官の特徴点に基づいてドライバの顔の向きを検出して、ドライバの状態を判定する(ステップS109)。そして状態判定部36は、その判定結果に応じた警告処理などを実行する(ステップS110)。ステップS110の後、プロセッサ23は、ドライバモニタ処理を終了する。
【0058】
以上に説明してきたように、この手領域検出装置は、手が表された画像の端部に設定される各所定点において、手のはみ出し度を求め、各所定点のうち、はみ出し度が高い所定点ほど、手領域検出閾値を低くする。そして手領域検出装置は、画素ごとに、各所定点からの距離に応じた各所定点の手領域検出閾値を加重平均することでその画素の手領域検出閾値を設定する。そしてこの手領域検出装置は、画素ごとに算出した手が表されている確からしさを表す確信度が手領域検出閾値よりも高い画素の集合を手領域として検出する。このように、この手領域検出装置は、手がはみ出している可能性が高い画像の端部近傍での手領域検出閾値を低く設定する。そのため、この手領域検出装置は、画像上に表された手らしさを表す特徴が失われている、手がはみ出した画像端近傍においても、手が表されている画素を精度良く検出することができる。その結果として、この手領域検出装置は、画像から手領域を精度良く検出することができる。
【0059】
上記のドライバモニタカメラのように、連続的に撮影することで手が表された時系列の一連の画像が得られる場合、連続する画像間では、手がはみ出している位置はそれほど変化しないことが想定される。そこで変形例によれば、はみ出し判定部32及び閾値設定部33による処理の実行周期を、手領域検出処理の実行周期よりも長くしてもよい。すなわち、連続して得られた所定枚数の顔画像のうちの何れかに対してのみ、はみ出し判定部32及び閾値設定部33による処理が行われるようにしてもよい。そして手領域検出部34は、最後に実行されたはみ出し判定部32及び閾値設定部33による処理により設定された各画素の手領域検出閾値を、手領域の検出に利用すればよい。この変形例によれば、手領域検出装置は、はみ出し判定部32及び閾値設定部33による処理の実行頻度を少なくすることができるので、一定期間における手領域検出処理に要する演算量を抑制することができる。
【0060】
他の変形例によれば、はみ出し識別器を用いたはみ出し判定処理の実行周期が手領域検出処理の実行周期よりも長い場合、はみ出し判定部32は、識別器を用いたはみ出し判定処理が行われない顔画像に対して予測処理によりはみ出し判定を実行してもよい。例えば、はみ出し判定部32は、直近の所定期間に得られた一連の過去の顔画像のそれぞれについての手領域からオプティカルフローを算出し、あるいはカルマンフィルタといった予測フィルタを適用することで、最新の顔画像における手領域の位置を予測する。そしてはみ出し判定部32は、各所定点のうち、予測した手領域に含まれる所定点において、顔画像から手がはみ出していると推定する。また、はみ出し判定部32は、各所定点のうち、予測した手領域と重ならない所定点では、手は顔画像からはみ出していないと推定する。はみ出し判定部32は、顔画像から手がはみ出していると推定した所定点におけるはみ出し度を、手がはみ出していないと推定した所定点のはみ出し度よりも高く設定する。
【0061】
なお、本実施形態による手領域検出装置は、ドライバモニタ装置に限られず、他の用途に利用されてもよい。例えば、本実施形態による手領域検出装置は、Webカメラあるいは他の監視カメラといった、撮影対象となる人物の顔を撮影するカメラにより得られた画像からその人物の顔あるいはその人物の手を検出することが要求される様々な用途に対して好適に利用される。あるいは、この手領域検出装置は、検出した手領域に基づいて手によるジェスチャを検出するために利用されてもよい。この場合には、手領域検出装置は、手領域からジェスチャを検出する様々な手法の何れかに従ってジェスチャを検出すればよい。
【0062】
また、上記の実施形態または変形例による、ECU4のプロセッサ23の機能を実現するコンピュータプログラムは、半導体メモリ、磁気記録媒体または光記録媒体といった、コンピュータ読取可能な可搬性の記録媒体に記録された形で提供されてもよい。
【0063】
以上のように、当業者は、本発明の範囲内で、実施される形態に合わせて様々な変更を行うことができる。
【符号の説明】
【0064】
1 車両制御システム
10 車両
2 ドライバモニタカメラ
3 ユーザインターフェース
4 電子制御装置(ECU)
21 通信インターフェース
22 メモリ
23 プロセッサ
31 確信度算出部
32 はみ出し判定部
33 閾値設定部
34 手領域検出部
35 顔検出部
36 状態判定部
図1
図2
図3
図4
図5
図6