(58)【調査した分野】(Int.Cl.,DB名)
前記記憶手段は、前記第1の分布として、各前記眠気のレベルで、複数の第1の頻度ベクトルを、瞬目の時間間隔の大きさで複数の段階のパターンに分類して記憶しており、
前記眠気推定手段は、前記分類のうち、前記被験者の瞬目の時間間隔の大きさにもっとも近いパターンにおいて、各前記眠気のレベルにおける、複数の第1の頻度ベクトルと前記第2の頻度ベクトルとの距離を算出する、請求項1または2記載の眠気レベルの推定装置。
記憶装置および演算装置を有するコンピュータに、被験者について撮影された動画像から前記被験者の眠気レベルの推定処理を実行させるための眠気レベルの推定処理プログラムであって、前記プログラムは、
前記記憶装置には、瞬目の時間間隔の頻度の第1の分布と眠気のレベルとが予め対応付けて記憶されており、
前記演算装置が、前記動画像から前記被験者の瞬目を検出するステップと、
前記演算装置が、前記検出された瞬目に基づいて、前記被験者についての瞬目の時間間隔の第2の分布を算出し、前記記憶装置に記憶された第1の分布と前記第2の分布の類似度に基づいて、前記被験者の眠気のレベルを推定するステップとを備え、
前記眠気のレベルを推定するステップは、前記演算装置が、前記第1の分布を第1のヒストグラムで表現した場合に、前記第1のヒストグラムの階級ごとの頻度を要素とする第1の頻度ベクトルと、前記第2の分布を第2のヒストグラムで表現した場合に、前記第2のヒストグラムの階級ごとの頻度を要素とする第2の頻度ベクトルとの距離として、前記類似度を算出するステップを含み、
前記演算装置が、前記推定された眠気のレベルを出力するステップをさらに備える、推定処理をコンピュータに実行させる、眠気レベルの推定処理プログラム。
【発明を実施するための形態】
【0020】
[ハードウェア構成]
以下、本発明の実施の形態にかかる「眠気レベルの推定装置」について説明する。この眠気レベルの推定装置は、コンピュータまたはマイコン等、プログラムにより動作する演算装置により実行されるソフトウェアにより実現されるものであって、対象画像から人物の顔を抽出し、さらに人物の顔の映像のうち、瞼の画像に基づいて、眠気レベルを推定するためのものである。
【0021】
具体的な例としては、眠気レベルの検知を自動車の運転者に対して実行するものとして、以下説明する。ただし、本実施の形態の眠気レベルの推定装置は、他の局面でも、人間の眠気のレベルを検知することが必要な状況において、一般的に適用することが可能なものである。
【0022】
図1は、この眠気レベルの推定装置の構成の概略を示す図である。
【0023】
図1に示されるように、眠気レベルの推定装置は、自動車内でフロントガラス3を通して前方を見る体勢の運転者2の動画像を撮影するために、たとえば、ダッシュボード上に設置されるビデオカメラ30と、ダッシュボード内に配置される推定演算装置20と、計器パネルの一部として眠気のレベルの推定結果を表示するための表示装置42と、眠気のレベルが所定のレベル以上となったと判断された場合に警告音声を出力するためのスピーカ(図示せず)とを備える。
【0024】
カメラ30としては、特に限定されないが、CCD(Charge Coupled Device)またはCMOS(Complementary Metal-Oxide Semiconductor)センサのような固体撮像素子を含む単眼カメラを用いることができる。
【0025】
また、以下に説明する「推定演算装置20」では、ソフトウェアに基づいて、眠気レベルの推定を行うものとして説明するが、「推定演算装置20」の各機能の一部または全部は、ハードウェアにより実現されてもよい。
【0026】
図2は、眠気レベルの推定装置100のハードウェア構成を説明するためのブロック図である。
【0027】
図2に示されるように、この眠気レベルの推定装置100を構成する推定演算装置20は、外部記録媒体64に記録されたデータを読み取ることができるドライブ装置52と、バス66に接続された中央演算装置(CPU:Central Processing Unit)56と、ROM(Read Only Memory) 58と、RAM(Random Access Memory)60と、不揮発性記憶装置54と、カメラ30からの画像を取込むための画像取込装置68とを含んでいる。
【0028】
なお、ドライブ装置52があることで、たとえば、ユーザごとの設定データなどを媒体64から読込せたり、眠気に関して取得された情報を外部記録媒体64に記録することなどが可能となる。ただし、外部記録媒体64を使用することは、システムの構成上は任意であって、ドライブ装置52は、構成から省略してもよい。
【0029】
外部記録媒体64としては、たとえば、メモリカード64を使用することができる。ただし、メモリカードドライブ52の機能を実現する装置は、フラッシュメモリなどの不揮発性の半導体メモリに記憶されたデータを読み出せる装置であれば、対象となる記録媒体は、メモリカードに限定されない。また、不揮発性記憶装置54の機能を実現する装置も、不揮発的にデータを記憶し、かつ、ランダムアクセスできる装置であれば、ハードディスクのような磁気記憶装置を使用してもよいし、フラッシュメモリなどの不揮発性半導体メモリを記憶装置として用いるソリッドステートドライブ(SSD:Solid State Drive)を用いることもできる。
【0030】
既に述べたように、この眠気レベルの推定装置の主要部は、コンピュータハードウェアと、CPU56により実行されるソフトウェアとにより実現される。一般的にこうしたソフトウェアは、マスクROMやプログラマブルROMなどにより推定演算装置20の製造時に記録されており、これが実行時にRAM60に読みだされる構成としてもよいし、ドライブ装置52により記録媒体64から読取られて不揮発性記憶装置54に一旦格納され、実行時にRAM60に読みだされる構成としてもよい。または、当該装置がネットワークに接続されている場合には、ネットワーク上のサーバから、一旦、不揮発性記憶装置54にコピーされ、不揮発性記憶装置54からRAM60に読出されてCPU56により実行される構成であってもよい。
【0031】
図2に示したコンピュータのハードウェア自体およびその動作原理は一般的なものである。したがって、本発明の最も本質的な部分は、不揮発性記憶装置54等の記録媒体に記憶されたソフトウェアである。
【0032】
[システムの機能ブロック]
以下に説明するとおり、本実施の形態の眠気レベルの推定装置100では、顔特徴点を検出・追跡することにより、視線方向を推定するとともに、瞬目の周期の分布を検出する。
【0033】
本実施の形態の眠気レベルの推定装置では、この「視線方向を推定する処理」においては、眼球中心と虹彩中心を結ぶ3次元直線を視線方向として推定する。眼球中心は画像からは直接観測することはできないものの、以下に説明するような3次元モデルにより、眼球中心と顔特徴点との相対関係をモデル化することにより、眼球中心の投影位置を推定する。
【0034】
なお、以下では実施の形態の説明の便宜上、「虹彩中心」との用語を用いるが、この用語は、「虹彩の中心」または「瞳孔の中心」を意味するものとして使用するものとする。つまり、視線の推定処理において、以下の説明のような手続きにより求められるものを「虹彩中心」と呼ぶか「瞳孔中心」と呼ぶかは、その手続きが同様である限りにおいて、本実施の形態の態様において、本質的な相違を有するものではない。
【0035】
図3は、本実施の形態の眠気レベルの推定装置100において、上述したCPU56がソフトウェアを実行するにより実現する機能を示す機能ブロック図である。
【0036】
なお、
図3に示した機能ブロックのうちのCPU56が実現する機能ブロックとしては、ソフトウェアでの処理に限定されるものではなく、その一部または全部がハードウェアにより実現されてもよい。
【0037】
図3を参照して、カメラ30により撮像された動画に対応する映像信号は、フレームごとに画像キャプチャ処理部5602により制御されてデジタルデータとしてキャプチャされ、画像データ記録処理部5604により、たとえば、不揮発性記憶装置54のような記憶装置に格納される。
【0038】
顔(頭部)検出部5606は、キャプチャされたフレーム画像列に対して、周知の顔検出アルゴリズムにより、顔(頭部)候補探索を行う。なお、このような周知な顔(頭)検出アルゴリズムとしては、特に限定されないが、たとえば、特許文献2(特開2008−102902号公報明細書)に記載されるようなアルゴリズムや、後に説明するような公知文献に記載されるアルゴリズムを使用することが可能である。
【0039】
続いて、特徴点抽出部5608は、目・鼻・口などの位置関係を利用して顔特徴点を抽出・追跡する。
【0040】
続いて、頭部位置・姿勢推定部5610が、たとえば、特許文献1(特開2008−102902号公報明細書)に記載されたような単眼カメラによる視線方向の検出処理におけるのと同様の処理により、撮影できているカメラからの画像データにおいて、頭部の位置および頭部の姿勢の推定処理が実行される。特定された特定人物の頭部位置は、当該時刻における頭部位置として、次の処理タイミングで使用するために不揮発性記憶装置54に格納される。
【0041】
頭部の位置および頭部の姿勢が推定されると、処理対象となっている画像フレーム以前に獲得されている眼球の3次元モデルに基づいて、眼球中心推定部5612は、処理対象の特定人物の眼球中心の3次元的な位置を推定する。
【0042】
虹彩中心抽出部5614は、後に説明するようなアルゴリズムにより、虹彩の中心の投影位置を検出する。ここで、虹彩位置の推定においては、後に説明する非線形最適化処理により虹彩位置の推定を行ってもよいし、あるいは、これも特許文献1(特開2008−102902号公報明細書)に記載されたような処理であって、目の周辺領域に対して、ラプラシアンにより虹彩のエッジ候補を抽出し、円のハフ変換を適用することにより、虹彩の中心の投影位置を検出する、というような処理を行ってもよい。
【0043】
視線方向推定部5618は、抽出された虹彩の中心の投影位置である画像フレーム中の2次元的な位置と、推定された眼球の3次元的な中心位置とに基づいて、視線方向を推定する。推定された視線方向は、眼球中心位置等の推定処理に使用したパラメータとともに、不揮発性記憶装置54に格納される。
【0044】
一方、瞬目検知部5618は、視線方向の推定処理において特定された目の領域を特定する情報に基づいて、瞼のエッジの検出および瞬目の発生の有無の検知を実行する。特に限定されないが、後に説明するように、虹彩中心抽出部5614において、虹彩の位置を眼球モデルと照合するために、目の領域が抽出される場合は、この特定された目の領域の情報を用いることができる。
【0045】
眠気推定部5620は、抽出された瞬目について、現在までの所定期間において瞬目の発生した時間間隔の頻度の分布のパターンと、予め分類されている眠気の程度のレベルと瞬目の時間間隔の頻度の分布の基準パターンとを比較することにより、眠気の程度のレベルを特定する。ここで、このような「瞬目の発生した時間間隔の頻度の分布のパターン」は、瞬目の発生する周期の分布と対応する。後に説明するように、眠気レベルの推定装置100では、眠気レベルの大きいときに瞬目の周期性が高まることに着目し、眠気の程度のレベルの検知を行う。
【0046】
また、出力制御部5613は、ディスプレイ等の表示部42に、以上のようにして推定された視線の方向を、取得された画像フレーム上に表示したり、推定された眠気の程度のレベルを表示するための処理を行なう。
【0047】
さらに、出力制御部5613は、眠気の程度のレベルが所定レベル以上であると推定されるときは、スピーカなどの音声出力部44を介して、警告音を出力する。警告音は、単純な警報音でもよいが、眠気が推定されるので、休憩をとることを促すようなアナウンス(「眠気が高くなっているのであれば、休憩をとりましょう」等)であってもよい。
【0048】
(瞬目の検出と眠気のレベルの推定の処理)
図4は、本実施の形態において、CPU56により視線推定のソフトウェアを実行する処理フローを示すフローチャートである。
【0049】
図4を参照して、まず、画像キャプチャ処理部5602が、画像を取得を実行し、たとえば、1フレーム分の画像を取得すると(ステップS100)、このようにして取得した画像データを、一旦、記憶装置54に格納する。
【0050】
(視線推定処理)
続いて、この画像データ中から、顔(頭部)検出部5606、特徴点抽出部5608、頭部位置・姿勢推定部5610、眼球中心推定部5612、虹彩中心抽出部5614および視線方向推定部5618により、視線方向の推定および検出が実行される(S102)。
【0051】
視線の検出については、たとえば、非特許文献3や特許文献2に記載されたような、従来の検出方法を用いることも可能である。そこで、視線の検出方法については、後に、一例について、より詳しく説明することとし、ここでは、その概略について説明する。
【0052】
視線の推定処理においては、顔画像から顔面上の特徴点および目の領域(瞼位置に相当)、虹彩位置を検出し、特徴点から頭部姿勢を推定する。頭部姿勢の推定結果から眼球中心位置を決定し、眼球中心と画像から得られる虹彩中心を結ぶ3次元ベクトルとして視線方向を推定する。従って、この方法では視線方向に加えて運転者の注意に関連する情報として頭部(顔)姿勢および開眼度(瞼の開閉情報)を検知することもできる。
【0053】
顔検出・顔特徴追跡処理では、3次元モデル生成や視線推定で用いる顔特徴の抽出・追跡を行う。まず顔検出処理により、画像上の顔位置を決定し、次に目・鼻・口などの位置関係を利用して顔特徴点を抽出・追跡する。
【0054】
これら特徴点の抽出・追跡には,特に限定されないが、たとえば、Lucas-Kanadeの特徴点を用いることができる。複数毎の入力画像から顔特徴点の3次元モデル(顔モデル) を推定することで、運転者に事前のキャリブレーション等の負担をかけることなく、運転者正面から頭部を撮影したビデオ映像から運転者の視線方向を検出することができる。
【0055】
なお、Lucas-Kanadeの特徴点については、以下の文献に開示がある。
【0056】
公知文献1:B. Lucas and T. Kanade: “An iterative image registration technique with an application to stereo vision.”, Proc.Int'l Joint Conf. Articial Intelligence, pp. 674〜679 (1981).
すなわち、瞬目の検出の前提として、視線の検出を行っておくことで、瞬目の検出時点では、以下の点が既知であるものとして、説明する。
【0057】
i)運転者2の顔の位置および顔の姿勢
ii)運転者2の顔の特徴点の位置
iii)運転者2の目を含む領域の位置
これらのうち、少なくとも「iii)運転者2の目を含む領域の位置」が既知であることにより、以下に説明する瞬目の検出処理において瞼のエッジの検出を行う領域を制限することができる。
【0058】
(瞬目の検知処理)
以上のような前提の下で、瞬目検知部5618が、撮影された運転者の画像から、運転者が瞬目するタイミングを検知する(S104)。
【0059】
図5は、
図4に示した瞬目検出の処理を、より詳しく説明するためのフローチャートである。
【0060】
図5を参照して、瞬目検知部5618は、瞬目の検知処理を開始すると(S300)、瞬目の発生状況を示すフラグをOFF状態とする(S302)。
【0061】
続いて、瞬目検知部5618は、上述したように視線の検出処理において、運転者2の目を含む領域の位置が検出されていることを利用して、以下のような処理により、上瞼のエッジの検出(S304)および下瞼のエッジの検出(S306)を実行する。
【0062】
図6は、上瞼のエッジの検出または下瞼のエッジの検出の処理を説明するためのフローチャートである。
【0063】
図6を参照して、まず、瞬目検出部5618は、瞼のエッジ検出の処理が開始されると(S400)、画像内でエッジ検出を実行するための範囲を指定する座標XiniおよびXendの設定値を以下のように、ローカルな定数X
1およびX
Nに設定する(S402)。
【0064】
【数1】
図7は、上瞼のエッジの検出の際の定数座標X
1およびX
Nの設定値の例を示す概念図である。
【0065】
図7に示すように、定数X
1で表現される座標については、すでに検出されている特徴点である、たとえば、目頭や目尻の位置を手掛かりとして、所定の領域内に設定する。たとえば、特に限定されないが、定数座標X
1としては、目頭と目じりを結ぶ線分上に設定する。この定数座標X
1から、これも、特に限定されないが、目頭と目じりを結ぶ線分に垂直で上に向かう方向に所定の距離だけ離れた点の座標を定数座標X
Nの値に設定する。ここで、所定の距離とは、たとえば、目頭と目じりの間隔の一定割合とするなど、事前に規定されているものとする。なお、定数座標X
1と定数座標X
Nの設定については、以上の説明は単なる例示に過ぎず、他の設定を使用することも可能である。たとえば、以上の説明では、定数座標X
1と定数座標X
Nとは、それぞれ、特定の1点に設定されるものとして説明したが、たとえば、座標X
1と座標X
Nとが、所定の矩形領域内を動ける自由度を持つものとして、以下に説明する瞼のエッジ検出と近似する曲線との一致度のスコア(スプライン曲線上のエッジ点の個数)を最大化するように、以下の処理を行う構成とすることも可能である。
【0066】
目頭と目じりについては、特徴点として抽出されているので、以上のようにして、瞼のエッジの検出を行う領域を特定できる。
【0067】
続いて、瞬目検出部5618は、対象となる画像の領域内で、エッジ検出の処理を実行する。エッジ検出の方法については、周知であるので、ここでは、説明は省略する。
【0068】
瞬目検出部5618は、カウント数kを1に設定し、かつ変数Smaxの値を0に設定した後(S406)、カウント数kがN以下である限り、以下の処理を継続し、カウント数kがNを超えると処理を終了して、
図5のフローに復帰する(S408)。
【0069】
すなわち、瞬目検出部5618は、定数座標X
1と定数座標X
Nとの間の座標X
kを以下の式によって算出する。
【0070】
【数2】
次に、瞬目検出部5618は、目頭の座標X
eおよび目じりの座標X
sと、上記座標X
kにより規定されるスプライン曲線を特定する(S412)。
【0071】
続いて、瞬目検出部5618は、特定されたスプライン曲線上の画素であって、検出されたエッジ上の画素について、画素値の合計値S
kを算出する(S414)。
【0072】
合計値S
kが、変数Smaxの値を超えない場合は(S416)、カウント数kを1だけインクリメントして(S420)、処理は、ステップS408に復帰する。
【0073】
一方、合計値S
kが、変数Smaxの値よりも大きい場合は(S416)、その時点でのカウント数kの値を変数kmaxに代入し、上瞼のエッジが線分X
1X
Nと交わる点をXtopとし、上瞼の変数Smaxの値を合計値S
kに置き換え(S418)、カウント数kを1だけインクリメントして(S420)、処理は、ステップS408に復帰する。
【0074】
すなわち、以上の処理により、目頭と目じりを通るスプライン曲線と、エッジ検出した結果の画像とが、もっともよく一致する点を、上瞼のエッジの位置Xtopとして検出することができる。
【0075】
同様にして、定数座標X
1から、特に限定されないが、たとえば、目頭と目じりを結ぶ線分に垂直で下に向かう方向に所定の距離だけ離れた点の座標を定数座標X
Nの値に設定して、
図6に示す処理を実行することで、目頭と目じりを通るスプライン曲線と、エッジ検出した結果の画像とが、もっともよく一致する点を、下瞼のエッジの位置Xbottomとして検出することができる。
【0076】
再び、
図5に戻って、以上のようにして求めた位置Xtopと位置Xbottomとの距離を算出することで、瞬目検出部5618は、開眼度Deoを算出する(S310)。特に限定されないが、開眼度Deoは、画像の画素(ピクセル)を単位として、画素数で表現することもできる。
【0077】
そして、瞬目検出部5618は、開眼度Deoが所定のしきい値Reoを下回ったと判断したときには、瞬目フラグをONとして(S312)、
図4に示す処理ステップS106に復帰する。
【0078】
再び、
図4を参照して、ステップS106において、瞬目検出部5618は、検出エラーがあると判断する場合は(S106)、処理はステップS100に復帰する。
【0079】
なお、検出エラーが生じる場合については、後述する。
【0080】
続いて、眠気推定部5620は、瞬目が検出された場合は(S108でYes)、前回の瞬目が検出された時点との時間間隔を算出する(S110)。
【0081】
さらに、眠気推定部5620は、ステップS110で時間間隔を算出した瞬目を含む過去N回分の瞬目について(N:所定の自然数)、瞬目の時間間隔の頻度を、横軸を時間間隔についての階級、縦軸をその階級ごとの度数とするヒストグラムとして作成し、それ以前のヒストグラムを更新する(S112)。
【0082】
そして、眠気推定部5620は、上記ヒストグラムの各階級の度数を、それぞれ要素とするヒストグラムベクトルVpを、記憶装置54内に予め格納されている基準ベクトルVrと比較する(S114)。ここで、記憶装置54には、基準ベクトルVrとして、後に説明するように、眠気の程度のレベルと、そのレベルに属する複数のヒストグラムベクトルとを対応付けて事前に登録がなされているものとする。なお、基準ベクトルVrとしては、その眠気の程度のレベルに典型的な基準ベクトルVrを事前に選択して記憶させておいてもよい。
【0083】
眠気推定部5620は、眠気の程度のレベルを、ヒストグラムベクトルVpと最も距離の近い基準ベクトルVrの対応する眠気レベルに更新し(S116)、眠気レベルを出力する(S118)。
【0084】
特に限定されないが、ヒストグラムベクトルVpと基準ベクトルVrとの距離は、たとえば、以下のようにして定義される。
【0085】
【数3】
なお、ヒストグラムベクトルVpと基準ベクトルVrとの距離は、上述のような計算式に限定されるものではなく、一般に「距離の概念の基準(距離の公理)」を満たすものであれば、別の定義による距離を使用してもよい。さらに、ヒストグラムで表現されるような頻度の分布の類似度を客観的に判定できる基準であれば、別の基準を用いてもよい。
(瞬目の時間間隔の頻度の分布と眠気の程度のレベル)
以上説明したような眠気の程度のレベルと瞬目の時間間隔の頻度の分布の関係について、以下、実測データを用いて、より詳しく説明する。
【0086】
実測データとしては、テストコースで運転を試験的に行った5名分の運転者のビデオ映像に基づくものとして以下説明する。
【0087】
各被験者のビデオ映像は、眠気レベルの異なる3から4種類の映像を含んでいる(眠気レベルは被験者本人の申告による)。
【0088】
図8および
図9は、このようにして各運転者について撮影した映像の一部を示す図である。
【0089】
以下では、5人の運転者のことを、被験者1〜被験者5と呼ぶことにする。
【0090】
映像データに対して、視線計測を行った画像解析を利用し、フレーム毎の開眼度を算出している。なお、目の開眼度の算出は本来左右独立に行われるが、ここでは簡単のため左右の検出値の平均値を出力値とする。
【0091】
(開眼度の解析)
図3〜
図7で説明したような方法により被験者の映像データを解析し、開眼度のデータを得る。
【0092】
なお、
図4において説明したように、日差しの加減で、撮影画像中の顔の部分が、いわゆる「白とび」している場合は、解析処理が困難となるため「検出エラー」として解析からは除外する。
【0093】
図10は、このような「白とび」が発生した画像の例を示す図である。
【0094】
なお、「白とび」の発生の有無については、顔画像の輝度分布などを利用して判断することが可能である。
【0095】
結果として、各被験者について使用画像数は、およそ1200〜9000フレームとなっている。
【0096】
図11〜
図15は、それぞれ、被験者1〜被験者5についての開眼度の時間変化を示す図である。
【0097】
各図において、3つの眠気の程度のレベルが異なる測定結果のグラフが示されている。各グラフの横軸は、時間(単位:フレーム)であり、縦軸は、上述した開眼度Deo(単位:ピクセル)である。同一の被験者についてのグラフは、縦方向の下方ほど、眠気の程度が高い状態を表している。
【0098】
瞬目の解析では、ここで得られた処理データ(開眼度)が一定のしきい値を下回った範囲を瞬目と判定し、非瞬目状態から瞬目状態に移行した時刻を瞬目時刻とする。
【0099】
(瞬目パターンの分析)
図11〜
図15では、各被験者、眠気レベル毎にサンプル画像を解析し、時系列の開眼度データを示した。
【0100】
以下では、開眼度データから瞬目情報を抽出し、その特徴について分析した結果について説明する。
【0101】
時刻tにおける開眼度をDeo[t][pixel]とすると、開眼度Deoがしきい値σを下回ったときを瞬目とすることで瞬目状態Stを判定できる。
【0102】
【数4】
ここでは、瞬目状態Stは、
図5における「瞬目フラグ」に相当する。
【0103】
以下の解析では、σ=8とし、Stの値が0から1に変化した時刻を瞬目時刻と判定し、隣接する2つの瞬目時刻の差(フレーム数)を瞬目間隔とする。ただし、瞬目時刻としては、このような瞬目の開始時点ではなく、瞬目の終了時点を基準にとることも可能である。
【0104】
図16は、上述のようにして算出した瞬目間隔のヒストグラムを示す図である。
【0105】
図中最上段は、各被験者について最も眠気レベルの低い状態での瞬目間隔のヒストグラムを示している。これに対して2段目以降は徐々に眠気レベルが高い状態となっている。
【0106】
各ヒストグラムはでは、横軸は、瞬目間隔の階級(単位:フレーム)を表し、縦軸は、各階級に属する瞬目間隔の発生の度数を示している。
【0107】
図16に示されるように、眠気レベルが低い状態では比較的瞬目間隔にばらつきがみられるのに対して、眠気レベルが高い状態では比較的ばらつきが小さく特定の周期に高いピークが得られる場合が多いことがわかる。
【0108】
このように、眠気の程度に応じて、瞬目間隔の分布に相違があるのは、たとえば、覚醒レベルが高い状態では意識的な瞬目を含めて複数の要因で瞬目が発生/抑制しているのに対して、覚醒レベルが低くなると無意識の瞬目が多くを占めるようになることが原因である可能性がある。
【0109】
(瞬目の定常性に着目した眠気検知アルゴリズム)
以上説明したように、眠気レベルが高い場合に瞬目間隔に定常性が現れる場合が多い。従って、瞬目間隔パターンの変化によって眠気検知を行うことが可能である。
【0110】
図17および
図18は、
図16に示した各ヒストグラム(頻度分布)について、瞬目の時間間隔の標準偏差を算出した結果を示す図である。
【0111】
図17および
図18に示されるように、多くの被験者で眠気レベルの増加に伴って瞬目間隔の標準偏差が小さくなる傾向があることがわかる。
【0112】
図19は、
図3に示した構成において、記憶装置54に格納される基準ベクトルVrの構成の一例を示す概念図である。
【0113】
上述のとおり、多くの被験者で眠気レベルの増加に伴って瞬目間隔の標準偏差が小さくなる傾向があることから、複数の被験者について共通に、眠気の程度のレベルとこれに対応する基準ベクトルVrとを関連付けて、記憶装置54に格納しておくことも可能である。
【0114】
すなわち、複数の被験者について、事前に実験的に集められたデータをもとに、同一の眠気の程度のレベルについて、複数人からのデータに基づく複数の基準ベクトルを対応付けておくことが可能である。あるいは、同一の眠気の程度のレベルについて、上記ヒストグラムの各階級についての度数の平均値をとり、これを階級ごとに並べることで、その眠気の程度のレベルの基準ベクトルVrとすることも可能である。
【0115】
ただし、より精度よく、被験者の眠気の程度を推定するには、
図19に示すような構成が望ましい。
【0116】
すなわち、瞬目の時間間隔の大きさ(スケール)については、一般には、個人差が見られる。たとえば、
図16に示した例では、被験者1は、相対的に小さい傾向があり、被験者3や被験者4では、相対的に大きい傾向がある。
【0117】
従って、眠気レベルの判定にあたっては、瞬目間隔の変化要因として個人差も考慮することが望ましい。そこで、
図19に示すように、眠気の程度についてだけでなく、個人の瞬目間隔のパターンについても、予め複数の標準となるパターンを時間間隔の大きさで分類して準備しておき、長時間の開眼度履歴から個人特性を推定して、その被験者にもっとも近い瞬目間隔のスケールを有する基準ベクトルVrを選択することも可能である。
【0118】
また、このような基準ベクトルVrについては、記録媒体64を介してや、あるいは、眠気レベルの推定装置がネットワークに接続されている場合は、このネットワークなどを介して、適宜、更新される構成とすることも可能である。
【0119】
したがって、この場合は、眠気検知アルゴリズムの概略は、
図4に示したものと同様であるが、大略以下のようなフローとなる。
【0120】
1)運転者の瞬目間隔を所定期間観測し、複数の基準ベクトルのうち、もっとも近いパターンを有する基準ベクトルVrの組を、その運転者用の基準ベクトルとして採用する。このような基準ベクトルの選択は、1回の運転期間(エンジンを始動後、エンジンを止めるまで)のそれぞれ最初に実行することとしてもよいし、あるいは、特定の運転者については、その車の運転を初めて行ったときに選択される基準ベクトルを登録することとしてもよいし、あるいは、一定期間ごとに、基準ベクトルの選択を更新する構成としてもよい。
【0121】
2)入力画像から顔検出、目領域抽出を行い、運転者の目領域画像を得る。
【0122】
3)目領域画像から上下瞼を抽出し、上下瞼間の距離(開眼度)を算出する。
【0123】
4)開眼度の変化から瞬目の生起を検知しその時刻を得る。
【0124】
5)直近に生起した一定回数分の瞬目の生起パターンをモデルデータと比較し、運転者の眠気レベルを判定する。
【0125】
なお、眠気の程度の判定にあたっては、上述したような瞬目間隔の分布のパターンに加えて、眠気レベルによる瞬目速度や閉眼時間についても考慮して、これらの判定レベルを統合して、眠気の判定を行う構成としてもよい。
【0126】
なお、上述のとおり、瞬目の判定の前提として、視線の検出を実行しているので、眠気の程度の判定としては、ここで説明したような「瞬目の時間間隔のパターン」と「視線方向の時間変化」とを組み合わせて、眠気の程度のレベルを総合的に判定する、という構成とすることも可能である。たとえば、眠気の程度が大きくなると安全確認などがおろそかになり、結果的に視線方向が固定化され視線移動量が小さくなる傾向がある。したがって、「瞬目の時間間隔のパターン」と「注視方向ならびに視線移動量の変化」とを組み合わせて、眠気の程度を判定する構成とすることも可能である。このとき、たとえば、「視線移動量の変化」についても、事前に取得した実験データから、変化の程度と、眠気の程度とを階級に分けて事前に対応付けておくことで、眠気の程度を判定できる。さらに、これらの組み合わせとしては、たとえば、双方の眠気の程度のレベルが一定レベル以上となった場合に眠気発生の警告出力の契機とすることも可能であるし、あるいは、一方の眠気レベルの判定が所定レベル以上の場合、他方のレベルについては、他の基準となるレベル以上に達していることをもって、眠気発生の警告出力の契機とすることも可能である。
(視線の推定処理の具体例)
視線の検出については、すでに、多くの技術が周知である。
【0127】
ただし、以下では、本実施の形態の眠気レベルの推定装置において、視線検出を実行する処理を一例として説明する。
【0128】
図20は、視線検出の処理を示すフローチャートである。
【0129】
図20を参照して、処理が開始されると、まず、CPU56は、前時刻(前フレーム)までの処理で、すでに頭部位置や頭部姿勢について推定結果が得られているかを判断する(S202)。
【0130】
前時刻における推定結果がすでに存在する場合は、これを記憶装置54から取得して、以後の処理の初期値として利用する(S204)。ただし、前時刻までの推定結果が存在しない場合は、予め定められた値を初期値として利用する。
【0131】
続いて、CPU56は、画像キャプチャ処理部5602により、カメラ30で観測され、画像データとしてキャプチャされた画像において、顔(頭部)検出部5606により、顔(頭部)の検出を実施する(S206)。
【0132】
このような顔(頭部)の検出処理としては、特に限定されないが、たとえば、以下の公知文献2や公知文献3に開示されたアルゴリズム(AdaBoostと呼ぶ)を使用することもできる。
【0133】
公知文献2:S. Kawato, N. Tetsutani and K. Hosaka: “Scale adaptive face detection and tracking in real time with SSR filters and support vector machine”, IEICE Trans. on Info. and Sys., E88-D, 12, pp. 2857〜2863 (2005).
公知文献3:CVIM研究会 チュートリアルシリーズ(チュートリアル2) 情報処理学会研究報告. 2007-CVIM-159(32), [コンピュータビジョンとイメージメディア] , P.265-272, 2007-05-15.
顔(頭部)の画像フレームからの検出については、周知の他のアルゴリズムを利用することも可能である。
【0134】
さらに、CPU56は、特徴点抽出部5608により、顔画像中から特徴点を抽出し、頭部位置・姿勢推定部5610により、頭部の3次元の位置および姿勢の推定を実行する(S208)。
【0135】
たとえば、頭部位置・姿勢推定部5610が、特許文献2(特開2008−102902号公報明細書)に記載されたような単眼カメラによる視線方向の検出処理におけるのと同様の処理により、カメラからの画像データにおいて、頭部の位置および頭部の姿勢の推定処理を実行する(S208)。
【0136】
(特徴点の抽出の他の処理)
なお、顔の特徴点の抽出については、以下のような処理を行ってもよい。
【0137】
すなわち、CPU56は、各カメラからの画像フレーム上で顔部品モデルとのテンプレートマッチング処理により、特徴点の2次元座標を得る。ここで、特に限定されないが、顔部品モデルとしては、特徴点を含む部分画像を顔部品テンプレートとして事前に準備しおいてもよいし、あるいは、ガボール(Gabor)表現を用いたモデルを使用することも可能である。
【0138】
図21は、このようなガボール表現を用いた顔部品モデルを用いた特徴点の抽出処理を説明するための概念図である。
【0139】
ここで、「ガボール表現を用いた顔部品モデル」とは、顔画像領域内の各部分領域をガボール基底ベクトルとの積和演算により低次元ベクトル表現に変換し、あらかじめ変換して記憶装置54に記録してあるモデルのことである。カメラからの画像フレームは、たとえば、
図21(a)の黒枠で示されるような黒四角の枠の大きさで部分画像に分割してあるものとする。CPU56は、このガボール表現を用いた顔部品モデルを顔部品テンプレートとして、各カメラからの画像フレームの各部分画像と比較し、類似度の高いものを特徴点として抽出する。
【0140】
このような特徴点の抽出処理については、たとえば、以下の公知文献4に記載されている。
【0141】
公知文献4:画像処理による顔検出と顔認識(サーベイ(2))情報処理学会研究報告. 2005-CVIM-149(37), [コンピュータビジョンとイメージメディア] , P.343-368, 2005-05-13.
(眼球中心位置の推定処理)
そして、頭部の位置および頭部の姿勢の推定が終了すると、続いて、CPU56は、眼球中心推定部5612により、眼球の中心位置を推定する(S210)。
【0142】
すなわち、以下に説明するように、「眼球モデルパラメータの推定処理」を、「逐次型眼球モデル推定」として実行する処理を例にとって、眼球中心位置の推定処理および虹彩(または瞳孔)位置の検出処理について説明する。
【0143】
図22は、このような眼球モデルパラメータの推定処理を「逐次型眼球モデル推定」の処理として実行する場合の処理の流れを説明する概念図である。
【0144】
すなわち、眼球モデルパラメータの推定処理については、平均的なモデルパラメータを初期値とした逐次型のアルゴリズムを用いる。
【0145】
図22を参照して、このアルゴリズムの実装例について説明する。まずアルゴリズムの開始時点では、事前の被験者実験により複数の対象人物について平均値を求めておく等の方法で得た眼球中心位置X
0L(太字、太字はベクトルであることを表し、添え字Lは左目を表す)、X
0R(太字、添え字Rは右目を表す)、眼球半径l
0、虹彩半径r
0を初期パラメータとして、眼球モデルパラメータが、たとえば記憶装置54に保持されているものとする。ここで、眼球中心位置X
0L、X
0Rは、頭部モデルにおける座標系で表現されているものとする。
【0146】
CPU56は、現在のフレームに対する以下に説明するような目領域の画像に対するラベリング結果および頭部(顔)姿勢を入力として、上記初期パラメータを出発点として、非線形最適化処理によって眼球モデルパラメータである眼球中心位置X
1L(太字)、X
1R(太字)、眼球半径l
1、虹彩半径r
1および現在フレームにおける虹彩中心位置x
L,1(太字),x
R,1(太字)を得て、たとえば、記憶装置54に格納する。ここで、眼球中心位置X
1L(太字)、X
1R(太字)ならびに虹彩中心位置x
L,1(太字),x
R,1(太字)も、頭部モデルにおける座標系で表現されているものとする。
【0147】
より詳しく説明すると、以下のとおりである。
【0148】
(RANSAC:Random sample consensus)
以下で説明するRANSAC処理は、外れ値を含むデータから安定にモデルパラメータを定めるための処理であり、これについては、たとえば、以下の文献に記載されているので、その処理の概略を説明するにとどめる。
【0149】
公知文献5:M.A.Fischler and R.C.Bolles:” Random sample consensus: A paradigm for model fitting with applications to image analysis and automated cartography,”Comm. Of the ACM, Vol.24, pp.381-395,1981
公知文献6:大江統子、佐藤智和、横矢直和:“画像徳著点によるランドマークデータベースに基づくカメラ位置・姿勢推定”、画像の認識・理解シンポジウム(MIRU2005)2005年7月
上述のような眼球中心位置を初期値として、入力画像群に対して眼球モデルを当てはめ最適なモデルパラメータを推定する。ここで、入力画像から目の周辺領域を切り出し、色および輝度情報をもとに、以下の式(1)に従って、虹彩(黒目)、白目、肌領域の3種類にラベル付けを行なう。
【0150】
【数5】
ここで、hs,kは、肌領域のk番目の画素の色相(hue)の値を表わす。hi,jは、入力画像中の画素(i,j)(第i番目のフレームのj番目の画素)の色相の値を表わす。vs,kは、入力画像中の画素(i,j)の明度の値を表わす。
【0151】
図23は、このようなラベリング処理例を示す図である。
【0152】
続いて各画素が虹彩モデルの内側にあるかどうかをチェックし、眼球モデルとの照合度を評価する(非線形最適化)。
【0153】
図24は、このような右目および左目の虹彩と眼球モデルとの照合処理の概念を示す図である。
【0154】
ここで、このような非線形最適化処理を行なうにあたり、以下の式(2)で表される距離d
{LR},i,jを導入する。
【0155】
【数6】
一方、r
{LR},i,jは、虹彩中心から画素(i,j)方向の虹彩半径を示すとすると、
図24に示すとおり、画素(i,j)が虹彩の外側にあれば、d
{LR},i,jは、r
{LR},i,jよりも大きな値を示す。
【0156】
r
{LR},i,jは、以下の式(3)に示すように、3次元の眼球中心位置X
i{LR}(太字)、対象画像フレーム内の画素位置(x
i,j,y
i,j)、眼球半径l
i、虹彩半径r
i、対象画像フレーム内の虹彩中心投影位置x
{LR}、i(太字)の関数となる。なお、以下では、下付文字{LR}は、左を意味するL、右を意味するRを総称するものとして使用する。また、添え字のiは、第i番目の画像フレームであることを示す。
【0157】
【数7】
なお、頭部の相対座標で考えているので、本来は、眼球中心位置は、フレームに拘わらず、一定の位置に存在するはずである。
【0158】
最後に、眼周辺の全画素についてd
{LR},i,jの評価を行ない、入力画像群に尤もよく当てはまる以下の式(4)のモデルパラメータθを、式(5)に従って決定する。
【0159】
【数8】
ここで、g
i,j{LR}は、フレームi、画素jにおけるd
{LR},i,jの評価値であり、対象画素が虹彩領域か白目領域かによって、以下の式に従い、符合を反転させる。
【0160】
【数9】
ラベリングuijが撮影された画像内の虹彩領域を反映し、関数G
i,j{LR}は、眼球モデルから算出される虹彩領域を反映している。
【0161】
このようにして、眼球中心位置が推定される(S210)とともに、虹彩中心の位置も検出される(S212)。
【0162】
そして、得られた虹彩中心投影位置および眼球中心位置の投影位置から現在のフレームにおける視線方向を計算することができる(S214)。
【0163】
より具体的には、以上で求まった眼球中心位置と虹彩中心位置より視線方向を計算する。
【0164】
図25は、視線方向を決定するためのモデルを説明する概念図である。
【0165】
図25に示されるように、画像上での眼球半径をl、画像上での眼球中心と虹彩中心とのx軸方向、y軸方向の距離をdx、dyとすると、視線方向とカメラ光軸とのなす角、つまり、視線方向を向くベクトルがx軸およびy軸との成す角ψx、ψyは次式で表される。
【0166】
【数10】
なお、右目と左目のそれぞれで、視線が推定されるので、左右両眼について得られた視線方向の平均値を視線方向として出力する。ただし、たとえば、右目と左目とで、異なるカメラで撮影した画像フレームで視線を推定した場合などは、観測解像度、観測方向を考慮した重み付き平均としてもよい。
【0167】
続いて、CPU56の視線方向推定部5616は、頭部位置・姿勢の推定結果とともに、視線推定の結果を出力して、記憶装置54に格納する(S216)。表示制御部5613は、特に限定されないが、たとえば、表示部42に撮影された画像が表示されるモードでは、表示される画像上において、視線の方向を、たとえば、画像中の対象人物の虹彩の中心(瞳孔)から、視線方向に伸びる線分または矢印として表示する。
【0168】
次フレーム以降の処理においては、前フレームで得られた眼球モデルパラメータを初期値と置き換え、新たに得られる入力画像フレームのデータに対して、非線形最適化処理を行なうことでモデルパラメータの更新および当該フレームにおける虹彩中心位置の推定、視線方向の推定を行なうことができる。
【0169】
以上説明したように、覚醒時の眠気以外の要因による瞬目の変動を考慮して、自動車の運転者等の状態(特に眠気)をカメラで撮影した運転者の顔画像データから検知することが可能になる。
【0170】
さらに、このような眠気の検知を、運転者の顔映像から視線方向を検出するシステムを拡張することで実現することが可能となる。
【0171】
今回開示された実施の形態は、本発明を具体的に実施するための構成の例示であって、本発明の技術的範囲を制限するものではない。本発明の技術的範囲は、実施の形態の説明ではなく、特許請求の範囲によって示されるものであり、特許請求の範囲の文言上の範囲および均等の意味の範囲内での変更が含まれることが意図される。