(57)【要約】【課題】顔画像の目などの局所的に暗い構造を、エッジとして的確に検出することができる方法を提供すること。【解決手段】画像処理方法において、複数の画素からなる画像を取得し、取得した画像に基づき局所的に周辺より画素値がへこんでいる凹構造のエッジを検出し、検出した凹構造のエッジに基づきエッジ画像を生成する。【選択図】図２
2009258771.tif 000002
【特許請求の範囲】
【請求項１】
画像処理方法であって、
複数の画素からなる画像を取得し、
前記取得した画像に基づき、局所的に周辺より画素値がへこんでいる凹構造のエッジを検出し、
前記検出した凹構造のエッジに基づきエッジ画像を生成することを特徴とする画像処理方法。
【請求項２】
請求項１に記載の画像処理方法において、
前記取得した画像に対して、前記凹構造のエッジを検出する非線形フィルタを演算することにより前記エッジ画像を生成することを特徴とする画像処理方法。
【請求項３】
請求項２に記載の画像処理方法において、
前記非線形フィルタは、対象領域における画素値と前記対象領域の周辺領域における画素値の最小値との差異に基づいて演算結果を出力することを特徴とする画像処理方法。
【請求項４】
請求項３に記載の画像処理方法において、
前記非線形フィルタは、前記対象領域における画素値の最小値と前記周辺領域における画素値の最小値との差異に基づいて演算結果を出力することを特徴とする画像処理方法。
【請求項５】
請求項４に記載の画像処理方法において、
対象領域における画素値の最小値が前記対象領域の周辺領域における画素値の最小値より小さいとき、その差分に応じた値をそのエッジ画素の値とし、対象領域における画素値の最小値が前記対象領域の周辺領域における画素値の最小値より大きいとき、エッジ画素の値をゼロにクリッピング処理することを特徴とする画像処理方法。
【請求項６】
画像処理方法であって、
複数の画素からなる画像を取得し、
前記取得した画像に基づき、局所的に周辺より画素値が出っ張っている凸構造のエッジを検出し、
前記検出した凸構造のエッジに基づきエッジ画像を生成することを特徴とする画像処理方法。
【請求項７】
請求項６に記載の画像処理方法において、
前記取得した画像に対して、前記凸構造のエッジを検出する非線形フィルタを演算することにより前記エッジ画像を生成することを特徴とする画像処理方法。
【請求項８】
請求項７に記載の画像処理方法において、
前記非線形フィルタは、対象領域における画素値と前記対象領域の周辺領域における画素値の最大値との差異に基づいて演算結果を出力することを特徴とする画像処理方法。
【請求項９】
請求項８に記載の画像処理方法において、
前記非線形フィルタは、前記対象領域における画素値の最大値と前記周辺領域における画素値の最大値との差異に基づいて演算結果を出力することを特徴とする画像処理方法。
【請求項１０】
請求項８に記載の画像処理方法において、
対象領域における画素値の最大値が前記対象領域の周辺領域における画素値の最大値より大きいとき、その差分に応じた値をそのエッジ画素の値とし、対象領域における画素値の最大値が前記対象領域の周辺領域における画素値の最大値より小さいとき、エッジ画素の値をゼロにクリッピング処理することを特徴とする画像処理方法。
【請求項１１】
請求項１から１０のいずれかに記載の画像処理方法において、
前記取得した画像に基づき、輝度成分による輝度画像を生成し、
前記生成した輝度画像を使用して、前記エッジ画像を生成することを特徴とする画像処理方法。
【請求項１２】
請求項３から５、８から１０のいずれかに記載の画像処理方法において、
前記対象領域は対象画素のみの１画素あるいは対象画素とその隣接画素の２画素の領域であり、前記周辺領域は前記対象領域の外側両サイドに位置する２画素の領域であることを特徴とする画像処理方法。
【請求項１３】
請求項２から５、７から１０のいずれかに記載の画像処理方法おいて、
前記非線形フィルタを、少なくとも２通りの方向に演算することを特徴とする画像処理方法。
【請求項１４】
画像処理方法であって、
複数の画素からなる画像を取得し、
前記取得した画像に基づき、局所的に周辺より画素値がへこんでいる凹構造のエッジと出っ張っている凸構造のエッジとを検出し、
前記検出した凹構造のエッジに基づき凹構造のエッジ画像を生成し、
前記検出した凸構造のエッジに基づき凸構造のエッジ画像を生成することを特徴とする画像処理方法。
【請求項１５】
画像処理方法であって、
複数の画素からなる画像を取得し、
前記取得した画像に基づき、局所的に周辺より画素値がへこんでいる凹構造のエッジと出っ張っている凸構造のエッジとを検出し、
前記検出した凹構造のエッジと凸構造のエッジとに基づき、凹構造のエッジと凸構造のエッジの両方を含むエッジ画像を生成することを特徴とする画像処理方法。
【請求項１６】
画像処理方法であって、
複数の画素からなる画像を取得し、
前記取得した画像のエッジ成分を検出し、
前記検出したエッジ成分に対してガンマ変換を施し、
前記ガンマ変換されたエッジ成分によるエッジ画像を生成することを特徴とする画像処理方法。
【請求項１７】
請求項１〜１６のいずれかに記載の画像処理方法おいて、
前記生成したエッジ画像を使用して顔の画像を検出することを特徴とする画像処理方法。
【請求項１８】
請求項１から１７のいずれかに記載の画像処理方法をコンピュータに実行させる画像処理プログラム。
【請求項１９】
請求項１８に記載の画像処理プログラムを搭載する画像処理装置。
【請求項２０】
請求項１８に記載の画像処理プログラムを搭載する撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、取得した画像においてエッジ検出を行う画像処理方法、画像処理装置、画像処理プログラム、撮像装置に関する。
【背景技術】
【０００２】
デジタル画像処理において、撮影された画像の中から顔画像を検出する処理の需要は高い。例えば、デジタルカメラにおいて、検出された顔領域を好ましい色や階調に変換する処理や、ビデオ画像において、特定の人物の登場場面を抽出する処理や、監視カメラにおいて、不審者の画像を抽出する処理などがある。また、撮影された顔画像に基づいて個人を識別したり、性別や年齢や表情を推定することなども行われている。
【０００３】
以上のような用途で使われる顔画像判定処理において、従来、入力画像の高周波成分を抽出してエッジ画像を作成し、そのエッジ画像に対してニューラルネットワークなどの学習判別処理を施す方法が提案されている。エッジ画像を生成することにより、撮影時の照明条件の影響などの、顔画像判定処理に必要の無い画像情報を除去することができ、判定処理を効率よく施すことができる。エッジ成分を抽出する方法としては、例えば、様々な方向と周波数を持つガボールフィルタを用いることにより、入力画像のエッジ構造の方向と周波数の情報を抽出する方法などが提案されている。
【０００４】
【特許文献１】特開２００４−１９９３８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、ガボールフィルタなどの従来のエッジ抽出方法では、エッジ構造の情報を充分に抽出できるとはいえない。例えば、顔画像の目、鼻、口などの位置は周辺に比べて局所的に暗い。従って、顔画像を識別する場合、目、鼻、口に対応する位置に局所的に暗い構造があるかを知ることが重要である。また、歯を見せて笑っている顔の画像では、歯の位置が周辺に比べて局所的に明るい。従って、笑顔を識別する場合、口の位置に局所的に明るい構造があるかを知ることが重要である。
【０００６】
しかし、従来のエッジ抽出方法では、エッジ構造が局所的に暗い構造であるか、局所的に明るい構造であるか、あるいはそれ以外の構造であるかを識別することはできないという問題があった。
【課題を解決するための手段】
【０００７】
請求項１の発明は、画像処理方法に適用され、複数の画素からなる画像を取得し、取得した画像に基づき、局所的に周辺より画素値がへこんでいる凹構造のエッジを検出し、検出した凹構造のエッジに基づきエッジ画像を生成することを特徴とするものである。
請求項２の発明は、請求項１に記載の画像処理方法において、取得した画像に対して、凹構造のエッジを検出する非線形フィルタを演算することによりエッジ画像を生成することを特徴とするものである。
請求項３の発明は、請求項２に記載の画像処理方法において、非線形フィルタは、対象領域における画素値と対象領域の周辺領域における画素値の最小値との差異に基づいて演算結果を出力することを特徴とするものである。
請求項４の発明は、請求項３に記載の画像処理方法において、非線形フィルタは、対象領域における画素値の最小値と周辺領域における画素値の最小値との差異に基づいて演算結果を出力することを特徴とするものである。
請求項５の発明は、請求項４に記載の画像処理方法において、対象領域における画素値の最小値が対象領域の周辺領域における画素値の最小値より小さいとき、その差分に応じた値をそのエッジ画素の値とし、対象領域における画素値の最小値が対象領域の周辺領域における画素値の最小値より大きいとき、エッジ画素の値をゼロにクリッピング処理することを特徴とするものである。
請求項６の発明は、画像処理方法に適用され、複数の画素からなる画像を取得し、取得した画像に基づき、局所的に周辺より画素値が出っ張っている凸構造のエッジを検出し、検出した凸構造のエッジに基づきエッジ画像を生成することを特徴とするものである。
請求項７の発明は、請求項６に記載の画像処理方法において、取得した画像に対して、凸構造のエッジを検出する非線形フィルタを演算することによりエッジ画像を生成することを特徴とするものである。
請求項８の発明は、請求項７に記載の画像処理方法において、非線形フィルタは、対象領域における画素値と対象領域の周辺領域における画素値の最大値との差異に基づいて演算結果を出力することを特徴とするものである。
請求項９の発明は、請求項８に記載の画像処理方法において、非線形フィルタは、対象領域における画素値の最大値と周辺領域における画素値の最大値との差異に基づいて演算結果を出力することを特徴とするものである。
請求項１０の発明は、請求項８に記載の画像処理方法において、対象領域における画素値の最大値が対象領域の周辺領域における画素値の最大値より大きいとき、その差分に応じた値をそのエッジ画素の値とし、対象領域における画素値の最大値が対象領域の周辺領域における画素値の最大値より小さいとき、エッジ画素の値をゼロにクリッピング処理することを特徴とするものである。
請求項１１の発明は、請求項１から１０のいずれかに記載の画像処理方法において、取得した画像に基づき、輝度成分による輝度画像を生成し、生成した輝度画像を使用して、エッジ画像を生成することを特徴とするものである。
請求項１２の発明は、請求項３から５、８から１０のいずれかに記載の画像処理方法において、対象領域は対象画素のみの１画素あるいは対象画素とその隣接画素の２画素の領域であり、周辺領域は対象領域の外側両サイドに位置する２画素の領域であることを特徴とするものである。
請求項１３の発明は、請求項２から５、７から１０のいずれかに記載の画像処理方法おいて、非線形フィルタを、少なくとも２通りの方向に演算することを特徴とするものである。
請求項１４の発明は、画像処理方法に適用され、複数の画素からなる画像を取得し、取得した画像に基づき、局所的に周辺より画素値がへこんでいる凹構造のエッジと出っ張っている凸構造のエッジとを検出し、検出した凹構造のエッジに基づき凹構造のエッジ画像を生成し、検出した凸構造のエッジに基づき凸構造のエッジ画像を生成することを特徴とするものである。
請求項１５の発明は、画像処理方法に適用され、複数の画素からなる画像を取得し、取得した画像に基づき、局所的に周辺より画素値がへこんでいる凹構造のエッジと出っ張っている凸構造のエッジとを検出し、検出した凹構造のエッジと凸構造のエッジとに基づき、凹構造のエッジと凸構造のエッジの両方を含むエッジ画像を生成することを特徴とするものである。
請求項１６の発明は、画像処理方法に適用され、複数の画素からなる画像を取得し、取得した画像のエッジ成分を検出し、検出したエッジ成分に対してガンマ変換を施し、ガンマ変換されたエッジ成分によるエッジ画像を生成することを特徴とするものである。
請求項１７の発明は、請求項１〜１６のいずれかに記載の画像処理方法おいて、生成したエッジ画像を使用して顔の画像を検出することを特徴とするものである。
請求項１８の発明は、画像処理プログラムに適用され、請求項１から１７のいずれかに記載の画像処理方法をコンピュータに実行させる画像処理プログラムとするものである。
請求項１９の発明は、画像処理装置に適用され、請求項１８に記載の画像処理プログラムを搭載する画像処理装置とするものである。
請求項２０の発明は、撮像装置に適用され、請求項１８に記載の画像処理プログラムを搭載する撮像装置とするものである。
【発明の効果】
【０００８】
本発明は以上のように構成しているので、エッジを的確に検出することができる。例えば、請求項１では凹構造のエッジを検出しているので、顔画像の目などの局所的に暗い構造を、エッジとして的確に検出することができる。
【発明を実施するための最良の形態】
【０００９】
−第１の実施の形態−
図１は、本発明の一実施の形態である画像処理装置を示す図である。画像処理装置は、パーソナルコンピュータ１で実現される。パーソナルコンピュータ１は、デジタルカメラ２、ＣＤ−ＲＯＭなどの記録媒体３、他のコンピュータ４などと接続され、各種の画像（画像データ）の提供を受ける。パーソナルコンピュータ１は、提供された画像に対して、以下に説明する画像処理を行う。コンピュータ４は、インターネットやその他の電気通信回線５を経由して接続される。
【００１０】
パーソナルコンピュータ１が画像処理のために実行するプログラムは、図１の構成と同様に、ＣＤ−ＲＯＭなどの記録媒体や、インターネットやその他の電気通信回線を経由した他のコンピュータから提供され、パーソナルコンピュータ１内にインストールされる。パーソナルコンピュータ１は、ＣＰＵ（不図示）およびその周辺回路（不図示）から構成され、ＣＰＵがインストールされたプログラムを実行する。
【００１１】
本実施の形態のパーソナルコンピュータ１は、撮影された画像の中から顔画像を検出する画像処理を行う。具体的には、入力した画像に基づきエッジ成分を抽出してエッジ画像を生成し、生成したエッジ画像に基づき顔の画像があるかどうかを判定する。本実施の形態における処理では、このエッジ成分の抽出方法およびエッジ画像に基づく顔の判定方法に特徴を有する。
【００１２】
なお、以下では、画像に対して画像処理を行うという表現をするが、実際には入力した画像データに対して画像処理を行うことを意味する。また、本実施の形態で言うエッジとは、輝度値や画素値が周囲より小さくへこんでいる箇所（領域、画素）、周囲より大きく出っ張っている（突出している）箇所（領域、画素）、段差になっている箇所（領域、画素）のことを言う。特に、周囲よりへこんでいる箇所（領域、画素）を凹構造のエッジ、周囲より出っ張っている箇所（領域、画素）を凸構造のエッジと言う。
【００１３】
以下、本実施の形態のパーソナルコンピュータ１が撮影された画像の中から顔画像を検出する画像処理について詳細に説明する。図２は、パーソナルコンピュータ１が実行する画像処理プログラムのフローチャートを示す図である。
【００１４】
ステップＳ１では、デジタルカメラなどで撮影（撮像）した顔を検出する対象の画像（画像データ）を入力（取得）する。入力画像の各画素はＲ，Ｇ，Ｂの各色成分を含み、各色成分の範囲は０〜２５５とする。ステップＳ２では、入力画像のＲ，Ｇ，Ｂに基づき、輝度画像Ｙを次の式で生成する。すなわち、輝度画像Y面を生成する。
Ｙ＝（Ｒ＋２Ｇ＋Ｂ）/４  
【００１５】
ステップＳ３では、生成した輝度画像を階層的に縮小して出力する。例えば、０〜３１までの整数ｎに対して縮小倍率κを0.9n で与え、その32通りの縮小倍率κで縮小された輝度画像を出力する。なお、縮小方法は、例えばＣｕｂｉｃ変倍や線形変倍を用いればよい。このように複数通りの縮小画像を生成するのは、入力した画像にはどのようなサイズの顔画像があるかどうか不明であり、あらゆるサイズの顔の画像に対応できるようにするためである。
【００１６】
ステップＳ４では、縮小されたそれぞれの輝度画像Ｙ（ｘ,ｙ）から４種類のエッジ画像Ｅ１（ｘ,ｙ）〜Ｅ４（ｘ,ｙ）を以下の手順で生成する。以下では、ｘ方向を画像の横方向あるいは水平方向、ｙ方向を縦方向あるいは鉛直方向とする。
【００１７】
まず、以下の式より、縦方向に平滑化した画像ＹＬＶ（ｘ,ｙ）と横方向に平滑化した画像ＹＬＨ（ｘ,ｙ）を生成する。縦方向のエッジ成分を抽出するためには、横方向を平滑化した画像データを使用し、横方向のエッジ成分を抽出するためには、縦方向を平滑化した画像データを使用するのが好ましいからである。
ＹＬＶ（ｘ,ｙ）＝｛Ｙ（ｘ,ｙ−１）＋２×Ｙ（ｘ,ｙ）＋Ｙ（ｘ,ｙ＋１）｝/４
ＹＬＨ（ｘ,ｙ）＝｛Ｙ（ｘ−１,ｙ）＋２×Ｙ（ｘ,ｙ）＋Ｙ（ｘ＋１,ｙ）｝/４
【００１８】
次に、横方向を平滑化した画像ＹＬＨ（ｘ,ｙ）を使用して、以下の式より、縦方向のエッジ画像Ｅ１（ｘ,ｙ）を生成する。なお、エッジ画像の各画素はエッジ画素と言う。
Ｅ１´（ｘ,ｙ）＝Ｍｉｎ（ＹＬＨ（ｘ,ｙ−１）, ＹＬＨ（ｘ,ｙ＋２））
−Ｍｉｎ（ＹＬＨ（ｘ,ｙ）, ＹＬＨ（ｘ,ｙ＋１））
Ｅ１（ｘ,ｙ）＝γ（Ｅ１´（ｘ,ｙ））
【００１９】
次に、以下の式より、縦方向のエッジ画像Ｅ２（ｘ,ｙ）を生成する。
Ｅ２´（ｘ,ｙ）＝｜ＹＬＨ（ｘ,ｙ−１）−ＹＬＨ（ｘ,ｙ）｜
＋｜ＹＬＨ（ｘ,ｙ＋１）−ＹＬＨ（ｘ,ｙ）｜
Ｅ２（ｘ,ｙ）＝γ（Ｅ２´（ｘ,ｙ））
【００２０】
次に、縦方向を平滑化した画像ＹＬＶ（ｘ,ｙ）を使用して、以下の式より、横方向のエッジ画像Ｅ３（ｘ,ｙ）を生成する。
Ｅ３´（ｘ,ｙ）＝Ｍｉｎ（ＹＬＶ（ｘ−１,ｙ）, ＹＬＶ（ｘ＋２,ｙ））
−Ｍｉｎ（ＹＬＶ（ｘ,ｙ）, ＹＬＶ（ｘ＋１,ｙ））
Ｅ３（ｘ,ｙ）＝γ（Ｅ３´（ｘ,ｙ））
【００２１】
次に、以下の式より、横方向のエッジ画像Ｅ４（ｘ,ｙ）を生成する。
Ｅ４´（ｘ,ｙ）＝｜ＹＬＶ（ｘ−１,ｙ）−ＹＬＶ（ｘ,ｙ）｜
＋｜ＹＬＶ（ｘ＋１,ｙ）−ＹＬＶ（ｘ,ｙ）｜
Ｅ４（ｘ,ｙ）＝γ（Ｅ４´（ｘ,ｙ））
【００２２】
ここで、Ｍｉｎ（）は、（）の中の最小の値を戻す関数である。また、γ（Ｅ）は、γ変換とクリッピングを行う関数であり、以下の演算を行い、０〜３１の整数を出力する。このＭＩＮ（）処理は、非線形フィルタ処理である。また、γ変換やクリッピング処理を含めて非線形フィルタ処理と言ってもよい。
Ｅ＜０の場合  γ（Ｅ）＝０
Ｅ＞６３の場合  γ（Ｅ）＝３１
０≦Ｅ≦６３の場合  γ（Ｅ）＝（int）（４×√Ｅ）
【００２３】
上記エッジ画像の生成について、図３を参照してさらに詳しく説明する。図３は、エッジ抽出対象画素と周辺画素とを座標ｘｙで表した図である。上記Ｅ１´（ｘ,ｙ）は、輝度画像ＹＬＨ（ｘ,ｙ）面において、縦方向４画素ＹＬＨ（ｘ,ｙ−１）、ＹＬＨ（ｘ,ｙ）、ＹＬＨ（ｘ,ｙ＋１）、ＹＬＨ（ｘ,ｙ＋２）のうち、対象画素（ｘ，ｙ）を基準に、外側２画素ＹＬＨ（ｘ,ｙ−１）、ＹＬＨ（ｘ,ｙ＋２）の最小値と内側２画素ＹＬＨ（ｘ,ｙ）、ＹＬＨ（ｘ,ｙ＋１）の最小値の差を求めている。
【００２４】
Ｅ１´（ｘ,ｙ）の値が正の値を示すことは、対象画素（ｘ，ｙ）近辺の値が、縦方向周辺画素の値より小さい、すなわち画素値が縦方向の周辺よりへこんでいることを示す。従って、このようにして生成したＥ１（ｘ,ｙ）の値を画素値として取り扱い、生成された画像を縦方向輝度凹部画像と言う。
【００２５】
上記Ｅ２´（ｘ,ｙ）は、輝度画像ＹＬＨ（ｘ,ｙ）面において、対象画素（ｘ，ｙ）と縦方向に隣接する画素との輝度値の差分を足し込んだ値を示す。すなわち、縦方向隣接画素との間で輝度値の変化が大きい場合に大きな値が生成される。従って、このようにして生成したＥ２（ｘ,ｙ）の値を画素値として取り扱い、生成された画像を縦方向隣接画素差分画像と言う。縦方向隣接画素差分画像は、凹部構造のエッジ、凸部構造のエッジ、段差のエッジを区別なく検出する。
【００２６】
上記Ｅ３´（ｘ,ｙ）およびＥ３（ｘ,ｙ）、Ｅ４´（ｘ,ｙ）およびＥ４（ｘ,ｙ）は、横方向のエッジ画像を生成するためのものである。上記Ｅ１´（ｘ,ｙ）およびＥ１（ｘ,ｙ）、Ｅ２´（ｘ,ｙ）およびＥ２（ｘ,ｙ）に対して、縦と横をひっくり返して考え、後は同様に演算するものである。従って、このようにして生成されたＥ３（ｘ,ｙ）を横方向輝度凹部画像、Ｅ４（ｘ,ｙ）を横方向隣接画素差分画像と言う。
【００２７】
図４は、輝度の様々な構造に対して輝度凹部画像Ｅ１（ｘ,ｙ）を作成した結果を示す図である。図４（ａ）は輝度が凹んでいる場合であり、図４（ｂ）は輝度が突出している場合であり、図４（ｃ）は輝度が段差になっている場合である。図４を見ると、輝度が凹んでいる場合のみ輝度凹部画像が正の値を持つことがわかる。従って、輝度凹部画像E´の負の値を０にクリッピングすれば、輝度の凹みだけに反応するエッジ画像Ｅ１（ｘ,ｙ）が生成される。
【００２８】
この輝度凹部画像によると、目鼻口などの局所的に暗い箇所に特に良く反応する。図５は、具体的な顔の輝度画像について上記４種類のエッジ画像Ｅ１（ｘ,ｙ）〜Ｅ４（ｘ,ｙ）を生成した例を示す図である。実際、輝度凹部画像は、目鼻口の位置に鋭いピークを持つ。特に、図５の縦方向輝度凹部画像Ｅ１では、目、鼻の穴、口などに反応し、その中でも目、鼻の穴などには強く反応し白くなっている。すなわち、その位置のＥ１の値が大きな値となっている。従って、このような輝度凹部画像を解析することにより、顔を高精度に検出することができる。ただし、輝度凹部画像だけを用いるのではなく、従来の方法で作成したエッジ画像も合わせて用いることが望ましい。
【００２９】
なお、上記エッジ画像Ｅ´をガンマ変換した理由は、エッジ量Ｅ´を適切な特徴量Eに変換するためである。画像解析において、ほとんどエッジがない箇所での微妙なエッジ量の違いは、大きなエッジがある箇所での多少のエッジ量の違いよりも大きな意味を持つ。エッジ量Ｅ´に対してガンマ変換を施すことにより上記の効果が実現され、ほとんどエッジがない箇所でのエッジ量の違いは特徴量Eの大きな違いに変換され、大きなエッジがある箇所でのエッジ量の違いは特徴量Eの小さな違いに変換される。
【００３０】
次に、図２に戻って、ステップＳ５では、縮小した画像の１画素おきに１９×１９画素の顔判定対象領域を設定し、その領域におけるエッジ画像の部分画像を出力する。これをすべての縮小画像において行う。１９×１９画素の顔判定対象領域は、その領域が顔である場合に目や鼻や口などが２画素程度で検出できるのに適したサイズである。
【００３１】
ステップＳ６では、ステップ５で出力したエッジ画像の各部分画像に対して、この領域が顔の画像であるかどうか判定する。本実施の形態では、この顔の画像の判定を以下に説明する手法により行う。
【００３２】
まず、エッジ画像Ｅ１（ｘ,ｙ）の部分画像の各画素位置（ｘ,ｙ）（０≦ｘ≦１８、０≦ｙ≦１８）について、次の式に基づいてその位置の顔らしさＶ１（ｘ,ｙ）を生成する。顔らしさＶ１（ｘ,ｙ）は、各画素位置で顔らしさを数値化したもので、顔らしさの度合いや程度を示すものである。Ｖ１（ｘ,ｙ）は、顔として尤もらしい度合いを表す尤度といってもよい。
Ｖ１（ｘ,ｙ）＝Ｌ１（ｘ,ｙ）（Ｅ１（ｘ,ｙ））
ここで、Ｌ１（ｘ,ｙ）（Ｅ）は、各画素位置（ｘ,ｙ）（０≦ｘ≦１８、０≦ｙ≦１８）について、後述する統計処理によりあらかじめ作成されているルックアップテーブルであり、画素位置（ｘ,ｙ）のエッジＥ１（ｘ,ｙ）がＥである時のその箇所の顔らしさを表す。
【００３３】
そして、生成した顔らしさＶ１（ｘ,ｙ）を全画素（ｘ,ｙ）（０≦ｘ≦１８、０≦ｙ≦１８）について積算し、顔らしさＶＳＵＭ１を算出する。
【００３４】
図６は、具体的なエッジ画像について上記の処理を行った例を示す図である。図６の顔らしさ画像では、顔らしい箇所が白く表示され、顔らしくない箇所が黒く表示されている。図６（ａ）に示す顔のエッジ画像から生成した顔らしさ画像は、全体的に大きな値を持つ。すなわち、全体的に白っぽい画像となる。しかし、図６（ｂ）に示す非顔のエッジ画像から生成した顔らしさ画像は所々小さな値を持つ。すなわち、所々黒っぽくなった画像となる。
【００３５】
図６（ｂ）の非顔の例では、目の間、鼻、口の両横に対応する領域が顔らしくないとされて、顔らしさ画像ではその領域の画素値は小さな値となり黒い画像となっている。従って、非顔画像の顔らしさ画像を全画素積算した値ＶＳＵＭ１は小さな値になる。
【００３６】
図７は、ルックアップテーブルＬ１（ｘ,ｙ）（Ｅ）の具体的な値をエッジの大きさ毎に表した図である。図７では、顔らしさの値が大きいほど白く表示されている。図７において、左側はエッジが小さい時の顔らしさであり、右側はエッジが大きい時の顔らしさである。なお、ルックアップテーブルＬ１（ｘ,ｙ）（Ｅ）の全ての値を図示するなら、前述の通りエッジは０〜３１の値で生成されているので、Ｌ１（ｘ,ｙ）（０）〜Ｌ１（ｘ,ｙ）（３１）の３２通りの図ができる。しかし、図７では、図示の便宜上そのうちの８通りのみ表示している。
【００３７】
なお、図７のルックアップテーブルＬ１（ｘ,ｙ）（Ｅ）は、具体的な値をエッジの大きさ毎に視覚的に表した図である。実際には、画素位置（ｘ，ｙ）を引数とした画素値のテーブルが、エッジの値毎にメモリに格納されている。すなわち、３２個の画素位置（ｘ，ｙ）を引数とした画素値のテーブルがメモリに格納されている。
【００３８】
図７において、左側の図はエッジが小さい時の顔らしさを表す。左側の図を見ると、目、鼻、口の箇所の顔らしさが小さな値になっている。これは、目、鼻、口の箇所のエッジが小さい場合には、その箇所は顔らしくないということを表している。例えば、図６（ａ）の非顔の例では、鼻に対応する箇所のエッジが小さいので、その箇所は顔らしくないとされる。
【００３９】
また、図７の右側の図はエッジが大きい時の顔らしさを表す。右側の図を見ると、目、鼻、口以外の箇所の顔らしさが小さな値になっている。これは、目、鼻、口以外の箇所のエッジが大きい場合には、その箇所は顔らしくないということを表している。例えば、図６（ａ）の非顔の例では、目の間と口の両横に対応する箇所のエッジが大きいので、その箇所は顔らしくないとされる。
【００４０】
すなわち、顔の画像を特定種類の画像とし、目、鼻、口などを特定種類の画像の特徴的な要素であると考えると、特定種類の画像の特徴的な要素に対応する画素位置では、その画素のエッジ成分が大きい場合の特定種類の画像らしさの度合いを、エッジ成分が小さい場合の特定種類の画像らしさの度合いに比べて大きな値としている。また、特定種類の画像の特徴的な要素以外に対応する画素位置では、その画素のエッジ成分が大きい場合の特定種類の画像らしさの度合いを、エッジ成分が小さい場合の特定種類の画像らしさの度合いに比べて小さな値としている。
【００４１】
上記ルックアップテーブルを参照する処理を整理すると、まず、エッジ画像Ｅ１（ｘ,ｙ）の部分画像において、ｘ＝０、ｙ＝０のエッジＥ１の値を得る。次に、このエッジＥ１の値に相当するルックアップテーブルＬ１（ｘ,ｙ）（Ｅ１）を３２個のルックアップテーブルの中から決める。ルックアップテーブルＬ１（ｘ,ｙ）（Ｅ１）が決まると、このルックアップテーブルＬ１（ｘ,ｙ）（Ｅ１）の画素位置（０，０）の値を得る。これが、エッジ画像Ｅ１（ｘ,ｙ）の画素位置（０，０）の顔らしさの値である。この処理を、ｘ＝０、ｙ＝０の画素からｘ＝１８、ｙ＝１８の画素まで順次行い、顔らしさ画像Ｖ１（ｘ,ｙ）を得る。そして、Ｖ１（ｘ,ｙ）をすべて積算してＶsum１を得る。
【００４２】
以上の処理により、エッジ画像Ｅ１（ｘ,ｙ）に基づいて部分画像の顔らしさＶsum１が生成される。そして、エッジ画像Ｅ２（ｘ,ｙ）〜Ｅ４（ｘ,ｙ）に基づいて部分画像の顔らしさＶsum２〜Ｖsum４を生成する処理も同様に行う。
【００４３】
図８は、図２のステップＳ６の顔判定の処理において、部分画像の顔らしさＶsum１〜Ｖsum４を求めた後の処理のフローチャートを示す図である。ステップＳ６の顔判定処理では、上記に説明したように、顔らしさＶsum１〜Ｖsum４を段階的に生成し、それらを積算した評価値が閾値よりも大きければ顔とする。ただし、評価値を閾値と比較する処理を図８に示すように各段階において行うことにより、明らかに顔ではない画像を早い段階で除外して、効率的な処理を行えるようにしている。
【００４４】
まず、ステップＳ１１では、部分画像が顔の画像であるかどうかを判定する評価値を、エッジ画像Ｅ１（ｘ,ｙ）の顔らしさＶsum１とする。ステップＳ１２では、評価値が所定の閾値th1より大きいかどうかを判定し、この評価値が閾値th1より大きければステップＳ１３に進み、この評価値が閾値th1より大きくなければ、部分画像は顔の画像でないとして、対象の部分画像の顔判定の処理を終了する。
【００４５】
ステップＳ１３では、評価値をステップＳ１１の評価値にエッジ画像Ｅ２（ｘ,ｙ）の顔らしさＶsum２を足した値とする。ステップＳ１４では、この評価値が所定の閾値th2より大きいかどうかを判定し、評価値が閾値th2より大きければステップＳ１５に進み、この評価値が閾値th2より大きくなければ、部分画像は顔の画像でないとして、対象の部分画像の顔判定の処理を終了する。
【００４６】
ステップＳ１５では、評価値をステップＳ１３の評価値にエッジ画像Ｅ３（ｘ,ｙ）の顔らしさＶsum３を足した値とする。ステップＳ１６では、この評価値が所定の閾値th3より大きいかどうかを判定し、評価値が閾値th3より大きければステップＳ１７に進み、この評価値が閾値th3より大きくなければ、部分画像は顔の画像でないとして、対象の部分画像の顔判定の処理を終了する。
【００４７】
ステップＳ１７では、評価値をステップＳ１５の評価値にエッジ画像Ｅ４（ｘ,ｙ）の顔らしさＶsum４を足した値とする。ステップＳ１８では、この評価値が所定の閾値th4より大きいかどうかを判定する。ステップＳ１８において、評価値が閾値th4より大きければ、最終的にこの部分画像は顔の画像であると判定する。この評価値が閾値th4より大きくなければ、部分画像は顔の画像でないとして、対象の部分画像の顔判定の処理を終了する。
【００４８】
以上説明した部分画像の顔判定処理を、各縮小画像において、1ビットずつずらした各部分画像についてすべて行い、顔の画像と判定できる部分画像をすべて抽出し、ステップＳ７に進む。
【００４９】
ステップＳ７では、ステップ６によりある部分画像が顔であると判定された場合には、その部分画像の入力画像に対する顔の大きさＳと座標（Ｘ，Ｙ）を出力する。Ｓ，Ｘ，Ｙは、縮小画像における顔のサイズＳ´＝19と、顔とされた領域の座標（Ｘ´，Ｙ´）と縮小倍率κとを用いて、次の式で与えられる。
Ｓ  ＝  Ｓ´  /  κ
Ｘ  ＝  Ｘ´  /  κ
Ｙ  ＝  Ｙ´  /  κ
【００５０】
以上のようにして、入力画像に顔の画像がある場合は、その顔の画像の位置と大きさが検出されて出力される。
【００５１】
＜統計処理＞
次に、前述した統計処理について説明する。すなわち、画素位置（ｘ,ｙ）のエッジＥ１（ｘ,ｙ）がＥであるときのその画素の顔らしさＬ１（ｘ,ｙ）（Ｅ）を求める方法を説明する。図９は、この顔らしさＬ１（ｘ,ｙ）（Ｅ）を求める処理のフローチャートを示す図である。この処理は、パーソナルコンピュータ１において実行される。
【００５２】
ステップＳ２１では、数百人以上の顔の画像を取得する。すなわち、数百人以上の顔をデジタルカメラ等で撮影（撮像）し、その画像（画像データ）を取得する。取得する画像は、図２のステップＳ１で入力する画像と同様な色成分で構成された画像である。ステップＳ２２では、顔が撮影されている画像を、顔領域の大きさが１９×１９画素になるように変倍して、顔領域を切り出した部分画像を顔画像サンプル群とする。
【００５３】
ステップＳ２３では、１９×１９画素の非顔画像サンプル群を、数百パターン以上取得する。これは、デジタルカメラで撮影した顔以外の画像から適宜抽出して非顔画像サンプル群とする。顔が写っている画像から、顔の領域を避けて抽出するようにしてもよい。この場合は、モニタに写された画像から、ユーザが適宜非顔画像の領域を指定すればよい。
【００５４】
ステップＳ２４では、顔画像サンプル群からエッジ成分を抽出して、顔エッジ画像サンプル群を生成する。この処理は、顔検出処理においてエッジ画像Ｅ１（ｘ,ｙ）を生成する処理と同様に行う。ステップＳ２５では、非顔画像サンプル群からエッジ成分を抽出して、非顔エッジ画像サンプル群を生成する。この処理も、顔検出処理においてエッジ画像Ｅ１（ｘ,ｙ）を生成する処理と同様に行う。
【００５５】
ステップＳ２６では、顔エッジ画像サンプル群について、（ｘ,ｙ）のエッジがＥとなる頻度Ｐ顔（ｘ,ｙ,Ｅ）を求める。すなわち、画素（ｘ，ｙ）の値がＥとなる画像がいくつあるかをカウントする。ステップＳ２７では、非顔エッジ画像サンプル群について、同様に、（ｘ,ｙ）のエッジがＥとなる頻度Ｐ非顔（ｘ,ｙ,Ｅ）を求める。
【００５６】
ステップＳ２８では、画素位置（ｘ,ｙ）のエッジＥ１（ｘ,ｙ）がＥであるときのその画素の顔らしさＬ１（ｘ,ｙ）（Ｅ）を、次の式によって算出する。
Ｌ１（ｘ,ｙ）（Ｅ）＝ｌｏｇ｛（Ｐ顔（ｘ,ｙ,Ｅ）＋ε１）/（Ｐ非顔（ｘ,ｙ,Ｅ）＋ε２）｝
ここで、ε１とε２は所定の定数であり、対数の発散や過学習を抑制するために導入している。ε１の値はＰ顔（ｘ,ｙ,Ｅ）の平均的な値の１０００分の１程度に設定すればよく、ε２の値はε１の値の数十倍に設定すればよい。
【００５７】
上記Ｌ１（ｘ,ｙ）（Ｅ）を求める式において、ｌｏｇ｛（Ｐ顔（ｘ,ｙ,Ｅ）＋ε１）｝は、単調増加関数であり、ｌｏｇ｛１/（Ｐ非顔（ｘ,ｙ,Ｅ）＋ε２）｝は、単調減少関数である。すなわち、顔らしさＬ１（ｘ,ｙ）（Ｅ）は、画素位置（ｘ,ｙ）のエッジＥ１（ｘ,ｙ）がＥである顔画像サンプルの分布が増加していく方向にその値は単調増加し、画素位置（ｘ,ｙ）のエッジＥ１（ｘ,ｙ）がＥである非顔画像サンプルの分布が増加していく方向にその値は単調減少していく関数である。なお、画素位置（ｘ,ｙ）のエッジＥ１（ｘ,ｙ）がＥである顔画像サンプルの分布、および、画素位置（ｘ,ｙ）のエッジＥ１（ｘ,ｙ）がＥである非顔画像サンプルの分布は、通常正規分布している。
【００５８】
エッジ画像Ｅ２（ｘ,ｙ）〜Ｅ４（ｘ,ｙ）を顔らしさに変換するルックアップテーブルＬ２（ｘ,ｙ）（Ｅ）〜Ｌ４（ｘ,ｙ）（Ｅ）を生成するには、上記ステップＳ２４、ステップＳ２５のエッジ成分抽出処理を、顔検出処理におけるエッジ画像Ｅ２（ｘ,ｙ）〜Ｅ４（ｘ,ｙ）を生成する処理と同様にすればよい。
【００５９】
以上説明した第1の実施の形態の処理を行うと、次のような効果を奏する。
（１）顔画像の目、鼻、口などの位置は周辺に比べて局所的に暗い。従来のエッジ抽出方法では、エッジ構造が局所的に暗い構造であるか、局所的に明るい構造であるか、あるいはそれ以外の構造であるかを識別することはできなかった。しかし、上記のように凹部構造のエッジを検出し、エッジ画像である凹部画像を生成することにより顔画像の局所的に暗い構造である目、鼻、口などを適切に抽出することができる。その結果、顔の画像を正確に判定することができる。
【００６０】
（２）輝度凹部画像によると、目鼻口などの局所的に暗い箇所に特に良く反応する。実際、輝度凹部画像は、目鼻口の位置に鋭いピークを持つ。従って、このような輝度凹部画像を解析することにより、顔を高精度に検出することができる。本実施の形態では、輝度凹部画像だけを用いるのではなく、従来の方法で作成したエッジ画像も合わせて用いるようにしているので、さらにより精度の高い顔の判定を可能としている。
【００６１】
（３）上記エッジＥ´エッジをガンマ変換した理由は、エッジ量Ｅ´を適切な特徴量Eに変換するためである。画像解析において、ほとんどエッジがない箇所での微妙なエッジ量の違いは、大きなエッジがある箇所での多少のエッジ量の違いよりも大きな意味を持つ。エッジ量Ｅ´に対してガンマ変換を施すことにより、ほとんどエッジがない箇所でのエッジ量の違いは特徴量Eの大きな違いに変換され、大きなエッジがある箇所でのエッジ量の違いは特徴量Eの小さな違いに変換される。これにより、エッジ量の違いが画像の構造の違いに一致するようになる。この結果、顔判定の精度も高くなる。
【００６２】
（４）上記実施の形態の図４から明らかなように、輝度が凹んでいる場合のみ輝度凹部画像が正の値を持つことがわかる。従って、本実施の形態では、輝度凹部画像E´の負の値を０にクリッピングするようにした。これにより、輝度の凹みだけに反応するエッジ画像Ｅ１（ｘ,ｙ）が生成され、エッジ画像Ｅ１を使用する処理がしやすくなる。
【００６３】
（５）エッジ画像の画素値をルックアップテーブルを用いて顔らしさに変換して積算するという単純で高速な処理により、顔の画像を検出することができる。また、エッジ画像を判定することにより、画像を撮影する際の照明条件の影響を抑制する効果がある。
【００６４】
−第２の実施の形態−
第１の実施の形態では、輝度凹部画像を生成し、顔の目鼻口などの局所的に暗い箇所を適切に判断する例を説明した。しかし、歯を見せて笑っている口や、光が当たって光っている頬や鼻では、輝度が周囲に比べて局所的に明るくなっている。第２の実施の形態では、このような顔の局所的に明るい箇所も適切に検出することにより、顔の画像を第１の実施の形態よりより一層正確に検出する例を説明する。
【００６５】
第２の実施の形態は、第１の実施の形態と同様に、パーソナルコンピュータ１で実現される。従って、第２の実施の形態の画像処理装置の構成は、第１の実施の形態の図１を参照することとする。また、パーソナルコンピュータ１が実行する画像処理プログラムは、第１の実施の形態の図２のフローチャートと処理の流れとしては同様であるので、図２を参照しながら以下説明をする。
【００６６】
ステップＳ１からステップＳ３までは、第１の実施の形態と同様であるので説明を省略する。
【００６７】
ステップＳ４では、縮小されたそれぞれの輝度画像Ｙ（ｘ,ｙ）から６種類のエッジ画像Ｅ１（ｘ,ｙ）〜Ｅ６（ｘ,ｙ）を生成する。縦方向に平滑化した画像ＹＬＶ（ｘ,ｙ）と横方向に平滑化した画像ＹＬＨ（ｘ,ｙ）の生成、および、エッジ画像Ｅ１（ｘ,ｙ）〜Ｅ４（ｘ,ｙ）の生成は第１の実施の形態と同様であるのでその説明を省略し、以下、エッジ画像Ｅ５（ｘ,ｙ）とＥ６（ｘ,ｙ）の生成について説明をする。
【００６８】
まず、横方向を平滑化した画像ＹＬＨ（ｘ,ｙ）を使用して、以下の式より、縦方向のエッジ画像Ｅ５（ｘ,ｙ）を生成する。
Ｅ５´（ｘ,ｙ）＝Ｍａｘ（ＹＬＨ（ｘ,ｙ−１）, ＹＬＨ（ｘ,ｙ＋２））
−Ｍａｘ（ＹＬＨ（ｘ,ｙ）, ＹＬＨ（ｘ,ｙ＋１））
Ｅ５（ｘ,ｙ）＝γ（Ｅ５´（ｘ,ｙ））
【００６９】
次に、縦方向を平滑化した画像ＹＬＶ（ｘ,ｙ）を使用して、以下の式より、横方向のエッジ画像Ｅ６（ｘ,ｙ）を生成する。
Ｅ６´（ｘ,ｙ）＝Ｍａｘ（ＹＬＶ（ｘ−１,ｙ）, ＹＬＶ（ｘ＋２,ｙ））
−Ｍａｘ（ＹＬＶ（ｘ,ｙ）, ＹＬＶ（ｘ＋１,ｙ））
Ｅ６（ｘ,ｙ）＝γ（  Ｅ６´（ｘ,ｙ）  ）
【００７０】
ここで、Ｍａｘ（）は、（）の中の最大値を戻す関数である。また、γ（Ｅ）は、第１の実施の形態と同様の関数である。また、クリッピング処理も第1の実施の形態と同様に行う。なお、以上で生成したＥ５（ｘ,ｙ）を縦方向輝度凸部画像、Ｅ６（ｘ,ｙ）を横方向輝度凸部画像と言う。
【００７１】
上記エッジ画像Ｅ５（ｘ,ｙ）とＥ６（ｘ,ｙ）の生成について、第１の実施の形態の図３を参照して説明する。上記Ｅ５´（ｘ,ｙ）は、輝度画像ＹＬＨ（ｘ,ｙ）面において、縦方向４画素ＹＬＨ（ｘ,ｙ−１）、ＹＬＨ（ｘ,ｙ）、ＹＬＨ（ｘ,ｙ＋１）、ＹＬＨ（ｘ,ｙ＋２）のうち、対象画素（ｘ，ｙ）を基準に、外側２画素ＹＬＨ（ｘ,ｙ−１）、ＹＬＨ（ｘ,ｙ＋２）の最大値と内側２画素ＹＬＨ（ｘ,ｙ）、ＹＬＨ（ｘ,ｙ＋１）の最大値の差を求めている。
【００７２】
Ｅ５´（ｘ,ｙ）の値が正の値を示すことは、対象画素（ｘ，ｙ）近辺の値が、縦方向周辺画素の値より大きい、すなわち画素値が縦方向の周辺よりでっぱっていることを示す。従って、このようにして生成したＥ５（ｘ,ｙ）を縦方向輝度凸部画像と言う。
【００７３】
上記Ｅ６´（ｘ,ｙ）およびＥ６（ｘ,ｙ）は、横方向のエッジ画像を生成するためのものである。上記Ｅ５´（ｘ,ｙ）およびＥ５（ｘ,ｙ）に対して、縦と横をひっくり返して考え、後は同様に演算するものである。従って、このようにして生成されたＥ６（ｘ,ｙ）を横方向輝度凸部画像と言う。
【００７４】
ステップＳ５では、縮小した画像の１画素おきに１９×１９画素の顔判定対象領域を設定し、その領域におけるエッジ画像Ｅ１（ｘ,ｙ）〜Ｅ６（ｘ,ｙ）の部分画像を出力する。これをすべての縮小画像において行う。
【００７５】
ステップＳ６では、ステップ５で出力したエッジ画像の各部分画像に対して、この領域が顔の画像であるかどうか第１の実施の形態と同様に判定する。エッジ画像Ｅ５（ｘ,ｙ）〜Ｅ６（ｘ,ｙ）に基づいて部分画像の顔らしさＶsum５〜Ｖsum６を生成する処理も、エッジ画像Ｅ１（ｘ,ｙ）〜Ｅ４（ｘ,ｙ）に基づいて部分画像の顔らしさＶsum１〜Ｖsum４を生成する処理と同様な考えのもとで行う。すなわち、凹部の概念を凸部の概念に置き換えて行えばよい。
【００７６】
以上説明した部分画像の顔判定処理を、各縮小画像において、1ビットずつずらした各部分画像についてすべて行い、顔の画像と判定できる部分画像をすべて抽出し、ステップＳ７に進む。
【００７７】
ステップＳ７では、ステップ６によりある部分画像が顔であると判定された場合には、その部分画像の入力画像に対する顔の大きさＳと座標（Ｘ，Ｙ）を、第１の実施の形態と同様に出力する。Ｓ，Ｘ，Ｙは、縮小画像における顔のサイズＳ´＝19と、顔とされた領域の座標（Ｘ´，Ｙ´）と縮小倍率κとを用いて、次の式で与えられる。
Ｓ  ＝  Ｓ´  /  κ
Ｘ  ＝  Ｘ´  /  κ
Ｙ  ＝  Ｙ´  /  κ
【００７８】
以上のようにして、入力画像に顔の画像がある場合は、その顔の画像の位置と大きさが検出されて出力される。
【００７９】
以上説明した第２の実施の形態の処理を行うと、次のような効果を奏する。
（１）歯を見せて笑っている口や、光が当たって光って頬や鼻では、輝度が周囲に比べて局所的に明るくなっている。本実施の形態によると、そのような局所的に明るい箇所も効果的に検出してエッジ画像を作成する。従って、このようにして作成したエッジ画像を使用して第１の実施の形態の凹部画像による顔画像の判定と同様に行えば、顔の画像の局所的暗い箇所に加えて、顔の画像の局所的明るい箇所も考慮して顔判定を行うことができる。これにより、第１の実施の形態よりもさらに高精度に顔を検出できる。
【００８０】
−第３の実施の形態−
第２の実施の形態では、輝度凹部画像に加えて輝度凸部画像を生成し、顔の目鼻口などの局所的に暗い箇所に加えて、歯を見せて笑っている口や、光が当たって光っている頬や鼻では、輝度が周囲に比べて局所的に明るくなっている箇所も適切に検出する例を説明した。第３の実施の形態では、輝度凹部画像と輝度凸部画像の情報を輝度凹凸部画像にまとめて処理を行う例を説明する。
【００８１】
第３の実施の形態は、第１の実施の形態と同様に、パーソナルコンピュータ１で実現される。従って、第３の実施の形態の画像処理装置の構成は、第１の実施の形態の図１を参照することとする。また、パーソナルコンピュータ１が実行する画像処理プログラムは、第１の実施の形態で使用し、第２の実施の形態で参照した図２のフローチャートと、処理の流れとしては同様であるので、同様に図２を参照しながら以下説明をする。
【００８２】
ステップＳ１からステップＳ３までは、第２の実施の形態と同様であるので説明を省略する。
【００８３】
ステップＳ４では、第２の実施の形態と同様にエッジ画像Ｅ１（ｘ,ｙ）〜Ｅ６（ｘ,ｙ）を生成する。そして、つぎの式に基づき、縦方向輝度凹凸部画像Ｅ７（ｘ,ｙ）と横方向輝度凹凸部画像Ｅ８（ｘ,ｙ）を生成する。
【数１】
2009258771.tif 000003
【数２】
2009258771.tif 000004
【００８４】
ステップＳ５では、縮小した画像の１画素おきに１９×１９画素の顔判定対象領域を設定し、その領域におけるエッジ画像Ｅ１（ｘ,ｙ）,Ｅ２（ｘ,ｙ）,Ｅ７（ｘ,ｙ）,Ｅ８（ｘ,ｙ）の部分画像を出力する。
【００８５】
ステップＳ６では、ステップ５で出力したエッジ画像Ｅ１（ｘ,ｙ）,Ｅ２（ｘ,ｙ）,Ｅ７（ｘ,ｙ）,Ｅ８（ｘ,ｙ）の各部分画像に対して、この領域が顔の画像であるかどうか第１の実施の形態と同様に判定する。エッジ画像Ｅ７（ｘ,ｙ）〜Ｅ８（ｘ,ｙ）に基づいて部分画像の顔らしさＶsum７〜Ｖsum８を生成する処理も、エッジ画像Ｅ１（ｘ,ｙ）〜Ｅ４（ｘ,ｙ）に基づいて部分画像の顔らしさＶsum１〜Ｖsum４を生成する処理と同様な考えのもとで行う。すなわち、凹部の概念を凹部と凸部を組み合わせた概念に置き換えて行えばよい。
【００８６】
ステップＳ７は、第１の実施の形態と同様である。以上のようにして、入力画像に顔の画像がある場合は、その顔の画像の位置と大きさが検出されて出力される。
【００８７】
以上説明した第３の実施の形態の処理を行うと、次のような効果を奏する。
（１）輝度凹部画像と輝度凸部画像の情報を輝度凹凸部画像にまとめることにより、判別処理に用いる情報量を省略しつつ、第２の実施の形態に近い精度で顔を検出できる。
【００８８】
−変形例−
上記実施の形態では、顔の画像の判定において、顔らしさＶ１（ｘ,ｙ）を生成して処理する例を説明した。しかし、ステップ５で出力したエッジ画像に対して、ニューラルネットワークなどの公知の学習判別処理を施すことにより、この領域が顔の画像であるかを判定するようにしてもよい。
【００８９】
検出した顔画像領域におけるエッジ画像に対して、公知の技術を適用して表情判定処理を行っても良い。特に、第２と第３の実施の形態では、歯を見せて笑っている顔の口の輝度が局所的に高くなっていることが検出されるので、そのような笑顔を高精度に判定することができる。
【００９０】
縦方向輝度凹部画像を生成するエッジ検出フィルタは、次のようなものであっても良い。
Ｅ１´（ｘ,ｙ）＝Ｍｉｎ（ＹＬＨ（ｘ,ｙ−１）, ＹＬＨ（ｘ,ｙ＋１））―ＹＬＨ（ｘ,ｙ）
すなわち、対象画素とその縦方向隣接画素の３画素を使用するものでもよい。横方向輝度凹部画像についても同様である。また、輝度凸部画像を生成するエッジ検出フィルタについても同様である。
【００９１】
縦方向輝度凹部画像を生成するエッジ検出フィルタは、次のようなものであっても良い。
Ｅ１´（ｘ,ｙ）＝Ｍｉｎ（ＹＬＨ（ｘ,ｙ−１）, ＹＬＨ（ｘ,ｙ＋２））
―（ＹＬＨ（ｘ,ｙ）＋ＹＬＨ（ｘ,ｙ＋１））/ ２
横方向輝度凹部画像についても同様である。また、輝度凸部画像を生成するエッジ検出フィルタについても同様である。
【００９２】
輝度凹部画像または輝度凸部画像を作るためのフィルタのサイズは、異なる複数のサイズを用い、複数の周波数帯域の凸構造または凹構造を検出しても良い。なお、縮小倍率の異なる複数の輝度画像に対して同じサイズのフィルタを演算することにより、複数の周波数帯域の凸構造または凹構造を検出しても良い。
【００９３】
上記実施の形態では、Ｅ１´（ｘ,ｙ）として、対象画素近辺画素の最小値と周辺画素の最小値の差分を出力する例を説明した。すなわち、対象画素近辺画素の最小値と周辺画素の最小値の差異を差分値の形で出力する例を説明した。しかし、これらの値の比を差異を表す値として出力するようにしてもよい。
【００９４】
上記実施の形態では、パーソナルコンピュータ１が、撮影された画像の中から顔画像を検出する画像処理を行う例を説明した。しかし、デジタルスチルカメラなどの撮像装置内で、撮像した画像に対し上記説明した処理を行うようにしてもよい。
【００９５】
図１０は、このような撮像装置であるデジタルカメラ１００の構成を示す図である。デジタルカメラ１００は、撮影レンズ１０２、ＣＣＤなどからなる撮像素子１０３、ＣＰＵおよび周辺回路からなる制御装置１０４、メモリ１０５などから構成される。
【００９６】
撮像素子１０３は、被写体１０１を撮影レンズ１０２を介して撮影（撮像）し、撮影した画像データを制御装置１０４へ出力する。制御装置１０４は、撮像素子１０３で撮影された画像（画像データ）に対して、上記で説明した顔画像を検出する画像処理を行う。そして、制御装置１０４は、顔画像の検出結果に基づき撮影した画像に対し、ホワイトバランスの調整やその他の各種の画像処理を行い、画像処理後の画像データを適宜メモリ１０５に格納する。また、制御装置１０４は、顔画像の検出結果を、オートフォーカス処理などにも利用することができる。なお、制御装置１０４が実行する画像処理プログラムは、不図示のＲＯＭに格納されている。
【００９７】
また、上記説明した処理をビデオカメラにも適用できる。さらに、不審者を監視する監視カメラや、撮影された顔画像に基づいて個人を識別したり、性別や年齢や表情を推定するような装置にも適用できる。すなわち、顔の画像など特定種類の画像を抽出して処理する画像処理装置や撮像装置などのあらゆる装置に本発明を適用することができる。
【００９８】
上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【図面の簡単な説明】
【００９９】
【図１】本発明の一実施の形態である画像処理装置を示す図である。
【図２】パーソナルコンピュータ１が実行する画像処理プログラムのフローチャートを示す図である。
【図３】エッジ抽出対象画素と周辺画素とを座標ｘｙで表した図である。
【図４】輝度の様々な構造に対して輝度凹部画像Ｅ１（ｘ,ｙ）を作成した結果を示す図である。
【図５】具体的な顔の輝度画像について４種類のエッジ画像Ｅ１（ｘ,ｙ）〜Ｅ４（ｘ,ｙ）を生成した例を示す図である。
【図６】具体的なエッジ画像について、顔らしさＶ１（ｘ,ｙ）を生成し、顔らしさＶＳＵＭ１を算出する処理を行った例を示す図である。
【図７】ルックアップテーブルＬ１（ｘ,ｙ）（Ｅ）の具体的な値をエッジの大きさ毎に表した図である。
【図８】図２のステップＳ６の顔判定の処理において、部分画像の顔らしさＶsum１〜Ｖsum４を求めた後の処理のフローチャートを示す図である。
【図９】顔らしさＬ１（ｘ,ｙ）（Ｅ）を求める処理のフローチャートを示す図である。
【図１０】撮像装置であるデジタルカメラ１００の構成を示す図である。
【符号の説明】
【０１００】
１  パーソナルコンピュータ
２  デジタルカメラ
３  記録媒体
４  コンピュータ
５  電気通信回線
１００  デジタルカメラ
１０１  被写体
１０２  撮影レンズ
１０３  撮像素子
１０４  制御装置
１０５  メモリ
【図１】
2009258771.tif 000005
【図２】
2009258771.tif 000006
【図３】
2009258771.tif 000007
【図４】
2009258771.tif 000008
【図５】
2009258771.tif 000009
【図６】
2009258771.tif 000010
【図７】
2009258771.tif 000011
【図８】
2009258771.tif 000012
【図９】
2009258771.tif 000013
【図１０】
2009258771.tif 000014