(57)【特許請求の範囲】
【請求項１】
顔画像を取得する顔画像取得手段と、 
前記顔画像取得手段が取得した前記顔画像より上瞼を検出する上瞼検出手段と、 
前記上瞼検出手段が検出した上瞼に基づいて、下瞼を探索する対象の領域を設定する下瞼領域設定手段と、 
前記下瞼領域設定手段が設定した領域を上方から下方に走査して、輝度が暗から明に変化するエッジの群を下瞼候補として検出するエッジ群検出手段と、 
前記エッジ群検出手段が検出したエッジの群の内容に基づいて、該エッジの群が下瞼である確度を示す信頼度を求める信頼度取得手段と、 
下瞼候補のうちで、所定値以上の信頼度を有するエッジの群、又は最大の信頼度を有するエッジの群を下瞼として判別する下瞼判別手段と、 
前記上瞼検出手段が検出した上瞼と前記下瞼判別手段が判別した下瞼との位置に基づいて眼の開度を求める眼開度取得手段と、を備える、 
ことを特徴とする眼開閉判別装置。
【請求項２】
前記信頼度取得手段は、前記エッジ群検出手段が検出したエッジの群のエッジの数に基づいて該エッジの群の信頼度を求める、
ことを特徴とする請求項１に記載の眼開閉判別装置。
【請求項３】
前記信頼度取得手段は、前記上瞼検出手段が検出した上瞼から前記エッジ群検出手段が検出したエッジの群までの距離に基づいて、該エッジの群の信頼度を求める、
ことを特徴とする請求項１又は２に記載の眼開閉判別装置。
【請求項４】
前記エッジ群検出手段は、 
前記下瞼領域設定手段が設定した領域を上方から下方に走査ウインドウで走査して、当該領域を上方から下方に走査された前記走査ウインドウ内で輝度が暗から明に変化するエッジの群を下瞼候補として検出し、 
前記信頼度取得手段は、 
前記エッジ群検出手段が検出したエッジの群の傾き角度を算出する傾き角度算出手段と、
前記エッジ群検出手段が検出したエッジの群を含む前記走査ウインドウを、前記傾き角度算出手段が算出した傾き角度に基づいて回転させるウインドウ回転手段と、を備え、
前記エッジ群検出手段は、
前記ウインドウ回転手段が回転させた前記走査ウインドウ内で輝度が暗から明に変化するエッジ群を検出し、
前記信頼度取得手段は、
検出したエッジ群の信頼度を求める、
ことを特徴とする請求項１乃至３の何れか１項に記載の眼開閉判別装置。
【請求項５】
前記下瞼判別手段は、前記ウインドウ回転手段が回転させた前記走査ウインドウ内で検出したエッジ群の信頼度が所定値以上である場合に、前記走査ウインドウ内のエッジの群を下瞼として判別する、
ことを特徴とする請求項４に記載の眼開閉判別装置。
【請求項６】
前記エッジ群検出手段は、
前記回転させた前記走査ウインドウを含む新たな領域を設定し、
当該新たな領域を、前記ウインドウ回転手段が回転させた前記走査ウインドウで走査して、エッジ群を検出し、
前記信頼度取得手段は、
前記新たな領域を走査した前記走査ウインドウ内で検出したエッジ群の信頼度を求め、
前記下瞼判別手段は、
求められた所定値以上の信頼度を有する走査ウインドウ内のエッジの群を下瞼候補として、該下瞼候補のうちで最大の信頼度を有する走査ウインドウ内のエッジの群を下瞼として判別する、
ことを特徴とする請求項４に記載の眼開閉判別装置。
【請求項７】
前記エッジ群検出手段は、 
前記回転させた前記走査ウインドウを含む新たな領域を設定し、
当該新たな領域を、前記ウインドウ回転手段が回転させた前記走査ウインドウで走査して、エッジ群を検出し、
前記信頼度取得手段は、
前記新たな領域を走査した前記走査ウインドウ内で検出したエッジ群の信頼度を求め、
前記下瞼判別手段は、
前記信頼度取得手段が所定値以上の信頼度を算出した場合に、当該信頼度を有する前記走査ウインドウ内のエッジ群を下瞼として判別する、
ことを特徴とする請求項４に記載の眼開閉判別装置。
【請求項８】
前記信頼度取得手段は、
前記走査ウインドウに含まれるエッジの数を上瞼の重心位置から前記走査ウインドウ内のエッジ群までの距離で割った値を前記信頼度として算出する、
ことを特徴とする請求項４乃至７の何れか１項に記載の眼開閉判別装置。
【請求項９】
前記ウインドウ回転手段は、前記走査ウインドウ内のエッジ群の重心を中心として前記走査ウインドウを回転させる、
ことを特徴とする請求項４乃至８の何れか１項に記載の眼開閉判別装置。
【請求項１０】
前記信頼度取得手段は、
前記エッジ群検出手段が検出したエッジ群から下瞼候補となる直線を推定し、
当該推定した直線の信頼度を算出し、
前記下瞼判別手段は、前記直線のうちで信頼度が最大のものを、下瞼を示すものとして判別する、
ことを特徴とする請求項１乃至３の何れか１項に記載の眼開閉判別装置。
【請求項１１】
前記信頼度取得手段は、
前記直線を検出するために使用されたエッジの数を上瞼の重心位置から前記直線までの距離で割った値を前記信頼度として求める、
ことを特徴とする請求項１０に記載の眼開閉判別装置。 
【請求項１２】
前記眼開度取得手段は、
前記上瞼検出手段が検出した上瞼の重心又は中心から前記下瞼判別手段が判別した下瞼の重心又は中心までの距離を眼の開度として求める、
ことを特徴とする請求項１乃至１１の何れか１項に記載の眼開閉判別装置。
【請求項１３】
前記眼開度取得手段は、
前記上瞼検出手段が検出した上瞼を近似した直線を算出し、
前記下瞼判別手段が判別した下瞼の一点から前記直線への垂線の距離のうち最大のものを眼の開度として求める、
ことを特徴とする請求項１乃至１１の何れか１項に記載の眼開閉判別装置。
【請求項１４】
前記眼開度取得手段は、
前記下瞼判別手段が検出した下瞼を近似した直線を算出し、
前記上瞼検出手段が検出した上瞼の一点から前記直線への垂線の距離のうち最大のものを眼の開度として求める、
ことを特徴とする請求項１乃至１１の何れか１項に記載の眼開閉判別装置。
【請求項１５】
前記上瞼検出手段は、
前記顔画像内の所定の範囲を上から下方向へ走査して、輝度が明から暗に変化するエッジラインを検出し、
検出した複数のエッジラインの位置関係に基づいて、当該複数のエッジラインを眉毛の上辺と上瞼と鼻孔と口の上辺とに判別することによって、上瞼を検出する、
ことを特徴とする請求項１乃至１４の何れか１項に記載の眼開閉判別装置。 
【請求項１６】
コンピュータを、
顔画像を取得する顔画像取得手段、
前記顔画像取得手段が取得した前記顔画像より上瞼を検出する上瞼検出手段、
前記上瞼検出手段が検出した上瞼に基づいて、下瞼を探索する対象の領域を設定する下瞼領域設定手段、
前記下瞼領域設定手段が設定した領域を上方から下方に走査して、輝度が暗から明に変化するエッジの群を下瞼候補として検出するエッジ群検出手段、
前記エッジ群検出手段が検出したエッジの群の内容に基づいて、該エッジの群が下瞼である確度を示す信頼度を求める信頼度取得手段、
下瞼候補のうちで、所定値以上の信頼度を有するエッジの群、又は最大の信頼度を有するエッジの群を下瞼として判別する下瞼判別手段、
前記上瞼検出手段が検出した上瞼と前記下瞼判別手段が判別した下瞼との位置に基づいて眼の開度を求める眼開度取得手段、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、車両等の移動体を運転している運転者等の眼の開閉を判別する眼開閉判別装置、及びプログラムに関する。
【背景技術】
【０００２】
現在、運転者の眼の開閉状態を検出する眼開閉判別装置が実用化されている。
【０００３】
例えば、特許文献１に開示されている眼開閉判別装置は、顔画像からエッジ検出処理によって上瞼のエッジラインを検出し、上瞼エッジラインのピーク点からその両端を結ぶ線へ下ろした垂線の長さによって眼の開閉を判別する処理と、顔画像を二値化して、二値化された眼画像の縦幅によって眼の開閉を判別処理と、上瞼のエッジラインのピーク点と眉毛との間隔に基づいて眼の開閉を判別する処理と、上瞼のエッジラインの曲率半径に基づいて眼の開閉を判別する処理とを組み合わせることによって、眼の開閉を判別する。
【特許文献１】特開２００４−１９２５５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、上記の眼開閉判別装置は、白とび等により下瞼の一部が欠けている場合に、上瞼と下瞼との間の距離が正確に検出できないため、正確に眼の開閉を判別できない。
また、上瞼エッジラインのピーク点からその両端を結ぶ線へ下ろした垂線の長さによって眼の開閉を判別する場合に、目尻、目頭が欠けていると、目尻、目頭を結ぶ直線が正確に求められず、正確に眼の開閉を判別できない。
また、上瞼エッジラインのピーク点と眉毛との間隔や上瞼のエッジラインの曲率半径に基づいて眼の開閉を判別する場合には、運転者の眼の形状等によっては、正確に眼の開閉を判別できない。
【０００５】
本発明は、上記問題点に鑑みてなされたもので、正確に眼の開閉を判別できる眼開閉判別装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明の第１の観点に係る眼開閉判別装置は、
顔画像を取得する顔画像取得手段と、
前記顔画像取得手段が取得した前記顔画像より上瞼を検出する上瞼検出手段と、
前記上瞼検出手段が検出した上瞼に基づいて、下瞼を探索する対象の領域を設定する下瞼領域設定手段と、
前記下瞼領域設定手段が設定した領域を上方から下方に走査して、輝度が暗から明に変化するエッジの群を下瞼候補として検出するエッジ群検出手段と、
前記エッジ群検出手段が検出したエッジの群の内容に基づいて、該エッジの群が下瞼である確度を示す信頼度を求める信頼度取得手段と、
下瞼候補のうちで、所定値以上の信頼度を有するエッジの群、又は最大の信頼度を有するエッジの群を下瞼として判別する下瞼判別手段と、
前記上瞼検出手段が検出した上瞼と前記下瞼判別手段が判別した下瞼との位置に基づいて眼の開度を求める眼開度取得手段と、を備える、
ことを特徴とする。 
例えば、前記信頼度取得手段は、前記エッジ群検出手段が検出したエッジの群のエッジの数に基づいて該エッジの群の信頼度を求めてもよい。
例えば、前記信頼度取得手段は、前記上瞼検出手段が検出した上瞼から前記エッジ群検出手段が検出したエッジの群までの距離に基づいて、該エッジの群の信頼度を求めてもよい。
【０００７】
例えば、前記エッジ群検出手段は、
前記下瞼領域設定手段が設定した領域を上方から下方に走査ウインドウで走査して、当該領域を上方から下方に走査された前記走査ウインドウ内で輝度が暗から明に変化するエッジの群を下瞼候補として検出し、
前記信頼度取得手段は、
前記エッジ群検出手段が検出したエッジの群の傾き角度を算出する傾き角度算出手段と、
前記エッジ群検出手段が検出したエッジの群を含む前記走査ウインドウを、前記傾き角度算出手段が算出した傾き角度に基づいて回転させるウインドウ回転手段と、を備え、
前記エッジ群検出手段は、
前記ウインドウ回転手段が回転させた前記走査ウインドウ内で輝度が暗から明に変化するエッジ群を検出し、
前記信頼度取得手段は、
検出したエッジ群の信頼度を求めてもよい。
【０００８】
例えば、前記下瞼判別手段は、前記ウインドウ回転手段が回転させた前記走査ウインドウ内で検出したエッジ群の信頼度が所定値以上である場合に、前記走査ウインドウ内のエッジの群を下瞼として判別してもよい。
【０００９】
例えば、前記エッジ群検出手段は、
前記回転させた前記走査ウインドウを含む新たな領域を設定し、
当該新たな領域を、前記ウインドウ回転手段が回転させた前記走査ウインドウで走査して、エッジ群を検出し、
前記信頼度取得手段は、
前記新たな領域を走査した前記走査ウインドウ内で検出したエッジ群の信頼度を求め、
前記下瞼判別手段は、
求められた所定値以上の信頼度を有する走査ウインドウ内のエッジの群を下瞼候補として、該下瞼候補のうちで最大の信頼度を有する走査ウインドウ内のエッジの群を下瞼として判別してもよい。
【００１０】
例えば、前記エッジ群検出手段は、
前記回転させた前記走査ウインドウを含む新たな領域を設定し、
当該新たな領域を、前記ウインドウ回転手段が回転させた前記走査ウインドウで走査して、エッジ群を検出し、
前記信頼度取得手段は、
前記新たな領域を走査した前記走査ウインドウ内で検出したエッジ群の信頼度を求め、
前記下瞼判別手段は、
前記信頼度取得手段が所定値以上の信頼度を算出した場合に、当該信頼度を有する前記走査ウインドウ内のエッジ群を下瞼として判別してもよい。
【００１１】
例えば、前記信頼度取得手段は、
前記走査ウインドウに含まれるエッジの数を上瞼の重心位置から前記走査ウインドウ内のエッジ群までの距離で割った値を前記信頼度として算出してもよい。
【００１２】
例えば、前記ウインドウ回転手段は、前記走査ウインドウ内のエッジ群の重心を中心として前記走査ウインドウを回転させてもよい。
【００１３】
例えば、前記信頼度取得手段は、
前記エッジ群検出手段が検出したエッジ群から下瞼候補となる直線を推定し、
当該推定した直線の信頼度を算出し、
前記下瞼判別手段は、前記直線のうちで信頼度が最大のものを、下瞼を示すものとして判別してもよい。
【００１４】
例えば、前記信頼度取得手段は、
前記直線を検出するために使用されたエッジの数を上瞼の重心位置から前記直線までの距離で割った値を前記信頼度として求めてもよい。
【００１５】
例えば、前記眼開度取得手段は、
前記上瞼検出手段が検出した上瞼の重心又は中心から前記下瞼判別手段が判別した下瞼の重心又は中心までの距離を眼の開度として求めてもよい。
【００１６】
例えば、前記眼開度取得手段は、
前記上瞼検出手段が検出した上瞼を近似した直線を算出し、
前記下瞼判別手段が判別した下瞼の一点から前記直線への垂線の距離のうち最大のものを眼の開度として求めてもよい。
【００１７】
例えば、前記眼開度取得手段は、
前記下瞼判別手段が検出した下瞼を近似した直線を算出し、
前記上瞼検出手段が検出した上瞼の一点から前記直線への垂線の距離のうち最大のものを眼の開度として求めてもよい。
【００１８】
例えば、前記上瞼検出手段は、
前記顔画像内の所定の範囲を上から下方向へ走査して、輝度が明から暗に変化するエッジラインを検出し、
検出した複数のエッジラインの位置関係に基づいて、当該複数のエッジラインを眉毛の上辺と上瞼と鼻孔と口の上辺とに判別することによって、上瞼を検出してもよい。
【００１９】
本発明の第２の観点に係るプログラムは、
コンピュータを、
顔画像を取得する顔画像取得手段、
前記顔画像取得手段が取得した前記顔画像より上瞼を検出する上瞼検出手段、
前記上瞼検出手段が検出した上瞼に基づいて、下瞼を探索する対象の領域を設定する下瞼領域設定手段、
前記下瞼領域設定手段が設定した領域を上方から下方に走査して、輝度が暗から明に変化するエッジの群を下瞼候補として検出するエッジ群検出手段、
前記エッジ群検出手段が検出したエッジの群の内容に基づいて、該エッジの群が下瞼である確度を示す信頼度を求める信頼度取得手段、
下瞼候補のうちで、所定値以上の信頼度を有するエッジの群、又は最大の信頼度を有するエッジの群を下瞼として判別する下瞼判別手段、
前記上瞼検出手段が検出した上瞼と前記下瞼判別手段が判別した下瞼との位置に基づいて眼の開度を求める眼開度取得手段、
として機能させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、眼の開閉を正確に判別できる。
【発明を実施するための最良の形態】
【００２１】
（第１の実施形態）
以下、本発明の第１の実施形態に係る眼開閉判別装置５０について説明する。
【００２２】
第１の実施形態の眼開閉判別装置５０は、図１に示すように、ドライバーの顔を撮影して顔画像を生成するカメラ１０と、ドライバーの顔を照明する照明光源１２と、ドライバーの眼の開閉を判別するコンピュータ１４と、コンピュータ１４に接続された表示装置１６と、から構成される。
【００２３】
カメラ１０は例えばＣＣＤカメラ等から構成され、ドライバーの顔の階調画像を一定周期（例えば、１／３０秒）で取得し、出力する。カメラ１０から順次出力される顔画像は、ドライバーの顔（の画像）だけでなく、その背景（の画像）なども含む。
【００２４】
表示装置１６は、ＬＣＤ（Liquid Crystal Display)又はＣＲＴ(Cathode Ray Tube)などから構成され、カメラ１０で撮影された顔画像などを表示する。
【００２５】
コンピュータ１４は、カメラ１０により取得された顔動画像を処理してその眼の開閉を判別する装置である。コンピュータ１４は、図２に示すように、Ａ／Ｄ変換器２１と、画像メモリ２２と、ＲＯＭ（Read Only Memory）２３と、ＣＰＵ（Central Processing Unit）２４と、ＲＡＭ（Random Access Memory）２５と、表示制御装置２６と、光源制御装置２７と、設定メモリ２８と、操作装置２９と、から構成される。
【００２６】
Ａ／Ｄ（アナログ／ディジタル）変換器２１は、カメラ１０で撮影されたアナログ画像信号をディジタル信号に変換する。
【００２７】
画像メモリ２２は、カメラ１０により生成され、Ａ／Ｄ変換器２１でディジタル化された画像データを格納する。
【００２８】
ＲＯＭ２３は、ＣＰＵの動作を制御するためのプログラムを記憶する。また、ＲＯＭ２３は、後述する画像処理を実行するための様々な固定データを記憶する。
【００２９】
ＣＰＵ２４は、コンピュータ１４全体を制御する。また、ＣＰＵ２４は、ＲＯＭ２３に格納されているプログラムを実行することにより、カメラ１０により取得された一連の顔画像を処理して眼の開閉を判別する。
【００３０】
ＲＡＭ２５は、ＣＰＵ２４のワークエリアとして機能する。
【００３１】
表示制御装置２６は、ＣＰＵ２４の制御のもと、映像データ等を表示装置１６が出力可能なデータ形式に変換し、表示装置１６に出力する。
【００３２】
光源制御装置２７は、照明光源１２の点灯・消灯を制御する。
【００３３】
設定メモリ２８は、ＣＰＵ２４が顔画像を処理して眼の開閉を判別する処理の設定に関する情報（以下、設定情報）を格納する。
【００３４】
操作装置２９は、ユーザから操作情報を受け付け、操作に応じた操作信号をＣＰＵ２４に送出する。
【００３５】
次に、ＲＯＭ２３に格納される固定データの例を、図３を参照しながら説明する。まず、ＲＯＭ２３は、図３（ａ）に示すような、縦エッジ検出用ソーベルフィルタのオペレータを格納する。縦エッジ検出用ソーベルフィルタは、図３（ｃ）に示すような縦方向の濃淡差を強調するためのオペレータである。また、ＲＯＭ２３は、図３（ｂ）に示すような、横エッジ検出用ソーベルフィルタのオペレータを格納する。横エッジ検出用ソーベルフィルタは、図３（ｄ）に示すような横方向の濃淡差を強調するためのオペレータである。
【００３６】
ただし、前提として、顔画像を構成する各画素は、ＲＧＢの各色が８ビットの諧調を有するように設定されており、第０階調〜第２５５階調の２５６諧調の内いずれかの諧調を有するものとする。第０階調は黒、第２５５階調は白である。
【００３７】
設定メモリ２８に格納される各種パラメータ（設定情報）の例を、図４を参照しながら説明する。
瞼検出用横ソーベル閾値は、顔画像から顔の上瞼又は下瞼候補を抽出する際に横エッジ検出用ソーベルフィルタを用いて処理した各画素の微分値から、横エッジラインか否かを判別するための閾値である。
下瞼探索領域縦幅は、下瞼を探索する領域である下瞼探索領域の縦幅である。
下瞼探索領域横幅は、下瞼探索領域の横幅である。
なお、下瞼探索領域は、検出された上瞼が上部に配置され、縦幅が下瞼探索領域縦幅と、横幅が下瞼探索領域横幅となるように設定される。
走査ウインドウ縦幅は、下瞼探索領域で下瞼を探索するために用いられる走査ウインドウの縦幅である。
なお、走査ウインドウの横幅は、下瞼探索領域横幅と同じである。
閾値１は、走査ウインドウ内のエッジ数と比較することによって、その信頼度の算出を行うか否かを判別するための閾値である。
閾値２は、後述する信頼度と比較することによって、検出されたエッジ群が下瞼であるか否かを判別するための閾値である。
閾値３は、上瞼と下瞼との間の距離と比較することによって、眼の開閉を判別するための閾値である。
なお、設定情報の値は、ユーザによって変更可能である。
【００３８】
以下、上記構成を有する第１の実施形態に係る眼開閉判別装置５０の動作を説明する。
【００３９】
まず、図５〜７を参照して、眼開閉判別装置５０が、顔画像中の眼の開閉を判別する動作の概要を説明する。
【００４０】
カメラ１０は、図５（ａ）に示すような対象者の顔画像を所定周期（例えば、１／３０秒周期）で撮影して顔画像を出力する。出力された顔画像は画像メモリ２２に順次格納される。
【００４１】
次に、ＣＰＵ２４は、画像メモリ２２に格納されている顔画像を順次読み出し、以下の処理を行う。
【００４２】
先ず、ＣＰＵ２４は、縦エッジ検出用ソーベルフィルタ（図３（ａ））を用いて、読み出した顔画像を処理し、その顔画像の各画素の微分値に基づいて顔の左右端を検出する。また、ＣＰＵ２４は、横エッジ検出用ソーベルフィルタ（図３（ｂ））を用いて、読み出した顔画像を処理し、その顔画像の各画素の輝度値に基づいて顔の上下端を検出する。
【００４３】
例えば、図５（ａ）に示す顔画像の場合、顔の左右端は、ｉ≦ｘ≦ｊであり、上下端は、ｎ≦ｙ≦ｍである。顔の左右端と上下端から、顔の位置が検出できる。例えば、顔の上端は眉毛と額の間であり、顔の下端は口と顎の間である。
【００４４】
次に、ＣＰＵ２４は、図５（ａ）（ｂ）に示すように、上瞼探索領域Ａ（ｉ≦ｘ≦ｊ，ｎ≦ｙ≦ｍ）を設定し、図６（ａ）に示すように、横エッジ検出用ソーベルフィルタ（図３（ｂ））を用いて、上瞼探索領域Ａ上で輝度値が明から暗に変化する横エッジラインを検出する。詳しく説明すると、上瞼探索領域Ａを上方から下方に横エッジ検出用ソーベルフィルタで処理した値がマイナスであり、且つ、その値の絶対値が瞼検出用横ソーベル閾値以上である画素をエッジとして検出し、検出したエッジの連なりを横エッジラインとする。
【００４５】
ＣＰＵ２４は、検出した横エッジラインを、テンプレートマッチング法等を用いて、左右眉毛、左右上瞼、鼻孔、口等に区別することによって、上瞼のエッジラインを判別する。
【００４６】
ＣＰＵ２４は、図６（ｂ）に示すように、左右の上瞼のエッジラインを基準として、下瞼が含まれる可能性が高い下瞼探索領域Ｂ１，Ｂ２を設定する。ただし、下瞼探索領域Ｂ１，Ｂ２の縦幅及び横幅は予め設定されている。
【００４７】
ＣＰＵ２４は、図７（ａ）に示すように、下瞼探索領域Ｂ１，Ｂ２の最上部に、それぞれ走査ウインドウＣ１，Ｃ２を生成する。
【００４８】
ＣＰＵ２４は、下瞼探索領域Ｂ１，Ｂ２内で走査ウインドウＣ１，Ｃ２を走査させて、輝度値が暗から明に変化するエッジを検出する。詳しく説明すると、走査ウインドウ内を上方から下方に横エッジ検出用ソーベルフィルタで処理した値がプラスであり、且つ、その値の絶対値が瞼検出用横ソーベル閾値以上である画素をエッジとして検出する。
【００４９】
ＣＰＵ２４は、閾値１以上の個数のエッジ群を検出した場合に、走査を停止して、エッジ群の傾き角度及びエッジ群の重心を算出する。ここで、エッジ群の傾き角度とは、エッジ群に属する個々の画素毎にソーベルフィルタを用いて検出した傾き角度の平均値である。また、例えば、エッジ群の傾き角度とは、エッジ群を近似した直線又は曲線の傾き角度であってもよい。
【００５０】
ＣＰＵ２４は、図７（ｃ）に示すように、算出した傾き角度に基づいて、エッジ群の重心を中心として走査ウインドウを回転させる。つまり、走査ウインドウをエッジ群の傾きに合致させる。
【００５１】
ＣＰＵ２４は、回転させた走査ウインドウ内で、輝度値が暗から明に変化するエッジを再び検出し、検出したエッジ群の信頼度を算出する。ただし、回転した走査ウインドウに含まれるエッジの数を上瞼の重心の位置から走査ウインドウ内のエッジ群までの距離で割った値を信頼度として算出する。ここで、上瞼の重心の位置から走査ウインドウ内のエッジ群までの距離とは、上瞼の重心の位置から走査ウインドウの中心までの距離であってもよいし、上瞼の重心の位置から走査ウインドウ内のエッジ群の重心までの距離であってもよいし、上瞼の重心の位置から走査ウインドウ内の各エッジまでの距離の平均値であってもよい。
【００５２】
ＣＰＵ２４は、算出した信頼度が閾値２以上である場合に、当該信頼度を有する走査ウインドウに含まれるエッジ群を下瞼として判別する。
【００５３】
一方で、ＣＰＵ２４は、算出した信頼度が閾値２未満である場合に、回転させていない走査ウインドウの走査を再開させる。
【００５４】
ＣＰＵ２４は、下瞼を検出した場合に、上瞼と下瞼との距離を眼の開度として算出し、算出した距離に基づいて眼の開閉を判別する。ただし、上瞼と下瞼との距離は、上瞼の重心又は中心から下瞼の重心又は中心までの距離であってもよいし、下瞼又は上瞼の一点から、上瞼又は下瞼を近似した直線への垂線の距離であってもよい。また、眼の開閉は、算出した距離が閾値３以上の場合に、眼が開いていると判別し、算出した距離が閾値３未満の場合に、眼が閉じていると判別する。
【００５５】
ここで、本実施形態に係る眼開閉判別装置５０が行う眼状態判別処理について図８に示すフローチャートを参照して説明する。
【００５６】
コンピュータ１４内のＣＰＵ２４は、周期的に（例えば、１／３０秒毎）に図８の眼状態判別処理を開始する。
【００５７】
先ず、眼開閉判別装置５０の電源が投入されると、ＣＰＵ２４は、後述する前処理を行い、ドライバーの顔画像を取り込み、縦エッジを強調した画像と横エッジを強調した画像とを生成する（ステップＳ１００）。
【００５８】
次に、ＣＰＵ２４は、後述する顔位置検出処理を行い、上記の前処理で生成した縦エッジを強調した画像を使用して顔の左右端を検出し、横エッジを強調した画像を使用して顔の上下端を検出し、顔画像における顔の位置を検出する（ステップＳ２００）。
【００５９】
ＣＰＵ２４は、後述する上瞼検出処理を行い、上記の顔位置検出処理で検出した顔の位置に基づいて、上瞼の位置を検出する（ステップＳ３００）。
【００６０】
ＣＰＵ２４は、後述する下瞼検出処理を行い、上記の上瞼検出処理で検出した上瞼の位置に基づいて、下瞼の位置を検出する（ステップＳ４００）。
【００６１】
ＣＰＵ２４は、後述する眼開閉判別処理を行い、上瞼検出処理で検出した上瞼の位置と、下瞼検出処理で検出した下瞼の位置とに基づいて眼の開閉を判別する（ステップＳ５００）。
【００６２】
このようにして、眼開閉判別処理によれば、顔画像を取得して、その画像より眼の上瞼及び下瞼を検出して、その眼の開閉を判別することを周期的に繰り返すことができる。
【００６３】
次に、眼開閉判別処理のステップＳ１００において行われる前処理を説明する。簡単に説明すると、前処理において、眼開閉判別装置５０は、ドライバーの顔画像を撮像し、ソーベルフィルタを使用してエッジ検出を行う。
【００６４】
以下、図９を参照して、前処理（Ｓ１００）を詳細に説明する。
【００６５】
先ず、ＣＰＵ２４は、カメラ１０が撮影した対象者の顔画像をＡ／Ｄ変換器２１を介して取り込み、画像メモリ２２に格納するキャプチャ処理を行う（ステップＳ１１０）。
【００６６】
次に、ＣＰＵ２４は、座標変換処理を行い、画像メモリ２２に格納した各顔画像の画素を後述するソーベルフィルタ処理実行可能な程度に間引く処理を行う（ステップＳ１２０）。この処理は高速化のために実施されるものであって、必要に応じて実施されればよい。
【００６７】
ＣＰＵ２４は、ＲＯＭ２３に格納されている縦エッジ検出用オペレータ（図３（ａ））を用いて座標変換後の顔画像を処理して、顔画像内の縦エッジを強調した画像を生成する。また、ＣＰＵ２４は、ＲＯＭ２３に格納されている横エッジ検出用オペレータ（図３（ｂ））を用いて座標変換後の顔画像を処理して、顔画像内の横エッジを強調した画像を生成する（ステップＳ１３０）。
【００６８】
このようにして、前処理によれば、撮像した顔画像の縦エッジを強調した画像と横エッジを強調した画像を生成することができる。
【００６９】
ここで、眼開閉判別処理のステップＳ２００において行われる顔位置検出処理を説明する。簡単に説明すると顔位置検出処理において、眼開閉判別装置５０は、前処理において生成した縦エッジを強調した画像と横エッジを強調した画像を用いて顔画像における顔の位置を検出する。
【００７０】
以下、図１０を参照して、顔位置検出処理（Ｓ２００）を詳細に説明する。
【００７１】
先ず、ＣＰＵ２４は、後述する顔左右端検出処理を行い、前処理において生成した縦エッジを強調した画像を用いて、顔画像における顔の左右端の位置を検出する（ステップＳ２１０）。
【００７２】
次に、ＣＰＵ２４は、後述する顔上下端検出処理を行い、前処理において生成した横エッジを強調した画像を用いて、顔画像における顔の上下端の位置を検出すると（ステップＳ２２０）、顔位置検出処理を終了する。
【００７３】
このようにして、顔位置検出処理によれば、顔の左右端と上下端を検出することによって顔画像における顔の位置を検出することができる。
【００７４】
ここで、顔位置検出処理のステップＳ２１０において行われる顔左右端検出処理を説明する。簡単に説明すると顔左右端検出処理において、眼開閉判別装置５０は、前処理において生成した縦エッジを強調した画像を用いて、顔画像における顔の左右端の位置を検出する。
【００７５】
以下、図１１を参照して、顔左右端検出処理（Ｓ２１０）を詳細に説明する。
【００７６】
先ず、ＣＰＵ２４は、縦エッジ検出用ソーベルフィルタを用いたソーベルフィルタ処理後の各画素の値を縦方向に投影してヒストグラムを作成する顔左右端検出用ヒストグラム作成処理を行う（ステップＳ２１１）。具体的に述べると、各座標の画素値を何段階かに分割し、ｘ値毎に最も多く各座標の画素値を取る段階を決定する。ｘ値毎の上記段階の平均値のグラフを上記のヒストグラムとする。
【００７７】
ＣＰＵ２４は、ステップＳ２１１において作成したヒストグラムにおいて、ピークを取る点（以下、ピーク点）を抽出する（ステップＳ２１２）。
【００７８】
ＣＰＵ２４は、ステップＳ２１２において抽出したピーク点からそのヒストグラム値が閾値以上のものを顔の左右端候補として抽出する（ステップＳ２１３）。
【００７９】
ＣＰＵ２４は、ステップＳ２１３の処理の結果、顔の左右端の候補として、ヒストグラム値が閾値以上のピーク点が二つ抽出されたか否かを判別する（ステップＳ２１４）。
【００８０】
ヒストグラム値が閾値以上のピーク点が二つ抽出されたと判別すると（ステップＳ２１４；ＹＥＳ）、ＣＰＵ２４は、処理をステップＳ２１６に進め、抽出した二つのピーク点を取る位置を顔の左右端と決定する（ステップＳ２１６）。
【００８１】
ヒストグラム値が閾値以上の二つのピーク点が抽出されていないと判別すると（ステップＳ２１４；ＮＯ）、ＣＰＵ２４は、ピーク点から、二点の距離が人の顔幅として適切な間隔を有する二つのピーク点の組み合わせを抽出する（ステップＳ２１５）。
【００８２】
ＣＰＵ２４は、抽出した二つのピーク点を取る位置を顔の左右端と決定する（ステップＳ２１６）。
【００８３】
このようにして、顔左右端検出処理によれば、顔画像において顔の左右端を検出することができる。
【００８４】
ここで、顔位置検出処理のステップＳ２２０において行われる顔上下端検出処理を説明する。簡単に説明すると顔上下端検出処理において、眼開閉判別装置５０は、前処理において生成した横エッジラインを強調した画像を用いて、顔画像における顔の上下端の位置を検出する。
【００８５】
以下、図１２を参照して、顔上下端検出処理（Ｓ２２０）を詳細に説明する。
【００８６】
先ず、ＣＰＵ２４は、横エッジ検出用ソーベルフィルタを用いたソーベルフィルタ処理後の各画素の値を横方向に投影してヒストグラムを作成する顔上下端検出用ヒストグラム作成処理を行う（ステップＳ２２１）。具体的に述べると、各座標の画素値を何段階かに分割し、ｙ値毎に最も多く各座標の画素値を取る段階を決定する。ｙ値毎の上記段階の平均値のグラフを上記のヒストグラムとする。
【００８７】
ＣＰＵ２４は、ステップＳ２２１において作成したヒストグラムにおいて、ピークを取る点（以下、ピーク点）を抽出する（ステップＳ２２２）。
【００８８】
ＣＰＵ２４は、ステップＳ２２２において抽出したピーク点のヒストグラム値に基づいて各ピーク点を眼・眉・口等に対応付ける（ステップＳ２２３）。
【００８９】
ＣＰＵ２４は、ステップＳ２２３において眼・眉・口等に対応付けられた各ピーク点に基づいて、顔画像における顔の上下端の位置を算出する（ステップＳ２２４）。例えば、検出した眉から３画素分上の位置を顔の上端とし、検出した口から３画素分下の位置を顔の下端（口と顎の間）とする。
【００９０】
このようにして、顔上下端検出処理によれば、顔画像において顔の上下端の位置を算出することができる。
【００９１】
以下、図１３を参照して、上瞼検出処理（Ｓ３００）を詳細に説明する。
【００９２】
先ず、ＣＰＵ２４は、ＲＯＭ２３に格納されている横エッジ検出用オペレータ（図３（ｂ））を用いて、顔位置検出処理で検出した顔の上下端と左右端とで囲まれる領域の画像を処理して、輝度値が明から暗に変化する横エッジラインを抽出する（ステップＳ３１０）。
【００９３】
ＣＰＵ２４は、ステップＳ３１０で抽出した横エッジラインを、テンプレートマッチング法等を用いて、左右上瞼、左右鼻孔、口に区別することによって、上瞼の位置を検出する（ステップＳ３２０）。
【００９４】
このようにして、上瞼検出処理によれば、顔画像の顔の上下端と左右端とに囲まれる領域上で、上瞼を検出することができる。
【００９５】
以下、図１４を参照して、下瞼検出処理（Ｓ４００）を詳細に説明する。
【００９６】
先ず、ＣＰＵ２４は、上瞼検出処理で検出した左右何れかの上瞼のエッジラインの位置に基づいて、下瞼が含まれる可能性が高い下瞼探索領域を設定し、下瞼探索領域の上部に走査ウインドウを設定する（ステップＳ４０１）。
【００９７】
ＣＰＵ２４は、走査ウインドウを用いて下瞼探索領域の上から下へ走査を開始し、輝度値が暗から明に変化するエッジの検出を開始する（ステップＳ４０２）。
【００９８】
ＣＰＵ２４は、走査ウインドウ内で閾値１以上の個数のエッジ群を検出したか否かを判別する（ステップＳ４０３）。
【００９９】
閾値１以上の個数のエッジ群を検出していないと判別した場合に（Ｓ４０３；ＮＯ）、ＣＰＵ２４は、走査ウインドウが下瞼探索領域の下端に到達したか否かを判別する（ステップＳ４０４）。
【０１００】
走査ウインドウが下瞼探索領域の下端に到達していないと判別すると（Ｓ４０４；ＮＯ）、ＣＰＵ２４は、ステップＳ４０３に戻す。
【０１０１】
走査ウインドウが下瞼探索領域の下端に到達したと判別すると（Ｓ４０４；ＹＥＳ）、ＣＰＵ２４は、目状態判別処理を終了する。
【０１０２】
閾値１以上の個数のエッジ群を検出したと判別した場合に（Ｓ４０３；ＹＥＳ）、ＣＰＵ２４は、走査ウインドウの走査を停止して（ステップＳ４０５）、エッジ群の傾き角度及びエッジ群の重心を算出する（ステップＳ４０６）。
【０１０３】
ＣＰＵ２４は、算出した傾き角度に基づいて、エッジ群の重心を中心として走査ウインドウを回転させる（ステップＳ４０７）。つまり、走査ウインドウをエッジ群の傾きに合致させる。
【０１０４】
ＣＰＵ２４は、回転させた走査ウインドウ内で、輝度値が暗から明に変化するエッジを再び検出し（ステップＳ４０８）、検出したエッジ群の信頼度を算出する（ステップＳ４０９）。
【０１０５】
ＣＰＵ２４は、算出した信頼度が閾値２以上であるか否かを判別する（ステップＳ４１０）。
【０１０６】
算出した信頼度が閾値２未満であると判別した場合に（Ｓ４１０；ＮＯ）、ＣＰＵ２４は、走査ウインドウを回転する前に戻して、走査を再開し（ステップＳ４１１）、ステップＳ４０３に戻す。
【０１０７】
算出した信頼度が閾値２以上であると判別した場合に（Ｓ４１０；ＹＥＳ）、ＣＰＵ２４は、当該信頼度を有する走査ウインドウに含まれるエッジ群を下瞼として判別してＲＡＭ２５に記憶し（ステップＳ４１２）、後述する眼開閉判別処理に進める。
【０１０８】
このようにして、下瞼検出処理によれば、上瞼のエッジラインに基づいて所定の領域を設定し、その領域を走査ウインドウで走査することによって、正確に下瞼を検出することができる。
【０１０９】
以下、図１５を参照して、眼開閉判別処理（Ｓ５００）を詳細に説明する。
【０１１０】
先ず、ＣＰＵ２４は、上瞼検出処理で検出した上瞼と下瞼検出処理で検出した下瞼との間の距離を算出する（ステップＳ５１０）。
【０１１１】
次に、ＣＰＵ２４は、上瞼と下瞼との間の距離が閾値３以上であるか否かを判別する（ステップＳ５２０）。
【０１１２】
上瞼と下瞼との間の距離が閾値３以上であると判別した場合に（Ｓ５２０；ＹＥＳ）、ＣＰＵ２４は、眼が開いていると判別し、ＲＡＭ２５に記憶し（ステップＳ５３０）、処理を終了する。
【０１１３】
上瞼と下瞼との間の距離が閾値３未満であると判別した場合に（Ｓ５２０；ＮＯ）、ＣＰＵ２４は、眼が閉じていると判別し、ＲＡＭ２５に記憶し（ステップＳ５４０）、処理を終了する。
【０１１４】
このようにして、眼開閉判別処理によれば、上瞼と下瞼との間の距離に基づいて、眼の開閉を判別することができる。
【０１１５】
以上、第１の実施形態に係る眼開閉判別装置５０は、下瞼ラインの一部が白とびしていても、残りの下瞼ラインに基づいて下瞼を検出することができる。
【０１１６】
また、眼が斜めに写った場合でも、走査ウインドウを回転してエッジ群を検出するので、正確に下瞼を検出することができる。
【０１１７】
（第２の実施形態）
第１の実施形態において、眼開閉判別装置５０は、走査ウインドウを用いて走査を行い、閾値１以上の個数のエッジ群を検出した場合に、走査ウインドウをそのエッジ群の傾き角度に基づいて回転させ、回転させた走査ウインドウ内のエッジ群の信頼度を算出し、その信頼度が閾値２未満である場合には、走査ウインドウを回転させる前に戻して、走査を再開し、閾値２以上の信頼度が算出された場合には、その信頼度を有する走査ウインドウ内のエッジ群を下瞼として判別した。
【０１１８】
しかし、第２の実施形態においては、眼開閉判別装置５０は、走査ウインドウを回転させた後に、回転させた走査ウインドウで走査を行い、回転させた走査ウインドウ内のエッジ群の信頼度のうちで閾値２以上のものを抽出し、抽出した信頼度のうちで最大のものの走査ウインドウのエッジ群を下瞼として判別してもよい。
【０１１９】
第２の実施形態に係る眼開閉判別装置５０の構成は、第１の実施形態と同様である。また、第２の実施形態に係る眼開閉判別装置５０の処理は、下瞼検出処理を除いて第１の実施形態と同様である。
【０１２０】
以下、図１６を参照して、第２の実施形態における下瞼検出処理（Ｓ４００）を詳細に説明する。
【０１２１】
先ず、ＣＰＵ２４は、第１の実施形態における下瞼検出処理のＳ４０１〜４０７と同様の処理を行い、走査ウインドウを用いて走査し、閾値１以上のエッジ群を検出した場合に、エッジ群の傾き角度に基づいて、エッジ群の重心を中心として走査ウインドウを回転させる。
【０１２２】
次に、ＣＰＵ２４は、エッジ群の重心を中心とする新たな走査領域を設定する（ステップＳ４２０）。
【０１２３】
ＣＰＵ２４は、回転させた走査ウインドウを用いて新たな走査領域の上から下への走査（輝度値が暗から明に変化するエッジの検出）を開始する（ステップＳ４２１）。また、走査しながら走査ウインドウ内で検出されたエッジ群の信頼度を算出する。
【０１２４】
ＣＰＵ２４は、走査ウインドウ内で閾値２以上の信頼度を有するエッジ群が検出されたか否かを判別する（ステップＳ４２２）。
【０１２５】
閾値２以上の信頼度を有するエッジ群が検出されていないと判別した場合には（Ｓ４２２；ＮＯ）、ＣＰＵ２４は、ステップＳ４２２に戻る。
【０１２６】
閾値２以上の信頼度を有するエッジ群が検出されたと判別した場合には（Ｓ４２２；ＹＥＳ）、ＣＰＵ２４は、検出されたエッジ群の位置を下瞼候補としてＲＡＭ２５に記憶する（ステップＳ４２３）。
【０１２７】
ＣＰＵ２４は、回転させた走査ウインドウが新たな走査領域の下辺に到達したか否かを判別する（ステップＳ４２４）。
【０１２８】
回転させた走査ウインドウが新たな走査領域の下辺に到達していないと判別した場合には（Ｓ４２４；ＮＯ）、ＣＰＵ２４は、ステップＳ４２２に戻る。
【０１２９】
回転させた走査ウインドウが新たな走査領域の下辺に到達したと判別した場合には（Ｓ４２４；ＹＥＳ）、ＣＰＵ２４は、ＲＡＭ２５を参照して、閾値２以上の信頼度を有するエッジ群が存在するか否かを判別する（ステップＳ４２５）。
【０１３０】
閾値２以上の信頼度を有するエッジ群が存在しないと判別した場合には（Ｓ４２５；ＮＯ）、ＣＰＵ２４は、回転させた走査ウインドウを元に戻して走査を再開し（ステップＳ４２６）、ステップＳ４０３に戻す。
【０１３１】
閾値２以上の信頼度を有するエッジ群が存在すると判別した場合には（Ｓ４２５；ＹＥＳ）、ＣＰＵ２４は、閾値２以上の信頼度を有するエッジ群のうちで、最大の信頼度を有するエッジ群を下瞼として判別し、ＲＡＭ２５に記憶し（ステップＳ４２７）、眼開閉判別処理に進める。
【０１３２】
このようにして、第２の実施形態における下瞼検出処理によれば、所定値以上の信頼度を有するエッジ群を記憶して、そのうちから最も大きい信頼度を有するエッジ群を下瞼として判別するので、さらに正確に下瞼を検出することができる。
【０１３３】
（第３の実施形態）
また、第３の実施形態においては、眼開閉判別装置５０は、走査ウインドウを回転させた後に、回転させた走査ウインドウで走査を行い、回転させた走査ウインドウ内のエッジ群の信頼度のうちで所定の閾値以上のものを下瞼として判別してもよい。
【０１３４】
第３の実施形態に係る眼開閉判別装置５０の構成は、第１の実施形態と同様である。また、第３の実施形態に係る眼開閉判別装置５０の処理は、下瞼検出処理を除いて第１の実施形態と同様である。
【０１３５】
以下、図１７を参照して、第３の実施形態における下瞼検出処理（Ｓ４００）を詳細に説明する。
【０１３６】
先ず、ＣＰＵ２４は、第１の実施形態における下瞼検出処理のＳ４０１〜４０７と同様の処理を行い、走査ウインドウを用いて走査し、閾値１以上の個数のエッジ群を検出した場合に、エッジ群の傾き角度に基づいて、エッジ群の重心を中心として走査ウインドウを回転させる。
【０１３７】
ＣＰＵ２４は、回転させた走査ウインドウを用いて新たな走査領域の上から下への走査（輝度値が暗から明に変化するエッジの検出）を開始する（ステップＳ４３０）。また、走査しながら走査ウインドウ内で検出されたエッジ群の信頼度を算出する。
【０１３８】
ＣＰＵ２４は、走査ウインドウ内で閾値２以上の信頼度を有するエッジ群が検出されたか否かを判別する（ステップＳ４３１）。
【０１３９】
閾値２以上の信頼度を有するエッジ群が検出されていないと判別した場合には（Ｓ４３１；ＮＯ）、ＣＰＵ２４は、走査ウインドウが下瞼探索領域の下端に到達したか否かを判別する（ステップＳ４３２）。
【０１４０】
走査ウインドウが下瞼探索領域の下端に到達していないと判別すると（Ｓ４３２；ＮＯ）、ＣＰＵ２４は、ステップＳ４３１に戻す。
【０１４１】
走査ウインドウが下瞼探索領域の下端に到達したと判別すると（Ｓ４３２；ＹＥＳ）、ＣＰＵ２４は、目状態判別処理を終了する。
【０１４２】
閾値２以上の信頼度を有するエッジ群が検出されたと判別した場合には（Ｓ４３１；ＹＥＳ）、ＣＰＵ２４は、検出されたエッジ群を下瞼として判別し、ＲＡＭ２５に記憶し（ステップＳ４３３）、眼開閉判別処理に進める。
【０１４３】
このようにして、第３の実施形態における下瞼検出処理によれば、検出したエッジ群の傾き角度に合わせて回転させた走査ウインドウを用いて走査を行い、所定値以上の信頼度を有するエッジ群を検出したところで、当該エッジ群を下瞼として判別するので、全領域の探索が不要であり、正確に且つ簡単な処理で下瞼を検出することができる。
【０１４４】
（第４の実施形態）
また、第４の実施形態において、眼開閉判別装置５０は、下瞼探索領域内で輝度値が暗から明に変化するエッジ群を検出し、そのエッジ群より、例えば、ＲＡＮＳＡＣ（RANdom SAmple Consensus）法等のロバスト推定法を用いて下瞼候補として複数の直線を検出し、検出した直線の信頼度を算出し、最大の信頼度を取る直線を下瞼として判別してもよい。また、エッジの数を上瞼の重心位置から直線までの距離で割った値を信頼度として算出してもよい。
第４の実施形態に係る眼開閉判別装置５０の構成は、第１の実施形態と同様である。また、第４の実施形態に係る眼開閉判別装置５０の処理は、下瞼検出処理を除いて第１の実施形態と同様である。
【０１４５】
以下、図１８を参照して、第４の実施形態における下瞼検出処理（Ｓ４００）を詳細に説明する。
【０１４６】
先ず、ＣＰＵ２４は、上瞼検出処理で検出した左右何れかの上瞼のエッジラインの位置に基づいて、下瞼が含まれる可能性が高い下瞼探索領域を設定する（ステップＳ４４１）。
【０１４７】
ＣＰＵ２４は、下瞼探索領域の上から下へ走査を開始し、輝度値が暗から明に変化するエッジの検出を行う（ステップＳ４４２）。
【０１４８】
ＣＰＵ２４は、検出したエッジ群より、ＲＡＮＳＡＣ法等のロバスト推定法を用いて下瞼候補となる直線を検出する（ステップＳ４４３）。
【０１４９】
ＣＰＵ２４は、検出した全直線の信頼度を算出する（ステップＳ４４４）。なお、エッジの数を、上瞼の重心位置から、選択した直線までの距離で割った値を信頼度として算出する。
【０１５０】
ＣＰＵ２４は、算出した直線の信頼度が最大値を取る直線を下瞼として判別し（ステップＳ４４５）、ＲＡＭ２５に記憶し（ステップＳ４４６）、眼開閉判別処理に進める。
【０１５１】
このようにして、第４の実施形態における下瞼検出処理によれば、下瞼探索領域内のエッジ群を検出し、検出したエッジ群より、ＲＡＳＡＣ法等のロバスト推定法を用いて下瞼となる複数の直線を検出するため、ノイズの影響を受けにくい。また、検出した全直線の信頼度を算出し、最大の信頼度を有する直線を下瞼として判別するので、短時間で簡単に下瞼を検出することができる。
【０１５２】
なお、この発明は上記実施形態に限定されず、種々の変形及び応用が可能である。
【０１５３】
また、第４の実施形態において、眼開閉判別装置５０は、検出した直線の信頼度を算出し、最大の信頼度を取る直線を下瞼として判別したが、検出した直線の信頼度を算出し、所定値以上の信頼度を取る直線のうちで、上瞼に最も近いものを下瞼として判別してもよい。
【０１５４】
上記実施形態では、眼開閉判別装置５０は、上瞼又は下瞼候補を抽出する際に、ソーベルフィルタを使用したエッジ検出によって抽出したが、画像の濃度勾配を利用した濃度検出によって抽出してもよい。
【０１５５】
上記実施形態では、コンピュータ１４は、カメラ１０が撮影した対象者の顔の動画像について眼開閉判別処理を行った。しかし、応用例では、カメラ１０以外の外部装置から取得した対象者の顔の動画像を画像メモリ２２に格納しておき、その動画像について眼開閉判別処理を行ってもよい。また、複数の顔の画像について眼開閉判別処理を行ってもよい。
【０１５６】
上記実施形態では、左右どちらか片方の上瞼及び下瞼を検出したが、左右両方の上瞼及び下瞼を検出するようにしてもよい。
【０１５７】
また、上記実施形態では、顔位置検出処理（Ｓ２００）において、顔画像にソーベルフィルタ処理を施し、その画素値に基づいたヒストグラムから顔位置を検出した。しかし、応用例では、特開２００４−３１０３９６号公報に開示されているように、撮像画像を構成する各画素について時間微分し、さらに、この時間微分された画像を縦方向に投影してヒストグラムを作成し、エッジ抽出画像のヒストグラムと時間微分画像のヒストグラムとを合計して、合計したヒストグラムのピーク値の高いものを顔の両端として判別し、顔位置を検出するようにしてもよい。
【０１５８】
また、顔位置検出処理（Ｓ２００）において、テンプレートマッチング法を用い、顔画像に予め登録してあるテンプレートにマッチングさせて、顔の位置を検出してもよい。
【０１５９】
なお、本発明に係る眼開閉判別装置は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。たとえば、顔画像を入力可能な構成のコンピュータに、上記動作を実行するためのプログラムを、コンピュータシステムが読みとり可能な記録媒体（フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）に格納して配布し、当該プログラムをコンピュータシステムにインストールすることにより、上述の処理を実行する眼開閉判別装置を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有するストレージに当該プログラムを格納しておき、通常のコンピュータシステムがダウンロード等することで眼開閉判別装置を構成してもよい。
【０１６０】
また、上述の機能を、ＯＳ（Operating System）とアプリケーションとの分担、またはＯＳとアプリケーションとの協働により実現する場合などには、アプリケーション部分のみを記録媒体やストレージに格納してもよい。
【０１６１】
また、搬送波にプログラムを重畳し、通信ネットワークを介して配信することも可能である。たとえば、通信ネットワーク上のサーバに前記プログラムを格納し、ネットワークを介して前記プログラムを配信してもよい。そして、このプログラムを起動し、ＯＳの制御下で、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行できるように構成してもよい。
【０１６２】
また、その他、具体的な細部構成等についても適宜変更可能である。
【図面の簡単な説明】
【０１６３】
【図１】本発明の第１乃至４の実施形態に係る眼開閉判別装置の構成図である。
【図２】図１に示すコンピュータの構成を示すブロック図である。
【図３】ＲＯＭに格納されている各種データを説明するための図である。
【図４】設定メモリに格納されている各種データを説明するための図である。
【図５】上瞼探索領域を設定する処理の概要を説明するための図である。
【図６】検出した上瞼に基づいて下瞼探索領域を設定する処理の概要を説明するための図である。
【図７】下瞼探索領域内で下瞼を検出し、上瞼と下瞼との間の距離を算出する処理の概要を説明するための図である。
【図８】本発明の第１乃至４の実施形態に係る眼状態判別処理を説明するためのフローチャートである。
【図９】眼状態判別処理における前処理を説明するためのフローチャートである。
【図１０】眼状態判別処理における顔位置検出処理を説明するためのフローチャートである。
【図１１】顔位置検出処理における顔左右端検出処理を説明するためのフローチャートである。
【図１２】顔位置検出処理における顔上下端検出処理を説明するためのフローチャートである。
【図１３】眼状態判別処理における上瞼検出処理を説明するためのフローチャートである。
【図１４】第１の実施形態の眼状態判別処理における下瞼検出処理を説明するためのフローチャートである。
【図１５】眼状態判別処理における眼開閉判別処理を説明するためのフローチャートである。
【図１６】第２の実施形態の眼状態判別処理における下瞼検出処理を説明するためのフローチャートである。
【図１７】第３の実施形態の眼状態判別処理における下瞼検出処理を説明するためのフローチャートである。
【図１８】第４の実施形態の眼状態判別処理における下瞼検出処理を説明するためのフローチャートである。
【符号の説明】
【０１６４】
１０      カメラ（顔画像取得手段）
１２      照明光源
１４      コンピュータ
１６      表示装置
２１      Ａ／Ｄ変換器
２２      画像メモリ（顔画像取得手段）
２３      ＲＯＭ
２４      ＣＰＵ（上瞼検出手段、下瞼領域設定手段、エッジ群検出手段、信頼度取得手段、下瞼判別手段、眼開閉判別手段）
２５      ＲＡＭ
２６      表示制御装置
２８      設定メモリ
２９      操作装置
５０      眼開閉判別装置
【図１】
0005262243.tif 000002
【図２】
0005262243.tif 000003
【図３】
0005262243.tif 000004
【図４】
0005262243.tif 000005
【図５】
0005262243.tif 000006
【図６】
0005262243.tif 000007
【図７】
0005262243.tif 000008
【図８】
0005262243.tif 000009
【図９】
0005262243.tif 000010
【図１０】
0005262243.tif 000011
【図１１】
0005262243.tif 000012
【図１２】
0005262243.tif 000013
【図１３】
0005262243.tif 000014
【図１４】
0005262243.tif 000015
【図１５】
0005262243.tif 000016
【図１６】
0005262243.tif 000017
【図１７】
0005262243.tif 000018
【図１８】
0005262243.tif 000019