顔向き判別装置
【課題】 人物画像に基づいて顔の向きを判別し、その信頼度も判定する。
【解決手段】カメラ10でドライバーの顔を撮影して得られた顔画像を画像メモリ22に記憶する。CPU24は、画像メモリ22に記憶された前記顔画像に基づいて、顔の両側位置と上下位置を判別し、さらに、顔向き角度を判別する。CPU24は、求めた顔向きについて、その信頼度を示す信頼度を求め、顔向きに対応付けて出力する。CPU24は、信頼度として、従前に判別された顔の位置と今回検出された位置とのずれの量に基づく信頼度、ソーベルフィルタ処理後の顔画像の各画素の画素値を所定方向に投影して得たヒストグラムに基づいた信頼度、顔画像を複数の領域に分割し、各領域の重心を求め、求めた重心位置に基づいた信頼度、顔画像を複数の領域に分割し、各領域の輝度を求め、求めた輝度に基づく信頼度等を求める。
【解決手段】カメラ10でドライバーの顔を撮影して得られた顔画像を画像メモリ22に記憶する。CPU24は、画像メモリ22に記憶された前記顔画像に基づいて、顔の両側位置と上下位置を判別し、さらに、顔向き角度を判別する。CPU24は、求めた顔向きについて、その信頼度を示す信頼度を求め、顔向きに対応付けて出力する。CPU24は、信頼度として、従前に判別された顔の位置と今回検出された位置とのずれの量に基づく信頼度、ソーベルフィルタ処理後の顔画像の各画素の画素値を所定方向に投影して得たヒストグラムに基づいた信頼度、顔画像を複数の領域に分割し、各領域の重心を求め、求めた重心位置に基づいた信頼度、顔画像を複数の領域に分割し、各領域の輝度を求め、求めた輝度に基づく信頼度等を求める。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、顔画像から顔向き(横向き角度)を判別すると共にその信頼度(確度)を判別することが可能な顔向き判別装置に関する。
【背景技術】
【0002】
顔画像に基づいて人を識別したり、表情を読み取ったりするためには、顔の位置や顔の中心位置、向きなどを検出することが重要となる。
【0003】
例えば、特許文献1には、人の顔を撮影した画像を処理し、人の動きや背景に影響されること無く高精度に顔の位置を検出する手法が開示されている。
【0004】
また、特許文献2には、ドライバーが存在可能な領域を撮影して得られた画像を取り込み、取り込んだ画像から横エッジ画像(顔の両側端)を検出し、検出した横エッジ画像に基づいて、複数の顔中心候補線を設定すると共に各顔中心候補線各々に対して、該顔中心候補線が顔の中心線である確からしさを表す値に基づいて、顔の有無の判定精度を向上する技術が開示されている。
【特許文献1】特開2004−310396号公報
【特許文献2】特開2005−011097号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
車両の走行環境は様々に変化し、カメラが捉えるドライバーの画像も様々に変化する。例えば、あるタイミングでは、顔に直射日光があたって全体が明るい画像となり、車両の向きが変化することに伴ってカメラに向かう面が陰になって、全体が暗くなったり、或いは、顔の一部が明るく、残りが暗くなる等の事態が生ずる。このため、顔の両側端位置の検出なども困難であり、画像取得時の環境・条件、例えば、光のあたり方(あたる方向、外光の強度)などにより、顔の輪郭線や中央線の検出を誤ってしまうこともある。
これらの情報の検出に誤りが生ずると、横向き角度の判定など、以後の判定にずれが生じてしまう。
このような場合に、環境や条件による検出位置の精度に指標が与えられれば有効であり、以後の、処理に活用可能である。
【0006】
本発明は上記の問題点に鑑みてなされたものであり、顔の向きなどを判別する場合に、その信頼度を判別することを可能とすることを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するため、この発明の顔向き判別装置は、顔を撮影して得られた顔画像を記憶する顔画像記憶手段と、前記顔画像記憶手段に記憶された前記顔画像に基づいて、顔の位置と顔の中心の位置とを判別する顔位置判別手段と、前記顔位置判別手段により求められた顔の位置と顔の中心の位置とに基づいて顔の向きを出力する顔向き判別手段と、前記顔向き判別手段により判別された顔向きについて、その確からしさを示す信頼度を求める信頼度判別手段と、前記顔向き判別手段で判別された顔の向きと、前記信頼度判別手段により判別されたその信頼度とを出力する出力手段と、を備える、ことを特徴とする。
【0008】
前記信頼度判別手段は、例えば、従前に判別された顔の位置と今回検出された顔の位置とのずれに基づいてその信頼度を求める。
【0009】
例えば、前記顔位置判別手段は、前記顔画像記憶手段に記憶された前記顔画像のエッジ抽出処理を行い、エッジ抽出処理により得られた画像の各画素の画素値を所定方向に投影してヒストグラムを得るヒストグラム取得処理を実行し、前記信頼度判別手段は、前記ヒストグラムの値に基づいて、その信頼度を求める。
【0010】
前記信頼度判別手段は、例えば、顔画像を複数の領域に分割し、各領域の重心を求め、求めた重心位置に基づいて、顔位置の信頼度を求める。
【0011】
前記信頼度判別手段は、例えば、顔画像を複数の領域に分割し、各領域の輝度を求め、求めた輝度に基づいて、顔位置の信頼度を求める。
【0012】
前記顔位置判別手段と前記顔向き判別手段と前記信頼度判別手段とは、例えば、前記顔画像記憶手段に記憶された前記顔画像に基づいて、顔の水平方向の位置を判別する処理と、判別した水平方向の位置の信頼度を求める1単位の処理を繰り返して実行し、顔の垂直方向の位置を判別する処理を複数の処理ステップに区分して、各1単位の処理内でいずれかの区分ステップを実行し、顔の垂直方向の位置を求める。
【0013】
また、この発明のコンピュータプログラムは、コンピュータを、顔を撮影して得られた顔画像を記憶する顔画像記憶手段、前記顔画像記憶手段に記憶された前記顔画像に基づいて、顔の位置を判別する顔位置判別手段、前記顔位置判別手段により判別された顔位置について、その確からしさを示す信頼を求める信頼度判別手段、前記顔位置判別手段で判別された顔の位置と、前記信頼度判別手段により判別されたその信頼度とを出力する出力手段、として機能させることを特徴とする。
【発明の効果】
【0014】
この発明によれば、顔画像から顔の向きを判別すると共にその信頼度を判別することができる。
【発明を実施するための最良の形態】
【0015】
以下、本発明の実施形態に係る顔向き判別装置について説明する。
【0016】
本実施形態の顔向き判別装置は、図1に示すように、ドライバーの顔を撮影して顔画像を生成するカメラ10と、ドライバーの顔を照明する照明光源12と、ドライバーの顔中心位置を検出するコンピュータ14と、コンピュータ14に接続された表示装置16とを備える。
【0017】
カメラ10は例えばCCDカメラ等から構成され、ドライバーの顔の階調画像を取得する。カメラ10によって生成される顔画像は、ドライバーの顔だけでなく、その背景なども含まれている。
【0018】
表示装置16は、LCD(Liquid Crystal Display)又はCRT(Cathode Ray Tube)などから構成され、カメラ10で撮影された顔画像から抽出された二値化画像などを表示する。
【0019】
コンピュータ14は、カメラ10により取得された顔画像を処理して顔の両端の位置を検出し、この検出した両端位置に基づいて、顔の横向き確度を求め、さらに、顔の両端の検出位置のずれを数値化して検出された横向き角度の信頼度を求める装置である。コンピュータ14は、図2に示すように、A/D変換器21と、画像メモリ22と、ROM23と、CPU24と、RAM25と、表示制御装置27と、光源制御装置28と、を備える。
【0020】
A/D(アナログ/ディジタル)変換器21は、カメラ10で撮影されたアナログ画像信号をディジタル信号に変換する。
画像メモリ22は、カメラ10により生成され、A/D変換器21でディジタル化された画像データを記憶する。
【0021】
ROM23は、CPUの動作を制御するためのプログラムを記憶する。また、ROM23は、後述する画像処理を実行するための様々な固定データを記憶する。
【0022】
CPU24は、ROM23に格納されているプログラムを実行することにより、カメラ10により取得された顔画像を処理して顔の両端の位置を検出し、この検出した両端位置に基づいて、顔の横向き角度を求め、さらに、顔の両端の検出位置のずれを数値化して検出された向き(横向き角度)の信頼度を求める装置である。
【0023】
RAM25は、CPU24のワークリアとして機能する。
表示制御装置27は、CPU24の制御下に、表示装置16を制御する。
光源制御装置28は、照明光源12の点灯・消灯を制御する。
【0024】
次に、ROM23に格納される固定データの例を図3を参照して説明する。まず、ROM23は、図3(a)、(b)に示すような、縦エッジ検出用と横エッジ検出用ソーベルフィルタのオペレータを格納する。図3(a)、(b)に示す、縦エッジ検出用ソーベルフィルタと横エッジ検出用のソーベルフィルタとは、それぞれ、図3(c)、(d)に示すような縦方向の濃淡差、横方向の濃淡差を強調するためのオペレータである。
【0025】
また、ROM23は、図3(e)に示すように、RAM25に格納される顔画像のうち、目や眉の画像が存在すると想定される位置を特定するデータが格納されている。
また、ROM23は、図3(f)に示すように、サングラスを検出するために、サングラスの縦横のサイズを格納する。
また、ROM23は、図3(g)に示すように、標準的な目の画像を格納する。
【0026】
次に、上記構成を有する顔向き判別装置の動作を説明する。
電源が投入されると、コンピュータ14内のCPU24は、図4に示す処理を繰り返して実行する。
【0027】
即ち、CPU24は、前処理(ステップS01)と顔位置判別(検出)処理(ステップS02)とから構成される初期処理を実行し、続いて、第1の処理〜第nの処理を繰り返して実行する。nは2以上の自然数である。
【0028】
初期処理を構成する前処理(ステップS01)と顔位置判別処理(ステップS02)とは、ドライバーの左右方向及び上下方向の顔の位置の初期値を求めるための処理である。
【0029】
第1処理〜第n処理は、電源投入中は繰り返して実行され、それぞれ、ドライバーの顔の左右方向の顔の位置を求め、さらに、その信頼度と共に出力する。また、第1処理〜第n処理は、全体として、ドライバーの上下方向の顔の位置を1回求める。これにより、定常動作状態では、ドライバーの顔の左右方向の位置をn回求めている間に、ドライバーの顔の上下方向の位置を1回求めることになる。一般に、人間の顔の上下方向の動きは、左右方向の動きに比べて小さいため、このような検出手法を採用することにより、顔の位置の検出の精度と処理効率との両立を図ることができる。
【0030】
初期処理を構成する前処理S01は、図5に示すように、キャプチャ処理(ステップS011)と、座標変換処理(ステップS012)と、ソーベルフィルタ処理(ステップS013)とから構成される。
【0031】
キャプチャ処理(ステップS011)は、カメラ10の撮影したドライバーの1フレーム文の顔画像をA/D変換器21を介して取り込み、画像メモリ22に格納する処理である。
【0032】
座標変換処理(ステップS012)は、処理可能な程度に画素を間引く処理である。
【0033】
ソーベルフィルタ処理(ステップS013)は、ROM23に格納されている縦エッジ検出用ソーベルフィルタ(図3(a))を用いて座標変換後の顔画像を処理して、顔画像内の縦エッジを強調する処理を行い、また、横エッジ検出用ソーベルフィルタ(図3(b))を用いて座標変換後の顔画像を処理して、顔画像内の横エッジを強調する処理を行う処理である。
【0034】
図4の顔位置判別処理(ステップS02)は、前処理済みの顔画像を用いて顔の両端位置と上下位置を検出する処理であり、図6に示すように、顔両端検出処理(ステップS021)と顔上下位置検出処理(ステップS022)とから構成される。
【0035】
顔両端検出処理(ステップS021)は、顔画像を縦エッジ検出用のオペレータで操作した顔画像について、顔の両端を構成するラインを特定する処理であり、既知の任意の手法を採用することができる。
【0036】
例えば、図10に示すように、顔両端検出用のヒストグラム作成処理を行い(ステップS0211)、続いて、このヒストグラムのピーク値の高いものを所定数抽出して、これをソートし(ステップS0212)、ヒストグラム値に基づく、端点の抽出を行う(ステップS0213)。例えば、ヒストグラム値の上位1又は2つが他と比較して極端に値が大きい場合には、その点を端点とする。
【0037】
次に、端点が2つ(両端)抽出されたか否かを判別し(ステップS0214)、判別されていれば(ステップS0214;Yes)、処理を終了し、端点が2つ抽出できていなければ(ステップS0214;No)、ヒストグラム値同士の距離が、人の顔幅としてもっともらしい間隔を有する組み合わせを抽出することにより、端点を決定し(ステップS0215)、最終的に、顔面の両端を決定する処理を行う(ステップS0216)。
【0038】
また、特許文献1に開示されているように、撮影画像の時間微分を算出し、さらに、この画素値時間微分画像の画素値を縦方向に投影してヒストグラムを作成し、エッジ部抽出画像のヒストグラムと画素値時間微分画像のヒストグラムとを合計して、ヒストグラムのピーク値の高いものを抽出すると共に人の顔幅としてもっともらしい点を決定し、顔端位置を検出するようにしてもよい。
【0039】
次に、図6のステップS022の顔上下位置検出処理は、上述と同様の処理を横エッジについて行って、顔のほぼ目の位置(上端)と口の位置(下端)を検出する処理であり、例えば、図11に示すように、ヒストグラム作成処理(ステップS0221)と、目下候補検出処理(ステップS0222)と、顔上下位置算出処理(ステップS0233)と、から構成される。
【0040】
ヒストグラム作成処理(ステップS0221)は、横エッジ検出用ソーベルフィルタを用いたソーベルフィルタ処理後の各画素の値を横方向に投影してヒストグラムを作成する処理である。
【0041】
目下候補検出処理(ステップS0222)は、ヒストグラム値に基づいて、目・眉、口などに対応するヒストグラム値の候補を選択する処理である。
顔上下位置算出処理(ステップS0233)は、選択した候補から、顔の上下端位置(例えば、目・眉の位置)を検出する処理である。なお、顔上端位置は、例えば、眉の上、下端位置は口と顎の間などに設定される。
【0042】
CPU24は、このようにしてステップS021とS022で求めた、顔両端(左右側端)位置と、顔の上下位置をRAM25に記憶する。
【0043】
以上で、図4の初期処理が終了し、続いて、CPU24は、第1処理〜第n処理のループ処理を開始する。
【0044】
第1から第nの周期処理は、それぞれ、前処理(ステップS11〜Sn1)と、基本処理(ステップS12〜Sn2)と、後処理(ステップS13〜Sn3)と、分割処理(ステップS14〜Sn4)と、から構成される。
【0045】
前処理(ステップS11〜Sn1)は、ステップS01の前処理と同一であり、図5に示すように、顔画像をキャプチャするキャプチャ処理(ステップS011)、画素を間引く座標変換処理(ステップS012)、ソーベルフィルタで顔画像を処理するソーベルフィルタ処理(ステップS013)を含む。ただし、ここでのソーベルフィルタ処理は、縦エッジ検出用のソーベルフィルタ処理のみである。
【0046】
図4の第1処理〜第n処理を構成する基本処理(ステップS12〜Sn2)は、それぞれ、顔の両端を検出し、顔中心を検出する処理であり、図7に示すように、顔両端検出処理(ステップS121)と顔中心検出処理(ステップS122)と、から構成される。
【0047】
顔両端検出処理(ステップS121)は、前述の図10に示す処理と同様の処理で実現可能である。即ち、前述したように、顔両端の検出用ヒストグラムを作成する(ステップS0211)。続いて、顔の両端の位置の候補データをヒストグラムの順に並べ変える(ステップS0212)。次に、ヒストグラムのうち、値が抜き出たものが存在するか否かを判別し、値が抜き出たものがある場合には、それを顔両端の候補として採用する(ステップS0213)。ステップS0213で、顔の両端が検出できたか否かを判別する(ステップS0214)。顔の両端が検出できていない場合には(ステップS0214;No)、ヒストグラムに基づいて複数の端候補を選択して、顔の両端の距離などから相対的にマッチするものを検出し(ステップS0215)、最終的に、顔面の両端を決定する処理を行う(ステップS0216)。
【0048】
一方、図7の顔中心検出処理(ステップS122)は、例えば、図12に示す構成を有する。
【0049】
まず、CPU24は、任意の閾値を基準として、RAM25に格納されている顔画像を構成する各画素の階調を二値化する(ステップS1221)。閾値としては、例えば、顔画像を形成する全画素の平均値を使用できる。これにより、例えば、図18(a)に例示するようなドライバーの二値化画像が生成される。
【0050】
続いて、CPU24は、二値化画像に、白黒白画像生成処理を実行する(ステップS1222)。
この白黒白画像生成処理において、CPU24は、まず、二値画像のうち、目の存在が予定されている領域を定義する領域指定データ(図3(e)に示すy1,y2)をROM23から読み出し、二値化画像の目領域を図18(b)に示すように切り出す。
【0051】
続いて、切り出した二値化画像について、白黒白横エッジを検出する。
ここで、白黒白エッジとは、単に白と黒の境界となるエッジではなく、白から黒へ、さらに黒から白へと変化し、所定の幅を有するエッジのことである。このうち、白黒白横エッジとは、横方向にのびる境界の意味であり、このうち、白黒白縦エッジとは、縦方向にのびる境界の意味である。
【0052】
CPU24は、まず、白黒白横エッジ検出処理を開始し、図3(f)に示す設定に従って、目領域画像中で、サングラスのサイズに従って縦方向に6〜12画素(通常の目は、2〜4画素)の幅の黒い画素列を検出する。
【0053】
白黒白横エッジを検出する手法自体は任意である。例えば、座標値yを順次更新しつつ、画素(x、y)の輝度を判別し、輝度が白から黒に変化すると、黒の連続する数をカウントし、黒が白に変わった時点で黒の連続数が6〜12であるか否かを判別し、連続数が6〜12であれば、その画素を維持し、それ以外であれば、それらの画素を白に変換するという手法を採用できる。
【0054】
次に、白黒白横エッジ検出処理と同様の動作により白黒白縦エッジを検出する。白黒白縦エッジ検出処理は、処理済みの目領域の画像から、図3(f)の設定に従って、横方向に10〜18(通常の目は6〜10)画素の幅の黒の画素列を検出する処理である。
【0055】
このような構成とすることにより、例えば、抽出した目領域の画像が図18(b)に例示する画像であった場合に、連続数がx方向に1〜9及び19以上、y方向に1〜5及び13以上連続する黒画素が、白画素に変換される。これにより、サングラスのレンズを構成しない、横方向に短い黒画素列や、長すぎる黒画素列が図18(c)に示すように除去される。
【0056】
次に、CPU24は、図12のステップS1223で、サングラスの有無を判別する処理を行う。CPU24は、処理後の目領域の画像に、縦方向に6〜12画素で、横方向に10〜18画素の黒領域が2つ得られている場合には、サングラスが検出されたと判別する。
【0057】
サングラスがあると判別した場合(ステップS1224;Yes)、予め用意されている標準的な目領域の画像、例えば、図18(d)に示す処理後の目領域の画像を、図18(e)に示す元の二値画像から目領域を除去した画像と合成して、図18(f)に示す中心位置測定用の顔画像を生成する(ステップS1225)。なお、サングラスの位置を判別して、合成する目の位置を調整してもよい。
【0058】
続いて、顔画像を用いて、顔の中心位置(顔の位置、重心位置)を求める(ステップS1226)。中心の測定手法自体は任意であるが、例えば、次式から顔の中心(重心)位置の座標を求めることができる。
顔の中心のx座標=Σxi/n xi:i番目の黒画素のx座標の値
顔の中心のy座標=Σyi/n yi:i番目の黒画素のy座標の値
i:1〜n nは黒画素の総数
【0059】
なお、重心を求める範囲を、顔の両側端とその時点で求められている顔の上端位置と下端位置の間等に限定してもよい。或いは、顔の主要パーツの(眉、目、鼻、口)の画像のみから重心を求めてもよい。
【0060】
なお、ステップS1224でサングラスが検出されなかった場合(ステップS1224;No)には、ステップS1225の合成処理をスキップする。
【0061】
以上で顔の中心位置が求められ、図7の顔中心検出処理(ステップS122)が終了する。即ち、この処理により、顔の水平方向の位置と顔の中心位置とが求められ、図4の基本処理(ステップS12,S22,...Sn2)が終了する。
【0062】
その後、処理は図4の後処理(ステップS13、S23,...,Sn3)に進む。
【0063】
後処理(ステップS13、S23,...,Sn3)は、直前の基本処理(ステップS12、S22,...,Sn2)で求めた両端位置と顔の中心位置に基づいて、顔の向きをとその信頼度を求める処理である。
【0064】
この後処理(ステップS13、S23,...,Sn3は、図8に示すように、直前の基本処理(ステップS12、S22,...,Sn2)で求めた両端位置と顔の中心位置に基づいて顔の向きの角度(向き;横向き角度)を計算する処理(ステップS131)と、その信頼度を求める処理(ステップS132)と、顔向き角と信頼度とを対応付けて出力する処理(ステップS133)を備える。
【0065】
顔向き角度計算処理(ステップS131)は、直前の基本処理(ステップS12、S22,...,Sn2)で求めた顔の両端位置と、直前の基本処理(ステップS12、S22,...,Sn2)で求めた顔の中心位置とに基づいて、顔の向き(角度)を判別する。なお、顔の向きを求める計算手法自体は従来の既知の任意の手法を使用することができる。例えば、顔の両端位置の中央に顔の顔の中心位置が存在すれば、顔は正面を向いていると判別できる(カメラ10を向いた方向)にある。また、顔の中央位置が顔の両端位置の中央よりも左に存在していれば、カメラ10から見て左を向いていると判別でき、顔の中央位置が顔の両端位置の中央よりも右に存在していれば、カメラ10から見て右を向いていると判別できる。
【0066】
続いて、CPU24は、計算した顔向き角の信頼度を求める信頼度計算処理を実行する(ステップS132)。
信頼度計算処理(ステップS132)は、図13に示すように、顔両端位置ずれ信頼度計算処理(ステップS1321)と、ヒストグラム信頼度計算処理(ステップS1322)と、重心バランス信頼度計算処理(ステップS1323)と、輝度バランス信頼度計算処理(ステップS1324)とを備える。
【0067】
顔両端位置ずれ信頼度計算処理(ステップS1321)の詳細を、図14に示す。
図示するように、CPU24は、信頼度={ t1−|R1−R2|)+(t1−|L1−L2|)+(t1−|W1−W2|)}/3 を計算する(ステップS13211)。
なお、 (t1−|R1−R2|)、(t1−|L1−L2|)、(t1−|W1−W2|)}の最小値を、それぞれ、0とする。
【0068】
t1は係数であり、
R1は、今回求められた顔の右端の位置、R2は顔の右端の基準値(初期値は初期処理の顔位置判別処理(ステップS02)で求められた値)、
L1は、今回求められた顔の左端の位置、L2は顔の左端の基準値(初期値は初期処理の顔位置判別処理(ステップS02)で求められた値)、
W1は、今回求められた顔の幅=|R1−L1|、W2は、顔の幅の基準値(初期値は初期処理の顔位置判別処理(ステップS02)で求められた右端と左端の距離値)、である。
【0069】
この信頼度の技術的意味を図19(a)に模式的に示す。
今回得られた顔画像の両端位置(R1,L1)及び幅(W1)が基準となる顔画像(通常は、1つ前の処理で得られた顔画像)の両端位置(R2,L2)や幅(W2)と相対的に近い値ならば、高い評価を、相対的に遠い値ならば、低い評価を与えるものである。繰り返し処理の実行間隔が短いことから、これらの値に通常大きな変化は無いことを前提とする評価値である。
【0070】
CPU24は、評価値が所定の閾値以上か否かを判別し(ステップS13212)、評価値が基準値以上である場合(ステップS13212;Yes)、即ち、今回の位置検出が比較的正確に行われていると評価できる場合には、図19(b)に模式的に示すように、今回取得したR1,L2,W1を次回評価用の基準値R2,L2,W2として記憶する(ステップS13213)。一方、評価値が閾値未満の場合(ステップS13212;No)、図19(c)に示すように基準値R2,L2,W2を変更しない(ステップS13214)。
【0071】
次に、ヒストグラム信頼度計算処理(ステップS1322)の詳細を、図15を参照して説明する。
図示するように、CPU24は、信頼度={ P1/|P1+P2+P3+...Pm)}・t2 を計算する(ステップ13221)。
【0072】
t2は係数であり、
P1〜Pmは、ヒストグラム値のうちの閾値以上のものであり、P1をトップとする降順である。mは4〜7程度が望ましい。なお、ヒストグラム値の上位m個(この場合、mは固定数)を選択するようにしてもよい。
【0073】
この信頼度の技術的意味を図20(a)〜(d)に模式的に示す。図20(a)と図20(b)とは、それぞれ、顔の左端と右端を正確に検出できている場合の検出された顔端とヒストグラム分布の例を示す図、図20(c)と図20(d)とは、それぞれ、顔の左端と右端を正確に検出できていない場合の検出された顔端とヒストグラム分布の例を示す図である。なお、ヒストグラムはピーク5つを抽出している。
【0074】
図20(a)、(b)に示すように、顔画素の左端と右端を決定したときのピーク値が他のピーク値に比べてきわめて大きいものであった場合、その左端又は右端は比較的信頼性が高い。これに対し、図20(c)、(d)に示すように、明確なピーク値が得られずに、顔の位置を決定した場合には、その信頼性は低い。
【0075】
次に、重心バランス信頼度計算処理(ステップS1323)の詳細を、図16に示す。
まず、CPU24は、図21に模式的に示すように、重心検出領域を顔上端(FU)と顔中央(FC)からなる上部領域と、顔中央(FC)と顔下端(FD)からなる下部領域に分割する(ステップS13231)。
【0076】
次に、CPU24は、直前の基本処理の顔中心検出処理で求めた重心位置(GL)を読み出し、上部領域における重心位置(UG)と下部領域による重心位置(DG)とを、計算する(ステップS13232)。
【0077】
次に、CPU24は、重心バランス信頼度={t3−(|GL−UG|+|GL−DG|)}×t4 を計算する(ステップS13233)。
なお、計算結果が0以下はすべて0とする。
ここで、
t3:係数,t4:係数
【0078】
この信頼度の技術的意味を図21(a)に模式的に示す。
人間の顔は、図21(a)に示すように、左右対称であり、通常、基本処理で求めた中心検出領域の重心位置(GL)と、上部領域の画像の重心位置(UG)と、下部領域の画像の重心位置(DG)とは、x軸方向に関しては一致する。
【0079】
しかし、図21(b)に例示するように、眼帯の装着等により、顔のバランスが崩れている場合、各重心GL,UG、DGのX座標値は、互いにずれてしまう。そこで、このずれが大きい場合には、顔向き角の信頼度が低いと判断するものである。
【0080】
次に、輝度バランス信頼度計算処理(ステップS1324)の詳細を、図17に示す。
まず、CPU24は、図22(a)に模式的に示すように、顔の中心検出領域を顔左上端(UL)と、顔右上端(UR)と、顔左下端(DL)と、顔右下端(DR)に分割する(ステップS13241)。
【0081】
次に、CPU24は、各領域(UL,UR,DL,DR)にて平均輝度(IUL,IUR,IDL,IDR)を算出する(ステップS13242)。
【0082】
次に、CPU24は、次式に従って、輝度バランス信頼度を計算する(ステップS13243)。
輝度バランス信頼度
={t5−(|IUL−IUR|+|IUL−IDL|
+|IUL−IDR|+|IUR−IDL|
+|IUR−IDR|+|IDL−IDR|}×t6
t5:係数,t6:係数
計算結果が0以下はすべて0とする。
【0083】
この信頼度の技術的意味を図22(a)に模式的に示す。
一般的に、人間の顔は、図22(a)に示すように、左右対称であり、左右対称に照明される。しかし、顔の向きや光源の位置によっては、図22(b)や22(c)に示すように、偏って照明され、顔上に位部分と明るい部分とが発生してしまう。
【0084】
このうち、図22(c)に示すような顔の左右方向の明るさが異なると、顔の左右方向の位置や向きの判別に悪影響を与える。そこで、上記評価式は、左右方向のバランスが悪くなるに従って評価が下がるように構成されている。
【0085】
以上説明したように、評価処理により、その直前の基本処理(ステップS1〜Sn2)で求められた顔の向きの信頼度が求められる。
【0086】
次に、CPU24は、ステップS131で求めた求めた顔向き角度とステップS132で求めた信頼度とを対応付けて出力する(ステップS133)。
【0087】
以上で、第1処理〜第n処理のそれぞれで実行される前処理、基本処理、後処理が終了し、顔の左右方向の角度とその信頼度とが対応付けて出力される。
【0088】
続いて、CPU24は、分割処理(ステップS14〜Sn4)を開始する。
この分割処理(ステップS14〜Sn4)は、全体としては、図9に示すように、画像キャプチャ処理(ステップS141))、座標変換処理(ステップS142)、ソーベルフィルタ処理(ステップS143)、顔上下位置検出処理(ステップS144)、とから構成される。画像キャプチャ処理(ステップS141)、座標変換処理(ステップS142)、ソーベルフィルタ処理(ステップS143)は前述の前処理(ステップS01)における処理(ステップS011〜S013)と同一である。ただし、ここでの、ソーベルフィルタ処理は、横エッジ検出用のソーベルフィルタ処理のみで十分である。
【0089】
また、顔上下位置検出処理(ステップS144)は、図6に示した、顔上下位置検出処理(ステップS022)と同様であり、第1分割処理(ステップSS14内の画像キャプチャ処理(ステップS141)で取得した顔画像に基づいて上下位置を判別する。
【0090】
なお、具体的な処理を実行する際には、CPU24は、分割処理(ステップS14〜Sn4)を開始する際に、種々のポインタやレジスタの値をRAM25に待避し、RAM25に待避しておいた先の分割処理の処理結果をリストア(再設定)する。続いて、CPU24は、リストアしたポインタ及びレジスタに従って動作を継続し、RAM25に格納されているデータを用いて、顔の上下位置を判別する処理の一部を行って、処理が終了すると、ポインタやレジスタの値をRAM25にセーブし、RAM25にセーブしておいた通常の処理のポインタ値やレジスタ値(分割処理を開始する直前の値)リストアして、処理を継続する。
【0091】
なお、各分割処理(ステップS14〜Sn4)は、一定量の処理を実行した段階で切り替えても、一定時間経過した段階で切り替えてもよい。
【0092】
以上説明したように、この顔向き検出装置によれば、顔の位置や向きの判別値とその信頼度とを求めることができる。
【0093】
この顔向き判別の出力信号の利用形態は任意であるが、例えば、顔向き検出装置からの出力に基づいて、ドライバーに脇見運転の警告を放音することができる。このとき、信頼度に応じて報知音を更新することができる。
【0094】
なお、この発明は上記実施の形態に限定されず、種々の変形及び応用が可能である。
【0095】
上記実施の形態においては、4種類の信頼値を求めたが、これらの平均を求めたり、最上位点と最下位点の信頼度を除いた残りの2つの信頼度を出力対象としたり、これらの平均値を出力する等してもよい。
【0096】
また、図13のステップS1321の顔両端位置ずれ信頼度計算処理において、図14のステップS13211の信頼度の計算式は適宜変更・修正可能である。例えば、顔の左右端位置の基準位置とのずれを用いて、信頼度を計算したが、検出した顔の中心(重心)と基準中心位置との差異や、顔の中心及び両端位置と各基準位置とのずれに基づいて、信頼度を計算するなど、左右方向の位置ずれを検出し、そのずれ量から信頼度を検出できるならば、検出及び比較の対象、演算式は任意である。また、上下方向(上端位置、下端位置、中央)についても、検出位置と基準位置とのずれを検出し、信頼度を検出(判定)しても良い。さらに、顔画像の領域を複数に分割し、それぞれについてずれ量を求めて、信頼度を求める等してもよい。
【0097】
同様に、図13のステップS1322のヒストグラム信頼度計算処理において、図15のステップS13221の計算式は適宜変更・修正可能である。例えば、ヒストグラムの第1と第2のピークの差(P1−P2)の大きさや全体に対する比に基づいて、信頼度を計算してもよい。その他、顔の側端の検出に使用したヒストグラムのピークの他のピークに対する優位度から信頼度を測定できるならば、その手法は任意である。また、顔の領域を複数に分割し、領域単位でヒストグラムを求めて信頼度を求めたり、求めた複数の信頼度を1つの信頼度に統合してもよい。
【0098】
また、図13のステップS1323の重心バランス信頼度計算処理において、図16のステップS13231での領域の分割数分割方法や、ステップS13233の計算式は適宜変更・修正可能である。例えば、信頼度を|UG−DG|の関数としてもよい。或いは、顔画像を上下5つの領域に分割し、それぞれについて重心位置を求め、5つの領域間の重心のずれ及び/又は全体の重心との差を求め、これらのずれから、信頼度を計算する等してもよい。
【0099】
また、図13のステップS1324の輝度バランス信頼度計算処理において、図17のステップS13241での領域の分割数(縦方向の分割数及び横方向の分割数)や、ステップS13243の計算式は適宜変更・修正可能である。例えば、顔画像を上下3つ、左右4つの領域に分割し、それぞれについて輝度を求め、12個の領域間の輝度ばらつきから、信頼度を計算する等してもよい。また、各分割領域の平均輝度と全体の平均輝度との差やバランスに基づいて信頼度を判別するようにしてもよい。
【0100】
さらに、上記4種類の信頼度以外の信頼度を導入してもよい。例えば、ヒストグラム分布の時間軸上の変化、重心位置の時間軸上の変化、輝度の時間軸上の変化が急激すぎる場合に信頼度を低くする等の信頼度を設定してもよい。
【0101】
また、上記実施の形態では、4つの信頼度を、ステップS131で判別した顔の向き角度(横向き角度)の信頼度として利用した。この発明は、これに限定されず、上記4つの信頼度及び他の任意の信頼度を、顔の位置の信頼度(例えば、ステップS121で判別した顔の両端位置の信頼度、ステップS122で判別した顔の中央位置の信頼度、ステップS144で判別した顔の上下位置の信頼度)、顔の存在の有無(顔の両端・中央が検出されれば存在、顔の両端・中央が検出されなければ不存在)の信頼度などとして使用してもよい。
【0102】
例えば、上記実施の形態では、目領域を画像の特定の位置に固定したが、目領域を顔の画像のサイズや位置に応じて、目領域の位置を適宜設定しても良い。この場合、例えば、横エッジソーベルフィルタを適用し、顔の目や眉の位置を判別し、そのエリアを含む所定サイズのエリアを目領域とすればよい。
【0103】
また、上記実施の形態では、目と眉(又は目)と、鼻、口の階調画像から顔の中心(重心)位置を求めたが、中心位置の判別に使用する顔の部分(パーツ)は任意である。例えば、耳や、ほお、頭髪などを加えて、中心を求めても良い。
【0104】
また、上記実施の形態では、サングラスが検出された場合に、目の画像を合成し、合成画像に基づいて顔の中心地位を求めたが、重心を求める手法は任意である。例えば、サングラスが検出された場合には、「目と眉」の画像を合成して中心を求めたり、サングラスのレンズの画像を構成する各画素に0.3〜0.5倍程度の重みを付けた上で、各部(レンズ、目、鼻、口...)の重心を求めて、顔画像の重心をもとめてもよい。目領域を除いた部分の顔画像から得られた重心に対し、目の画像が与える影響を予め考慮したオフセット値を加算するなどして重心を求めてもよい。
【0105】
上記実施の形態では、この発明を顔の中心位置を検出するために、サングラスの有無を検出する実施形態を示したが、サングラスを検出した後で、その結果をどのような処理に使用するかは任意である。例えば、サングラスを検出し、それにより、それにより照明の強度を変更したり、画面のバックライトの輝度を調整する等の場面に使用することも可能である。
【0106】
図1,図2を参照して説明したシステム構成も一例であり、任意に変更可能である。例えば、カメラ10を遠赤外線等で画像をとらえる赤外線カメラを使用すれば、人種や肌や髪の色に影響されず比較的正確に顔の各パーツの画像を取得することが可能となる。
【0107】
また、上述のフローチャートも同様の機能が実現できるならば、任意に変更可能である。
例えば、所定回数以上にサングラスの画像が得られたときに、サングラス対応処理を行うようにしてもよい。
【0108】
また、本発明において、白黒白エッジは階調の差異を表現するためのものであり、色としての白や黒に限定されるものではなく、色相はなんでもよい。カラー画像に関しては、各画素の色相を考慮してサングラスの有無を判別してもよい。
【0109】
上記各実施の形態においては、ドライバーを撮影してサングラスを検出する場合にこの発明を適用したが、この発明はこれに限定されず、任意の場面で人間、動物、人形、ロボット等がサングラスをかけているか否かを判別する処理に広く適用可能である。
【0110】
本発明は、カメラで画像を取得しながら処理する場合に限定されず、例えば、他所で撮影した1又は複数の顔画像のそれぞれについて、サングラスの有無、顔の中心の位置、顔の向きなどを判別する為に使用可能である。
【0111】
また、コンピュータに上述の処理を実行させるためのコンピュータプログラムを、任意の記録媒体やネットワークを介してROMに格納するようにしてもよい。
【図面の簡単な説明】
【0112】
【図1】本発明の実施形態に係る顔向き判別装置のブロック図である。
【図2】図1に示すコンピュータの構成を示すブロック図である。
【図3】ROMに格納されている各種データを説明するための図である。
【図4】図1に示す顔向き判別装置の動作を説明するためのフローチャートである。
【図5】図4のフローチャートにおける前処理の具体例を説明するためのフローチャートである。
【図6】図4のフローチャートにおける顔位置判別処理の具体例を説明するためのフローチャートである。
【図7】図4のフローチャートにおける基本処理の具体例を説明するためのフローチャートである。
【図8】図4のフローチャートにおける後処理の具体例を説明するためのフローチャートである。
【図9】図4のフローチャートにおける第1〜第nの分割処理の具体例を説明するためのフローチャートである。
【図10】図7の顔両端検出処理の具体例を説明するためのフローチャートである。
【図11】図7の顔上下位置検出処理の具体例を説明するためのフローチャートである。
【図12】図8の顔中心検出処理の具体例を説明するためのフローチャートである。
【図13】図8の信頼度計算処理の具体例を説明するためのフローチャートである。
【図14】図8の顔両端位置ずれ信頼度計算処理の具体例を説明するためのフローチャートである。
【図15】図8のヒストグラム信頼度計算処理の具体例を説明するためのフローチャートである。
【図16】図8の重心バランス信頼度計算処理の具体例を説明するためのフローチャートである。
【図17】図8の輝度バランス信頼度計算処理の具体例を説明するためのフローチャートである。
【図18】サングラス検出処理を説明するための図である。
【図19】顔両端位置ずれ信頼度の技術的意味を説明するための図である。
【図20】ヒストグラム信頼度の技術的意味を説明するための図である。
【図21】重心バランス信頼度の技術的意味を説明するための図である。
【図22】輝度バランス信頼度の技術的意味を説明するための図である。
【符号の説明】
【0113】
10 カメラ
22 画像メモリ (顔画像記憶手段)
23 ROM (顔位置判別手段、顔向き判別手段、信頼度判別手段、出力手段)
24 CPU (顔位置判別手段、顔向き判別手段、信頼度判別手段、出力手段)
【技術分野】
【0001】
本発明は、顔画像から顔向き(横向き角度)を判別すると共にその信頼度(確度)を判別することが可能な顔向き判別装置に関する。
【背景技術】
【0002】
顔画像に基づいて人を識別したり、表情を読み取ったりするためには、顔の位置や顔の中心位置、向きなどを検出することが重要となる。
【0003】
例えば、特許文献1には、人の顔を撮影した画像を処理し、人の動きや背景に影響されること無く高精度に顔の位置を検出する手法が開示されている。
【0004】
また、特許文献2には、ドライバーが存在可能な領域を撮影して得られた画像を取り込み、取り込んだ画像から横エッジ画像(顔の両側端)を検出し、検出した横エッジ画像に基づいて、複数の顔中心候補線を設定すると共に各顔中心候補線各々に対して、該顔中心候補線が顔の中心線である確からしさを表す値に基づいて、顔の有無の判定精度を向上する技術が開示されている。
【特許文献1】特開2004−310396号公報
【特許文献2】特開2005−011097号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
車両の走行環境は様々に変化し、カメラが捉えるドライバーの画像も様々に変化する。例えば、あるタイミングでは、顔に直射日光があたって全体が明るい画像となり、車両の向きが変化することに伴ってカメラに向かう面が陰になって、全体が暗くなったり、或いは、顔の一部が明るく、残りが暗くなる等の事態が生ずる。このため、顔の両側端位置の検出なども困難であり、画像取得時の環境・条件、例えば、光のあたり方(あたる方向、外光の強度)などにより、顔の輪郭線や中央線の検出を誤ってしまうこともある。
これらの情報の検出に誤りが生ずると、横向き角度の判定など、以後の判定にずれが生じてしまう。
このような場合に、環境や条件による検出位置の精度に指標が与えられれば有効であり、以後の、処理に活用可能である。
【0006】
本発明は上記の問題点に鑑みてなされたものであり、顔の向きなどを判別する場合に、その信頼度を判別することを可能とすることを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するため、この発明の顔向き判別装置は、顔を撮影して得られた顔画像を記憶する顔画像記憶手段と、前記顔画像記憶手段に記憶された前記顔画像に基づいて、顔の位置と顔の中心の位置とを判別する顔位置判別手段と、前記顔位置判別手段により求められた顔の位置と顔の中心の位置とに基づいて顔の向きを出力する顔向き判別手段と、前記顔向き判別手段により判別された顔向きについて、その確からしさを示す信頼度を求める信頼度判別手段と、前記顔向き判別手段で判別された顔の向きと、前記信頼度判別手段により判別されたその信頼度とを出力する出力手段と、を備える、ことを特徴とする。
【0008】
前記信頼度判別手段は、例えば、従前に判別された顔の位置と今回検出された顔の位置とのずれに基づいてその信頼度を求める。
【0009】
例えば、前記顔位置判別手段は、前記顔画像記憶手段に記憶された前記顔画像のエッジ抽出処理を行い、エッジ抽出処理により得られた画像の各画素の画素値を所定方向に投影してヒストグラムを得るヒストグラム取得処理を実行し、前記信頼度判別手段は、前記ヒストグラムの値に基づいて、その信頼度を求める。
【0010】
前記信頼度判別手段は、例えば、顔画像を複数の領域に分割し、各領域の重心を求め、求めた重心位置に基づいて、顔位置の信頼度を求める。
【0011】
前記信頼度判別手段は、例えば、顔画像を複数の領域に分割し、各領域の輝度を求め、求めた輝度に基づいて、顔位置の信頼度を求める。
【0012】
前記顔位置判別手段と前記顔向き判別手段と前記信頼度判別手段とは、例えば、前記顔画像記憶手段に記憶された前記顔画像に基づいて、顔の水平方向の位置を判別する処理と、判別した水平方向の位置の信頼度を求める1単位の処理を繰り返して実行し、顔の垂直方向の位置を判別する処理を複数の処理ステップに区分して、各1単位の処理内でいずれかの区分ステップを実行し、顔の垂直方向の位置を求める。
【0013】
また、この発明のコンピュータプログラムは、コンピュータを、顔を撮影して得られた顔画像を記憶する顔画像記憶手段、前記顔画像記憶手段に記憶された前記顔画像に基づいて、顔の位置を判別する顔位置判別手段、前記顔位置判別手段により判別された顔位置について、その確からしさを示す信頼を求める信頼度判別手段、前記顔位置判別手段で判別された顔の位置と、前記信頼度判別手段により判別されたその信頼度とを出力する出力手段、として機能させることを特徴とする。
【発明の効果】
【0014】
この発明によれば、顔画像から顔の向きを判別すると共にその信頼度を判別することができる。
【発明を実施するための最良の形態】
【0015】
以下、本発明の実施形態に係る顔向き判別装置について説明する。
【0016】
本実施形態の顔向き判別装置は、図1に示すように、ドライバーの顔を撮影して顔画像を生成するカメラ10と、ドライバーの顔を照明する照明光源12と、ドライバーの顔中心位置を検出するコンピュータ14と、コンピュータ14に接続された表示装置16とを備える。
【0017】
カメラ10は例えばCCDカメラ等から構成され、ドライバーの顔の階調画像を取得する。カメラ10によって生成される顔画像は、ドライバーの顔だけでなく、その背景なども含まれている。
【0018】
表示装置16は、LCD(Liquid Crystal Display)又はCRT(Cathode Ray Tube)などから構成され、カメラ10で撮影された顔画像から抽出された二値化画像などを表示する。
【0019】
コンピュータ14は、カメラ10により取得された顔画像を処理して顔の両端の位置を検出し、この検出した両端位置に基づいて、顔の横向き確度を求め、さらに、顔の両端の検出位置のずれを数値化して検出された横向き角度の信頼度を求める装置である。コンピュータ14は、図2に示すように、A/D変換器21と、画像メモリ22と、ROM23と、CPU24と、RAM25と、表示制御装置27と、光源制御装置28と、を備える。
【0020】
A/D(アナログ/ディジタル)変換器21は、カメラ10で撮影されたアナログ画像信号をディジタル信号に変換する。
画像メモリ22は、カメラ10により生成され、A/D変換器21でディジタル化された画像データを記憶する。
【0021】
ROM23は、CPUの動作を制御するためのプログラムを記憶する。また、ROM23は、後述する画像処理を実行するための様々な固定データを記憶する。
【0022】
CPU24は、ROM23に格納されているプログラムを実行することにより、カメラ10により取得された顔画像を処理して顔の両端の位置を検出し、この検出した両端位置に基づいて、顔の横向き角度を求め、さらに、顔の両端の検出位置のずれを数値化して検出された向き(横向き角度)の信頼度を求める装置である。
【0023】
RAM25は、CPU24のワークリアとして機能する。
表示制御装置27は、CPU24の制御下に、表示装置16を制御する。
光源制御装置28は、照明光源12の点灯・消灯を制御する。
【0024】
次に、ROM23に格納される固定データの例を図3を参照して説明する。まず、ROM23は、図3(a)、(b)に示すような、縦エッジ検出用と横エッジ検出用ソーベルフィルタのオペレータを格納する。図3(a)、(b)に示す、縦エッジ検出用ソーベルフィルタと横エッジ検出用のソーベルフィルタとは、それぞれ、図3(c)、(d)に示すような縦方向の濃淡差、横方向の濃淡差を強調するためのオペレータである。
【0025】
また、ROM23は、図3(e)に示すように、RAM25に格納される顔画像のうち、目や眉の画像が存在すると想定される位置を特定するデータが格納されている。
また、ROM23は、図3(f)に示すように、サングラスを検出するために、サングラスの縦横のサイズを格納する。
また、ROM23は、図3(g)に示すように、標準的な目の画像を格納する。
【0026】
次に、上記構成を有する顔向き判別装置の動作を説明する。
電源が投入されると、コンピュータ14内のCPU24は、図4に示す処理を繰り返して実行する。
【0027】
即ち、CPU24は、前処理(ステップS01)と顔位置判別(検出)処理(ステップS02)とから構成される初期処理を実行し、続いて、第1の処理〜第nの処理を繰り返して実行する。nは2以上の自然数である。
【0028】
初期処理を構成する前処理(ステップS01)と顔位置判別処理(ステップS02)とは、ドライバーの左右方向及び上下方向の顔の位置の初期値を求めるための処理である。
【0029】
第1処理〜第n処理は、電源投入中は繰り返して実行され、それぞれ、ドライバーの顔の左右方向の顔の位置を求め、さらに、その信頼度と共に出力する。また、第1処理〜第n処理は、全体として、ドライバーの上下方向の顔の位置を1回求める。これにより、定常動作状態では、ドライバーの顔の左右方向の位置をn回求めている間に、ドライバーの顔の上下方向の位置を1回求めることになる。一般に、人間の顔の上下方向の動きは、左右方向の動きに比べて小さいため、このような検出手法を採用することにより、顔の位置の検出の精度と処理効率との両立を図ることができる。
【0030】
初期処理を構成する前処理S01は、図5に示すように、キャプチャ処理(ステップS011)と、座標変換処理(ステップS012)と、ソーベルフィルタ処理(ステップS013)とから構成される。
【0031】
キャプチャ処理(ステップS011)は、カメラ10の撮影したドライバーの1フレーム文の顔画像をA/D変換器21を介して取り込み、画像メモリ22に格納する処理である。
【0032】
座標変換処理(ステップS012)は、処理可能な程度に画素を間引く処理である。
【0033】
ソーベルフィルタ処理(ステップS013)は、ROM23に格納されている縦エッジ検出用ソーベルフィルタ(図3(a))を用いて座標変換後の顔画像を処理して、顔画像内の縦エッジを強調する処理を行い、また、横エッジ検出用ソーベルフィルタ(図3(b))を用いて座標変換後の顔画像を処理して、顔画像内の横エッジを強調する処理を行う処理である。
【0034】
図4の顔位置判別処理(ステップS02)は、前処理済みの顔画像を用いて顔の両端位置と上下位置を検出する処理であり、図6に示すように、顔両端検出処理(ステップS021)と顔上下位置検出処理(ステップS022)とから構成される。
【0035】
顔両端検出処理(ステップS021)は、顔画像を縦エッジ検出用のオペレータで操作した顔画像について、顔の両端を構成するラインを特定する処理であり、既知の任意の手法を採用することができる。
【0036】
例えば、図10に示すように、顔両端検出用のヒストグラム作成処理を行い(ステップS0211)、続いて、このヒストグラムのピーク値の高いものを所定数抽出して、これをソートし(ステップS0212)、ヒストグラム値に基づく、端点の抽出を行う(ステップS0213)。例えば、ヒストグラム値の上位1又は2つが他と比較して極端に値が大きい場合には、その点を端点とする。
【0037】
次に、端点が2つ(両端)抽出されたか否かを判別し(ステップS0214)、判別されていれば(ステップS0214;Yes)、処理を終了し、端点が2つ抽出できていなければ(ステップS0214;No)、ヒストグラム値同士の距離が、人の顔幅としてもっともらしい間隔を有する組み合わせを抽出することにより、端点を決定し(ステップS0215)、最終的に、顔面の両端を決定する処理を行う(ステップS0216)。
【0038】
また、特許文献1に開示されているように、撮影画像の時間微分を算出し、さらに、この画素値時間微分画像の画素値を縦方向に投影してヒストグラムを作成し、エッジ部抽出画像のヒストグラムと画素値時間微分画像のヒストグラムとを合計して、ヒストグラムのピーク値の高いものを抽出すると共に人の顔幅としてもっともらしい点を決定し、顔端位置を検出するようにしてもよい。
【0039】
次に、図6のステップS022の顔上下位置検出処理は、上述と同様の処理を横エッジについて行って、顔のほぼ目の位置(上端)と口の位置(下端)を検出する処理であり、例えば、図11に示すように、ヒストグラム作成処理(ステップS0221)と、目下候補検出処理(ステップS0222)と、顔上下位置算出処理(ステップS0233)と、から構成される。
【0040】
ヒストグラム作成処理(ステップS0221)は、横エッジ検出用ソーベルフィルタを用いたソーベルフィルタ処理後の各画素の値を横方向に投影してヒストグラムを作成する処理である。
【0041】
目下候補検出処理(ステップS0222)は、ヒストグラム値に基づいて、目・眉、口などに対応するヒストグラム値の候補を選択する処理である。
顔上下位置算出処理(ステップS0233)は、選択した候補から、顔の上下端位置(例えば、目・眉の位置)を検出する処理である。なお、顔上端位置は、例えば、眉の上、下端位置は口と顎の間などに設定される。
【0042】
CPU24は、このようにしてステップS021とS022で求めた、顔両端(左右側端)位置と、顔の上下位置をRAM25に記憶する。
【0043】
以上で、図4の初期処理が終了し、続いて、CPU24は、第1処理〜第n処理のループ処理を開始する。
【0044】
第1から第nの周期処理は、それぞれ、前処理(ステップS11〜Sn1)と、基本処理(ステップS12〜Sn2)と、後処理(ステップS13〜Sn3)と、分割処理(ステップS14〜Sn4)と、から構成される。
【0045】
前処理(ステップS11〜Sn1)は、ステップS01の前処理と同一であり、図5に示すように、顔画像をキャプチャするキャプチャ処理(ステップS011)、画素を間引く座標変換処理(ステップS012)、ソーベルフィルタで顔画像を処理するソーベルフィルタ処理(ステップS013)を含む。ただし、ここでのソーベルフィルタ処理は、縦エッジ検出用のソーベルフィルタ処理のみである。
【0046】
図4の第1処理〜第n処理を構成する基本処理(ステップS12〜Sn2)は、それぞれ、顔の両端を検出し、顔中心を検出する処理であり、図7に示すように、顔両端検出処理(ステップS121)と顔中心検出処理(ステップS122)と、から構成される。
【0047】
顔両端検出処理(ステップS121)は、前述の図10に示す処理と同様の処理で実現可能である。即ち、前述したように、顔両端の検出用ヒストグラムを作成する(ステップS0211)。続いて、顔の両端の位置の候補データをヒストグラムの順に並べ変える(ステップS0212)。次に、ヒストグラムのうち、値が抜き出たものが存在するか否かを判別し、値が抜き出たものがある場合には、それを顔両端の候補として採用する(ステップS0213)。ステップS0213で、顔の両端が検出できたか否かを判別する(ステップS0214)。顔の両端が検出できていない場合には(ステップS0214;No)、ヒストグラムに基づいて複数の端候補を選択して、顔の両端の距離などから相対的にマッチするものを検出し(ステップS0215)、最終的に、顔面の両端を決定する処理を行う(ステップS0216)。
【0048】
一方、図7の顔中心検出処理(ステップS122)は、例えば、図12に示す構成を有する。
【0049】
まず、CPU24は、任意の閾値を基準として、RAM25に格納されている顔画像を構成する各画素の階調を二値化する(ステップS1221)。閾値としては、例えば、顔画像を形成する全画素の平均値を使用できる。これにより、例えば、図18(a)に例示するようなドライバーの二値化画像が生成される。
【0050】
続いて、CPU24は、二値化画像に、白黒白画像生成処理を実行する(ステップS1222)。
この白黒白画像生成処理において、CPU24は、まず、二値画像のうち、目の存在が予定されている領域を定義する領域指定データ(図3(e)に示すy1,y2)をROM23から読み出し、二値化画像の目領域を図18(b)に示すように切り出す。
【0051】
続いて、切り出した二値化画像について、白黒白横エッジを検出する。
ここで、白黒白エッジとは、単に白と黒の境界となるエッジではなく、白から黒へ、さらに黒から白へと変化し、所定の幅を有するエッジのことである。このうち、白黒白横エッジとは、横方向にのびる境界の意味であり、このうち、白黒白縦エッジとは、縦方向にのびる境界の意味である。
【0052】
CPU24は、まず、白黒白横エッジ検出処理を開始し、図3(f)に示す設定に従って、目領域画像中で、サングラスのサイズに従って縦方向に6〜12画素(通常の目は、2〜4画素)の幅の黒い画素列を検出する。
【0053】
白黒白横エッジを検出する手法自体は任意である。例えば、座標値yを順次更新しつつ、画素(x、y)の輝度を判別し、輝度が白から黒に変化すると、黒の連続する数をカウントし、黒が白に変わった時点で黒の連続数が6〜12であるか否かを判別し、連続数が6〜12であれば、その画素を維持し、それ以外であれば、それらの画素を白に変換するという手法を採用できる。
【0054】
次に、白黒白横エッジ検出処理と同様の動作により白黒白縦エッジを検出する。白黒白縦エッジ検出処理は、処理済みの目領域の画像から、図3(f)の設定に従って、横方向に10〜18(通常の目は6〜10)画素の幅の黒の画素列を検出する処理である。
【0055】
このような構成とすることにより、例えば、抽出した目領域の画像が図18(b)に例示する画像であった場合に、連続数がx方向に1〜9及び19以上、y方向に1〜5及び13以上連続する黒画素が、白画素に変換される。これにより、サングラスのレンズを構成しない、横方向に短い黒画素列や、長すぎる黒画素列が図18(c)に示すように除去される。
【0056】
次に、CPU24は、図12のステップS1223で、サングラスの有無を判別する処理を行う。CPU24は、処理後の目領域の画像に、縦方向に6〜12画素で、横方向に10〜18画素の黒領域が2つ得られている場合には、サングラスが検出されたと判別する。
【0057】
サングラスがあると判別した場合(ステップS1224;Yes)、予め用意されている標準的な目領域の画像、例えば、図18(d)に示す処理後の目領域の画像を、図18(e)に示す元の二値画像から目領域を除去した画像と合成して、図18(f)に示す中心位置測定用の顔画像を生成する(ステップS1225)。なお、サングラスの位置を判別して、合成する目の位置を調整してもよい。
【0058】
続いて、顔画像を用いて、顔の中心位置(顔の位置、重心位置)を求める(ステップS1226)。中心の測定手法自体は任意であるが、例えば、次式から顔の中心(重心)位置の座標を求めることができる。
顔の中心のx座標=Σxi/n xi:i番目の黒画素のx座標の値
顔の中心のy座標=Σyi/n yi:i番目の黒画素のy座標の値
i:1〜n nは黒画素の総数
【0059】
なお、重心を求める範囲を、顔の両側端とその時点で求められている顔の上端位置と下端位置の間等に限定してもよい。或いは、顔の主要パーツの(眉、目、鼻、口)の画像のみから重心を求めてもよい。
【0060】
なお、ステップS1224でサングラスが検出されなかった場合(ステップS1224;No)には、ステップS1225の合成処理をスキップする。
【0061】
以上で顔の中心位置が求められ、図7の顔中心検出処理(ステップS122)が終了する。即ち、この処理により、顔の水平方向の位置と顔の中心位置とが求められ、図4の基本処理(ステップS12,S22,...Sn2)が終了する。
【0062】
その後、処理は図4の後処理(ステップS13、S23,...,Sn3)に進む。
【0063】
後処理(ステップS13、S23,...,Sn3)は、直前の基本処理(ステップS12、S22,...,Sn2)で求めた両端位置と顔の中心位置に基づいて、顔の向きをとその信頼度を求める処理である。
【0064】
この後処理(ステップS13、S23,...,Sn3は、図8に示すように、直前の基本処理(ステップS12、S22,...,Sn2)で求めた両端位置と顔の中心位置に基づいて顔の向きの角度(向き;横向き角度)を計算する処理(ステップS131)と、その信頼度を求める処理(ステップS132)と、顔向き角と信頼度とを対応付けて出力する処理(ステップS133)を備える。
【0065】
顔向き角度計算処理(ステップS131)は、直前の基本処理(ステップS12、S22,...,Sn2)で求めた顔の両端位置と、直前の基本処理(ステップS12、S22,...,Sn2)で求めた顔の中心位置とに基づいて、顔の向き(角度)を判別する。なお、顔の向きを求める計算手法自体は従来の既知の任意の手法を使用することができる。例えば、顔の両端位置の中央に顔の顔の中心位置が存在すれば、顔は正面を向いていると判別できる(カメラ10を向いた方向)にある。また、顔の中央位置が顔の両端位置の中央よりも左に存在していれば、カメラ10から見て左を向いていると判別でき、顔の中央位置が顔の両端位置の中央よりも右に存在していれば、カメラ10から見て右を向いていると判別できる。
【0066】
続いて、CPU24は、計算した顔向き角の信頼度を求める信頼度計算処理を実行する(ステップS132)。
信頼度計算処理(ステップS132)は、図13に示すように、顔両端位置ずれ信頼度計算処理(ステップS1321)と、ヒストグラム信頼度計算処理(ステップS1322)と、重心バランス信頼度計算処理(ステップS1323)と、輝度バランス信頼度計算処理(ステップS1324)とを備える。
【0067】
顔両端位置ずれ信頼度計算処理(ステップS1321)の詳細を、図14に示す。
図示するように、CPU24は、信頼度={ t1−|R1−R2|)+(t1−|L1−L2|)+(t1−|W1−W2|)}/3 を計算する(ステップS13211)。
なお、 (t1−|R1−R2|)、(t1−|L1−L2|)、(t1−|W1−W2|)}の最小値を、それぞれ、0とする。
【0068】
t1は係数であり、
R1は、今回求められた顔の右端の位置、R2は顔の右端の基準値(初期値は初期処理の顔位置判別処理(ステップS02)で求められた値)、
L1は、今回求められた顔の左端の位置、L2は顔の左端の基準値(初期値は初期処理の顔位置判別処理(ステップS02)で求められた値)、
W1は、今回求められた顔の幅=|R1−L1|、W2は、顔の幅の基準値(初期値は初期処理の顔位置判別処理(ステップS02)で求められた右端と左端の距離値)、である。
【0069】
この信頼度の技術的意味を図19(a)に模式的に示す。
今回得られた顔画像の両端位置(R1,L1)及び幅(W1)が基準となる顔画像(通常は、1つ前の処理で得られた顔画像)の両端位置(R2,L2)や幅(W2)と相対的に近い値ならば、高い評価を、相対的に遠い値ならば、低い評価を与えるものである。繰り返し処理の実行間隔が短いことから、これらの値に通常大きな変化は無いことを前提とする評価値である。
【0070】
CPU24は、評価値が所定の閾値以上か否かを判別し(ステップS13212)、評価値が基準値以上である場合(ステップS13212;Yes)、即ち、今回の位置検出が比較的正確に行われていると評価できる場合には、図19(b)に模式的に示すように、今回取得したR1,L2,W1を次回評価用の基準値R2,L2,W2として記憶する(ステップS13213)。一方、評価値が閾値未満の場合(ステップS13212;No)、図19(c)に示すように基準値R2,L2,W2を変更しない(ステップS13214)。
【0071】
次に、ヒストグラム信頼度計算処理(ステップS1322)の詳細を、図15を参照して説明する。
図示するように、CPU24は、信頼度={ P1/|P1+P2+P3+...Pm)}・t2 を計算する(ステップ13221)。
【0072】
t2は係数であり、
P1〜Pmは、ヒストグラム値のうちの閾値以上のものであり、P1をトップとする降順である。mは4〜7程度が望ましい。なお、ヒストグラム値の上位m個(この場合、mは固定数)を選択するようにしてもよい。
【0073】
この信頼度の技術的意味を図20(a)〜(d)に模式的に示す。図20(a)と図20(b)とは、それぞれ、顔の左端と右端を正確に検出できている場合の検出された顔端とヒストグラム分布の例を示す図、図20(c)と図20(d)とは、それぞれ、顔の左端と右端を正確に検出できていない場合の検出された顔端とヒストグラム分布の例を示す図である。なお、ヒストグラムはピーク5つを抽出している。
【0074】
図20(a)、(b)に示すように、顔画素の左端と右端を決定したときのピーク値が他のピーク値に比べてきわめて大きいものであった場合、その左端又は右端は比較的信頼性が高い。これに対し、図20(c)、(d)に示すように、明確なピーク値が得られずに、顔の位置を決定した場合には、その信頼性は低い。
【0075】
次に、重心バランス信頼度計算処理(ステップS1323)の詳細を、図16に示す。
まず、CPU24は、図21に模式的に示すように、重心検出領域を顔上端(FU)と顔中央(FC)からなる上部領域と、顔中央(FC)と顔下端(FD)からなる下部領域に分割する(ステップS13231)。
【0076】
次に、CPU24は、直前の基本処理の顔中心検出処理で求めた重心位置(GL)を読み出し、上部領域における重心位置(UG)と下部領域による重心位置(DG)とを、計算する(ステップS13232)。
【0077】
次に、CPU24は、重心バランス信頼度={t3−(|GL−UG|+|GL−DG|)}×t4 を計算する(ステップS13233)。
なお、計算結果が0以下はすべて0とする。
ここで、
t3:係数,t4:係数
【0078】
この信頼度の技術的意味を図21(a)に模式的に示す。
人間の顔は、図21(a)に示すように、左右対称であり、通常、基本処理で求めた中心検出領域の重心位置(GL)と、上部領域の画像の重心位置(UG)と、下部領域の画像の重心位置(DG)とは、x軸方向に関しては一致する。
【0079】
しかし、図21(b)に例示するように、眼帯の装着等により、顔のバランスが崩れている場合、各重心GL,UG、DGのX座標値は、互いにずれてしまう。そこで、このずれが大きい場合には、顔向き角の信頼度が低いと判断するものである。
【0080】
次に、輝度バランス信頼度計算処理(ステップS1324)の詳細を、図17に示す。
まず、CPU24は、図22(a)に模式的に示すように、顔の中心検出領域を顔左上端(UL)と、顔右上端(UR)と、顔左下端(DL)と、顔右下端(DR)に分割する(ステップS13241)。
【0081】
次に、CPU24は、各領域(UL,UR,DL,DR)にて平均輝度(IUL,IUR,IDL,IDR)を算出する(ステップS13242)。
【0082】
次に、CPU24は、次式に従って、輝度バランス信頼度を計算する(ステップS13243)。
輝度バランス信頼度
={t5−(|IUL−IUR|+|IUL−IDL|
+|IUL−IDR|+|IUR−IDL|
+|IUR−IDR|+|IDL−IDR|}×t6
t5:係数,t6:係数
計算結果が0以下はすべて0とする。
【0083】
この信頼度の技術的意味を図22(a)に模式的に示す。
一般的に、人間の顔は、図22(a)に示すように、左右対称であり、左右対称に照明される。しかし、顔の向きや光源の位置によっては、図22(b)や22(c)に示すように、偏って照明され、顔上に位部分と明るい部分とが発生してしまう。
【0084】
このうち、図22(c)に示すような顔の左右方向の明るさが異なると、顔の左右方向の位置や向きの判別に悪影響を与える。そこで、上記評価式は、左右方向のバランスが悪くなるに従って評価が下がるように構成されている。
【0085】
以上説明したように、評価処理により、その直前の基本処理(ステップS1〜Sn2)で求められた顔の向きの信頼度が求められる。
【0086】
次に、CPU24は、ステップS131で求めた求めた顔向き角度とステップS132で求めた信頼度とを対応付けて出力する(ステップS133)。
【0087】
以上で、第1処理〜第n処理のそれぞれで実行される前処理、基本処理、後処理が終了し、顔の左右方向の角度とその信頼度とが対応付けて出力される。
【0088】
続いて、CPU24は、分割処理(ステップS14〜Sn4)を開始する。
この分割処理(ステップS14〜Sn4)は、全体としては、図9に示すように、画像キャプチャ処理(ステップS141))、座標変換処理(ステップS142)、ソーベルフィルタ処理(ステップS143)、顔上下位置検出処理(ステップS144)、とから構成される。画像キャプチャ処理(ステップS141)、座標変換処理(ステップS142)、ソーベルフィルタ処理(ステップS143)は前述の前処理(ステップS01)における処理(ステップS011〜S013)と同一である。ただし、ここでの、ソーベルフィルタ処理は、横エッジ検出用のソーベルフィルタ処理のみで十分である。
【0089】
また、顔上下位置検出処理(ステップS144)は、図6に示した、顔上下位置検出処理(ステップS022)と同様であり、第1分割処理(ステップSS14内の画像キャプチャ処理(ステップS141)で取得した顔画像に基づいて上下位置を判別する。
【0090】
なお、具体的な処理を実行する際には、CPU24は、分割処理(ステップS14〜Sn4)を開始する際に、種々のポインタやレジスタの値をRAM25に待避し、RAM25に待避しておいた先の分割処理の処理結果をリストア(再設定)する。続いて、CPU24は、リストアしたポインタ及びレジスタに従って動作を継続し、RAM25に格納されているデータを用いて、顔の上下位置を判別する処理の一部を行って、処理が終了すると、ポインタやレジスタの値をRAM25にセーブし、RAM25にセーブしておいた通常の処理のポインタ値やレジスタ値(分割処理を開始する直前の値)リストアして、処理を継続する。
【0091】
なお、各分割処理(ステップS14〜Sn4)は、一定量の処理を実行した段階で切り替えても、一定時間経過した段階で切り替えてもよい。
【0092】
以上説明したように、この顔向き検出装置によれば、顔の位置や向きの判別値とその信頼度とを求めることができる。
【0093】
この顔向き判別の出力信号の利用形態は任意であるが、例えば、顔向き検出装置からの出力に基づいて、ドライバーに脇見運転の警告を放音することができる。このとき、信頼度に応じて報知音を更新することができる。
【0094】
なお、この発明は上記実施の形態に限定されず、種々の変形及び応用が可能である。
【0095】
上記実施の形態においては、4種類の信頼値を求めたが、これらの平均を求めたり、最上位点と最下位点の信頼度を除いた残りの2つの信頼度を出力対象としたり、これらの平均値を出力する等してもよい。
【0096】
また、図13のステップS1321の顔両端位置ずれ信頼度計算処理において、図14のステップS13211の信頼度の計算式は適宜変更・修正可能である。例えば、顔の左右端位置の基準位置とのずれを用いて、信頼度を計算したが、検出した顔の中心(重心)と基準中心位置との差異や、顔の中心及び両端位置と各基準位置とのずれに基づいて、信頼度を計算するなど、左右方向の位置ずれを検出し、そのずれ量から信頼度を検出できるならば、検出及び比較の対象、演算式は任意である。また、上下方向(上端位置、下端位置、中央)についても、検出位置と基準位置とのずれを検出し、信頼度を検出(判定)しても良い。さらに、顔画像の領域を複数に分割し、それぞれについてずれ量を求めて、信頼度を求める等してもよい。
【0097】
同様に、図13のステップS1322のヒストグラム信頼度計算処理において、図15のステップS13221の計算式は適宜変更・修正可能である。例えば、ヒストグラムの第1と第2のピークの差(P1−P2)の大きさや全体に対する比に基づいて、信頼度を計算してもよい。その他、顔の側端の検出に使用したヒストグラムのピークの他のピークに対する優位度から信頼度を測定できるならば、その手法は任意である。また、顔の領域を複数に分割し、領域単位でヒストグラムを求めて信頼度を求めたり、求めた複数の信頼度を1つの信頼度に統合してもよい。
【0098】
また、図13のステップS1323の重心バランス信頼度計算処理において、図16のステップS13231での領域の分割数分割方法や、ステップS13233の計算式は適宜変更・修正可能である。例えば、信頼度を|UG−DG|の関数としてもよい。或いは、顔画像を上下5つの領域に分割し、それぞれについて重心位置を求め、5つの領域間の重心のずれ及び/又は全体の重心との差を求め、これらのずれから、信頼度を計算する等してもよい。
【0099】
また、図13のステップS1324の輝度バランス信頼度計算処理において、図17のステップS13241での領域の分割数(縦方向の分割数及び横方向の分割数)や、ステップS13243の計算式は適宜変更・修正可能である。例えば、顔画像を上下3つ、左右4つの領域に分割し、それぞれについて輝度を求め、12個の領域間の輝度ばらつきから、信頼度を計算する等してもよい。また、各分割領域の平均輝度と全体の平均輝度との差やバランスに基づいて信頼度を判別するようにしてもよい。
【0100】
さらに、上記4種類の信頼度以外の信頼度を導入してもよい。例えば、ヒストグラム分布の時間軸上の変化、重心位置の時間軸上の変化、輝度の時間軸上の変化が急激すぎる場合に信頼度を低くする等の信頼度を設定してもよい。
【0101】
また、上記実施の形態では、4つの信頼度を、ステップS131で判別した顔の向き角度(横向き角度)の信頼度として利用した。この発明は、これに限定されず、上記4つの信頼度及び他の任意の信頼度を、顔の位置の信頼度(例えば、ステップS121で判別した顔の両端位置の信頼度、ステップS122で判別した顔の中央位置の信頼度、ステップS144で判別した顔の上下位置の信頼度)、顔の存在の有無(顔の両端・中央が検出されれば存在、顔の両端・中央が検出されなければ不存在)の信頼度などとして使用してもよい。
【0102】
例えば、上記実施の形態では、目領域を画像の特定の位置に固定したが、目領域を顔の画像のサイズや位置に応じて、目領域の位置を適宜設定しても良い。この場合、例えば、横エッジソーベルフィルタを適用し、顔の目や眉の位置を判別し、そのエリアを含む所定サイズのエリアを目領域とすればよい。
【0103】
また、上記実施の形態では、目と眉(又は目)と、鼻、口の階調画像から顔の中心(重心)位置を求めたが、中心位置の判別に使用する顔の部分(パーツ)は任意である。例えば、耳や、ほお、頭髪などを加えて、中心を求めても良い。
【0104】
また、上記実施の形態では、サングラスが検出された場合に、目の画像を合成し、合成画像に基づいて顔の中心地位を求めたが、重心を求める手法は任意である。例えば、サングラスが検出された場合には、「目と眉」の画像を合成して中心を求めたり、サングラスのレンズの画像を構成する各画素に0.3〜0.5倍程度の重みを付けた上で、各部(レンズ、目、鼻、口...)の重心を求めて、顔画像の重心をもとめてもよい。目領域を除いた部分の顔画像から得られた重心に対し、目の画像が与える影響を予め考慮したオフセット値を加算するなどして重心を求めてもよい。
【0105】
上記実施の形態では、この発明を顔の中心位置を検出するために、サングラスの有無を検出する実施形態を示したが、サングラスを検出した後で、その結果をどのような処理に使用するかは任意である。例えば、サングラスを検出し、それにより、それにより照明の強度を変更したり、画面のバックライトの輝度を調整する等の場面に使用することも可能である。
【0106】
図1,図2を参照して説明したシステム構成も一例であり、任意に変更可能である。例えば、カメラ10を遠赤外線等で画像をとらえる赤外線カメラを使用すれば、人種や肌や髪の色に影響されず比較的正確に顔の各パーツの画像を取得することが可能となる。
【0107】
また、上述のフローチャートも同様の機能が実現できるならば、任意に変更可能である。
例えば、所定回数以上にサングラスの画像が得られたときに、サングラス対応処理を行うようにしてもよい。
【0108】
また、本発明において、白黒白エッジは階調の差異を表現するためのものであり、色としての白や黒に限定されるものではなく、色相はなんでもよい。カラー画像に関しては、各画素の色相を考慮してサングラスの有無を判別してもよい。
【0109】
上記各実施の形態においては、ドライバーを撮影してサングラスを検出する場合にこの発明を適用したが、この発明はこれに限定されず、任意の場面で人間、動物、人形、ロボット等がサングラスをかけているか否かを判別する処理に広く適用可能である。
【0110】
本発明は、カメラで画像を取得しながら処理する場合に限定されず、例えば、他所で撮影した1又は複数の顔画像のそれぞれについて、サングラスの有無、顔の中心の位置、顔の向きなどを判別する為に使用可能である。
【0111】
また、コンピュータに上述の処理を実行させるためのコンピュータプログラムを、任意の記録媒体やネットワークを介してROMに格納するようにしてもよい。
【図面の簡単な説明】
【0112】
【図1】本発明の実施形態に係る顔向き判別装置のブロック図である。
【図2】図1に示すコンピュータの構成を示すブロック図である。
【図3】ROMに格納されている各種データを説明するための図である。
【図4】図1に示す顔向き判別装置の動作を説明するためのフローチャートである。
【図5】図4のフローチャートにおける前処理の具体例を説明するためのフローチャートである。
【図6】図4のフローチャートにおける顔位置判別処理の具体例を説明するためのフローチャートである。
【図7】図4のフローチャートにおける基本処理の具体例を説明するためのフローチャートである。
【図8】図4のフローチャートにおける後処理の具体例を説明するためのフローチャートである。
【図9】図4のフローチャートにおける第1〜第nの分割処理の具体例を説明するためのフローチャートである。
【図10】図7の顔両端検出処理の具体例を説明するためのフローチャートである。
【図11】図7の顔上下位置検出処理の具体例を説明するためのフローチャートである。
【図12】図8の顔中心検出処理の具体例を説明するためのフローチャートである。
【図13】図8の信頼度計算処理の具体例を説明するためのフローチャートである。
【図14】図8の顔両端位置ずれ信頼度計算処理の具体例を説明するためのフローチャートである。
【図15】図8のヒストグラム信頼度計算処理の具体例を説明するためのフローチャートである。
【図16】図8の重心バランス信頼度計算処理の具体例を説明するためのフローチャートである。
【図17】図8の輝度バランス信頼度計算処理の具体例を説明するためのフローチャートである。
【図18】サングラス検出処理を説明するための図である。
【図19】顔両端位置ずれ信頼度の技術的意味を説明するための図である。
【図20】ヒストグラム信頼度の技術的意味を説明するための図である。
【図21】重心バランス信頼度の技術的意味を説明するための図である。
【図22】輝度バランス信頼度の技術的意味を説明するための図である。
【符号の説明】
【0113】
10 カメラ
22 画像メモリ (顔画像記憶手段)
23 ROM (顔位置判別手段、顔向き判別手段、信頼度判別手段、出力手段)
24 CPU (顔位置判別手段、顔向き判別手段、信頼度判別手段、出力手段)
【特許請求の範囲】
【請求項1】
顔を撮影して得られた顔画像を記憶する顔画像記憶手段と、
前記顔画像記憶手段に記憶された前記顔画像に基づいて、顔の位置と顔の中心の位置とを判別する顔位置判別手段と、
前記顔位置判別手段により求められた顔の位置と顔の中心の位置とに基づいて顔の向きを出力する顔向き判別手段と、
前記顔向き判別手段により判別された顔向きについて、その確からしさを示す信頼度を求める信頼度判別手段と、
前記顔向き判別手段で判別された顔の向きと、前記信頼度判別手段により判別されたその信頼度とを出力する出力手段と、
を備える、ことを特徴とする顔向き判別装置。
【請求項2】
前記信頼度判別手段は、従前に判別された顔の位置と今回検出された顔の位置とのずれに基づいてその信頼度を求める、ことを特徴とする請求項1に記載の顔向き判別装置。
【請求項3】
前記顔位置判別手段は、前記顔画像記憶手段に記憶された前記顔画像のエッジ抽出処理を行い、エッジ抽出処理により得られた画像の各画素の画素値を所定方向に投影してヒストグラムを得るヒストグラム取得処理を実行し、
前記信頼度判別手段は、前記ヒストグラムの値に基づいて、顔向きの信頼度を求める、ことを特徴とする請求項1に記載の顔向き判別装置。
【請求項4】
前記信頼度判別手段は、顔画像を複数の領域に分割し、各領域の重心を求め、求めた重心位置に基づいて、顔向きの信頼度を求める、ことを特徴とする請求項1に記載の顔向き判別装置。
【請求項5】
前記信頼度判別手段は、顔画像を複数の領域に分割し、各領域の輝度を求め、求めた輝度に基づいて、顔位置の信頼度を求める、ことを特徴とする請求項1に記載の顔向き判別装置。
【請求項6】
前記顔位置判別手段と前記顔向き判別手段と前記信頼度判別手段とは、前記顔画像記憶手段に記憶された前記顔画像に基づいて、顔の水平方向の位置と向きを判別する処理と、判別した水平方向の向きの信頼度を求める1単位の処理を繰り返して実行し、
顔の垂直方向の位置を判別する処理を複数の処理ステップに区分して、各1単位の処理内でいずれかの区分ステップを実行し、前記区分ステップの実行を複数回繰り返すことにより、顔の垂直方向の位置を求める、
ことを特徴とする請求項1に記載の顔向き判別装置。
【請求項7】
コンピュータを、
顔を撮影して得られた顔画像を記憶する顔画像記憶手段、
前記顔画像記憶手段に記憶された前記顔画像に基づいて、顔の位置を判別する顔位置判別手段、
前記顔位置判別手段により判別された顔位置について、その確からしさを示す信頼度を求める信頼度判別手段、
前記顔位置判別手段で判別された顔の位置と、前記信頼度判別手段により判別されたその信頼度とを出力する出力手段、
として機能させるコンピュータプログラム。
【請求項1】
顔を撮影して得られた顔画像を記憶する顔画像記憶手段と、
前記顔画像記憶手段に記憶された前記顔画像に基づいて、顔の位置と顔の中心の位置とを判別する顔位置判別手段と、
前記顔位置判別手段により求められた顔の位置と顔の中心の位置とに基づいて顔の向きを出力する顔向き判別手段と、
前記顔向き判別手段により判別された顔向きについて、その確からしさを示す信頼度を求める信頼度判別手段と、
前記顔向き判別手段で判別された顔の向きと、前記信頼度判別手段により判別されたその信頼度とを出力する出力手段と、
を備える、ことを特徴とする顔向き判別装置。
【請求項2】
前記信頼度判別手段は、従前に判別された顔の位置と今回検出された顔の位置とのずれに基づいてその信頼度を求める、ことを特徴とする請求項1に記載の顔向き判別装置。
【請求項3】
前記顔位置判別手段は、前記顔画像記憶手段に記憶された前記顔画像のエッジ抽出処理を行い、エッジ抽出処理により得られた画像の各画素の画素値を所定方向に投影してヒストグラムを得るヒストグラム取得処理を実行し、
前記信頼度判別手段は、前記ヒストグラムの値に基づいて、顔向きの信頼度を求める、ことを特徴とする請求項1に記載の顔向き判別装置。
【請求項4】
前記信頼度判別手段は、顔画像を複数の領域に分割し、各領域の重心を求め、求めた重心位置に基づいて、顔向きの信頼度を求める、ことを特徴とする請求項1に記載の顔向き判別装置。
【請求項5】
前記信頼度判別手段は、顔画像を複数の領域に分割し、各領域の輝度を求め、求めた輝度に基づいて、顔位置の信頼度を求める、ことを特徴とする請求項1に記載の顔向き判別装置。
【請求項6】
前記顔位置判別手段と前記顔向き判別手段と前記信頼度判別手段とは、前記顔画像記憶手段に記憶された前記顔画像に基づいて、顔の水平方向の位置と向きを判別する処理と、判別した水平方向の向きの信頼度を求める1単位の処理を繰り返して実行し、
顔の垂直方向の位置を判別する処理を複数の処理ステップに区分して、各1単位の処理内でいずれかの区分ステップを実行し、前記区分ステップの実行を複数回繰り返すことにより、顔の垂直方向の位置を求める、
ことを特徴とする請求項1に記載の顔向き判別装置。
【請求項7】
コンピュータを、
顔を撮影して得られた顔画像を記憶する顔画像記憶手段、
前記顔画像記憶手段に記憶された前記顔画像に基づいて、顔の位置を判別する顔位置判別手段、
前記顔位置判別手段により判別された顔位置について、その確からしさを示す信頼度を求める信頼度判別手段、
前記顔位置判別手段で判別された顔の位置と、前記信頼度判別手段により判別されたその信頼度とを出力する出力手段、
として機能させるコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【公開番号】特開2007−72628(P2007−72628A)
【公開日】平成19年3月22日(2007.3.22)
【国際特許分類】
【出願番号】特願2005−257175(P2005−257175)
【出願日】平成17年9月5日(2005.9.5)
【出願人】(000000011)アイシン精機株式会社 (5,421)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【出願人】(000003609)株式会社豊田中央研究所 (4,200)
【Fターム(参考)】
【公開日】平成19年3月22日(2007.3.22)
【国際特許分類】
【出願日】平成17年9月5日(2005.9.5)
【出願人】(000000011)アイシン精機株式会社 (5,421)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【出願人】(000003609)株式会社豊田中央研究所 (4,200)
【Fターム(参考)】
[ Back to top ]