(57)【要約】【課題】被撮影者表情に基づいて被撮影者の眼の開閉状態を判別するのに好適な眼開閉判別装置を提供する。【解決手段】コンピュータ３０は、被撮影者を撮像して得られた顔画像をカメラ１０から取得し、取得した顔画像から被撮影者の表情を推定し、当該顔画像から被撮影者の開眼度を求め、推定した被撮影者の表情に基づいて開眼度の閾値を設定し、当該開眼度が当該閾値を超えていると判別した場合に被撮影者の眼が開いていると判別し、当該開眼度が当該閾値を超えていないと判別した場合に被撮影者の眼が閉じていると判別する。【選択図】図１
2010142345.tif 000002
【特許請求の範囲】
【請求項１】
被撮影者の顔画像を取得する顔画像取得手段と、
前記顔画像取得手段により取得された顔画像から被撮影者の表情を推定する表情推定手段と、
前記顔画像取得手段により取得された顔画像から被撮影者の開眼度を求める開眼度取得手段と、
前記表情推定手段により推定された表情に基づいて開眼度の閾値を設定する閾値設定手段と、
前記開眼度取得手段により求められた開眼度が前記閾値設定手段により設定された閾値を超えていると判別した場合に被撮影者の眼が開いていると判別し、当該開眼度が当該閾値を超えていないと判別した場合に被撮影者の眼が閉じていると判別する眼開閉判別手段と、を備える、
ことを特徴とする眼開閉判別装置。
【請求項２】
前記閾値設定手段は、前記表情推定手段により推定された表情が、覚醒度が高いことを示す表情であると判別した場合に開眼度の閾値を低く設定し、前記表情推定手段により推定された表情が、覚醒度が低いことを示す表情であると判別した場合に開眼度の閾値を高く設定する、
ことを特徴とする請求項１に記載の眼開閉判別装置。
【請求項３】
前記眼開閉判別手段は、前記表情推定手段により推定された表情が、覚醒度が高いことを示す表情であると判別した場合に前記開眼度取得手段により求められた開眼度にかかわらず被撮影者の眼が開いていると判別し、前記表情推定手段により推定された表情が、覚醒度が低いことを示す表情であると判別した場合に前記開眼度取得手段により求められた開眼度にかかわらず被撮影者の眼が閉じていると判別する、
ことを特徴とする請求項１に記載の眼開閉判別装置。
【請求項４】
前記閾値設定手段は、笑っている表情、眩しい表情又は特定の方向にあるものを注視している表情を覚醒度が高いことを示す表情であると判別する、
ことを特徴とする請求項２又は３に記載の眼開閉判別装置。
【請求項５】
前記閾値設定手段は、眠そうな表情を覚醒度が低いことを示す表情であると判別する、
ことを特徴とする請求項２又は３に記載の眼開閉判別装置。
【請求項６】
前記表情推定手段により推定された表情を示す情報と、前記開眼度取得手段により求められた開眼度を示す情報とを対応付けて履歴情報として記憶する履歴情報記憶手段を備え、
前記閾値設定手段は、前記履歴情報記憶手段に記憶された履歴情報に基づいて閾値を設定する、
ことを特徴とする請求項１に記載の眼開閉判別装置。
【請求項７】
前記履歴情報記憶手段は、前記表情推定手段により推定された表情を示す情報と、前記開眼度取得手段により求められた開眼度を示す情報と、に加え、前記眼開閉判別手段により判別された判別結果を示す情報をさらに対応付けて履歴情報として記憶し、
前記閾値設定手段は、前記履歴情報記憶手段に記憶された履歴情報に基づいて閾値を設定する、
ことを特徴とする請求項６に記載の眼開閉判別装置。
【請求項８】
前記表情推定手段は、前記顔画像取得手段により取得された顔画像からニューラルネットワークを用いて被撮影者の表情を推定する、
ことを特徴とする請求項１に記載の眼開閉判別装置。
【請求項９】
前記開眼度取得手段は、前記顔画像取得手段により取得された顔画像から被撮影者の眼近傍の領域を抽出し、当該抽出した領域内の画素の輝度を二値化し、当該領域内において所定の輝度の画素が縦方向に連続する最大の画素数を開眼度として求める、
ことを特徴とする請求項１に記載の眼開閉判別装置。
【請求項１０】
コンピュータを、
被撮影者の顔画像を取得する顔画像取得手段、
前記顔画像取得手段により取得された顔画像から被撮影者の表情を推定する表情推定手段、
前記顔画像取得手段により取得された顔画像から被撮影者の開眼度を求める開眼度取得手段、
前記表情推定手段により推定された被撮影者の表情に基づいて開眼度の閾値を設定する閾値設定手段、
前記開眼度取得手段により求められた開眼度が前記閾値設定手段により設定された閾値を超えていると判別した場合に被撮影者の眼が開いていると判別し、当該開眼度が当該閾値を超えていないと判別した場合に被撮影者の眼が閉じていると判別する眼開閉判別手段、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、被撮影者の表情に基づいて被撮影者の眼の開閉状態を判別するのに好適な眼開閉判別装置及び当該眼開閉判別装置をコンピュータ上で実現するためのプログラムに関する。
【背景技術】
【０００２】
現在、車両の運転者の顔画像に基づいて運転者の眼の開閉状態を判別して、運転者の居眠り状態を検出する居眠り状態検出装置が知られている。
【０００３】
例えば、特許文献１には、光環境の変化や運転者の個人差による顔の位置の違いに対応して運転者の居眠り状態を検出する居眠り状態検出装置が開示されている。特許文献１に開示された居眠り状態検出装置は、眼の開閉を判定する際に、眼領域に含まれるラベリングされた領域の縦方向の最大連続数から眼の開度を検出し、開閉状態を判定する。
【０００４】
また、特許文献２には、運転者が眩しさを感じている状況を推定し、開閉眼判定基準値を補正することで検出、警報の精度向上を図る眼の状態検出装置が開示されている。特許文献２に開示された眼の状態検出装置は、眼の開度検出回路から出力される複数回の眼の開度値の時系列の変化の中で、眼の開度の最大値、最小値を学習して開閉眼判定基準値を設定する。そして、特許文献２に開示された眼の状態検出装置は、例えば、運転者が眩しさを感じる状態にあると判定したときは、開閉眼判定基準値を小さめに補正する。これにより、運転者が眩しさで眼を細めている場合に、眼が閉じていると誤って判定することを防止する。
【０００５】
さらに、特許文献３には、眠気状態を判定することができる眠気判定装置が開示されている。特許文献３に開示された眠気判定装置は、眼領域の画像に基づいて開眼度を算出し、シグモイド関数に基づいて、算出された開眼度に対する重み係数を求め、この重み係数を開眼度に乗算して、重み付け開眼度を算出する。そして、特許文献３に開示された眠気判定装置は、重み付け開眼度の積算値と、あらかじめ定められた第１しきい値及び第２しきい値とを比較して、眠気レベル０、１、２のいずれかであるかを判定する。特許文献３に開示された眠気判定装置によれば、開眼度を重み付けをした上で積算するため、半眼のような状態に対して、眠気への寄与を考慮して、運転者の眠気状態を判定することができる。
【０００６】
また、特許文献４には、運転開始時であることが検出され且つ眼の開眼度が変化していると判別されたときに開閉眼判定基準値を再学習する基準値補正手段を備えた眼の状態検出装置が開示されている。特許文献４に開示された眼の状態検出装置は、周囲の状況などに応じた適切なタイミングで開閉眼判定基準値を再学習する。例えば、光環境の変化により運転者が眩しい状況であると判断できる場合は、開閉眼判定基準値を再学習しない。これにより、開閉眼判定基準値が必要以上に小さくなることを防ぎ、運転者が眩しくない状態で常時開眼と判定されることを防ぐことが可能となる。
【０００７】
【特許文献１】特開平１０−１４３６６９号公報
【特許文献２】特開２０００−１９８３６９号公報
【特許文献３】特開２００８−２１２２９８号公報
【特許文献４】特許第３７６９４４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１〜４に開示された装置は、運転者の表情を考慮して運転者の眼の開閉状態を適切に判定する構成ではないため、運転者の眼の開閉状態を誤って判定してしまうことがあった。
【０００９】
例えば、特許文献１に開示された居眠り状態検出装置は、運転者の眼が細くなっているときは、上下瞼の距離が近いため、運転者の表情にかかわらず、眼が閉じた状態であると誤って判定してしまうことがあった。
【００１０】
また、特許文献２に開示された眼の状態検出装置は、眼の周りの濃度情報等からドライバーの置かれた状態を推定する装置である。このため、例えば、眼の周りが明るく映っていれば、表情に拘わらず、運転者は眩しい状態に置かれていると推定してしまうことがあった。また、逆に、眼の周りが暗ければ、運転者が眩しいと思っていても、運転者は眩しい状態に置かれていないと推定してしまうことがあった。
【００１１】
また、特許文献３に開示された眠気判定装置は、半眼のような状態を考慮して運転者の眠気レベルを判定できるものの、運転者の表情全体を考慮して眠気レベルを適切に判定できるものではなかった。
【００１２】
また、特許文献４に開示された眼の状態検出装置は、過去の状況に基づいて生成した（再学習した）開閉眼判定基準値を開閉眼判定の基準としている。このため、特許文献４に開示された眼の状態検出装置は、眼の開閉判定をする時点の運転者の表情など、眼の開閉判定をする時点の状況に対応して適切に開閉眼判定をすることができなかった。
【００１３】
本発明は、上記問題に鑑みてなされたものであり、被撮影者の表情に基づいて被撮影者の眼の開閉を判別するのに好適な眼開閉判別装置及び当該眼開閉判別装置をコンピュータ上で実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するために、本発明の第１の観点に係る眼開閉判別装置は、
被撮影者の顔画像を取得する顔画像取得手段と、
前記顔画像取得手段により取得された顔画像から被撮影者の表情を推定する表情推定手段と、
前記顔画像取得手段により取得された顔画像から被撮影者の開眼度を求める開眼度取得手段と、
前記表情推定手段により推定された表情に基づいて開眼度の閾値を設定する閾値設定手段と、
前記開眼度取得手段により求められた開眼度が前記閾値設定手段により設定された閾値を超えていると判別した場合に被撮影者の眼が開いていると判別し、当該開眼度が当該閾値を超えていないと判別した場合に被撮影者の眼が閉じていると判別する眼開閉判別手段と、を備える、
ことを特徴とする。
【００１５】
前記閾値設定手段は、前記表情推定手段により推定された表情が、覚醒度が高いことを示す表情であると判別した場合に開眼度の閾値を低く設定し、前記表情推定手段により推定された表情が、覚醒度が低いことを示す表情であると判別した場合に開眼度の閾値を高く設定してもよい。
【００１６】
前記眼開閉判別手段は、前記表情推定手段により推定された表情が、覚醒度が高いことを示す表情であると判別した場合に前記開眼度取得手段により求められた開眼度にかかわらず被撮影者の眼が開いていると判別し、前記表情推定手段により推定された表情が、覚醒度が低いことを示す表情であると判別した場合に前記開眼度取得手段により求められた開眼度にかかわらず被撮影者の眼が閉じていると判別してもよい。
【００１７】
前記閾値設定手段は、笑っている表情、眩しい表情又は特定の方向にあるものを注視している表情を覚醒度が高いことを示す表情であると判別してもよい。
【００１８】
前記閾値設定手段は、眠そうな表情を覚醒度が低いことを示す表情であると判別してもよい。
【００１９】
前記表情推定手段により推定された表情を示す情報と、前記開眼度取得手段により求められた開眼度を示す情報とを対応付けて履歴情報として記憶する履歴情報記憶手段を備え、
前記閾値設定手段は、前記履歴情報記憶手段に記憶された履歴情報に基づいて閾値を設定してもよい。
【００２０】
前記履歴情報記憶手段は、前記表情推定手段により推定された表情を示す情報と、前記開眼度取得手段により求められた開眼度を示す情報と、に加え、前記眼開閉判別手段により判別された判別結果を示す情報をさらに対応付けて履歴情報として記憶し、
前記閾値設定手段は、前記履歴情報記憶手段に記憶された履歴情報に基づいて閾値を設定してもよい。
【００２１】
前記表情推定手段は、前記顔画像取得手段により取得された顔画像からニューラルネットワークを用いて被撮影者の表情を推定してもよい。
【００２２】
前記開眼度取得手段は、前記顔画像取得手段により取得された顔画像から被撮影者の眼近傍の領域を抽出し、当該抽出した領域内の画素の輝度を二値化し、当該領域内において所定の輝度の画素が縦方向に連続する最大の画素数を開眼度として求めてもよい。
【００２３】
上記目的を達成するために、本発明のその他の観点に係るプログラムは、
コンピュータを、
被撮影者の顔画像を取得する顔画像取得手段、
前記顔画像取得手段により取得された顔画像から被撮影者の表情を推定する表情推定手段、
前記顔画像取得手段により取得された顔画像から被撮影者の開眼度を求める開眼度取得手段、
前記表情推定手段により推定された被撮影者の表情に基づいて開眼度の閾値を設定する閾値設定手段、
前記開眼度取得手段により求められた開眼度が前記閾値設定手段により設定された閾値を超えていると判別した場合に被撮影者の眼が開いていると判別し、当該開眼度が当該閾値を超えていないと判別した場合に被撮影者の眼が閉じていると判別する眼開閉判別手段、
として機能させることを特徴とする。
【発明の効果】
【００２４】
本発明にかかる眼開閉判別装置及びプログラムによれば、被撮影者の表情に基づいて被撮影者の眼の開閉状態を判別することができる。
【発明を実施するための最良の形態】
【００２５】
（第１の実施形態）
以下、本発明の第１の実施形態に係る眼開閉判別装置１００について図面を参照して説明する。
【００２６】
まず、図１を参照して本発明の第１の実施形態に係る眼開閉判別装置１００の構成について説明する。
【００２７】
図１に示すように、眼開閉判別装置１００は、ドライバーの顔を撮影して顔画像を生成するカメラ１０と、ドライバーの顔を照明する照明光源２０と、ドライバーの眼の開閉状態を判別するコンピュータ３０と、コンピュータ３０に接続された表示装置４０と、から構成される。
【００２８】
カメラ１０は、ドライバーの顔の階調画像（以下、「顔画像」とする。）を一定周期（例えば、１／３０秒）で取得し、取得した顔画像を順次出力する。カメラ１０は、ドライバーの顔とその背景とを含む顔画像を、例えば、アナログ画像信号として出力する。カメラ１０は、例えば、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）カメラ等から構成される。
【００２９】
表示装置４０は、カメラ１０により撮影された顔画像などを表示する。表示装置４０は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）又はＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）などから構成される。
【００３０】
コンピュータ３０は、カメラ１０により撮影された顔画像を処理して、その眼の開閉状態を判別する装置である。コンピュータ３０は、例えば、図２に示すように、Ａ／Ｄ（Ａｎａｌｏｇ／Ｄｉｇｉｔａｌ）変換器３１と、画像メモリ３２と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３３と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３４と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３５と、表示制御装置３６と、光源制御装置３７と、設定メモリ３８と、操作装置３９と、から構成される。
【００３１】
Ａ／Ｄ変換器３１は、カメラ１０から供給されたアナログ画像信号をディジタル画像信号に変換して、出力する。
【００３２】
画像メモリ３２は、Ａ／Ｄ変換器３１が出力したディジタル画像信号により表現された顔画像を記憶する。画像メモリ３２は、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などから構成される。
【００３３】
ＲＯＭ３３は、ＣＰＵ３４の動作を制御するためのプログラムを記憶する。また、ＲＯＭ３３は、後述する画像処理を実行するための様々な固定データを記憶する。
【００３４】
ＣＰＵ３４は、コンピュータ３０全体の動作を制御する。ＣＰＵ３４は、ＲＯＭ３３に記憶されたプログラムを実行することにより、カメラ１０により生成された顔画像を処理してドライバーの眼の開閉状態を判別する。
【００３５】
ＲＡＭ３５は、ＣＰＵ３４のワークエリアとして機能する。
【００３６】
表示制御装置３６は、ＣＰＵ３４の制御のもと、例えば、画像メモリ３２に記憶された顔画像を表示装置４０が表示可能なデータ形式に変換して、表示装置４０に供給する。
【００３７】
光源制御装置３７は、照明光源２０の点灯・消灯を制御する。
【００３８】
設定メモリ３８は、後述する表情マップやクラスタリング結果などＣＰＵ３４が顔画像を処理して眼の開閉状態を判別する際に使用するデータ（以下、「設定情報」とする。）を格納する。
【００３９】
操作装置３９は、ユーザからの操作を受け付け、操作に応じた操作信号をＣＰＵ３４に供給する。
【００４０】
次に、図３に示すフローチャートを用いて、眼開閉判別装置１００が実行する眼開閉状態判別処理について説明する。
【００４１】
眼開閉判別装置１００の電源が投入されると、コンピュータ３０内のＣＰＵ３４は、定期的（例えば、１／３０秒毎）に図３に示す眼開閉状態判別処理を実行する。
【００４２】
まず、ＣＰＵ３４は、眼開閉状態判別処理で使用する変数の初期化等を実行する（ステップＳ１０１）。
【００４３】
そして、ＣＰＵ３４は、ドライバーの顔画像を取得する（ステップＳ１０２）。具体的には、ＣＰＵ３４は、カメラ１０が出力する１フレーム分のアナログ画像信号により表現される顔画像をＡ／Ｄ変換器３１に供給し、当該Ａ／Ｄ変換器３１が出力する１フレーム分のディジタル画像信号により表現される顔画像を画像メモリ３２に記憶する。
【００４４】
次に、ＣＰＵ３４は、表情推定処理を実行する（ステップＳ１０３）。ＣＰＵ３４が実行する表情推定処理は、顔画像から表情を推定できる処理であればどんな処理でもよい。本実施形態では、コホーネント型ニューラルネットワークによって表情を推定する処理を説明する。
【００４５】
なお、コホーネント型ニューラルネットワークを用いて表情を推定する場合、どのような顔画像が入力されたときにどのような表情と推定するかをあらかじめ学習する必要がある。ここでは、ＣＰＵ３４が、表情推定処理（ステップＳ１０３）の実行に先立って実行する学習処理について、図４に示すフローチャートを参照しながら説明する。
【００４６】
ＣＰＵ３４は、学習処理で使用する変数等を初期化する（ステップＳ２０１）。また、ＣＰＵ３４は、後述する表情マップを初期化、すなわち、各ユニットのネットワーク結合重みに小さな値をランダムに与えて初期化する。
【００４７】
次に、ＣＰＵ３４は、学習用の顔画像を取得する（ステップＳ２０２）。ＣＰＵ３４は、例えば、各表情のドライバーを撮影したカメラ１０が出力する１フレーム分のアナログ画像信号により表現された顔画像をＡ／Ｄ変換器３１に供給し、当該Ａ／Ｄ変換器３１が出力する１フレーム分のディジタル画像信号により表現された顔画像を学習用の顔画像として取得する。
【００４８】
ここで、学習用の顔画像について図面を参照して説明する。
【００４９】
図５（Ａ）〜（Ｆ）に学習用の顔画像を例示する。図５（Ａ）は「無表情」のドライバーを撮影した際に得られる顔画像の一例であり、図５（Ｂ）は「怒り」を感じているドライバーを撮影した際に得られるの顔画像の一例であり、図５（Ｃ）は「眩しい」と感じているドライバーを撮影した際に得られる顔画像の一例であり、図５（Ｄ）は「眠い」と感じているドライバーを撮影した際に得られる顔画像の一例であり、図５（Ｅ）は「笑い」を感じているドライバーを撮影した際に得られる顔画像の一例であり、図５（Ｆ）は「驚き」を感じているドライバーを撮影した際に得られる顔画像の一例である。
【００５０】
ＣＰＵ３４は、図５（Ａ）〜（Ｆ）に例示するような、各表情の顔画像を取得する。なお、表情は上述した６種類の表情に限られるものではないが、理解を容易にするため、表情は上述の６種類の表情のいずれかに分類されるものとして説明する。
【００５１】
ＣＰＵ３４は、取得した学習用の顔画像を所定の形式の顔画像に正規化する（ステップＳ２０３）。例えば、ＣＰＵ３４は、取得した学習用の顔画像をグレースケール化し、両目の位置から顔の向き、顔の大きさをアフィン変換を用いて補正する。そして、ＣＰＵ３４は、鼻の位置を中心に所定の大きさ（例えば、２５６×２５６ｐｉｘｅｌ）に画像を切り出した後、所定の大きさ（例えば、６４×６４ｐｉｘｅｌ）に圧縮する。ＣＰＵ３４は、圧縮後の顔画像を画像メモリ３２に記憶する。
【００５２】
次にＣＰＵ３４は、表情マップを更新する（ステップＳ２０４）。具体的には、ＣＰＵ３４は以下の式（１）〜（４）を用いて各種の演算を実行することにより、表情マップを更新する。なお、表情マップは、取得した学習用の顔画像（以下、「入力画像」とする。）を６４（ｋ方向）×６４（ｌ方向）の画素から構成される画像として、当該入力画像と同じサイズの画像（以下、「ユニット」とする。）をｋ方向にｉ個、ｌ方向にｊ個並べてできる画像である。
【００５３】
ここで、入力画像の各画素の輝度値をｘｋｌと表し、座標が（ｉ，ｊ）のユニットの各画素の輝度値（以下、「ネットワーク結合重み」とする。）をｗｉｊｋｌと表すと、入力画像と座標が（ｉ，ｊ）のユニットとの類似度ｕｉｊは式（１）により求めることができる。そして、ＣＰＵ３４は、類似度ｕｉｊが最大のユニットを類似度最大ユニットとして特定する。
【数１】
2010142345.tif 000003
【００５４】
そして、ＣＰＵ３４は、類似度最大ユニットを中心とした近傍半径ｄ内の結合重みをｘｋｌに近づくように式（２）〜（４）を用いて修正する。ここで、ｗ’ｉｊｋｌは更新後のネットワーク結合重み、ｗｉｊｋｌは更新前のネットワーク結合重み、ｄｓは近傍半径、ｄｉとｄｊは最適整合ユニットから更新する重みまでのｉ方向とｊ方向の距離、Ｔは総学習回数、ｔは現在の学習回数、α（ｔ）は学習係数である。
【数２】
2010142345.tif 000004
【数３】
2010142345.tif 000005
【数４】
2010142345.tif 000006
【００５５】
なお、式（３）のようにｆ（Ｘ）を設定することにより、なだらかな表情変化が生じるようにしている。また、学習係数を式（３）のように設定することにより、学習が進むにつれて学習係数が小さくなるようにしている。すなわち、重みの更新量は、マップ上における類似度最大ユニットからの距離が離れるに従って減少し、かつ学習が進むにつれて減少する。
【００５６】
次に、ＣＰＵ３４は、全ての学習用の顔画像について学習したか否かを判別する（ステップＳ２０５）。ＣＰＵ３４は、現在の学習回数が総学習回数と一致するか否かを判別し、一致すると判別した場合（ステップＳ２０５：ＹＥＳ）はクラスタリング（ステップＳ２０６）に処理を移し、一致しないと判別した場合（ステップＳ２０５：ＮＯ）は顔画像取得（ステップＳ２０２）に処理を戻す。すなわち、ＣＰＵ３４は、現在の学習回数が総学習回数と一致すると判別するまでは、顔画像取得（ステップＳ２０２）から表情マップ更新（ステップＳ２０４）までの処理を繰り返すことにより表情マップの更新を繰り返す。
【００５７】
ＣＰＵ３４は、現在の学習回数が総学習回数と一致すると判別した場合（ステップＳ２０５：ＹＥＳ）はクラスタリング（ステップＳ２０６）を実行する。すなわち、ＣＰＵ３４は、学習後の表情マップを表情毎に領域化する。
【００５８】
図６は、顔画像取得（ステップＳ２０２）から表情マップ更新（ステップＳ２０４）までの処理により総学習回数分更新された表情マップを模式的に示した図である。図６に示すように、学習後の表情マップの各ユニットには表情を示すような画像が形成される。なお、学習前の表情マップ、すなわち、ＣＰＵ３４が初期化（ステップＳ２０１）を実行した直後の表情マップの各ユニットには、表情を示すような画像は形成されない。ネットワーク結合重みとしてランダムな値が割り当てられた直後だからである。
【００５９】
ＣＰＵ３４は、図６に示す表情マップに基づいて、各表情の類似度最大位置を求める。ＣＰＵ３４は、図７（Ａ）に示すような、「無表情」の顔画像の類似度最大位置５１、「怒り」の顔画像の類似度最大位置５２、「眩しい」の顔画像の類似度最大位置５３、「眠い」の顔画像の類似度最大位置５４、「笑い」の顔画像の類似度最大位置５５、「驚き」の顔画像の類似度最大位置５６、を求める。ＣＰＵ３４は、例えば、操作装置３９を介して各表情の顔画像の類似度最大位置をユーザから取得する。
【００６０】
そして、ＣＰＵ３４は、表情ｆの類似度最大位置をセントロイドベクトルＸｆとしてクラスタリングを施し、図７（Ｂ）に示すように領域化する。領域化は、表情マップ上の座標（ｉ，ｊ）のニューロンｗｉｊに対して、式（５）により得られるｄｆが最小になる表情ｆをそのニューロンｗｉｊの表情としてクラスタリングする。ＣＰＵ３４は、表情マップとクラスタリング結果とを設定情報として、設定メモリ３８に記憶する。
【数５】
2010142345.tif 000007
【００６１】
ＣＰＵ３４は、クラスタリング（ステップＳ２０６）を完了すると、表情マップとクラスタリング結果とを設定情報として設定メモリ３８に記憶して学習処理を完了する。
【００６２】
ＣＰＵ３４は、表情推定処理を実行する前に、あらかじめ以上に示した学習処理を実行しておく。
【００６３】
次に、図８に示すフローチャートを用いて、眼開閉判別装置１００が実行する表情推定処理について説明する。なお、眼開閉判別装置１００は、類似度最大位置法を用いて表情を推定するものとして説明する。
【００６４】
ＣＰＵ３４は、画像メモリに記憶された顔画像を所定の形式の顔画像に正規化する（ステップＳ３０１）。例えば、ＣＰＵ３４は、画像メモリに記憶された顔画像をグレースケール化し、両目の位置から顔の向き、顔の大きさをアフィン変換を用いて補正する。そして、ＣＰＵ３４は、鼻の位置を中心に所定の大きさ（例えば、２５６×２５６ｐｉｘｅｌ）に画像を切り出した後、所定の大きさ（例えば、６４×６４ｐｉｘｅｌ）に圧縮する。ＣＰＵ３４は、圧縮後の顔画像を画像メモリ３２に記憶する。
【００６５】
次に、ＣＰＵ３４は、類似度を取得する（ステップＳ３０２）。ＣＰＵ３４は、式（１）を用いて、画像メモリ３２に記憶された圧縮後の顔画像を入力画像として、当該入力画像と、設定メモリ３８に記憶された表情マップを構成する各ユニットとの類似度をそれぞれ求める。
【００６６】
そして、ＣＰＵ３４は、表情を特定する（ステップＳ３０３）。ＣＰＵ３４は、ステップＳ３０２で求めた類似度が最大となるユニットを求め、当該ユニットが属する領域の表情をドライバーの表情として特定する。ＣＰＵ３４は、特定した表情を示す情報（以下、「推定表情データ」とする。）をＲＡＭ３５に記憶する。
【００６７】
ＣＰＵ３４は、表情の特定（ステップＳ３０３）を完了すると、表情推定処理（ステップＳ１０３）を完了する。
【００６８】
ＣＰＵ３４は、表情推定処理（ステップＳ１０３）を完了すると、開眼度検出処理を実行する（ステップＳ１０４）。以下、図９に示すフローチャートを参照しながら開眼度検出処理について詳細に説明する。なお、運転中のドライバーの一方の眼が開眼し、他方の眼が閉眼しているということは考えにくい。そこで、理解を容易にするため、開眼度検出処理ではいずれか一方の眼についてのみ開眼度を検出するものとして説明する。
【００６９】
ＣＰＵ３４は、まず、眼位置検出処理を実行する（ステップＳ４０１）。ここで、図１０に示すフローチャートを参照しながら眼位置検出処理について詳細に説明する。ここで、図１１（Ａ）に、顔画像取得（ステップＳ１０２）で取得した顔画像の一例を示す。なお、この顔画像は、５１２ｐｉｘｅｌ（ｘ軸方向）×５１２ｐｉｘｅｌ（ｙ軸方向）、１画素について２４ｂｉｔのビットマップ形式であるものとして説明する。
【００７０】
ＣＰＵ３４は、選択した列を構成する各画素の輝度を検出する（ステップＳ５０１）。なお、図１１（Ａ）に示す例では、選択した列はＸ座標がＸａの列である。ＣＰＵ３４は、選択した列の５１２個の画素の全てについて、輝度を求める。ＣＰＵ３４は、例えば、各画素の各色（Ｒ、Ｇ、Ｂ）の階調値（０〜２５５）の平均値を求め、当該平均値を当該画素の輝度とする。
【００７１】
次に、ＣＰＵ３４は、選択した列を構成する各画素の輝度の移動平均を求める（ステップＳ５０２）。ＣＰＵ３４は、例えば、Ｙ軸方向に連続する１０個の画素の輝度の移動平均をＹ座標が小さい画素から順に算出する。図１１（Ｂ）に、Ｘ座標がＸａの列における、輝度の移動平均と、Ｙ座標との関係を示す。
【００７２】
なお、ステップＳ５０２において、輝度の移動平均を求めているのは、後述する処理において、局所的な輝度の変化の影響を小さくし、大局的な輝度の変化を捉えることを可能にするためである。
【００７３】
次に、ＣＰＵ３４は、ステップＳ５０２で求めた輝度の移動平均をＹ軸方向の位置を示す変数で微分する（ステップＳ５０３）。図１１（Ｃ）に、Ｘ座標がＸａの列における、輝度の移動平均の微分値と、Ｙ座標との関係を示す。
【００７４】
次に、ＣＰＵ３４は、輝度が極小となる座標（以下、「輝度極小ポイント」とする。）を抽出する（ステップＳ５０４）。図１１（Ｃ）に示す例では、ＣＰＵ３４は、まず、微分値が負から正に変化する輝度極小ポイントｐ１〜ｐ３を抽出する。そして、ＣＰＵ３４は、当該検出した輝度極小ポイントｐ１〜ｐ３のそれぞれについて、輝度がある程度大きく変化するポイントであるか否かを判別する。具体的には、ＣＰＵ３４は、輝度極小ポイントｐ１〜ｐ３のそれぞれについて、微分値が極小となる直前のポイントｑ１〜ｑ３を抽出し、当該ポイントｑ１〜ｑ３のそれぞれが所定の閾値Ｄｔｈ以下であるか否かを判別する。
【００７５】
図１１（Ｃ）に示す例では、閾値Ｄｔｈ以下のポイントは、ポイントｑ１とポイントｑ２であり、ポイントｑ３は閾値Ｄｔｈ以下ではない。このため、ＣＰＵ３４は、輝度極小ポイントｐ１〜ｐ３のうち、輝度極小ポイントｐ３を除外し、輝度極小ポイントｐ１を輝度極小ポイントＡ１、輝度極小ポイントｐ２を輝度極小ポイントＡ２として抽出する。
【００７６】
次に、ＣＰＵ３４は、全ての列について輝度極小ポイントが抽出が完了したか否か、すなわち、全ての列について輝度検出（ステップＳ５０１）から輝度極小ポイント抽出（Ｓ５０４）までの処理が完了したか否かを判別する（ステップＳ５０５）。ＣＰＵ３４は、全ての列について輝度極小ポイントの抽出が完了したと判別したときは（ステップＳ５０５：ＹＥＳ）、輝度極小曲線群を抽出する（ステップＳ５０６）。ＣＰＵ３４は、全ての列については輝度極小ポイントの抽出が完了していないと判別したときは（ステップＳ５０５：ＮＯ）、輝度極小ポイントの抽出が完了していない列について、輝度検出（ステップＳ５０１）から輝度極小ポイント抽出（Ｓ５０４）までの処理を実行する。
【００７７】
ＣＰＵ３４は、全ての列について輝度極小ポイントの抽出が完了したと判別すると（ステップＳ５０５：ＹＥＳ）、輝度極小曲線群を抽出する（ステップＳ５０６）。ＣＰＵ３４は、各列について抽出した輝度極小ポイントを順次プロットしていき、全ての列について抽出した輝度極小ポイントをプロットする。図１２に、抽出した全ての輝度極小ポイントの分布の例を示す。例えば、ＣＰＵ３４は、Ｘａ列において輝度極小ポイントＡ１及び輝度極小ポイントＡ２を抽出した場合、輝度極小ポイントＡ１及び輝度極小ポイントＡ２をプロットし、他の列についても同様に抽出した輝度極小ポイントをプロットする。ここで、図１２に示すように、両眉、両眼、鼻及び口付近に連続した輝度極小ポイントから構成される輝度極小曲線Ｇ１〜Ｇ６が存在する。ＣＰＵ３４は、これらの輝度極小曲線群を検出する。
【００７８】
輝度極小曲線の検出方法は任意であるが、例えば、Ｘ座標の差が１であり、Ｙ座標の差が５以内であるポイント同士を接続した場合に、接続された輝度極小ポイント数が３以上の輝度極小ポイント群を検出し、当該輝度極小ポイント群を輝度極小曲線とみなしてもよい。図１２には、Ｇ１〜６の６つの輝度極小曲線が検出された例を示している。また、ＣＰＵ３４は、輝度極小曲線の属性として、輝度極小曲線を構成する各ポイントの座標の他、輝度極小曲線の通し番号である曲線番号、輝度極小曲線を構成する輝度極小ポイント数である曲線長、輝度極小曲線を構成する全ての輝度極小ポイントのＸ座標の平均値である中心Ｘ座標、及び、輝度極小曲線を構成する全ての輝度極小ポイントのＹ座標の平均値である中心Ｙ座標等をＲＡＭ３５に記憶する。
【００７９】
次に、ＣＰＵ３４は、各輝度極小曲線の属性をもとにして眼の位置を検出する（ステップＳ５０７）。眼の位置を検出する方法は任意であるが、例えば、一般的な眼の特徴をもとにして、ステップＳ５０６で求めた輝度極小曲線群の中から眼の特徴をよく表している輝度極小曲線を抽出し、当該輝度極小曲線の属性から眼の位置を求める。
【００８０】
例えば、「眼は横に長い」、「眼は上に凸型の弓形形状である」、「眼の横方向の位置は顔の中心から離れている」、「眼は眉の下に存在する」などの条件を設定する。このような条件を設定する場合、ＣＰＵ３４は、「眼は横に長い」という条件に基づいて、例えば、曲線長が５以上の輝度極小曲線を抽出する。そして、ＣＰＵ３４は、「眼は上に凸型の弓形形状」という条件に基づいて、例えば、輝度極小曲線を構成する輝度極小ポイントのうち最もＸ座標が小さい輝度極小ポイントのＹ座標と輝度極小曲線を構成する輝度極小ポイントのうち最もＸ座標が大きい輝度極小ポイントのＹ座標とが共に中心Ｙ座標よりも大きい輝度極小曲線を抽出する。
【００８１】
また、ＣＰＵ３４は、「眼の横方向の位置は顔の中心から離れている」という条件に基づいて、例えば、ステップＳ５０４で求めた全輝度極小ポイントの重心のＸ座標と中心Ｘ座標との差が１０以上の曲線を抽出する。さらに、ＣＰＵ３４は、「眼は眉の下に存在する」という条件に基づいて、例えば、互いに中心Ｘ座標の差が５以内の輝度極小曲線が２つ存在する場合、中心Ｙ座標が大きい方の輝度極小曲線を抽出する。
【００８２】
以上のようにして、ＣＰＵ３４は、輝度極小曲線群から眼に相当する輝度極小曲線を抽出し、眼の位置を検出する。例えば、図１２に示す例では、ＣＰＵ３４は、右眼を表す輝度極小曲線として輝度極小曲線Ｇ３を抽出し、左眼を表す輝度極小曲線として輝度極小曲線Ｇ４を抽出する。そして、ＣＰＵ３４は、輝度極小曲線Ｇ３の中心Ｘ座標及び中心Ｙ座標から構成される座標を右眼の中心位置として設定し、輝度極小曲線Ｇ４の中心Ｘ座標及び中心Ｙ座標から構成される座標を左眼の中心位置として設定する。ＣＰＵ３４は、目の位置検出（ステップＳ５０７）を完了すると、眼位置検出処理を完了する。
【００８３】
ＣＰＵ３４は、眼位置検出処理（ステップＳ４０１）を完了すると、眼を含む所定範囲（以下、「眼近傍領域」とする。）を設定する（ステップＳ４０２）。ＣＰＵ３４は、例えば、眼位置検出処理（ステップＳ４０１）で眼に相当する輝度極小曲線として抽出した輝度極小曲線の属性に基づいて、眼近傍領域を設定する。具体的には、例えば、ＣＰＵ３４は、Ｘ座標が当該輝度極小曲線の中心Ｘ座標と５０以内であって、Ｙ座標が当該輝度極小曲線の中心Ｙ座標と２０以内である領域を眼近傍領域に設定する。
【００８４】
次に、ＣＰＵ３４は、二値化処理を実行する（ステップＳ４０３）。二値化処理については、図１３に示すフローチャートを参照して説明する。
【００８５】
二値化処理では、まず、ＣＰＵ３４は、選択した列を構成する各画素の輝度を検出する（ステップＳ６０１）。ＣＰＵ３４は、選択した列の全ての画素について、各画素の各色の階調値の平均値を求め、当該平均値を当該画素の輝度とする。ここで、図１４（Ａ）は、眼近傍領域の画像の一例を示す。ＣＰＵ３４は、列毎に輝度検出（ステップＳ６０１）から輝度極小ポイント抽出（ステップＳ６０４）までの処理を実行する。図１４（Ａ）に示す例では、選択した列はＸ座標がＸｂの列である。
【００８６】
次に、ＣＰＵ３４は、選択した列を構成する各画素の輝度の移動平均を求める（ステップＳ６０２）。ＣＰＵ３４は、例えば、Ｙ軸方向に連続する１０個の画素の輝度の移動平均をＹ座標が小さい画素から順に算出する。図１４（Ｂ）に、Ｘ座標がＸｂの列における、輝度の移動平均と、Ｙ座標との関係を示す。
【００８７】
次に、ＣＰＵ３４は、ステップＳ６０２で求めた輝度の移動平均をＹ軸方向の位置を示す変数で微分する（ステップＳ６０３）。図１４（Ｃ）に、Ｘ座標がＸｂの列における、輝度の移動平均の微分値と、Ｙ座標との関係を示す。
【００８８】
次に、ＣＰＵ３４は、輝度極小ポイントを抽出する（ステップＳ６０４）。図１４（Ｃ）に示す例では、ＣＰＵ３４は、まず、微分値が負から正に変化する輝度極小ポイントＰを抽出する。そして、ＣＰＵ３４は、当該検出した輝度極小ポイントＰについて、輝度がある程度大きく変化するポイントであるか否かを判別する。具体的には、ＣＰＵ３４は、輝度極小ポイントＰについて、微分値が極小となる直前のポイントＲと微分値が極大となる直後のポイントＱとを抽出し、ポイントＲが所定の閾値Ｄｔｈｍ以下であるか否かを判別するとともに、ポイントＱが所定の閾値Ｄｔｈｐ以上であるか否かを判別する。
【００８９】
図１４（Ｃ）に示す例では、ポイントＲが所定の閾値Ｄｔｈｍ以下であり、ポイントＱが所定の閾値Ｄｔｈｐ以上である。このため、ＣＰＵ３４は、輝度極小ポイントＰは、輝度がある程度大きく変化するポイントであると判別し、ポイントＲの移動平均ＮｂｌとポイントＱの移動平均ＮｂｈとをＲＡＭ３５に記憶する。
【００９０】
次に、ＣＰＵ３４は、全ての列について輝度極小ポイントが抽出が完了したか否か、すなわち、全ての列について輝度検出（ステップＳ６０１）から輝度極小ポイント抽出（Ｓ６０４）までの処理が完了したか否かを判別する（ステップＳ６０５）。ＣＰＵ３４は、全ての列について輝度極小ポイントの抽出が完了したと判別したときは（ステップＳ６０５：ＹＥＳ）、二値化の閾値を設定する（ステップＳ６０６）。ＣＰＵ３４は、全ての列については輝度極小ポイントの抽出が完了していないと判別したときは（ステップＳ６０５：ＮＯ）、輝度極小ポイントの抽出が完了していない列について、輝度検出（ステップＳ６０１）から輝度極小ポイント抽出（Ｓ６０４）までの処理を実行する。
【００９１】
ＣＰＵ３４は、全ての列について輝度極小ポイントの抽出が完了したと判別すると（ステップＳ６０５：ＹＥＳ）、二値化の閾値を設定する（ステップＳ６０６）。ＣＰＵ３４は、各列について抽出したポイントＲの移動平均Ｎ＿ｌとポイントＱの移動平均Ｎ＿ｈとに基づいて二値化の閾値を設定する。二値化の閾値の設定方法は任意であるが、例えば以下の（ａ）〜（ｇ）のように設定する方法がある。
【００９２】
（ａ）各列のポイントＲの移動平均Ｎ＿ｌの最小値を基準にして二値化の閾値を設定する。（ｂ）各列のポイントＲの移動平均Ｎ＿ｌの最大値を基準にして二値化の閾値を設定する。（ｃ）各列のポイントＱの移動平均Ｎ＿ｈの最小値を基準にして二値化の閾値を設定する。（ｄ）各列のポイントＱの移動平均Ｎ＿ｈの最大値を基準にして二値化の閾値を設定する。（ｅ）各列のポイントＲの移動平均Ｎ＿ｌの平均値を基準にして二値化の閾値を設定する。（ｆ）各列のポイントＱの移動平均Ｎ＿ｈの平均値を基準にして二値化の閾値を設定する。（ｇ）各列のポイントＲの移動平均Ｎ＿ｌと各列のポイントＱの移動平均Ｎ＿ｈの平均値を基準にして二値化の閾値を設定する。
【００９３】
次に、ＣＰＵ３４は、二値化閾値設定（ステップＳ６０６）で求めた閾値に基づいて、眼近傍領域の画像を二値化する（ステップＳ６０７）。ＣＰＵ３４は、二値化により眼近傍領域の二値化画像（黒領域と白領域とから構成される画像）を求める。ＣＰＵ３４は、二値化画像を生成すると、二値化処理（ステップＳ４０３）を完了する。
【００９４】
次に、ＣＰＵ３４は、二値化画像をラベリングする（ステップＳ４０４）。ＣＰＵ３４は、二値化処理（ステップＳ４０３）で生成した二値化画像に対して、黒領域を対象としてラベリングし、１つ以上の黒領域（以下、「ラベルデータ」とする。）を求める。
【００９５】
ＣＰＵ３４は、ラベルデータが複数存在すると判別した場合、ラベルデータを選択する（ステップＳ４０５）。ドライバーが眼鏡をかけている場合などは、ラベリングにより、眼に相当するラベルデータの他、眼鏡に相当するラベルデータなど、複数のラベルデータが検出されることがある。この場合、ＣＰＵ３４は、複数のラベルデータの中から眼に相当するラベルデータを選択する必要がある。
【００９６】
眼に相当するラベルデータを選択する方法は任意であるが、例えば、ＣＰＵ３４は、眼近傍領域の上端及び下端に接していないラベルデータの中で、面積が最大のラベルデータを眼に相当するラベルデータとして選択することができる。
【００９７】
そして、ＣＰＵ３４は、ラベルデータの最大連続数を検出する（ステップＳ４０６）。ＣＰＵ３４は、ラベルデータ選択（ステップＳ４０５）で選択したラベルデータについて、Ｙ軸方向に最も長く黒画素が連続する最大連続数を求める。ＣＰＵ３４は、求めた最大連続数を眼開度として表情推定データと対応付けてＲＡＭ３５に記憶する。ＣＰＵ３４は、ラベルデータの最大連続数の検出を完了すると開眼度検出処理（ステップＳ１０４）を完了する。
【００９８】
次に、ＣＰＵ３４は、ドライバーの表情が笑っている表情であるか否かを判別する（ステップＳ１０５）。具体的には、ＣＰＵ３４は、表情特定（ステップＳ３０３）において、ＲＡＭ３５に記憶された推定表情データに基づいてドライバーの表情が笑っている表情であるか否かを判別する。
【００９９】
ＣＰＵ３４は、ドライバーの表情が笑っている表情であると判別した場合（ステップＳ１０５：ＹＥＳ）、笑っている表情用の閾値を設定する（ステップＳ１０６）。
【０１００】
なお、ＣＰＵ３４は、ＲＡＭ３５にあらかじめ記憶された各表情用の閾値を読み出すようにしてもよいし、ＲＡＭ３５にあらかじめ記憶された開眼度の履歴に基づいて閾値を求めるようにしてもよい。
【０１０１】
ドライバーが笑っている表情をしているときは、ドライバーの覚醒度は高いと推定できる。このため、笑っている表情用の閾値には小さい値を設定する。例えば、ＣＰＵ３４は、ＲＡＭ３５に記憶された開眼度の履歴のうち笑っている表情のときに検出した開眼度の平均値を求め、当該平均値の１／４の値を笑っている表情用の閾値として設定する。
【０１０２】
一方、ＣＰＵ３４は、ドライバーの表情が笑っている表情ではないと判別した場合（ステップＳ１０５：ＮＯ）、ドライバーの表情が眩しい表情であるか否かを判別する（ステップＳ１０７）。
【０１０３】
ＣＰＵ３４は、ドライバーの表情が眩しい表情であると判別した場合（ステップＳ１０７：ＹＥＳ）、眩しい表情用の閾値を設定する（ステップＳ１０８）。
【０１０４】
ドライバーが眩しい表情をしているときは、ドライバーの覚醒度はある程度高いと推定できる。このため、眩しい表情用の閾値にはある程度小さい値を設定する。例えば、ＣＰＵ３４は、ＲＡＭ３５に記憶された開眼度の履歴のうち眩しい表情のときに検出した開眼度の平均値を求め、当該平均値の１／２の値を眩しい表情用の閾値として設定する。
【０１０５】
また、ＣＰＵ３４は、ドライバーの表情が眩しい表情ではないと判別した場合（ステップＳ１０７：ＮＯ）、ドライバーの表情が眠い表情であるか否かを判別する（ステップＳ１０９）。
【０１０６】
ＣＰＵ３４は、ドライバーの表情が眠い表情であると判別した場合（ステップＳ１０９：ＹＥＳ）、眠い表情用の閾値を設定する（ステップＳ１１０）。
【０１０７】
ドライバーが眠い表情をしているときは、ドライバーの覚醒度は低いと推定できる。このため、眠い表情用の閾値には大きい値を設定する。例えば、ＣＰＵ３４は、ＲＡＭ３５に記憶された開眼度のうち閉眼状態と判別されたときの開眼度の平均値を求め、当該平均値とＲＡＭ３５に記憶された開眼度の最大値との中間値を求め、当該中間値とＲＡＭ３５に記憶された開眼度の最大値との中間値を眠い表情用の閾値として設定する。
【０１０８】
一方、ＣＰＵ３４は、ドライバーの表情が眠い表情ではないと判別した場合（ステップＳ１０９：ＮＯ）、通常の表情用の眼開度の閾値を設定する（ステップＳ１１１）。
【０１０９】
例えば、ＣＰＵ３４は、ＲＡＭ３５に記憶された開眼度のうち閉眼状態と判別されたときの開眼度の平均値を求め、当該平均値とＲＡＭ３５に記憶された開眼度の最大値との中間値を通常の表情用の閾値として設定する。
【０１１０】
ＣＰＵ３４は、各表情用の閾値の設定が完了すると（ステップＳ１０６、ステップＳ１０８、ステップＳ１１０、ステップＳ１１１）、眼開度が設定した閾値以上であるか否かを判別する（ステップＳ１１２）。
【０１１１】
ＣＰＵ３４は、眼開度が閾値以上であると判別した場合（ステップＳ１１２：ＹＥＳ）、ドライバーは開眼状態であると判定し、ドライバーが開眼状態であることを示すデータを開眼度と対応付けてＲＡＭ３５に記憶する（ステップＳ１１３）。一方、ＣＰＵ３４は、眼開度が閾値以上ではないと判別した場合（ステップＳ１１２：ＮＯ）、ドライバーは閉眼状態であると判定し、ドライバーが閉眼状態であることを示すデータを開眼度と対応付けてＲＡＭ３５に記憶する（ステップＳ１１４）。ＣＰＵ３４は、ドライバーの眼の開閉状態の判定を完了すると（ステップＳ１１３、ステップＳ１１４）、眼開閉状態判別処理を完了する。
【０１１２】
上述のように、本発明の第１の実施形態に係る眼開閉判別装置１００は、ドライバーの表情に基づいてドライバーの眼の開閉状態を判別する。具体的には、眼開閉判別装置１００は、ドライバーの表情を推定し、当該推定したドライバーの表情に基づいて眼の開閉状態を判別する際の閾値を変更する。すなわち、推定したドライバーの表情が、覚醒度が高いと考えられる表情である場合には閾値を低く設定し、覚醒度が低いと考えられる表情である場合には閾値を高く設定する。このように、眼開閉判別装置１００は、ドライバーの表情に応じて変化する眼の状態の変化に対応した眼の開閉状態の判別をする。このため、ドライバーの眼の開閉状態の誤判定を減らすことが期待できる。
【０１１３】
（第２の実施形態）
第１の実施形態に係る眼開閉判別装置１００は、ドライバーの表情がどのような表情であっても、眼開度を検出するとともに眼開度の閾値を設定し、検出した眼開度が閾値以上であるか否かを判別していた。しかし、ドライバーの表情が覚醒度が高い（又は、低い）と推定できる表情である場合には、眼開度を検出することなく、開眼判定（又は、閉眼判定）するようにしても良い。
【０１１４】
以下、図１５に示すフローチャートを用いて、第２の実施形態に係る眼開閉判別装置１００が実行する眼開閉状態判別処理について説明する。なお、第２の実施形態に係る眼開閉判別装置１００は、第１の実施形態に係る眼開閉判別装置１００と同様の構成であるため、構成の説明は省略する。
【０１１５】
眼開閉判別装置１００の電源が投入されると、コンピュータ３０内のＣＰＵ３４は、定期的（例えば、１／３０秒毎）に図１５に示す眼開閉状態判別処理を実行する。
【０１１６】
まず、ＣＰＵ３４は、眼開閉状態判別処理で使用する変数の初期化等を実行する（ステップＳ７０１）。
【０１１７】
そして、ＣＰＵ３４は、ドライバーの顔画像を取得する（ステップＳ７０２）。具体的には、ＣＰＵ３４は、カメラ１０が出力する１フレーム分のアナログ画像信号により表現される顔画像をＡ／Ｄ変換器３１に供給し、当該Ａ／Ｄ変換器３１が出力する１フレーム分のディジタル画像信号により表現される顔画像を画像メモリ３２に記憶する。
【０１１８】
次に、ＣＰＵ３４は、表情推定処理を実行する（ステップＳ７０３）。すなわち、眼開閉判別装置１００は、図８のフローチャートに示す表情推定処理と同様の処理を実行することにより、ドライバーの表情を推定する。
【０１１９】
ＣＰＵ３４は、表情推定処理（ステップＳ７０３）を完了すると、ドライバーの表情が笑っている表情であるか否かを判別する（ステップＳ７０４）。具体的には、ＣＰＵ３４は、表情特定（ステップＳ３０３）において、ＲＡＭ３５に記憶された推定表情データに基づいてドライバーの表情が笑っている表情であるか否かを判別する。
【０１２０】
ドライバーが笑っている表情をしているときは、ドライバーの覚醒度は高いと推定できる。このため、ＣＰＵ３４は、ドライバーの表情が笑っている表情であると判別した場合（ステップＳ７０４：ＹＥＳ）、直ちに開眼判定し、ドライバーが開眼状態であることを示すデータを開眼度と対応付けてＲＡＭ３５に記憶する（ステップＳ７１３）。
【０１２１】
一方、ＣＰＵ３４は、ドライバーの表情が笑っている表情ではないと判別した場合（ステップＳ７０４：ＮＯ）、開眼度検出処理を実行する（ステップＳ７０６）。なお、ＣＰＵ３４がステップＳ７０６で実行する開眼度検出処理は、図９のフローチャートに示す開眼度検出処理と同様の処理であるため説明を省略する。
【０１２２】
ＣＰＵ３４は、開眼度検出処理（ステップＳ７０６）を完了すると、ドライバーの表情が眩しい表情であるか否かを判別する（ステップＳ７０７）。
【０１２３】
ＣＰＵ３４は、ドライバーの表情が眩しい表情であると判別した場合（ステップＳ７０７：ＹＥＳ）、眩しい表情用の眼開度の閾値を設定する（ステップＳ７０８）。
【０１２４】
ドライバーが眩しい表情をしているときは、ドライバーの覚醒度はある程度高いと推定できる。このため、眩しい表情用の閾値にはある程度小さい値を設定する。例えば、ＣＰＵ３４は、ＲＡＭ３５に記憶された開眼度の履歴のうち眩しい表情のときに検出した開眼度の平均値を求め、当該平均値の１／２の値を眩しい表情用の閾値として設定する。
【０１２５】
また、ＣＰＵ３４は、ドライバーの表情が眩しい表情ではないと判別した場合（ステップＳ７０７：ＮＯ）、ドライバーの表情が眠い表情であるか否かを判別する（ステップＳ７０９）。
【０１２６】
ＣＰＵ３４は、ドライバーの表情が眠い表情であると判別した場合（ステップＳ７０９：ＹＥＳ）、眠い表情用の眼開度の閾値を設定する（ステップＳ７１０）。
【０１２７】
ドライバーが眠い表情をしているときは、ドライバーの覚醒度は低いと推定できる。このため、眠い表情用の閾値には大きい値を設定する。例えば、ＣＰＵ３４は、ＲＡＭ３５に記憶された開眼度のうち閉眼状態と判別されたときの開眼度の平均値を求め、当該平均値とＲＡＭ３５に記憶された開眼度の最大値との中間値を求め、当該中間値とＲＡＭ３５に記憶された開眼度の最大値との中間値を眠い表情用の閾値として設定する。
【０１２８】
一方、ＣＰＵ３４は、ドライバーの表情が眠い表情ではないと判別した場合（ステップＳ７０９：ＮＯ）、通常の表情用の眼開度の閾値を設定する（ステップＳ７１１）。
【０１２９】
例えば、ＣＰＵ３４は、ＲＡＭ３５に記憶された開眼度のうち閉眼状態と判別されたときの開眼度の平均値を求め、当該平均値とＲＡＭ３５に記憶された開眼度の最大値との中間値を通常の表情用の閾値として設定する。
【０１３０】
ＣＰＵ３４は、各表情用の閾値の設定が完了すると（ステップＳ７０８、ステップＳ７１０、ステップＳ７１１）、眼開度が閾値以上であるか否かを判別する（ステップＳ７１２）。
【０１３１】
ＣＰＵ３４は、開眼度が閾値以上であると判別した場合（ステップＳ７１２：ＹＥＳ）、ドライバーは開眼状態であると判定し、ドライバーが開眼状態であることを示すデータを開眼度と対応付けてＲＡＭ３５に記憶する（ステップＳ７１３）。一方、ＣＰＵ３４は、開眼度が閾値以上ではないと判別した場合（ステップＳ７１２：ＮＯ）、ドライバーは閉眼状態であると判定し、ドライバーが閉眼状態であることを示すデータを開眼度と対応付けてＲＡＭ３５に記憶する（ステップＳ７１４）。ＣＰＵ３４は、ドライバーの眼の開閉状態の判定を完了すると（ステップＳ７１３、ステップＳ７１４）、眼開閉状態判別処理を完了する。
【０１３２】
上述のように、本発明の第２の実施形態に係る眼開閉判別装置１００は、ドライバーの覚醒度が高いと考えられる表情であると推定した場合には、眼開度を検出することなく開眼判定する。このため、眼開閉状態判別処理の処理時間を短縮することができる。なお、本実施形態では、ドライバーの表情が笑っている表情である場合に、ドライバーの覚醒度が高いと推定した。しかし、ドライバーの覚醒度が高いと推定できる表情は、笑っている表情に限られず、例えば、眩しい表情である場合にドライバーの覚醒度が高いと推定してもよい。また、ドライバーの覚醒度が低いと推定した場合に、開眼度を検出することなく閉眼判定してもよい。
【０１３３】
（第３の実施形態）
第１、２の実施形態に係る眼開閉判別装置１００は、コホーネント型ニューラルネットワークによって表情を推定した。しかし、ドライバーの表情を推定する方法は、コホーネント型ニューラルネットワークを用いた方法に限らず、例えば、フィードフォワードニューラルネットワークを用いた方法であってもよい。
【０１３４】
まず、図１６に示すフローチャートを参照しながらフィードフォワードニューラルネットワークの学習処理について説明する。
【０１３５】
ＣＰＵ３４は、学習処理で使用する変数等を初期化する（ステップＳ８０１）。また、ＣＰＵ３４は、後述する各係数に小さな値をランダムに与えて初期化する。
【０１３６】
次に、ＣＰＵ３４は、学習用の顔画像を取得する（ステップＳ８０２）。ＣＰＵ３４は、例えば、カメラ１０が出力する１フレーム分のアナログ画像信号により表現された顔画像をＡ／Ｄ変換器３１に供給し、当該Ａ／Ｄ変換器３１が出力する１フレーム分のディジタル画像信号により表現された顔画像を学習用の顔画像として取得する。また、ＣＰＵ３４は、当該取得した顔画像の表情がどのような表情であるかを示す実表情データを取得する。ＣＰＵ３４は、例えば、実表情データを操作装置３９を介してユーザから取得する。
【０１３７】
ＣＰＵ３４は、取得した学習用の顔画像を所定の形式の顔画像に補正する（ステップＳ８０３）。例えば、ＣＰＵ３４は、取得した学習用の顔画像をグレースケール化し、両目の位置から顔の向き、顔の大きさをアフィン変換を用いて補正し、補正後の顔画像を画像メモリ３２に記憶する。
【０１３８】
次に、ＣＰＵ３４は、補正後の顔画像から特徴部分を抽出する（ステップＳ８０４）。ＣＰＵ３４は、ドライバーの表情により大きく変化する、眼、眉、口などの特徴部分を補正後の顔画像から抽出し、抽出した特徴部分の画像を画像メモリ３２に記憶する。
【０１３９】
そして、ＣＰＵ３４は、抽出した特徴部分の画像に基づいて当該特徴部分の特徴量を取得する（ステップＳ８０５）。ＣＰＵ３４は、例えば、眼の開度、眉の角度、口の開度などを特徴量として抽出する。
【０１４０】
そして、ＣＰＵ３４は、フィードフォワードニューラルネットワークにおける各演算の係数を補正する（ステップＳ８０６）。なお、本実施形態では、フィードフォワードニューラルネットワークとして、多層パーセプトロンを採用する。ここで、フィードフォワードニューラルネットワークについて、図１７を参照しながら簡単に説明する。
【０１４１】
図１７に示すように、フィードフォワードニューラルネットワークは、入力層、中間層及び出力層の３つの層から構成される。図１７に示す例では、入力層は３つのノードから構成され、中間層は４つのノードから構成され、出力層は３つのノードから構成される。
【０１４２】
ここで、入力層を構成するノードに特徴量を説明変数（独立変数）として供給すると、これらの説明変数に基づいて目的変数（従属変数）が算出され、当該目的変数が出力層を構成するノードから出力される。以下に、どのようにして、説明変数から目的変数を算出するかを説明する。
【０１４３】
説明変数が、眼の開度Ｘ１、眉の角度Ｘ２、口の開度Ｘ３、の３つであり、目的変数が、眠い表情との類似度Ｙ１、眩しい表情との類似度Ｙ２、笑っている表情との類似度Ｙ３、の３つである場合、例えば、以下の式（６）〜（８）に示す関係が成立するようにフィードフォワードニューラルネットワークを構成する。なお、ａ１１、ａ１２、ａ１３、ａ２１、ａ２２、ａ２３、ａ３１、ａ３２、ａ３３、は各説明変数を重み付けする係数である。
【数６】
2010142345.tif 000008
【数７】
2010142345.tif 000009
【数８】
2010142345.tif 000010
【０１４４】
ＣＰＵ３４は、説明変数と、目的変数と、ステップＳ８０２でユーザから取得した実表情データとに基づいて、各係数を補正する。具体的には、ＣＰＵ３４は、３つの目的変数のうち実表情データにより示される表情との類似度を示す目的変数の値が大きくなるように各係数を補正する。例えば、実表情データにより示される表情が笑っている表情である場合、笑っている表情との類似度Ｙ３が大きくなるように各係数を補正する。
【０１４５】
次に、ＣＰＵ３４は、全画像分学習したか否かを判別する（ステップＳ８０７）。ＣＰＵ３４は、現在の学習回数が総学習回数と一致するか否かを判別し、一致すると判別した場合（ステップＳ８０７：ＹＥＳ）は各係数を設定情報として設定メモリ３８に記憶して学習処理を完了し、一致しないと判別した場合（ステップＳ８０７：ＮＯ）は顔画像取得（ステップＳ８０２）に処理を戻す。すなわち、ＣＰＵ３４は、現在の学習回数が総学習回数と一致すると判別するまでは、顔画像取得（ステップＳ８０２）から係数補正（ステップＳ８０６）までの処理を繰り返すことにより係数の補正を繰り返す。
【０１４６】
ＣＰＵ３４は、表情推定処理を実行する前に、あらかじめ以上に示した学習処理を実行しておく。
【０１４７】
次に、図１８に示すフローチャートを用いて、本発明の第３の実施形態に係る眼開閉判別装置１００が実行する表情推定処理について説明する。
【０１４８】
ＣＰＵ３４は、画像メモリに記憶された顔画像を所定の形式の顔画像に補正する（ステップＳ９０１）。例えば、ＣＰＵ３４は、画像メモリに記憶された顔画像をグレースケール化し、両目の位置から顔の向き、顔の大きさをアフィン変換を用いて補正し、補正後の顔画像を画像メモリ３２に記憶する。
【０１４９】
次に、ＣＰＵ３４は、補正後の顔画像から特徴部分を抽出する（ステップＳ９０２）。ＣＰＵ３４は、ドライバーの表情により大きく変化する、眼、眉、口などの特徴部分を補正後の顔画像から抽出し、抽出した特徴部分の画像を画像メモリ３２に記憶する。
【０１５０】
そして、ＣＰＵ３４は、抽出した特徴部分の画像に基づいて当該特徴部分の特徴量を取得する（ステップＳ９０３）。ＣＰＵ３４は、例えば、眼の開度、眉の角度、口の開度などを特徴量として抽出する。
【０１５１】
そして、ＣＰＵ３４は、表情を特定する（ステップＳ９０４）。ＣＰＵ３４は、ステップＳ９０３で抽出した特徴量に基づいて各表情との類似度を求め、求めた類似度が最も高い表情をドライバーの表情として特定する。ＣＰＵ３４は、特定した表情を示す情報を推定表情データとしてＲＡＭ３５に記憶する。
【０１５２】
ＣＰＵ３４は、表情の特定（ステップＳ９０４）を完了すると、表情推定処理（ステップＳ７０３）を完了する。
【０１５３】
第３の実施形態に係る眼開閉判別装置１００は、フィードフォワードニューラルネットワークを用いてドライバーの表情を推定した。この場合であっても、推定したドライバーの表情からドライバーの覚醒状態を推定することができ、ドライバーの眼の開閉状態の誤判定を減らすことが期待できる。このように、本発明に係る眼開閉判別装置１００は、ドライバーの表情を推定する手法は問わない。
【０１５４】
（変形例）
第１〜３の実施形態に係る眼開閉判別装置１００は、推定した表情がどのような表情であるかにより閾値を変更した。しかし、推定した表情からドライバーの覚醒度を求め、当該覚醒度に応じた閾値を設定するようにしてもよい。例えば、第３の実施形態に係る眼開閉判別装置１００は、ｂ１＜０、０＜ｂ２＜ｂ３として、ｂ１Ｙ１＋ｂ２Ｙ２＋ｂ３Ｙ３を覚醒度として求め、当該覚醒度に応じて閾値を設定する。
【０１５５】
上記第１〜３の実施形態においては、眼開閉判別装置１００は、ニューラルネットワークによって表情を推定した。しかし、表情を推定する手法は顔画像から表情を推定するものであれば、ニューラルネットワークによるものに限られない。
【０１５６】
また、開眼度を求める手法も、第１の実施形態において示した手法に限られず任意の手法をとることができる。
【０１５７】
上記第１〜３の実施形態においては、ＣＰＵ３４は、ドライバーを撮像して得られた顔画像をカメラ１０から取得して、処理する例を示した。しかしながら、ＣＰＵ３４は、ドライバーを撮像して得られた顔画像があらかじめ記憶されている画像メモリ３２から顔画像を取得して、処理してもよい。このように、眼開閉判別装置は、カメラを備えていなくてもよい。
【０１５８】
上記第１の実施形態においては、ドライバーの表情が、ドライバーの覚醒度が一般的に高いと考えられる表情（例えば、笑っている表情、眩しい表情）である場合に開眼度の閾値に小さい値を設定し、ドライバーの覚醒度が一般的に低いと考えられる表情（例えば、眠い表情）である場合に開眼度の閾値に大きな値を設定した。しかしながら、ドライバーの表情がどのような表情である場合に、ドライバーの覚醒度が高い（若しくは低い）と判別するかは、任意に設定することができる。
【０１５９】
例えば、ドライバーが特定の物（例えば、スピードメータ、タコメータ、オイルゲージなどの計器類）や人（助手席にいる人）などを注視していると考えられる表情をしている場合には、ドライバーの覚醒度が高いと判別して、開眼度の閾値を低く設定することができる。以下、図１９に示すフローチャートを用いて、本変形例に係る眼開閉判別装置１００が実行する眼開閉状態判別処理について説明する。なお、初期化（ステップＳ１００１）から開眼度検出処理（ステップＳ１００４）までの処理は、図３に示す眼開閉状態判別処理と同様であるため説明を省略する。
【０１６０】
ＣＰＵ３４は、開眼度検出処理（ステップＳ１００４）を完了すると、ドライバーの表情が車両の計器を注視している表情であるか否かを判別する（ステップＳ１００５）。ＣＰＵ３４は、ドライバーの表情が車両の計器を注視している表情であると判別した場合（ステップＳ１００５：ＹＥＳ）、車両の計器を注視している表情用の閾値として、比較的小さい値を閾値として設定する（ステップＳ１００６）。一方、ＣＰＵ３４は、ドライバーの表情が車両の計器を注視している表情ではないと判別した場合（ステップＳ１００５：ＮＯ）、通常の表情用の眼開度の閾値を設定する（ステップＳ１００７）。以下、図３に示す眼開閉状態判別処理と同様に、ＣＰＵ３４は、ステップ１００４で検出した開眼度とステップＳ１００６又はステップＳ１００７で設定した閾値とを比較し（ステップＳ１００８）、開眼判定（ステップＳ１００９）若しくは閉眼判定（ステップＳ１０１０）を実行する。
【０１６１】
図１９に示した眼開閉状態判別処理のように、ドライバーの表情が特定の物を注視している表情であると判別された場合に、開眼判定されやすい開眼度の閾値に設定することにより、ドライバーが開眼しているか否かを適切に判別することができる。なお、第２の実施形態において説明したように、ドライバーの表情が開眼度が高い表情（特定の物を注視している表情）であると判別された場合には、開眼度を検出する処理を実行することなく、開眼判定するようにしてもよい。なお、ドライバーの表情が車両の計器を注視している表情であるか否かは、ニューラルネットワークによる表情の推定により、容易に実現可能である。
【０１６２】
なお、本発明に係る眼開閉判別装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。例えば、顔画像を入力可能なコンピュータに、上記動作を実行するためのプログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＭＯ（Ｍａｇｎｅｔｏ  Ｏｐｔｉｃａｌ  Ｄｉｓｋ）などのコンピュータ読み取り可能な記録媒体に格納して配布し、これをコンピュータシステムにインストールすることにより、上述の処理を実行する眼開閉判別装置を構成しても良い。
【０１６３】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
【図面の簡単な説明】
【０１６４】
【図１】本発明の第１乃至３の実施形態に係る眼開閉判別装置の構成図である。
【図２】図１に示すコンピュータの構成を示すブロック図である。
【図３】本発明の第１の実施形態に係る眼開閉判別装置が実行する眼開閉状態判別処理の一例を示すフローチャートである。
【図４】本発明の第１の実施形態に係る眼開閉判別装置が実行する学習処理の一例を示すフローチャートである。
【図５】（Ａ）〜（Ｆ）は、それぞれ顔画像の一例を示す図である。
【図６】学習後の表情マップを説明するための図である。
【図７】（Ａ）、（Ｂ）は、表情マップの領域化を説明するための図である。
【図８】図３のフローチャートに示す表情推定処理の詳細の一例を示すフローチャートである。
【図９】図３のフローチャートに示す開眼度検出処理の詳細の一例を示すフローチャートである。
【図１０】図９のフローチャートに示す眼位置検出処理の詳細の一例を示すフローチャートである。
【図１１】（Ａ）〜（Ｃ）は、輝度極小ポイントを抽出する方法を説明するための図である。
【図１２】輝度極小曲線群を抽出する方法を説明するための図である。
【図１３】図９のフローチャートに示す二値化処理の詳細の一例を示すフローチャートである。
【図１４】（Ａ）〜（Ｃ）は、輝度極小ポイントを抽出する方法を説明するための図である。
【図１５】本発明の第２の実施形態に係る眼開閉判別装置が実行する眼開閉状態判別処理の一例を示すフローチャートである。
【図１６】本発明の第３の実施形態に係る眼開閉判別装置が実行する学習処理の一例を示すフローチャートである。
【図１７】フィードフォワードニューラルネットワークの一例を示す模式図である。
【図１８】本発明の第３の実施形態に係る眼開閉判別装置が実行する表情推定処理の一例を示すフローチャートである。
【図１９】変形例に係る眼開閉判別装置が実行する眼開閉状態判別処理の一例を示すフローチャートである。
【符号の説明】
【０１６５】
１０  カメラ
２０  照明光源
３０  コンピュータ
３１  Ａ／Ｄ変換器
３２  画像メモリ
３３  ＲＯＭ
３４  ＣＰＵ（顔画像取得手段、表情推定手段、開眼度取得手段、閾値設定手段、眼開閉判別手段）
３５  ＲＡＭ（履歴情報記憶手段）
３６  表示制御装置
３７  光源制御装置
３８  設定メモリ
３９  操作装置
４０  表示装置
１００  眼開閉判別装置
【図１】
2010142345.tif 000011
【図２】
2010142345.tif 000012
【図３】
2010142345.tif 000013
【図４】
2010142345.tif 000014
【図５】
2010142345.tif 000015
【図６】
2010142345.tif 000016
【図７】
2010142345.tif 000017
【図８】
2010142345.tif 000018
【図９】
2010142345.tif 000019
【図１０】
2010142345.tif 000020
【図１１】
2010142345.tif 000021
【図１２】
2010142345.tif 000022
【図１３】
2010142345.tif 000023
【図１４】
2010142345.tif 000024
【図１５】
2010142345.tif 000025
【図１６】
2010142345.tif 000026
【図１７】
2010142345.tif 000027
【図１８】
2010142345.tif 000028
【図１９】
2010142345.tif 000029