以下、本発明の好適な実施形態を図面に基づいて説明する。
図1は、本発明の実施形態に係る開閉眼判定装置の構成を示す機能ブロック図である。同図に示すように、開閉眼判定装置1は、被検出者の眼が開眼状態にあるか又は閉眼状態にあるかを判定するものであって、眼画像取得手段CL1、上瞼検出手段CL2、及び上瞼座標抽出手段CL3とを備えている。また、開閉眼判定装置1は、曲線近似手段CL4、相関値検出手段CL5、及び開閉眼判定閾値設定手段CL6を具備している。さらに、開閉眼判定装置1は、上瞼曲率検出手段CL7、及び開閉眼判定手段CL8を有している。
眼画像取得手段CL1は、被検出者の眼を含む眼画像を取得するものである。また、眼画像取得手段CL1は、入力した眼画像のデータを、上瞼検出手段CL2に送信する構成とされている。
上瞼検出手段CL2は、眼画像取得手段CL1により取得された眼画像から、上瞼を検出するものである。また、上瞼検出手段CL2は、検出した上瞼のデータを上瞼座標抽出手段CL3に送信する構成となっている。
上瞼座標抽出手段CL3は、上瞼検出手段CL2によって検出された上瞼から、上瞼を構成する座標群を抽出するものである。また、上瞼座標抽出手段CL3は、検出した抽出した上瞼を構成する座標群のデータを曲線近似手段CL4、相関値検出手段CL5及び上瞼曲率検出手段CL7に送信する構成となっている。
曲線近似手段CL4は、上瞼座標抽出手段CL3により抽出された上瞼の座標群から上瞼を二次以上の曲線に近似するものである。この曲線近似手段CL4は、例えば上瞼座標抽出手段CL3により抽出された上瞼の座標群から最小二乗法によって、二次の線形多項式に近似する。また、曲線近似手段CL4は、近似した曲線近似線の情報を相関値検出手段CL5に送信する構成となっている。
相関値検出手段CL5は、上瞼座標抽出手段CL3により抽出された上瞼の座標群と、曲線近似手段CL4により近似された曲線近似線との相関値を検出するものである。この相関値検出手段CL5は、相関値を検出すると、このデータを開閉眼判定閾値設定手段CL6に送信する構成となっている。
開閉眼判定閾値設定手段CL6は、相関値検出手段CL5により検出された相関値が基準値よりも高い場合、相関値が基準値以下の場合よりも、開閉眼判定の基準となる開閉眼判定閾値を大きく設定するものである。また、開閉眼判定閾値設定手段CL6は、設定した開閉眼判定閾値の情報を、開閉眼判定手段CL8に送信する構成となっている。
上瞼曲率検出手段CL7は、上瞼座標抽出手段CL3により抽出された座標群から、上瞼の曲率を検出するものである。上瞼曲率検出手段CL7は、検出した上瞼の曲率のデータを開閉眼判定閾値設定手段CL6及び開閉眼判定手段CL8に送信する構成となっている。
開閉眼判定手段CL8は、上瞼曲率検出手段CL7により検出された上瞼の曲率が、開閉眼判定閾値設定手段CL6により設定された開閉眼判定閾値以上の場合に開眼と判定し、開閉眼判定閾値に満たない場合に閉眼と判定するものである。また、開閉眼判定手段CL8は、居眠り検出装置などに接続されており、判定した開閉眼の結果を当該装置に送信する構成となっている。
ここで、眼画像取得手段CL1は、詳細には以下の構成となっている。すなわち、図1に示すように、眼画像取得手段CL1は、顔画像取得手段CL11と眼検出手段CL12とを有している。顔画像取得手段CL11は、被検出者の前方略正面に設置され、被検出者の顔全体を撮像するものである。また、眼検出手段CL12は、顔画像撮像手段CL11によって撮像された顔全体を含む画像から被検出者の眼を検出するものである。そして、眼画像取得手段CL1は、眼検出手段CL12によって検出された眼を含み顔画像よりも小さくされた微小画像を、顔画像から抽出して眼画像とする構成となっている。
また、開閉眼判定閾値設定手段CL6は詳細には以下のようになっている。すなわち、図1に示すように、開閉眼判定閾値設定手段CL6は、第1算出手段CL61と第2算出手段CL62とを備えている。第1算出手段CL61は、開眼時の上瞼の曲率の代表値から設定される第1判定閾値を算出するものである。また、第2算出手段CL62は、閉眼時の上瞼の曲率の代表値から設定される第2判定閾値を算出するものである。
さらに、図1に示すように第1算出手段CL61は、第1サンプリング手段CL611と、第1代表値算出手段CL612とを有している。第1サンプリング手段CL611は、上瞼の曲率を所定数サンプリングするものである。第1代表値算出手段CL612は、第1サンプリング手段CL611によってサンプリングされた所定数の曲率から、平均値、中央値又は最頻値のいずれか1つを算出し、算出した値を第1の統計的代表値とするものである。
また、図1に示すように第2算出手段CL62は、第2サンプリング手段CL621と、第2代表値算出手段CL622とを有している。第2サンプリング手段CL621は、上瞼の曲率を所定数サンプリングするものである。第2代表値算出手段CL622は、第2サンプリング手段CL621によってサンプリングされた所定数の曲率から、平均値、中央値又は最頻値のいずれか1つを求めるものである。
なお、第1算出手段CL61及び第2算出手段CL62については、後述のフローチャートにて詳細に説明するものとする。
図2は、本発明の実施形態に係る開閉眼判定装置1のハード構成図である。同図に示すように、TVカメラ2が自動車のインストルメント上に設けられている。TVカメラ2は、運転者を略正面から撮像できる位置に設置されており、少なくとも運転者の顔全体を撮影するようにされている。すなわち、このTVカメラ2が図1を参照して説明した顔画像取得手段CL11を構成している。
また、TVカメラ2の入力画像は、本実施形態では、例えば横方向(X)640画素、縦方向(Y)480画素からなる。TVカメラ2で撮像された入力画像は、インストルメント裏側など車体内部に設置されたマイクロコンピュータ(以下、マイコンという)3に画像データとして入力される。
マイコン3には、眼検出手段CL12、上瞼検出手段CL2、上瞼座標抽出手段CL3、曲線近似手段CL4、相関値検出手段CL5、開閉眼判定閾値設定手段CL6、上瞼曲率検出手段CL7、及び開閉眼判定手段CL8を構成するプログラムロジックがプログラミングされている。そして、マイコン3は、TVカメラ2からの顔全体を含む画像のデータを入力すると、プログラムを実行して、運転者の開閉眼を判定していくこととなる。
また、TVカメラ2等は、図3に示す構成であってもよい。図3は、顔画像取得手段CL11の他の例を示すハード構成図である。この例の場合、顔画像取得手段CL11としてのTVカメラ2は、運転者の頭部に取り付けられている。また、TVカメラ2は、ミラー4を介して眼を撮像するように構成されている。このように、ミラー4を介して眼の周辺部のみを撮像することにより、図1に示した眼検出手段CL12を不要にし、構成及び処理の簡素化を図ることができる。
なお、TVカメラ2は、ミラー4の位置に設置され、直接に眼を撮像する構成とされてもよい。さらに、TVカメラ2は、インストルメント上に設置されされ、運転者に視点の位置を自動追尾しながら眼を撮像する構成とされてもよい。
ここで、本実施形態に係る開閉眼判定装置1の動作の概略を、図1を参照して説明する。まず、眼画像取得手段CL1は、被検出者の顔を撮像して眼を含む眼画像を取得する。次いで、上瞼検出手段CL2は、被検出者の上瞼を検出する。
そして、上瞼座標抽出手段CL3は、上瞼検出手段CL2により検出された被検出者の上瞼について座標群を抽出する。また、曲線近似手段CL4は、上瞼座標抽出手段CL3により抽出された上瞼の座標群から、上瞼を二次以上の曲線に近似する。次いで、相関値検出手段CL5は、上瞼の座標群と近似された二次以上の曲線との相関値を検出する。
ここで、図4を参照して相関値検出手段CL5を詳細に説明する。図4は、上瞼の様子を示す説明図であり、(a)は眼の周りにノイズが少ない場合の例を示し、(b)は眼の周りにノイズが多い場合の例を示している。なお、図4(a)及び(b)ではそれぞれ眼部分を画像処理したときの様子についても図示している。
まず、図4(a)に示すように、眼の周りにノイズが少ない場合、画像処理の様子から明らかなように、上瞼座標抽出手段CL3により抽出される上瞼の座標群は上に凸の弧状となる。また、曲線近似手段CL4により近似される曲線近似線についても、後述の曲線近似手段CL4に係る説明から明らかなように、上に凸の弧状となる。従って、眼の周りにノイズが少ない場合、上瞼の座標群と曲線近似線との相関値は高くなる。
一方、図4(b)に示すように、眼の周りにノイズが多い場合、画像処理の様子から明らかなように、上瞼の座標群は上に凸の弧状に検出されることはなく、途切れ途切れの線として検出される。そして、曲線近似線は上に凸の弧状となることから、眼の周りにノイズが多い場合、上瞼の座標群と曲線近似線との相関値は低くなる。
再度図1を参照する。上瞼曲率検出手段CL7は、上瞼座標抽出手段CL3により抽出された座標群から、上瞼の曲率を検出する。ここで、眼の周りにノイズが少ない場合、上瞼曲率検出手段CL7は曲率を正確に検出しやすく、眼の周りにノイズが多い場合、上瞼曲率検出手段CL7は曲率を正確に検出し難くなる。
ここで、曲率と相関値とは次のような関係がある。図5は、上瞼の曲率半径と相関値との関係を示す説明図であり、(a)は眼の周りにノイズが少ない場合の例を示し、(b)は眼の周りにノイズが多い場合の例を示している。なお、図5において縦軸は曲率半径を示し、横軸は相関値を示している。
まず、眼の周りにノイズが少ない場合、図5(a)に示すように、相関値は高く「1」付近に集中している。すなわち、眼の周りにノイズが少ない場合、上瞼の座標群及び曲線近似線の双方を精度よく求めることができるため、相関値は高く「1」付近に集中している。また、ノイズが少ない場合、上瞼の曲率も正確に求められることから、開眼時と閉眼時との曲率の値は異なることとなる。すなわち、図5(a)に示すように、開眼時における曲率半径は「100」以下の値を示し、閉眼時における曲率半径は「100」より大きい値を示すこととなる。従って、開閉眼判定装置1は、曲率半径が「100」となるように開閉眼判定閾値を設定することで、精度良く開閉眼判定できることとなる。
他方、眼の周りにノイズが多い場合、図5(b)に示すように、相関値は約「0.4」から「1」までのばらついて検出されることとなる。すなわち、眼の周りにノイズが多い場合、ノイズの影響から相関値が「0.4」付近などの低い値となる場合がある。また、ノイズが多い場合、上瞼の曲率を正確に求め難い。よって、開眼時における曲率半径は相関値が約「0.85」よりも高い場合に「170」以下の値を示しているが、相関値が約「0.85」以下である場合、約「350」付近まで検出されることとなる。同様に、閉眼時における曲率半径は相関値が約「0.85」より高い場合に「170」以上の値を示しているが、相関値が約「0.85」以下である場合、約「350」付近まで検出されることとなる。
このため、開閉眼判定装置1は、曲率半径が「170」となるように開閉眼判定閾値を設定したとしても、開閉眼判定を精度良く行うことができず、被検出者が開眼状態であるにも関わらず、閉眼と誤判定してしまうことがある。
そこで、開閉眼判定閾値設定手段CL6は、相関値検出手段CL5により検出された相関値が基準値よりも高い場合、相関値が基準値以下の場合よりも、開閉眼判定閾値を大きく設定することとしている。
具体的に図5(b)に示す例の場合、本装置1は、基準値を図6に示すようにし、開閉眼判定閾値を図7に示すようにする。図6は、基準値の説明図であり、図7は、開閉眼判定閾値の説明図である。なお、図6において縦軸は出現頻度を示し、横軸は相関値を示している。また、図7において縦軸は曲率半径を示し、横軸は相関値を示している。
まず、図6に示すように、眼の回りにノイズが多い場合であっても、相関値はほぼ「0.85」を超えることとなる。また、相関値が「0.85」を超える場合、図5(b)に示すように、開眼と閉眼とは、曲率半径が約「170」を境として切り分けられることとなる。従って、相関値が「0.85」を超える場合、図7に示すように開閉眼判定閾値を曲率半径「170」となるように設定すれば、開眼と閉眼とを正確に判定できることとなる。
一方、相関値が「0.85」以下の場合、図5(b)に示すように、開眼と閉眼との切り分けは困難であるが、開眼時において上瞼の曲率半径は「350」を超えることがない。従って、相関値が「0.85」以下の場合、図7に示すように開閉眼判定閾値を曲率半径「350」となるように設定すれば、開眼を誤って閉眼と判定しないようにすることとなる。
以上から、開閉眼判定閾値設定手段CL6は、相関値が「0.85」を超える場合、開閉眼判定閾値を曲率半径「170」で設定する。また、開閉眼判定閾値設定手段CL6は、相関値が「0.85」以下の場合、開閉眼判定閾値を曲率半径「350」で設定する。これにより、本装置1は、開眼時に閉眼と誤判定してしまう可能性を減じている。
そして、開閉眼判定手段CL8は、上瞼曲率検出手段CL7により検出された上瞼の曲率が、開閉眼判定閾値設定手段CL6により開閉眼判定閾値以上の場合に開眼と判定し、開閉眼判定閾値に満たない場合に閉眼と判定する。
なお、上記の曲率半径「170」及び「350」という値は、図5(b)に示す場合において好適な開閉眼判定閾値であって、他の被検出者を撮像した場合などには、値が異なることは言うまでもない。
次に、本実施形態に係る開閉眼判定装置1の詳細動作について説明する。なお、本装置1は、自動車、鉄道車両、船舶の運転者やプラントのオペレータ等の開閉眼検知に用いることができるが、以下の説明においては、自動車の運転者の開閉眼検知に用いることができる開閉眼判定装置1を例に説明することとする。
図8は、第1実施形態に係る開閉眼判定装置1の動作の概略を示すメインフローチャートである。同図に示すように、まず、処理が開始されると、マイコン3は、初期値入力処理を実行する(ST10)。この初期値入力の処理では、サンプリング時間などの各種定数が読み込まれる。
その後、マイコン3は、処理フレームカウンタ「i」を「0」に初期化する(ST11)。初期化後、マイコン3は、終了判断処理を実行する(ST12)。この際、マイコン3は、例えばエンジンが起動しているか等に基づいて判断を行う。
そして、マイコン3は、「STOP」か否かを判断する(ST13)。例えばエンジンが起動されていないと判断した場合、マイコン3は、「STOP」であると判断し(ST13:YES)、処理は終了することとなる。
一方、エンジンが起動され走行しているなどにより、「STOP」でないと判断した場合(ST13:NO)、マイコン3は、眼画像の取得処理を実行する(ST14)。これにより、図2に示す構成例にあっては、TVカメラ2が運転者の顔全体を撮像し、マイコン3が顔全体の画像から眼画像を取得する。また、図3に示す構成の場合、TVカメラ2は直接に眼画像を取得することとなる。また、この処理は、マイコン3が眼画像取得手段CL1に相当するプログラムを実行することにより為される。
図9は、図8に示した眼画像取得処理(ST14)の詳細な動作を示すフローチャートである。本装置1が図2に示す構成を採用している場合、以下の処理により眼画像が取得される。
まず、同図に示すように、ステップST13にて「NO」と判断された場合、TVカメラ2は、運転者の顔全体を撮像することにより顔画像を取得する(ST30)。そして、マイコン3は、眼の候補位置の特定処理を実行する(ST31)。この処理により、画像全体から眼の候補位置が1又は複数特定される。具体的には、画像全体から左眼及び右眼である可能性を有する候補の位置が1又は複数特定される。
その後、マイコン3は、眼判定処理を実行する(ST32)。すなわち、ステップST31により特定された候補のうち1つを対象とし、その1つが眼であるか否かを判断する。この処理において、マイコン3は、候補が眼であると判断した場合、この眼を含み顔画像よりも小さくされた微小画像を、顔画像から抽出して眼画像とする。
その後、マイコン3は、眼判定処理(ST32)の結果に基づいて候補が眼であると判定されたか否かを判断する(ST33)。ここで、ステップST32において候補が眼であると判定されず、眼画像が取得できていない場合には、マイコン3は、候補が眼でなかったと判断する(ST33:NO)。そして、マイコン3は、ステップST31にて特定された候補のすべてについて判定したか否かを判断する(ST34)。すべてについて判定した場合(ST34:YES)、処理は図8のステップST15に移行する。
一方、すべてに対して判定していない場合(ST34:NO)、処理はステップST32に戻る。そして、マイコン3は、ステップST32にて、他の候補を選択し、再度、選択した候補が眼であるか否かを判断することとなる。
ところで、ステップST32において候補が眼であると判断され、眼画像が抽出された場合、マイコン3は候補が眼であったと判断する(ST33:YES)。そして、マイコン3はステップST32において抽出された眼画像を取得し、処理はステップST15に戻る。
以上のようにして、本装置1は眼画像を取得する。なお、眼である可能性を有する候補を特定する処理(ST31)及び眼判定処理(ST32)は、マイコン3が眼検出手段CL12に相当するプログラムを実行することによって、以下のようにして行われる。
図10は、図9に示した眼候補位置特定処理(ST31)の詳細を示すフローチャートである。同図において、まず、マイコン3は、撮像した画像のデータ全体を、全体画像として画像メモリに保存する(ST40)。
次に、マイコン3は、ステップST41の判断を行う。この判断については後述する。ステップST41において「NO」と判断された場合、マイコン3は、全体画像の縦方向(Y軸方向)の画素列のうち1ラインのみに沿って濃度値の相加平均演算を行う(ST42)。
この相加平均演算は、例えば縦方向に並ぶ所定数の画素について、濃度の平均値を求め、所定数の画素のうちの1画素の濃度値を平均値とする処理である。例えば、所定数が「5」である場合、画面上方から1〜5番目に位置する画素を選択して平均値を求め、この平均値を5番目の画素の濃度値とする。次に、画面上方から2〜6番目に位置する画素を選択して平均値を求め、この平均値を6番目の画素の濃度値とする。そして、これを順次繰り返し、1ラインすべての画素について濃度の平均値を求める。
このように相加平均演算することで、本装置1は、画像データ撮影時の濃度変化の小さなバラツキを無くすことができ、濃度値の大局的な変化を捉えることができる。
相加平均演算後、マイコン3は、縦方向に相加平均値の微分演算を行う(ST43)。そして、マイコン3は、微分値に基づいてポイント抽出を行う(ST44)。このポイント抽出とは、縦方向の画素列に沿って画素濃度の相加平均値の局所的な高まり毎に1個ずつの画素を定める処理であって、例えば相加平均値の微分値が負から正に変化する画素を定める処理である。
ポイントとなる画素を定めた後、マイコン3は、現在ポイント抽出していたラインを次ラインへ切り替える(ST45)。
そして、マイコン3は、縦方向の全ラインでのポイント抽出が終了したか否かを判断する(ST41)。全ラインでのポイント抽出が終了していないと判断した場合(ST41:NO)、前述のステップST42〜ST45の処理を経て、再度ステップST41に戻る。
一方、全ラインでのポイント抽出が終了したと判断した場合(ST41:YES)、隣り合う各ラインの抽出ポイントのY座標値を比較する。そして、Y座標値が所定値以内の場合、連続データとして、(i)連続データのグループ番号、(ii)連続開始ライン番号、(iii)連続データ数をメモリする。また、(iv)連続データを構成する各抽出ポイントの縦方向位置の平均値(その連続データの代表上下位置)、(v)連続開始ラインと終了ラインの横方向位置の平均値(その連続データの代表左右位置)をメモリする(ST36)。
なお、本実施形態では、眼を検出対象としているため、連続データは横方向比較的長く延びるものとなる。このため、マイコン3は、連続データ形成後、横方向に所定値以上続くことを条件に連続データを選択することができる。
その後、マイコン3は、各連続データについて代表座標値Cを定め、これを基準として存在領域EAを設定する(ST47)。この代表座標値Cとは、ステップST46の処理において、メモリされたX座標値の平均値及びY座標値の平均値により決定されるものである(上記iv,vに示す平均値)。
代表座標値Cを定めて存在領域EAを設定した後、処理は、図5のステップST32に移行する。以上が、眼候補位置特定処理(ST31)である。以上のようにして、求められた連続データが眼の候補となり、連続データの代表座標値Cが眼の候補点の位置となる。
図11は、図10に示したステップST46の処理にて形成される連続データ、並びにステップST37の処理にて定められる代表座標値C及び存在領域EAを示す説明図である。なお、眼候補位置特定処理(ST31)は、1又は複数の眼の候補を特定するものであるが、図7では複数の眼の候補が特定された場合を例に説明する。
同図に示すように、マイコン3は、複数の連続データGを形成している。これは、眼を検出対象としているため、眼と似た特徴量を示すもの(口、鼻、眉毛など)が検出されるためである。
連続データGは、前述したように、縦方向の画素列ごとに定められた抽出ポイントが画像横方向に隣接する場合に形成されるものである。そして、この連続データを形成する横方向両端画素のX座標値の平均値と、連続データを形成する各画素のY座標値の平均値により、代表座標値Cが決定される。さらに、存在領域EAは、この代表座標値Cを基準として設定される。
次に、存在領域EAの設定方法を説明する。図12は、図11に示した存在領域EAの大きさを示す説明図であり、図13及び図14は数人の眼の大きさを調べた横Xa、縦Yaの長さの統計データを示す説明図であり、図15は存在領域EAの画像上の位置を決定する方法を示す説明図である。
存在領域EAの設定は、まず、存在領域EAの大きさが決定され、その後、存在領域EAの画像上における位置が定められることでなされる。
存在領域EAの大きさは、ノイズ(顔の皺や明暗などを抽出してしまう)の低減や処理速度を落とさないためにも、可能な限り小さい領域が良い。本実施形態では、数人の眼の大きさを調べ、それに余裕分(例えば×1.5倍)を加味して、存在領域EAの大きさを決定している。すなわち、図13及び図14のように、眼の縦横寸法のデータを集め、その分布の例えば95%をカバーする寸法に余裕分を加味して決定している。
そして、存在領域EAの大きさは、図12にも示すように、上記95%をカバーする寸法、すなわち横寸法xa、縦寸法yaに余裕分(×1.5)を加味して決定している。なお、存在領域EAの大きさについては、画像処理により眼の幅や高さを推定し、縦横の大きさに余裕分を加える大きさとしてもよい。
このように存在領域EAの大きさが決定された後、図15に示すように、例えば眼の座標値(x1,y1)を基準に、基準点Pを決める。基準点Pは、眼の座標値(x1,y1)から距離x2,y2だけ離れた位置に定められるものである。
そして、マイコン3は、点Pを基準に存在領域EAの寸法x3,y3を描画する。これにより、存在領域EAの位置が決定される。その後、画像全体で見つかった連続データGすべてについて存在領域EAを設定する。
なお、上記のx2及びy2はx3,y3の1/2であって、予め存在領域EAが眼の中心にくるような長さとすることが望ましい。
以上の図10〜図15の処理により、図9の眼候補位置特定処理(ST31)がなされる。次に、図9に示した眼判定処理(ST32)を説明する。図16は、図9に示した眼判定処理(ST32)の詳細を説明するフローチャートである。
まず、マイコン3は、図10の処理にて求められた存在領域EAの画像データを微少画像IGとして画像メモリに保存する(ST50)。全体画像と画像メモリに保存される微小画像IGとの状態を図17に示す。図17は、微小画像を示す説明図である。図13に示すように、マイコン3は、全体画像から存在領域EA内の画像を抽出し、微小画像IGとしている。
再度、図16を参照して説明する。マイコン3は、全体画像の代表座標値Cを微少画像IGの代表座標値ICとする。そして、マイコン3は、微少画像IGの代表座標値ICを基準とした範囲ARを設定し、範囲ARの濃度情報をもとに二値化閾値を設定する(ST51)。
範囲ARでの二値化閾値の算出方法の一例を、図18を参照して説明する。図18は、範囲ARでの二値化閾値の算出方法の説明図である。まず、マイコン3は、範囲ARにおいて縦方向に数ラインの濃度値を読み出す。
そして、マイコン3は、各ラインにおいて濃度値の最も高い(明るい)濃度値と、最も低い(暗い)濃度値をメモリしていく。全ラインのメモリが終了したら、マイコン3は、各ラインの最も高い(明るい)濃度値の中で、一番低い濃度値(皮膚の部分)と、各ラインの最も低い(暗い)濃度値の中で、一番低い濃度値(眼の部分)とを求める。そして、その中央値を二値化閾値とする。
なお、上記した範囲ARは、好適に二値化閾値を決定するため、眼の黒い部分と眼周囲の皮膚の白い部分が入るように設定される。また、範囲ARは、画像の明るさのバラツキによる影響を少なくするために必要最小限の大きさにされる。
さらに、二値化閾値は、範囲AR内の眼の一番低い(暗い)濃度値と、皮膚部分の一番低い(暗い)濃度値の中央値とすることで、皮膚の部分から眼の部分を切り出すのに適した値になる。
ここで、二値化閾値を決定するのに皮膚部分における一番低い(暗い)濃度値を用いている理由は、次の通りである。例えば、範囲ARの一部に直射光が当たっている場合、皮膚部分は、眼球の黒色部分に比して、光を強く反射する傾向にある。このため、本装置1は、多くのノイズとも言える光を入力してしまうこととなる。
この場合、濃度値を読み出す範囲ARを極力小さくしても、画像がノイズ光による影響を受け、本装置1は正確な二値化閾値を決定できなくなってしまう。このため、本実施形態では、強く反射している可能性がある濃度値の高い部分を用いず、皮膚の部分の濃度値の一番低い(暗い)濃度値を用いることで、より適切な二値化閾値を決定できるようにしている。
再度、図16を参照して説明する。二値化閾値の決定後、マイコン3は、決定した二値化閾値を用いて微少画像IGを二値化処理し、二値画像bGとして画像メモリに保存する(ST52)。
次に、マイコン3は、全体画像の代表座標値Cを二値画像bGの位置bCとし、この位置bCを初期位置として設定する(ST53)。その後、マイコン3は、設定位置が黒画素か否かを判断する(ST54)。ここでは、まず、ステップST53において設定された初期位置が黒画素か否か判断される。
そして、設定位置が黒画素でないと判断した場合(ST54:NO)、マイコン3は、設定位置を上下左右に1画素ずつずらす(ST55)。その後、マイコン3は、ステップST55においてずらされた設定位置が黒画素か否かを判断する。そして、マイコン3は、設定位置が黒画素と判断されるまで、この処理を繰り返す。
一方、設定位置が黒画素であると判断した場合(ST54:YES)、マイコン3は、その黒画素の連結成分を候補オブジェクトとして設定する(ST56)。そして、マイコン3は、候補オブジェクトの幾何形状を算出する(ST57)。
算出後、マイコン3は、予め記憶している眼のテンプレートの幾何形状と候補オブジェクトの幾何形状とを比較する(ST58)。候補オブジェクトと眼のテンプレートとの幾何形状の比較方法の一例を、図19を参照して説明する。
図19は、候補オブジェクトと眼のテンプレートとの幾何形状の比較方法の説明図であり、(a)は候補オブジェクトが最適な状態で撮像された場合を示し、(b)は眼の右側が欠けた状態を示し、(c)は眼の左側が欠けた状態を示している。
眼の画像を二値化した形状は光環境が良く安定した画像であれば図19(a)に示すようなものになる。ところが、車室内に直射日光が一側から当たる等して光環境が悪化したときには、図19(b)及び(c)に示すように、一部が欠けた形状になることもある。
マイコン3は、上記のような候補オブジェクトを正確に判断するために、3つの条件により比較判断を行う。まず、条件(i)としては、横幅が眼の相場値の2/3以上あり、且つ上に凸の所定範囲の曲率を持っていることである。次に、条件(ii)としては、黒眼の左側の凹み形状があることである。また、条件(iii)としては、黒眼の右側の凹み形状があることである。
再度、図16を参照して説明する。幾何形状の比較後、マイコン3は、上記3つの条件に基づき、比較判断を行い、候補オブジェクトと眼テンプレートとの幾何形状が一致するか否かを判断する(ST59)。ここで、図19(b)及び(c)のように眼の形状の一部が欠けている場合を考慮し、マイコン3は、条件(i)及び(ii)を満たすもの、並びに条件(ii)及び(iii)を満たすものを一致すると判断する。
一致しないと判断した場合(ST59:NO)、マイコン3は、その候補オブジェクトが眼でないと判定し(ST60)、その後、処理は、図9のステップST33に移行する。
一方、一致すると判断した場合(ST59:YES)、マイコン3は、その候補オブジェクトを眼であると判定する(ST61)。そして、判定された候補オブジェクトの座標値(全体画像における代表座標値Cに相当する)を、画像上における眼の座標値としてメモリする(ST62)。
その後、マイコン3は、一致と判断された候補オブジェクトを含む微小画像IGを眼画像MGiとして、画像メモリに保存する(ST63)。そして、処理は、図9のステップST33に移行する。
なお、図16の処理では、二値化閾値を用いて二値化した候補オブジェクトを検出している。このため、本実施形態では、眼の部分と他の部分(背景や眼以外の顔部分)とを明確に区別し、眼を正確に捉えることができる。さらには、候補オブジェクトの幾何形状を用いた判定をより正確に行うことができ、眼の位置検出精度をより向上させることができる。
以上、図11〜図19を参照して説明したように、マイコン3(眼検出手段CL12)は、入力した画像全体から、眼画像を取得することとなる。そして、前述したように、図9のステップST33において、眼画像が取得されている場合、「YES」と判断されて、処理は図8のステップST15に移行することとなる。
再度、図8を参照する。ステップST15において、マイコン3は、眼画像を取得できたか否かを判断する(ST15)。ここで、眼画像が取得できなかったと判断した場合(ST15:NO)、処理はステップST27に移行する。一方、眼画像が取得できたと判断した場合(ST15:YES)、マイコン3は、上瞼検出処理を実行する(ST16)。この処理において、マイコン3は、上瞼検出手段CL2に相当するプログラムを実行して、眼画像内から上瞼を検出することとなる。
ここで、上瞼の検出については、種々の方法がある。マイコン3は、それら方法のうちいずれか1つ以上により、上瞼を検出する。具体例を挙げると、マイコン3は、眼画像について画像縦方向にエッジ検出し、検出されたエッジのうち画像縦方向において上に凸となるものを上瞼として検出する。
次いで、マイコン3は、上瞼を検出できたか否かを判断する(ST17)。ここで、上瞼を検出できなかったと判断した場合(ST17:NO)、処理はステップST27に移行する。一方、上瞼を検出できたと判断した場合(ST17:YES)、マイコン3は、上瞼の座標を抽出する(ST18)。この処理において、マイコン3は、上瞼座標抽出手段CL3に相当するプログラムを実行して、上瞼座標群を抽出することとなる。
図20は、図8に示した上瞼検出処理(ST16)及び上瞼座標抽出処理(ST18)の詳細な動作を示す説明図であり、(a)は取得された眼画像の一例を示し、(b)は眼画像について画像縦方向にエッジ検出処理を施した画像例を示し、(c)は(b)に示す画像に画像処理を施したときの画像例を示し、(d)は(c)に示す画像に画像処理を施したときの画像例を示している。
まず、図20(a)に示すような眼画像が取得された場合、マイコン3は、眼画像縦方向にエッジ検出する。これにより、マイコン3は、図20(b)に示すように、上瞼の上側部分のエッジラインと、上瞼の下側及び黒眼の結合からなるエッジラインとを検出する。
ここで、上瞼の上側部分のエッジラインが上に凸であるため、上瞼検出手段CL2は、このエッジラインを上瞼として検出することとなる。次いで、マイコン3は、上瞼の上側部分のエッジラインから、上瞼の座標を抽出する。これにより、マイコン3は、上瞼の座標群を抽出することとなる。
また、上瞼の上側部分のエッジラインから上瞼の座標を抽出する方法に代えて、以下の方法を採用してもよい。すなわち、マイコン3は、上瞼の下側と黒眼との結合からなるエッジラインについて、不連続点を見つける。不連続点とは、エッジラインを画像横方向(X軸方向)に走査していた場合に、画像縦方向についての座標値(Y値)が増加から減少に転じる点、又は減少から増加に転じる点をいう。
ここで、上瞼の下側と黒眼との結合からなるエッジラインについては、不連続点は2つとなる。このため、マイコン3は、図20(c)に示すように、2つの不連続点を線で結ぶことにより補完する(図20(c)の補完線1)。これにより、マイコン3は、上瞼の下側部分についてエッジラインを得ることとなる。そして、マイコン3は、上瞼の下側部分のエッジラインから上瞼の座標群を抽出する。
さらに、マイコン3は、図20(c)に示すように、上瞼の上側エッジラインと下側エッジラインの端部を補完し(図20(c)の補完線2)、図20(d)に示すように、上側エッジラインと下側エッジラインとで閉空間を形成してもよい。この場合、マイコン3は、閉空間を上瞼の領域とし、この空間内の点を上瞼の座標群として抽出することとなる。
以上のようにして、マイコン3は、上瞼を検出して座標群を抽出する。次いで、マイコン3は、上瞼の曲線近似処理を実行する(図8:ST19)。この処理においてマイコン3は、曲線近似手段CL4に相当するプログラムを実行して、上瞼の曲線近似線を得ることとなる。
次に、曲線近似処理(ST19)について詳細に説明する。マイコン3は、ステップST18において抽出した座標(x,y)の群を、所定の関数f(x,y)=cで表される曲線に近似する。ここで、(x,y)は、眼画像の左上端を原点とした座標系により表されるとする。また、関数f(x,y)=cは、二次以上の多項式で表される。この多項式は、近似された曲線の頂点部分が原点となるように変換された座標系においては、偶数次項のみで構成される式となる。これは、頂点部分が原点となる座標系において奇数次項が含まれる式では、曲線形状の左右対称性や単頂点性が損なわれてしまうためである。
なお、ここでは、二次曲線のうち計算が容易に行える放物線y=ax2+bx+cに近似を行うとして説明するが、マイコン3は、円、楕円、双曲線といった円錐曲線や、ax2+2hxy+by2+2gx+2fy+c=0で表される一般の二次曲線や、二次以上の曲線であっても、同様の手順を踏むことによって曲線近似を行うことができることはいうまでもない。
次に、図21を参照する。図21は、曲線近似処理(ST19)の詳細を示すフローチャートである。図21に示すように、マイコン3は座標群を最小二乗法により近似する。すなわち、まず、マイコン3は座標群を構成する各点の座標値(x,y)の総和値を求める(ST70)。このとき、マイコン3は、座標値x、座標値y及び座標値xを二乗した値について、総和を求める。具体的にマイコン3は以下の式により、これらの総和値を求める。
その後、マイコン3は、各総和値の平均値を求める(ST72)。具体的にマイコン3は以下の式により、これらの平均値を求める。
そして、マイコン3は、求めた平均値から、以下の式により、分散値及び共分散値を求める(ST73)。
その後、マイコン3は、求めた分散値及び共分散値から、以下の式により、回帰係数a,b及び定数項cを求める(ST74)。
これにより、マイコン3は、エッジラインを放物線y=ax2+bx+cに近似する。なお、図21の説明において、マイコン3は、放物線y=ax2+bx+cにエッジラインを近似したが、円、楕円、双曲線といった円錐曲線やax2+2hxy+by2+2Gx+2fy+c=0で表される一般の二次曲線に近似するようにしてもよい。
再度、図8を参照する。曲線近似処理(ST19)の後、マイコン3は、上瞼の曲率算出処理を実行する(ST20)。すなわち、マイコン3は、上瞼曲率検出手段CL7に相当するプログラムを実行して、曲率を検出することとなる。
ここで、マイコン3は、上瞼座標抽出手段CL3により抽出された座標群から、上瞼の曲率を検出する。このとき、マイコン3は、上記と同様にして曲線近似線を得て、曲線近似線から曲率Rを検出する。
ここで、マイコン3が近似曲線線(放物線)から曲率Rを検出する処理の詳細を説明する。まず、曲線近似線が式y=ax2+bx+cの式により表される場合、曲率Rは二次項の回帰係数aとなる。また、マイコン3が、エッジラインを円(x−a)2+(y−b)2=rや楕円(x−a)2/rx+(y−b)2/ry=1に近似していたとする。このとき、曲率Rは、円の場合、R=1/rとなる。また、楕円場合、
となる。なお、マイコン3が、エッジラインを放物線、円及び楕円以外に近似した場合については説明を省略する。
このように、曲率を求めた後、マイコン3は、上瞼の座標群と曲線近似線との相関値を算出する処理を実行する(ST21)。この処理において、マイコン3は、相関値検出手段CL5に相当するプログラムを実行して、相関値を検出することとなる。
具体的にマイコン3は、上瞼の座標群を構成する各点のY値の総平方和に対する曲線近似線のY値の総平方和の値を求め、この値を相関値として検出する。すなわち、
なる式から相関値を検出する。
その後、マイコン3は、開閉眼判定閾値設定処理を実行する(ST22)。図22は、図8に示した開閉眼判定閾値設定処理(ST22)の詳細を示すフローチャートである。まず、マイコン3は、第1及び第2判定閾値が設定されているか否かを判断する(ST80)。ここで、第1判定閾値とは相関値が基準値より高いときに設定される閾値である。すなわち、図5(b)について言えば、基準値が「0.85」より高いときに設定される曲率半径を「170」とする閾値である。また、第2判定閾値とは相関値が基準値以下のときに設定される閾値である。すなわち、図5(b)について言えば、基準値が「0.85」以下のときに設定される曲率半径を「350」とする閾値である。
そして、第1及び第2判定閾値が設定されていないと判断した場合(ST80:NO)、マイコン3は、ステップST81〜ST86に示すように、第1及び第2判定閾値算出処理を実行する。従って、マイコン3は、ステップST80において「NO」と判断されると、第1算出手段CL61及び第2算出手段CL62に相当するプログラムを実行することとなる。
次いで、マイコン3は、ステップST21にて求められた上瞼の座標群と曲線近似線との相関値が高いか否かを判断する(ST81)。すなわち、マイコン3は相関値が基準値「0.85」よりも高いか否かを判断する。
相関値が基準値よりも高い場合(ST81:YES)、マイコン3は上瞼の曲率の値を記憶する(ST82)。すなわち、相関値が基準値よりも高い場合、精度良く上瞼の曲率が求められていると考えられるため、マイコン3は上瞼の曲率の値を記憶する。このとき、マイコン3は、第1サンプリング手段CL611及び第2サンプリング手段CL621に相当するプログラムを実行する。
次いで、マイコン3は上瞼の曲率の値が所定フレーム数分記憶されたか否かを判断する(ST83)。所定フレーム数分記憶されていない場合(ST83:NO)、処理は図8のステップST23に移行する。一方、所定フレーム数分記憶されている場合(ST83:YES)、マイコン3は第1及び第2判定閾値を算出する(ST84)。このとき、マイコン3は、第1代表値算出手段CL612及び第2代表値算出手段CL622に相当するプログラムを実行する。そして、マイコン3は、以下の処理を行う。
まず、マイコン3は、第1判定閾値を求めるべく、所定フレーム数分記憶した上瞼の曲率から、開眼時の上瞼の曲率の代表値を求める。すなわち、マイコン3は、所定数サンプリングした上瞼の曲率について、曲率の平均値、中央値又は最頻値のいずれか1つを求める。そして、マイコン3は、曲率の代表値を第1の統計的代表値とし、この第1の統計的代表値を開眼時における曲率と認定する。
ここで、一般的に被検出者の眼を撮像した場合、被検出者は約9割以上開眼状態にある。このため、サンプリングされた曲率の平均値、中央値又は最頻値のいずれであっても、開眼時における曲率に近い値となる。よって、マイコン3は、第1の統計的代表値を開眼時における曲率と認定することができる。
次に、マイコン3は、認定した開眼時における上瞼の曲率、及び、予め求めておいた開眼時における上瞼の曲率と閉眼時における上瞼の最大曲率との相関関係から、閉眼時における被検出者個人の上瞼の最大曲率を求める。図23は、被検出者毎の開眼時における上瞼の曲率を示す説明図であり、図24は、開眼時における上瞼の曲率と閉眼時における上瞼の最大曲率との相関関係を示す説明図である。
まず、図23に示すように、被検出者A〜Yの25名について開眼時における上瞼の曲率を検出した。このとき、被検出者毎に開眼時における上瞼の曲率は異なるが、曲率半径の値はおおよそ「50」〜「120」の範囲に収まっている。また、これら被検出者について、閉眼時における上瞼の最大曲率(最小曲率半径)を検出した。すると、図24に示すような関係を有することが明らかとなった。すなわち、図24に示すように、開眼時における上瞼の曲率半径と閉眼時における上瞼の最小曲率半径とは、比例関係にあることが明らかとなった。
このため、マイコン3は、開眼時における上瞼の曲率と認定された第1の統計的代表値を、相関関係に当てはめることで、閉眼時における被検出者個人の上瞼の最大曲率を求めることができる。そして、マイコン3はこの最大曲率を第1判定閾値として算出する。
このように、マイコン3は、上瞼の曲率を所定フレーム数(所定数)記憶(サンプリング)して、被検出者個人の閉眼時における上瞼の最大曲率を求める。ここで、閉眼時における上瞼の最大曲率とは、言い換えれば、開眼時における上瞼の最小曲率とも言える。このため、閉眼時における上瞼の最大曲率とは、開眼と閉眼との判定が分かれる曲率とも言える。よって、第1判定閾値は、開眼と閉眼との境界を示す値となり、開閉眼判定をするにあたって適した値となる。
なお、図24では一部の被検出者について曲率半径を図示し、他の被検出者について曲率半径の図示を省略している。
次に、マイコン3は、第2判定閾値を算出する。第2判定閾値を算出するにあたり、まず、マイコン3は、サンプリングされた所定数の曲率から、平均値、中央値又は最頻値のいずれか1つを第2の統計的代表値として求める。その後、マイコン3は、上瞼の曲率について再度サンプリングする。
そして、マイコン3は、再度サンプリングされた所定数の曲率のうち、算出しておいた第2の統計的代表値よりも小さい曲率について、曲率の平均値、中央値又は最頻値のいずれか1つを第3の統計的代表値として求める。すなわち、マイコン3は、上瞼の曲率が所定数記憶されると第2の統計的代表値を求め、さらに上瞼の曲率が所定数記憶されると第3の統計的代表値を求めることとなる。そして、マイコン3は、このサンプリングと統計的代表値の算出とをN回(Nは2以上の整数)繰り替えす(すなわち、第2判定閾値を算出するには、ステップST81〜ST86の処理を複数回繰り返す必要がある)。
上記動作についてまとめると、マイコン3は、1回目にサンプリングされた所定数の曲率から、曲率の平均値、中央値又は最頻値のいずれか1つを第2の統計的代表値として求める。そして、マイコン3は、n回目(nは2以上N以下の整数)にサンプリングされた所定数の曲率のうち、n−1回目に求めた第nの統計的代表値よりも小さい曲率について、曲率の平均値、中央値又は最頻値のいずれか1つを第n+1の統計的代表値として求めることとなる。その後、マイコン3は、求めた第N+1の統計的代表値を第2判定閾値とする。
ここで、一般的に被検出者の眼を撮像した場合、被検出者は約9割以上開眼状態にあるため、サンプリングされた曲率の平均値、中央値又は最頻値のいずれであっても、開眼時における曲率に近い値となる。よって、再度サンプリングした曲率のうち、第2統計的代表値よりも小さい曲率について、曲率の平均値、中央値又は最頻値のいずれか1つを第3統計的代表値として求めることで、開眼時の曲率の多くを除いて平均値、中央値又は最頻値を求めることとなる。そして、これらを繰り返すことで、一層開眼時の曲率の多くを除いて平均値、中央値又は最頻値を求めることとなる。
故に、開眼時の曲率が多く除かれた曲率から平均値、中央値又は最頻値を求めることで、これらの値を閉眼時の曲率に近い値とすることができる。すなわち、開眼を誤って閉眼と判定しないように、第2判定閾値を小さい値(曲率半径を基準とすると高い値)とすることとができる。しかも、現在の運転者の眼の曲率をサンプリングしているため、現在の運転者にとって適切な範囲内で、第2判定閾値を小さくすることが可能となる。
なお、図7に示すように、第2判定閾値を曲率半径「350」などの値にして、開眼時に誤って閉眼と判定することがないように確実を期するためには、被検出者の撮影角度や用いられるシステムなどに合わせて、上記繰り返し回数Nを適切に設定すればよい。また、マイコン3は、第2統計的代表値を求めた後、再度サンプリングすることなく(すなわちST81〜ST86の処理をN回繰り返すのではなく)、既に記憶してある所定数の上瞼の曲率を対象に、統計的代表値の算出を繰り返し、第N+1の統計的代表値を求めるようにしてもよい。
また、第2判定閾値については、以下のように算出されてもよい。すなわち、マイコン3は、上瞼の曲率を所定数サンプリングし、サンプリングした所定数の曲率のうち、先に算出された第1判定閾値よりも小さい曲率について、曲率の平均値、中央値又は最頻値のいずれか1つを第2の統計的代表値として求める。そして、マイコン3は、求めた第2の統計的代表値を第2判定閾値とする。
ここで、開眼時に誤って閉眼と判定してしまう可能性を減じるためには、第2判定閾値が少なくとも第1判定閾値よりも小さくなければならない。すなわち、図7に示すように、曲率半径を基準にして考えると、第2判定閾値が少なくとも第1判定閾値よりも大きくなければ、開眼時に誤って閉眼と判定してしまう可能性を減じることにならない。ところが、上記の方法によれば、第2判定閾値は必ず第1判定閾値よりも小さくなり、開眼時に誤って閉眼と判定してしまう可能性を減じることができる。さらには、複数回にわたってサンプリングすることなく、且つ、繰り返す回数(上記Nの数)について適切に設定する必要がない。
再度、図22を参照する。上記の如く、第1及び第2判定閾値を算出した後、マイコン3は、第1判定閾値をメモリ等に設定する(ST85)。次いで、マイコン3は第2判定閾値をメモリ等に設定する(ST86)。そして、処理は図8のステップST23に移行することとなる。
ところで、ステップST80において、第1及び第2判定閾値が設定されていると判断した場合(ST80:YES)、マイコン3は、上瞼の座標群と曲線近似線との相関値が高いか否かを判断する(ST87)。すなわち、マイコン3は相関値が基準値よりも高いか否かを判断する。
そして、相関値が基準値よりも高い場合(ST81:YES)、マイコン3は、第1判定閾値を開閉眼判定閾値として設定する(ST88)。そして、処理は図8のステップST23に移行する。また、相関値が基準値よりも高くない場合(ST81:NO)、マイコン3は、第2判定閾値を開閉眼判定閾値として設定し(ST89)、処理は図8のステップST23に移行する。
再度、図8を参照する。上記の如く、開閉眼判定閾値設定処理(ST22)の終了後、マイコン3は、開閉眼判定閾値が決定しているか否かを判断する(ST23)。ここで、図22に示したステップST81〜ST86のみの処理が実行され、図22に示したステップST88又はST89の処理が実行されていなければ、マイコン3は、開閉眼判定閾値が決定していないと判断し(ST23:NO)、処理はステップST27に移行する。
一方、図22に示したステップST88又はST89の処理が実行されていれば、マイコン3は、開閉眼判定閾値が決定していると判断し(ST23:YES)、上瞼の曲率が開閉眼判定閾値以上か否かを判断する(ST24)。このとき、マイコン3は、開閉眼判定手段CL8に相当するプログラムを実行する。
そして、上瞼の曲率が開閉眼判定閾値以上であると判断した場合(ST24:YES)、マイコン3は、運転者が開眼状態であると判定する(ST25)。その後、処理はステップST27に移行する。一方、上瞼の曲率が開閉眼判定閾値以上でないと判断した場合(ST24:NO)、マイコン3は、運転者が閉眼状態であると判定する(ST26)。その後、処理はステップST27に移行する。
ステップST27においてマイコン3は、処理フレームカウンタ「i」をインクリメントする(ST27)。その後、処理は、ステップST12に戻り、例えばエンジンが起動されていないと判断され、「STOP」であると判断されるまで、上記の処理が繰り返されることとなる。
このようにして、開閉眼判定装置1は、上瞼の座標群とこの座標群に近似された二次以上の曲線との相関値を求めている。ここで、相関値が高い場合とは、眼の周りにノイズが少ないなどの事情により、開閉眼について正確に判定し易い状態であることを示している。他方、相関値が低い場合、眼の周りにノイズが多いなどの事情により、開閉眼について誤判定し易い状態であることを示している。
また、相関値が基準値よりも高い場合、基準値以下の場合よりも、開閉眼判定閾値を大きく設定している。このため、相関値が基準値よりも高い場合、すなわち開閉眼について正確に判定し易い場合には、開閉眼判定閾値を大きくすることとなる。一方、相関値が基準値以下である場合、すなわち開閉眼について誤判定し易い場合には、開閉眼判定閾値を小さくすることとなる。
また、上瞼の曲率を求めて、この曲率が開閉眼判定閾値より大きいときに開眼と判定し、開閉眼判定閾値以下のときに、閉眼と判定するようにしている。ここで、眼の回りにノイズが多いなどの場合には、上瞼の曲率についても検出の精度が落ちる。すなわち、上記相関値が小さい場合には、上瞼の曲率についても検出の精度が落ちる。このため、開眼時にあっては上瞼の曲率を小さく検出してしまうことがある。ところが、本実施形態では、相関値が基準値以下の場合、開閉眼判定閾値を小さくしている。故に、開眼時に上瞼の曲率を小さく検出してしまっても、開閉眼判定閾値を小さくしているため、開眼時に閉眼と誤判定してしまう可能性を減じることができる。
従って、開眼時に閉眼であると誤判定しないようにすることができる。
また、サンプリングされた曲率の平均値、中央値又は最頻値のいずれか1つを第1の統計的代表値として求め、第1の統計的代表値を開眼時における曲率と認定している。ここで、一般的に被検出者の眼を撮像した場合、被検出者は約9割以上開眼状態にある。このため、サンプリングされた曲率の平均値、中央値又は最頻値のいずれであっても、開眼時における曲率に近い値となる。よって、開眼時における曲率を認定することができる。
また、認定した開眼時における上瞼の曲率、及び、予め求めておいた開眼時における上瞼の曲率と閉眼時における上瞼の最大曲率との相関関係から、閉眼時における被検出者個人の上瞼の最大曲率を求めている。そして、この最大曲率を第1判定閾値として算出している。すなわち、開眼時における上瞼の曲率から、被検出者個人の閉眼時における上瞼の最大曲率を求めている。
このように、本実施形態では、上瞼の曲率をサンプリングして、被検出者個人の閉眼時における上瞼の最大曲率を求めることができる。ここで、被検出者個人の閉眼時における上瞼の最大曲率とは、言い換えれば、被検出者個人の開眼時における上瞼の最小曲率とも言える。すなわち、被検出者個人の閉眼時における上瞼の最大曲率とは、現在の被検出者にとって開眼と閉眼との判定が分かれる曲率とも言える。よって、第1判定閾値は、開閉眼判定をするにあたって適した値となる。
従って、開閉眼判定するにあたり、被検出者毎に適切な閾値を設定することができる。
また、サンプリングをN回繰り返し、1回目にサンプリングされた曲率について、曲率の平均値、中央値又は最頻値のいずれか1つを第2の統計的代表値として求め、N回目にサンプリングした曲率については、第Nの統計的代表値よりも小さい曲率について、曲率の平均値、中央値又は最頻値のいずれか1つを第N+1統計的代表値として求め、この第N+1の統計的代表値を第2判定閾値としている。
ここで、一般的に被検出者の眼を撮像した場合、被検出者は約9割以上開眼状態にある。このため、サンプリングされた曲率の平均値、中央値又は最頻値のいずれであっても、開眼時における曲率に近い値となる。よって、再度サンプリングした曲率のうち、第2統計的代表値よりも小さい曲率について、曲率の平均値、中央値又は最頻値のいずれか1つを第3統計的代表値として求めることで、開眼時の曲率の多くを除いて平均値、中央値又は最頻値を求めることとなる。そして、これらを繰り返すことで、一層開眼時の曲率の多くを除いて平均値、中央値又は最頻値を求めることとなる。
故に、開眼時の曲率が多く除かれた曲率から平均値、中央値又は最頻値を求めることで、これらの値を小さくすることができる。すなわち、開眼を誤って閉眼と判定しないように、第2判定閾値を小さい値(曲率半径を基準とすると高い値)とすることとができる。しかも、現在の運転者の眼の曲率をサンプリングしているため、現在の運転者にとって適切な範囲内で、第2判定閾値を小さくすることが可能となる。
従って、開閉眼判定するにあたり、被検出者毎に適切な閾値を設定することが可能となる。
ここで、開眼時に誤って閉眼と判定してしまう可能性を減じるためには、第2判定閾値が少なくとも第1判定閾値よりも小さくなければならない。すなわち、曲率半径を基準にして考えると、第2判定閾値が少なくとも第1判定閾値よりも大きくなければ、開眼時に誤って閉眼と判定してしまう可能性を減じることにならない。このため、上瞼の曲率を所定数サンプリングし、サンプリングした所定数の曲率のうち、先に算出された第1判定閾値よりも小さい曲率について、曲率の平均値、中央値又は最頻値のいずれか1つを第2の統計的代表値として求める。そして、求めた第2の統計的代表値を第2判定閾値とする。
このようにすれば、第2判定閾値は必ず第1判定閾値よりも小さくなり、開眼時に誤って閉眼と判定してしまう可能性を確実に減じることができる。さらには、複数回にわたってサンプリングする必要がなく、且つ、繰り返す回数(上記Nの数)について適切に設定する必要がない。
従って、簡易に、開眼時に閉眼であると誤判定しないようにすることができる。
また、被検出者の顔全体を撮像した顔画像から被検出者の眼を検出して、顔画像よりも小さくされた微小画像を眼画像として取得している。このため、後の上瞼の曲率検出などにおいても、微小な眼画像を対象に処理していくこととなり、顔画像全体から上瞼を検出する場合に比して、開閉眼を精度良く判定することができる。従って、開閉眼の判定精度を向上させることができる。
以上、実施形態に基づき本発明を説明したが、本発明は上記実施形態に限られるものではなく、各実施形態を組み合わせてもよい。また、本発明の趣旨を逸脱しない範囲で、変更を加えてもよい。本発明の趣旨を逸脱しない範囲で、変更を加えてもよい。
例えば、本実施形態では、第1及び第2判定閾値を求めていたが、特に2つに限らず、3段階以上に閾値を設定してもよい。さらには、図25及び図26に示すようにしてもよい。
図25は閾値及び開閉眼の分布状況を示す説明図であり、図26は閾値の説明図である。同図に示すように、相関値が例えば「0.6」〜「0.85」の区間において閾値は一定値でなく一次式により表されるようにしてもよい。このような一次式を求める場合、マイコン3は、例えば、相関値「0.60」〜「0.61」の区間において得られた上瞼の曲率について、平均値、中央値又は最頻値を求め記憶する。また、マイコン3は、相関値「0.61」以上の区間においても同様に約「0.01」ずつの間隔で平均値、中央値又は最頻値を求め記憶していく。そして、得られた250個の値から近似線を求めることにより、一次式を求める。