(第1実施形態)
以下、本発明の一実施形態について説明する。図1に、本実施形態に係るドライバモニタリング装置10の車両への搭載形態を示し、図2に、ドライバモニタリング装置10のブロック構成を示す。
これらの図に示すように、車両に搭載されるドライバモニタリング装置10は、カメラ1、投光器2、画像処理ECU(開眼度特定装置の一例に相当する)3、状態推定ECU4、およびアクチュエータ5を有している。なお、ドライバモニタリング装置10は、車両の主電源がオンとなった場合(例えば、イグニッションがオンとなった場合)に作動を開始し、オフとなった場合に作動を終了する。したがって、ドライバモニタリング装置10は、その1回の作動中においては、同じドライバを対象として作動する。
カメラ1は、ドライバ席6の正面に近い位置(例えば、メータ付近やステアリングコラム上)に取り付けられている。カメラ1の撮影範囲は、通常の体格のドライバ7がドライバ席6に通常の姿勢で着座したときに、ドライバ7の顔8が存在するであろう空間領域を含むように設計されている。すなわち、カメラ1は、ドライバ席6に着座したドライバ7の顔8を正面から撮影できるように配置されている。
このカメラ1は、ドライバモニタリング装置10の作動中、繰り返し定期的に(例えば1秒に30回)ドライバ7の顔8を撮影し、その撮影の結果得た撮影画像(すなわち、顔8を含む画像)を、撮影順に逐次ECU3に出力する。
投光器2は、ドライバ席6に着座したドライバ7の顔8に主に近赤外光を照射するための装置である。投光器は夜間の車室内のように低照度下においても安定的にカメラ1が撮影できるようにするための補助光を発するものであり、昼間のように太陽光に含まれる近赤外成分がその役割を担う場合には必須ではないが、太陽光の顔8への照射方向が時間的に変化するなど外乱となることを防ぐために、昼間においても使用されることが望ましい。この投光器2によって照射された近赤外光が顔8で反射することで、カメラ1によって撮影される顔8の撮影画像が、外部の環境に大きく影響されることなく、鮮明になる。
なお、カメラ1は、撮影の際には、主に近赤外光を利用する。具体的には、カメラ1には、投光器2から発する近赤外光以外の光をほぼ遮るフィルタが取り付けられており、そのフィルタ越しに受けた光を用いて撮影を行うようになっている。つまり、なるべく投光器2から発する波長の光以外はカットすることが常時安定的に顔8を撮像するのに好ましい。ここで、ほぼ遮るという表現をしているのは、カメラ1の感度不足を補うために投光器2以外の環境光を一部利用したり、また完全に遮るだけの性能の良いフィルタが実用上ないためである。
投光器2としては、例えば近赤外光を照射するLEDを用いてもよい。この投光器2は、車両のインストゥルメントパネルのうち、ドライバ席6の正面に近い位置に取り付けられている。そして投光器2は、通常の体格のドライバ7が通常の姿勢でドライバ席6に着座したときに、ドライバ7の顔8が存在するであろう空間領域に赤外光が照射されるように、設計配置されている。
なお、投光器2は、画像処理ECU3からの制御に基づいて、カメラ1による撮影のタイミングに合わせて光を照射するようになっていてもよいし、ドライバモニタリング装置10の作動中常時光を照射し続けるようになっていてもよい。
画像処理ECU3は、図示しないCPU、RAM、ROM、フラッシュメモリ、I/O等を有するマイコン等から成る。そして、CPUがROMから読み出したプログラムをRAMに読み出して実行し、その実行の際に、必要に応じてフラッシュメモリ、カメラ1等から情報を取得し、また必要に応じて、状態推定ECU4に信号を出力する。このようなCPU等の作動により、画像処理ECU3の作動が実現する。
具体的には、画像処理ECU3は、カメラ1により取得した画像からドライバ7の顔8を探索し、ドライバ7の顔動作状態を繰り返し特定し、特定したそれら顔動作状態の情報を、繰り返し状態推定ECU4に出力する。ここで、ドライバ7の顔動作状態とは、ドライバ7の顔の動作の状態をいう。例えば、顔8の向き、開眼度は、それぞれ顔動作状態の一種である。なお、開眼度とは、瞼の開き度合いを示す指標であり、瞼がより大きく開いているほど開眼度の値も大きくなる。画像処理ECU3の詳細な作動については後述する。
状態推定ECU4は、図示しないCPU(コンピュータの一例に相当する)、RAM、ROM、フラッシュメモリ、I/O等を有するマイコン等から成る。そして、CPUがROMから読み出したプログラムをRAMに読み出して実行し、その実行の際に、必要に応じてフラッシュメモリ、カメラ1、画像処理ECU3等から情報を取得し、また必要に応じて、状態推定ECU4からの情報に基づいて、アクチュエータ5を制御する。
具体的には、状態推定ECU4は、画像処理ECU3から受けたドライバ7の顔動作状態の情報に基づいて、ドライバ7が眠気を催しているか否か、ドライバ7が居眠り運転をしているか否か、ドライバ7が脇見運転をしているか否か、等の運転状態を判定し、その判定結果に基づいて、ドライバに警告を与える、または、ドライバを覚醒させるため、アクチュエータ5を制御する。このようなCPU等の作動により、状態推定ECU4の作動が実現する。
アクチュエータ5は、ドライバの感覚器官(耳、皮膚等)を刺激するための装置であり、スピーカ5a、シート振動装置5b、および空調装置5cなどを単一または複数組み合わせて作動することで、ドライバに眠気レベルなどの情報を提示したり覚醒を促したりするものである。ここで例示したスピーカ5aは、ドライバの聴覚に働きかける装置である。シート振動装置5bは、ドライバ席6に埋め込まれ、自ら振動することで、その振動をドライバ席6越しにドライバ7に伝える装置である。空調装置5cは、車両の車室内の空気の温度を変化させることで、ドライバの体感温度を変化させる装置である。
状態推定ECU4の具体的な作動は、以下の通りである。状態推定ECU4は、ドライバ7の顔姿勢(すなわち、顔の向き)の変化に基づいてドライバ7の頭の揺れの状態を検出し、また、ドライバ7の開眼度の変化に基づいてドライバ7の瞬きの状態を検出し、それら頭の揺れの状態および/または瞬きの状態に基づいて、ドライバ7が居眠り状態であるか否か、およびドライバ7がどの程度の眠気レベルに陥っているかを判定する。また状態推定ECU4は、ドライバ7の顔姿勢に基づいて、ドライバ7が脇見運転をしているか、また視線方向を検出しての脇見状態や視線の停留時間から漫然状態など否かを判定する。
ここで、状態推定ECU4によるドライバ7の瞬きの状態の検出方法について説明する。状態推定ECU4は、画像処理ECU3から取得した開眼度の値を用い、その開眼度と別途算出した閾値とを比較し、開眼度が開眼閾値以上であるときにはドライバ7が目を開いていると判定し、開眼度が閉眼閾値未満であるときにはドライバ7が目を閉じていると判定する。図3のグラフに、開眼度18の時間的変化の例を実線で、閾値19の例を破線で示す。ここでは開眼閾値と閉眼閾値を共通の値とした場合を例示している。この図に併せて示すように、画像処理ECU3で繰り返し算出される開眼度18の精度が低いと、開眼度18のばらつき(暴れ)が大きくなり、その結果、状態推定ECU4におけるドライバ7の瞬きの状態の検出の精度が悪化してしまう。
後述するように、画像処理ECU3においては、カメラ1によって撮影された画像を縮小し、その縮小した画像に基づいて開眼度を算出する。この縮小の方法が、開眼度のばらつきに影響する。つまり、作成画像の縮小方法が適切でないと、撮影画像中の重要な情報が欠損したり濃淡情報がボケて薄められたりしてしまう。特に、閉眼時の目は、撮影画像中で横にほぼ真一文字となっているので、画像の前処理方法が悪いと開眼度の検出に大きな影響が及ぶ。
次に状態推定ECU4が前述した方法により求めた瞬きの状態をもとにどのように眠気状態を推定するかについて代表的な例を用いて以下に説明する。人間の特性として、覚醒状態から眠気が強くなるに従い、一定時間内の累積閉眼時間が増加することが知られている。この特性を用いて、単位時間あたりに発生する瞬きを解析することで眠気のレベルを推定することができる。この推定手法はPERCLOSと言われている。ただし、この手法は比較的強い眠気に対しては有効であるが弱い眠気レベルの推定においては感度が悪いと言われている。それを補うために、瞬き1回に要する所要時間を比較したり、開眼速度や閉眼速度、半眼状態などの現象に着目したりする推定手法も各種提案されている。詳細な開眼度の情報を用いて推定すれば感度や精度は向上することは明らかであるが、図3に示すように実際に画像処理手法により検出した開眼度波形は平滑なものが得られにくくかえってノイズ要因となることが懸念される。また、画像処理ECU3が検出した生波形に前処理としてフィルタによるスムージングする方法も有効ではあるが、フィルタをかけすぎると本来の情報を消失させることになりかねないため、如何に画像処理ECU内で正確に開眼度を検出するかが重要である。
ここで眠気レベルについて言及する。覚醒状態での眠気レベルについては標準となる指標が存在していないが発明者らは少なくとも3レベル以上に分けて推定結果を出力すべきと考えている。それは(1)全く眠くないレベル、(2)眠気はあるが運転には支障のないレベル(注意喚起すべきレベル)、(3)強い眠気があり運転リスクを伴うレベル(警報レベル)。さらにレベルを細分化すれば、ドライバの状態に応じて決め細やかな支援を行うことができ、効果的である。
また、詳述はしないが、状態推定ECU4では、画像処理ECU3が出力するドライバの顔向きや視線方向、さらにその結果をもとに視線の停留時間などを演算利用し、ドライバの脇見などの不注意状態または漫然状態を推定することもできる。
また、状態推定ECU4は、ドライバ7が居眠り状態であると判定した場合、または、ドライバ7が強い眠気状態に陥っていると判定した場合、スピーカ5aに大きな音を出力させ、かつまたは、シート振動装置5bを振動させ、さらに空調装置5cに車室内温度を低下させることで、ドライバを覚醒させ、ドライバの眠気を覚ます。同様に弱い眠気があると判定した場合、スピーカ5aから弱い音を発生させたり、5bから軽い振動を発生させるなど、ドライバが煩わしく感じない程度の注意を喚起するアクチュエーション手段を作動させる。また、状態推定ECU4は、ドライバ7が脇見運転をしていると判定した場合、スピーカ5aに、「脇見注意」等の警告音声を出力させる。
次に、画像処理ECU3のドライバの顔動作状態の判定の詳細について説明する。画像処理ECU3は、ドライバモニタリング装置10の作動中、図4に示すように、初期発見モード100、トラッキングモード200という2つの作動モードの間を遷移する。
より具体的には、画像処理ECU3は、ドライバモニタリング装置10の起動直後に、まず初期発見モード100に入る。そして、初期発見モード100において、ドライバ7の顔8の位置および特徴量、ならびに、顔8の特徴点の位置および特徴量の特定を試み、その試みに成功すると、特定した顔8の位置および特徴量、ならびに、顔8の特徴点の位置および特徴量を、RAMまたはフラッシュメモリに登録する。ここで、特徴量とは、顔8固有の情報であり、顔部品を切り出した濃淡画像などをいう。また、顔8の特徴点とは、例えば、右目頭、右目尻、左目頭、左目尻、鼻腔中心(2つの鼻腔の中間点)、左右口端等の点をいう。そして登録の後、矢印11のようにトラッキングモード200に遷移する。
また、トラッキングモード200において、繰り返し取得する撮影画像に基づいて、初期発見モード100において特定した特徴点(以下、顔特徴点という)の位置の追跡を撮影順に試み、特定した特徴点の位置等に基づいて、ドライバ7の顔動作状態(ドライバ7の顔姿勢および開眼度等)を特定し、特定した顔動作状態の情報を状態推定ECU4に出力する。また、トラッキングモード200において、顔特徴点の検出に失敗すると、矢印12に示すように、初期発見モード100に遷移する。
このように、画像処理ECU3は、まず初期発見モード100からトラッキングモード200へと遷移し、追跡が成功している間は常にトラッキングモード200が継続することになる。しかしながら、追跡に失敗し特徴点を見つけられなくなると初期発見モード100に戻る。ここでは説明を簡単化するために初期発見モード100とトラッキングモード200の状態遷移を説明したが、実際には、ドライバの安全確認作業などで後側方ミラーを見た際に顔特徴点の一部が画像から消えることがあり、その度にモード遷移するのは現実的ではないため、実用上はディレイを設けることが一般的である。
このような作動を実現するために画像処理ECU3のCPUが実行するプログラムのフローチャートを、図5、図6に示す。図5は、初期発見モード100において実行されるプログラムに相当し、図6は、トラッキングモード200において実行されるプログラムに相当する。以下、画像処理ECU3がこれらプログラムを実行するものとして説明する。
画像処理ECU3は、ドライバモニタリング装置10の起動直後に初期発見モード100の実行を開始し、まずステップ110で、カメラ1によって撮影された撮影画像を1フレーム分(すなわち1枚)取得する。図7に、撮影画像の一例を示す。なお、取得した撮影画像に対し、輝度調整等の前処理を行うようになっていてもよい。取得する撮影画像は、グレースケール画像である。すなわち、撮影画像は、色についての情報を有さず、複数の画素(ピクセルともいう)のそれぞれについての輝度値を有し、各画素が取り得る輝度値が多段階(例えば0から255まで)となっている。
本実施形態においては、ドライバ7の顔動作状態を特定するためにドライバ7の顔8を撮影するようになっている。しかしならが、撮影画像に含まれる位置範囲(すなわち、カメラ1の撮影範囲)は、図7に示すように、顔8の範囲よりも面積にして数倍(例えば5倍)以上広い。すなわち、撮影画像中に占める顔8の範囲は非常に小さくなっている。このように、カメラ1の画角が広くとられているのは、個々のドライバ7間の体型差、ドライバ7の運転操作中の姿勢変化があっても、撮像範囲内からドライバ7の顔8が外れないようにするためである。
図7の例においては、撮影画像が縦640ピクセル×横480ピクセルのVGAサイズの画像であり、ドライバ7のそれぞれの目が占める範囲は、10〜20ピクセル×10〜20ピクセル(例えば、15ピクセル×15ピクセル程度)となっている。
続いてステップ120で、当該撮影画像から、顔8の眼、口、および鼻を含む領域(以下、顔領域という)21(図7参照)を検出し、検出した顔領域21中の画像を撮影画像から抽出する。
顔8を含む撮影画像から顔領域21を検出するために採用する方法は、あらかじめ画像処理ECU3のROMまたはフラッシュメモリに用意された(すなわち、記録された)比較用の画像の特徴量と、今回のドライバ7の撮影画像の一部分を占める画像の特徴量との比較に基づいて、顔領域21を検出する方法である。
例えば、ニューラルネット、ブースティング等の周知の統計的手法を用いる。すなわち、あらかじめ多くの人(ほとんどの場合全員が現在のドライバ7と異なる)の顔の顔領域に相当する画像の特徴量を統計的に学習した結果の学習データ(比較用の画像の特徴量の一例に相当する)を、画像処理ECU3のROMまたはフラッシュメモリに用意しておく(すなわち、記録しておく)。そして、撮影画像全体を探索領域とし、その探索領域中に種々の大きさと種々の中心位置を有する候補領域を画定し、それら画定した種々の候補領域のそれぞれについて、当該候補領域の画像の特徴量と、学習データとの一致度を算出する。そして、これら候補領域のうち、最も一致度の高い候補領域を、顔領域21として特定する。ここで比較対象とする画像の解像度は撮影画像のオリジナルではなく、大幅にデフォルメした、例えば40ピクセル×30ピクセルほどの縮小画像を用いる。
続いてステップ140では、顔領域21中の顔部品の位置および範囲の検出を試み、検出した顔部品中の画像を撮影画像から抽出する。顔部品とは、眼、鼻(より詳細には鼻腔)、口等、顔の器官(以下、顔器官という)のそれぞれをいう。図8に、撮影画像中の顔部品22〜25の一例を示す。
特定の顔部品を検出するために採用する方法は、あらかじめ画像処理ECU3のROMまたはフラッシュメモリに用意された(すなわち、記録された)比較用の画像の特徴量と、顔領域21の一部を占める画像の特徴量との比較に基づいて、顔部品を検出する方法である。
例えば、ニューラルネット、ブースティング等の周知の統計的手法を用いる。すなわち、あらかじめ多くの人(ほとんどの場合全員が現在のドライバ7と異なる)の顔部品に相当する画像の特徴量を統計的に学習した結果の学習データ(比較用の画像の特徴量の一例に相当する)を、画像処理ECU3のROMまたはフラッシュメモリに用意しておく(すなわち、記録しておく)。そして、当該顔領域21を探索領域とし、その探索領域中に種々の大きさと種々の中心位置を有する候補領域を画定し、それら画定した種々の候補領域のそれぞれについて、当該候補領域の特徴量と、学習データとの一致度を算出する。そして、これら候補領域のうち、最も一致度の高い候補領域を、当該顔部品として特定する。
このように、画像処理ECU3はこのステップ140において、学習データを用いて統計的にドライバ7の目の位置を発見することができる。
続いてステップ150では、顔特徴点を検出する。顔特徴点とは、既述の通り、図9に示すように、右目頭22a、右目尻22b、左目頭23a、左目尻23b、鼻腔中心24a、右口端25a、左口端25b等の点をいう。
特定の顔特徴点を検出するために採用する方法は、あらかじめ画像処理ECU3のROMまたはフラッシュメモリに用意された(すなわち、記録された)比較用の画像の特徴量と、顔特徴点を含む顔部品中の一部を占める画像の特徴量との比較に基づいて、顔特徴点を検出する方法である。
例えば、ニューラルネット、ブースティング等の周知の統計的手法やテンプレートマッチングなどを用いる。すなわち、あらかじめ多くの人(ほとんどの場合全員が現在のドライバ7と異なる)の顔特徴点に相当する画像の特徴量を統計的に学習した結果の学習データ(比較用の画像の特徴量の一例に相当する)を、画像処理ECU3のROMまたはフラッシュメモリに用意しておく(すなわち、記録しておく)。そして、当該顔特徴点を含む顔部品の範囲を探索領域とし、その探索領域中に種々の大きさと種々の中心位置を有する候補領域を画定し、それら画定した種々の候補領域のそれぞれについて、当該候補領域の特徴量と、学習データとの一致度を算出する。そして、これら候補領域のうち、最も一致度の高い候補領域を、当該顔特徴点として特定する。
続いてステップ160では、ステップ150で検出した顔特徴点の位置関係が適正か否かを判定する。顔特徴点の位置関係が適正であるか否かは、例えば、右目頭22a、右目尻22b、左目頭23a、および左目尻23bの顔特徴点が所定の誤差範囲内で左右に一直線に並んでいるか否かで判定してもよい。また例えば、撮影画像中において鼻腔中心24aが右口端25aおよび左口端25bよりも上方にあるか否かで判定してもよい。適正であると判定した場合、続いてステップ165を実行し、適正でないと判定した場合、次の撮影画像の撮影タイミングまで待ち、撮影タイミングが来ると、再度ステップ110に処理を戻す。
ステップ165では、顔画像、顔部品画像、および顔特徴点画像を撮影画像から切り出し、切り出した各画像を縮小する。縮小比率としては、例えば、元の画像に対して総画素数で1/4を用いる。これによって、縦方向に並ぶ画素の行数と横方法に並ぶ画素の列数は、それぞれ1/2に減少する。なお、顔画像とは顔領域21内の画像をいい、顔部品画像とは顔部品の画像をいい、顔特徴点画像とは、顔特徴点の画像をいう。また、ここでいう画像の縮小とは、撮影画像の一部としての顔画像、顔部品画像、および顔特徴点画像のそれぞれについて、画素数を減らして縮小することをいう。
縮小の方法としては、単純間引き法、近傍画素平均法等がある。図10に、単純間引き法および近傍画素平均法による縮小方法を例示する。この図に示すように、縦6ピクセル×横6ピクセルから成る画像70を単純間引き法または近傍画素平均法で1/4に縮小する場合、横に並ぶ画素の行を1行置きで間引き、更に縦に並ぶ画素の列を一列置きで間引くことで、注目画素71〜79を残す。この注目画素が、縮小後の画像(以下、縮小画像という)の画素となる。
このとき、単純間引き法においては、注目画素71〜79の輝度値をそのまま縮小画像においても保持する。一方、近傍画素平均法においては、注目画素71〜79のそれぞれの輝度値を、当該注目画素およびその近傍の画素の平均値に変更し、その変更後の輝度値を、縮小画像における当該注目画素の輝度値として用いる。
図11(a)〜(d)に、注目画素80と、平均値の算出対象となる近傍画素との対応関係の例を複数示す。図11(a)においては、注目画素80、注目画素80のすぐ下の画素81、すぐ右斜め下の画素82、すぐ右の画素83という4個の画素の輝度値の平均が、縮小画像中の当該注目画素80の輝度となる。また、図11(b)の例においては、注目画素80を中心とする3ピクセル×3ピクセルという9個の画素80〜88の輝度値の平均が、縮小画像中の当該注目画素80の輝度となる。また、図11(c)の例においては、注目画素80を中心とする5ピクセル×5ピクセルという25個の画素の輝度値の平均が、縮小画像中の当該注目画素80の輝度となる。また、図11(d)の例においては、注目画素80、注目画素80のすぐ下の画素81、すぐ右の画素83、すぐ上の画素85、すぐ左の画素87という4個の画素の輝度値の平均が、縮小画像中の当該注目画素80の輝度となる。近傍画素平均法においては、これらの例のうちいずれを採用してもよいし、また平均値を取る際に画素の部位によって重み係数を掛け合わせた平均値としても良い。例えば、注目画素80の輝度値の重みを高くするなどが考えられる。
単純間引き法と近傍画素平均法とを比較すると、単純間引き法は簡便な方法ではあるが、間引かれる画素の情報は完全に消えてしまう。一方、近傍画素平均処理では、注目画素の周囲の画素の輝度を平均化するため、本当に必要な情報が薄まってしまい、縮小結果の画像がぼやけてしまいがちである。ステップ165では、単純間引き法、近傍画素平均法のどちらを用いて縮小してもよいし、その両方でもよいし、これら以外の方法で縮小してもよい。
続いてステップ170では、顔パターン登録を行う。具体的には、ステップ120で検出した顔領域21の中心位置(撮影画像中の位置座標。以下同じ)、大きさ、およびステップ165で縮小した顔画像の特徴量、ステップ140で検出した顔部品22〜25の中心位置、大きさ、およびステップ165で縮小した顔画像の特徴量、ステップ150で検出した顔特徴点の中心位置、大きさ、およびステップ165で縮小した顔特徴点画像の特徴量を、画像処理ECU3のRAMまたはフラッシュメモリに記録する。これら登録された登録情報は、トラッキングモード200においてトラッキング対象として用いられる。
ステップ170に続いては、ステップ175で、図4の矢印11に示すように、トラッキングモード200に遷移する。トラッキングモード200に入ると、画像処理ECU3は、初期発見モード100に遷移するまでは、図6に示す処理を、カメラ1の撮影タイミングと同期して、繰り返し実行する。
まずステップ210で、次の撮影画像の撮影タイミングを待ち、撮影タイミングが来ると、ステップ110と同様に、カメラ1から撮影画像を取得する。このとき、ステップ110と同様に、撮影画像に対して前処理を行うようになっていてもよい。
続いてステップ215では、今回の撮影画像(すなわち、直前のステップ210で取得した撮影画像)を縮小する方法として、単純間引き法と近傍画素平均法のうちいずれを採用するかを判定する。
具体的には、画像処理ECU3は、ドライバモニタリング装置10が作動を開始した後(すなわち、画像処理ECU3が作動を開始した後)に最初にステップ215を実行する際には、デフォルトの縮小方法を選択する。本実施形態においては、デフォルトの縮小方法は、あらかじめ画像処理ECU3のROM等に記録されている。また、ドライバモニタリング装置10が作動を開始したときから数えて2回目以降のステップ215の実行の際には、その時点で選択されている縮小方法を引き続き選択する。なお、選択されている縮小方法の情報は、ドライバモニタリング装置10の作動中はRAM等に保持され、イグニッションスイッチがオフとなる等によってドライバモニタリング装置10が作動を終了すると、RAMから消去される。
ステップ215で単純間引き法を選択した場合は、続いてステップ220で単純間引き法によって撮影画像を縮小する。ステップ215で近傍画素平均法を選択した場合は、続いてステップ225で近傍画素平均法によって撮影画像を縮小する。どちらの場合も、縮小比率としては、初期発見モード100におけるステップ165の縮小比率と同じものを用いる。すなわち、VGAサイズの画像である撮影画像が、QVGAサイズ(縦320ピクセル×縦240ピクセル)の画像に縮小される。このような、ステップ215、220、225の処理によって、撮影画像の画素数を減らして縮小することで縮小画像を生成する。
ステップ220または225に続いては、ステップ230で、初期発見モード100のステップ170で登録された情報をRAMまたはフラッシュメモリから読み出す。読み出す情報は、顔画像の特徴量、顔部品画像の特徴量、顔特徴点画像の特徴量、およびそれら部位の中心位置、大きさの情報等である。これら読み出された情報は、後述するように、顔、顔部品、顔特徴点のトラッキング(すなわち追跡)に用いられる。
続いてステップ235では、顔のトラッキングを行う。具体的には、ステップ230で読み出した顔画像の情報(特徴量、中心位置、大きさ等の情報)を用いて、テンプレートマッチング等の周知の方法により、最新の縮小画像中における顔領域21の中心位置および大きさを特定する。なお、テンプレートマッチングを行う場合は、読み出した顔画像の特徴量をテンプレート画像として用い、また、読み出した顔画像の中心位置を中心とする所定の範囲を、探索範囲とする。ただし、トラッキングモード200に遷移してから数えて2回目以降のステップ235の実行においては、探索範囲は、前回のステップ235の実行時において特定した顔領域21の中心位置を中心とする所定の範囲とする。
この探索範囲は、カメラ1の撮影周期(具体的には1/30秒)の間に顔領域21が移動できる範囲であればよいので、縮小画像全体に比べて非常に小さい範囲となる。したがって、ステップ235の顔部のトラッキングは、初期発見モード100のステップ120における顔領域検出に比べて、処理負荷が小さい。
更にステップ235では、各顔部品のトラッキングを行う。具体的には、ステップ230で読み出した各顔部品画像の情報(特徴量、中心位置、大きさ等の情報)を用いて、テンプレートマッチング等の周知の方法により、最新の縮小画像中における各顔部品の中心位置および大きさを特定する。なお、テンプレートマッチングを行う場合は、読み出した顔部品画像の特徴量をテンプレート画像として用い、また、読み出した顔部品画像の中心位置を中心とする所定の範囲を、探索範囲とする。ただし、トラッキングモード200に遷移してから数えて2回目以降のステップ235の実行においては、探索範囲は、前回のステップ235の実行時において特定した各顔部品の中心位置を中心とする所定の範囲とする。このステップ253により、初期発見モード100によって発見された目部品等の位置の変化を繰り返し特定することができる。
この探索範囲は、カメラ1の撮影周期(具体的には1/30秒)の間に顔部品が移動できる範囲であればよいので、顔画像全体に比べて非常に小さい範囲となる。したがって、ステップ235の顔部品のトラッキングは、初期発見モード100のステップ140における顔部品検出に比べて、処理負荷が小さい。
ステップ240では、縮小画像中の各顔特徴点の位置の検出を行う。つまり、顔特徴点のトラッキングを行う。具体的には、ステップ230で読み出した各顔特徴点画像の情報(特徴量、中心位置、大きさ等の情報)を用いて、テンプレートマッチング等の周知の方法により、最新の縮小画像中における各顔特徴点の中心位置および大きさを特定する。なお、テンプレートマッチングを行う場合は、読み出した顔特徴点画像の特徴量をテンプレート画像として用い、また、読み出した顔特徴点画像の中心位置を中心とする所定の範囲を、探索範囲とする。ただし、トラッキングモード200に遷移してから数えて2回目以降のステップ240の実行においては、探索範囲は、ステップ235で検出した顔部品位置を中心とする所定の範囲とする。なお、この処理で用いるテンプレート画像については、初期発見モード100において登録した画像とは顔向きの違いによる顔の回転から異なる特徴量となることがあるため、直近に検出、登録した顔部品特徴量を用いるようにしても良いし、それらをミックスしたものを用いても良い。
この探索範囲は、カメラ1の撮影周期(例えば1/30秒)の間に顔特徴点が移動可能な範囲を見込んで広めに設定するが、顔画像全体に比べて移動量はそれほど大きくなることはなく小さい範囲となる。したがって、ステップ240の顔特徴点のトラッキングは、初期発見モード100のステップ150における顔特徴点検出に比べて、処理負荷が小さい。
続いてステップ245では、ステップ240において顔特徴点のうちあらかじめ定められた下限個数以上の顔特徴点の検出に成功したか否かを判定する。初期発見モード100で検出できた顔特徴点がトラッキングモード200では検出できない場合としては、例えば、手で眼をこすったり、ジュースを飲むために顔にジュース容器を近づけたり、強い西日が顔の一部を照らしたり、撮影画像が局所的にサチュレーションしたりした場合が考えられる。下限個数以上の顔特徴点の検出に成功した場合、続いてステップ250を実行し、そうでない場合、ステップ247で、図4の矢印12に示すように、直ちにトラッキングモード200から初期発見モード100に遷移する。
ステップ250では、ドライバの顔動作状態の1つとして、顔姿勢を算出する。顔姿勢の算出は、ステップ240で検出した顔特徴点の位置に基づいて算出する。さらに続いてステップ255では、ドライバの顔動作状態の1つとして、開眼度を算出する。開眼度の算出は、ステップ240で検出した顔特徴点の位置および目の部品の画像に基づいて算出する。顔特徴点の位置等から顔姿勢、開眼度を検出する技術は周知であり、例えば、特許文献1〜5に詳細に記載されている。
ここでは、開眼度の算出方法の一例について説明する。例えば、右目の開眼度は、図12に示すように、最新の縮小画像から、ステップ235で検出した右目の顔部品に該当する画像(以下、目画像という)を切り出す。そして、ステップ240で検出した顔特徴点のうち、右目頭22aおよび右目尻22bの位置を、切り出した目画像中で特定する。そして、それら特定した位置を両端とする直線16を下瞼輪郭として特定する。下瞼輪郭とは、下瞼と眼球との境界線をいう。
また、特定した右目頭22aおよび右目尻22bの位置を両端とする上瞼輪郭候補のベジエ曲線15a〜15dを複数本作成する。上瞼輪郭とは、上瞼と眼球との境界線をいう。そして、上述のように作成した上瞼輪郭候補のベジエ曲線15a〜15dのそれぞれに対して、当該切り出した目画像に対する適合度を算出する。
ここでいう「画像に対するベジエ曲線の適合度」とは、目画像中の上瞼の輪郭として、当該ベジエ曲線がどの程度もっともらしいかを表す指標であり、よりもっともらしいほど適合度が高くなる。
人のある部位の画像(上記目画像がその一例である)に対する当該部位の輪郭線(上記ベジエ曲線がその一例である)の適合度の算出方法は、種々の方法が周知である。例えば、目の画像に対する人の黒目(虹彩)の輪郭線の適合度の算出方法が、非特許文献1に記載されている。
上記目画像に対するベジエ曲線の適合度を算出する方法の一例を、図13を用いて説明する。まず、当該ベジエ曲線上の複数個の点17a〜17dを抽出し、それら複数の点のそれぞれについて、法線ベクトルhkと輝度勾配ベクトルgkとを算出する。図13においては、点17dについての法線ベクトルhkおよび輝度勾配ベクトルgkのみを例示する。
ここで、法線ベクトルhkとは、当該点を始点とし、当該点において当該ベジエ曲線に直交するベクトルである。ベジエ曲線は、パラメータをtとすると、その軌跡の座標が、(x(t)、y(t))=P(t)=2(1―t)Qs+2t(1−t)Qm+2tQeで表される。ただし、Qsは、ベジエ曲線の始点の座標値であり、Qmはベジエ曲線の中点の座標であり、Qeはベジエ曲線の終点の座標である。したがって、法線ベクトルhkは、hk=(−dy/dt、dx/dt)という成分を有する。なお、変数xおよびyは、それぞれ画像中の横方向の座標値および縦方向の座標値である。
また、輝度勾配ベクトルgkは、目画像中の輝度分布L(x、y)の勾配(∂L/∂x、∂L/∂x)である。この輝度勾配ベクトルgkは、切り出した目画像に対して周知のソーベルフィルタを施すことによって算出することができる。すなわち、目画像中の特定の点における輝度勾配ベクトルgkの横方向の成分および縦方向の成分は、その点におけるxソーベル値およびyソーベル値から算出することができる。
そして、当該ベジエ曲線上の複数個の点17a〜17dのそれぞれについて、当該点における法線ベクトルhkと輝度勾配ベクトルgkの内積を算出し、算出された点17a〜17dの内積の総和を算出する。この総和が、目画像に対する当該ベジエ曲線17の適合度となる。
上瞼輪郭用のベジエ曲線15a〜15dのそれぞれについて、目画像に対する適合度を算出した後は、上瞼輪郭用のベジエ曲線15a〜15dのうちで最も適合度の高いものを抽出する。そして、そのように抽出したベジエ曲線を上瞼輪郭として特定する。
そして、このように特定した上瞼輪郭、下瞼輪郭に基づいて、当該目の開眼度を算出する。上瞼輪郭および下瞼輪郭から開眼度を算出する方法としては、種々の方法が知られている。例えば、上瞼輪郭の複数の点から下瞼輪郭に縦に直線を引き、それらの直線のうち、最も長い直線の長さを、当該目の開眼度としてもよいし、それらの直線の平均の長さを、当該目の開眼度としてもよい。このように、目の上瞼輪郭、下瞼輪郭から、当該目の開眼度が一意に算出されるので、上瞼輪郭用のベジエ曲線の適合度は、開眼度がドライバ7の開眼度としてどの程度確からしいかを示す指標でもある。すなわち、この適合度は、算出された開眼度の適合度でもある。
続いてステップ250では、算出された開眼度の適合度が所定の閾値Thよりも大きいか否かを判定し、所定の閾値Thより大きい場合続いてステップ265に進み、所定の閾値Th以下である場合続いてステップ270に進む。
ステップ265では、ステップ250、255で算出したドライバの顔動作状態(顔姿勢および開眼度)の情報を、状態推定ECU4に出力する。ステップ265に続いては、次のカメラ1の撮影タイミングを待ち、撮影タイミングが訪れると、再度ステップ210を実行する。
ステップ270では、カウンタを1だけ増加させる。なお、カウンタとは、画像処理ECU3のRAMに記録される変数であり、ステップ265およびステップ280において画像処理ECU3によってゼロにリセットされるようになっている。したがって、このカウンタの値は、ステップ260で否定判定が連続する回数に相当する。
続いてステップ275では、このカウンタの値が所定の回数Nを超えたか否かを判定する。超えていない場合、次のカメラ1の撮影タイミングを待ち、撮影タイミングが訪れると、再度ステップ210を実行する。また、超えている場合、続いてステップ280を実行する。
ステップ280では、縮小方法として、現在選択されている方法とは別の縮小方法を選択する。つまり、単純間引き法を選択している場合は、近傍画素平均法を選択し、近傍画素平均法を選択している場合は、単純間引き法を選択する。ここで選択された縮小方法は、次回以降のステップ215の判定に反映される。
ステップ280に続いては、次のカメラ1の撮影タイミングを待ち、撮影タイミングが訪れると、再度ステップ210を実行する。
以上説明した通り、画像処理ECU3は、取得した撮影画像から人の目の位置を発見するための初期発見モード100と、初期発見モードによって発見された目の位置の変化を繰り返し特定するトラッキングモード200との間で、当該開眼度特定装置の作動を遷移させる。
そして画像処理ECU3は、トラッキングモード200において、繰り返し撮影画像を取得し(ステップ210参照)、取得した撮影画像を逐次縮小し(ステップ215、220、225参照)、その縮小の結果得た縮小画像を用いて、逐次開眼度を算出する(ステップ255参照)。
より詳しくは、トラッキングモード200中の繰り返しの各回において、画像処理ECU3は、ドライバ7の撮影画像を複数の縮小方法のうち1つ(第1の縮小方法に相当する)を用いて縮小し(ステップ215、220、225参照)、その結果得た縮小画像(第1の縮小画像に相当する)から、ドライバ7の目の顔部品および目尻、目頭の顔特徴点を検出し(ステップ230、235、240参照)、その目の部品の画像および目尻、目頭の顔特徴点の位置に基づいて、目の開眼度の複数の候補毎に、その候補の開眼度としての適合度を算出し、最も適合度の高い候補を開眼度として確定する(ステップ255参照)。
そして、確定した開眼度(第1の開眼度に相当する)の適合度が閾値を超えている場合(ステップ260→YESに相当する)、すなわち、確定した開眼度がドライバ7の開眼度として十分もっともらしい場合、縮小方向を変更せず、現在選択している縮小方法(第1の縮小方法)を継続して選択する。
また、確定した開眼度(第1の開眼度に相当する)の適合度が閾値を超えていない場合、すなわち、確定した開眼度がドライバ7の開眼度として必ずしももっともらしくない場合、画像処理ECU3は、次回以降に取得する撮影画像に対する縮小方法を変更する(ステップ280参照)。
このように、第1の縮小方法で縮小された第1の縮小画像から第1の開眼度を特定する場合において、当該第1の開眼度の適合度を用いて、縮小方法を他の縮小方法に切り替えるか否かを判定することで、第1の縮小方法の良否に関するフィードバック情報を利用して縮小方法を選択することができるようになる。その結果、状況に応じた縮小方法を用いて撮影画像を縮小することができる。すなわち、縮小方法を適材適所に使い分けることができる。それ故、特定された開眼度の精度を向上させることができる。
ただし、確定した開眼度の適合度が閾値を超えていない場合でも、直ちに縮小方法を変更するのではなく、確定した開眼度の適合度が閾値を超えていない場合がN回を超えて連続するまでは(ステップ275→NO参照)、現在の縮小方法を維持し、N回を超えて連続した場合に(ステップ275→YES参照)、初めて縮小方法を変更する(ステップ280参照)。
このようにするのは、縮小方法の切り替えが過度に頻繁に発生することを防ぐためである。縮小方法が切り替わると、切り替わりの前後では、縮小画像の算出方法が異なっているので、切り替わりの前後において特定される開眼度も、異なる画像で算出されることになり、図3に示す開眼度18のばらつき(暴れ)を大きくしてしまう要因になる。したがって、縮小方法の切り替わりが頻繁に発生すると、算出される開眼度の時間的連続性が損なわれる可能性が高くなってしまう。
なお、人の状態および他の外的要因の変化は、本実施形態の撮影画像の取得間隔(例えば33msec)程度では起きないことがほとんどである。例えば、人の瞬きには100〜200msecの時間がかかる。したがって、撮影画像の取得毎に縮小方法を切り替える必要性は少ない。
(第2実施形態)
次に、本発明の第2実施形態について説明する。本実施形態は、第1実施形態に対して一部変更を加えたものである。以下、本実施形態が第1実施形態と異なる点を中心に説明する。本実施形態が第1実施形態と異なるのは、トラッキングモード200における処理内容である。図14および図15に、本実施形態において画像処理ECU3がトラッキングモード200で実行するプログラムのフローチャートを示す。
本実施形態の画像処理ECU3は、ドライバモニタリング装置10が起動してから初めてトラッキングモード200に遷移した際に、まず図14に示すプログラムのサイクル(ステップ210〜280までの処理)を所定の複数サイクル(例えば10サイクル)分実行し、その後は、車両のイグニッションがオフとなるまでは、トラッキングモード200において、図15のプログラムを実行するようになっている。なお、図14、図15、図6の処理ステップのうち、同じ内容の処理を実行するステップには、同じステップ番号を付している。
図14のプログラムの処理内容が、図6のプログラムの処理内容と異なる点は、図14の処理においては、ステップ255で開眼度を算出した後、ステップ261を実行し、さらに続いてステップ265で演算結果(すなわち顔動作状態)を状態推定ECU4に出力し、その後ステップ280で、縮小方法として、現在採用されている方法とは別の縮小方法を選択し、その後、次のカメラ1の撮影タイミングを待ち、撮影タイミングが訪れると、再度ステップ210を実行するようになっていることである。
すなわち、図14のプログラムを実行している間、画像処理ECU3は、撮影画像を取得して縮小する度に、縮小方法を切り替えることで、選択可能な全ての縮小方法(本実施形態では、単純間引き法および近傍画素平均法)をそれぞれ1回以上用いて、開眼度を算出するようになる。
なお、ステップ261では、縮小方法毎に適合度の平均値を算出するようになっている。具体的には、単純間引き法を縮小方法1とし、近傍画素平均法を縮小方法2とすると、ステップ261では、今回取得した撮影画像に対して用いた縮小方法i(ただし、iは1または2)に対応する実行カウント値Niの値を1だけ増加させ、さらに、当該縮小方法に対する前回までの平均適合度Moldiと当該実行カウント値Niに基づいて、今回算出した適合度も含めた平均適合度Mnewiを算出する。算出式としては、以下のようなものを用いる。
Mnewi={Moldi×(Ni−1)+Mnowi}/Ni
ただし、Mnowは、直前のステップ255で算出した開眼度に対する適合度である。ここで算出した今回までの平均適合度Mnewは、次に今回と同じ縮小方法で撮影画像を縮小した後のステップ261では、縮小方法についての前回までの平均適合度Moldとなる。
なお、各縮小方法iに対する実行カウント値Niおよび平均適合度Mnewiは、ドライバモニタリング装置10が始動した時点で画像処理ECU3がすべてゼロにリセットするようになっている。したがって、ある縮小方法iに対応する実行カウント値Niは、ドライバモニタリング装置10の始動後から現在までの、当該縮小方法を採用した際の適合度の平均値となる。
また、図15のプログラムの処理内容が、図6のプログラムの処理内容と異なる点は、図15の処理においては、ステップ260で肯定判定があった後に、ステップ261およびステップ263をこの順に実行し、その後にステップ265で演算結果(すなわち顔動作状態)を状態推定ECU4に出力するようになっていることである。ステップ261では、上述の通り、今回採用された縮小方法に対する適合度の平均値を更新する。
ステップ263では、各縮小方法についての適合度の平均値に基づいて、次回以降の縮小方法(すなわち、次回以降に取得する撮影画像に対して用いる縮小方法)を選択する。具体的には、複数の縮小方法(すなわち、本実施形態においては単純間引き法と近傍画素平均法)のうち、適合度の平均値が高い方を選択する。
なお、このようにして算出される平均値は、ステップ260で肯定判定となった場合、すなわち、適合度が閾値Thを超えた場合の適合度のみを母集団に加えた平均値である。すなわち、画像処理ECU3は、適合度が閾値Thより高い場合の適合度はすべて平均値計算の母集団に含め、適合度が閾値Th以下の場合の適合度の一部は母集団から除外している。
このように、画像処理ECU3は、まずドライバモニタリング装置10の作動が開始してから最初にトラッキングモード200に入った場合のみ、最初の所定の複数枚の撮影画像については、単純間引き法と近傍画素平均法とを交互に切り替えて縮小画像を生成していく(図4のステップ210〜280参照)。
そしてその後は、ドライバモニタリング装置10の作動が終了するまで、トラッキングモード200において、縮小方法毎に、閾値Thを超える適合度を母集団とする適合度の平均値を算出する。そして、この平均値の算出は、開眼度算出の度に実行する(ステップ261参照)。
そして、平均値の算出の度に、2つの縮小方法間で当該平均値の大小を比較し、平均値の高い方を、次回以降に採用する縮小方法として選択する(ステップ263)。
つまり、画像処理ECU3は、複数の縮小方法のそれぞれ毎に、当該縮小方法を用いて縮小画像を作成し当該縮小画像に基づいて開眼度を特定した場合における当該開眼度の適合度について、過去の平均値を算出し、また、それら複数の縮小方法に対応する複数の平均値の比較結果に基づいて、平均値の最も高いものを次回以降に撮影される撮影画像の縮小方法として採用するようになっている。
このように、複数の縮小方法間の適合度の平均値の比較結果に基づいて、採用する縮小方法を決定することで、1回の適合度のみに基づいて採用する縮小方法を決定することがないので、縮小方法の選択が、より信頼性の高いものとなる。
また、単純間引き法と近傍画素平均法どちらを用いても適合度が十分高い場合、第1実施形態においては、適合度が相対的に低い縮小方法を継続的に使用してしまう可能性があるが、本実施形態においては、適合度が相対的に高い縮小方法を使用することができる。
(第3実施形態)
次に、本発明の第3実施形態について説明する。本実施形態は、第1実施形態に対して一部変更を加えたものである。以下、本実施形態が第1実施形態と異なる点を中心に説明する。
本実施形態が第1実施形態と異なるのは、初期発見モード100およびトラッキングモード200における処理内容である。図16に、本実施形態の画像処理ECU3が初期発見モード100において実行するプログラムのフローチャートを示し、図17に、本実施形態にて画像処理ECU3がトラッキングモード200において実行するプログラムのフローチャートを示す。
本実施形態において初期発見モード100で実行する図16のプログラムが図5のプログラムと異なるのは、ステップ165、170の内容のみである。
すなわち、画像処理ECU3は、ステップ165では、顔画像、顔部品画像、および顔特徴点画像を撮影画像から切り出し、切り出した各画像を、単純間引き法および近傍画素平均法のいずれか一方ではなく両方の方法で縮小画像を生成する。したがって、ステップ165では、単純間引き法で縮小された縮小画像と近傍画素平均法を用いて縮小された縮小画像を生成する。これら2つの縮小画像は、同じ撮影画像を縮小したものである。
続いてステップ170では、顔パターン登録を行う点は、図5の場合と同じである。ただし、縮小した顔画像の特徴量、縮小した顔部品画像の特徴量、縮小した顔特徴点画像の特徴量は、それぞれ縮小方法毎に記録する。
すなわち、単純間引き法で縮小した顔画像の特徴量、近傍画素平均法で縮小した顔画像の特徴量、単純間引き法で縮小した顔部品画像の特徴量、近傍画素平均法で縮小した顔部品画像の特徴量、単純間引き法で縮小した顔特徴点画像の特徴量、近傍画素平均法で縮小した顔特徴点画像の特徴量を記録する。
また、本実施形態においてトラッキングモード200で実行する図17のプログラムが図6のプログラムと異なるのは、ステップ230に代えてステップ223およびステップ228を実行するようになっていることである。
具体的には、画像処理ECU3は、ステップ220の実行後、ステップ223を実行し、その後ステップ235を実行する。また、ステップ225の実行後、ステップ228を実行し、その後ステップ235を実行する。
ステップ220で単純間引き法で撮影画像を縮小した後のステップ223では、初期発見モード100のステップ170で登録された情報を読み出すのは同じである。ただし、縮小した顔画像の特徴量、縮小した顔部品画像の特徴量、縮小した顔特徴点画像の特徴量については、単純間引き法で縮小した画像についてのみの特徴量を採用する。
また、ステップ230で近傍画素平均法で撮影画像を縮小した後のステップ228では、初期発見モード100のステップ170で登録された情報を読み出すのは同じである。ただし、縮小した顔画像の特徴量、縮小した顔部品画像の特徴量、縮小した顔特徴点画像の特徴量については、近傍画素平均法で縮小した画像についてのみの特徴量を採用する。
このように、本実施形態では、初期発見モード100において、選択可能なすべての縮小方法で顔画像、顔部品画像、顔特徴点画像の縮小画像を生成し、それらの特徴量を登録しておき、トラッキングモード200における撮影画像毎の縮小の繰り返しにおいては、今回の縮小に用いた縮小方法を用いて縮小した特徴量を読み出してトラッキング(ステップ235、240)に用いるので、より正確なトラッキングが実現し、ひいては、より正確な開眼度の算出が可能となる。
(第4実施形態)
次に、本発明の第4実施形態について説明する。本実施形態は、第2実施形態に対して一部変更を加えたものである。以下、本実施形態が第2実施形態と異なる点を中心に説明する。
本実施形態が第2実施形態と異なるのは、本実施形態の画像処理ECU3が、ドライバ7を他の人と区別された個人として特定し、特定した個人に対応する縮小方法を、デフォルトの縮小方法として採用するようになっていることである。
この作動のために、画像処理ECU3は、ドライバモニタリング装置10の始動後(すなわち、車両のイグニッションスイッチがオンとなった後)、初期発見モード100を実行する前に、図18に示すプログラムを実行する。
画像処理ECU3は、まずステップ310で、図5のステップ110と同様に、カメラ1によって撮影された撮影画像を1フレーム分取得する。続いてステップ320で、取得した撮影画像に基づいて個人識別を行う。
個人識別とは、撮影画像中に写っているドライバ7を、他の人と区別された個人として特定することをいう。個人識別を実現するために、画像処理ECU3は、この車両を運転する可能性のある複数の人のそれぞれについて、その人の顔画像の特徴量をあらかじめフラッシュメモリ中に記録している。
車両のドライバ席にある人が座った場合に、その人の顔画像の特徴量のフラッシュメモリへ記録する方法としては、例えば、以下のような方法を採用する。画像処理ECU3の図示しない操作部に対してその人が所定の登録操作を行った際に、画像処理ECU3が、カメラ1を用いてその人の顔画像を撮影し、その顔画像の特徴量を算出し、フラッシュメモリに記録する。
ステップ320の個人識別においては、画像処理ECU3は、ステップ310で取得した画像の特徴量(すなわち、現在のドライバ7の特徴量)と、フラッシュメモリに記録されている複数人分の特徴量とを比較し、現在のドライバ7の特徴量と最も一致度が高い特徴量に対応する個人を、現在のドライバ7であるとして特定する。
続いてステップ330では、個人識別において現在のドライバ7として特定した個人に対応する縮小方法を、フラッシュメモリから読み出す。
特定した個人に対応する縮小方法の情報は、後述するとおり、図15のステップ263において、フラッシュメモリに記録されるようになっている。なお、ステップ330において、個人識別において現在のドライバ7として特定した個人に対応する縮小方法がフラッシュメモリに記録されていない場合には、ROMにあらかじめ記録されている暫定用の縮小方法を、当該個人に対応する縮小方法とする。
続いてステップ340では、ステップ330で特定した、現在のドライバ7として特定した個人に対応する縮小方法を、デフォルトの縮小方法として特定する。デフォルトの縮小方法は、既述の通り、ドライバモニタリング装置10が作動を開始した後に最初にトラッキングモード200のステップ215を実行する際に、使用する縮小方法として選択される。
また画像処理ECU3は、トラッキングモード200において、図15のステップ263で、決定した次回の縮小方法を、個人識別において現在のドライバ7として特定した個人に対応する縮小方法として、フラッシュメモリに記録する。
また、画像処理ECU3は、トラッキングモード200において、図15のステップ263で、次の縮小方法として選択した縮小方法を、ステップ320で特定した個人に対応する縮小方法として、フラッシュメモリに記録する。
このように、画像処理ECU3は、ドライバ7を他の人と区別された個人として特定し、また、縮小方法と特定された個人との組み合わせ毎に、当該縮小方法を用いて開眼度を特定した場合における当該開眼度の適合度について、過去の算術平均値を算出し、算出した統計的代表値間の比較結果に基づいて、デフォルトの縮小方法を決定するようになっている。
このようになっていることで、ドライバモニタリング装置10の作動開始直後のトラッキングモード200において初めて開眼度算出のために用いられる縮小方法も、個人識別によって特定された個人(つまり、撮影される人)についての縮小方法毎の適合度の算術平均値に基づいて決定されるので、画像処理ECU3の作動の当初から、縮小方法の適切な作動が実現されることになる。
(第5実施形態)
次に、本発明の第5実施形態について説明する。本実施形態は、第1実施形態に対して一部変更を加えたものである。以下、本実施形態が第1実施形態と異なる点を中心に説明する。
本実施形態が第1実施形態と異なるのは、トラッキングモード200における作動である。本実施形態において画像処理ECU3がトラッキングモード200で実行するプログラムのフローチャートを、図19に示す。
図19のプログラムと図6のプログラムとが異なるのは、図6のステップ260およびステップ280が、図19ではそれぞれステップ262、282に置き換えられていること、および、図19では、ステップ265の後にステップ284が実行されるようになっていることである。
すなわち、本実施形態の画像処理ECU3は、ステップ255で開眼度を算出した後、ステップ262に進み、撮影画像中の顔の揺動速度(すなわち、顔の移動速度)が閾値Thvを超えているか否かを判定する。顔の揺動速度は、今回取得した撮影画像についてステップ235で特定した顔の位置と、前回(またはそれ以前に)取得した撮影画像についてステップ235で特定した顔の位置との間の変化に基づいて算出する。
揺動速度が閾値Thvを超えていれば続いてステップ265を実行し、閾値Thv以下であれば続いてステップ270を実行する。また、ステップ282では、次回以降に取得する撮影画像に対する縮小方法として、単純間引き法を採用し、ステップ284では、次回以降に取得する撮影画像に対する縮小方法として、近傍画素平均法を採用する。
このようになっているので、画像処理ECU3は、最新の顔の揺動速度が閾値Thvを超えているときは、次の撮影画像に対する縮小方法として近傍画素平均法を採用する(ステップ262→ステップ265→ステップ284)。
このようにするのは、車両の振動やドライバ7の首振り動作(顔向き変更動作)などで、顔が揺動している場合、単純間引き法を用いて撮影画像の縮小処理を行うと、瞼の輪郭線が濃く線が細いことが問題となるからである。すなわち、単純間引き法を用いると、ある撮影画像では瞼の輪郭線がはっきり検出できるにもかかわらず、次の撮影画像では瞼の輪郭線がまったく検出できないようになってしまうという風に、検出結果が不安定なとなってしまうことがある。そのため、顔の揺れていると言える程度に顔の揺動速度が大きい場合には、次の撮影画像の処理から、単純間引き法を用いずに近傍画素平均法を用いるようにする。なお、瞼の輪郭線は、概ね横方向に延びているので、顔の上下方向の揺動に特に悪影響を受けやすい。したがって、ステップ262において閾値Thvと比較する揺動速度は、縦方向(すなわち上下方向)の揺動速度であってもよい。
また、画像処理ECU3は、それまで顔の揺動速度が閾値Thvを超えていたが、揺動速度が閾値Thvを下回るようになって以降は、揺動速度が連続的に閾値Thv以下となった回数を示すカウンタNが所定の回数Nを超えるまでは、次の撮影画像に対する縮小方法として近傍画素平均法を採用する(ステップ262→ステップ270→ステップ275→ステップ284参照)。このようにするのは、縮小方法の切り代わりが撮影画像毎に毎回変化してしまい、その結果、開眼度の値の時間的連続性が失われてしまうことを防ぐためである。
また画像処理ECU3は、揺動速度がN回を超えて連続的に閾値Thv以下となって以降は、揺動速度が閾値Thv以下である限り、次の撮影画像に対する縮小方法として近傍画素平均法を採用する(ステップ262→ステップ270→ステップ275→ステップ280参照)。
このように、本実施形態の画像処理ECU3は、縮小画像に基づいてドライバ7の揺動速度を特定し、特定した揺動速度に基づいて、複数の縮小方法から1つの縮小方法を選択するようになっている。
上述の通り、ドライバ7の顔の揺動速度の大小によっては、どの縮小方法が開眼度の特定に適しているかが大きく変化する。したがって、ドライバ7の顔の揺動速度に基づいて縮小方法を選択することで、状況に応じた縮小方法を用いて撮影画像を縮小することができる。すなわち、縮小方法を適材適所に使い分けることができる。それ故、特定された開眼度の精度を向上させることができる。
(他の実施形態)
以上、本発明の実施形態について説明したが、本発明の範囲は、上記実施形態のみに限定されるものではなく、本発明の各発明特定事項の機能を実現し得る種々の形態を包含するものである。
例えば、撮影画像から縮小画像への縮小比率は、VGAサイズからQVGAサイズへの縮小、すなわち縮小比率1/4の縮小のみならず、どのような縮小比率であってもよい。ただし、撮影画像の縦方向の画素の行数および横方向の画素の列数のいずれかに、縮小比率1/4の平方根(すなわち1/2)を乗じた結果が、整数とならない場合は、整数となるように、撮影画像にダミーデータとしての画素の行または列を追加し、その上で、縮小するようになっていてもよい。ダミーデータとしての画素の輝度値は、どのような値であってもよい。例えば、隣接する画素の平均値であってもよい。
またカメラ1の解像度はVGAサイズでなくてもSVGAやXGAなど、より解像度の高いものであってもよいし、CIFのように低解像度のカメラであってもよい。また、特別にアスペクト比を定めた異型サイズの解像度をもったカメラであってもよい。
また例えば、上記実施形態においては、選択可能な縮小方法として、単純間引き法と近傍画素平均法とが用いられていたが、選択可能な縮小方法としては、単純間引き法と近傍画素平均法以外の方法であってもよいし、選択可能な縮小方法の数は2より多くてもよい。
また、撮影画像全体に対して顔8が非常に小さい場合、すなわち、個人差により元々顔が小さかったり、ドライビングポジションによってはカメラから顔8の距離が離れている場合などは、縮小処理を省略する選択肢を用意しても良い。本発明は画像サイズを縮小することによるメモリ使用量の削減や処理負荷軽減を目的としたものであるが、検出した顔部品のサイズが小さい場合は、オリジナルの状態であっても本来も目的を害することはない。
例えば、図20に示すように、VGAサイズの撮影画像91を単純間引き法で1/4に縮小し、さらにそれを単純間引き法で1/4に縮小した結果のQQVGAサイズ(縦160ピクセル×横120ピクセル)の画像92を縮小画像とする縮小方法、撮影画像91を単純間引き法で1/4に縮小し、さらにそれを近傍画素平均法で1/4に縮小した結果の画像93を縮小画像とする縮小方法、撮影画像91を近傍画素平均法で1/4に縮小し、さらにそれを単純間引き法で1/4に縮小した結果の画像94を縮小画像とする縮小方法、撮影画像91を近傍画素平均法で1/4に縮小し、さらにそれを近傍画素平均法で1/4に縮小した結果の画像95を縮小画像とする縮小方法という4つの縮小方法のうち、任意の2つ以上を、選択可能な縮小方法としてもよい。なお、図20では、撮影画像91、縮小画像92〜95とも、目の部分のみが表されているが、撮影画像91、縮小画像92〜95の表示範囲は、実際には顔よりも大きい。
また例えば、上記実施形態においては、下瞼輪郭は目画像中の目頭22aから目尻22bまでの直線16であるとみなし、上瞼輪郭の候補となるベジエ曲線を複数個作成し、それら複数のベジエ曲線17a〜17dのそれぞれについて適合度を算出し、最も高い適合度を有するベジエ曲線を上瞼輪郭として特定し、特定したベジエ曲線と下瞼輪郭に基づいて開眼度を算出し、当該開眼度の適合度として、当該ベジエ曲線の適合度を用いるようになっている。すなわち、上瞼輪郭と下瞼輪郭のうち、上瞼輪郭のみの適合度を、当該開眼度の適合度として用いるようになっている。
しかし、必ずしもこのようにする必要はなく、上瞼輪郭と下瞼輪郭のうち、上瞼輪郭の適合度と下瞼輪郭の適合度の両方に基づいて、開眼度の適合度を決定するようになっていてもよい。すなわち、下瞼輪郭の候補としても、複数個のベジエ曲線を作成し、それら複数のベジエ曲線のそれぞれについて、上瞼輪郭の候補のベジエ曲線と同様に適合度を算出し、最も高い適合度を有する上瞼輪郭候補のベジエ曲線を下瞼輪郭として特定し、特定した下瞼輪郭候補のベジエ曲線と上瞼輪郭候補のベジエ曲線に基づいて開眼度を算出し、当該開眼度の適合度として、当該下瞼輪郭候補のベジエ曲線の適合度に、当該上瞼輪郭候補のベジエ曲線の適合度を乗算したものを、当該開眼度の適合度として用いるようになっていてもよい。
また例えば、上記実施形態において画像処理ECU3は、ある縮小方法を用いて確定した開眼度の適合度に基づいて、次回以降に取得する撮影画像の縮小方法を決定しているが、次回以降に取得する撮影画像の縮小方法のみならず、今回取得して開眼度を確定した撮影画像についても、今回決定した縮小方法を用いて再度縮小して開眼度を再確定するようになっていてもよい。あるいは、前回以前に取得して開眼度を確定した撮影画像についても、今回決定した縮小方法を用いて再度縮小して開眼度を再確定するようになっていてもよい。
また例えば、第2、第4実施形態においては、縮小方法毎の過去の適合度の平均値の計算の母集団は、最後にドライバモニタリング装置10が起動してから以降の期間における適合度に限定されている。しかし、母集団は、ドライバモニタリング装置10の製造後の全期間における適合度であってもよい。
また例えば、第2、第4実施形態においては、縮小方法毎の過去(今回も含む)の適合度の算術平均値を算出し、その算術平均値を縮小方法の選択に利用するようになっている。しかし、過去の適合度の算術平均値に代えて、縮小方法毎の適合度の重み付き平均値、調和平均値、幾何平均値、メジアン(中央値)、モード(最頻値)等を用いるようになっていてもよい。すなわち、縮小方法毎の過去の適合度の統計的代表値を算出し、その統計的代表値を縮小方法の選択に利用するようになっていればよい。なお統計的代表値とは、母集団(本実施形態にいては同じ縮小方法に対する過去の複数の適合度)の中心的な値を代表的に表す値である。
また、画像処理ECU3は、適合度、顔の揺動速度のみならず、車両内に入る外乱光の強度、ドライバの着用物(メガネ、サングラス)の有無にも基づいて、縮小方法を変更するようになっていてもよい。
また、第5実施形態のステップ282では、一律に単純間引き法を採用するのではなく、何らかの基準に基づいて単純間引き法と近傍画素平均法のいずれかを選択的に採用するようになっていてもよい。例えば、ステップ282では、今回採用した縮小方法による開眼度の適合度が閾値Thを超えていれば、今回採用した縮小方法を次回の縮小方法として選択し、適合度が閾値Th以下であれば、今回採用した縮小方法と異なる縮小方法を次回の縮小方法として選択するようになっていてもよい。
また例えば、第1実施形態のトラッキングモード200において、最初に取得した撮影画像に対しては、単純間引き法を採用して縮小し、2回目に取得した撮影画像に対しては、近傍画素平均法を採用して縮小し、その結果に基づいて、どちらの縮小方法の適合度が高いかを判定し、適合度が高い方をデフォルトの適合度として採用するように、画像処理ECU3の作動を変更してもよい。
また例えば、カメラ1から取得する1枚の撮影画像において、カメラの撮像方式、画像伝送方式によっては、上から数えて奇数行の画素と偶数行の画素とで、撮影タイミングが異なっているような場合がある。以下、このような画像を時差インターレース画像という。このような時差インターレース画像を撮影画像として取得する場合、画像処理ECU3は、縮小方法として、単純間引き法を採用してもよいし、単純間引き法で縮小して次に単純間引き法または近傍画素平均法のいずれかで縮小を行う方法を採用してもよい。すなわち、まず最初に単純間引き法で縮小するような縮小方法を採用する。このようにすることで、時間的に異なるタイミングで撮影された情報が排除され、縮小画像中の画素は、同じタイミングで撮影された画素のみとなる。なお、時差インターレース画像であるか否かの情報は、画像処理ECU3に対するユーザの入力操作に基づいて特定してもよいし、カメラ1から、時差インターレース画像を出力しているか否かの情報を取得し、その情報に基づいて特定してもよい。
また、上記実施形態においては、デフォルトの縮小方法は、ドライバモニタリング装置10が起動した後に最初にトラッキングモード200に遷移し、そのトラッキングモード200で初めて撮影画像を取得した際に、その取得画像に対してのみ採用するようになっている。しかし、ドライバモニタリング装置10が起動した後に最初にトラッキングモード200に遷移した場合に限らず、初期発見モード100からトラッキングモード200に遷移した場合は必ず、そのトラッキングモード200で初めて取得した撮影画像に対してデフォルトの縮小方法を採用するようになっていてもよい。
この場合において、第1実施形態のように、画像処理ECU3が、トラッキングモード200において、デフォルトの縮小方法を用いて縮小画像Xを生成し、その縮小画像Xに基づいて開眼度を特定した場合に、その開眼度の適合度が閾値より大きいことに基づいて、前記縮小画像生成手段が縮小画像Xより後に生成する縮小画像Yの縮小方法として、デフォルトの縮小方法を継続して選択するようになっていたとする。
この場合、デフォルトの縮小方法を用いて特定した開眼度の適合度が閾値を超えていれば、仮に他の縮小方法がより適していたとしても、デフォルトの縮小方法が継続して採用されてしまう。
そこで、画像処理ECU3は、複数の縮小方法のそれぞれについて、過去に当該縮小方法で縮小画像が生成され、当該縮小画像に基づいて開眼度が特定されたときの、当該開眼度の適合度の統計的代表値(例えば算術平均値)を特定し、それら特定した統計的代表値の間の比較に基づいて、複数の縮小方法のうちから最も適合度の統計的代表値が高いものをデフォルトの縮小方法として選択するようになっていてもよい。
このようになっていることで、初期発見モード100からトラッキングモード200に入る際には、デフォルトの縮小方法の選択に、複数の縮小方法のそれぞれを採用した場合の過去の開眼度の適合度が反映されるので、デフォルトの縮小方法として最適な縮小方法が選択される可能性が高くなり、ひいては、必ずしも最適ではない縮小方法が継続的に採用されてしまう可能性が低減される。
あるいは、画像処理ECU3は、複数の縮小方法のそれぞれについて、過去に当該縮小方で縮小画像が生成された回数を特定し、それら特定した回数の間の比較に基づいて、最も回数の多いものを、デフォルトの縮小方法として選択するようになっていてもよい。
このようになっていることで、初期発見モード100からトラッキングモード200に入る際には、デフォルトの縮小方法の選択に、複数の縮小方法のそれぞれが過去に採用された回数が反映されるので、デフォルトの縮小方法として最適な縮小方法が選択される可能性が高くなり、ひいては、必ずしも最適ではない縮小方法が継続的に採用されてしまう可能性が低減される。
あるいは、画像処理ECU3は、個人識別によって特定した個人にあらかじめ対応付けられた縮小方法を、デフォルトの縮小方法として決定するようになっていてもよい。
このようになっていることで、初期発見モード100からトラッキングモード200に入る際には、デフォルトの縮小方法として、特定された個人についてあらかじめ定められた縮小方法が採用される。開眼度の特定のためにどの縮小方法が適しているかは、撮影される人の個人差によるところが大きい。したがって、このようになっていることで、デフォルトの縮小方法として最適な縮小方法が選択される可能性が高くなり、ひいては、必ずしも最適ではない縮小方法が継続的に採用されてしまう可能性が低減される。
個人識別の方法としては、顔画像による比較照合を例に説明したが、それに限らず、個人単位で所有する識別可能なキーなど持ち物であってもよいし、暗証番号などを個人単位で記憶させておいて都度入力することで識別してもよいし、あるいは、指紋や静脈など生体情報を用いた識別であってもよい。
また、上記の実施形態において、画像処理ECU3がプログラムを実行することで実現している各機能は、それらの機能を有するハードウェア(例えば回路構成をプログラムすることが可能なFPGA)を用いて実現するようになっていてもよい。