以下、図1を参照して本発明の一実施形態に係る顔画像処理装置について説明する。なお、本実施形態では、当該顔画像処理装置を含むドライバサポートシステムが車両に搭載される例について説明する。一例として、ドライバサポートシステムは、当該車両を運転する運転者の顔を撮像し、撮像画像に基づいて運転者の状態(顔の向き、眼の開閉度等)を判断して、判断結果に応じた車両の制御を行う。また、上記ドライバサポートシステムは、車両周辺の他の車両や障害物を認知し衝突の危険性を判断して、判断結果に応じた車両の制御も行う。なお、図1は、当該顔画像処理装置を含むドライバサポートシステムの機能構成の一例を示すブロック図である。
図1において、ドライバサポートシステムは、ドライバモニタカメラ1、ドライバモニタECU(Electrical Control Unit)2、ドライバサポートシステムECU3、ミリ波レーダ4、表示部5、オーディオアンプ6、スピーカ61、ブレーキ制御ECU7、警報ブザー71、およびブレーキACT(アクチュエータ)72を備えている。そして、ドライバモニタECU2、ドライバサポートシステムECU3、およびミリ波レーダ4は、互いにCAN(Controller Area Network)1等を介して接続される。また、ドライバサポートシステムECU3、表示部5、オーディオアンプ6、およびブレーキ制御ECU7は、CAN2等を介して接続される。なお、ドライバモニタECU2が本発明の顔画像処理装置の一例に相当する。
ドライバモニタカメラ1は、ドライバモニタECU2から電力が供給されてそれぞれ作動するCCD(Charge Coupled Device)11およびLED(Light Emitting Diode)12を含む。例えば、LED12は、運転者の正面から当該運転者へ向けて近赤外光を照射する照明装置である。この場合、CCD11は、近赤外領域で高い感度特性を有する撮像装置であり、典型的には、近赤外CCDカメラである。このように、近赤外領域で高い感度特性を有するCCD11を用いることにより、夜間やトンネル内等を走行中で車内が暗い状況でも、LED12で照らされた運転者を感度よく撮像することが可能である。なお、CCD11は、運転者の顔を正面から撮像可能な位置に配置される。そして、CCD11は、所定の周期毎に運転者の顔およびその周囲の画像を撮像して、撮像された画像をドライバモニタECU2へ出力する。なお、ドライバモニタカメラ1の設置位置の詳細については、後述する。
ドライバモニタECU2は、その内部に複数のマイクロコンピュータ(以下、マイコンと記載する)等の情報処理装置、処理に用いる各種データを格納するメモリ、ドライバモニタカメラ1に電力を供給する電源回路、およびインターフェース回路などを備える処理装置である。例えば、ドライバモニタECU2は、ドライバモニタカメラ1で撮像された撮像画像を用いて、運転者の顔向きを判断したり、運転者の眼の開閉度を判断したりして、その判断結果をドライバサポートシステムECU3へ出力する。また、ドライバモニタECU2は、運転者の顔向きや眼の開閉度等を判断するために必要な当該運転者の顔の特徴部(例えば、顔全体、鼻孔、瞼等)が撮像画像から検出できない場合、その未検出から生じる装置の状況を告知するための情報をドライバサポートシステムECU3へ出力する。
ミリ波レーダ4は、車両の前方、後方、斜め前方向等へ向けてミリ波を出射して、対象物から反射した電波を受信する。そして、ミリ波レーダ4は、受信した電波に基づいて、車両の周辺に存在する他の車両や障害物の位置や自車との相対速度等を測定して、その結果をドライバサポートシステムECU3へ出力する。
ドライバサポートシステムECU3は、ドライバモニタECU2から出力された運転者の顔向きおよび眼の開閉度等の情報と、ミリ波レーダ4から出力された自車周辺の車両や障害物の認知結果とに基づいて、車両に搭載された乗員保護装置特性を適正に調整したり、衝突条件緩和システムを作動させたり、運転者に適切な警告を与えたりする。また、ドライバサポートシステムECU3は、上記特徴部の未検出から生じる装置の状況を告知するための情報に基づいて、当該情報を運転者へ報知する。図1においては、ドライバサポートシステムECU3が制御する装置の一例として、表示部5、オーディオアンプ6、およびブレーキ制御ECU7が記載されている。
表示部5は、車両の運転席に着席して当該車両を運転する運転者から視認可能な位置に設けられる。例えば、表示部5は、運転席前面の計器盤(インスツルメントパネル)に設けられ、ドライバサポートシステムECU3からの指示に応じた警報や情報を運転者に表示する。例えば、運転者が正面を向いていない状態や眼を閉じている状態であると判断され、車両と他の物体との衝突の危険性がある場合、ドライバサポートシステムECU3は、表示部5に運転者に衝突回避操作を促す表示を早期に行う(警報の前出し)。また、表示部5は、上記特徴部の未検出によって装置が正常に作動していない場合、その状況を運転者に告知するための情報の表示を行う。典型的には、表示部5は、主要ないくつかの計器、表示灯、警告灯、および各種情報を表示するマルチインフォメーションディスプレイ等を1つのパネル内に組み合わせて配置したコンビネーションメータで構成される。なお、表示部5は、ハーフミラー(反射ガラス)を運転席前面のフロントガラスの一部に設け、当該ハーフミラーに情報等の虚像を蛍光表示するヘッドアップディスプレイ(Head-Up Display)等、他の表示装置で構成してもかまわない。
オーディオアンプ6は、ドライバサポートシステムECU3から出力された音声情報に応じて増幅した音声信号をスピーカ61に出力し、スピーカ61を介して当該音声情報を運転者へ報知する。
ブレーキ制御ECU7は、車両に搭載された警報ブザー71やブレーキACT72の動作を制御する。例えば、運転者が正面を向いていない状態や眼を閉じている状態であると判断され、車両と他の物体との衝突の危険性があるとドライバサポートシステムECU3が判断した場合、ブレーキ制御ECU7は、警報ブザー71を早期に作動させて運転者に衝突回避操作を促す(警報の前出し)。これによって、運転者は、早期に上記脇見等の運転状態を解消して衝突回避操作を行うことができる。また、ブレーキ制御ECU7は、運転者がブレーキペダルを踏んだ力に応じて、ブレーキ油圧を加圧加勢するように、ブレーキACT72の動作を制御する等を行う(警報ブレーキ)。これによって、ブレーキACT72の油圧応答性が向上し、車両の速度低減を図ることができる。
次に、図2および図3を参照して、ドライバモニタカメラ1について説明する。なお、図2は、車両に設置されたドライバモニタカメラ1を運転席の横方向から見た一例を示す側面概要図である。図3は、車両に設置されたドライバモニタカメラ1をステアリングホイール91側から見た一例を示す正面概要図である。
図2および図3において、ドライバモニタカメラ1は、ステアリングコラム92の上面に設置される。そして、ドライバモニタカメラ1は、ステアリングホイール91の開口部(例えば、リム911の内側でスポーク912等が設けられていない開口部)を通って、ステアリングホイール91を操作する運転者の正面から当該運転者の顔を撮像するように撮像方向が調整される。なお、図2においては、ドライバモニタカメラ1の視野を示す視体積の一部(カメラ画角の一部)が破線で記載されており、運転手の頭部が当該視体積内に含まれるようにドライバモニタカメラ1の撮像方向が調整される。ここで、上述したようにドライバモニタカメラ1にはLED12が設けられているが、LED12も上記撮像方向と同様に、運転者の正面から当該運転者へ向けて近赤外光を照射する。なお、LED12が近赤外光は、少なくともドライバモニタカメラ1のカメラ画角より広い範囲に照射される。このように、ドライバモニタカメラ1は、ステアリングコラム92上に設置されるため、運転者の正面となる至近距離から当該運転者を撮像することができ、車両に乗車した運転者の顔を精度よく撮像することが可能となる。
次に、ドライバモニタECU2の具体的な動作を説明する前に、図4を参照して当該動作で用いられる主なデータの一例について説明する。なお、図4は、ドライバモニタECU2のメモリに記憶される主なデータの一例を示す図である。
図4において、ドライバモニタECU2のメモリには、撮像画像データDa、顔未検出フラグDb、鼻孔未検出フラグDc、瞼未検出フラグDd、告知表示フラグDe、顔未検出カウントデータDf、鼻孔未検出カウントデータDg、瞼未検出カウントデータDh、告知表示カウントデータDi、眼の開閉度データDj、告知情報データDk、および異常情報データDl等が記憶される。
撮像画像データDaは、ドライバモニタカメラ1が撮像した画像を示すデータが記憶され、所定の処理周期毎に更新される。
顔未検出フラグDbは、撮像画像中に運転者の顔が検出できなかった場合にONに設定される顔未検出フラグFfの状態を示すデータが記憶される。鼻孔未検出フラグDcは、撮像画像中に運転者の鼻孔が検出できなかった場合にONに設定される鼻孔未検出フラグFnの状態を示すデータが記憶される。瞼未検出フラグDdは、撮像画像中に運転者の瞼が検出できなかった場合にONに設定される瞼未検出フラグFeの状態を示すデータが記憶される。告知表示フラグDeは、ドライバサポートシステムが正常に作動していないことを示す告知を表示部5に表示している場合にONに設定される告知表示フラグFdの状態を示すデータが記憶される。
顔未検出カウントデータDfは、撮像画像中に運転者の顔が検出できない状態が継続している時間(顔未検出カウント値Cf)を示すデータが記憶される。鼻孔未検出カウントデータDgは、撮像画像中に運転者の鼻孔が検出できない状態が継続している時間(鼻孔未検出カウント値Cn)を示すデータが記憶される。瞼未検出カウントデータDhは、撮像画像中に運転者の瞼が検出できない状態が継続している時間(瞼未検出カウント値Ce)を示すデータが記憶される。告知表示カウントデータDiは、ドライバサポートシステムが正常に作動していないことを示す告知を表示部5に表示している時間(告知表示カウント値Cd)を示すデータが記憶される。
眼の開閉度データDjは、撮像画像を用いて算出された運転者の眼の開閉度を示すデータが記憶される。
告知情報データDkは、ドライバサポートシステムが撮像画像中の特徴部を検出していないことを示す告知情報を示すデータが記憶される。具体的には、告知情報データDkは、運転者の顔の特徴部(例えば、顔全体、鼻孔、瞼等)が撮像画像から検出できない場合に備えて、検出できなかった特徴部に応じた告知情報が記憶されている。以下、図5を参照して、告知情報データDkの一例を説明する。
図5において、告知情報データDkには、例えば、ドライバモニタECU2が未検出となった特徴部に応じて、運転者に報知する告知情報がそれぞれ記述された告知情報テーブルが記録される。上記告知情報テーブルは、撮像画像中で検出できなかった未検出特徴部に対して、告知情報Ia〜Icがそれぞれ記述される。ここで、告知情報Iaは、ドライバモニタECU2が撮像画像から検出できなかった運転者の顔の特徴部を運転者へ報知する情報である。告知情報Ibは、特徴部が未検出となった推定原因を運転者へ報知する情報である。告知情報Icは、運転者が上記推定原因を解消する際の注意事項を運転者へ報知する情報である。以下、各未検出特徴部に対する告知情報Ia〜Icの例をそれぞれ列挙して説明する。
上記告知情報テーブルには、未検出特徴部「顔」に対する告知情報Iaとして「顔を検出できませんでした。」が記述される。また、上記告知情報テーブルには、未検出特徴部「顔」に対する告知情報Ibとして「カメラとの間に遮るものがありませんか?」が記述される。さらに、上記告知情報テーブルには、未検出特徴部「顔」に対する告知情報Icとして「危険のないところに車を停止して、遮るものを外してください。」が記述される。
上記告知情報テーブルには、未検出特徴部「鼻孔」に対する告知情報Iaとして「鼻孔を検出できませんでした。」が記述される。また、上記告知情報テーブルには、未検出特徴部「鼻孔」に対する告知情報Ibとして「マスクを着用していませんか?」が記述される。さらに、上記告知情報テーブルには、未検出特徴部「鼻孔」に対する告知情報Icとして「マスクを外せるようであれば、危険のないところに車を停止して、マスクを外してください。」が記述される。
上記告知情報テーブルには、未検出特徴部「瞼」に対する告知情報Iaとして「瞼を検出できませんでした。」が記述される。また、上記告知情報テーブルには、未検出特徴部「瞼」に対する告知情報Ibとして「サングラス、眼鏡、帽子を着用していませんか?前髪が目にかかっていませんか?」が記述される。さらに、上記告知情報テーブルには、未検出特徴部「瞼」に対する告知情報Icとして「着用物を外せるようであれば、危険のないところに車を停止して、外してください。」が記述される。
上記告知情報テーブルには、未検出特徴部「眉」に対する告知情報Iaとして「眉を検出できませんでした。」が記述される。また、上記告知情報テーブルには、未検出特徴部「眉」に対する告知情報Ibとして「サングラス、眼鏡、帽子を着用していませんか?前髪が眉にかかっていませんか?」が記述される。さらに、上記告知情報テーブルには、未検出特徴部「眉」に対する告知情報Icとして「着用物を外せるようであれば、危険のないところに車を停止して、外してください。」が記述される。
上記告知情報テーブルには、未検出特徴部「口」に対する告知情報Iaとして「口を検出できませんでした。」が記述される。また、上記告知情報テーブルには、未検出特徴部「口」に対する告知情報Ibとして「マスクを着用していませんか?」が記述される。さらに、上記告知情報テーブルには、未検出特徴部「口」に対する告知情報Icとして「マスクを外せるようであれば、危険のないところに車を停止して、マスクを外してください。」が記述される。
上記告知情報テーブルには、未検出特徴部「鼻」に対する告知情報Iaとして「鼻を検出できませんでした。」が記述される。また、上記告知情報テーブルには、未検出特徴部「鼻」に対する告知情報Ibとして「マスクを着用していませんか?」が記述される。さらに、上記告知情報テーブルには、未検出特徴部「鼻」に対する告知情報Icとして「マスクを外せるようであれば、危険のないところに車を停止して、マスクを外してください。」が記述される。
上記告知情報テーブルには、未検出特徴部「耳」に対する告知情報Iaとして「耳を検出できませんでした。」が記述される。また、上記告知情報テーブルには、未検出特徴部「耳」に対する告知情報Ibとして「帽子、耳あてを着用していませんか?髪の毛が耳にかかっていませんか?」が記述される。さらに、上記告知情報テーブルには、未検出特徴部「耳」に対する告知情報Icとして「着用物を外せるようであれば、危険のないところに車を停止して、外してください。」が記述される。
図4に戻り、異常情報データDlは、ドライバサポートシステムが正常に作動していないことを示す異常情報を示すデータが記憶される。例えば、異常情報データDlには、ドライバサポートシステムが正常に作動していないために、運転者の安全運転を促す情報を示すデータが記録される。
次に、図6および図7を参照して、ドライバモニタECU2の動作の一例について説明する。なお、図6は、ドライバモニタECU2によって実行される処理の一例を示す前半のフローチャートである。図7は、ドライバモニタECU2によって実行される処理の一例を示す後半のフローチャートである。なお、図6および図7に示すフローチャートでは、告知対象とする特徴部として運転者の顔、鼻孔、瞼を一例として説明する。また、図6および図7に示すフローチャートの各ステップは、ドライバモニタECU2が所定のプログラムを実行することによって行われる。なお、これらの処理を実行するためのプログラムは、例えば、ドライバモニタECU2に設けられた記憶領域(例えば、メモリ、ハードディスク、光ディスク等)に予め格納されており、ドライバモニタECU2の電源がそれぞれオンになったときにドライバモニタECU2によって実行される。
図6において、ドライバモニタECU2は、初期設定を行い(ステップS51)、次のステップに処理を進める。具体的には、ドライバモニタECU2は、上記ステップS51において、メモリに記憶されている各パラメータ等を初期化する。例えば、ドライバモニタECU2は、顔未検出フラグFf、鼻孔未検出フラグFn、瞼未検出フラグFe、および告知表示フラグFdの状態をそれぞれOFFに初期化する。また、ドライバモニタECU2は、顔未検出カウント値Cf、鼻孔未検出カウント値Cn、瞼未検出カウント値Ce、および告知表示カウント値Cdをそれぞれ0に初期化する。
次に、ドライバモニタECU2は、ドライバモニタカメラ1から撮像画像を取得して、撮像画像データDaを更新し(ステップS52)、次のステップに処理を進める。
次に、ドライバモニタECU2は、上記ステップS52で撮像画像データDaに格納された撮像画像において、運転者の顔が検出可能か否かを判断する(ステップS53)。後述によって明らかとなるが、ドライバモニタECU2は、撮像画像データDaに格納された撮像画像から、運転者の顔の輪郭、中心線、顔の特徴部の位置、特徴部の状況等を認識している。例えば、上記ステップS53においては、ドライバモニタECU2は、撮像画像に運転者の顔自体が撮像されていない場合や、運転者の顔が認識できない場合、顔が検出不可能であると判断する。そして、ドライバモニタECU2は、運転者の顔が検出可能である場合、処理を次のステップS54に処理を進める。一方、ドライバモニタECU2は、運転者の顔が検出できない場合、処理を次のステップS57に処理を進める。
ステップS54において、ドライバモニタECU2は、顔未検出フラグDbを参照して顔未検出フラグFfの状態がONであるか否かを判断する。そして、ドライバモニタECU2は、顔未検出フラグFfの状態がONの場合、顔未検出フラグFfの状態をOFFに変更して顔未検出フラグDbを更新し(ステップS55)、表示部5の表示を通常表示にして(ステップS56)、次のステップS62に処理を進める。一方、ドライバモニタECU2は、顔未検出フラグFfの状態がOFFの場合、そのまま次のステップS62に処理を進める。
ここで、後述により明らかとなるが、上記ステップS54の判断時点において顔未検出フラグFfがONである場合は、それまでドライバモニタECU2が撮像画像から運転者の顔を検出できなかったことを示している。つまり、当該判断時点において、ドライバモニタECU2が撮像画像から運転者の顔を検出できない状態から顔を検出できる状態に変化したことを示している。そこで、上記ステップS55では顔未検出フラグFfの状態を顔検出が可能であることを示す状態(すなわち、OFF)に変更して、上記ステップS56ではそれまで顔が未検出であることを示す告知が表示部5に示されている場合に通常表示に戻す復帰処理を可能にしている。なお、ステップS56の処理においては、表示部5が既に通常表示状態の場合があるが、ドライバモニタECU2は、この場合当該通常表示のままで次のステップS62に処理を進める。
一方、撮像画像から運転者の顔が検出できない場合(ステップS53でNo)、ドライバモニタECU2は、顔未検出フラグDbを参照して顔未検出フラグFfの状態がONであるか否かを判断する(ステップS57)。そして、ドライバモニタECU2は、顔未検出フラグFfの状態がONの場合、顔未検出カウントデータDfを参照して顔未検出カウント値Cfに1を加算して顔未検出カウントデータDfを更新し(ステップS58)、次のステップS61に処理を進める。一方、ドライバモニタECU2は、顔未検出フラグFfの状態がOFFの場合、顔未検出フラグFfの状態をONに変更して顔未検出フラグDbを更新し(ステップS59)、顔未検出カウントデータDfの顔未検出カウント値Cfを1に設定して(ステップS60)、次のステップS61に処理を進める。
ステップS61において、ドライバモニタECU2は、顔未検出カウントデータDfの顔未検出カウント値Cfが予め定められた閾値C1以上か否かを判断する。ここで、閾値C1は、撮像画像で運転者の顔を検出できない状況が一時的な現象か、継続的な現象かを判断するための値であり、様々な実験や経験則から得られた値が設定される。そして、ドライバモニタECU2は、顔未検出カウント値Cfが閾値C1以上の場合、処理を次のステップS91(図7)に進める。一方、ドライバモニタECU2は、顔未検出カウント値Cfが閾値C1未満の場合、上記ステップS52に戻って処理を繰り返す。
ここで、上記ステップS57〜S61の処理は、ドライバモニタECU2が撮像画像から運転者の顔を検出できる状態から顔を検出できない状態に変化したときに顔未検出フラグFfの状態をONにし(ステップS59)、当該顔未検出フラグFfの状態をONした後の経過時間を顔未検出カウント値Cfとしてカウントし(ステップS58、S60)、当該顔未検出カウント値Cfが閾値C1に到達したか否かを判断(ステップS61)するための処理である。つまり、上記ステップS57〜S61の処理では、ドライバモニタECU2が撮像画像から運転者の顔を検出できない状態が継続している時間を計測して、当該時間が閾値C1に到達した場合にステップS91以降の処理を行うことになる。
ステップS62において、ドライバモニタECU2は、上記ステップS52で撮像画像データDaに格納された撮像画像において、運転者の鼻孔が検出可能か否かを判断する。例えば、上記ステップS62においては、ドライバモニタECU2は、撮像画像に運転者の鼻孔自体が撮像されていない場合や、運転者の鼻孔が認識できない場合、鼻孔が検出不可能であると判断する。そして、ドライバモニタECU2は、運転者の鼻孔が検出可能である場合、処理を次のステップS63に処理を進める。一方、ドライバモニタECU2は、運転者の鼻孔が検出できない場合、処理を次のステップS66に処理を進める。
ステップS63において、ドライバモニタECU2は、鼻孔未検出フラグDcを参照して鼻孔未検出フラグFnの状態がONであるか否かを判断する。そして、ドライバモニタECU2は、鼻孔未検出フラグFnの状態がONの場合、鼻孔未検出フラグFnの状態をOFFに変更して鼻孔未検出フラグDcを更新し(ステップS64)、表示部5の表示を通常表示にして(ステップS65)、次のステップS71に処理を進める。一方、ドライバモニタECU2は、鼻孔未検出フラグFnの状態がOFFの場合、そのまま次のステップS71に処理を進める。
ここで、後述により明らかとなるが、上記ステップS63の判断時点において鼻孔未検出フラグFnがONである場合は、それまでドライバモニタECU2が撮像画像から運転者の鼻孔を検出できなかったことを示している。つまり、当該判断時点において、ドライバモニタECU2が撮像画像から運転者の鼻孔を検出できない状態から鼻孔を検出できる状態に変化したことを示している。そこで、上記ステップS64では鼻孔未検出フラグFnの状態を鼻孔検出が可能であることを示す状態(すなわち、OFF)に変更して、上記ステップS65ではそれまで鼻孔が未検出であることを示す告知が表示部5に示されている場合に通常表示に戻す復帰処理を可能にしている。なお、ステップS65の処理においては、表示部5が既に通常表示状態の場合があるが、ドライバモニタECU2は、この場合当該通常表示のままで次のステップS71に処理を進める。
一方、撮像画像から運転者の鼻孔が検出できない場合(ステップS62でNo)、ドライバモニタECU2は、鼻孔未検出フラグDcを参照して鼻孔未検出フラグFnの状態がONであるか否かを判断する(ステップS66)。そして、ドライバモニタECU2は、鼻孔未検出フラグFnの状態がONの場合、鼻孔未検出カウントデータDgを参照して鼻孔未検出カウント値Cnに1を加算して鼻孔未検出カウントデータDgを更新し(ステップS67)、次のステップS70に処理を進める。一方、ドライバモニタECU2は、鼻孔未検出フラグFnの状態がOFFの場合、鼻孔未検出フラグFnの状態をONに変更して鼻孔未検出フラグDcを更新し(ステップS68)、鼻孔未検出カウントデータDgの鼻孔未検出カウント値Cnを1に設定して(ステップS69)、次のステップS70に処理を進める。
ステップS70において、ドライバモニタECU2は、鼻孔未検出カウントデータDgの鼻孔未検出カウント値Cnが閾値C1以上か否かを判断する。ここで、閾値C1は、上記ステップS61と同様に、撮像画像で運転者の鼻孔を検出できない状況が一時的な現象か、継続的な現象かを判断するための値であり、様々な実験や経験則から得られた値が設定される。そして、ドライバモニタECU2は、鼻孔未検出カウント値Cnが閾値C1以上の場合、処理を次のステップS91(図7)に進める。一方、ドライバモニタECU2は、鼻孔未検出カウント値Cnが閾値C1未満の場合、上記ステップS52に戻って処理を繰り返す。
ここで、上記ステップS66〜S70の処理は、ドライバモニタECU2が撮像画像から運転者の鼻孔を検出できる状態から鼻孔を検出できない状態に変化したときに鼻孔未検出フラグFnの状態をONにし(ステップS68)、当該鼻孔未検出フラグFnの状態をONした後の経過時間を鼻孔未検出カウント値Cnとしてカウントし(ステップS67、S69)、当該鼻孔未検出カウント値Cnが閾値C1に到達したか否かを判断(ステップS70)するための処理である。つまり、上記ステップS66〜S70の処理では、ドライバモニタECU2が撮像画像から運転者の鼻孔を検出できない状態が継続している時間を計測して、当該時間が閾値C1に到達した場合にステップS91以降の処理を行うことになる。
ステップS71において、ドライバモニタECU2は、上記ステップS52で撮像画像データDaに格納された撮像画像において、運転者の瞼が検出可能か否かを判断する。例えば、上記ステップS71においては、ドライバモニタECU2は、撮像画像に運転者の瞼自体が撮像されていない場合や、運転者の瞼が認識できない場合、瞼が検出不可能であると判断する。そして、ドライバモニタECU2は、運転者の瞼が検出可能である場合、処理を次のステップS72に処理を進める。一方、ドライバモニタECU2は、運転者の瞼が検出できない場合、処理を次のステップS75に処理を進める。
ステップS72において、ドライバモニタECU2は、瞼未検出フラグDdを参照して瞼未検出フラグFeの状態がONであるか否かを判断する。そして、ドライバモニタECU2は、瞼未検出フラグFeの状態がONの場合、瞼未検出フラグFeの状態をOFFに変更して瞼未検出フラグDdを更新し(ステップS73)、表示部5の表示を通常表示にして(ステップS74)、次のステップS80に処理を進める。一方、ドライバモニタECU2は、瞼未検出フラグFeの状態がOFFの場合、そのまま次のステップS80に処理を進める。
ここで、後述により明らかとなるが、上記ステップS72の判断時点において瞼未検出フラグFeがONである場合は、それまでドライバモニタECU2が撮像画像から運転者の瞼を検出できなかったことを示している。つまり、当該判断時点において、ドライバモニタECU2が撮像画像から運転者の瞼を検出できない状態から瞼を検出できる状態に変化したことを示している。そこで、上記ステップS73では瞼未検出フラグFeの状態を瞼検出が可能であることを示す状態(すなわち、OFF)に変更して、上記ステップS74ではそれまで瞼が未検出であることを示す告知が表示部5に示されている場合に通常表示に戻す復帰処理を可能にしている。なお、ステップS74の処理においては、表示部5が既に通常表示状態の場合があるが、ドライバモニタECU2は、この場合当該通常表示のままで次のステップS80に処理を進める。
一方、撮像画像から運転者の瞼が検出できない場合(ステップS71でNo)、ドライバモニタECU2は、瞼未検出フラグDdを参照して瞼未検出フラグFeの状態がONであるか否かを判断する(ステップS75)。そして、ドライバモニタECU2は、瞼未検出フラグFeの状態がONの場合、瞼未検出カウントデータDhを参照して瞼未検出カウント値Ceに1を加算して瞼未検出カウントデータDhを更新し(ステップS76)、次のステップS79に処理を進める。一方、ドライバモニタECU2は、瞼未検出フラグFeの状態がOFFの場合、瞼未検出フラグFeの状態をONに変更して瞼未検出フラグDdを更新し(ステップS77)、瞼未検出カウントデータDhの瞼未検出カウント値Ceを1に設定して(ステップS78)、次のステップS79に処理を進める。
ステップS79において、ドライバモニタECU2は、瞼未検出カウントデータDhの瞼未検出カウント値Ceが閾値C1以上か否かを判断する。ここで、閾値C1は、上記ステップS61と同様に、撮像画像で運転者の瞼を検出できない状況が一時的な現象か、継続的な現象かを判断するための値であり、様々な実験や経験則から得られた値が設定される。そして、ドライバモニタECU2は、瞼未検出カウント値Ceが閾値C1以上の場合、処理を次のステップS91(図7)に進める。一方、ドライバモニタECU2は、瞼未検出カウント値Ceが閾値C1未満の場合、上記ステップS52に戻って処理を繰り返す。
ここで、上記ステップS75〜S79の処理は、ドライバモニタECU2が撮像画像から運転者の瞼を検出できる状態から瞼を検出できない状態に変化したときに瞼未検出フラグFeの状態をONにし(ステップS77)、当該瞼未検出フラグFeの状態をONした後の経過時間を瞼未検出カウント値Ceとしてカウントし(ステップS76、S78)、当該瞼未検出カウント値Ceが閾値C1に到達したか否かを判断(ステップS79)するための処理である。つまり、上記ステップS75〜S79の処理では、ドライバモニタECU2が撮像画像から運転者の瞼を検出できない状態が継続している時間を計測して、当該時間が閾値C1に到達した場合にステップS91以降の処理を行うことになる。
ステップS80において、ドライバモニタECU2は、撮像画像を用いて運転者の眼の開閉度を演算する処理を行う。次に、ドライバモニタECU2は、処理を終了するか否かを判断する(ステップS81)。例えば、ドライバモニタECU2は、車両の運転者が処理を終了する操作(例えば、イグニッションスイッチをOFFする操作等)を行った場合、処理を終了すると判断する。そして、ドライバモニタECU2は、処理を継続する場合、上記ステップS52に戻って処理を繰り返す。一方、ドライバモニタECU2は、処理を終了する場合、当該フローチャートによる処理を終了する。
以下、上記ステップS81において行われる、眼の開閉度を演算する処理の一例について説明する。
例えば、ドライバモニタECU2は、ソーベルオペレータ等を用いたエッジ抽出処理によって、撮像画像中で顔の輪郭部分および顔の左右方向の中心となる縦中心線を探索して、撮像画像中に撮像されている運転者の顔の輪郭左端、輪郭右端、および顔の縦中心線を検出する。一例として、ドライバモニタECU2は、撮像画像の輝度画像を作成し、当該輝度画像にエッジ抽出処理を施して、顔の輪郭左端、輪郭右端、および顔部品(眉、眼、鼻、口等)の位置を抽出する。次に、ドライバモニタECU2は、抽出された顔の輪郭左端、輪郭右端、および顔部品の位置に基づいて、撮像画像に撮像された運転者の顔幅および縦中心線を算出する。そして、ドライバモニタECU2は、輪郭左端から縦中心線までの左顔幅、および輪郭右端から縦中心線までの右顔幅をそれぞれ算出する。
そして、ドライバモニタECU2は、運転者の眼の位置がどの範囲に撮像されているかを推定する眼の位置推定処理を、撮像画像を用いて行う。ドライバモニタECU2は、上記顔幅情報等を用いて、撮像画像にいて運転者の鼻が撮像されていると推定される範囲を設定する。そして、ドライバモニタECU2は、上記範囲内に対して運転者の鼻の部分を探索して、撮像画像における鼻の位置を検出する。具体的には、ドライバモニタECU2は、上記範囲内における一対の鼻孔の位置を検出する。そして、ドライバモニタECU2は、一対の鼻孔の中間位置を撮像画像における鼻の位置として設定する。なお、一般的に鼻孔の形状は、眼の形状等に比べて個人差が小さい。そのため、鼻孔の位置は眼の位置等に比べてより正確に検出することができる。
次に、ドライバモニタECU2は、鼻の位置を基準に最適な左眼の探索範囲および右眼の探索範囲を撮像画像に対して設定する。例えば、ドライバモニタECU2は、鼻の位置から予め定められた方向に所定距離だけ離れた撮像画像上の位置に、左眼探索範囲および右眼探索範囲をそれぞれ設定する。ここで、鼻の位置を基準として左眼探索範囲および右眼探索範囲をそれぞれ設定する方向および距離は、予め定められた標準となる情報に基づいて設定すればよい。なお、上記顔幅情報に応じて、左眼探索範囲および右眼探索範囲をそれぞれ設定する方向および距離や左眼探索範囲および右眼探索範囲の大きさをそれぞれ変化させてもかまわない。これによって、撮像画像で撮像されている運転者の顔のサイズが変化(典型的には、運転者の顔とドライバモニタカメラ1との間の距離が変化)しても、当該顔のサイズの変化に追従して左眼探索範囲および右眼探索範囲の位置や大きさを適切に設定することができる。
そして、ドライバモニタECU2は、撮像画像に設定された左眼探索範囲内において、運転者の左眼を探索して検出する。また、ドライバモニタECU2は、撮像画像に設定された右眼探索範囲内において、運転者の右眼を探索して検出する。例えば、探索範囲内における眼の検出については、予め設定された眼のテンプレート画像を用いた各種パターンマッチング手法を用いて行うことができる。
次に、ドライバモニタECU2は、運転者の両眼の開閉度を算出する。例えば、ドライバモニタECU2は、撮像画像における運転者の左眼および右眼それぞれについて、上瞼の輪郭および下瞼の輪郭を抽出する。一例として、左眼および右眼における上瞼および下瞼の検出については、予め設定された上瞼および下瞼のテンプレート画像を用いた各種パターンマッチング手法を用いて行うことができる。そして、ドライバモニタECU2は、それぞれの上瞼と下瞼との間の距離を各眼の開閉度として算出して、当該開閉度を示すデータを用いて眼の開閉度データDjを更新する。
その後、ドライバモニタECU2は、眼の開閉度データDjに格納されている眼の開閉度を示すデータをドライバサポートシステムECU3へ出力する。このデータ出力に応じて、ドライバサポートシステムECU3は、ドライバモニタECU2から受け取ったデータと、ミリ波レーダ4から出力された自車周辺の車両や障害物の認知結果とに基づいて、車両に搭載された乗員保護装置特性を適正に調整したり、衝突条件緩和システムを作動させたり、運転者に適切な警告を与えたりする。
なお、上記ステップS80における開閉度演算処理においては、運転者の眼の開閉度だけでなく、運転者の顔向きや視線方向を演算してもかまわない。
例えば、ドライバモニタECU2は、撮像画像において、運転者の顔の輪郭左端から縦中心線までの左顔幅、および輪郭右端から縦中心線までの右顔幅をそれぞれ算出することができる。そして、ドライバモニタECU2は、左顔幅および右顔幅の値の比に基づいて顔向き角度αを算出することが可能となる。ここで、顔向き角度αの値は、ドライバモニタカメラ1に対して正面(つまり、車両の正面)を向いた状態がα=0とする。そして、顔向き角度αの値は、顔がドライバモニタカメラ1に対して正面を向いた状態から右方向を向くほど大きな値になるとし、左方向を向くほど小さな値になるとする。つまり、顔向き角度αの値は、顔がドライバモニタカメラ1に対して右方向を向くと正の値となり、左方向を向くと負の値となる。
また、ドライバモニタECU2は、撮像画像における運転者の左眼および右眼それぞれについて、虹彩の位置を抽出することによって、視線方向を演算することが可能となる。例えば、左眼および右眼における虹彩の検出については、楕円フィルタを用いる手法等を用いることができる。一般的に、虹彩の形状は、撮像画像上においては、顔向きや瞼で遮られたりして円形にはならず、むしろ楕円形状になることが多い。そこで、撮像画像における運転者の左眼および右眼それぞれについて、サイズが異なる複数の楕円フィルタを適用し、当該楕円フィルタの外側領域および内側領域に対する輝度をそれぞれ求める。このとき、外側領域の輝度と内側領域の輝度との間に輝度の差が生じれば、楕円フィルタの内側範囲を虹彩として、用いた楕円フィルタの位置から虹彩の位置を求める。なお、左眼および右眼における虹彩の位置検出については、この手法に限らず、予め設定された虹彩のテンプレート画像を用いた各種パターンマッチング手法や、左眼および右眼の内部を2値化して黒色領域の位置を抽出する手法等、他の検出手法を用いてもかまわない。そして、ドライバモニタECU2は、運転者の左眼および右眼それぞれにおける虹彩の位置と、顔向き方向αとに基づいて、運転者の視線方向を算出する。例えば、ドライバモニタECU2は、車両の正面方向に対する運転者の視線の角度を視線方向として算出する。
図7に進み、ステップS91において、ドライバモニタECU2は、撮像画像データDaに格納された撮像画像において未検出となった特徴部に応じて、告知表示処理を行い、次のステップに処理を進める。例えば、ドライバモニタECU2は、告知情報データDkを参照して、現在の未検出特徴部に応じた告知情報Ia〜Icを抽出し、当該告知情報Ia〜Icを示す文字情報をドライバサポートシステムECU3へ出力して、当該文字情報を表示部5に表示する。
例えば、図8に示すように、未検出特徴部が「顔」である場合、未検出特徴部が「顔」に対する告知情報として告知情報テーブルに記述されている告知情報Ia〜Icを表示部5に表示する。具体的には、未検出特徴部が「顔」である場合、表示部5には、「顔を検出できませんでした。」(告知情報Ia)、「カメラとの間に遮るものがありませんか?」(告知情報Ib)、「危険のないところに車を停止して、遮るものを外してください。」(告知情報Ic)がそれぞれ表示されて、運転者に報知される。これによって、運転者は、ドライバモニタカメラ1がタオル等の布で覆われていた場合など、ドライバモニタカメラ1と運転者との間を遮るものが存在した場合、その遮るものを取り外すことによって、ドライバサポートシステムの動作が復帰することを予測することができる。
例えば、図9に示すように、未検出特徴部が「鼻孔」である場合、未検出特徴部が「鼻孔」に対する告知情報として告知情報テーブルに記述されている告知情報Ia〜Icを表示部5に表示する。具体的には、未検出特徴部が「鼻孔」である場合、表示部5には、「鼻孔を検出できませんでした。」(告知情報Ia)、「マスクを着用していませんか?」(告知情報Ib)、「マスクを外せるようであれば、危険のないところに車を停止して、マスクを外してください。」(告知情報Ic)がそれぞれ表示されて、運転者に報知される。
例えば、図10に示すように、未検出特徴部が「瞼」である場合、未検出特徴部が「瞼」に対する告知情報として告知情報テーブルに記述されている告知情報Ia〜Icを表示部5に表示する。具体的には、未検出特徴部が「瞼」である場合、表示部5には、「瞼を検出できませんでした。」(告知情報Ia)、「サングラス、眼鏡、帽子を着用していませんか?前髪が目にかかっていませんか?」(告知情報Ib)、「着用物を外せるようであれば、危険のないところに車を停止して、外してください。」(告知情報Ic)がそれぞれ表示されて、運転者に報知される。
ここで、上述した告知情報の表示は、特徴部が未検出となっている状態が一時的な現象でない場合(すなわち、未検出継続時間が閾値C1以上の場合)に行われる。例えば、運転者が一時的に手で顔、眼、鼻等を触ったり、運転者の顔の一部に一時的な外光が入射したりした場合、一時的に撮像画像から特徴部が検出できない状況となる。しかしながら、このような一時的な現象に応じて告知表示を行うと、運転者にとって煩わしい情報表示となってしまうため、未検出時間が閾値C1に到達した時点で告知表示を開始する。これによって、告知表示による運転者の煩わしさを軽減することが可能となる。
図7に戻り、上記ステップS91の処理の後、ドライバモニタECU2は、告知表示フラグDeを参照して告知表示フラグFdの状態がONであるか否かを判断する(ステップS92)。そして、ドライバモニタECU2は、告知表示フラグFdの状態がONの場合、告知表示カウントデータDiを参照して告知表示カウント値Cdに1を加算して告知表示カウントデータDiを更新し(ステップS93)、次のステップS96に処理を進める。一方、ドライバモニタECU2は、告知表示フラグFdの状態がOFFの場合、告知表示フラグFdの状態をONに変更して告知表示フラグDeを更新し(ステップS94)、告知表示カウントデータDiの告知表示カウント値Cdを1に設定して(ステップS95)、次のステップS96に処理を進める。
ステップS96において、ドライバモニタECU2は、告知表示カウントデータDiの告知表示カウント値Cdが予め定められた閾値C2以上か否かを判断する。ここで、閾値C2は、上記ステップS91によって特徴部が検出できない旨の告知を運転者へ行うことによって解消される可能性があるものか、解消ができないものかを時間で判断するための値であり、様々な実験や経験則から得られた値が設定される。そして、ドライバモニタECU2は、告知表示カウント値Cdが閾値C2以上の場合、処理を次のステップS97に進める。一方、ドライバモニタECU2は、告知表示カウント値Cdが閾値C2未満の場合、上記ステップS52に戻って処理を繰り返す。
ステップS97において、ドライバモニタECU2は、異常表示処理を行い、当該フローチャートによる処理を終了する。例えば、ドライバモニタECU2は、異常情報データDlを参照して、異常情報を示す文字情報をドライバサポートシステムECU3へ出力して、当該文字情報を表示部5に表示する。表示部5に表示する。
例えば、図11に示すように、表示部5には、「ドライバサポートシステムが正常に作動していません。安全に配慮して、気を付けて運転してください。」と異常情報Idが表示されて、運転者に報知される。このように、上記ステップS97では、ドライバサポートシステムが正常に作動していないことが運転者に報知され、運転者の安全運転をさらに促す情報が報知される。
ここで、上記ステップS91〜S97の処理では、表示部5に特徴部が検出できないことを示す告知表示を行ったときに告知表示フラグFdの状態をONにし(ステップS94)、当該告知表示フラグFdの状態をONした後の経過時間を告知表示カウント値Cdとしてカウントし(ステップS93、S95)、当該告知表示カウント値Cdが閾値C2に到達したか否かを判断(ステップS96)している。つまり、上記告知表示を継続している時間を計測して、当該時間が閾値C2に到達した場合にステップS97の処理を行うことになる。例えば、運転者が運転の際に着用する必要がある眼鏡等によって特徴点が検出できない場合や、運転環境によって外すことができない装着物(サングラス等)によって特徴点が検出できない場合や、運転者では解消できない告知情報外の原因によって特徴点が検出できない場合等においては、運転者に上記告知表示を行っても解消されないことが多い。このような場合、告知表示を長時間続けると運転者にとって煩わしい情報表示となってしまうため、告知表示時間が閾値C2に到達した時点で表示内容を異常情報に切り換える。これによって、告知表示による運転者の煩わしさが軽減されることに加え、さらに運転者の安全運転意識を向上させることが可能となる。
なお、上述したステップS97の動作では、上記異常情報を表示部5に表示することなく上記告知表示を表示部5に表示することを停止してもかまわない。このように、上記告知表示を停止するだけでも、上記告知表示を長時間続けることによって運転者が感じる煩わしさを軽減することができる。
このように、本実施形態に係る顔画像処理装置によれば、撮像画像から運転者の顔の特徴部が検出できなかった場合、当該検出できなかった特徴部を運転者に報知するため、ドライバサポートシステムの動作状況を運転者が確認することができる。
なお、上述した説明では、撮像画像から運転者の顔の特徴部が検出できなかった場合、当該特徴部に応じて告知情報Ia〜Icを表示部5に表示する一例を用いた。これによって、運転者は、表示部5を視認することによって、未検出の特徴部、推定原因、推定原因解消時の注意事項を知ることが可能となる。しかしながら、このような効果を期待しない場合、表示部5に表示する告知情報は他の態様であってもかまわない。例えば、表示部5に告知情報Iaのみが表示されたとしても、運転者は、ドライバサポートシステムが検出できていない自身の特徴部を知ることができ、当該特徴部が検出できないことに繋がる原因が運転者の状態や環境に生じていないか考察することが可能となる。つまり、運転者は、表示部5に告知情報Iaのみが表示されたとしても、その推定原因を推し量ることが可能となり、自身にその原因がある場合はその原因を解消してその結果のシステム状況を確認することも可能となる。
また、上述した説明では、告知情報Ia〜Icや異常情報Idを表示部5に表示する一例を用いたが、他の態様で告知情報や異常情報を運転者に報知してもかまわない。第1の例として、オーディオアンプ6およびスピーカ61を介して、告知情報Ia〜Icや異常情報Idを音声で運転者に報知してもかまわない。この場合、ドライバモニタECU2は、告知情報データDkや異常情報データDlを参照して、告知情報や異常情報を示す音声情報をドライバサポートシステムECU3へ出力して、当該音声情報に基づいた音声をスピーカ61から出力する。
第2の例として、告知情報Iaのみを運転者へ報知する場合、複数のランプの点灯/消滅によって運転者へ報知する。例えば、運転席前面の計器盤(インスツルメントパネル)に特徴点毎のランプを設け、撮像画像から運転者の顔の特徴部が検出できなかった場合に当該特徴点に応じたランプを点灯させる。これによって、運転者は、ランプの点灯しているシステムが検出できなかった特徴部であることを知ることができ、ドライバサポートシステムの動作状況を運転者が確認することができる。
第3の例として、告知情報Iaのみを運転者へ報知する場合、ランプが点灯する色によって運転者へ報知する。例えば、運転席前面の計器盤(インスツルメントパネル)に特徴点毎に複数色の点灯が可能なランプを設け、撮像画像から運転者の顔の特徴部が検出できなかった場合に当該特徴点に応じた色でランプを点灯させる。これによって、運転者は、ランプが点灯している色によってシステムが検出できなかった特徴部を知ることができ、ドライバサポートシステムの動作状況を運転者が確認することができる。
第4の例として、告知情報Iaのみを運転者へ報知する場合、ランプが点滅するパターンによって運転者へ報知する。例えば、運転席前面の計器盤(インスツルメントパネル)に特徴点毎に複数パターンで点滅が可能なランプを設け、撮像画像から運転者の顔の特徴部が検出できなかった場合に当該特徴点に応じたパターンでランプを点滅させる。これによって、運転者は、ランプが点滅しているパターンによってシステムが検出できなかった特徴部を知ることができ、ドライバサポートシステムの動作状況を運転者が確認することができる。
第5の例として、告知情報Iaのみを運転者へ報知する場合、表示部5に表示する数値や記号等によって運転者へ報知する。例えば、運転席前面の計器盤(インスツルメントパネル)に特徴点毎の数値や記号等を表示する表示領域を設け、撮像画像から運転者の顔の特徴部が検出できなかった場合に当該特徴点に応じた数値や記号等を表示させる。これによって、運転者は、表示されている数値や記号等によってシステムが検出できなかった特徴部を知ることができ、ドライバサポートシステムの動作状況を運転者が確認することができる。
また、上述した説明では、ドライバサポートシステムECU3を介して、表示部5に告知情報や異常情報が表示処理される例を用いたが、ドライバモニタECU2が直接表示部5に表示する内容を制御してもかまわない。
また、上述したドライバモニタECU2の処理動作では、告知対象とする特徴部の一例として、運転者の顔、鼻孔、瞼を用いたが、他の特徴部も同様の処理が可能となる。例えば、図5で示した運転者の眉、口、鼻、耳等を告知対象に加えても、同様の処理が可能であることは言うまでもない。
また、上述した実施形態においては、ドライバモニタカメラ1をステアリングコラム92の上面に設置される例を用いたが、ドライバモニタカメラ1を他の位置に設置してもかまわない。ドライバモニタカメラ1は、車両に乗車した運転者の顔を撮像できる位置であればどのような位置に設置されてもかまわず、例えば運転席前面の計器盤(インスツルメントパネル)内、計器盤上、ステアリングホイール内、および車室内上部等に設置してもかまわない。
また、上述したドライバモニタECU2の処理順序、時間カウント方法、各種フラグデータによる状態判定方法等は、単なる一例に過ぎず他の順序や方法であっても、本発明を実現できることは言うまでもない。
また、ドライバモニタECU2が実行するプログラムは、ドライバモニタECU2に設けられた記憶領域に予め格納されるだけでなく、外部記憶媒体を通じてドライバモニタECU2に供給されたり、有線または無線の通信回線を通じてドライバモニタECU2に供給されたりしてもよい。
以上、本発明を詳細に説明してきたが、上述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。