(57)【要約】【課題】  顔モデルデータを用いることなく演算負担を軽減して、顔中心位置を検出する。【解決手段】  カメラ１０からコンピュータ１４内に顔画像を入力して（ステップＳ１）、ドライバの顔左右位置、つまりドライバの顔の両端位置を検出する（ステップＳ２）。次に、顔の両端の範囲内で、横エッジを横方向に投影してヒストグラムを作成して、ヒストグラムのピークに基づいて顔の上及び下位置を推定する（ステップＳ３）。そして、所定の閾値を用いて、縦方向に白→黒→白と変化する箇所である横エッジ（白黒白エッジ）を検出して（ステップＳ４）、横エッジを構成する各画素のｘ座標の平均値を算出して、その平均値を顔中心位置ｉＦａｃｅＣｅｎｔｅｒとして検出する（ステップＳ５）。【選択図】  図３
2006065673.tif 000002
【特許請求の範囲】
【請求項１】
顔を撮像して得られた画像を入力する画像入力手段と、
前記画像入力手段により入力された画像に基づいて、所定の縦幅を有する横エッジを検出する横エッジ検出手段と、
前記横エッジ検出手段により検出された横エッジの横位置情報の平均値を算出し、その平均値を顔中心位置として検出する顔中心位置検出手段と、
を備えた顔中心位置検出装置。
【請求項２】
前記画像入力手段により入力された画像に基づいて、顔の縦方向又は横方向の長さを検出する顔長さ検出手段を更に備え、
前記横エッジ検出手段は、顔長さ検出手段により検出された前記顔の縦方向又は横方向の長さに基づいて、前記横エッジの縦幅又は横の長さの範囲を決定し、決定した範囲内の横エッジを検出する
請求項１に記載の顔中心位置検出装置。
【請求項３】
前記顔中心位置検出手段は、画像中心位置から画像両端方向へ向かうに従って重みが大きくなる重み係数を算出し、前記重み係数によって重み付けされた横位置情報の平均値を顔中心位置として検出する
請求項１または請求項２に記載の顔中心位置検出装置。
【請求項４】
前記顔中心位置検出手段は、前記横エッジが検出された画像の中から前記横エッジを構成する単位領域を検出する毎に、その単位領域の横位置情報を加算して横位置情報加算値を算出し、前記横位置情報加算値とその加算した回数とに基づいて、顔中心位置を検出する
請求項１または請求項２に記載の顔中心位置検出装置。
【請求項５】
前記顔中心位置検出手段は、前記横エッジが検出された画像の中から前記横エッジを構成する単位領域を検出する毎に、その単位領域の前記重み係数によって重み付けされた横位置情報を加算して横位置情報加算値を算出すると共に、前記検出された単位領域の重み係数を加算して重み係数加算値を算出し、前記横位置情報加算値と前記重み係数加算値とに基づいて、顔中心位置を検出する
請求項３に記載の顔中心位置検出装置。
【請求項６】
人の顔を撮像して画像を生成し、当該画像を前記画像入力手段に供給する撮像手段を更に備えた
請求項１から請求項５のいずれか１項に記載の顔中心位置検出装置。
【請求項７】
顔を撮像して得られた画像に基づいて、所定の縦幅を有する横エッジを検出し、
前記検出された横エッジの横位置情報の平均値を算出し、その平均値を顔中心位置として検出する
顔中心位置検出方法。
【請求項８】
前記顔を撮像して得られた画像に基づいて、顔の縦方向又は横方向の長さを検出し、
前記検出された前記顔の縦方向又は横方向の長さに基づいて、前記横エッジの縦幅又は横の長さの範囲を決定し、決定した範囲内の横エッジを検出する
請求項７に記載の顔中心位置検出方法。
【請求項９】
画像中心位置から画像両端方向へ向かうに従って重みが大きくなる重み係数を算出し、前記重み係数によって重み付けされた横位置情報の平均値を顔中心位置として検出する
請求項７または請求項８に記載の顔中心位置検出方法。
【請求項１０】
前記横エッジが検出された画像の中から前記横エッジを構成する単位領域を検出する毎に、その単位領域の横位置情報を加算して横位置情報加算値を算出し、前記横位置情報加算値とその加算した回数とに基づいて、顔中心位置を検出する
請求項７または請求項８に記載の顔中心位置検出方法。
【請求項１１】
前記横エッジが検出された画像の中から前記横エッジを構成する単位領域を検出する毎に、その単位領域の前記重み係数によって重み付けされた横位置情報を加算して横位置情報加算値を算出すると共に、前記検出された単位領域の重み係数を加算して重み係数加算値を算出し、前記横位置情報加算値と前記重み係数加算値とに基づいて、顔中心位置を検出する
請求項９に記載の顔中心位置検出方法。
【請求項１２】
コンピュータに、
顔を撮像して得られた画像に基づいて、所定の縦幅を有する横エッジを検出し、
前記検出された横エッジの横位置情報の平均値を算出し、その平均値を顔中心位置として検出する
処理を実行させる顔中心位置検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、顔中心位置検出装置及び方法並びにプログラムに係り、特に、顔を撮像して得られた画像に基づいて顔の中心位置を検出する顔中心位置検出装置及び方法並びにプログラムに関する。
【背景技術】
【０００２】
顔画像に基づいて人を識別したり、表情を読み取ったりするためには、顔の方向、つまり顔中心位置を検出することが重要となる。
【０００３】
従来、予め対象者の顔画像データを取得していなくても、不特定個人の顔画像からその顔方向を検出する画像処理装置が提案されている（例えば、特許文献１を参照。）。この画像処理装置は、複数のサンプル正面顔画像データに基づいて平均正面顔画像データを生成し、平均正面顔画像データを標準顔形状モデルデータにマッピングして、平均顔モデルデータを生成する。そして、平均顔モデルデータを所定角度から見たときの角度別平均顔画像データと、入力された画像との相関度に基づいて、入力画像における顔方向を検出する。
【０００４】
また、入力画像に対して、顔の輪郭と目の位置に相当する３Ｄ顔モデルを想定して用意しておき、そのモデルを様々な角度に回転させて、輪郭や目の位置が一致する角度を顔向き角度とする顔向き推定装置が提案されている（例えば、特許文献２を参照）。
【特許文献１】特開２００１−２９１１０８号公報
【特許文献２】特開２００４−９４４９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１に記載された画像処理装置は、様々な大きさの顔、様々な向きの顔に対してテンプレートを用意したり、それらと入力画像とのマッチングの演算のために、非常に多大な負担がかかってしまう問題があった。
【０００６】
一方、特許文献２に記載された顔向き推定装置は、平易なテンプレートを用いているが、人の顔、特に髪型は個人差が大きいため、顔の輪郭や目の位置と一致しないことが多い。このため、一致させようとすると、多くの顔モデルを用意する必要があるため、処理量が増大する問題がある。
【０００７】
本発明は、上述した課題を解決するために提案されたものであり、顔モデルデータを用いることなく演算負担を軽減して、顔中心位置を検出することができる顔中心位置検出装置及び方法並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決するため、本発明に係る顔中心位置検出装置は、顔を撮像して得られた画像を入力する画像入力手段と、前記画像入力手段により入力された画像に基づいて、所定の縦幅を有する横エッジを検出する横エッジ検出手段と、前記横エッジ検出手段により検出された横エッジの横位置情報の平均値を算出し、その平均値を顔中心位置として検出する顔中心位置検出手段と、を備えている。
【０００９】
本発明に係る顔中心位置検出方法は、顔を撮像して得られた画像に基づいて、所定の縦幅を有する横エッジを検出し、前記検出された横エッジの横位置情報の平均値を算出し、その平均値を顔中心位置として検出する。
【００１０】
本発明に係る顔中心位置検出プログラムは、コンピュータに、顔を撮像して得られた画像に基づいて、所定の縦幅を有する横エッジを検出し、前記検出された横エッジの横位置情報の平均値を算出し、その平均値を顔中心位置として検出する処理を実行させる。
【００１１】
画像入力手段は、顔を撮像して得られた画像を入力する。この画像は、被写体である人の顔だけでなく、その背景も含まれている。なお、画像入力手段は、人の顔を撮像して画像を生成する撮像手段から供給された画像を入力してもよい。
【００１２】
横エッジ検出手段は、画像入力手段により入力された画像に基づいて、所定の縦幅を有する横エッジを検出する。所定の縦幅とは、眉、目、鼻、口の顔部品に対応する縦幅をいう。これにより、ノイズによって生じた非常に短いエッジや、眉や目などの顔部品よりも大きなエッジを除去することができる。
【００１３】
顔中心位置検出手段は、検出された横エッジの横位置情報の平均値を算出する。ここで、検出された横エッジは、上記の顔部品にそれぞれ対応しているため、それぞれ左右対称に存在している。そこで、横エッジの横位置情報の平均値を算出すれば、その平均値が顔中心位置として検出される。
【００１４】
以上のように、本発明に係る顔中心位置検出装置及び方法並びにプログラムによれば、顔を撮像して得られた画像に基づいて所定の縦幅を有する横エッジを検出し、前記検出された横エッジの横位置情報の平均値を算出し、その平均値を顔中心位置として検出することにより、演算負担を少なくしつつ、高速かつ確実に顔中心位置を検出することができる。
【００１５】
また、上記顔中心位置検出装置は、前記画像入力手段により入力された画像に基づいて、顔の縦方向又は横方向の長さを検出する顔長さ検出手段を更に備え、前記横エッジ検出手段は、顔長さ検出手段により検出された前記顔の縦方向又は横方向の長さに基づいて、前記横エッジの縦幅又は横の長さの範囲を決定し、決定した範囲内の横エッジを検出してもよい。
【００１６】
上記顔中心位置検出方法は、前記顔を撮像して得られた画像に基づいて、顔の縦方向又は横方向の長さを検出し、前記検出された前記顔の縦方向又は横方向の長さに基づいて、前記横エッジの縦幅又は横の長さの範囲を決定し、決定した範囲内の横エッジを検出してもよい。
【００１７】
検出された横エッジの中には、ノイズによって生じた短い横エッジがあったり、顔部品より大きい部分（例えば髪など）の横エッジなどが存在する。このような横エッジが検出されると、正確に顔中心位置を検出できないことがある。
【００１８】
そこで、上記発明は、顔の縦方向又は横方向の長さを検出し、検出した長さに基づいて横エッジの縦幅の範囲を決定し、決定した範囲内の横エッジを検出することによって、顔部品以外の横エッジを除去して、最適な横エッジのみを検出することができる。
【００１９】
また、上記顔中心位置検出装置において、前記顔中心位置検出手段は、画像中心位置から画像両端方向へ向かうに従って重みが大きくなる重み係数を算出し、前記重み係数によって重み付けされた横位置情報の平均値を顔中心位置として検出してもよい。
【００２０】
上記顔中心位置検出方法において、画像中心位置から画像両端方向へ向かうに従って重みが大きくなる重み係数を算出し、前記重み係数によって重み付けされた横位置情報の平均値を顔中心位置として検出してもよい。
【００２１】
顔が横を向いた場合、横を向いた側の横エッジが欠けてしまい、横エッジが短くなってしまう。この場合、横エッジの横位置情報の平均値を算出しても、正確な顔中心位置が検出されない。
【００２２】
そこで、上記発明は、画像中心位置から画像両端方向へ向かうに従って重みが大きくなる重み係数を算出し、前記重み係数によって重み付けされた横位置情報の平均値を顔中心位置として検出することで、欠けてしまった横エッジの重みを大きくすることで、正確な顔中心位置を検出することができる。
【００２３】
また、上記顔中心位置検出装置において、前記顔中心位置検出手段は、前記横エッジが検出された画像の中から前記横エッジを構成する単位領域を検出する毎に、その単位領域の横位置情報を加算して横位置情報加算値を算出し、前記横位置情報加算値とその加算した回数とに基づいて、顔中心位置を検出してもよい。
【００２４】
上記顔中心位置検出方法において、前記横エッジが検出された画像の中から前記横エッジを構成する単位領域を検出する毎に、その単位領域の横位置情報を加算して横位置情報加算値を算出し、前記横位置情報加算値とその加算した回数とに基づいて、顔中心位置を検出してもよい。
【００２５】
これにより、上記発明は、横位置情報加算値とその加算した回数とに基づいて、横位置情報の平均値を算出することができるので、顔中心位置を検出することができる。
【００２６】
また、上記顔中心位置検出装置において、前記顔中心位置検出手段は、前記横エッジが検出された画像の中から前記横エッジを構成する単位領域を検出する毎に、その単位領域の前記重み係数によって重み付けされた横位置情報を加算して横位置情報加算値を算出すると共に、前記検出された単位領域の重み係数を加算して重み係数加算値を算出し、前記横位置情報加算値と前記重み係数加算値とに基づいて、顔中心位置を検出してもよい。
【００２７】
上記顔中心位置検出方法において、前記横エッジが検出された画像の中から前記横エッジを構成する単位領域を検出する毎に、その単位領域の前記重み係数によって重み付けされた横位置情報を加算して横位置情報加算値を算出すると共に、前記検出された単位領域の重み係数を加算して重み係数加算値を算出し、前記横位置情報加算値と前記重み係数加算値とに基づいて、顔中心位置を検出してもよい。
【００２８】
これにより、上記発明は、前記横位置情報加算値と前記重み係数加算値とに基づいて、重み付けされた横位置情報の平均値を算出することができるので、顔が横を向いた場合でも、演算負担をかけることなく、確実に顔中心位置を検出することができる。
【発明の効果】
【００２９】
本発明に係る顔中心位置検出装置及び方法並びにプログラムは、顔を撮像して得られた画像に基づいて所定の縦幅を有する横エッジを検出し、前記検出された横エッジの横位置情報の平均値を算出し、その平均値を顔中心位置として検出することにより、演算負担を少なくしつつ、高速かつ確実に顔中心位置を検出することができる。
【発明を実施するための最良の形態】
【００３０】
以下、本発明を実施するための最良の形態について、図面を参照しながら詳細に説明する。本実施形態では、車両を運転するドライバの顔を撮像してドライバの顔の中心位置を検出する例を挙げて説明するが、本発明はドライバ以外の顔の中心位置を検出することも可能である。
【００３１】
［第１の実施形態］
図１は、本発明の第１の実施形態に係る顔中心位置検出装置の構成を示す図である。顔中心位置検出装置は、ドライバの顔を撮影して顔画像を生成するカメラ１０と、ドライバの顔を照明する照明光源１２と、ドライバの顔中心位置を検出するコンピュータ１４と、コンピュータ１４に接続された表示装置１６と、を備えている。
【００３２】
カメラ１０によって生成される顔画像は、ドライバの顔だけでなく、その背景も含まれている。また、表示装置１６は、ＬＣＤ（Liquid Crystal Display）又はＣＲＴ（Cathode Ray Tube）で構成され、カメラ１０で撮影された顔画像から抽出された２値化画像等を表示する。
【００３３】
図２は、コンピュータ１４の構成を示すブロック図である。
【００３４】
コンピュータ１４は、カメラ１０で撮像された画像をディジタル信号に変換するアナログ／ディジタル（Ａ／Ｄ）変換器２１と、カメラ１０により生成された顔画像を記憶する画像メモリ２２と、顔中心位置を検出するためのプログラムが記憶されているＲＯＭ２３と、ＲＯＭ２３に記憶されたプログラムに基づいて所定の演算を行うＣＰＵ２４と、データのワークエリアであるＲＡＭ２５と、表示装置１６の表示制御を行う表示制御器２７と、光源１２の点灯又は消滅を制御する発光制御器２８と、を備えている。
【００３５】
図３は、ＲＯＭ２３に記憶された顔中心位置検出プログラムの処理ルーチンを示すフローチャートである。すなわち、ＣＰＵ２４は、この処理ルーチンに従ってステップＳ１からステップＳ５までを実行する。
【００３６】
ステップＳ１では、ＣＰＵ２４は、カメラ１０からコンピュータ１４内に顔画像を入力して、Ａ／Ｄ変換器２１を介して画像メモリ２２に書き込んで、ステップＳ２に移行する。
【００３７】
ステップＳ２では、ＣＰＵ２４は、ドライバの顔左右位置、つまりドライバの顔の両端位置を検出する。例えば、ＣＰＵ２４は、顔画像の縦エッジを計算し、その縦エッジを縦方向に投影してヒストグラムを作成する。このとき、顔の両端部分にピークが現れるので、そのピークを顔の両端、すなわち左右位置として検出する。なお、ヒストグラム作成時には、時間差分や長さによる重み付けを行い、ノイズ成分（ヘッドレストや窓枠などの背景）を除去するとよい。その他、テンプレートマッチングや距離画像などを利用して顔左右位置を検出する手法もある。具体的にＣＰＵ２４は、次の処理を実行すればよい。
【００３８】
図４は、ステップＳ２における顔左右位置検出ルーチンの一例を示すフローチャートである。図５（Ａ）から（Ｆ）は、顔左右位置検出ルーチンの各工程で生成される画像を示す図である。
【００３９】
ステップＳ１１では、ＣＰＵ２４は、画像メモリ２２から顔画像（図５（Ａ））を読み出し、この顔画像の画素値を横方向（水平方向）に微分する。具体的には、各画素の輝度とその画素に隣接する画素の輝度との差分を算出して、エッジ部抽出画像（図５（Ｂ））を生成して、ステップＳ１２に移行する。同図において、波線は元画像の輪郭である。エッジ部抽出画像において、背景の縦エッジ３１と顔画像の縦エッジ３２のみが抽出され、波線で示した元画像の輪郭はほとんど残っていない。これらの縦エッジ３１、３２は、ドライバが動いていない場合でも、抽出される。
【００４０】
なお、エッジ部抽出画像の画素値（輝度の微分値）を縦方向（垂直方向）に投影した場合、図５（Ｂ）下部に示すように、ヒストグラムが得られる。このヒストグラムでは、すべてのエッジ部の強度がほぼ等しいことから、顔の両端位置を特定することはできない。
【００４１】
ステップＳ１２では、ＣＰＵ２４は、画像メモリ２２から顔画像（図５（Ａ））を読み出し、この顔画像の画素値を時間で微分する。具体的には、ある時刻における各画素の輝度とその直前の各画素の輝度との差分を算出して、動く対象のみを強調した画素値時間微分画像（図５（Ｃ））を生成して、ステップＳ１３に移行する。
【００４２】
ドライバは運転中に完全に静止するのではないので、画素値時間微分画像では、動いているものの輪郭、つまりドライバの輪郭が太く検出される。これに対して、窓、ピラー、ヘッドレスト等の背景は全く動かないため、ほとんど残っていない。但し、画素値時間分画像では、ドライバがよく動く場合には顔の輪郭が検出されるが、ドライバがほとんど動かない場合にはほとんど検出されない。そこで、次の処理が必要となる。
【００４３】
ステップＳ１３及びＳ１４では、ＣＰＵ２４は、エッジ部抽出画像と画素値時間微分画像とを合成して合成画像１（図５（Ｄ））を生成し、合成画像１の画素値（輝度）を縦方向に投影してヒストグラムを生成する。このように、合成画像１は、エッジ部抽出画像と画素値時間微分画像とが合成された画像である。よって、ドライバが動いていない場合でも動いている場合でも、合成画像１には、ドライバの縦エッジ又は輪郭が現れている。
【００４４】
なお、エッジ部抽出画像の画素値と画素値時間微分画像の画素値をそれぞれ縦方向に投影して２つのヒストグラムを生成し、この２つのヒストグラムを合計してもよい。そして、合成画像１のヒストグラムからピーク３４、３５を検出して、ステップＳ１５に移行する。
【００４５】
ステップＳ１５では、ＣＰＵ２４は、合成画像１のヒストグラムから検出された複数のピーク３４、３５の中から、人の顔幅に最も対応するピーク間隔となる２つのピークを検出し、この２つのピークを顔の左右位置として検出する。そして、顔左右位置検出ルーチンを抜けて、図３に示すステップＳ２に移行する。
【００４６】
なお、顔左右位置検出ルーチンは、上記の例に限定されるものではなく、例えば次のようなものでもよい。
【００４７】
例えば、ＣＰＵ２４は、ステップＳ１２において、画素値の時間微分演算の対象として顔画像（図５（Ａ））を用いたが、その代わりにエッジ部抽出画像（図５（Ｂ））を用いてもよい。つまり、ステップＳ１２では、エッジ部抽出画像（図５（Ｂ））の画素値（輝度）を時間で微分して、エッジ部時間微分画像（図５（Ｅ））を生成してもよい。これにより、図５（Ｂ）に示すようにエッジ部抽出画像内の複数の縦エッジ３１、３２のうち、窓、ヘッドレスト等の全く動かない背景の縦エッジを消去して、図５（Ｅ）に示すように動きのある顔画像の中の縦エッジ３３のみを抽出できる。
【００４８】
ステップＳ１３以降は、上記と同様である。なお、ステップＳ１３及びＳ１４では、ＣＰＵ２４は、上記と同様に、エッジ部抽出画像とエッジ部時間微分画像とを合成して合成画像２（図５（Ｆ））を生成し、合成画像２の画素値（輝度）を縦方向に投影してヒストグラムを生成し、このヒストグラムからピーク３４、３５を検出すればよい。
【００４９】
図６は、ステップＳ２の処理によって顔左右位置が検出された状態及び後述の処理によって顔上下位置が検出された状態を示す図である。
【００５０】
ＣＰＵ２４は、同図に示すように、ヒストグラムの複数のピークから、人の顔幅に最も対応するピーク間隔となる２つのピークを検出し、この２つのピークを顔の左右位置として検出する。このため、ＣＰＵ２４は、顔左右位置検出ルーチンを実行することにより、人の背景や人の動きに影響されることなく、顔の両端位置を検出することができる。そして、図３に示すステップＳ３以降の処理を実行する。
【００５１】
ステップＳ３では、ＣＰＵ２４は、顔の両端の範囲内で、横エッジを横方向に投影してヒストグラムを作成する。このヒストグラムでは、眉、目、口に相当する部分にピークが生じている。そこで、図６に示すように、ヒストグラムのピークに基づいて顔の上及び下位置を推定して、ステップＳ４に移行する。
【００５２】
なお、顔の左右位置及び上下位置の検出方法は、上記の例に限定されるものではなく、その他テンプレートマッチングや距離画像を用いる手法であってもよい。
【００５３】
ステップＳ４では、ＣＰＵ２４は、カメラ１０で撮像された状態で画像メモリ２２に記憶されている顔画像に対して、所定の閾値を用いて、縦方向に白→黒→白と変化する箇所である横エッジ（白黒白エッジ）を検出して、ステップＳ５に移行する。ここで、白とは画素の輝度が所定の閾値より上のものであり、黒は画素の輝度が所定の閾値より下のものである。
【００５４】
図７は、白黒白エッジを説明するための図である。このように、白黒白エッジとは、単に白と黒の境界となるエッジではなく、白→黒→白と変化し、所定の幅を有する横エッジをいう。
【００５５】
図８（Ａ）は入力画像を示す図であり、（Ｂ）は入力画像から得られた白黒白エッジを示す図である。ステップＳ４において具体的には、ＣＰＵ２４は、画像中の顔の縦幅が例えば６０ピクセル程度の場合、縦方向に２〜４ピクセル幅の黒い画素、つまり輝度が低い画素を検出すればよい。これにより、１ピクセル幅の黒い画素を無視するのでノイズ成分を除去することができる。
【００５６】
また、検出幅を４ピクセル以下に限定することで、図８に示すように、顔部品（眉、目、鼻、口）に限定してエッジを検出することができる。なお、縦方向の検出幅は、上記の２〜４ピクセル幅に限定されるものではない。顔の縦幅が６０ピクセルから大きく異なるときは、それに応じて変更すればよい。すなわち、顔の縦幅に応じて縦方向の検出幅を変えればよい。
【００５７】
さらに、ＣＰＵ２４は、ステップＳ２で検出した顔の左右位置から顔幅を算出し、白黒白エッジのうち横方向の長さが所定値以上（例えば、顔幅の１０％以上）の白黒白エッジである白黒白長さエッジを検出する。
【００５８】
図９（Ａ）は白黒白エッジを示す図であり、（Ｂ）は白黒白長さエッジを示す図である。図１０は、顔画像全体の白黒白長さエッジを示す図である。これにより、ノイズによる短い横エッジを除去することができる。ここで、「１０％以上」としたのは、顔画像の統計的データによると、顔幅に対する顔部品の幅は１０％以上になるため、１０％未満は顔部品ではないと考えられるからである。なお、本実施形態では「１０％」としたが、横方向のノイズを除去できるものであれば、この数値に限定されるものでない。以下では、白黒白長さエッジを単に横エッジとして説明する。
【００５９】
ステップＳ５では、ＣＰＵ２４は、横エッジを構成する各画素のｘ座標の平均値を算出して、その平均値を顔中心位置ｉＦａｃｅＣｅｎｔｅｒとして検出する。
【００６０】
図１１は、ステップＳ５におけるｘ座標平均値算出ルーチンの一例を示すフローチャートである。すなわち、ＣＰＵ２４は、次のステップＳ２１からステップＳ２８までの処理を実行する。
【００６１】
ステップＳ２１では、パラメータの初期設定を行う。具体的には、ｘ＝ｙ＝ｉＸｓｕｍ＝ｉＣｏｕｎｔ＝０に設定して、ステップＳ２２に移行する。
【００６２】
図１２は、横エッジの顔画像にｘ座標及びｙ座標を設定した状態を示す図である。ｘ及びＸ＿ＭＡＸは、横エッジの画像全体のｘ座標及びその最大値である。ｙ及びＹ＿ＭＡＸは、横エッジの画像全体のｙ座標及びその最大値である。ｉＸｓｕｍは横エッジが存在する画素のｘ座標を加算した値であり、ｉＣｏｕｎｔは横エッジが存在する画素をカウントしたときのカウント値である。
【００６３】
ステップＳ２２では、座標（ｘ，ｙ）の画素に横エッジがあるか否か（Ｅｄｇｅ［ｘ］［ｙ］＝１又は０）を判定する。なお、Ｅｄｇｅ［ｘ］［ｙ］は、座標（ｘ，ｙ）の画素に横エッジがあるか否かを示すビット値（０：エッジなし、１：エッジあり）である。そして、肯定判定のときはステップＳ２３に移行し、否定判定のときはステップＳ２４に移行する。
【００６４】
ステップＳ２３では、ｉＸｓｕｍにｘ座標を加算し（ｉＸｓｕｍ＝ｉＸｓｕｍ＋ｘ）、ｉＣｏｕｎｔをインクリメントして（ｉＣｏｕｎｔ＝ｉＣｏｕｎｔ＋１）、ステップＳ２４に移行する。
【００６５】
ステップＳ２４では、ｙ座標が最大値Ｙ＿ＭＡＸになったか否かを判定し、肯定判定のときはステップＳ２６に移行し、否定判定のときはステップＳ２５に移行する。ステップＳ２５では、ｙ座標をインクリメントして（ｙ＝ｙ＋１）、ステップＳ２２に戻る。
【００６６】
ステップＳ２６では、ｘ座標が最大値Ｘ＿ＭＡＸになったか否かを判定し、肯定判定のときはステップＳ２８に移行し、否定判定のときはステップＳ２７に移行する。ステップＳ２７では、ｙ座標を０に設定すると共に（ｙ＝０）、ｘ座標をインクリメントして（ｘ＝ｘ＋１）、ステップＳ２２に戻る。
【００６７】
このように、ＣＰＵ２４は、ステップＳ２２からステップＳ２６を繰り返し実行することによって、横エッジの画像全体をスキャンして、横エッジを構成する画素を検出したときはそのｘ座標を加算すると共に、その加算した回数をカウントする。
【００６８】
ステップＳ２８では、横エッジの存在する画素のｘ座標の平均値を演算することで、顔中心位置ｉＦａｃｅＣｅｎｔｅｒを求める。具体的には、式（１）を演算する。
【００６９】
【数１】
2006065673.tif 000003
【００７０】
横エッジが存在する画素のｘ座標の平均値を求める理由は次の通りである。眉、目、鼻、口の顔部品は左右対称であるため、横エッジが存在する画素のｘ座標の平均値を求めれば、顔の中心位置を求めることができるからである。ステップＳ２８の処理の結果、図１２に示すように、顔中心位置ｉＦａｃｅＣｅｎｔｅｒが求められる。
【００７１】
以上のように、第１の実施形態に係る顔中心位置検出装置は、顔画像から所定範囲内の幅を有する横エッジを検出し、横エッジのｘ座標の平均値を顔中心位置として検出することにより、非常に多くのテンプレートを予め用意してマッチングを行うことで顔中心位置を検出する場合に比べて、演算負担が小さく済み、高速かつ確実に顔中心位置を検出することができる。
【００７２】
［第２の実施形態］
つぎに、本発明の第２の実施形態について説明する。なお、第１の実施形態と同一の部位や処理については同一の符号を付し、重複する説明は省略する。
【００７３】
図１３は、ドライバの顔が横向きのときに第１の実施形態に係る顔中心位置検出装置により検出された顔中心位置を示す図である。このように、上記顔中心位置検出装置は、ドライバがカメラ１０に対して正面を向いていないときは、顔中心位置を正確に検出することができない。その理由は、顔が横向きの場合、顔が向いた方向の眉や目に相当する横エッジが短くなってしまい、その結果、横エッジのｘ座標の平均値であるｉＦａｃｅＣｅｎｔｅｒの値が、実際の顔中心位置とずれてしまうからである。
【００７４】
そこで、第２の実施形態に係る顔中心位置検出装置は、図１１に示したｘ座標平均値算出処理ルーチンに代えて、重み付けｘ座標平均値算出処理ルーチンを実行する。
【００７５】
図１４は、重み付けｘ座標平均値算出処理ルーチンを示す図である。コンピュータ１４のＣＰＵ２４は、図３に示すステップＳ５において、次のステップＳ３１からステップＳ３９までの処理を実行する。
【００７６】
ステップＳ３１では、パラメータの初期設定を行う。具体的には、ｘ＝ｙ＝ｉＸｓｕｍ＝ｉＣｏｕｎｔ＝０に設定して、ステップＳ２２に移行する。
【００７７】
ステップＳ３２では、ｘ座標の重み係数ｉＷｅｉｇｈｔを算出する。具体的には、次の式（２）を演算する。
【００７８】
【数２】
2006065673.tif 000004
【００７９】
ここで、ａｂｓは後続するパラメータの絶対値を求めるものであり、例えば
ａｂｓＸ＝｜Ｘ｜
である。
【００８０】
重み係数ｉＷｅｉｇｈｔは、ｘ座標が画像中心位置（ｘ＝Ｘ＿ＭＡＸ／２）にあるときは最小値１になり、ｘ座標が画像の両端（ｘ＝０又はＸ＿ＭＡＸ）にあるときは最大値４になる。つまり、重み係数ｉＷｅｉｇｈｔは、ｘ座標が画像中心位置のときに最小値（極小値）をとり、画像中心位置から両端に移行するに従って単調増加する係数である。
【００８１】
なお、重み係数ｉＷｅｉｇｈｔの最大値４は一例であり、試験をして最適な値に調整してもよい。すなわち、重み係数ｉＷｅｉｇｈｔは、式（２）に限定されるものではなく、画像中心位置から両端に移行するに従って単調増加する係数であればよい。
【００８２】
図１５は、重み係数によって顔中心位置を修正することを説明するための図である。重み係数は、画像中心位置から両端側に向かって単調に増加している。この重み係数を用いて横エッジのｘ座標の重み付けを行えば、顔の両端側の横エッジが重視されるので、顔中心位置を修正することができる。
【００８３】
ステップＳ３３では、座標（ｘ，ｙ）に横エッジがあるか否か（Ｅｄｇｅ［ｘ］［ｙ］＝１又は０）を判定し、肯定判定のときはステップＳ３４に移行し、否定判定のときはステップＳ３５に移行する。
【００８４】
ステップＳ３４では、ｉＸｓｕｍに重み付けされたｘ座標を加算し（ｉＸｓｕｍ＝ｉＸｓｕｍ＋ｘ＊ｉＷｅｉｇｈｔ）、ｉＣｏｕｎｔに重み係数ｉＷｅｉｇｈｔを加算して（ｉＣｏｕｎｔ＝ｉＣｏｕｎｔ＋ｉＷｅｉｇｈｔ）、ステップＳ３５に移行する。なお、ステップＳ３５からステップＳ３９までの処理は、図１１に示すステップＳ２４からステップＳ２８までの処理と同様である。
【００８５】
このように、ＣＰＵ２４は、画像中心位置から画像両端側に向かうに従って横エッジの重みを増大させながら、横エッジの重み付けされたｘ座標の平均値を求める。この結果、顔が横を向いて、眉や目に相当する横エッジが短くなってしまった場合でも、その短い横エッジに重みをおいてｘ座標の平均値を求めることによって、正確に顔中心位置を検出することができる。
【００８６】
図１６（Ａ）及び（Ｂ）は、本実施形態に係る顔中心位置検出装置により検出された顔中心位置を示す図である。同図（Ａ）に示すように、第２の実施形態で検出される顔中心位置（太い点線）は、第１の実施形態で検出される顔中心位置（細い点線）に比べて、顔の向いている方向に移動しており、鼻や口に相当する横エッジのほぼ中心にある。また、同図（Ｂ）に示すように、さらに顔が横を向いている場合でも、顔中心位置は、鼻や口の横エッジのほぼ中心に検出される。
【００８７】
以上のように、第２の実施形態に係る顔中心位置検出装置は、顔画像から所定範囲内の幅を有する横エッジを検出し、画像中心位置から画像両端側に向かうに従って横エッジの重みを増大させながら、横エッジの重み付けされたｘ座標の平均値を算出して、この平均値を顔中心位置として検出する。これにより、顔が横を向いて横エッジの端が切れてしまって横エッジが短くなる場合でも、短い横エッジに重みをおいているので、演算負担を小さくさせつつ、高速かつ確実に顔中心位置を検出することができる。
【００８８】
本発明は、上述した第１及び第２の実施形態に限定されるものではなく、特許請求の範囲に記載した事項の範囲内で設計変更されたものについても適用可能である。
【００８９】
例えば、ＣＰＵ２４は、ＲＯＭ２３に記憶されたプログラムの代わりに、図示しない光ディスク又は磁気ディスクに記録されたプログラムを読み出して、このプログラムに基づいて、上述したように顔中心位置を検出してもよい。
【００９０】
また、上述した実施形態で説明した各フローチャートは、実施態様の一例であり、これらの処理ルーチンに限定されるものではないのは勿論である。
【図面の簡単な説明】
【００９１】
【図１】本発明の第１の実施形態に係る顔中心位置検出装置の構成を示す図である。
【図２】コンピュータの構成を示すブロック図である。
【図３】ＲＯＭに記憶された顔中心位置検出プログラムの処理ルーチンを示すフローチャートである。
【図４】ステップＳ２における顔左右位置検出ルーチンの一例を示すフローチャートである。
【図５】顔左右位置検出ルーチンの各工程で生成される画像を示す図である。
【図６】ステップＳ２の処理によって顔左右位置が検出された状態及び後述の処理によって顔上下位置が検出された状態を示す図である。
【図７】白黒白エッジを説明するための図である。
【図８】（Ａ）は入力画像を示す図であり、（Ｂ）は入力画像から得られた白黒白エッジを示す図である。
【図９】（Ａ）は白黒白エッジを示す図であり、（Ｂ）は白黒白長さエッジを示す図である。
【図１０】顔画像全体の横エッジを示す図である。
【図１１】ステップＳ５におけるｘ座標平均値算出ルーチンの一例を示すフローチャートである。
【図１２】横エッジの顔画像にｘ座標及びｙ座標を設定した状態を示す図である。
【図１３】ドライバの顔が横向きのときに第１の実施形態に係る顔中心位置検出装置により検出された顔中心位置を示す図である。
【図１４】第２の実施形態の重み付けｘ座標平均値算出処理ルーチンを示す図である。
【図１５】重み係数によって顔中心位置を修正することを説明するための図である。
【図１６】（Ａ）及び（Ｂ）は、第２の実施形態に係る顔中心位置検出装置により検出された顔中心位置を示す図である。
【符号の説明】
【００９２】
１０  カメラ
１２  光源
１４  コンピュータ
１６  表示装置
２１  Ａ／Ｄ変換器
２２  画像メモリ
２３  ＲＯＭ
２４  ＣＰＵ
２５  ＲＡＭ
２７  表示制御器
２８  発光制御器
【図１】
2006065673.tif 000005
【図２】
2006065673.tif 000006
【図３】
2006065673.tif 000007
【図４】
2006065673.tif 000008
【図５】
2006065673.tif 000009
【図６】
2006065673.tif 000010
【図７】
2006065673.tif 000011
【図８】
2006065673.tif 000012
【図９】
2006065673.tif 000013
【図１０】
2006065673.tif 000014
【図１１】
2006065673.tif 000015
【図１２】
2006065673.tif 000016
【図１３】
2006065673.tif 000017
【図１４】
2006065673.tif 000018
【図１５】
2006065673.tif 000019
【図１６】
2006065673.tif 000020