(本開示の基礎となった知見)
上記の特許文献1における目の開閉の判定では、二値化処理した画素のうち黒色画素の割合が閾値以上になった場合には目が開いていると判定され、黒色画素の割合が閾値より小さい場合には目が閉じていると判定される。
また、上記の特許文献2における目の開閉の判定では、右目領域及び左目領域のそれぞれにおいて、二値化した一方の白色の画素数が事前に指定した画素数よりも多い場合には目が開いていると判定され、二値化した一方の白色の画素数が事前に指定した画素数以下である場合には目が閉じていると判定される。
人の目の大きさ及び形状には個人差がある。また、人の目の大きさ及び形状は、つけまつげ及び化粧の影響により変化するおそれがある。そのため、上記の従来技術のように、二値化した一方の画素の割合又は二値化した一方の画素の数に応じて目の開閉状態を検出したとしても、人の目の開閉状態を高い精度で検出することは困難である。
以上の課題を解決するために、本開示の一態様に係る目開閉検出方法は、コンピュータが、撮像装置により撮像された人の顔を含む第1画像を取得し、前記第1画像から前記人の目の領域を含む第2画像を生成し、前記第2画像を二値化して、階調値が閾値より小さい画素が第1輝度値で表され、階調値が閾値以上の画素が第2輝度値で表された第3画像を生成し、前記第3画像の高さと、前記第1輝度値を有する第1輝度領域内における上端画素と下端画素との間の縦方向の距離が最大となる最大高さとに基づき、前記人の目が開いている状態と閉じている状態とのいずれであるかを判定し、判定の結果に関する情報を出力する。
この構成によれば、人の目の領域を含む第2画像を二値化した第3画像の高さと、第1輝度値を有する第1輝度領域内における上端画素と下端画素との間の縦方向の距離が最大となる最大高さとに基づき、人の目が開いている状態と閉じている状態とのいずれであるかが判定される。したがって、人の目の大きさ及び形状の個人差による影響を抑制し、人の目の開閉状態の検出精度を向上させることができる。
また、上記の目開閉検出方法において、前記判定において、前記第1輝度領域内の前記最大高さが、前記第3画像の高さに第1係数を乗算した値よりも大きいか否かを判定し、前記第1輝度領域内の前記最大高さが、前記第3画像の高さに第1係数を乗算した値よりも大きいと判定した場合、前記目が開いている状態であると判定してもよい。
目が開いている状態と目が閉じている状態とでは、第3画像の高さに対する第1輝度領域内の最大高さの割合が異なる。目が開いている状態では、第3画像の高さと第1輝度領域内の最大高さとが実質的に同じになる。そのため、第1輝度領域内の最大高さと、第3画像の高さに第1係数を乗算した値とを比較することにより、目が開いている状態であることを高い精度で判定することができる。
また、上記の目開閉検出方法において、前記判定において、前記第1輝度領域内の前記最大高さが、前記第3画像の高さに第1係数を乗算した値以下であると判定した場合、前記第1輝度領域内の前記最大高さが、前記第3画像の高さに前記第1係数よりも小さい第2係数を乗算した値よりも小さいか否かを判定し、前記第1輝度領域内の前記最大高さが、前記第3画像の高さに前記第2係数を乗算した値よりも小さいと判定した場合、前記目が閉じている状態であると判定してもよい。
目が開いている状態と目が閉じている状態とでは、第3画像の高さに対する第1輝度領域内の最大高さの割合が異なる。目が閉じている状態の第1輝度領域内の最大高さは、目が開いている状態の第1輝度領域内の最大高さよりも短くなる。そのため、第1輝度領域内の最大高さと、第3画像の高さに第1係数よりも小さい第2係数を乗算した値とを比較することにより、目が閉じている状態であることを高い精度で判定することができる。
また、上記の目開閉検出方法において、さらに、前記第1画像から、前記人の顔の領域を示す第4画像を生成し、前記判定において、前記第1輝度領域内の前記最大高さが、前記第3画像の高さに前記第2係数を乗算した値以上であると判定した場合、前記第1輝度領域内の前記最大高さが、前記第4画像の高さに前記第2係数よりも小さい第3係数と前記第2係数とを乗算した値よりも小さいか否かを判定し、前記第1輝度領域内の前記最大高さが、前記第4画像の高さに前記第3係数と前記第2係数とを乗算した値よりも小さい場合、前記目が閉じている状態であると判定し、前記第1輝度領域内の前記最大高さが、前記第4画像の高さに前記第3係数と前記第2係数とを乗算した値以上である場合、前記目が開いている状態であると判定してもよい。
この構成によれば、人の目の領域を含む第3画像の高さに対する第1輝度領域内の最大高さの割合だけでなく、人の顔の領域を示す第4画像の高さに対する第1輝度領域内の最大高さの割合を用いて、人の目が開いている状態と閉じている状態とのいずれであるかが判定されるので、より高い精度で目の開閉状態を検出することができる。
また、上記の目開閉検出方法において、さらに、前記第1画像から、前記人の顔の領域を示す第4画像を生成し、前記判定において、前記第1輝度領域内の前記最大高さが、前記第3画像の高さに前記第1係数を乗算した値以下であると判定した場合、前記第1輝度領域内の前記最大高さが、前記第4画像の高さに前記第1係数よりも小さい第2係数と前記第2係数よりも小さい第3係数とを乗算した値よりも小さいか否かを判定し、前記第1輝度領域内の前記最大高さが、前記第4画像の高さに前記第2係数と前記第3係数とを乗算した値よりも小さいと判定した場合、前記目が閉じている状態であると判定し、前記第1輝度領域内の前記最大高さが、前記第4画像の高さに前記第2係数と前記第3係数とを乗算した値以上である場合、前記目が開いている状態であると判定してもよい。
この構成によれば、人の目の領域を含む第3画像の高さに対する第1輝度領域内の最大高さの割合ではなく、人の顔の領域を示す第4画像の高さに対する第1輝度領域内の最大高さの割合を用いて、目が閉じているか否かが判定されるので、第3画像が適切に検出されていない場合であっても、高い精度で目の開閉状態を検出することができる。
また、上記の目開閉検出方法において、前記第2画像は矩形状であり、前記判定において、前記第1輝度領域内の前記最大高さが、前記第3画像の高さに前記第2係数を乗算した値以上であると判定した場合、前記第2画像の高さと横幅との比率に基づいて、前記人の目が開いている状態と閉じている状態とのいずれであるかを判定してもよい。
閉じている状態の目の高さは、開いている状態の目の高さよりも短くなる傾向にある。そのため、第3画像の高さと第1輝度領域内の最大高さとを用いて目の開閉状態が判定できない場合であっても、人の目の領域を含む第2画像の縦横比を用いて目の開閉状態を判定することができ、人の目の開閉状態の検出精度を向上させることができる。
また、上記の目開閉検出方法において、前記第2画像は、赤色成分、緑色成分及び青色成分により表され、さらに、前記第1輝度領域内の前記最大高さが、前記第3画像の高さに前記第2係数を乗算した値以上であると判定した場合、前記第2画像から、色相成分、彩度成分及び明度成分により表される第5画像を生成し、さらに、前記第5画像の前記色相成分を二値化して、階調値が閾値より小さい画素が第3輝度値で表され、階調値が閾値以上の画素が第4輝度値で表された第6画像を生成し、さらに、前記第3輝度値を有する第3輝度領域に基づいて、前記人の目が開いている状態と閉じている状態とのいずれであるかを判定してもよい。
開いた目を撮像した可視光画像と、閉じた目を撮像した可視光画像との違いは、角膜部分に光が映り込んでいるか否かである。すなわち、開いた目の角膜部分には光が映り込んでいるのに対し、閉じた目には角膜自体が存在しない。角膜部分に映り込んだ光は、色相成分、彩度成分及び明度成分により表される色空間における色相成分に顕著に表れる。角膜部分に映り込んだ光に相当する特徴量は、色相成分、彩度成分及び明度成分により表される第5画像の色相成分を二値化した第6画像が生成されることにより抽出される。そのため、第3画像の高さと第1輝度領域内の最大高さとを用いて目の開閉状態が判定できない場合であっても、色相成分、彩度成分及び明度成分により表される第5画像の色相成分を二値化した第6画像における、角膜部分に映り込んだ光に相当する特徴量の有無が判定されることにより、目の開閉状態を判定することができ、人の目の開閉状態の検出精度を向上させることができる。
また、上記の目開閉検出方法において、さらに、前記第3画像に基づいて上まぶたの位置及び下まぶたの位置をそれぞれ検出してもよい。
この構成によれば、第3画像に基づいて上まぶたの位置及び下まぶたの位置がそれぞれ検出されるので、目の開閉状態と、上まぶたの位置及び下まぶたの位置とに基づいて、人の感情又は人の状態を推定することができる。
また、上記の目開閉検出方法において、前記上まぶたの位置及び前記下まぶたの位置の検出において、前記第3画像に対してモルフォロジー勾配演算を行うことによって前記上まぶたの位置及び前記下まぶたの位置を検出してもよい。
この構成によれば、二値化された第3画像に対してモルフォロジー勾配演算を行うことによって上まぶたの位置及び下まぶたの位置が検出されているため、上まぶたの位置及び下まぶたの位置を精度よく検出できる。
また、上記の目開閉検出方法において、前記第3画像は、前記人の左目及び右目のいずれか一方の二値画像であり、さらに、前記第3画像に基づいて目尻の位置及び目頭の位置をそれぞれ検出してもよい。
この構成によれば、第3画像に基づいて目尻の位置及び目頭の位置がそれぞれ検出されるので、目の開閉状態と、目尻の位置及び目頭の位置とに基づいて、人の感情又は人の状態を推定することができる。
また、上記の目開閉検出方法において、前記目尻の位置及び前記目頭の位置の検出において、前記第3画像において、前記第1輝度値を有する横方向の左端の画素の位置を前記目尻及び前記目頭のいずれか一方の位置として検出し、前記第1輝度値を有する前記横方向の右端の画素の位置を前記目尻及び前記目頭のいずれか他方の位置として検出してもよい。
この構成によれば、左目及び右目のいずれか一方の二値画像である第3画像において、第1輝度値を有する横方向の左端の画素の位置が、目尻及び目頭のいずれか一方の位置として検出され、第1輝度値を有する横方向の右端の画素の位置が目尻及び目頭のいずれか他方の位置として検出されている。そのため、目尻の位置及び目頭の位置を容易に検出できる。
また、上記の目開閉検出方法において、さらに、前記目が開いている状態と閉じている状態とのいずれであるかを示す情報をディスプレイに表示される前記人の顔画像に重畳して表示してもよい。
この構成によれば、目が開いている状態と閉じている状態とのいずれであるかを示す情報がディスプレイに表示される人の顔画像に重畳して表示されるので、目の開閉状態の判定結果をリアルタイムで顔画像上に表示することができる。
また、本開示は、以上のような特徴的な処理を実行する目開閉検出方法として実現することができるだけでなく、目開閉検出方法が実行する特徴的な方法に対応する特徴的な構成を備える目開閉検出装置などとして実現することもできる。また、このような目開閉検出方法に含まれる特徴的な処理をコンピュータに実行させるコンピュータプログラムとして実現することもできる。したがって、以下の他の態様でも、上記の目開閉検出方法と同様の効果を奏することができる。
本開示の他の態様に係る目開閉検出装置は、撮像装置により撮像された人の顔を含む第1画像を取得する取得部と、前記第1画像から前記人の目の領域を含む第2画像を生成する目領域検出部と、前記第2画像を二値化して、階調値が閾値より小さい画素が第1輝度値で表され、階調値が閾値以上の画素が第2輝度値で表された第3画像を生成する二値化処理部と、前記第3画像の高さと、前記第1輝度値を有する第1輝度領域内における上端画素と下端画素との間の縦方向の距離が最大となる最大高さとに基づき、前記人の目が開いている状態と閉じている状態とのいずれであるかを判定する判定部と、判定の結果に関する情報を出力する出力部と、を備える。
本開示の他の態様に係る目開閉検出プログラムは、コンピュータに、撮像装置により撮像された人の顔を含む第1画像を取得し、前記第1画像から前記人の目の領域を含む第2画像を生成し、前記第2画像を二値化して、階調値が閾値より小さい画素が第1輝度値で表され、階調値が閾値以上の画素が第2輝度値で表された第3画像を生成し、前記第3画像の高さと、前記第1輝度値を有する第1輝度領域内における上端画素と下端画素との間の縦方向の距離が最大となる最大高さとに基づき、前記人の目が開いている状態と閉じている状態とのいずれであるかを判定し、判定の結果に関する情報を出力する、処理を実行させる。
以下添付図面を参照しながら、本開示の実施の形態について説明する。なお、以下の実施の形態は、本開示を具体化した一例であって、本開示の技術的範囲を限定するものではない。
(実施の形態1)
図1は、本開示の実施の形態1における目開閉検出システム100の外観図である。目開閉検出システム100は、スマートフォン又はタブレット端末等の携帯端末装置により構成されている。但し、これは一例であり、目開閉検出システム100は、据え置き型のコンピュータ又はクラウドサーバとカメラとディスプレイとを適宜組み合わせて構成されてもよい。
目開閉検出システム100は、目開閉検出装置1、撮像装置2、及びディスプレイ3を含む。目開閉検出装置1は、撮像装置2により撮像された人U1の目の開閉状態を検出する。
撮像装置2は、携帯端末装置に実装されたカメラで構成されている。撮像装置2は、所定のフレームレートでカラーの可視光画像が取得可能なカメラである。
ディスプレイ3は、携帯端末装置に実装された液晶表示装置又は有機EL(Electro Luminescence)表示装置等の表示装置で構成されている。ディスプレイ3は、撮像装置2が撮像した人U1の顔の画像を表示する。さらに、ディスプレイ3は、人U1の顔の画像に目開閉検出装置1が検出した目の開閉状態に関する情報を重畳表示させる。
図2は、本開示の実施の形態1における目開閉検出システム100の全体構成の一例を示すブロック図である。目開閉検出装置1は、プロセッサ10及びメモリ20を備える。プロセッサ10は、例えばCPU(Central Processing Unit)で構成されている。プロセッサ10は、画像取得部11、目領域検出部12、二値化処理部13、目状態判定部14及び出力部15を備える。画像取得部11、目領域検出部12、二値化処理部13、目状態判定部14及び出力部15は例えばプロセッサ10が目開閉検出プログラムを実行することで実現される。
画像取得部11は、撮像装置2により撮像された画像を取得する。ここで、取得される画像には、人U1の顔が含まれる。以下、顔が含まれる画像を顔画像と呼ぶ。画像取得部11は、所定のフレームレートで撮像される顔画像を順次に取得する。顔画像は人の顔を含む第1画像の一例である。
目領域検出部12は、顔画像から人の目の領域を含む目検出領域を生成する。目領域検出部12は、画像取得部11が取得した顔画像から人物の顔を示す顔領域を検出する。目領域検出部12は、顔領域を検出するために予め作成された分類器に顔画像を入力することで顔領域を検出すればよい。この分類器は、例えば、ハール(Haar)状のカスケード分類器で構成される。顔領域は、例えば顔の全体を含む程度のサイズを持つ矩形状の領域である。顔領域は人の顔の領域を示す第4画像の一例である。
目領域検出部12は、目検出領域を検出するために予め作成された分類器に顔領域を入力して目検出領域を検出する。この分類器は、例えばハール状のカスケード分類器で構成される。目検出領域は、上辺が上まぶたに接し、下辺が下まぶたに接し、左辺及び右辺のうちの1辺が目頭に接し、左辺及び右辺のうちの他辺が目尻に接する矩形状の領域である。目領域検出部12は、左目を含む目検出領域と、右目を含む目検出領域とのそれぞれを顔領域から検出する。目検出領域は人の目の領域を含む第2画像の一例である。
以下、左目を含む目検出領域を「左目検出領域」と呼び、右目を含む目検出領域を「右目検出領域」と呼ぶ。両者を区別しない場合、単に目検出領域と呼ぶ。また、左目とは人U1を正面から見て左側に位置する目を指し、右目とは人U1を正面から見て右側に位置する目を指す。但し、これは一例であり、この関係は逆であってもよい。
二値化処理部13は、目検出領域を二値化して、階調値が閾値より小さい画素が第1輝度値で表され、階調値が閾値以上の画素が第2輝度値で表された二値画像を生成する。二値画像は第3画像の一例である。目検出領域がカラー画像で構成されている場合、二値化処理部13は、目検出領域を例えば0〜255の階調値を有するグレースケール画像に変換し、変換したグレースケール画像に対して二値化処理を実行すればよい。二値化処理としては、例えば大津の二値化処理が採用できる。第1輝度値は例えば白色であり、第2輝度値は例えば黒色である。すなわち、本実施の形態1では、暗い箇所は白色で表され、明るい箇所は黒色で表された二値画像が生成される。白色の輝度値は例えば255で表され、黒色の輝度値は例えば0で表される。
ここでは、撮像装置2が撮像する画像が8ビットで量子化された画像であるため、グレースケール画像は0〜255の階調値を有しているが、これは一例である。撮像装置2が撮像する画像が16ビット等の他のビット数で量子化された画像であれば、グレースケール画像は、そのビット数で表現可能な階調値を有していればよい。
二値化処理部13は、左目検出領域と右目検出領域とのそれぞれについて二値画像を生成すればよい。
目状態判定部14は、二値画像の高さと、第1輝度値を有する第1輝度領域内における上端画素と下端画素との間の縦方向の距離が最大となる最大高さとに基づき、人の目が開いている状態と閉じている状態とのいずれであるかを判定する。
具体的には、目状態判定部14は、第1輝度領域内の最大高さが、二値画像の高さに第1係数を乗算した値よりも大きいか否かを判定する。第1係数は、例えば0.9である。目状態判定部14は、第1輝度領域内の最大高さが、二値画像の高さに第1係数を乗算した値よりも大きいと判定した場合、目が開いている状態であると判定する。
また、目状態判定部14は、第1輝度領域内の最大高さが、二値画像の高さに第1係数を乗算した値以下であると判定した場合、第1輝度領域内の最大高さが、二値画像の高さに第1係数よりも小さい第2係数を乗算した値よりも小さいか否かを判定する。第2係数は、例えば0.6である。目状態判定部14は、第1輝度領域内の最大高さが、二値画像の高さに第2係数を乗算した値よりも小さいと判定した場合、目が閉じている状態であると判定する。
出力部15は、判定の結果に関する情報を出力する。出力部15は、画像取得部11が取得した顔画像に、目状態判定部14が判定した目の開閉状態を示す情報を重畳して表示画面を生成し、表示画面をディスプレイ3に表示する。
メモリ20は、例えば、RAM(Random Access Memory)、SSD(Solid State Drive)又はフラッシュメモリ等の各種情報を記憶可能な記憶装置である。メモリ20は、プロセッサ10の作業領域として使用される。また、メモリ20は、目状態判定部14が判定した目の開閉状態を示す情報を、画像取得部11が取得した顔画像に対応付けて記憶してもよい。
目の開閉状態を示す情報が対応付けられた顔画像は、顔画像から目の開閉状態を識別するための識別モデルを機械学習する際の教師データとして用いることができる。すなわち、出力部15は、目の開閉状態を示す情報をラベルとして顔画像に付与し、ラベルが付与された顔画像をメモリ20に記憶してもよい。
続いて、本実施の形態1における目開閉検出装置1の目開閉検出処理について説明する。
図3は、本開示の実施の形態1における目開閉検出装置1の目開閉検出処理の一例を示すフローチャートである。なお、図3に示すフローチャートは、所定のサンプリング周期で実行される。所定のサンプリング周期は例えば撮像装置2のフレーム周期である。
まず、ステップS1において、画像取得部11は、撮像装置2から顔画像を取得する。
次に、ステップS2において、目領域検出部12は、顔領域を検出する分類器に顔画像を入力し、顔領域を検出する。
図5は、顔画像40から検出される顔領域41の一例を示す図である。図5に示すように、目領域検出部12は、額の上部と顎の下部と、耳の生え際とを含む矩形状の領域を顔領域41として検出している。ここでは、顔領域41は髪の全体を含んでいないが、髪の全体を含む領域であってもよい。図5では、顔画像40は人U1を正面から撮影した画像であるため、左目と右目とが含まれている。また、図5に示すように、人U1の左目は開いており、人U1の右目は閉じている。
次に、ステップS3において、目領域検出部12は、ステップS2で抽出した顔領域41を、目検出領域を検出する分類器に入力して目検出領域を検出する。図5に示すように、目領域検出部12は、目全域を含む矩形状の領域を目検出領域421,422として検出している。目検出領域421は、左目に対応しており、目検出領域422は、右目に対応している。
図6は、左目に対応する目検出領域421の一例を示す図であり、図7は、右目に対応する目検出領域422の一例を示す図である。図6に示すように、目検出領域421は、開かれた左目の全域を含む矩形状の領域である。また、図7に示すように、目検出領域422は、閉じられた右目の全域を含む矩形状の領域である。図5に示す顔領域41からは、図6に示す左目に対応する目検出領域421と、図7に示す右目に対応する目検出領域422とが抽出されている。
目が開かれた状態の目検出領域421において、上辺は上まぶたに接しており、下辺は下まぶたに接しており、右辺は目頭に接しており、左辺は目尻に接している。また、目が閉じられた状態の目検出領域422において、上辺は上まぶたに接しており、下辺はまつげの先端部分に接しており、右辺は目尻に接しており、左辺は目頭に接している。
次に、ステップS4において、二値化処理部13は、ステップS3で検出された目検出領域421,422をグレースケール画像に変換する。グレースケール画像への変換処理としては、例えば目検出領域421,422を構成する各画素の赤色成分、緑色成分、青色成分のそれぞれの階調値の平均を算出する処理が採用できる。但し、これは一例であり、グレースケール画像への変換処理としては他の処理が採用されてもよい。
次に、ステップS5において、二値化処理部13は、グレースケール画像に変換された目検出領域421,422を二値化して二値画像431,432を生成する。
図8は、左目に対応する二値画像431の一例を示す図であり、図9は、右目に対応する二値画像432の一例を示す図である。二値化処理部13は、グレースケール画像に変換された目検出領域421,422を二値化して二値画像431,432を生成する。
左目は開かれている。そのため、図8の例では、左目に対応する目検出領域421において瞳、まつ毛及び白目の一部の暗い部位の画素が白色の画素で表され、白目の他部及び肌の明るい部位の画素が黒色の画素で表された二値画像431が生成されている。図8の例では、二値画像431は、白色の画素で構成された一塊の白色領域51と、黒色の画素で構成された一塊の黒色領域52とを含む。
右目は閉じられている。そのため、図9の例では、右目に対応する目検出領域422においてまつ毛及び上まぶたの縁の暗い部位の画素が白色の画素で表され、肌の明るい部位の画素が黒色の画素で表された二値画像432が生成されている。図9の例では、二値画像432は、白色の画素で構成された一塊の白色領域61と、黒色の画素で構成された一塊の黒色領域62とを含む。
次に、ステップS6において、目状態判定部14は、二値画像の高さと、第1輝度値を有する第1輝度領域内における上端画素と下端画素との間の縦方向の距離が最大となる最大高さとに基づき、人の目が開いている状態と閉じている状態とのいずれであるかを判定する目状態判定処理を実行する。目状態判定部14は、左目検出領域及び右目検出領域のそれぞれに対して、人の目が開いている状態と閉じている状態とのいずれであるかを判定する。なお、目状態判定処理については、図4を用いて後述する。
次に、ステップS7において、出力部15は、目状態判定部14によって判定された目の開閉状態の判定結果を示す判定結果情報を出力する。出力部15は、ステップS6で判定された目の開閉状態の判定結果を示す判定結果情報がステップS1で取得された顔画像に重畳された表示画面を生成し、ディスプレイ3に表示する。図3のフローチャートが所定のサンプリング周期で繰り返されることにより、目の開閉状態の判定結果を示す判定結果情報が顔画像に重畳された表示画面がディスプレイ3にリアルタイムで表示される。
続いて、図3のステップS6の目状態判定処理について説明する。
図4は、図3のステップS6の目状態判定処理の一例を示すフローチャートである。
まず、ステップS11において、目状態判定部14は、第1輝度値を有する白色領域内における上端画素と下端画素との間の縦方向の距離が最大となる最大高さを算出する。目状態判定部14は、図8に示す二値画像431の白色領域51に対し、各X座標におけるY軸上の白色画素の数を計数することにより、白色領域51の各X座標の高さを算出する。なお、高さは、縦方向の白色画素の数で表される。目状態判定部14は、白色領域51の左端から右端に向かってX座標を1画素ずつ順にずらしながら各X座標における高さを算出する。目状態判定部14は、白色領域51内において、高さが最大となるX座標とその高さを算出する。
なお、目状態判定処理は、左目に対応する目検出領域421と、右目に対応する目検出領域422とが検出されている場合、左目及び右目のそれぞれに対応する二値画像431,432に対して行われる。そのため、目状態判定部14は、図9に示す二値画像432の白色領域61に対しても、各X座標におけるY軸上の白色画素の数を計数することにより、白色領域56の各X座標の高さを算出する。目状態判定部14は、白色領域61の左端から右端に向かってX座標を1画素ずつ順にずらしながら各X座標における高さを算出する。目状態判定部14は、白色領域61内において、高さが最大となるX座標とその高さを算出する。
次に、ステップS12において、目状態判定部14は、白色領域の最大高さが、目検出領域の二値画像の高さに0.9を乗算した値よりも大きいか否かを判定する。
ここで、白色領域の最大高さが、目検出領域の二値画像の高さに0.9を乗算した値よりも大きいと判定された場合(ステップS12でYES)、ステップS13において、目状態判定部14は、目が開いている状態であると判定する。すなわち、図8に示すように、目が開いている場合、目検出領域421の二値画像431の高さ53に対する白色領域51の最大高さ54の割合は、1に近づく。そのため、白色領域51の最大高さ54が、目検出領域421の二値画像431の高さに0.9を乗算した値よりも大きい場合、目状態判定部14は、目検出領域421内の目が開いている状態であると判定する。
一方、白色領域の最大高さが、目検出領域の二値画像の高さに0.9を乗算した値以下であると判定された場合(ステップS12でNO)、ステップS14において、目状態判定部14は、白色領域の最大高さが、目検出領域の二値画像の高さに0.6を乗算した値よりも小さいか否かを判定する。
ここで、白色領域の最大高さが、目検出領域の二値画像の高さに0.6を乗算した値よりも小さいと判定された場合(ステップS14でYES)、ステップS15において、目状態判定部14は、目が閉じている状態であると判定する。すなわち、図9に示すように、目が閉じている場合、白色領域61の最大高さ64は、目検出領域422の二値画像432の高さ63の60%の長さを下回る。そのため、白色領域61の最大高さ64が、目検出領域422の二値画像432の高さに0.6を乗算した値よりも小さい場合、目状態判定部14は、目検出領域422内の目が閉じている状態であると判定する。
一方、白色領域の最大高さが、目検出領域の二値画像の高さに0.6を乗算した値以上であると判定された場合(ステップS14でNO)、ステップS16において、目状態判定部14は、目の開閉状態の判定が不可能であると判定する。
なお、目状態判定部14によって目の開閉状態の判定が不可能であると判定された場合、出力部15は、目の開閉状態の判定が不可能であることを示す判定結果情報を出力してもよいし、判定結果情報を出力しなくてもよい。
また、本実施の形態1において、ステップS12でNOであった場合、目状態判定部14は、ステップS14の処理を行わず、目が閉じていると判定してもよい。
また、本実施の形態1において、ステップS11の処理が行われた後、目状態判定部14は、ステップS12の処理を行わず、白色領域の最大高さが、目検出領域の二値画像の高さに0.6を乗算した値よりも小さいか否かを判定してもよい。そして、白色領域の最大高さが、目検出領域の二値画像の高さに0.6を乗算した値よりも小さいと判定された場合、目状態判定部14は、目が閉じている状態であると判定してもよい。また、白色領域の最大高さが、目検出領域の二値画像の高さに0.6を乗算した値以上であると判定された場合、目状態判定部14は、目が開いている状態であると判定してもよい。
図10は、ディスプレイ3に表示される表示画面の一例を示す図である。
出力部15は、目が開いている状態と閉じている状態とのいずれであるかを示す判定結果情報をディスプレイ3に表示される人の顔画像に重畳して表示する。図10に示すように、ディスプレイ3は、顔画像40に、判定結果情報441,442を重畳して表示する。判定結果情報441は、目が開いている状態を示しており、目検出領域421を示す枠の近傍に表示される。
例えば、目が開いていることを示す「OPEN」という文字が判定結果情報441としてディスプレイ3に表示される。一方、判定結果情報442は、目が閉じている状態を示しており、目検出領域422を示す枠の近傍に表示される。例えば、目が閉じていることを示す「CLOSE」という文字が判定結果情報442としてディスプレイ3に表示される。なお、判定結果情報441,442の提示方法は一例である。ディスプレイ3は、目が開いていることを示す目検出領域421と、目が閉じていることを示す目検出領域422とを異なる態様で表示してもよい。異なる態様とは、例えば、色を変えたりすることである。
また、目開閉検出システム100は、スピーカをさらに備えてもよい。例えば、出力部15は、目状態判定部14によって目が閉じられていると判定された場合、音をスピーカから出力してもよい。
このように、人の目の領域を含む目検出領域を二値化した二値画像の高さと、第1輝度値を有する第1輝度領域内における上端画素と下端画素との間の縦方向の距離が最大となる最大高さとに基づき、人の目が開いている状態と閉じている状態とのいずれであるかが判定される。したがって、人の目の大きさ及び形状の個人差による影響を抑制し、人の目の開閉状態の検出精度を向上させることができる。
続いて、本実施の形態1の変形例1における目開閉検出システムについて説明する。
本実施の形態1では、目検出領域が適切に検出されていない場合、実際には目が開いている状態であっても、図4のステップS12でYESと判定されず、ステップS14以降の処理で、目が開いている状態であると判定されない可能性がある。そこで、本実施の形態1の変形例1では、さらに、顔領域の高さを用いて目の開閉状態が判定される。
なお、実施の形態1の変形例1における目開閉検出システムの構成は、実施の形態1における目開閉検出システムの構成と同じである。そのため、以下では、図1及び図2を用いて実施の形態1の変形例1における目開閉検出システムの構成を説明する。
実施の形態1の変形例1における目状態判定部14は、第1輝度領域内の最大高さが、二値画像の高さに第2係数を乗算した値以上であると判定した場合、第1輝度領域内の最大高さが、顔領域の高さに第2係数よりも小さい第3係数と第2係数とを乗算した値よりも小さいか否かを判定する。そして、目状態判定部14は、第1輝度領域内の最大高さが、顔領域の高さに第3係数と第2係数とを乗算した値よりも小さい場合、目が閉じている状態であると判定する。また、目状態判定部14は、第1輝度領域内の最大高さが、顔領域の高さに第3係数と第2係数とを乗算した値以上である場合、目が開いている状態であると判定する。顔領域は人の顔の領域を示す第4画像の一例である。第2係数は、例えば0.6である。第3係数は、例えば0.15である。
顔領域の高さに0.15を乗算した値は、目の垂直方向の長さ、すなわち目の高さに相当するといえる。そこで、目状態判定部14は、第1輝度領域内の最大高さが、顔領域の高さに第3係数と第2係数とを乗算した値よりも小さいか否かを判定する。なお、第3係数は、0.15に限定されず、顔領域の高さに対する目の高さの割合を示す値であればよい。
続いて、本実施の形態1の変形例1における目状態判定処理について説明する。なお、本実施の形態1の変形例1において、目状態判定処理以外の目開閉検出処理は、図3に示す本実施の形態1における目開閉検出処理と同じである。
図11は、本実施の形態1の変形例1における目状態判定処理の一例を示すフローチャートである。
ステップS21〜ステップS25の処理は、図4のステップS11〜ステップS15の処理と同じであるので、説明を省略する。
白色領域の最大高さが、目検出領域の二値画像の高さに0.6を乗算した値以上であると判定された場合(ステップS24でNO)、ステップS26において、目状態判定部14は、白色領域の最大高さが、顔領域の高さに0.15及び0.6を乗算した値よりも小さいか否かを判定する。
ここで、白色領域の最大高さが、顔領域の高さに0.15及び0.6を乗算した値よりも小さいと判定された場合(ステップS26でYES)、ステップS27において、目状態判定部14は、目が閉じている状態であると判定する。
一方、白色領域の最大高さが、顔領域の高さに0.15及び0.6を乗算した値以上であると判定された場合(ステップS26でNO)、ステップS28において、目状態判定部14は、目が開いている状態であると判定する。
このように、本実施の形態1の変形例1では、目検出領域の二値画像の高さに対する白色領域の最大高さの割合だけでなく、顔領域の高さに対する白色領域の最大高さの割合を用いて、目の開閉状態が判定されるので、より高い精度で目の開閉状態を検出することができる。
続いて、本実施の形態1の変形例2における目開閉検出システム100について説明する。
本実施の形態1では、目検出領域の二値画像の高さを用いて目が閉じている状態であるか否かが判定されている。これに対し、本実施の形態1の変形例2では、顔領域の高さを用いて目が閉じている状態であるか否かが判定される。
なお、実施の形態1の変形例2における目開閉検出システムの構成は、実施の形態1における目開閉検出システムの構成と同じである。そのため、以下では、図1及び図2を用いて実施の形態1の変形例2における目開閉検出システムの構成を説明する。
実施の形態1の変形例2における目状態判定部14は、第1輝度領域内の最大高さが、二値画像の高さに第1係数を乗算した値以下であると判定した場合、第1輝度領域内の最大高さが、顔領域の高さに第1係数よりも小さい第2係数と第2係数よりも小さい第3係数とを乗算した値よりも小さいか否かを判定する。そして、目状態判定部14は、第1輝度領域内の最大高さが、顔領域の高さに第2係数と第3係数とを乗算した値よりも小さいと判定した場合、目が閉じている状態であると判定する。また、目状態判定部14は、第1輝度領域内の最大高さが、顔領域の高さに第2係数と第3係数とを乗算した値以上であると判定した場合、目が開いている状態であると判定する。顔領域は人の顔の領域を示す第4画像の一例である。第2係数は、例えば0.6である。第3係数は、例えば0.15である。
続いて、本実施の形態1の変形例2における目状態判定処理について説明する。なお、本実施の形態1の変形例2において、目状態判定処理以外の目開閉検出処理は、図3に示す本実施の形態1における目開閉検出処理と同じである。
図12は、本実施の形態1の変形例2における目状態判定処理の一例を示すフローチャートである。
ステップS31〜ステップS33の処理は、図4のステップS11〜ステップS13の処理と同じであるので、説明を省略する。
白色領域の最大高さが、目検出領域の二値画像の高さに0.9を乗算した値以下であると判定された場合(ステップS32でNO)、ステップS34において、目状態判定部14は、白色領域の最大高さが、顔領域の高さに0.15及び0.6を乗算した値よりも小さいか否かを判定する。
ここで、白色領域の最大高さが、顔領域の高さに0.15及び0.6を乗算した値よりも小さいと判定された場合(ステップS34でYES)、ステップS35において、目状態判定部14は、目が閉じている状態であると判定する。
一方、白色領域の最大高さが、顔領域の高さに0.15及び0.6を乗算した値以上であると判定された場合(ステップS34でNO)、ステップS36において、目状態判定部14は、目が開いている状態であると判定する。
このように、本実施の形態1の変形例2では、目検出領域の二値画像の高さに対する白色領域の最大高さの割合ではなく、顔領域の高さに対する白色領域の最大高さの割合を用いて、目が閉じているか否かが判定されるので、目検出領域が適切に検出されていない場合であっても、高い精度で目の開閉状態を検出することができる。
(実施の形態2)
実施の形態1では、目状態判定部14は、白色領域の最大高さが、目検出領域の二値画像の高さに第2係数(例えば、0.6)を乗算した値以上であると判定した場合、目の開閉状態の判定が不可能であると判定している。これに対し、実施の形態2では、白色領域の最大高さが、目検出領域の二値画像の高さに第2係数(例えば、0.6)を乗算した値以上であると判定された場合、二値画像の縦横比を用いて目の開閉状態が判定される。
図13は、本開示の実施の形態2における目開閉検出システム100Aの全体構成の一例を示すブロック図である。なお、実施の形態2において、実施の形態1と同一の構成要素には同一の符号を付して説明を省略する。
目開閉検出装置1Aは、プロセッサ10A及びメモリ20を備える。プロセッサ10Aは、実施の形態1の目開閉検出装置1のプロセッサ10に対して、さらに縦横比判定部16を備えている。
縦横比判定部16は、第1輝度領域内の前記最大高さが、二値画像の高さに第2係数を乗算した値以上であると判定した場合、目検出領域の縦横比(高さと横幅との比率)に基づいて、人の目が開いている状態と閉じている状態とのいずれであるかを判定する。
一般的に、開いている状態の目と閉じている状態の目とでは、目の縦横比が異なる傾向にある。すなわち、閉じている状態の目の高さは、開いている状態の目の高さよりも短くなる傾向にある。そこで、縦横比判定部16は、目検出領域の縦横比と閾値とを比較することにより、目の開閉状態を判定する。
より具体的には、縦横比判定部16は、目検出領域の縦横比が閾値以上であるか否かを判定する。目検出領域の縦横比は、矩形状の目検出領域の横幅(水平方向の長さ)を高さ(垂直方向の長さ)で除算した値である。縦横比判定部16は、目検出領域の縦横比が閾値以上であると判定した場合、目が閉じている状態であると判定する。また、縦横比判定部16は、目検出領域の縦横比が閾値より小さいと判定した場合、目が開いている状態であると判定する。
なお、本実施の形態2では、縦横比判定部16は、目検出領域の縦横比に基づいて、人の目が開いている状態と閉じている状態とのいずれであるかを判定しているが、本開示は特にこれに限定されず、目検出領域の二値画像の縦横比に基づいて、人の目が開いている状態と閉じている状態とのいずれであるかを判定してもよい。
続いて、本実施の形態2における目状態判定処理について説明する。なお、本実施の形態2において、目状態判定処理以外の目開閉検出処理は、図3に示す本実施の形態1における目開閉検出処理と同じである。
図14は、本実施の形態2における目状態判定処理の一例を示すフローチャートである。
ステップS41〜ステップS45の処理は、図4のステップS11〜ステップS15の処理と同じであるので、説明を省略する。
白色領域の最大高さが、目検出領域の二値画像の高さに0.6を乗算した値以上であると判定された場合(ステップS44でNO)、ステップS46において、縦横比判定部16は、目検出領域の横幅(水平方向の長さ)を高さ(垂直方向の長さ)で除算することにより、目検出領域の縦横比を算出する。
図15は、目が開いている状態の目検出領域421の一例を示す図であり、図16は、目が閉じている状態の目検出領域422の一例を示す図である。
図15及び図16に示すように、目検出領域421,422は矩形状である。図15に示す目検出領域421は、開いている状態の目を含む。図16に示す目検出領域422は、閉じている状態の目を含む。
目検出領域421の横幅は、例えば263ピクセルであり、目検出領域421の高さは、例えば80ピクセルである。目検出領域421の縦横比は、例えば3.29である。また、目検出領域422の横幅は、例えば288ピクセルであり、目検出領域421の高さは、例えば64ピクセルである。目検出領域421の縦横比は、例えば4.5である。
このように、目が閉じている状態の目検出領域422の縦横比は、目が開いている状態の目検出領域421の縦横比よりも大きくなる。
図14に戻って、次に、ステップS47において、縦横比判定部16は、目検出領域の縦横比が閾値以上であるか否かを判定する。閾値は、例えば4.0である。ここで、目検出領域の縦横比が閾値以上であると判定された場合(ステップS47でYES)、ステップS48において、縦横比判定部16は、目が閉じている状態であると判定する。
一方、目検出領域の縦横比が閾値より小さいと判定された場合(ステップS47でNO)、ステップS49において、縦横比判定部16は、目が開いている状態であると判定する。
このように、二値画像の高さと白色領域の最大高さとを用いて目の開閉状態が判定できない場合であっても、目検出領域の縦横比を用いて目の開閉状態を判定することができ、人の目の開閉状態の検出精度を向上させることができる。
(実施の形態3)
実施の形態1では、目状態判定部14は、白色領域の最大高さが、目検出領域の二値画像の高さに第2係数(例えば、0.6)を乗算した値以上であると判定した場合、目の開閉状態の判定が不可能であると判定している。これに対し、実施の形態3では、白色領域の最大高さが、目検出領域の二値画像の高さに第2係数(例えば、0.6)を乗算した値以上であると判定された場合、赤色成分、緑色成分及び青色成分により表される目検出領域が、色相(Hue)成分、彩度(Saturation)成分及び明度(Value)成分により表されるHSV画像に変換され、HSV画像の色相成分の二値画像を用いて目の開閉状態が判定される。
図17は、本開示の実施の形態3における目開閉検出システム100Bの全体構成の一例を示すブロック図である。なお、実施の形態2において、実施の形態1と同一の構成要素には同一の符号を付して説明を省略する。
目開閉検出装置1Bは、プロセッサ10B及びメモリ20を備える。プロセッサ10Bは、実施の形態1の目開閉検出装置1のプロセッサ10に対して、さらにHSV変換部17、二値化処理部18及び白色領域判定部19を備えている。
HSV変換部17は、目状態判定部14によって第1輝度領域内の最大高さが、二値画像の高さに第2係数を乗算した値以上であると判定された場合、赤色成分、緑色成分及び青色成分により表される目検出領域(RGB画像)から、色相成分、彩度成分及び明度成分により表されるHSV画像を生成する。HSV画像は第5画像の一例である。
HSV変換部17は、RGB画像をHSV画像に変換する変換式を用いて、目検出領域からHSV画像を生成する。なお、変換式は、従来技術であるので説明を省略する。
二値化処理部18は、HSV画像の色相成分を二値化して、階調値が閾値より小さい画素が第3輝度値で表され、階調値が閾値以上の画素が第4輝度値で表された二値画像を生成する。二値画像は第6画像の一例である。二値化処理としては、例えば大津の二値化処理が採用できる。二値化処理部18は、HSV画像の色相成分に対して二値化処理を実行すればよい。第3輝度値は例えば白色であり、第4輝度値は例えば黒色である。白色の輝度値は例えば255で表され、黒色の輝度値は例えば0で表される。
白色領域判定部19は、第3輝度値を有する第3輝度領域に基づいて、人の目が開いている状態と閉じている状態とのいずれであるかを判定する。第3輝度値は白色を表している。白色領域判定部19は、複数の白色画素が連続する白色領域を二値画像から検出する。白色領域判定部19は、二値画像から検出された白色領域の数又は大きさに基づいて、人の目が開いている状態と閉じている状態とのいずれであるかを判定する。白色領域判定部19は、二値画像から検出された白色領域の数が閾値以上である場合、目が開いている状態であると判定する。また、白色領域判定部19は、二値画像から検出された白色領域の数が閾値より少ない場合、目が閉じている状態であると判定する。
なお、白色領域判定部19は、二値画像から検出された最も大きい白色領域の画素数が閾値以上である場合、目が開いている状態であると判定してもよい。また、白色領域判定部19は、二値画像から検出された最も大きい白色領域の画素数が閾値より少ない場合、目が閉じている状態であると判定してもよい。また、白色領域判定部19は、二値画像に白色領域がない場合、目が閉じている状態であると判定してもよい。
続いて、本実施の形態3における目状態判定処理について説明する。なお、本実施の形態3において、目状態判定処理以外の目開閉検出処理は、図3に示す本実施の形態1における目開閉検出処理と同じである。
図18は、本実施の形態3における目状態判定処理の一例を示すフローチャートである。
ステップS61〜ステップS65の処理は、図4のステップS11〜ステップS15の処理と同じであるので、説明を省略する。
白色領域の最大高さが、目検出領域の二値画像の高さに0.6を乗算した値以上であると判定された場合(ステップS64でNO)、ステップS66において、HSV変換部17は、RGB色空間により表される目検出領域から、HSV色空間により表されるHSV画像を生成する。
次に、ステップS67において、二値化処理部18は、HSV画像の色相成分を二値化して二値画像を生成する。
次に、ステップS68において、白色領域判定部19は、二値画像にラベリング処理を実行する。ラベリング処理では、二値画像に対して、連続する複数の白色画素に同じ番号が割り振られる。このラベリング処理により、二値画像から、連続した複数の白色画素で構成される複数の白色領域が検出される。
図19は、目が開いている状態における、RGB画像、HSV画像及び二値画像の一例を示す図であり、図20は、目が閉じている状態における、RGB画像、HSV画像及び二値画像の一例を示す図である。
図19に示すように、目が開いている状態の目検出領域(RGB画像)には、角膜(黒目)部分に光が映り込んでいる。開いた目を撮像したRGB画像と、閉じた目を撮像したRGB画像との違いは、角膜部分に光が映り込んでいるか否かである。すなわち、開いた目の角膜部分には光が映り込んでいるのに対し、閉じた目には角膜自体が存在しない。角膜部分に映り込んだ光は、HSV色空間における色相成分に顕著に表れる。角膜部分に映り込んだ光に相当する特徴量は、RGB画像からHSV画像が生成されるとともに、HSV画像の色相成分の二値画像が生成されることにより、抽出される。図19に示すように、目が開いている状態の色相成分の二値画像には、角膜部分に映り込んだ光に相当する白色領域が現れている。一方、図20に示すように、目が閉じている状態の色相成分の二値画像には、角膜部分に映り込んだ光に相当する白色領域が現れていない。白色領域判定部19は、色相成分の二値画像における白色領域の数を計数することにより、目の開閉状態を判定することができる。
図18に戻って、ステップS69において、白色領域判定部19は、白色領域の数が閾値以上であるか否かを判定する。ここで、白色領域の数が閾値以上であると判定された場合(ステップS69でYES)、ステップS70において、白色領域判定部19は、目が開いている状態であると判定する。
一方、白色領域の数が閾値より少ないと判定された場合(ステップS69でNO)、ステップS71において、白色領域判定部19は、目が閉じている状態であると判定する。
このように、RGB画像である目検出領域の二値画像の高さと白色領域の最大高さとを用いて目の開閉状態が判定できない場合であっても、目検出領域のHSV画像の色相成分から生成した二値画像を用いて目の開閉状態が判定することができ、人の目の開閉状態の検出精度を向上させることができる。
なお、実施の形態2と実施の形態3とは組み合わせることが可能である。すなわち、図14のステップS47において、目検出領域の縦横比が閾値より小さいと判定された場合(ステップS47でNO)、図18のステップS66〜ステップS71の処理が行われてもよい。
(実施の形態4)
実施の形態1では、目の開閉状態が検出される。これに対し、実施の形態4では、さらに、上まぶたの位置及び下まぶたの位置が検出される。
図21は、本開示の実施の形態4における目開閉検出システム100Cの全体構成の一例を示すブロック図である。実施の形態4における目開閉検出装置1Cは、さらに、上まぶたの位置及び下まぶたの位置を検出する。なお、実施の形態4において、実施の形態1と同一の構成要素には同一の符号を付して説明を省略する。
目開閉検出装置1Cのプロセッサ10Cは、実施の形態1の目開閉検出装置1のプロセッサ10に対して、さらに、虹彩検出処理部21、まぶた検出部22及び状態推定部24を備えている。
虹彩検出処理部21は、二値化処理部13によって生成された二値画像において、第1輝度値を有する第1輝度領域内に表れる第2輝度値の画素であって所定の条件を満たす第2輝度値の画素を、第1輝度値の画素に置き換えて二値画像を生成する。そして、虹彩検出処理部21は、二値画像を用いて人の虹彩の位置及び大きさの少なくとも一方に関する情報を含む虹彩情報を算出する。
まぶた検出部22は、二値化処理部13により生成された二値画像に基づいて人U1の上まぶたの位置及び下まぶたの位置をそれぞれ検出する。まぶた検出部22は、二値画像に対してモルフォロジー勾配演算を行うことによって上まぶたの位置及び下まぶたの位置を検出すればよい。まぶた検出部22は、左目の二値画像及び右目の二値画像のそれぞれについて、上まぶたの位置及び下まぶたの位置を検出する。
状態推定部24は、目状態判定部14によって判定された人の目の開閉状態と、まぶた検出部22によって検出された人の上まぶたの位置及び下まぶたの位置とに基づいて、人の状態を推定する。人の状態は、例えば、人の覚醒度である。例えば、状態推定部24は、目の開閉状態と、上まぶたの位置及び下まぶたの位置とに基づいて、人の覚醒度を推定する。
人の状態は、例えば、人の疲労度であってもよい。例えば、状態推定部24は、目の開閉状態と、上まぶたの位置及び下まぶたの位置とに基づいて、人の疲労度を推定してもよい。
なお、状態推定部24は、目状態判定部14によって判定された人の目の開閉状態と、まぶた検出部22によって検出された人の上まぶたの位置及び下まぶたの位置とに基づいて、人の感情を推定してもよい。
続いて、実施の形態4における目開閉検出装置1Cの処理について説明する。
図22は、本開示の実施の形態4における目開閉検出装置1Cの処理の一例を示すフローチャートである。
ステップS81〜ステップS86の処理は、図3のステップS1〜ステップS6の処理と同じであるので、説明を省略する。
次に、ステップS87において、虹彩検出処理部21は、二値化処理部13によって生成された二値画像に対して虹彩検出処理を適用することによって、虹彩情報を算出する。
ここで、虹彩検出処理部21が実行する虹彩検出処理について説明する。
まず、虹彩検出処理部21は、二値画像をX方向に所定画素ずつ分離して複数の局所領域に分割する。例えば、虹彩検出処理部21は、二値画像を横方向に均等に10分割する。これにより、二値画像は、Y方向を長手方向とする短冊状の10個の局所領域に分けられる。ここで、虹彩検出処理部21は、二値画像を10個の局所領域に分割したが、これは一例である。分割数は、2以上9以下の整数又は11以上の整数であってもよい。Y方向とは、撮像装置2が撮像する画像の縦方向(垂直方向)を指す。
次に、虹彩検出処理部21は、10個の局所領域のそれぞれの平均輝度値を算出する。
次に、虹彩検出処理部21は、虹彩推定中心位置のX座標を算出する。虹彩推定中心位置は、虹彩中心位置の推定位置であり、最終的に算出される虹彩中心位置とは異なる。二重まぶた、まつ毛の濃さ、及びつけまつ毛等の影響によりこれらの部位が白色領域として大きく表れることがある。この場合、白目の部位が塗りつぶされる可能性がある。このような事態を回避するために、本実施の形態2では虹彩推定中心位置が算出される。
虹彩検出処理部21は、複数の局所領域のうち、平均輝度値が最大である局所領域のX方向の中点の座標を虹彩推定中心位置のX座標として算出する。なお、局所領域のX方向の幅によっては、局所領域のX方向の中点が虹彩推定中心位置のX座標として妥当でない場合もある。この場合、局所領域のX方向の左端又は右端が虹彩推定中心位置のX座標として算出されてもよい。
次に、虹彩検出処理部21は、虹彩推定中心位置のY座標を算出する。虹彩検出処理部21は、虹彩推定中心位置のX座標が存在する局所領域において、白色画素の最上端点と、白色画素の最下端点とを検出し、最上端点と最下端点との中点を虹彩推定中心位置のY座標として算出する。なお、まつ毛及び化粧の影響で最上端点及び最下端点が左に隣接する局所領域又は右に隣接する局所領域に現れることもある。そこで、虹彩検出処理部21は、虹彩推定中心位置のX座標が存在する局所領域と、当該局所領域の左右に隣接する2つの局所領域とにおいて最上端点及び最下端点を算出し、算出した3個の最上端点を平均して平均最上端点を求めるとともに算出した3個の最下端点を平均して平均最下端点を算出し、平均最上端点と平均最下端点との中点を虹彩推定中心位置のY座標として算出してもよい。
次に、虹彩検出処理部21は、二値画像に対して塗りつぶし処理を実行する。可視光画像においては、周囲の明るさ等により、角膜に外光又は背景等が映り込むことがある。この映り込みが大きい場合、黒色又は茶色である瞳内に白色などの明るい色の領域が現れる。この場合、目の画像を二値化すると、瞳領域内に黒色の島領域が現れ、虹彩情報を高精度に検出できなくなる。そこで、本実施の形態2では、黒色の島領域を塗りつぶす塗りつぶし処理を実行する。
塗りつぶし処理の詳細は下記の通りである。まず、虹彩検出処理部21は、二値画像に対して虹彩推定中心位置のX座標にY方向と平行な縦ラインを設定する。次に、虹彩検出処理部21は、縦ラインにおいて二値画像の上端側から最初に現れる白色画素を上端画素として検出する。次に、虹彩検出処理部21は、縦ラインにおいて二値画像の下端側から最初に現れる白色画素を下端画素として検出する。次に、虹彩検出処理部21は、上端画素と下端画素間の距離が第1基準距離よりも大きいか否かを判定する。次に、虹彩検出処理部21は、上端画素及び下端画素間の距離が第1基準距離よりも大きいと判定した場合、縦ラインにおいて上端画素及び下端画素間にある黒色画素を所定の条件を満たす黒色画素として判定し、この黒色画素を白色画素に置換する。一方、虹彩検出処理部21は、上端画素と下端画素間の距離が第1基準距離以下と判定した場合、縦ラインに対する置換は行わない。第1基準距離としては、例えば、想定される虹彩直径を基準に妥当な距離が採用される。
虹彩検出処理部21は、このような塗りつぶし処理を虹彩推定中心位置からX方向の左側に向けて左基準距離の範囲内の各縦ラインについて実行すると共に虹彩推定中心位置からX方向の右側に向けて右基準距離の範囲内の各縦ラインについて実行する。左基準距離範囲と右基準距離範囲との和は第2基準距離の一例である。左基準距離範囲と右基準距離範囲とは例えば同じ範囲である。第2基準距離としては、例えば、想定される虹彩直径よりも多少大きな距離が採用される。これにより、瞳領域に位置する縦ラインに対して重点的に塗りつぶし処理を適用することができる。
次に、虹彩検出処理部21は、瞳領域の左端画素及び右端画素をそれぞれ検出する。虹彩検出処理部21は、二値画像の白色領域において、虹彩推定中心位置を起点として、X方向を左右に1画素ずつ輝度値の変化を調べる。そして、虹彩検出処理部21は、X方向の左側に最初に現れる黒色画素を左端画素として検出すると共に、X方向の右側に最初に現れる黒色画素を右端画素として検出する。
次に、虹彩検出処理部21は、左端画素及び右端画素の中間位置を虹彩中心位置のX座標として算出する。
次に、虹彩検出処理部21は、瞳領域の上端画素及び下端画素をそれぞれ検出する。虹彩検出処理部21は、二値画像の白色領域において、虹彩中心位置のX座標を起点として、Y方向を上下に1画素ずつ輝度値の変化を調べる。そして、虹彩検出処理部21は、Y方向の上側に最初に現れる黒色画素を上端画素として検出すると共に、Y方向の下側に最初に現れる黒色画素を下端画素として検出する。
次に、虹彩検出処理部21は、上端画素及び下端画素の中間位置を虹彩中心位置のY座標として算出する。以上により虹彩中心位置が算出される。
以上が、虹彩検出処理の説明である。虹彩検出処理部21は、虹彩中心位置を含む虹彩情報を算出する。
次に、ステップS88において、まぶた検出部22は、モルフォロジー勾配演算により上まぶたの位置及び下まぶたの位置を検出する。
図23は、モルフォロジー勾配演算が実行される前の二値画像70を示す図である。
図23の例では、目検出領域において瞳及びまつ毛等の暗い部位が白色で表され、白目及び肌等の明るい部位が黒色で表された二値画像70が生成されている。図23に示す白色領域D1は、白色の画素で構成されている。
まず、まぶた検出部22は、二値画像70に対して膨張処理を適用する。膨張処理は、注目画素の近傍に少なくとも1つの白色画素があれば、注目画素を白色画素に置き換える処理である。次に、まぶた検出部22は、二値画像70に対して収縮処理を適用する。収縮処理は、注目画素の近傍に少なくとも1つの黒色画素があれば、注目画素を黒色画素に置き換える処理である。
図24は、二値画像70に対して膨張処理及び収縮処理が実行された膨張画像81及び収縮画像82を示す図である。
膨張処理が行われることにより、膨張画像81に含まれる白色領域D1は二値画像70に含まれる白色領域D1よりも膨張している。収縮処理が行われることにより、収縮画像82に含まれる白色領域D1は二値画像70に含まれる白色領域D1よりも収縮されている。
次に、まぶた検出部22は、膨張画像81から収縮画像82を減じることで勾配画像を算出する。
図25は、勾配画像83を示す図である。勾配画像83には、二値画像70の白色領域D1のエッジE1が含まれている。
次に、まぶた検出部22は、エッジE1の最上端位置を上まぶたの位置P10として検出する。なお、まぶた検出部22は、虹彩検出処理部21によって検出された虹彩中心位置P0を通る縦ラインと上側のエッジE1との交点を上まぶたの位置P10として検出してもよい。また、まぶた検出部22は、虹彩検出処理部21によって検出された虹彩中心位置P0を通る縦ラインと下側のエッジE1との交点を下まぶたの位置P11として検出する。これにより、輝度変化が薄く二値画像70において明確に表れ難い下まぶたの位置を検出することができる。なお、まぶた検出部22は、勾配画像83の左端と右端とをつなぐ上側のエッジE1の部分を上まぶたラインとして検出してもよい。
また、まぶた検出部22は、エッジE1の最上端位置を上まぶたの位置P10として検出し、検出した上まぶたの位置P10から垂直下方向に伸ばした直線と最下端のエッジE1との交点を下まぶたの位置P11として検出してもよい。この場合、虹彩中心位置P0の検出が不要となるため、ステップS87の処理が省略可能となる。
次に、ステップS89において、状態推定部24は、目状態判定部14によって判定された人の目の開閉状態と、まぶた検出部22によって検出された人の上まぶたの位置及び下まぶたの位置とに基づいて、人の状態を推定する。このとき、状態推定部24は、目が開いている状態である場合、上まぶたの位置と下まぶたの位置との間の距離を算出する。状態推定部24は、目検出領域の高さに対する、上まぶたの位置と下まぶたの位置との間の距離の割合を算出する。そして、状態推定部24は、算出した割合が閾値以下である場合、人の覚醒度が低下していると推定する。また、状態推定部24は、算出した割合が閾値より高い場合、人の覚醒度が高いと推定する。さらに、状態推定部24は、両方の目が閉じている状態である場合、人が覚醒しておらず、睡眠状態であると推定する。
なお、状態推定部24は、算出した割合が閾値以下である場合、人の疲労度が高いと推定してもよい。また、状態推定部24は、算出した割合が閾値より高い場合、人の疲労度が低いと推定してもよい。
次に、ステップS90において、出力部15は、状態推定部24による推定結果をステップS1で算出された顔画像に重畳することにより、表示画面を生成し、ディスプレイ3に表示する。例えば、表示画面には、顔画像とともに、人の状態(例えば、覚醒度)が表示される。なお、出力部15は、人の目の開閉状態の判定結果を顔画像に重畳してディスプレイ3に表示してもよい。
なお、状態推定部24は、上まぶたの位置P10の時系列データに基づいて、上まぶたが痙攣状態であるか否かを推定してもよい。すなわち、状態推定部24は、上まぶたの位置P10が所定期間内に所定間隔で上下している場合に、上まぶたが痙攣状態であると推定する。
このように、目の開閉状態の判定結果と、上まぶたの位置及び下まぶたの位置の検出結果とを用いて、人の状態又は人の感情を推定することができる。
(実施の形態5)
実施の形態1では、目の開閉状態が検出される。これに対し、実施の形態5では、さらに目尻の位置及び目頭の位置が検出される。
図26は、本開示の実施の形態5における目開閉検出システム100Dの全体構成の一例を示すブロック図である。実施の形態5における目開閉検出装置1Dは、さらに目尻の位置及び目頭の位置を検出する。なお、実施の形態5において、実施の形態1及び実施の形態4と同一の構成要素には同一の符号を付して説明を省略する。
目開閉検出装置1Dのプロセッサ10Dは、実施の形態1の目開閉検出装置1のプロセッサ10に対して、さらに、虹彩検出処理部21、目尻目頭検出部23及び状態推定部24Dを備えている。
目尻目頭検出部23は、二値化処理部13により生成された二値画像から目尻の位置及び目頭の位置のそれぞれを検出する。目尻目頭検出部23は、人の左目及び右目のいずれか一方の二値画像に基づいて目尻の位置及び目頭の位置をそれぞれ検出する。ここで、目尻目頭検出部23は、左目の二値画像及び右目の二値画像のそれぞれについて、目尻の位置及び目頭の位置を検出する。
目尻目頭検出部23は、二値画像において、第1輝度値を有する横方向の左端の画素の位置を目尻及び目頭のいずれか一方の位置として検出し、第1輝度値を有する横方向の右端の画素の位置を目尻及び目頭のいずれか他方の位置として検出する。
状態推定部24Dは、目状態判定部14によって判定された人の目の開閉状態と、目尻目頭検出部23によって検出された人の目尻の位置及び目頭の位置と、虹彩検出処理部16によって検出された虹彩中心位置とに基づいて、人の状態を推定する。人の状態は、例えば、人が当惑している状態、人が動揺している状態又は人が緊張している状態である。例えば、状態推定部24Dは、目の開閉状態と、目尻の位置及び目頭の位置と、虹彩中心位置とに基づいて、人が当惑している状態、人が動揺している状態又は人が緊張している状態であることを推定する。
具体的には、人が当惑している場合、人が動揺している場合又は人が緊張している場合、目の開閉回数(瞬きの回数)が通常より増えるとともに、瞳が左右に小刻みに動く傾向にある。そこで、状態推定部24Dは、目の開閉状態の時系列データに基づいて、所定時間内に所定回数以上瞬きをしているか否かを判定する。
また、状態推定部24Dは、虹彩中心位置と目尻の位置との間の距離、又は虹彩中心位置と目頭の位置との間の距離を算出する。状態推定部24Dは、虹彩中心位置と目尻の位置との間の距離又は虹彩中心位置と目頭の位置との間の距離の時系列データに基づいて、虹彩中心位置が左右に小刻みに動いているか否かを判定する。すなわち、状態推定部24Dは、虹彩中心位置と目尻の位置との間の距離が所定期間内に所定回数変化している場合に、虹彩中心位置が左右に小刻みに動いていると判定する。なお、状態推定部24Dは、虹彩中心位置と目頭の位置との間の距離が所定期間内に所定回数変化している場合に、虹彩中心位置が左右に小刻みに動いていると判定してもよい。
そして、状態推定部24Dは、所定時間内に所定回数以上瞬きをしていると判定し、かつ虹彩中心位置が左右に小刻みに動いていると判定して場合、人が当惑している状態、人が動揺している状態又は人が緊張している状態であると推定する。
なお、状態推定部24Dは、目状態判定部14によって判定された人の目の開閉状態と、目尻目頭検出部23によって検出された人の目尻の位置及び目頭の位置と、虹彩検出処理部16によって検出された虹彩中心位置とに基づいて、人の感情を推定してもよい。
続いて、実施の形態5における目開閉検出装置1Dの処理について説明する。
図27は、本開示の実施の形態5における目開閉検出装置1Dの処理の一例を示すフローチャートである。
ステップS101〜ステップS106の処理は、図3のステップS1〜ステップS6の処理と同じであるので、説明を省略する。
次に、ステップS107において、目尻目頭検出部23は、目尻の位置及び目頭の位置を検出する。
図28は、目尻の位置及び目頭の位置が検出された二値画像70を示す図である。
二値画像70の枠は白色領域D1の外接矩形であるため、二値画像70において、白色領域D1の左端のX座標は二値画像70の左端のX座標(X11)であり、白色領域D1の右端のX座標は二値画像70の右端のX座標(X12)であり、両X座標は二値画像70を生成する際に算出済みである。そこで、目尻目頭検出部23は、算出済みの両X座標を利用して目尻の位置12及び目頭の位置P13を算出する。なお、図28は、左目の二値画像70であるため、白色領域D1の左端が目尻の位置P12となり、白色領域D1の右端が目頭の位置P13となる。
詳細には、目尻目頭検出部23は、X座標(X11)において二値画像70の下端から1画素ずつ上端に向けて白色画素を探索していく。そして、目尻目頭検出部23は、最初に検出した白色画素のY座標を目尻の位置P12のY座標として決定する。同様に、目尻目頭検出部23は、X座標(X12)において二値画像70の下端から1画素ずつ上端に向けて白色画素を探索していく。そして、目尻目頭検出部23は、最初に検出した白色画素のY座標を目頭の位置P13のY座標として決定する。以上により、目尻の位置P12及び目頭の位置P13が検出される。
ステップS108の処理は、図22のステップS87の処理と同じであるので、説明を省略する。
次に、ステップS109において、状態推定部24Dは、目状態判定部14によって判定された人の目の開閉状態と、目尻目頭検出部23によって検出された人の目尻の位置及び目頭の位置と、虹彩検出処理部16によって検出された虹彩中心位置とに基づいて、人の状態を推定する。
次に、ステップS110において、出力部15は、状態推定部24Dによる推定結果をステップS1で算出された顔画像に重畳することにより、表示画面を生成し、ディスプレイ3に表示する。例えば、表示画面には、顔画像とともに、人の状態の推定結果が表示される。なお、出力部15は、人の目の開閉状態の判定結果を顔画像に重畳してディスプレイ3に表示してもよい。
このように、目の開閉状態の判定結果と、目尻の位置及び目頭の位置の検出結果と、虹彩中心位置の検出結果とを用いて、人の状態又は人の感情を推定することができる。
また、目開閉検出システム100Dは、目の動きにより入力操作を行う入力装置をさらに備えてもよい。例えば、入力装置は、虹彩中心位置と、目尻の位置又は目頭の位置との距離に応じて、ディスプレイ3に表示されるポインタを移動させてもよい。
なお、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。また、プログラムを記録媒体に記録して移送することにより、又はプログラムをネットワークを経由して移送することにより、独立した他のコンピュータシステムによりプログラムが実施されてもよい。
本開示の実施の形態に係る装置の機能の一部又は全ては典型的には集積回路であるLSI(Large Scale Integration)として実現される。これらは個別に1チップ化されてもよいし、一部又は全てを含むように1チップ化されてもよい。また、集積回路化はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)、又はLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
また、本開示の実施の形態に係る装置の機能の一部又は全てを、CPU等のプロセッサがプログラムを実行することにより実現してもよい。
また、上記で用いた数字は、全て本開示を具体的に説明するために例示するものであり、本開示は例示された数字に制限されない。
また、上記フローチャートに示す各ステップが実行される順序は、本開示を具体的に説明するために例示するためのものであり、同様の効果が得られる範囲で上記以外の順序であってもよい。また、上記ステップの一部が、他のステップと同時(並列)に実行されてもよい。