(57)【特許請求の範囲】
【請求項１】
顔を撮影して得られた顔画像を記憶する顔画像記憶手段と、
前記顔画像記憶手段に記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置において顔の上下方向に走査しながら、前記仮の輪郭位置の外側に位置する画素データに基づいて、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定手段と、
前記輪郭候補位置決定手段により決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正手段と、
を備え、
前記輪郭位置補正手段は、前記輪郭候補位置決定手段により決定された前記複数の輪郭候補位置に基づいて、前記輪郭候補位置の平均値と標準偏差とを算出する算出手段と、
前記算出手段で算出した前記平均値を中心として前記標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とする手段と、
を備えることを特徴とする顔端検出装置。
【請求項２】
顔を撮影して得られた顔画像を記憶する顔画像記憶手段と、
前記顔画像記憶手段に記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置の外側に位置する画素データに基づいて演算を行い、該演算値と閾値とを比較することによって、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定手段と、
前記輪郭候補位置決定手段により決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正手段と、
を備え、
前記輪郭位置補正手段は、前記輪郭候補位置決定手段により決定された前記複数の輪郭候補位置に基づいて、前記輪郭候補位置の平均値と標準偏差とを算出する算出手段と、
前記算出手段で算出した前記平均値を中心として前記標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とする手段と、
を備えることを特徴とする顔端検出装置。
【請求項３】
顔を撮影して得られた顔画像を記憶する顔画像記憶手段と、
前記顔画像記憶手段に記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置の外側に位置する画素データに基づいて、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定手段と、
前記輪郭候補位置決定手段により決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正手段と、
を備え、
前記輪郭候補位置決定手段は、前記顔画像記憶手段に記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出する仮輪郭位置検出手段と、
前記仮輪郭位置検出手段で検出した前記仮の輪郭位置の左右方向の外側隣りに位置する画素データと、前記外側隣りに位置する画素の上下に位置する二つの画素データに基づいて、前記仮の輪郭位置を前記外側隣に位置する画素の位置に変更するか否かを決定する決定手段と、
前記決定手段で前記仮の輪郭位置を変更することを決定した場合に、前記仮の輪郭位置を変更する変更手段と、
前記決定手段と、前記変更手段とを繰り返し動作させて、前記決定手段が前記仮の輪郭位置を変更しないと決定したときの仮の輪郭位置を前記輪郭候補位置とする手段と、
を備えることを特徴とする顔端検出装置。
【請求項４】
前記輪郭位置補正手段は、前記輪郭候補位置決定手段により決定された前記複数の輪郭候補位置のヒストグラムを作成するヒストグラム作成手段と、
前記ヒストグラム作成手段で作成したヒストグラムに基づいて、前記輪郭候補位置の標準偏差を算出する標準偏差算出手段と、
前記ヒストグラムの中心に前記標準偏差算出手段で算出した標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とする手段と、
を備えることを特徴とする請求項３に記載の顔端検出装置。
【請求項５】
顔を撮影して得られた顔画像を記憶する顔画像記憶ステップと、
前記顔画像記憶ステップで記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置において顔の上下方向に走査しながら、前記仮の輪郭位置の外側に位置する画素データに基づいて、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定ステップと、
前記輪郭候補位置決定ステップで決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正ステップと、
を備え、
前記輪郭位置補正ステップは、前記輪郭候補位置決定ステップにより決定された前記複数の輪郭候補位置に基づいて、前記輪郭候補位置の平均値と標準偏差とを算出する算出ステップと、
前記算出ステップで算出した前記平均値を中心として前記標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とするステップと、
を備えることを特徴とする顔端検出方法。
【請求項６】
顔を撮影して得られた顔画像を記憶する顔画像記憶ステップと、
前記顔画像記憶ステップで記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置の外側に位置する画素データに基づいて演算を行い、該演算値と閾値とを比較することによって、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定ステップと、
前記輪郭候補位置決定ステップで決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正ステップと、
を備え、
前記輪郭位置補正ステップは、前記輪郭候補位置決定ステップにより決定された前記複数の輪郭候補位置に基づいて、前記輪郭候補位置の平均値と標準偏差とを算出する算出ステップと、
前記算出ステップで算出した前記平均値を中心として前記標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とするステップと、
を備えることを特徴とする顔端検出方法。
【請求項７】
顔を撮影して得られた顔画像を記憶する顔画像記憶ステップと、
前記顔画像記憶ステップで記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置の外側に位置する画素データに基づいて、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定ステップと、
前記輪郭候補位置決定ステップで決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正ステップと、
を備え、
前記輪郭候補位置決定ステップは、前記顔画像記憶ステップで記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出する仮輪郭位置検出ステップと、
前記仮輪郭位置検出ステップで検出した前記仮の輪郭位置の左右方向の外側隣りに位置する画素データと、前記外側隣りに位置する画素の上下に位置する二つの画素データに基づいて、前記仮の輪郭位置を前記外側隣に位置する画素の位置に変更するか否かを決定する決定ステップと、
前記決定ステップで前記仮の輪郭位置を変更することを決定した場合に、前記仮の輪郭位置を変更する変更ステップと、
前記決定ステップと、前記変更ステップとを繰り返し動作させて、前記決定ステップが前記仮の輪郭位置を変更しないと決定したときの仮の輪郭位置を前記輪郭候補位置とするステップと、
を備えることを特徴とする顔端検出方法。
【請求項８】
前記輪郭位置補正ステップは、前記輪郭候補位置決定ステップにより決定された前記複数の輪郭候補位置のヒストグラムを作成するヒストグラム作成ステップと、
前記ヒストグラム作成ステップで作成したヒストグラムに基づいて、前記輪郭候補位置の標準偏差を算出する標準偏差算出ステップと、
前記ヒストグラムの中心に前記標準偏差算出ステップで算出した標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とするステップと、
を備えることを特徴とする請求項７に記載の顔端検出方法。
【請求項９】
コンピュータに、
顔を撮影して得られた顔画像を記憶する顔画像記憶手順と、
前記顔画像記憶手順で記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置において顔の上下方向に走査しながら、前記仮の輪郭位置の外側に位置する画素データに基づいて、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定手順と、
前記輪郭候補位置決定手順で決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正手順と、
を実行させ、
前記輪郭位置補正手順は、前記輪郭候補位置決定手順で決定された前記複数の輪郭候補位置に基づいて、前記輪郭候補位置の平均値と標準偏差とを算出する算出手順と、
前記算出手順で算出した前記平均値を中心として前記標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とする手順と、
を実行させるプログラム。
【請求項１０】
コンピュータに、
顔を撮影して得られた顔画像を記憶する顔画像記憶手順と、
前記顔画像記憶手順で記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置の外側に位置する画素データに基づいて演算を行い、該演算値と閾値とを比較することによって、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定手順と、
前記輪郭候補位置決定手順で決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正手順と、
を実行させ、
前記輪郭位置補正手順は、前記輪郭候補位置決定手順で決定された前記複数の輪郭候補位置に基づいて、前記輪郭候補位置の平均値と標準偏差とを算出する算出手順と、
前記算出手順で算出した前記平均値を中心として前記標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とする手順と、
を実行させるプログラム。
【請求項１１】
コンピュータに、
顔を撮影して得られた顔画像を記憶する顔画像記憶手順と、
前記顔画像記憶手順で記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置の外側に位置する画素データに基づいて、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定手順と、
前記輪郭候補位置決定手順で決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正手順と、
を実行させ、
前記輪郭候補位置決定手順は、前記顔画像記憶手順で記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出する仮輪郭位置検出手順と、
前記仮輪郭位置検出手順で検出した前記仮の輪郭位置の左右方向の外側隣りに位置する画素データと、前記外側隣りに位置する画素の上下に位置する二つの画素データに基づいて、前記仮の輪郭位置を前記外側隣に位置する画素の位置に変更するか否かを決定する決定手順と、
前記決定手順で前記仮の輪郭位置を変更することを決定した場合に、前記仮の輪郭位置を変更する変更手順と、
前記決定手順と、前記変更手順とを繰り返し動作させて、前記決定手順が前記仮の輪郭位置を変更しないと決定したときの仮の輪郭位置を前記輪郭候補位置とする手順と、
を実行させるプログラム。
【請求項１２】
前記輪郭位置補正手順は、前記輪郭候補位置決定手順で決定された前記複数の輪郭候補位置のヒストグラムを作成するヒストグラム作成手順と、
前記ヒストグラム作成手順で作成したヒストグラムに基づいて、前記輪郭候補位置の標準偏差を算出する標準偏差算出手順と、
前記ヒストグラムの中心に前記標準偏差算出手順で算出した標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とする手順と、
を実行させる請求項１１に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、顔画像から、より正確な顔の両端を検出することが可能な顔端検出装置、顔端検出方法、及び、プログラムに関する。
【背景技術】
【０００２】
顔画像に基づいて顔の両端、もしくは、輪郭を正確に検出することは、顔画像の画像処理において重要な課題である。
【０００３】
特許文献１には、人の顔を撮影した画像を処理し、人の動きや背景に影響されること無く高精度に顔の位置を検出する手法が開示されている。
【０００４】
また、特許文献２には、ドライバーが存在可能な領域を撮影して得られた画像を取り込み、取り込んだ画像から縦エッジ画像（顔の両側端）を検出し、検出した縦エッジ画像に基づいて、複数の顔中心候補線を設定すると共に各顔中心候補線各々に対して、該顔中心候補線が顔の中心線である確からしさを表す値に基づいて、顔の有無の判定精度を向上する技術が開示されている。
【特許文献１】特開２００４−３１０３９６号公報
【特許文献２】特開２００５−０１１０９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
車両の走行環境は様々に変化し、カメラが捉えるドライバーの画像も様々に変化する。例えば、夜間では、顔の両端付近での輝度値の差がはっきりせずに、正確な顔の両端位置を検出することができないことが多い。また、例えば、ドライバーが女性の場合、髪型や化粧の影響により、顔の両端付近での輝度値の差がはっきりせずに、正確な顔の両端位置を検出することができないことが多い。
この顔の両端位置の検出に誤りが生ずると、以後の処理を正確に行うことができない。
【０００６】
本発明は上記の問題点に鑑みてなされたものであり、夜間に撮影された画像や女性の顔画像といった顔の両端位置を実際よりも内側に誤検出する虞のあった顔画像においても、顔の両端位置を検出することが可能とする顔端検出装置、顔端検出方法、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、この発明の第１の観点に係る顔端検出装置は、顔を撮影して得られた顔画像を記憶する顔画像記憶手段と、前記顔画像記憶手段に記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置において顔の上下方向に走査しながら、前記仮の輪郭位置の外側に位置する画素データに基づいて、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定手段と、前記輪郭候補位置決定手段により決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正手段と、を備え、前記輪郭位置補正手段は、前記輪郭候補位置決定手段により決定された前記複数の輪郭候補位置に基づいて、前記輪郭候補位置の平均値と標準偏差とを算出する算出手段と、前記算出手段で算出した前記平均値を中心として前記標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とする手段と、を備えることを特徴とする。
上記目的を達成するため、この発明の第２の観点に係る顔端検出装置は、顔を撮影して得られた顔画像を記憶する顔画像記憶手段と、前記顔画像記憶手段に記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置の外側に位置する画素データに基づいて演算を行い、該演算値と閾値とを比較することによって、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定手段と、前記輪郭候補位置決定手段により決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正手段と、を備え、前記輪郭位置補正手段は、前記輪郭候補位置決定手段により決定された前記複数の輪郭候補位置に基づいて、前記輪郭候補位置の平均値と標準偏差とを算出する算出手段と、前記算出手段で算出した前記平均値を中心として前記標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とする手段と、を備えることを特徴とする。
上記目的を達成するため、この発明の第３の観点に係る顔端検出装置は、顔を撮影して得られた顔画像を記憶する顔画像記憶手段と、前記顔画像記憶手段に記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置の外側に位置する画素データに基づいて、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定手段と、前記輪郭候補位置決定手段により決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正手段と、を備え、前記輪郭候補位置決定手段は、前記顔画像記憶手段に記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出する仮輪郭位置検出手段と、前記仮輪郭位置検出手段で検出した前記仮の輪郭位置の左右方向の外側隣りに位置する画素データと、前記外側隣りに位置する画素の上下に位置する二つの画素データに基づいて、前記仮の輪郭位置を前記外側隣に位置する画素の位置に変更するか否かを決定する決定手段と、前記決定手段で前記仮の輪郭位置を変更することを決定した場合に、前記仮の輪郭位置を変更する変更手段と、前記決定手段と、前記変更手段とを繰り返し動作させて、前記決定手段が前記仮の輪郭位置を変更しないと決定したときの仮の輪郭位置を前記輪郭候補位置とする手段と、を備えることを特徴とする。
【０００９】
また、前記顔端検出装置において、前記輪郭位置補正手段は、前記輪郭候補位置決定手段により決定された前記複数の輪郭候補位置のヒストグラムを作成するヒストグラム作成手段と、前記ヒストグラム作成手段で作成したヒストグラムに基づいて、前記輪郭候補位置の標準偏差を算出する標準偏差算出手段と、前記ヒストグラムの中心に前記標準偏差算出手段で算出した標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とする手段と、を備えることを特徴とするようにしてもよい。
【００１０】
また、この発明の第４の観点に係る顔端検出方法は、顔を撮影して得られた顔画像を記憶する顔画像記憶ステップと、前記顔画像記憶ステップで記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置において顔の上下方向に走査しながら、前記仮の輪郭位置の外側に位置する画素データに基づいて、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定ステップと、前記輪郭候補位置決定ステップで決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正ステップと、を備え、前記輪郭位置補正ステップは、前記輪郭候補位置決定ステップにより決定された前記複数の輪郭候補位置に基づいて、前記輪郭候補位置の平均値と標準偏差とを算出する算出ステップと、前記算出ステップで算出した前記平均値を中心として前記標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とするステップと、を備えることを特徴とする。
この発明の第５の観点に係る顔端検出方法は、顔を撮影して得られた顔画像を記憶する顔画像記憶ステップと、前記顔画像記憶ステップで記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置の外側に位置する画素データに基づいて演算を行い、該演算値と閾値とを比較することによって、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定ステップと、前記輪郭候補位置決定ステップで決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正ステップと、を備え、前記輪郭位置補正ステップは、前記輪郭候補位置決定ステップにより決定された前記複数の輪郭候補位置に基づいて、前記輪郭候補位置の平均値と標準偏差とを算出する算出ステップと、前記算出ステップで算出した前記平均値を中心として前記標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とするステップと、を備えることを特徴とする。
この発明の第６の観点に係る顔端検出方法は、顔を撮影して得られた顔画像を記憶する顔画像記憶ステップと、前記顔画像記憶ステップで記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置の外側に位置する画素データに基づいて、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定ステップと、前記輪郭候補位置決定ステップで決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正ステップと、を備え、前記輪郭候補位置決定ステップは、前記顔画像記憶ステップで記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出する仮輪郭位置検出ステップと、前記仮輪郭位置検出ステップで検出した前記仮の輪郭位置の左右方向の外側隣りに位置する画素データと、前記外側隣りに位置する画素の上下に位置する二つの画素データに基づいて、前記仮の輪郭位置を前記外側隣に位置する画素の位置に変更するか否かを決定する決定ステップと、前記決定ステップで前記仮の輪郭位置を変更することを決定した場合に、前記仮の輪郭位置を変更する変更ステップと、前記決定ステップと、前記変更ステップとを繰り返し動作させて、前記決定ステップが前記仮の輪郭位置を変更しないと決定したときの仮の輪郭位置を前記輪郭候補位置とするステップと、を備えることを特徴とする。
また、前記顔端検出方法において、前記輪郭位置補正ステップは、前記輪郭候補位置決定ステップにより決定された前記複数の輪郭候補位置のヒストグラムを作成するヒストグラム作成ステップと、前記ヒストグラム作成ステップで作成したヒストグラムに基づいて、前記輪郭候補位置の標準偏差を算出する標準偏差算出ステップと、前記ヒストグラムの中心に前記標準偏差算出ステップで算出した標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とするステップと、を備えることを特徴とするようにしてもよい。
【００１１】
また、この発明の第７の観点に係るプログラムは、コンピュータに、顔を撮影して得られた顔画像を記憶する顔画像記憶手順と、前記顔画像記憶手順で記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置において顔の上下方向に走査しながら、前記仮の輪郭位置の外側に位置する画素データに基づいて、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定手順と、前記輪郭候補位置決定手順で決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正手順と、を実行させ、前記輪郭位置補正手順は、前記輪郭候補位置決定手順で決定された前記複数の輪郭候補位置に基づいて、前記輪郭候補位置の平均値と標準偏差とを算出する算出手順と、前記算出手順で算出した前記平均値を中心として前記標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とする手順と、を実行させる。
この発明の第８の観点に係るプログラムは、コンピュータに、顔を撮影して得られた顔画像を記憶する顔画像記憶手順と、前記顔画像記憶手順で記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置の外側に位置する画素データに基づいて演算を行い、該演算値と閾値とを比較することによって、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定手順と、前記輪郭候補位置決定手順で決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正手順と、を実行させ、前記輪郭位置補正手順は、前記輪郭候補位置決定手順で決定された前記複数の輪郭候補位置に基づいて、前記輪郭候補位置の平均値と標準偏差とを算出する算出手順と、前記算出手順で算出した前記平均値を中心として前記標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とする手順と、を実行させる。
この発明の第９の観点に係るプログラムは、コンピュータに、顔を撮影して得られた顔画像を記憶する顔画像記憶手順と、前記顔画像記憶手順で記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出し、検出した仮の輪郭位置の外側に位置する画素データに基づいて、前記仮の輪郭位置の外側に存在する輪郭位置の候補となる複数の輪郭候補位置を決定する輪郭候補位置決定手順と、前記輪郭候補位置決定手順で決定された前記複数の輪郭候補位置から統計処理を用いて抽出した位置を輪郭位置とする輪郭位置補正手順と、を実行させ、前記輪郭候補位置決定手順は、前記顔画像記憶手順で記憶された顔画像の画素データを処理して、顔の左右方向の仮の輪郭位置を検出する仮輪郭位置検出手順と、前記仮輪郭位置検出手順で検出した前記仮の輪郭位置の左右方向の外側隣りに位置する画素データと、前記外側隣りに位置する画素の上下に位置する二つの画素データに基づいて、前記仮の輪郭位置を前記外側隣に位置する画素の位置に変更するか否かを決定する決定手順と、前記決定手順で前記仮の輪郭位置を変更することを決定した場合に、前記仮の輪郭位置を変更する変更手順と、前記決定手順と、前記変更手順とを繰り返し動作させて、前記決定手順が前記仮の輪郭位置を変更しないと決定したときの仮の輪郭位置を前記輪郭候補位置とする手順と、を実行させる。
また、前記プログラムにおいて、前記輪郭位置補正手順は、前記輪郭候補位置決定手順で決定された前記複数の輪郭候補位置のヒストグラムを作成するヒストグラム作成手順と、前記ヒストグラム作成手順で作成したヒストグラムに基づいて、前記輪郭候補位置の標準偏差を算出する標準偏差算出手順と、前記ヒストグラムの中心に前記標準偏差算出手順で算出した標準偏差を加減算した領域にある前記輪郭候補位置の内、顔画像の中心から最も遠くに位置する輪郭候補位置を選択し、該選択された輪郭候補位置を前記輪郭位置とする手順と、を実行させるようにしてもよい。
【発明の効果】
【００１２】
この発明によれば、夜間に撮影した顔画像や女性の顔画像といった顔の両端位置を実際よりも内側に誤検出する虞のあった顔画像においても、顔の両端位置をより正確に検出することができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施形態に係る顔端検出装置について説明する。
【００１４】
本実施形態の顔端検出装置は、図１に示すように、ドライバーの顔を撮影して顔画像を生成するカメラ１０と、ドライバーの顔を照明する照明光源１２と、ドライバーの顔の両端位置等を検出するコンピュータ１４と、コンピュータ１４に接続された表示装置１６とを備える。
【００１５】
カメラ１０は例えばＣＣＤカメラ等から構成され、ドライバーの顔の階調画像を取得する。カメラ１０によって生成される顔画像は、ドライバーの顔だけでなく、その背景なども含まれている。
【００１６】
表示装置１６は、ＬＣＤ（Liquid Crystal Display)又はＣＲＴ(Cathode Ray Tube)などから構成され、カメラ１０で撮影された顔画像から生成された二値化画像などを表示する。
【００１７】
コンピュータ１４は、カメラ１０により取得された顔画像を処理して顔の左右の両端位置を検出する装置である。しかし、夜間に撮影された顔画像や女性の顔画像において最初に検出した顔の両端位置は、誤って顔の中央よりに検出されることが多い。そこで、コンピュータ１４は、最初に検出した左右の両端位置に基づいて、誤って検出され得る部分に対して、顔の両端位置を補正してから、最終的な顔の左右の両端位置を求める。また、コンピュータ１４は、図２に示すように、画像キャプチャ装置２１と、画像メモリ２２と、ＲＯＭ２３と、ＣＰＵ２４と、ＲＡＭ２５と、表示制御装置２７と、光源制御装置２８と、を備える。
【００１８】
画像キャプチャ装置２１は、カメラ１０で撮影されたアナログ画像信号をディジタル信号に変換する。
画像メモリ２２は、カメラ１０により生成され、画像キャプチャ装置２１でディジタル化された画像データを記憶する。
【００１９】
ＲＯＭ２３は、ＣＰＵ２４の動作を制御するためのプログラムを記憶する。また、ＲＯＭ２３は、後述する画像処理を実行するための様々な固定データを記憶する。
【００２０】
ＣＰＵ２４は、ＲＯＭ２３に格納されているプログラムを実行することにより、カメラ１０により取得された顔画像を処理して顔の両端位置を検出する。そして、ＣＰＵ２４は、この検出した両端位置に基づいて、その両端位置を補正し、再度、顔の左右の両端位置を求める。
【００２１】
ＲＡＭ２５は、ＣＰＵ２４のワークエリアとして機能する。
表示制御装置２７は、ＣＰＵ２４の制御下に、表示装置１６を制御する。
光源制御装置２８は、照明光源１２の点灯・消灯を制御する。
【００２２】
次に、ＲＯＭ２３に格納される固定データの例を図３を参照して説明する。まず、ＲＯＭ２３は、図３（ａ）、（ｂ）、（ｃ）に示すような、順・逆方向の縦エッジ検出用と横エッジ検出用ソーベルフィルタのオペレータを格納する。図３（ａ）、（ｂ）、（ｃ）に示す、順・逆方向の縦エッジ検出用ソーベルフィルタと横エッジ検出用のソーベルフィルタとは、それぞれ、図３（ｄ）、（ｅ）、（ｆ）に示すような縦方向の濃淡差、横方向の濃淡差を強調するためのオペレータである。
【００２３】
また、ＲＯＭ２３は、顔の両端位置を検出するプログラムや、顔の両端位置を補正するプログラムや、統計処理を行うプログラムといった各種プログラムが格納される。また、図３（ｇ）に示すように、ＲＡＭ２５に格納される顔画像のうち、目や眉の画像が存在すると想定される位置を特定するデータ、及び、顔の両端位置が存在すると想定される位置を特定するデータ等を格納しておいてもよい。具体的には、顔の右端位置の座標値ｉ、顔の左端位置の座標値ｊ、目や眉の上の位置の座標値ｍ、口の下の位置の座標値ｎが格納される。
さらに、ＲＯＭ２３は、図３（ｈ）に示すような、固定値であるパラメータを格納しておく。具体的には、顔の両端位置を横方向に補正する最大移動画素数を５として記憶する。また、縦エッジ検出用のソーベルフィルタを用いて処理した各画素の輝度値から、縦エッジか否かを判別するための縦ソーベル閾値を８として記憶する。さらに、縦方向に並ぶ所定の画素数に対する補正候補の画素数の割合に応じて、補正するか否かを判別するための境界値データ数割合を４０％として記憶する。
【００２４】
次に、上記構成を有する顔端検出装置の動作を説明する。
電源が投入されると、コンピュータ１４内のＣＰＵ２４は、図４に示す処理を繰り返して実行する。
【００２５】
即ち、ＣＰＵ２４は、前処理（ステップＳ０１）と顔位置検出処理（ステップＳ０２）と補正処理（ステップＳ０３）とから構成される処理を繰り返して実行する。
【００２６】
図４に示す処理を構成する前処理（ステップＳ０１）と顔位置検出処理（ステップＳ０２）とは、ドライバーの左右方向及び上下方向の顔の位置（座標値）を求めるための処理である。
【００２７】
補正処理（ステップＳ０３）は、ステップＳ０２で求めたドライバーの左右の顔両端位置を補正して、より正確な左右の顔両端位置を求めるための処理である。
【００２８】
前処理（ステップＳ０１）は、図５に示すように、キャプチャ処理（ステップＳ０１１）と、座標変換処理（ステップＳ０１２）と、ソーベルフィルタ処理（ステップＳ０１３）とから構成される。
【００２９】
キャプチャ処理（ステップＳ０１１）は、カメラ１０の撮影したドライバーの１フレーム分の顔画像を画像キャプチャ装置２１を介して取り込み、画像メモリ２２に格納する処理である。
【００３０】
座標変換処理（ステップＳ０１２）は、処理可能な程度に画素を間引く処理である。
【００３１】
ソーベルフィルタ処理（ステップＳ０１３）は、ＲＯＭ２３に格納されている縦エッジ検出用オペレータ（図３（ａ））を用いて座標変換後の顔画像を処理して、顔画像内の縦エッジを強調する処理を行い、また、横エッジ検出用オペレータ（図３（ｂ））を用いて座標変換後の顔画像を処理して、顔画像内の横エッジを強調する処理を行う処理である。
【００３２】
図４の顔位置検出処理（ステップＳ０２）は、前処理済みの顔画像を用いて顔の左右両端位置と上下位置を検出する処理であり、図６に示すように、顔両端検出処理（ステップＳ０２１）と顔上下位置検出処理（ステップＳ０２２）とから構成される。
【００３３】
顔両端検出処理（ステップＳ０２１）は、顔画像を縦エッジ検出用のオペレータで操作した顔画像について、顔の両端を構成するラインを特定する処理であり、既知の任意の手法を採用することができる。
【００３４】
顔の両端を構成するラインを特定するために、例えば、図７に示すように、顔両端検出用のヒストグラム作成処理を行う（ステップＳ０２１１）。続いて、このヒストグラムのピーク値の高いものを所定数抽出して、これをソートし（ステップＳ０２１２）、ヒストグラム値に基づく、端点の抽出を行う（ステップＳ０２１３）。例えば、ヒストグラム値の上位１又は２つが他と比較して極端に値が大きい場合には、その点を端点とする。
【００３５】
次に、端点が２つ（両端）抽出されたか否かを判別する（ステップＳ０２１４）。２つ抽出されていれば（ステップＳ０２１４；Ｙｅｓ）、処理をステップＳ０２１６に移行する。端点が２つ抽出できていなければ（ステップＳ０２１４；Ｎｏ）、２点の距離が、人の顔幅としてもっともらしい間隔を有する組み合わせを抽出することにより、端点を決定し（ステップＳ０２１５）、最終的に、顔面の両端（ｘ座標値）を決定する処理を行う（ステップＳ０２１６）。
【００３６】
また、特許文献１に開示されているように、撮影画像の時間微分を算出し、さらに、この画素値時間微分画像の画素値を縦方向に投影してヒストグラムを作成し、エッジ部抽出画像のヒストグラムと画素値時間微分画像のヒストグラムとを合計して、ヒストグラムのピーク値の高いものを抽出すると共に人の顔幅としてもっともらしい点を決定し、顔端位置を検出するようにしてもよい。
【００３７】
次に、図６のステップＳ０２２の顔上下位置検出処理は、上述と同様の処理を横エッジについて行って、顔のほぼ眉の位置（上端）と口の位置（下端）を検出する処理であり、例えば、図８に示すように、ヒストグラム作成処理（ステップＳ０２２１）と、目下候補検出処理（ステップＳ０２２２）と、顔上下位置算出処理（ステップＳ０２３３）と、から構成される。
【００３８】
ヒストグラム作成処理（ステップＳ０２２１）は、横エッジ検出用ソーベルフィルタを用いたソーベルフィルタ処理後の各画素の値を横方向に投影してヒストグラムを作成する処理である。
【００３９】
目下候補検出処理（ステップＳ０２２２）は、ヒストグラム値に基づいて、目・眉、口などに対応するヒストグラム値の候補を選択する処理である。
顔上下位置算出処理（ステップＳ０２２３）は、選択した候補から、顔の上下端位置（ｙ座標値）（例えば、目・眉の位置）を検出する処理である。なお、顔上端位置（ｙ座標値）は、例えば、検出した眉から所定の画素数分（例えば、３画素分）上の位置とし、下端位置は検出した口から所定の画素数分（例えば、３画素分）下の位置（口と顎の間）などに設定される。
【００４０】
ＣＰＵ２４は、このようにしてステップＳ０２１とＳ０２２で求めた、顔の両端（左右側端）位置（ｘ座標値）と、顔の上下位置（ｙ座標値）をＲＡＭ２５に記憶する。具体的には、図９に示すように、ステップＳ０２１で求めた顔の右端のｘ座標値を右端初期値ａとし、ステップＳ０２２で求めた顔の左端のｘ座標値を左端初期値ｂとして記憶する。また、ステップＳ０２２で求めた顔の上下位置の上端のｙ座標値を下限値ｃとし、ステップＳ０２２で求めた顔の下端のｙ座標値を上限値ｄとして記憶する。この右端初期値ａ、左端初期値ｂ、下限値ｃ、上限値ｄ、の位置を一例として女性の顔画像に示すと、図９に示す位置になる。
図９は、女性の顔画像に縦エッジ検出用オペレータを用いて処理し、二値化処理した後の図である。図３（ａ）に示した順方向の縦検出用オペレータを用いて処理した場合と、図３（ｂ）に示した逆方向の縦検出用オペレータを用いて処理した場合とで、それぞれ濃い灰色と、薄い灰色とで区別し、重ね合わせた二値化画像である。
【００４１】
次に、図４の補正処理（ステップＳ０３）は、例えば、図１０の補正処理１、図１１の補正処理２にそれぞれ示す構成を有する。補正処理は、夜間に撮影された顔画像や女性の顔画像等において、顔の両端の縦エッジが顔の内側に検出されることが多いため、その縦エッジの位置を補正する処理である。補正処理１は、顔画像の顔の右端位置に係る補正処理であり、補正処理２は、顔画像の顔の左端位置に係る補正処理である。補正処理１、補正処理２は、並列に処理してもよいし、逐次的に補正処理１の終了後に、補正処理２を開始してもよい。
【００４２】
顔の右端位置に係る補正処理１の動作を図１０に示すフローチャートを参照して説明する。まず、ＣＰＵ２４は、顔画像における処理対象の画素のｙ座標値（以後、検索ｙ座標値とよぶ）を０に設定して処理を開始する（ステップＳ０３１）。
【００４３】
続いて、ＣＰＵ２４は、ステップＳ０２１で求めた顔の両端位置（ｘ座標値）の右端初期値ａをＲＡＭ２５から読み出し、顔画像における処理対象の画素のｘ座標値（以後、検索ｘ座標値とよぶ）をａに設定し、検索ｙ座標値をインクリメントして、検索座標値を（ａ、１）とする（ステップＳ０３２）。
【００４４】
さらに、ＣＰＵ２４は、ステップＳ０２で求めた顔の上下位置（ｙ座標値）の下限値ｃをＲＡＭ２５から読み出し、検索ｙ座標値がこの下限値ｃ以上か否かを判別する（ステップＳ０３３）。検索ｙ座標値が下限値ｃ以上でなければ（ステップＳ０３３；Ｎｏ）、ステップＳ０３２に処理を戻し、検索ｙ座標値をインクリメントする。これにより、顔画像中で、図３（ｆ）に示すｙ座標値が下限値ｃ以上、上限値ｄ以下の範囲である縦検索範囲外の画素での無駄な処理を省く。
【００４５】
一方、ＣＰＵ２４は、ステップＳ０３３で、検索ｙ座標値が下限値ｃ以上であると判別した場合（ステップＳ０３３；Ｙｅｓ）、次に、ステップＳ０２で求めた顔の上下位置（ｙ座標値）の上限値ｄをＲＡＭ２５から読み出す。そして、ＣＰＵ２４は、検索ｙ座標値がこの上限値ｄ以上か否かを判別する（ステップＳ０３４）。
【００４６】
ステップＳ０３４で検索ｙ座標値がｄ以上であると判別した場合の処理は、後述する。ステップＳ０３４で検索ｙ座標値がｄ以上でないと判別した場合（ステップＳ０３４；Ｙｅｓ）、ＣＰＵ２４は、検索ｘ座標値が、ＲＡＭ２５から読み出した右端初期値ａから５を減算した値以上か否かを判別する（ステップＳ０３５）。これは、ステップＳ０２１で求めた顔の両端位置の右端初期値ａから補正する範囲（ｘ座標方向）を、５ピクセル分に制限するためである。この制限範囲は、図３（ｈ）に示すように、横検索範囲のパラメータとして予めＲＯＭ２５等に記憶する。なお、この制限範囲は５ピクセル分である必要はなく、任意の値でよい。
【００４７】
ステップＳ０３５で、ＣＰＵ２４は、検索ｘ座標値が右端初期値ａから５を減算した値（ａ−５）以上であると判別した場合（ステップＳ０３５；Ｙｅｓ）、検索座標値を（ｘ，ｙ）としたときの（ｘ−１，ｙ−１）、（ｘ−１，ｙ）、（ｘ−１，ｙ＋１）の座標の画素における縦エッジ検出用オペレータで処理後の輝度値（以後、縦ソーベル値とよぶ）を参照する。この座標の位置関係を図１２（Ａ）に示す。そして、ＣＰＵ２４は、この３つの座標の全ての縦ソーベル値が、図３（ｈ）に示すようなＲＯＭ２３に予め記憶された縦ソーベル閾値である８よりも大きいか否か判別する（ステップＳ０３６）。これは、この３つの座標の画素における縦ソーベル値が縦ソーベル閾値よりも大きければ、現在の検索座標位置よりも、（ｘ−１，ｙ）座標の位置が縦エッジである可能性が高いからである。
【００４８】
ステップＳ０３６で、ＣＰＵ２４は、参照した３つの座標の縦ソーベル値が縦ソーベル閾値より大きいと判別した場合（ステップＳ０３６；Ｙｅｓ）、検索ｘ座標値をｘ−１にし（ステップＳ０３７）、ステップＳ０３５の処理に戻る。
【００４９】
以上のステップＳ０３５、ステップＳ０３６、ステップＳ０３７の処理を繰り返すことで、ＣＰＵ２４は、顔の両端位置（ｘ座標値）を補正するべきか否か判別しながら、顔の外側に向かって画像を走査している。
顔の両端位置（ｘ座標値）を補正すべきか否かの判断基準は、（ｘ−１，ｙ−１）、（ｘ−１，ｙ）、（ｘ−１，ｙ＋１）の３つの座標に位置する画素の縦ソーベル値に基づく必要はなく、任意である。
【００５０】
一方、ステップＳ０３５で、ＣＰＵ２４は、検索ｘ座標値が右端初期値ａから５を減算した値（ａ−５）以上であると判別した場合（ステップＳ０３５；Ｎｏ）、現在の検索ｘ座標値を顔の右端位置（ｘ座標値）の境界値データ（右端候補値）として、ＲＡＭ２５に記憶する（ステップＳ０３８）。ここで境界値データ（右端候補値）とは、顔の右端位置の候補となる座標値のことであり、これら境界値データ（右端候補値）の中から、最終的に顔の右端位置を決定する。
【００５１】
また、ステップＳ０３６で、参照した３つの座標の縦ソーベル値が縦ソーベル閾値より大きくないと判別した場合にも（ステップＳ０３６；Ｎｏ）、現在の検索ｘ座標値を顔の右端位置（ｘ座標値）の境界値データ（右端候補値）として、ＲＡＭ２５に記憶する（ステップＳ０３８）。ステップＳ０３８での検索ｘ座標値は、例えば図１３（Ａ）に示すような境界値記録配列Ａ（以後、配列Ａとよぶ）に記憶する。配列を検索ｙ座標毎に用意し、検索ｘ座標値を境界値データ（右端候補値）として記憶する。
【００５２】
ＣＰＵ２４は、ステップＳ０３８でＲＡＭ２５に記憶した境界値データ（右端候補値）が、ステップＳ０２１で検出した顔の両端位置（ｘ座標値）の右端初期値ａであるか否かを判別する（ステップＳ０３９）。ここで、ＣＰＵ２４は、境界値データ（右端候補値）が、右端初期値ａであると判別した場合（ステップＳ０３９；Ｙｅｓ）、顔の両端位置（ｘ座標値）の右端初期値ａは変更しなかったので、そのまま、処理をステップＳ０３２に移行させる。
【００５３】
一方、ステップＳ０３９で、ＣＰＵ２４は、境界値データ（右端候補値）が、右端初期値ａではないと判別した場合（ステップＳ０３９；Ｎｏ）、ステップＳ０２１で検出した顔の両端位置（ｘ座標値）の右端初期値ａから変更した境界値データ（右端候補値）の総数をカウントするための境界値データ数Ｎをインクリメントする（ステップＳ０３１０）。
【００５４】
ＣＰＵ２４は、以上のステップＳ０３２〜ステップＳ０３１０までの処理を繰り返し、検索ｙ座標値が下限値ｃ以上ｄ以下の範囲で、顔の右端位置（ｘ座標値）の境界値データ（右端候補値）をＲＡＭ２５に記憶していく。
【００５５】
そして、ＣＰＵ２４は、ステップＳ０３４で検索ｙ座標値がｄ以上であると判別した時点で（ステップＳ０３４；Ｙｅｓ）、処理を、図１４のフローチャートで説明する処理に移行させる。
【００５６】
図１４のフローチャートで説明する処理は、以上までの処理でＲＡＭ２５に記憶してきた顔の右端位置（ｘ座標値）の境界値データ（右端候補値）に基づいて、統計処理を行い、顔の右端位置を決定する処理である。
【００５７】
図１０のステップＳ０３１０で加算してきた境界値データ数Ｎが少ない場合、その少ないデータに基づいて統計処理を行っても、その処理結果の信頼性は低い。そこで、ＣＰＵ２４は、まず、図３（ｈ）に示すようなＲＯＭ２３に予め記憶しておいた境界値データ数割合（例えば、４０％）を読み出す。ＣＰＵ２４は、その境界値データ数割合に、顔画像におけるｙ座標値がｃ以上ｄ以下の範囲にある画素数（ｄ−ｃ＋１）を乗算する。続いて、ＣＰＵ２４は、境界値データ数Ｎが、その乗算した結果の値以上であるか否かを判別する（ステップＳ０５１）。そこで、ＣＰＵ２４は、境界値データ数Ｎが、乗算した結果の値以上ではないと判別した場合は（ステップＳ０５１；Ｎｏ）、ＣＰＵ２４は、顔の両端位置（ｘ座標値）の右端初期値ａを変更せずに（ステップＳ０５７）、補正処理１を終了する。
【００５８】
一方、ＣＰＵ２４は、境界値データ数Ｎが、乗算した結果の値以上であると判別した場合（ステップＳ０５１；Ｙｅｓ）、統計処理を行う。具体的には、ＣＰＵ２４は、ＲＡＭ２５に記憶してきた全ての境界値データ（右端候補値）のヒストグラムを作成し、その平均値及び標準偏差を求め（ステップＳ０５２）、この両値をＲＡＭ２５に記憶する。
【００５９】
続いて、ＣＰＵ２４は、以降の処理で、ＲＡＭ２５に記憶された境界値データ（右端候補値）の平均値及び標準偏差を参照して、図９に示す最終的な顔の右端位置（ｘ座標値）αを決定するための最小境界値（最小の境界値データ（右端候補値））を求める。
この最小境界値を求める処理の終了条件は、整数値である境界値カウンタがＲＡＭ２５に記憶された境界値データ数Ｎと等しくなったことを条件とする。
そこで、まず、ＣＰＵ２４は、この境界値カウンタの初期値を０として、この境界値カウンタが境界値データ数Ｎより小さいか否かを判別する（ステップＳ０５３）。
【００６０】
ＣＰＵ２４は、境界値カウンタが境界値データ数Ｎより小さいと判別した場合（ステップＳ０５３；Ｙｅｓ）、図１３（Ａ）に示すような、境界値カウンタと一致する引数をもつ配列Ａの境界値データ（右端候補値）をＲＡＭ２５から読み出す。ＣＰＵ２４は、読み出した境界値データ（右端候補値）が、ｉ）標準偏差以内であり、かつ、ｉｉ）最小境界値（初期値は右端初期値ａとする）より小さいか否かを判別する（ステップＳ０５４）。
【００６１】
ＣＰＵ２４は、ステップＳ０５４で、ｉ）、ｉｉ）の条件を共に満たしていると判別した場合（ステップＳ０５４；Ｙｅｓ）、その配列Ａの境界値データ（右端候補値）を最小境界値とし、その値をＲＡＭ２５に更新して記憶する（ステップＳ０５５）。これにより、ＣＰＵ２４は、境界値データ（右端候補値）の中から、標準偏差を超えるようなはずれ値を除外し、その時点までの最小境界値より小さい値の境界値データ（右端候補値）を選択して、新たな最小境界値とする。
【００６２】
一方、ＣＰＵ２４は、ステップＳ０５４で、ｉ）、ｉｉ）の条件のいずれか、或いは、共に満たしていないと判別した場合（ステップＳ０５４；Ｎｏ）、ＲＡＭ２５に記憶された最小境界値を更新せずに、次の処理に移行させる。
【００６３】
続いて、ＣＰＵ２４は、境界値カウンタをインクリメントさせ（ステップＳ０５６）、処理を、ステップＳ０５３の処理に戻す。
【００６４】
以上のステップＳ０５３〜ステップＳ０５６の処理を、ＣＰＵ２４は、境界値カウンタがＲＡＭ２５に記憶された境界値データ数Ｎと等しくなるまで繰り返す。これにより、ＣＰＵ２４は、ＲＡＭ２５に記憶された顔の右端位置（ｘ座標値）の全ての境界値データ（右端候補値）の中から、最小の最小境界値を抽出する。
【００６５】
ＣＰＵ２４は、ステップＳ０５３で、境界値カウンタが境界値データ数Ｎと等しいと判別した場合（ステップＳ０５３；Ｎｏ）、最小境界値を求める処理を終了し、ＲＡＭ２５に記憶された最小境界値を参照する。そして、ＣＰＵ２４は、この最小境界値を、顔の右端位置（ｘ座標値）αとして、ＲＡＭ２５に記憶し（ステップＳ０５８）、補正処理１を終了する。この顔の右端位置（ｘ座標値）αを、一例として図９の顔画像に示す。
【００６６】
以上の処理により、顔の右端位置に係る補正を行い、夜間に撮影された顔画像や女性の顔画像等においても、より正確な顔の右端位置を検出することができる。
【００６７】
次に、顔の左端位置に係る補正処理２の動作を図１１に示すフローチャートを参照して説明する。まず、ＣＰＵ２４は、検索ｙ座標値を０に設定して処理を開始する（ステップＳ０４１）。
【００６８】
続いて、ＣＰＵ２４は、ステップＳ０２で求めた顔の両端位置（ｘ座標値）の左端初期値ｂをＲＡＭ２５から読み出し、顔画像における検索ｘ座標値をｂに設定し、検索ｙ座標値をインクリメントして、検索座標値を（ｂ、１）とする（ステップＳ０４２）。
【００６９】
さらに、ＣＰＵ２４は、ステップＳ０２で求めた顔の上下位置（ｙ座標値）の下限値ｃをＲＡＭ２５から読み出し、検索ｙ座標値がこの下限値ｃ以上か否かを判別する（ステップＳ０４３）。検索ｙ座標値が下限値ｃ以上でなければ（ステップＳ０４３；Ｎｏ）、ステップＳ０４２に処理を戻し、検索ｙ座標値をインクリメントする。これにより、顔画像中で、図３（ｆ）に示すｙ座標値が下限値ｃ以上、上限値ｄ以下の範囲である縦検索範囲外の画素での無駄な処理を省く。
【００７０】
一方、ＣＰＵ２４は、ステップＳ０４３で、検索ｙ座標値が下限値ｃ以上であると判別した場合（ステップＳ０４３；Ｙｅｓ）、次に、ステップＳ０２で求めた顔の上下位置（ｙ座標値）の上限値ｄをＲＡＭ２５から読み出す。そして、ＣＰＵ２４は、検索ｙ座標値がこの上限値ｄ以上か否かを判別する（ステップＳ０４４）。
【００７１】
ステップＳ０４４で検索ｙ座標値がｄ以上であると判別した場合（ステップＳ０４４；Ｙｅｓ）の処理は、後述する。ステップＳ０４４で検索ｙ座標値がｄ以上でないと判別した場合（ステップＳ０４４；Ｎｏ）、ＣＰＵ２４は、検索ｘ座標値が、ＲＡＭ２５から読み出した左端初期値ｂに５を加算した値以下か否かを判別する（ステップＳ０４５）。これは、ステップＳ０２１で求めた顔の両端位置の左端初期値ｂから補正する範囲（ｘ座標方向）を、５ピクセル分に制限するためである。この制限範囲は、図３（ｈ）に示すように、横検索範囲のパラメータとして予めＲＯＭ２５等に記憶する。なお、この制限範囲は５ピクセル分である必要はなく、任意の値でよい。
【００７２】
ステップＳ０４５で、ＣＰＵ２４は、検索ｘ座標値が左端初期値ｂに５を加算した値（ｂ＋５）以下であると判別した場合（ステップＳ０４５；Ｙｅｓ）、検索座標値が（ｘ，ｙ）としたときの（ｘ＋１，ｙ−１）、（ｘ＋１，ｙ）、（ｘ＋１，ｙ＋１）の座標の画素における縦ソーベル値を参照する。この座標の位置関係を図１２（Ｂ）に示す。そして、ＣＰＵ２４は、この３つの座標の全ての縦ソーベル値が、図３（ｈ）に示すようなＲＯＭ２３に予め記憶された縦ソーベル閾値である８よりも大きいか否か判別する（ステップＳ０４６）。これは、この３つの座標の画素における縦ソーベル値が縦ソーベル閾値よりも大きければ、現在の検索座標位置よりも、（ｘ＋１，ｙ）座標の位置の方が縦エッジである可能性が高いからである。
【００７３】
ステップＳ０４６で、ＣＰＵ２４は、参照した３つの座標の縦ソーベル値が縦ソーベル閾値より大きいと判別した場合（ステップＳ０４６；Ｙｅｓ）、検索ｘ座標値をｘ＋１にし（ステップＳ０４７）、ステップＳ０４５の処理に戻る。
【００７４】
以上のステップＳ０４５、ステップＳ０４６、ステップＳ０４７の処理を繰り返すことで、ＣＰＵ２４は、顔の両端位置（ｘ座標値）を補正するべきか否か判別しながら、顔の外側に向かって画像を走査している。
顔の両端位置（ｘ座標値）を補正すべきか否かの判別は、（ｘ＋１，ｙ−１）、（ｘ＋１，ｙ）、（ｘ＋１，ｙ＋１）の３つの座標に位置する画素の縦ソーベル値に基づく必要はなく、任意である。
【００７５】
一方、ステップＳ０４５で、ＣＰＵ２４は、検索ｘ座標値が左端初期値ｂに５を加算した値（ｂ＋５）より大きいと判別した場合（ステップＳ０４５；Ｎｏ）、現在の検索ｘ座標値を顔の左端位置（ｘ座標値）の境界値データ（左端候補値）として、ＲＡＭ２５に記憶する（ステップＳ０４８）。ここで境界値データ（左端候補値）とは、顔の左端位置の候補となる座標値のことであり、これら境界値データ（左端候補値）の中から、最終的に顔の左端位置を決定する。
【００７６】
また、ステップＳ０４６で、参照した３つの座標の縦ソーベル値が縦ソーベル閾値より大きくないと判別した場合にも（ステップＳ０４６；Ｎｏ）、現在の検索ｘ座標値を顔の左端位置（ｘ座標値）の境界値データ（左端候補値）として、ＲＡＭ２５に記憶する（ステップＳ０４８）。ステップＳ０４８での検索ｘ座標値は、例えば図１３（Ｂ）に示すような境界値記録配列Ｂ（以後、配列Ｂとよぶ）に記憶する。配列を検索ｙ座標毎に用意し、検索ｘ座標値を境界値データ（左端候補値）として記憶する。
【００７７】
ＣＰＵ２４は、ステップＳ０４８でＲＡＭ２５に記憶した境界値データ（左端候補値）が、ステップＳ０２１で検出した顔の両端位置（ｘ座標値）の左端初期値ｂであるか否かを判別する（ステップＳ０４９）。ここで、ＣＰＵ２４は、境界値データ（左端候補値）が、左端初期値ｂであると判別した場合（ステップＳ０４９；Ｙｅｓ）、顔の両端位置（ｘ座標値）の左端初期値ｂは変更しなかったので、そのまま、処理をステップＳ０４２に移行させる。
【００７８】
一方、ステップＳ０４９で、ＣＰＵ２４は、左端候補値が、左端初期値ｂではないと判別した場合（ステップＳ０４９；Ｎｏ）、ステップＳ０２１で検出した顔の両端位置（ｘ座標値）の左端初期値ｂから変更した境界値データ（左端候補値）の総数をカウントするための境界値データ数Ｍをインクリメントする（ステップＳ０４１０）。
【００７９】
ＣＰＵ２４は、以上のステップＳ０４２〜ステップＳ０４１０までの処理を繰り返し、検索ｙ座標値が下限値ｃ以上、上限値ｄ以下の範囲で、顔の左端位置（ｘ座標値）の境界値データ（左端候補値）をＲＡＭ２５に記憶していく。
【００８０】
そして、ＣＰＵ２４は、ステップＳ０４４で検索ｙ座標値がｄ以上であると判別した時点で（ステップＳ０４４；Ｙｅｓ）、処理を、図１４のフローチャートで説明する処理に移行させる。
【００８１】
図１４のフローチャートで説明する処理は、以上までの処理でＲＡＭ２５に記憶してきた顔の左端端位置（ｘ座標値）の境界値データ（左端候補値）に基づいて、統計処理を行い、顔の左端位置を決定する処理である。
【００８２】
図１１のステップＳ０４１０で加算してきた境界値データ数Ｍが少ない場合、その少ないデータに基づいて統計処理を行っても、その処理結果の信頼性は低い。そこで、ＣＰＵ２４は、まず、図３（ｈ）に示すようなＲＯＭ２３に予め記憶しておいた境界値データ数割合（例えば、４０％）を読み出す。ＣＰＵ２４は、その境界値データ数割合に、顔画像におけるｙ座標値がｃ以上ｄ以下の範囲にある画素数（ｄ−ｃ＋１）を乗算する。続いて、ＣＰＵ２４は、境界値データ数Ｍが、その乗算した結果の値以上であるか否かを判別する（ステップＳ０５１）。そこで、ＣＰＵ２４は、境界値データ数Ｍが、乗算した結果の値以上ではないと判別した場合は（ステップＳ０５１；Ｎｏ）、ＣＰＵ２４は、顔の両端位置（ｘ座標値）の左端初期値ｂを変更せずに（ステップＳ０５７）、補正処理２を終了する。
【００８３】
一方、ＣＰＵ２４は、境界値データ数Ｍが、乗算した結果の値以上であると判別した場合（ステップＳ０５１；Ｙｅｓ）、統計処理を行う。具体的には、ＣＰＵ２４は、ＲＡＭ２５に記憶してきた全ての境界値データ（左端候補値）のヒストグラムを作成し、その平均値及び標準偏差を求め（ステップＳ０５２）、この両値をＲＡＭ２５に記憶する。
【００８４】
続いて、ＣＰＵ２４は、以降の処理で、ＲＡＭ２５に記憶された境界値データ（左端候補値）の平均値及び標準偏差を参照して、図９に示す最終的な顔の左端位置（ｘ座標値）βを決定するための最大境界値（最大の境界値データ（左端候補値）を求める。
この最大境界値を求める処理の終了条件は、整数値である境界値カウンタがＲＡＭ２５に記憶された境界値データ数Ｍと等しくなったことを条件とする。
そこで、まず、ＣＰＵ２４は、この境界値カウンタの初期値を０として、この境界値カウンタが境界値データ数Ｍより小さいか否かを判別する（ステップＳ０５３）。
【００８５】
ＣＰＵ２４は、境界値カウンタが境界値データ数Ｍより小さいと判別した場合（ステップＳ０５３；Ｙｅｓ）、図１３（Ｂ）に示すような、境界値カウンタと一致する引数をもつ配列Ｂの境界値データ（左端候補値）をＲＡＭ２５から読み出す。ＣＰＵ２４は、読み出した境界値データ（左端候補値）が、ｉ）標準偏差以内であり、かつ、ｉｉ）最大境界値（初期値は左端初期値ｂとする）より大きいか否かを判別する（ステップＳ０５４）。
【００８６】
ＣＰＵ２４は、ステップＳ０５４で、ｉ）、ｉｉ）の条件を共に満たしていると判別した場合（ステップＳ０５４；Ｙｅｓ）、その配列Ｂの境界値データ（左端候補値）を最大境界値とし、その値をＲＡＭ２５に更新して記憶する（ステップＳ０５５）。これにより、ＣＰＵ２４は、境界値データ（左端候補値）の中から、標準偏差を超えるようなはずれ値を除外し、その時点までの最大境界値より大きい値の境界値データ（左端候補値）を選択して、新たな最大境界値とする。
【００８７】
一方、ＣＰＵ２４は、ステップＳ０５４で、ｉ）、ｉｉ）の条件のいずれか、或いは、共に満たしていないと判別した場合（ステップＳ０５４；Ｎｏ）、ＲＡＭ２５に記憶された最大境界値を更新せずに、次の処理に移行させる。
【００８８】
続いて、ＣＰＵ２４は、境界値カウンタをインクリメントさせ（ステップＳ０５６）、処理を、ステップＳ０５３の処理に戻す。
【００８９】
以上のステップＳ０５３〜ステップＳ０５６の処理を、ＣＰＵ２４は、境界値カウンタがＲＡＭ２５に記憶された境界値データ数Ｍと等しくなるまで繰り返す。これにより、ＣＰＵ２４は、ＲＡＭ２５に記憶された顔の左端位置（ｘ座標値）の全ての境界値データ（上点候補値）の中から、最大の最大境界値を抽出する。
【００９０】
ＣＰＵ２４は、ステップＳ０５３で、境界値カウンタが境界値データ数Ｍと等しいと判別した場合（ステップＳ０５３；Ｎｏ）、最大境界値を求める処理を終了し、ＲＡＭ２５に記憶された最大境界値を参照する。そして、ＣＰＵ２４は、この最大境界値を、顔の左端位置（ｘ座標値）βとして、ＲＡＭ２５に記憶し（ステップＳ０５８）、補正処理２を終了する。この顔の左端位置（ｘ座標値）βを、一例として図９の顔画像に示す。
【００９１】
以上の処理により、顔の左端位置に係る補正を行い、夜間及び女性の顔画像においても、より正確な顔の左端位置を検出することができる。
【００９２】
図４に戻って、補正処理ステップＳ０３を終了した後、ＣＰＵ２４は、図４の処理を繰り返し実行し、ドライバーの顔の両端位置（ｘ座標値）を求め続ける。また、求めた顔の両端位置（ｘ座標値）は、ＲＡＭ２５に記憶され、その後、所望の処理に利用することができる。
以上の処理により、本実施形態に係る顔端検出装置は、夜間に撮影された顔画像や女性の顔画像等においても、顔の両端位置をより正確に検出することができる。
【００９３】
なお、この発明は上記実施形態に限定されず、種々の変形及び応用が可能である。
【００９４】
例えば、上記実施形態では、顔画像の横エッジ、縦エッジを検出するために、ソーベルフィルタを適用したが、これに限定されず、例えば、プレウィットフィルタや、ロバーツフィルタを適用して、横エッジ、縦エッジを検出してもよい。
【００９５】
また、上記実施形態では、眉（又は目）と、口の階調画像から顔の上下位置（下限値ｃ、上限値ｄ）を求めたが、上下位置の判別に使用する顔の部分（パーツ）は任意である。例えば、耳や、ほお、頭髪などを加えて、顔の上下位置を求めても良い。
【００９６】
また、顔の上下位置（ｙ座標値）を求めるために、眉（又は目）と、口の階調画像を利用せずに、予めＲＯＭ等に記憶しておいた目や眉の画像が存在すると想定される顔の上下位置（ｙ座標値）を特定するデータを利用してもよい。
【００９７】
図１、図２を参照して説明したシステム構成も一例であり、任意に変更可能である。例えば、カメラ１０を近赤外線等で画像をとらえる赤外線カメラを使用すれば、人種や肌や髪の色に影響されず比較的正確に顔の各パーツの画像を取得することが可能となる。
【００９８】
また、上述のフローチャートも同様の機能が実現できるならば、任意に変更可能である。
例えば、境界値データ数割合を５０％へ変更したり、縦ソーベル閾値を１０へ変更してもよい。
【００９９】
上記各実施形態においては、ドライバーを撮影して顔の両端位置を検出する場合にこの発明を適用したが、この発明はこれに限定されず、任意の場面で人間、動物、人形、ロボット等の輪郭を検出する処理に広く適用可能である。
【０１００】
また、上記実施形態では、統計処理に平均値や標準偏差を用いていたが、この発明はこれに限定されず、顔の両端位置の補正に用いるデータとして信頼できるデータを選択できるのであれば、任意の方法でよい。
【０１０１】
本発明は、カメラで画像を取得しながら処理する場合に限定されず、例えば、他所で撮影した１又は複数の顔画像のそれぞれについて、顔の両端位置などを判別する為に使用可能である。
【０１０２】
また、コンピュータに上述の処理を実行させるためのコンピュータプログラムを、任意の記録媒体やネットワークを介してＲＯＭに格納するようにしてもよい。
【図面の簡単な説明】
【０１０３】
【図１】本発明の実施形態に係る顔端検出装置のブロック図である。
【図２】図１に示すコンピュータの構成を示すブロック図である。
【図３】ＲＯＭに格納されている各種データを説明するための図である。
【図４】図１に示す顔端検出装置の動作を説明するためのフローチャートである。
【図５】図４の前処理の具体例を説明するためのフローチャートである。
【図６】図４の顔位置検出処理の具体例を説明するためのフローチャートである。
【図７】図６の顔両端検出処理の具体例を説明するためのフローチャートである。
【図８】図６の顔上下位置検出処理の具体例を説明するためのフローチャートである。
【図９】女性の顔画像を縦エッジ検出用ソーベルフィルタでフィルタリングし、二値化処理した画像である。
【図１０】図４の補正処理１の具体例を説明するためのフローチャートである。
【図１１】図４の補正処理２の具体例を説明するためのフローチャートである。
【図１２】検索座標の画素と、顔の外側に向かって画像を走査するか否かを判別するために参照する座標の画素と、の位置関係を示す図である。
【図１３】境界値記録配列Ａ、境界値記録配列Ｂに、それぞれ格納される境界値データの一例を示す図である。
【図１４】図１０、図１１の補正処理１、２に続く処理の具体例を説明するためのフローチャートである。
【符号の説明】
【０１０４】
１０  カメラ
２２  画像メモリ  （顔画像記憶手段）
２３  ＲＯＭ  （輪郭候補位置決定手段、輪郭位置補正手段）
２４  ＣＰＵ  （輪郭候補位置決定手段、輪郭位置補正手段）
【図１】
0004664805.tif 000002
【図２】
0004664805.tif 000003
【図３】
0004664805.tif 000004
【図４】
0004664805.tif 000005
【図５】
0004664805.tif 000006
【図６】
0004664805.tif 000007
【図７】
0004664805.tif 000008
【図８】
0004664805.tif 000009
【図９】
0004664805.tif 000010
【図１０】
0004664805.tif 000011
【図１１】
0004664805.tif 000012
【図１２】
0004664805.tif 000013
【図１３】
0004664805.tif 000014
【図１４】
0004664805.tif 000015