(57)【要約】【課題】ドライバがマスクを着用しているときにも、ドライバの状態を精度よく検出する。【解決手段】本実施形態に係る状態検出装置は、ドライバの顔を撮像する撮像手段と、撮像手段によって撮像される画像に、ドライバの正面の顔の画像が含まれるか否かを判断する第１判断手段と、第１判断手段によって、ドライバの正面の顔の画像が含まれると判断された場合に、ドライバの正面の顔の画像に基づいて、ドライバがマスクを着用しているか否かを判断する第２判断手段と、第２判断手段によって、ドライバがマスクを着用していると判断した場合に、撮像手段によって撮像される画像から検出される、ドライバの眼の画像に基づいて、ドライバの状態を検出する状態検出手段と、を備える。【選択図】図４
2018132974.tif 000002
【特許請求の範囲】
【請求項１】
ドライバの顔を撮像する撮像手段と、
前記撮像手段によって撮像される画像に、前記ドライバの正面の顔の画像が含まれるか否かを判断する第１判断手段と、
前記第１判断手段によって、前記ドライバの正面の顔の画像が含まれると判断された場合に、前記ドライバの正面の顔の画像に基づいて、前記ドライバがマスクを着用しているか否かを判断する第２判断手段と、
前記第２判断手段によって、前記ドライバがマスクを着用していると判断した場合に、前記撮像手段によって撮像される画像から検出される、前記ドライバの眼の画像に基づいて、前記ドライバの状態を検出する状態検出手段と、
を備える状態検出装置。
【請求項２】
前記状態検出手段は、前記ドライバの顔の向きを検出する請求項１に記載の状態検出装置。
【請求項３】
前記状態検出手段は、前記ドライバの眼の開閉状態を検出する請求項１又は２に記載の状態検出装置。
【請求項４】
前記状態検出手段は、前記ドライバがマスクを着用していないと判断した場合に、前記撮像手段によって撮像される画像から検出される、前記ドライバの眼の画像、鼻の画像、及び口の画像に基づいて、前記ドライバの状態を検出する請求項１乃至３のいずれか一項に記載の状態検出装置。
【請求項５】
ドライバの顔を撮像する工程と、
撮像された画像に、前記ドライバの正面の顔の画像が含まれるか否かを判断する工程と、
前記画像に前記ドライバの正面の顔の画像が含まれると判断した場合に、前記ドライバの正面の顔の画像に基づいて、前記ドライバがマスクを着用しているか否かを判断する工程と、
前記ドライバがマスクを着用していると判断した場合に、前記撮像手段によって撮像される画像から検出される、前記ドライバの眼の画像に基づいて、前記ドライバの状態を検出する工程と、
を含む状態検出方法。
【請求項６】
コンピュータに、
ドライバの顔を撮像することにより得られる画像に、前記ドライバの正面の顔の画像が含まれるか否かを判断する手順、
前記画像に前記ドライバの正面の顔の画像が含まれると判断した場合に、前記ドライバの正面の顔の画像に基づいて、前記ドライバがマスクを着用しているか否かを判断する手順、
前記ドライバがマスクを着用していると判断した場合に、前記撮像手段によって撮像される画像から検出される、前記ドライバの眼の画像に基づいて、前記ドライバの状態を検出する手順、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、状態検出装置、状態検出方法、及びプログラムに関する。
【背景技術】
【０００２】
交通事故の原因は種々考えられるが、ドライバの集中力が低下することに起因する人為的なエラーも、交通事故の原因の１つである。人為的なエラーは、ドライバが、会話や車載機器の操作など、運転以外の行動をしたり、疲労や眠気などによって、運転に対する集中力が低下したときなどに、発生する頻度が高くなる。
【０００３】
疲労や眠気などによる集中力の低下は、ドライバ自身での予防が困難である。そのため、居眠りなどに代表されるドライバの状態を検出するための技術が種々提案されている。しかしながら、従来の技術では、ドライバがマスクを着用しているときには、ドライバの状態を検出するのが困難になることが予想される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４７２８４３２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、上述の事情の下になされたもので、ドライバがマスクを着用しているときにも、ドライバの状態を精度よく検出することを課題とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、本実施形態に係る状態検出装置は、ドライバの顔を撮像する撮像手段と、撮像手段によって撮像される画像に、ドライバの正面の顔の画像が含まれるか否かを判断する第１判断手段と、第１判断手段によって、ドライバの正面の顔の画像が含まれると判断された場合に、ドライバの正面の顔の画像に基づいて、ドライバがマスクを着用しているか否かを判断する第２判断手段と、第２判断手段によって、ドライバがマスクを着用していると判断した場合に、撮像手段によって撮像される画像から検出される、ドライバの眼の画像に基づいて、ドライバの状態を検出する状態検出手段と、を備える。
【図面の簡単な説明】
【０００７】
【図１】本実施形態に係る運転支援装置のブロック図である。
【図２】撮影装置の配置を示す図である。
【図３】撮影装置によって撮影された画像を示す図である。
【図４】ＣＰＵによって実行される一連の処理を示すフローチャートである。
【図５】ドライバの状態の判定要領を説明するための図である。
【図６】ドライバの状態の判定要領を説明するための図である。
【図７】ドライバの状態の判定要領を説明するための図である。
【図８】マスクを着用したドライバの画像を示す図である。
【図９】ＣＰＵによって実行される一連の処理を示すフローチャートである。
【図１０】ＣＰＵによって実行される一連の処理を示すフローチャートである。
【図１１】運転支援装置の変形例を示す図である。
【発明を実施するための形態】
【０００８】
以下、本実施形態を、図面を参照しつつ説明する。図１は本実施形態に係る運転支援装置１０のブロック図である。運転支援装置１０は、車両を運転するドライバを監視するための装置である。この運転支援装置１０は、図１に示されるように、制御装置２０、撮影装置３１、音声出力装置３２を有している。
【０００９】
撮影装置３１は、例えば、ＣＣＤ（Charge Coupled Device）カメラを有する撮影装置である。この撮影装置３１は、図２に示されるように、例えばハンドルコラムやダッシュボードなどに設置される。図３は、撮影装置３１によって撮影された画像Ｐを示す図である。図３を参照するとわかるように、撮影装置３１は、シート６１に着座するドライバ６０の顔が、視野中心に位置するように、視野角及び姿勢が調整されている。この撮影装置３１は、ドライバ６０の顔を順次撮影し、撮影により得た画像Ｐについての画像情報ＰＤを順次出力する。
【００１０】
図１に戻り、音声出力装置３２は、制御装置２０からの指示に基づいて、ドライバ６０に対して音声を出力する。この音声出力装置３２は、音声を出力するための増幅器やスピーカを備えている。
【００１１】
制御装置２０は、ＣＰＵ（Central Processing Unit）２１、主記憶部２２、補助記憶部２３、表示部２４、入力部２５、及びインタフェース部２６を有するコンピュータである。
【００１２】
ＣＰＵ２１は、補助記憶部２３に記憶されているプログラムに従って、後述する処理を実行する。
【００１３】
主記憶部２２は、ＲＡＭ（Random Access Memory）等を有している。主記憶部２２は、ＣＰＵ２１の作業領域として用いられる。
【００１４】
補助記憶部２３は、ＲＯＭ（Read Only Memory）、磁気ディスク、半導体メモリ等の不揮発性メモリを有している。補助記憶部２３は、ＣＰＵ２１が実行するプログラム、及び各種パラメータなどを記憶している。また、撮影装置３１から出力される画像情報ＰＤ、及びＣＰＵ２１による処理結果などを順次記憶する。
【００１５】
表示部２４は、ＬＣＤ（Liquid Crystal Display）などの表示ユニットを有している。表示部２４は、ＣＰＵ２１の処理結果等を表示する。
【００１６】
入力部２５は、入力キーや、タッチパネル等のポインティングデバイスを有している。オペレータの指示は、入力部２５を介して入力され、システムバス２７を経由してＣＰＵ２１に通知される。
【００１７】
インタフェース部２６は、シリアルインターフェイスや、パラレルインタフェースを有している。撮影装置３１、及び音声出力装置３２は、インタフェース部２６を介して、システムバス２７に接続される。
【００１８】
上述のように構成される制御装置２０は、ドライバ６０を監視し、ドライバ６０の集中力が低下していると判定した場合などには、当該ドライバ６０に対してアラームを出力する。以下、本実施形態に係る運転支援装置１０の動作について、図面を参照しつつ説明する。
【００１９】
図４のフローチャートは、ＣＰＵ２１によって実行されるプログラムの一連の処理アルゴリズムに対応している。図４のフローチャートに示される一連の処理は、例えば車両のイグニッションスイッチがオンになると実行される。
【００２０】
ＣＰＵ２１は、撮影装置３１から順次送信される画像Ｐを示す画像情報ＰＤを受信すると、画像情報ＰＤによって規定される画像Ｐからドライバの顔の検出を試みる。まず、ＣＰＵ２１は、画像Ｐから、ドライバの頭部を検出するための頭部検出処理を実行する（ステップＳ１０１）。頭部検出処理では、例えば、頭部を構成する画素の輝度や、画像Ｐに写るドライバの頭部と背景との境界を示すエッジ、及び頭部と顔との境界を示すエッジなどの特徴量に基づいて、ドライバの頭部の検出が行われる。例えば、ＣＰＵ２１は、画像Ｐから検出された各エッジについて、当該エッジが頭部の輪郭である度合を示す尤度を算出し、尤度が閾値を超える場合に、画像Ｐに頭部が存在すると判断する。なお、頭部の検出は、テンプレートを用いて行ってもよい。
【００２１】
頭部検出処理を終えると、ＣＰＵ２１は、画像Ｐからドライバの顔の輪郭を検出するための顔輪郭検出処理を行う（ステップＳ１０２）。顔輪郭検出処理では、例えば、顔を構成する画素の輝度や、画像Ｐに写るドライバの顔と背景との境界を示すエッジなどの特徴量に基づいて、ドライバの顔の輪郭の検出が行われる。例えば、ＣＰＵ２１は、画像Ｐから検出された各エッジについて、当該エッジが顔の輪郭である度合を示す尤度を算出し、尤度が閾値を超える場合に、画像Ｐに顔の輪郭が存在すると判断する。なお、顔の検出は、テンプレートを用いて行ってもよい。
【００２２】
顔輪郭検出処理を終えると、ＣＰＵ２１は、画像Ｐからドライバの眼を検出するための眼検出処理を行う（ステップＳ１０３）。眼検出処理では、例えば、眼を構成する画素の輝度や、画像Ｐに写るドライバの眼と顔との境界を示すエッジなどの特徴量に基づいて、ドライバの眼の検出が行われる。例えば、ＣＰＵ２１は、画像Ｐから検出された各エッジについて、当該エッジが眼を構成する瞼や光彩の輪郭である度合を示す尤度を算出し、各エッジについての尤度の合計が閾値を超える場合に、画像Ｐに眼の画像が存在すると判断する。
【００２３】
なお、ＣＰＵ２１は、眼のテンプレートを用いて、画像Ｐからドライバの眼を検出することとしてもよい。この場合、ＣＰＵ２１は、眼を検出するためのテンプレートを、画像Ｐの上面で移動させながら、正規化相互相関を示す相関値を尤度として算出する。そして、尤度が、閾値以上で、かつ最も大きくなったときのテンプレートの位置に眼の画像が存在すると判断する。
【００２４】
次に、ＣＰＵ２１は、画像Ｐに写るドライバの顔が、ドライバの正面の顔であるか否かを判断する（ステップＳ１０４）。具体的には、ＣＰＵ２１は、ステップＳ１０１〜Ｓ１０３の処理で、画像Ｐから頭部、顔の輪郭、眼が検出されなかった場合には、画像Ｐに写るドライバの顔が、ドライバの正面の顔ではないと判断する（ステップＳ１０４：Ｎｏ）。
【００２５】
また、ステップＳ１０１〜Ｓ１０３の処理で、画像Ｐから頭部、顔の輪郭、眼が検出された場合には、顔の輪郭と眼の位置との関係に基づいて、画像Ｐに写るドライバの顔が、ドライバの正面の顔であるか否かを判断する（ステップＳ１０４）。例えば、図５に示されるように、画像Ｐにおける顔の輪郭Ｆの中心を通る直線Ｌと、２つの眼Ｍ１，Ｍ２それぞれの距離ｄ１，ｄ２とがほぼ等しいか、或いは、距離ｄ１，ｄ２の差が閾値以下である場合には、画像Ｐに写るドライバの顔が、ドライバの正面の顔であると判断する（ステップＳ１０４：Ｙｅｓ）。
【００２６】
一方、図６に示されるように、距離ｄ１，ｄ２の差が閾値以上である場合や、図７に示されるように、画像Ｐから眼が１つしか検出できなかった場合には、画像Ｐに写るドライバの顔が、ドライバの正面の顔ではないと判断する（ステップＳ１０４：Ｎｏ）。
【００２７】
ＣＰＵ２１は、画像Ｐに写るドライバの顔が、ドライバの正面の顔ではないと判断した場合には（ステップＳ１０４：Ｎｏ）、ステップＳ１０１〜Ｓ１０４の処理を繰り返し実行する。ＣＰＵ２１は、画像Ｐに写るドライバの顔が、ドライバの正面の顔であると判断した場合には（ステップＳ１０４：Ｙｅｓ）、画像Ｐからドライバの鼻を検出するための鼻検出処理を行う（ステップＳ１０５）。鼻検出処理では、例えば、鼻を構成する画素の輝度や、画像Ｐに写るドライバの鼻と顔との境界を示すエッジなどの特徴量に基づいて、ドライバの鼻の検出が行われる。なお、鼻の検出は、眼の検出と同様に、テンプレートを用いて行ってもよい。
【００２８】
鼻検出処理を終えると、ＣＰＵ２１は、画像Ｐからドライバの口を検出するための口検出処理を行う（ステップＳ１０６）。口検出処理では、例えば、口を構成する画素の輝度や、画像Ｐに写るドライバの口と顔との境界を示すエッジなどの特徴量に基づいて、ドライバの口の検出が行われる。なお、口の検出は、眼の検出と同様に、テンプレートを用いて行ってもよい。
【００２９】
次に、ＣＰＵ２１は、ドライバがマスクを着用しているか否かを判断する（ステップＳ１０７）。図８は、マスクを着用したドライバの画像Ｐを示す図である。図８に示されるように、ドライバがマスクを着用した場合には、頭部、顔の輪郭、及び眼を検出することは可能であるが、鼻、口を検出することができない。そこで、ＣＰＵ２１は、画像Ｐから、ドライバの鼻、口が検出された場合は、ドライバがマスクを着用していないと判断する（ステップＳ１０７：Ｎｏ）。一方、ＣＰＵ２１は、画像Ｐから、ドライバの鼻、口が検出されなかった場合は、ドライバがマスクを着用していると判断する（ステップＳ１０７：Ｙｅｓ）。
【００３０】
ＣＰＵ２１は、ドライバがマスクを着用していると判断した場合は（ステップＳ１０７：Ｎｏ）、第１顔検出処理を行う。また、ＣＰＵ２１は、ドライバがマスクを着用していないと判断した場合は（ステップＳ１０７：Ｙｅｓ）、第２顔検出処理を行う。第１顔検出処理は、画像Ｐに写るドライバの眼、鼻、口の画像に基づいて、ドライバの顔の向きや眼の開度を検出するための処理である。また、第２顔検出処理は、画像Ｐに写るドライバの眼の画像に基づいて、ドライバの顔の向きや眼の開度を検出するための処理である。
【００３１】
図９のフローチャートは、第１顔検出処理において、ＣＰＵ２１によって実行される一連の処理を示す。第１顔検出処理では、ＣＰＵ２１は、頭部検出処理、顔輪郭検出処理、眼検出処理、鼻検出処理、口検出処理を実行する（ステップＳ２０１〜Ｓ２０５）。
【００３２】
鼻検出処理では、ＣＰＵ２１は、例えば、画像Ｐから検出された各エッジについて、当該エッジが鼻の輪郭である度合を示す尤度を算出し、各エッジについての尤度の合計が閾値を超える場合に、画像Ｐに鼻の画像が存在すると判断する。同様に、口検出処理では、ＣＰＵ２１は、例えば、画像Ｐから検出された各エッジについて、当該エッジが口の輪郭である度合を示す尤度を算出し、各エッジについての尤度の合計が閾値を超える場合に、画像Ｐに口の画像が存在すると判断する。なお、鼻、及び口の検出は、テンプレートを用いて行ってもよい。
【００３３】
頭部検出処理、顔輪郭検出処理、眼検出処理、鼻検出処理、口検出処理では、表１を参照するとわかるように、カウンタ値ｎ１の値に基づいた検出パラメータ、或いはテンプレートを用いて処理が実行される。例えば、カウンタ値ｎ１が０である場合には、正面を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた頭部、顔の輪郭、眼、鼻、口の検出が行われる。カウンタ値ｎ１が１である場合には、斜め左を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた頭部、顔の輪郭、眼、鼻、口の検出が行われる。カウンタ値ｎ１が２である場合には、斜め右を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた頭部、顔の輪郭、眼、鼻、口の検出が行われる。カウンタ値ｎ１が３である場合には、左を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた頭部、顔の輪郭、眼、鼻、口の検出が行われる。カウンタ値ｎ１が４である場合には、右を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた頭部、顔の輪郭、眼、鼻、口の検出が行われる。
【００３４】
【表１】
2018132974.tif 000003
【００３５】
次に、ＣＰＵ２１は、画像Ｐから顔が検出されたか否かを判断する（ステップＳ２０６）。第１顔検出処理では、画像Ｐから、頭部、顔の輪郭、眼、鼻、口のいずれかが検出されなかった場合には、画像Ｐから顔が検出されなかったと判断される（ステップＳ２０６：Ｙｅｓ）。一方、画像Ｐから、頭部、顔の輪郭、眼、鼻、口が検出された場合には、画像Ｐから顔が検出されたと判断される（ステップＳ２０６：Ｎｏ）。ＣＰＵ２１は、顔が検出されたと判断した場合には（ステップＳ２０６：Ｎｏ）、検出数を示すカウンタｍの値を１繰り上げる（ステップＳ２０７）。
【００３６】
ＣＰＵ２１は、画像Ｐから顔が検出されなかったと判断した場合（ステップＳ２０６：Ｙｅｓ）、或いはステップＳ２０７の処理を終えた場合には、カウンタ値ｎ１の値を１繰り上げて（ステップＳ２０８）、カウンタ値ｎ１の値が４より大きいか否かを判断する（ステップＳ２０９）。画像Ｐについて、表１に示される５通りの検出パラメータ或いはテンプレートを用いた処理が行われていない場合には、ここでの判断は否定される（ステップＳ２０９：Ｎｏ）。この場合には、ＣＰＵ２１は、ステップＳ２０１〜Ｓ２０９の処理を繰り返し実行する。
【００３７】
一方、表１に示される５通りの検出パラメータ或いはテンプレートを用いた処理が行われた場合には、ここでの判断は肯定される（ステップＳ２０９：Ｙｅｓ）。この場合には、ＣＰＵ２１は、カウンタ値ｎ１をリセットして、検出数を示すカウンタｍが０より大きいか否かを判断する（ステップＳ２１０）。画像Ｐから１回も顔が検出されなかったと判断された場合には、ここでは判断は否定される（ステップＳ２１０：Ｎｏ）。この場合、ＣＰＵ２１は、カウンタ値ｍをリセットして第１顔検出処理を終了し、ステップＳ１０１に戻る。そして、ステップＳ１０１以降の処理を繰り返し実行する。
【００３８】
一方、画像Ｐから１回でも顔が検出されたと判断した場合には、（ステップＳ２１０：Ｙｅｓ）、カウンタ値ｍをリセットして、結果の選択を行う（ステップＳ２１１）。結果の選択は、例えば、カウンタ値ｎ１の値ごとに、各処理（ステップＳ２０１〜Ｓ２０５）における尤度の合計を求める。
【００３９】
例えば、各処理（ステップＳ２０１〜Ｓ２０５）における頭部，顔の輪郭、眼、鼻、口についての尤度をそれぞれＬＨ１，ＬＨ２，ＬＨ３，ＬＨ４，ＬＨ５とすると、カウンタ値ｎ１に対応する尤度ＬＨｎ１は、ＬＨ１〜ＬＨ５の和で示される（ＬＨｎ１＝ＬＨ１＋ＬＨ２＋ＬＨ３＋ＬＨ４＋ＬＨ５）。そこで、ＣＰＵ２１は、カウンタ値ｎ１の値（０〜４）ごとに、尤度ＬＨｎ１を演算する。そして、最も尤度ＬＨｎ１が大きいときのカウンタ値ｎ１の値を求める。次に、このカウンタ値に基づいて結果を選択する。
【００４０】
表１を参照するとわかるように、例えば、ここで求められたカウンタ値ｎ１が０である場合には、正面を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた検出結果が選択される。また、例えば、ここで求められたカウンタ値ｎ１が３である場合には、左を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた検出結果が選択される。
【００４１】
次に、ＣＰＵ２１は、選択結果に基づいて、ドライバの顔の向きの判定を行う（ステップＳ２１２）。具体的には、ＣＰＵ２１は、表１を参照するとわかるように、カウンタ値ｎ１が０のときの検出結果が選択されたときには、ドライバは正面を向いていると判定する。また、カウンタ値ｎ１が１のときの検出結果が選択されたときには、ドライバは斜め左を向いていると判定する。カウンタ値ｎ１が２のときの検出結果が選択されたときには、ドライバは斜め右を向いていると判定する。カウンタ値ｎ１が３のときの検出結果が選択されたときには、ドライバは左を向いていると判定する。カウンタ値ｎ１が４のときの検出結果が選択されたときには、ドライバは右を向いていると判定する。
【００４２】
ＣＰＵ２１は、ドライバが正面以外を向いていると判定した場合には、音声出力装置３２を駆動して、ドライバに対してアラームを発報する。
【００４３】
次に、ＣＰＵ２１は、画像Ｐを用いて、ドライバの瞼の開閉の判定を行う（ステップＳ２１２）。瞼の開閉の判定は、例えば、眼の上瞼を示すエッジと、眼の下瞼のエッジとの距離と、閾値との比較により行う。なお、眼が１個しか検出されていないときは、瞼の開閉判定を実施しない。
【００４４】
ＣＰＵ２１は、ステップＳ２１３の処理が終了すると、以降ステップＳ２０１〜Ｓ２１３の処理を繰り返し実行する。
【００４５】
また、図４のステップＳ１０７の処理で、ドライバがマスクを着用していると判断した場合は（ステップＳ１０７：Ｙｅｓ）、ＣＰＵ２１は、第２顔検出処理を行う。
【００４６】
図１０のフローチャートは、第２顔検出処理において、ＣＰＵ２１によって実行される一連の処理を示す。第２顔検出処理では、ＣＰＵ２１は、頭部検出処理、顔輪郭検出処理、眼検出処理を実行する（ステップＳ３０１〜Ｓ３０３）。第２顔検出処理では、マスクによって覆われる鼻や口の画像を検出するための処理は実行されない。
【００４７】
次に、ＣＰＵ２１は、画像Ｐから顔が検出されたか否かを判断する（ステップＳ３０４）。第２顔検出処理では、画像Ｐから、頭部、顔の輪郭、眼のいずれかが検出されなかった場合には、画像Ｐから顔が検出されなかったと判断される（ステップＳ３０４：Ｙｅｓ）。一方、画像Ｐから、頭部、顔の輪郭、眼が検出された場合には、画像Ｐから顔が検出されたと判断される（ステップＳ３０４：Ｎｏ）。ＣＰＵ２１は、顔が検出されたと判断した場合には（ステップＳ３０４：Ｎｏ）、検出数を示すカウンタｍの値を１繰り上げる（ステップＳ３０５）。
【００４８】
ＣＰＵ２１は、画像Ｐから顔が検出されなかったと判断した場合（ステップＳ３０４：Ｙｅｓ）、或いはステップＳ３０５の処理を終えた場合には、カウンタ値ｎ１の値を１繰り上げて（ステップＳ３０６）、カウンタ値ｎ１の値が４より大きいか否かを判断する（ステップＳ３０７）。画像Ｐについて、表１に示される５通りの検出パラメータ或いはテンプレートを用いた処理が行われていない場合には、ここでの判断は否定される（ステップＳ３０７：Ｎｏ）。この場合には、ＣＰＵ２１は、ステップＳ３０１〜Ｓ２０７の処理を繰り返し実行する。
【００４９】
一方、表１に示される５通りの検出パラメータ或いはテンプレートを用いた処理が行われた場合には、ここでの判断は肯定される（ステップＳ３０７：Ｙｅｓ）。この場合には、ＣＰＵ２１は、カウンタ値ｎ１をリセットして、検出数を示すカウンタｍが０より大きいか否かを判断する（ステップＳ３０８）。画像Ｐから１回も顔が検出されなかったと判断された場合には、ここでは判断は否定される（ステップＳ３０８：Ｎｏ）。この場合、ＣＰＵ２１は、カウンタ値ｍをリセットして、第１顔検出処理を終了してステップＳ１０１に戻る。そして、ステップＳ１０１以降の処理を繰り返し実行する。
【００５０】
一方、画像Ｐから１回でも顔が検出されたと判断した場合には、（ステップＳ３０８：Ｙｅｓ）、カウンタ値ｍをリセットして、結果の選択を行う（ステップＳ３０９）。結果の選択は、例えば、カウンタ値ｎ１の値ごとに、各処理（ステップＳ３０１〜Ｓ３０３）における尤度の合計を求める。
【００５１】
例えば、各処理（ステップＳ３０１〜Ｓ３０３）における頭部，顔の輪郭、眼についての尤度をそれぞれＬＨ１，ＬＨ２，ＬＨ３とすると、カウンタ値ｎ１に対応する尤度ＬＨｎ１は、ＬＨ１〜ＬＨ３の和で示される（ＬＨｎ１＝ＬＨ１＋ＬＨ２＋ＬＨ３）。そこで、ＣＰＵ２１は、カウンタ値ｎ１の値（０〜４）ごとに、尤度ＬＨｎ１を演算する。そして、最も尤度ＬＨｎ１が大きいときのカウンタ値ｎ１の値を求める。次に、このカウンタ値に基づいて結果を選択する。
【００５２】
表１を参照するとわかるように、例えば、ここで求められたカウンタ値ｎ１が０である場合には、正面を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた検出結果が選択される。また、例えば、ここで求められたカウンタ値ｎ１が３である場合には、左を向いた顔の画像に最適化された検出パラメータ、或いはテンプレートを用いた検出結果が選択される。
【００５３】
次に、ＣＰＵ２１は、選択結果に基づいて、ドライバの顔の向きの判定を行う（ステップＳ３１０）。具体的には、ＣＰＵ２１は、表１を参照するとわかるように、カウンタ値ｎ１が０のときの検出結果が選択されたときには、ドライバは正面を向いていると判定する。また、カウンタ値ｎ１が１のときの検出結果が選択されたときには、ドライバは斜め左を向いていると判定する。カウンタ値ｎ１が２のときの検出結果が選択されたときには、ドライバは斜め右を向いていると判定する。カウンタ値ｎ１が３のときの検出結果が選択されたときには、ドライバは左を向いていると判定する。カウンタ値ｎ１が４のときの検出結果が選択されたときには、ドライバは右を向いていると判定する。
【００５４】
ＣＰＵ２１は、ドライバが正面以外を向いていると判定した場合には、音声出力装置３２を駆動して、ドライバに対してアラームを発報する。
【００５５】
次に、ＣＰＵ２１は、画像Ｐを用いて、ドライバの瞼の開閉の判定を行う（ステップＳ３１１）。瞼の開閉の判定は、例えば、眼の上瞼を示すエッジと、眼の下瞼のエッジとの距離と、閾値との比較により行う。なお、眼が１個しか検出されていないときは、瞼の開閉判定を実施しない。
【００５６】
次に、ＣＰＵ２１は、ステップＳ３１２でドライバが正面を向いていると判定した場合には（ステップＳ３１２：Ｙｅｓ）、ステップＳ３０１に戻り、ステップＳ３０１〜Ｓ３１２の処理を繰り返し実行する。一方、ＣＰＵ２１は、ステップＳ３１２でドライバが正面を向いていないと判定した場合には（ステップＳ３１２：Ｎｏ）、カウンタ値ｎ２を１繰り上げて（ステップＳ３１３）、カウンタ値ｎ２が閾値Ｔｈ以上であるか否か判断する（ステップＳ３１４）。
【００５７】
撮影装置３１から順次出力される画像に基づいて、ドライバが一定回数（Ｔｈ）連続で、正面を向いていないと判断された場合には、ここでの判断が肯定される（ステップＳ３１４：Ｙｅｓ）。この場合には、ＣＰＵ２１は、カウンタ値ｎ２をリセットして第２顔検出処理を終了し、ステップＳ１０１に戻る。そして、ステップＳ１０１以降の処理を繰り返し実行する。
【００５８】
一方、撮影装置３１から順次出力される画像に基づいて、ドライバが一定回数（Ｔｈ）連続で、正面を向いていないと判断されなかった場合には、ここでの判断が否定される（ステップＳ３１４：Ｎｏ）。この場合には、ＣＰＵ２１は、ステップＳ３０１に戻り、ステップＳ３０１〜Ｓ３１４の処理を繰り返し実行する。
【００５９】
以上説明したように、本実施形態では、ドライバがマスクを着用しているか否かを判定し（ステップＳ１０７）、その判定した結果に基づいて、ドライバの顔を検出するための処理が行われる（ステップＳ１０８，Ｓ１０９）。したがって、マスクを着用しているときにも、ドライバの顔の状態を精度よく検出することができる。
【００６０】
本実施形態では、マスクを着用しているか否かの判定は、ドライバの顔が正面に向いているときの画像に基づいて行われる（ステップＳ１０４〜Ｓ１０７）。したがって、マスクの着用の有無を精度よく判定することができる。これにより、ドライバの顔の状態を精度よく検出することが可能になる。
【００６１】
本実施形態では、尤度に基づいて、複数の検出結果の中から最も確からしい検出結果が選択される（ステップＳ２１１，Ｓ３０９）。そして、選択された検出結果に基づいて、ドライバの顔の検出が行われる。したがって、ドライバの顔の状態を精度よく検出することが可能になる。
【００６２】
マスク着用した状態で、連続してドライバが正面を向いていないと判定された場合や、眼が一つしか検出できないフレームが続いている場合は、ドライバの向きを誤検出している疑いがある。本実施形態では、そのようなフレームが一定期間続いた場合には、顔検出処理が一旦中止される（ステップＳ３１４：Ｙｅｓ）。したがって、ドライバの顔の誤検出の発生を抑制することが可能になる。
【００６３】
以上、本発明の実施形態について説明したが、本発明は上記実施形態によって限定されるものではない。例えば、上記実施形態では、ドライバがマスクを着用していると判断した場合には（ステップＳ１０７：Ｙｅｓ）、画像Ｐから鼻や口の検出を行わないこととした。これに限らず、鼻や口の検出を行った結果に基づいて、ドライバの顔の向きを検出することとしてもよい。これによれば、運転中にドライバがマスクを外した場合に、ドライバの顔の向きを精度よく検出することが可能となる。
【００６４】
上記実施形態では、検出結果に応じて音声出力装置３２を動作させることとした。これに限らず、検出結果を外部機器へ出力することとしてもよい。
【００６５】
上記実施形態では、制御装置２０が、プログラムを実行するコンピュータである場合について説明した。これに限らず、制御装置２０は、図１１に示されるように、第１判断ユニット２０ａ、第２判断ユニット２０ｂ、第１状態検出ユニット２０ｃ、第２状態検出ユニット２０ｄなどのハードウエアから構成されていてもよい。
【００６６】
例えば、第１判断ユニット２０ａは、ステップＳ１０１〜Ｓ１０４の処理を実行する。第２判断ユニット２０ｂは、ステップＳ１０５〜Ｓ１０７の処理を実行する。第１状態検出ユニット２０ｃは、ステップＳ１０８の処理を実行する。第２状態検出ユニット２０ｄは、ステップＳ１０９の処理を実行する。
【００６７】
以上、本発明の実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施しうるものであり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これらの実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６８】
１０  運転支援装置
２０  制御装置
２０ａ  第１判断ユニット
２０ｂ  第２判断ユニット
２０ｃ  第１状態検出ユニット
２０ｄ  第２状態検出ユニット
２１  ＣＰＵ
２２  主記憶部
２３  補助記憶部
２４  表示部
２５  入力部
２６  インタフェース部
２７  システムバス
３１  撮影装置
３２  音声出力装置
６０  ドライバ
６１  シート
Ｆ  輪郭
Ｈ  鼻
Ｋ  口
Ｍ１，Ｍ２  眼
Ｐ  画像
ＰＤ  画像情報
【図１】
2018132974.tif 000004
【図２】
2018132974.tif 000005
【図３】
2018132974.tif 000006
【図４】
2018132974.tif 000007
【図５】
2018132974.tif 000008
【図６】
2018132974.tif 000009
【図７】
2018132974.tif 000010
【図８】
2018132974.tif 000011
【図９】
2018132974.tif 000012
【図１０】
2018132974.tif 000013
【図１１】
2018132974.tif 000014