(58)【調査した分野】(Int.Cl.,DB名)
前記状態検出手段は、前記ドライバがマスクを着用していないと判断した場合に、前記撮像手段によって撮像される画像から検出される、前記ドライバの眼の画像、鼻の画像、及び口の画像に基づいて、前記ドライバの顔向き又は眼の開閉状態を検出する請求項1に記載の状態検出装置。
【発明を実施するための形態】
【0008】
以下、本実施形態を、図面を参照しつつ説明する。
図1は本実施形態に係る運転支援装置10のブロック図である。運転支援装置10は、車両を運転するドライバを監視するための装置である。この運転支援装置10は、
図1に示されるように、制御装置20、撮影装置31、音声出力装置32を有している。
【0009】
撮影装置31は、例えば、CCD(Charge Coupled Device)カメラを有する撮影装置である。この撮影装置31は、
図2に示されるように、例えばハンドルコラムやダッシュボードなどに設置される。
図3は、撮影装置31によって撮影された画像Pを示す図である。
図3を参照するとわかるように、撮影装置31は、シート61に着座するドライバ60の顔が、視野中心に位置するように、視野角及び姿勢が調整されている。この撮影装置31は、ドライバ60の顔を順次撮影し、撮影により得た画像Pについての画像情報PDを順次出力する。
【0010】
図1に戻り、音声出力装置32は、制御装置20からの指示に基づいて、ドライバ60に対して音声を出力する。この音声出力装置32は、音声を出力するための増幅器やスピーカを備えている。
【0011】
制御装置20は、CPU(Central Processing Unit)21、主記憶部22、補助記憶部23、表示部24、入力部25、及びインタフェース部26を有するコンピュータである。
【0012】
CPU21は、補助記憶部23に記憶されているプログラムに従って、後述する処理を実行する。
【0013】
主記憶部22は、RAM(Random Access Memory)等を有している。主記憶部22は、CPU21の作業領域として用いられる。
【0014】
補助記憶部23は、ROM(Read Only Memory)、磁気ディスク、半導体メモリ等の不揮発性メモリを有している。補助記憶部23は、CPU21が実行するプログラム、及び各種パラメータなどを記憶している。また、撮影装置31から出力される画像情報PD、及びCPU21による処理結果などを順次記憶する。
【0015】
表示部24は、LCD(Liquid Crystal Display)などの表示ユニットを有している。表示部24は、CPU21の処理結果等を表示する。
【0016】
入力部25は、入力キーや、タッチパネル等のポインティングデバイスを有している。オペレータの指示は、入力部25を介して入力され、システムバス27を経由してCPU21に通知される。
【0017】
インタフェース部26は、シリアルインターフェイスや、パラレルインタフェースを有している。撮影装置31、及び音声出力装置32は、インタフェース部26を介して、システムバス27に接続される。
【0018】
上述のように構成される制御装置20は、ドライバ60を監視し、ドライバ60の集中力が低下していると判定した場合などには、当該ドライバ60に対してアラームを出力する。以下、本実施形態に係る運転支援装置10の動作について、図面を参照しつつ説明する。
【0019】
図4のフローチャートは、CPU21によって実行されるプログラムの一連の処理アルゴリズムに対応している。
図4のフローチャートに示される一連の処理は、例えば車両のイグニッションスイッチがオンになると実行される。
【0020】
CPU21は、撮影装置31から順次送信される画像Pを示す画像情報PDを受信すると、画像情報PDによって規定される画像Pからドライバの顔の検出を試みる。まず、CPU21は、画像Pから、ドライバの頭部を検出するための頭部検出処理を実行する(ステップS101)。頭部検出処理では、例えば、頭部を構成する画素の輝度や、画像Pに写るドライバの頭部と背景との境界を示すエッジ、及び頭部と顔との境界を示すエッジなどの特徴量に基づいて、ドライバの頭部の検出が行われる。例えば、CPU21は、画像Pから検出された各エッジについて、当該エッジが頭部の輪郭である度合を示す尤度を算出し、尤度が閾値を超える場合に、画像Pに頭部が存在すると判断する。なお、頭部の検出は、テンプレートを用いて行ってもよい。
【0021】
頭部検出処理を終えると、CPU21は、画像Pからドライバの顔の輪郭を検出するための顔輪郭検出処理を行う(ステップS102)。顔輪郭検出処理では、例えば、顔を構成する画素の輝度や、画像Pに写るドライバの顔と背景との境界を示すエッジなどの特徴量に基づいて、ドライバの顔の輪郭の検出が行われる。例えば、CPU21は、画像Pから検出された各エッジについて、当該エッジが顔の輪郭である度合を示す尤度を算出し、尤度が閾値を超える場合に、画像Pに顔の輪郭が存在すると判断する。なお、顔の検出は、テンプレートを用いて行ってもよい。
【0022】
顔輪郭検出処理を終えると、CPU21は、画像Pからドライバの眼を検出するための眼検出処理を行う(ステップS103)。眼検出処理では、例えば、眼を構成する画素の輝度や、画像Pに写るドライバの眼と顔との境界を示すエッジなどの特徴量に基づいて、ドライバの眼の検出が行われる。例えば、CPU21は、画像Pから検出された各エッジについて、当該エッジが眼を構成する瞼や光彩の輪郭である度合を示す尤度を算出し、各エッジについての尤度の合計が閾値を超える場合に、画像Pに眼の画像が存在すると判断する。
【0023】
なお、CPU21は、眼のテンプレートを用いて、画像Pからドライバの眼を検出することとしてもよい。この場合、CPU21は、眼を検出するためのテンプレートを、画像Pの上面で移動させながら、正規化相互相関を示す相関値を尤度として算出する。そして、尤度が、閾値以上で、かつ最も大きくなったときのテンプレートの位置に眼の画像が存在すると判断する。
【0024】
次に、CPU21は、画像Pに写るドライバの顔が、ドライバの正面の顔であるか否かを判断する(ステップS104)。具体的には、CPU21は、ステップS101〜S103の処理で、画像Pから頭部、顔の輪郭、眼が検出されなかった場合には、画像Pに写るドライバの顔が、ドライバの正面の顔ではないと判断する(ステップS104:No)。
【0025】
また、ステップS101〜S103の処理で、画像Pから頭部、顔の輪郭、眼が検出された場合には、顔の輪郭と眼の位置との関係に基づいて、画像Pに写るドライバの顔が、ドライバの正面の顔であるか否かを判断する(ステップS104)。例えば、
図5に示されるように、画像Pにおける顔の輪郭Fの中心を通る直線Lと、2つの眼M1,M2それぞれの距離d1,d2とがほぼ等しいか、或いは、距離d1,d2の差が閾値以下である場合には、画像Pに写るドライバの顔が、ドライバの正面の顔であると判断する(ステップS104:Yes)。
【0026】
一方、
図6に示されるように、距離d1,d2の差が閾値以上である場合や、
図7に示されるように、画像Pから眼が1つしか検出できなかった場合には、画像Pに写るドライバの顔が、ドライバの正面の顔ではないと判断する(ステップS104:No)。
【0027】
CPU21は、画像Pに写るドライバの顔が、ドライバの正面の顔ではないと判断した場合には(ステップS104:No)、ステップS101〜S104の処理を繰り返し実行する。CPU21は、画像Pに写るドライバの顔が、ドライバの正面の顔であると判断した場合には(ステップS104:Yes)、画像Pからドライバの鼻を検出するための鼻検出処理を行う(ステップS105)。鼻検出処理では、例えば、鼻を構成する画素の輝度や、画像Pに写るドライバの鼻と顔との境界を示すエッジなどの特徴量に基づいて、ドライバの鼻の検出が行われる。なお、鼻の検出は、眼の検出と同様に、テンプレートを用いて行ってもよい。
【0028】
鼻検出処理を終えると、CPU21は、画像Pからドライバの口を検出するための口検出処理を行う(ステップS106)。口検出処理では、例えば、口を構成する画素の輝度や、画像Pに写るドライバの口と顔との境界を示すエッジなどの特徴量に基づいて、ドライバの口の検出が行われる。なお、口の検出は、眼の検出と同様に、テンプレートを用いて行ってもよい。
【0029】
次に、CPU21は、ドライバがマスクを着用しているか否かを判断する(ステップS107)。
図8は、マスクを着用したドライバの画像Pを示す図である。
図8に示されるように、ドライバがマスクを着用した場合には、頭部、顔の輪郭、及び眼を検出することは可能であるが、鼻、口を検出することができない。そこで、CPU21は、画像Pから、ドライバの鼻、口が検出された場合は、ドライバがマスクを着用していないと判断する(ステップS107:No)。一方、CPU21は、画像Pから、ドライバの鼻、口が検出されなかった場合は、ドライバがマスクを着用していると判断する(ステップS107:Yes)。
【0030】
CPU21は、ドライバがマスクを着用してい
ないと判断した場合は(ステップS107:No)、第1顔検出処理を行う。また、CPU21は、ドライバがマスクを着用してい
ると判断した場合は(ステップS107:Yes)、第2顔検出処理を行う。第1顔検出処理は、画像Pに写るドライバの眼、鼻、口の画像に基づいて、ドライバの顔の向きや眼の開度を検出するための処理である。また、第2顔検出処理は、画像Pに写るドライバの眼の画像に基づいて、ドライバの顔の向きや眼の開度を検出するための処理である。
【0031】
図9のフローチャートは、第1顔検出処理において、CPU21によって実行される一連の処理を示す。第1顔検出処理では、CPU21は、頭部検出処理、顔輪郭検出処理、眼検出処理、鼻検出処理、口検出処理を実行する(ステップS201〜S205)。
【0032】
鼻検出処理では、CPU21は、例えば、画像Pから検出された各エッジについて、当該エッジが鼻の輪郭である度合を示す尤度を算出し、各エッジについての尤度の合計が閾値を超える場合に、画像Pに鼻の画像が存在すると判断する。同様に、口検出処理では、CPU21は、例えば、画像Pから検出された各エッジについて、当該エッジが口の輪郭である度合を示す尤度を算出し、各エッジについての尤度の合計が閾値を超える場合に、画像Pに口の画像が存在すると判断する。なお、鼻、及び口の検出は、テンプレートを用いて行ってもよい。
【0033】
頭部検出処理、顔輪郭検出処理、眼検出処理、鼻検出処理、口検出処理では、表1を参照するとわかるように、カウンタ値n1の値に基づいた検出パラメータ、或いはテンプレートを用いて処理が実行される。例えば、カウンタ値n1が0である場合には、正面を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた頭部、顔の輪郭、眼、鼻、口の検出が行われる。カウンタ値n1が1である場合には、斜め左を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた頭部、顔の輪郭、眼、鼻、口の検出が行われる。カウンタ値n1が2である場合には、斜め右を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた頭部、顔の輪郭、眼、鼻、口の検出が行われる。カウンタ値n1が3である場合には、左を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた頭部、顔の輪郭、眼、鼻、口の検出が行われる。カウンタ値n1が4である場合には、右を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた頭部、顔の輪郭、眼、鼻、口の検出が行われる。
【0035】
次に、CPU21は、画像Pから顔が検出されたか否かを判断する(ステップS206)。第1顔検出処理では、画像Pから、頭部、顔の輪郭、眼、鼻、口のいずれかが検出されなかった場合には、画像Pから顔が検出されなかったと判断される(ステップS206:Yes)。一方、画像Pから、頭部、顔の輪郭、眼、鼻、口が検出された場合には、画像Pから顔が検出されたと判断される(ステップS206:No)。CPU21は、顔が検出されたと判断した場合には(ステップS206:No)、検出数を示すカウンタmの値を1繰り上げる(ステップS207)。
【0036】
CPU21は、画像Pから顔が検出されなかったと判断した場合(ステップS206:Yes)、或いはステップS207の処理を終えた場合には、カウンタ値n1の値を1繰り上げて(ステップS208)、カウンタ値n1の値が4より大きいか否かを判断する(ステップS209)。画像Pについて、表1に示される5通りの検出パラメータ或いはテンプレートを用いた処理が行われていない場合には、ここでの判断は否定される(ステップS209:No)。この場合には、CPU21は、ステップS201〜S209の処理を繰り返し実行する。
【0037】
一方、表1に示される5通りの検出パラメータ或いはテンプレートを用いた処理が行われた場合には、ここでの判断は肯定される(ステップS209:Yes)。この場合には、CPU21は、カウンタ値n1をリセットして、検出数を示すカウンタmが0より大きいか否かを判断する(ステップS210)。画像Pから1回も顔が検出されなかったと判断された場合には、ここでは判断は否定される(ステップS210:No)。この場合、CPU21は、カウンタ値mをリセットして第1顔検出処理を終了し、ステップS101に戻る。そして、ステップS101以降の処理を繰り返し実行する。
【0038】
一方、画像Pから1回でも顔が検出されたと判断した場合には、(ステップS210:Yes)、カウンタ値mをリセットして、結果の選択を行う(ステップS211)。結果の選択は、例えば、カウンタ値n1の値ごとに、各処理(ステップS201〜S205)における尤度の合計を求める。
【0039】
例えば、各処理(ステップS201〜S205)における頭部,顔の輪郭、眼、鼻、口についての尤度をそれぞれLH1,LH2,LH3,LH4,LH5とすると、カウンタ値n1に対応する尤度LHn1は、LH1〜LH5の和で示される(LHn1=LH1+LH2+LH3+LH4+LH5)。そこで、CPU21は、カウンタ値n1の値(0〜4)ごとに、尤度LHn1を演算する。そして、最も尤度LHn1が大きいときのカウンタ値n1の値を求める。次に、このカウンタ値に基づいて結果を選択する。
【0040】
表1を参照するとわかるように、例えば、ここで求められたカウンタ値n1が0である場合には、正面を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた検出結果が選択される。また、例えば、ここで求められたカウンタ値n1が3である場合には、左を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた検出結果が選択される。
【0041】
次に、CPU21は、選択結果に基づいて、ドライバの顔の向きの判定を行う(ステップS212)。具体的には、CPU21は、表1を参照するとわかるように、カウンタ値n1が0のときの検出結果が選択されたときには、ドライバは正面を向いていると判定する。また、カウンタ値n1が1のときの検出結果が選択されたときには、ドライバは斜め左を向いていると判定する。カウンタ値n1が2のときの検出結果が選択されたときには、ドライバは斜め右を向いていると判定する。カウンタ値n1が3のときの検出結果が選択されたときには、ドライバは左を向いていると判定する。カウンタ値n1が4のときの検出結果が選択されたときには、ドライバは右を向いていると判定する。
【0042】
CPU21は、ドライバが正面以外を向いていると判定した場合には、音声出力装置32を駆動して、ドライバに対してアラームを発報する。
【0043】
次に、CPU21は、画像Pを用いて、ドライバの瞼の開閉の判定を行う(ステップS212)。瞼の開閉の判定は、例えば、眼の上瞼を示すエッジと、眼の下瞼のエッジとの距離と、閾値との比較により行う。なお、眼が1個しか検出されていないときは、瞼の開閉判定を実施しない。
【0044】
CPU21は、ステップS213の処理が終了すると、以降ステップS201〜S213の処理を繰り返し実行する。
【0045】
また、
図4のステップS107の処理で、ドライバがマスクを着用していると判断した場合は(ステップS107:Yes)、CPU21は、第2顔検出処理を行う。
【0046】
図10のフローチャートは、第2顔検出処理において、CPU21によって実行される一連の処理を示す。第2顔検出処理では、CPU21は、頭部検出処理、顔輪郭検出処理、眼検出処理を実行する(ステップS301〜S303)。第2顔検出処理では、マスクによって覆われる鼻や口の画像を検出するための処理は実行されない。
【0047】
次に、CPU21は、画像Pから顔が検出されたか否かを判断する(ステップS304)。第2顔検出処理では、画像Pから、頭部、顔の輪郭、眼のいずれかが検出されなかった場合には、画像Pから顔が検出されなかったと判断される(ステップS304:Yes)。一方、画像Pから、頭部、顔の輪郭、眼が検出された場合には、画像Pから顔が検出されたと判断される(ステップS304:No)。CPU21は、顔が検出されたと判断した場合には(ステップS304:No)、検出数を示すカウンタmの値を1繰り上げる(ステップS305)。
【0048】
CPU21は、画像Pから顔が検出されなかったと判断した場合(ステップS304:Yes)、或いはステップS305の処理を終えた場合には、カウンタ値n1の値を1繰り上げて(ステップS306)、カウンタ値n1の値が4より大きいか否かを判断する(ステップS307)。画像Pについて、表1に示される5通りの検出パラメータ或いはテンプレートを用いた処理が行われていない場合には、ここでの判断は否定される(ステップS307:No)。この場合には、CPU21は、ステップS301〜S207の処理を繰り返し実行する。
【0049】
一方、表1に示される5通りの検出パラメータ或いはテンプレートを用いた処理が行われた場合には、ここでの判断は肯定される(ステップS307:Yes)。この場合には、CPU21は、カウンタ値n1をリセットして、検出数を示すカウンタmが0より大きいか否かを判断する(ステップS308)。画像Pから1回も顔が検出されなかったと判断された場合には、ここでは判断は否定される(ステップS308:No)。この場合、CPU21は、カウンタ値mをリセットして、第1顔検出処理を終了してステップS101に戻る。そして、ステップS101以降の処理を繰り返し実行する。
【0050】
一方、画像Pから1回でも顔が検出されたと判断した場合には、(ステップS308:Yes)、カウンタ値mをリセットして、結果の選択を行う(ステップS309)。結果の選択は、例えば、カウンタ値n1の値ごとに、各処理(ステップS301〜S303)における尤度の合計を求める。
【0051】
例えば、各処理(ステップS301〜S303)における頭部,顔の輪郭、眼についての尤度をそれぞれLH1,LH2,LH3とすると、カウンタ値n1に対応する尤度LHn1は、LH1〜LH3の和で示される(LHn1=LH1+LH2+LH3)。そこで、CPU21は、カウンタ値n1の値(0〜4)ごとに、尤度LHn1を演算する。そして、最も尤度LHn1が大きいときのカウンタ値n1の値を求める。次に、このカウンタ値に基づいて結果を選択する。
【0052】
表1を参照するとわかるように、例えば、ここで求められたカウンタ値n1が0である場合には、正面を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた検出結果が選択される。また、例えば、ここで求められたカウンタ値n1が3である場合には、左を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた検出結果が選択される。
【0053】
次に、CPU21は、選択結果に基づいて、ドライバの顔の向きの判定を行う(ステップS310)。具体的には、CPU21は、表1を参照するとわかるように、カウンタ値n1が0のときの検出結果が選択されたときには、ドライバは正面を向いていると判定する。また、カウンタ値n1が1のときの検出結果が選択されたときには、ドライバは斜め左を向いていると判定する。カウンタ値n1が2のときの検出結果が選択されたときには、ドライバは斜め右を向いていると判定する。カウンタ値n1が3のときの検出結果が選択されたときには、ドライバは左を向いていると判定する。カウンタ値n1が4のときの検出結果が選択されたときには、ドライバは右を向いていると判定する。
【0054】
CPU21は、ドライバが正面以外を向いていると判定した場合には、音声出力装置32を駆動して、ドライバに対してアラームを発報する。
【0055】
次に、CPU21は、画像Pを用いて、ドライバの瞼の開閉の判定を行う(ステップS311)。瞼の開閉の判定は、例えば、眼の上瞼を示すエッジと、眼の下瞼のエッジとの距離と、閾値との比較により行う。なお、眼が1個しか検出されていないときは、瞼の開閉判定を実施しない。
【0056】
次に、CPU21は、ステップS312でドライバが正面を向いていると判定した場合には(ステップS312:Yes)、ステップS301に戻り、ステップS301〜S312の処理を繰り返し実行する。一方、CPU21は、ステップS312でドライバが正面を向いていないと判定した場合には(ステップS312:No)、カウンタ値n2を1繰り上げて(ステップS313)、カウンタ値n2が閾値Th以上であるか否か判断する(ステップS314)。
【0057】
撮影装置31から順次出力される画像に基づいて、ドライバが一定回数(Th)連続で、正面を向いていないと判断された場合には、ここでの判断が肯定される(ステップS314:Yes)。この場合には、CPU21は、カウンタ値n2をリセットして第2顔検出処理を終了し、ステップS101に戻る。そして、ステップS101以降の処理を繰り返し実行する。
【0058】
一方、撮影装置31から順次出力される画像に基づいて、ドライバが一定回数(Th)連続で、正面を向いていないと判断されなかった場合には、ここでの判断が否定される(ステップS314:No)。この場合には、CPU21は、ステップS301に戻り、ステップS301〜S314の処理を繰り返し実行する。
【0059】
以上説明したように、本実施形態では、ドライバがマスクを着用しているか否かを判定し(ステップS107)、その判定した結果に基づいて、ドライバの顔を検出するための処理が行われる(ステップS108,S109)。したがって、マスクを着用しているときにも、ドライバの顔の状態を精度よく検出することができる。
【0060】
本実施形態では、マスクを着用しているか否かの判定は、ドライバの顔が正面に向いているときの画像に基づいて行われる(ステップS104〜S107)。したがって、マスクの着用の有無を精度よく判定することができる。これにより、ドライバの顔の状態を精度よく検出することが可能になる。
【0061】
本実施形態では、尤度に基づいて、複数の検出結果の中から最も確からしい検出結果が選択される(ステップS211,S309)。そして、選択された検出結果に基づいて、ドライバの顔の検出が行われる。したがって、ドライバの顔の状態を精度よく検出することが可能になる。
【0062】
マスク着用した状態で、連続してドライバが正面を向いていないと判定された場合や、眼が一つしか検出できないフレームが続いている場合は、ドライバの向きを誤検出している疑いがある。本実施形態では、そのようなフレームが一定期間続いた場合には、顔検出処理が一旦中止される(ステップS314:Yes)。したがって、ドライバの顔の誤検出の発生を抑制することが可能になる。
【0063】
以上、本発明の実施形態について説明したが、本発明は上記実施形態によって限定されるものではない。例えば、上記実施形態では、ドライバがマスクを着用していると判断した場合には(ステップS107:Yes)、画像Pから鼻や口の検出を行わないこととした。これに限らず、鼻や口の検出を行った結果に基づいて、ドライバの顔の向きを検出することとしてもよい。これによれば、運転中にドライバがマスクを外した場合に、ドライバの顔の向きを精度よく検出することが可能となる。
【0064】
上記実施形態では、検出結果に応じて音声出力装置32を動作させることとした。これに限らず、検出結果を外部機器へ出力することとしてもよい。
【0065】
上記実施形態では、制御装置20が、プログラムを実行するコンピュータである場合について説明した。これに限らず、制御装置20は、
図11に示されるように、第1判断ユニット20a、第2判断ユニット20b、第1状態検出ユニット20c、第2状態検出ユニット20dなどのハードウエアから構成されていてもよい。
【0066】
例えば、第1判断ユニット20aは、ステップS101〜S104の処理を実行する。第2判断ユニット20bは、ステップS105〜S107の処理を実行する。第1状態検出ユニット20cは、ステップS108の処理を実行する。第2状態検出ユニット20dは、ステップS109の処理を実行する。
【0067】
以上、本発明の実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施しうるものであり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これらの実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。