以下に、本願の開示する特徴点判定装置、特徴点判定方法および特徴点判定プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、処理内容を矛盾させない範囲で適宜組あわせることが可能である。
本実施例1にかかる特徴点判定装置の構成について説明する。図1は、本実施例1にかかる特徴点判定装置の構成を示す図である。図1に示すように、この特徴点判定装置100は、画像入力部110a、入力部110b、出力部120、記憶部130、制御部140を有する。
画像入力部110aは、カメラ等の撮像装置に接続され、撮像装置から画像データの入力を受け付ける処理部である。画像入力部110aは、画像データを顔検出処理部141に出力する。入力部110bは、キーボードやマウスなどに対応する入力装置である。出力部120は、ディスプレイやモニタなどに対応する表示装置である。
記憶部130は、第1の位置関係データ131と、第2の位置関係データ132とを有する。このうち、第1の位置関係データ131は、顔の部品毎に、部品の各端点の位置関係を記憶する情報である。記憶部130は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、またはハードディスク、光ディスクなどの記憶装置に対応する。
図2は、部品の各端点の位置関係を示す図である。一例として、図2に示す端点5a〜5dは、目頭、目尻に対応する端点を示している。例えば、端点5aは右目の目尻、端点5bは右目の目頭、端点5cは左目の目頭、端点5dは左目の目尻にそれぞれ対応する。ここで、部品の各端点の位置関係とは、端点間の距離に対応する。すなわち、部品「目」の各端点の位置関係は、端点5aと5bとの距離6a、端点5bと5cとの距離6b、端点5cと5dとの距離6cとなる。目以外の顔の部品となる鼻や口の各端点の位置関係も、目の場合と同様に、端点間の距離となる。
図3は、第1の位置関係データのデータ構造の一例を示す図である。図3に示すように、この第1の位置関係データ131は、部品識別情報と位置関係情報とを対応付けて記憶する。このうち部品識別情報は、顔の部品を識別する情報である。位置関係情報は、図2を用いて説明した部品の各端点の位置関係に対応する情報である。第1の位置関係データ131は、部品毎に位置関係情報を記憶している。
第2の位置関係データ132は、異なる部品間の各端点の位置関係を記憶する情報である。図4は、部品間の各端点の位置関係を示す図である。一例として、図4に示す端点7a〜7dは、目頭、目尻に対応する端点を示す。また、端点8a、8bは、口の両端に対応する端点を示す。ここで、部品間の各端点の位置関係は、端点7a〜7dを通る直線7A上の所定の点と、端点8a、8bを通る直線8A上の所定の点との距離を示す。例えば、部品「目」、「口」間の各端点の位置関係は、端点7aと端点8aとの距離9a、直線7Aの中点と直線8Aの中点との距離9b、端点7dと端点8bとの距離9cとなる。
図5は、第2の位置関係データのデータ構造の一例を示す図である。図4に示すように、この第2の位置関係データ132は、対応部品情報と部品間関係情報とを対応付けて記憶する。このうち対応部品情報は、例えば、目と口のように対の部品をそれぞれ識別する情報である。部品間関係情報は、図4を用いて説明した部品間の各端点の位置関係に対応する情報である。例えば、「目と口との部品間関係情報」は、部品「目」、「口」間の各端点の位置関係である。「目と鼻との部品間関係情報」は、部品「目」、「鼻」間の各端点の位置関係である。
制御部140は、顔検出処理部141、顔部品領域検出処理部142、第1の候補点判定処理部143、第2の候補点判定処理部144を有する。制御部140は、例えば、ASIC(Application Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)などの集積装置に対応する。または、制御部140は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等の電子回路に対応する。
顔検出処理部141は、画像データから人物の顔が存在する領域を検出し、顔の存在する領域を画像データから切り出す処理部である。例えば、顔検出処理部141は、人物の顔の特徴を含むパターンを保持しており、このパターンと画像データとをマッチングさせるとこで、画像データから顔が存在する領域を判定する。そして、顔検出処理部141は、顔が存在する領域を画像データから切り出し、切り出した顔の画像データを顔部品領域検出処理部142に出力する。
顔部品領域検出処理部142は、画像データから顔の部品が存在する領域を検出する処理部である。例えば、顔部品領域検出処理部142は、顔の部品の特徴を含むパターンを保持しており、このパターンと画像データとをマッチングさせることで、顔の部品が存在する画像データの領域を判定する。例えば、顔部品領域検出部142が用いる各パターンには、目、鼻、口等の特徴を示すパターンが含まれる。顔部品領域検出処理部142は、顔の部品の識別情報とこの部品が存在する領域の座標とを対応付けた情報、および、画像データを第1の候補点判定処理部143、第2の候補点判定処理部144に出力する。
第1の候補点判定処理部143は、顔の所定の部品が含まれる画像データの局所的な領域から、部品の端点の候補となる候補点を抽出する。そして、第1の候補点判定処理部143は、抽出した候補点の位置関係に基づいて、部品の端点に対応する候補点を特徴点として判定する。第1の候補点判定処理部143は、部品の端点に対応する特徴点を判定できた場合には、判定結果を出力部120に出力する。これに対して、第1の候補点判定処理部143は、特徴点を判定できない場合には、第2の候補点判定処理部144に特徴点の抽出を要求する。
以下において、第1の候補点判定処理部143の処理を具体的に説明する。第1の候補点判定処理部143は、コーナー検出法(FAST)等の周知技術を利用して、候補点を検出する。このコーナー検出法は、画像データのある1画素を中心画素として設定し、この中心画素の明度とこの中心画素の近隣画素の明度との関係に基づいて、中心画素を候補点として抽出するか否かを判定する方法である。第1の候補点判定処理部143が抽出する候補点を第1候補点と表記する。
図6は、第1の候補点判定処理部が候補点を抽出する処理を説明するための図である。まず、第1の候補点判定処理部143は、中心画素10aと近隣画素との明度を算出し、中心画素10aの明度と近隣画素の明度とを比較する。ここで、中心画素10aよりも明るい近隣画素を近隣画素10bとする。また、中心画素よりも暗い近隣画素を近隣画素10cとする。
第1の候補点判定処理部143は、連続する近隣画素10bをそれぞれグループにまとめる。図6に示す例では、近隣画素10bは、グループ11a、11b、11cにまとめられる。第1の候補点処理部143は、各グループのうち、近隣画素10bを最も多く含むグループをグループAとして判定する。図6に示す例では、グループ11aがグループAとして判定される。第1の候補点判定処理部143は、グループAに含まれる近隣画素10bの数が閾値範囲に含まれる場合に、中心画素10aを第1候補点として判定する。例えば、第1の候補点判定処理部143は、全近隣画素数が「20画素」の場合には、グループAに含まれる近隣画素数10bの数が「6〜16画素」の場合に、中心画素を第1候補点として判定する。
第1の候補点判定処理部143は、第1候補点を判定した後に、所定数の第1候補点の組を選択する。第1の候補点判定処理部143は、選択した各第1候補点間の距離と、第1の位置関係データ131とを比較して、各第1候補点間の距離が、端点間の距離に該当するか否かを判定する。特定する第1候補点の数は、検出対象の部品の端点に応じて異なる。第1の候補点判定処理部143は、検出対象が目または鼻の端点の場合には、4つの第1候補点を特定する。第1の候補点判定処理部143は、検出対象が口の端点の場合には、2つの第1候補点を特定する。
第1の候補点判定処理部143は、端点間の距離に該当する第1候補点の組が一組も存在しない場合には、特徴点が検出できない旨の情報を、出力部120に出力する。
第1の候補点処理部143は、端点間の距離に該当する第1候補点の組が存在し、この組が1組の場合には、かかる組に含まれる各第1候補点を特徴点として出力部120に出力する。第1の候補点処理部143は、特徴点の位置座標を出力部120に出力しても良いし、画像データに特徴点をプロットして出力部120に出力しても良い。
これに対して、第1の候補点処理部143は、端点間の距離に該当する第1候補点の組が存在し、この組が2組以上の場合には、第2の候補点判定処理部144に特徴点の抽出を要求する。この場合には、第1の候補点処理部143は、第1候補点集を第2の候補点判定処理部144に出力する。この第1候補点集には、端点間の距離に該当する第1候補点の組の位置座標と、検出対象の部品を識別する情報が含まれる。
第2の候補点判定処理部144は、画像データ全域に含まれる部品の端点の候補となる候補点に基づいて、検出対象となる部品の特徴点を判定する。この第2の候補点判定処理部144は、第1の候補点判定処理部143から特徴点の抽出要求を受け付けた場合に動作する。
以下において、第2の候補点判定処理部144の処理を具体的に説明する。第2の候補点判定処理部144は、第1の候補点判定処理部143が検出対象とした部品以外の部品の領域から候補点を判定する。第2の候補点判定処理部144は、上記コーナー検出法を用いて候補点を判定する。第2の候補点判定処理部144が判定した候補点を第2候補点と表記する。例えば、第1の候補点判定処理部143が検出対象とした部品が「目」の場合には、第2の候補点判定処理部144は、部品「鼻」、「口」に対応する画像データの領域から第2候補点を判定する。
第2の候補点判定処理部144は、第2候補点を判定した後に、所定数の第2候補点の組を選択し、選択した組の各第2候補点間の距離と、第1の位置関係データ131とを比較して、各第2候補点間の距離が、端点間の距離に該当する第2候補点の組を特定する。ここで、第2の候補点判定処理部144は、異なる部品毎に、第2候補点の組を特定するものとする。例えば、第2の候補点判定処理部144は、「鼻」、「口」に対応する部品毎に、端点間の距離に該当する第2候補点の組を特定する。
第2の候補点判定処理部144は、異なる部品毎に、第2候補点の組を特定した後に、第2候補点の組と、第1候補点集と、第2の位置関係データ132とを基にして、検出対象の部品の特徴点を判定する。
図7は、第2の候補点判定処理部144の処理を説明するための図である。ここでは一例として、第1候補点集12には、第1候補点12a、12b、12c、12dの組と、第1候補点12e、12f、12c、12gの組が含まれるものとする。第1候補点集12は、部品「目」から判定されたものとする。また、第2候補点の組を13aおよび13bを含む組とする。第2候補点は、部品「口」から判定されたものとする。
第2の候補点判定処理部144は、第1候補点12a、12b、12c、12dを通る直線12Aと、第1候補点12e、12f、12c、12gを通る直線12Bを算出する。また、第2の候補点判定処理部144は、第2候補点の組13a、13bを通る直線13Aを算出する。
第2の候補点判定処理部144は、直線12A、12B、13Aを算出した後に、距離14a〜14c、15a〜15cを算出する。距離14aは、直線12A上の第1候補点12aと直線13A上の第2候補点13aとの距離である。距離14bは、直線12Aの中点と直線13Aの中点との距離である。距離14cは、直線12A上の第1候補点12
dと直線13A上の第2候補点13bとの距離である。距離15aは、直線12B上の第1候補点12eと直線13A上の第2候補点13aとの距離である。距離15bは、直線12Bの中点と直線13Aの中点との距離である。距離15cは、直線12B上の第1候補点12gと直線13A上の第2候補点13bとの距離である。
第2の候補点判定処理部144は、第2の位置関係データ132に含まれる「目と口との部品関係情報」の位置関係、距離14a〜14c、距離15a〜15cを比較する。第2の候補点判定処理部144は、距離14a〜14c、距離15a〜15cのうち、距離14a〜14cの方が「目と口との部品関係情報」の位置関係に近い場合には、第1候補点12a、12b、12c、12dを特徴点として判定する。一方、第2の候補点判定処理部144は、距離14a〜14c、距離15a〜15cのうち、距離15a〜15cの方が「目と口との部品関係情報」の位置関係に近い場合には、第1候補点12e、12f、12c、12gを特徴点として判定する。第2の候補点判定処理部144は、判定結果を出力部120に出力する。この場合には、第2の候補点判定処理部144は、特徴点の位置座標を出力部120に出力しても良いし、画像データに特徴点をプロットして出力部120に出力しても良い。
ところで、第2の候補点判定処理部144は、部品「口」から判定した第2候補点から、特徴点を絞り込めない場合には、部品「鼻」から判定した第2候補点を利用して、特徴点を判定する。特徴点を判定する処理は、図7を用いて説明したものと同様である。
また、第2の候補点判定処理部144は、上記の処理以外の方法により、特徴点を判定しても良い。例えば、第2の候補点判定処理部144は、候補点を通る直線の傾きに基づいて、特徴点を判定しても良い。
具体的に図7を用いて説明する。第2の候補点判定処理部144は、直線12A、12B、13Aの直線の傾きをそれぞれ算出する。第2の候補点判定処理部144は、各直線の傾きを比較し、直線13Aの傾きにより近い直線を、直線12Aまたは12Bから選択する。図7に示す例では、直線12Aが選択される。そして、第2の候補点判定処理部144は、直線12Aを通る候補点12a、12b、12c、12dを特徴点として判定する。
次に、本実施例1にかかる特徴点判定装置100の処理手順について説明する。図8は、本実施例1にかかる特徴点判定装置の処理手順を示すフローチャートである。例えば、図8に示す処理は、特徴点判定装置100が、画像入力部110aから画像データを取得したことを契機として実行される。
図8に示すように、特徴点判定装置100は、画像データを取得し(ステップS101)、画像データから顔を検出する(ステップS102)。特徴点判定装置100は、検出対象の顔の部品の第1候補点を検出し(ステップS103)、第1特徴点判定処理を実行する(ステップS104)。ステップS104における第1特徴点判定処理は、第1の候補点判定処理部143が、特徴点を判定する処理に対応する。
特徴点判定装置100は、特徴点の判定が可能である場合には(ステップS105,Yes)、処理を終了する。一方、特徴点判定装置100は、特徴点の判定が可能でない場合には(ステップS105,No)、検出対象以外の顔の部品の第2候補点を検出する(ステップS106)。そして、特徴点判定装置100は、第2特徴点判定処理を実行する(ステップS107)。ステップS107における第2特徴点判定処理は、第2の候補点判定処理部144が、特徴点を判定する処理に対応する。
続いて、顔の部品の候補点を検出する処理手順について説明する。この候補点を検出する処理手順は、図8のステップS103の第1候補点を抽出する処理、図8のステップS106の第2候補点を検出する処理に対応する。図9は、顔の部品の候補点を検出する処理手順を示すフローチャートである。
図9に示すように、特徴点判定装置100は、顔の部品が存在する領域内の一画素を中心画素として選択し(ステップS201)、中心画素と近隣画素との明度を算出する(ステップS202)。特徴点判定装置100は、近隣画素のうち中心画素より明るい画素が連続する画素のグループを取得し(ステップS203)、取得した各グループの画素数を計数する(ステップS204)。
特徴点判定装置100は、計数した画素数が最も多いグループをグループAとして取得する(ステップS205)。特徴点判定装置100は、グループAの画素数が所定の閾値範囲に含まれない場合には(ステップS206,No)、ステップS201に移行する。
一方、特徴点判定装置100は、グループAの画素数が所定の閾値範囲に含まれる場合には(ステップS206,Yes)、中心画素を候補点として判定する(ステップS207)。特徴点判定装置100は、顔の部品が存在する領域内の全ての画素についての処理が終了していない場合には(ステップS208,No)、ステップS201に移行する。一方、特徴点判定装置100は、顔の部品が存在する領域内の全ての画素についての処理が終了した場合には(ステップS208,Yes)、処理を終了する。
次に、本実施例1にかかる特徴点判定装置100の効果について説明する。本実施例1にかかる特徴点判定装置100は、顔の部品が含まれる画像データの局所的な領域に含まれる候補点の位置関係、または、顔の画像データ全体の複数の候補点の位置関係に基づいて、端点に対応する特徴点を判定する。このため、局所的な領域に含まれる候補点から、特徴点が判定可能な場合には、画像データ全体から候補点を抽出する必要がないので、特徴点判定にかかる処理速度を向上させることができる。また、局所的な領域に含まれる候補点のみで特徴点を判定できない場合には、画像データ全体から候補点を検出し、全体の候補点の位置関係から特徴点を判定できるので、特徴点抽出にかかる精度を向上させることができる。すなわち、本実施例1にかかる特徴点判定装置100によれば、特徴点の抽出精度を保ちつつ、特徴点抽出に要する時間を短くすることができる。
また、本実施例1にかかる特徴点判定装置100は、画像データ全体から候補点を検出する場合に、各部品に対応する領域毎に各候補点の位置関係を比較し、端点の特徴点を特定する。また、特徴点判定装置100は、ある部品に対応する候補点の位置関係で、特徴点が判定できない場合には、別の部品に対応する候補点の位置関係で、特徴点を判定するので、特徴点をより確実に判定可能とする。例えば、特徴点判定装置は、部品「目」、「口」の候補点を用いて、目の特徴点が判定できない場合には、部品「目」、「鼻」の候補点を用いて、目の特徴点を判定する。
ところで、図1に示した特徴点判定装置100の構成は一例であり、特徴点判定装置100は、必ずしも図1に示した各処理部を全て有していなくてもよい。例えば、特徴点判定装置100は、候補点抽出部と、特徴点判定部の機能を有していればよい。
このうち、候補点抽出部は、顔の画像データから顔の部品の端点の候補となる候補点を抽出する処理部であり、第1の候補点判定処理部143、第2の候補点判定処理部144に対応する。また、特徴点判定部は、局所的な領域に含まれる複数の候補点の位置関係、または、顔画像全体の複数の候補点の位置関係に基づいて、顔の部品の端点に対応する特徴点判定する処理部である。この特徴点判定部は、第1の候補点判定処理部143と第2の候補点判定処理部144を組み合わせたものに対応する。
次に、本実施例2にかかる特徴点判定装置200の構成について説明する。図10は、本実施例2にかかる特徴点判定装置の構成を示す機能ブロック図である。図10に示すように、この特徴点判定装置200は、画像入力部210a、入力部210b、出力部220、記憶部230、制御部240を有する。このうち、画像入力部210a、入力部210b、出力部220に関する説明は、図1に示した画像入力部110a、入力部110b、出力部120に関する説明と同様である。
記憶部230は、第3の位置関係データ231と、第2の位置関係データ232とを有する。このうち、第2の位置関係データ232に関する説明は、図1に示した第2の位置関係データ132に関する説明と同様である。
第3の位置関係データ231は、顔の部品毎に、部品の各端点の位置関係と、各端点の特徴の配列パターンとを対応付けて記憶する。ここで、端点の特徴および特徴の配列パターンについて順に説明する。なお、部品の各端点の位置関係は、上記実施例1で説明したものと同様である。
端点の特徴は、端点の近隣画素の明度に基づいて、第1の特徴または第2の特徴に分類される。具体的には、端点を原点とするx、y座標系において、端点の明度よりも明るい明度を有する近隣画素がx座標のプラス側よりもマイナス側に偏っている場合には、この端点の特徴は、第1の特徴となる。これに対して、端点を原点とするx、y座標系において、端点の明度よりも明るい明度を有する近隣画素がx座標のマイナス側よりもプラス側に偏っている場合には、この端点の特徴は、第2の特徴となる。
特徴の配列パターンは、各端点が顔の部品に応じて、どのような特徴の組み合わせて並んでいるのかを定義するパターンである。例えば、部品「目」の端点は4つであり、特徴の配列パターンは、画像データ左側から順に「第1の特徴、第2の特徴、第1の特徴、第2の特徴」となる。部品「鼻」の端点は4つあり、特徴の配列パターンは、画像データ左側から順に「第1の特徴、第2の特徴、第1の特徴、第2の特徴」となる。部品「口」の端点は2つであり、特徴の配列パターンは、画像データ左側から順に「第1の特徴、第2の特徴」となる。
図11は、第3の位置関係データのデータ構造の一例を示す図である。図11に示すように、この第3の位置関係データは、部品識別情報と位置関係情報と配列パターンとを対応付けて記憶する。このうち、部品識別情報は、顔の部品を識別する情報である。位置関係情報は、図2を用いて説明した部品の各端点の位置関係に対応する情報である。配列パターンは、上述した部品毎の特徴の配列パターンに対応する情報である。
制御部240は、顔検出処理部241、顔部品領域検出処理部242、第1の候補点判定処理部243、第2の候補点判定処理部244を有する。このうち、顔検出処理部241、顔部品領域検出処理部242に関する説明は、図1に示した顔検出処理部141、顔部品領域検出処理部142に関する説明と同様である。
第1の候補点判定処理部243は、顔の所定の部品が含まれる画像データの局所的な領域から、部品の端点の候補となる候補点を抽出する。そして、第1の候補点判定処理部243は、抽出した候補点の位置関係、および、候補点の特徴の配列パターンに基づいて、部品の端点に対応する特徴点を判定する。第1の候補点判定処理部243は、部品の端点に対応する特徴点を判定できた場合には、判定結果を出力部220に出力する。これに対して、第1の候補点判定処理部243は、特徴点を判定できない場合には、第2の候補点判定処理部244に特徴点の抽出を要求する。
以下において、第1の候補点判定処理部243の処理を具体的に説明する。まず、第1の候補点判定処理部243は、実施例1に示したコーナー検出法を利用して、第1候補点を検出する。なお、第1の候補点判定処理部243は、第1候補点を検出した場合に、第1候補点と、グループAの情報とを対応付けて保持しておく。例えば、このグループAの情報には、グループAの近隣画素10bの座標情報が含まれる。
第1の候補点判定処理部243は、第1候補点を判定した後に、第1候補点を第1の特徴点または第2の特徴点に分類する。第1の候補点判定処理部243は、第1候補点に対応するグループAに基づいて、第1候補点を第1の特徴点または第2の特徴点に分類する。
図12Aおよび図12Bは、第1の特徴点または第2の特徴点に分類する処理を説明するための図である。まず、第1の候補点判定処理部243は、第1候補点の位置座標と、グループAの近隣画素の位置座標とを比較する。そして、第1の候補点判定処理部243は、第1候補点を原点とするx、y座標系において、x軸のマイナス側に存在する近隣画素の数を計数する。第1の候補点判定処理部243は、計数した近隣画素の数が閾値以上の場合には、第1候補点を第1の特徴点とする。これに対して、第1の候補点判定処理部243は、計数した近隣画素の数が閾値未満の場合には、第1候補点を第2の特徴点とする。ここで比較される閾値は、例えば、「5」とする。
図12Aに示す例では、x軸のマイナス側に存在する近隣画素20bの数は「9」である。このため、第1の候補点判定処理部243は、候補点20aを第1の特徴点に分類する。図12Bに示す例では、x軸のマイナス側に存在する近隣画素21bの数は「2」である。このため、第1の候補点判定処理部243は、候補点21aを第2の特徴点に分類する。
なお、第1の候補点判定処理部243は、同一の特徴点に分類した第1候補点同士の相対距離を比較し、この相対距離が所定の閾値未満の場合には、各第1候補点を一つの候補点に纏めても良い。例えば、第1の候補点判定処理部243は、第1の特徴点に分類した第1候補点のそれぞれの相対距離が所定の閾値未満の場合には、各第1候補点を一つの候補点に纏める。同様に、第1の候補点判定処理部243は、第2の特徴点に分類した第1候補点のそれぞれの相対距離が所定の閾値未満の場合には、各第1候補点を一つの候補点に纏める。このように、第1候補点を纏めることで、処理対象となる第1候補点の数が減り、後述の処理負荷を軽減させることができる。
第1の候補点判定処理部243は、第1候補点を第1の特徴点または第2の特徴点に分類した後に、第3の位置関係データ233を基にして、検出対象となる部品に応じた配列パターンとなる第1候補点の組を選択する。
検出対象となる部品が「目」の場合には、配列パターンは、「第1の特徴、第2の特徴、第1の特徴、第2の特徴」の順となる。このため、第1の候補点判定処理部243は、画像データの左から順に、第1の特徴点、第2の特徴点、第1の特徴点、第2の特徴点となる組の第1候補点を特定する。
検出対象となる部品が「鼻」の場合には、配列パターンは、「第1の特徴、第2の特徴、第1の特徴、第2の特徴」の順となる。このため、第1の候補点判定処理部243は、画像データの左から順に、第1の特徴点、第2の特徴点、第1の特徴点、第2の特徴点となる組の第1候補点を特定する。
検出対象となる部品が「口」の場合には、配列パターンは、「第1の特徴、第2の特徴」の順となる。このため、第1の候補点判定処理部243は、画像データの左から順に、第1の特徴点、第2の特徴点となる組の第1候補点を特定する。
第1の候補点判定処理部243は、配列パターンに該当する第1候補点の組を特定した後に、各第1候補点の位置関係と、第3の位置関係データ231とを比較して、各第1候補点間の距離が、端点間の距離に該当するか否かを判定する。
第1の候補点判定処理部243は、端点間の距離に該当する第1候補点の組が一組も存在しない場合には、特徴点が検出できない旨の情報を、出力部220に出力する。
第1の候補点処理部243は、端点間の距離に該当する第1候補点の組が存在し、この組が1組の場合には、かかる組に含まれる各第1候補点を特徴点として出力部220に出力する。第1の候補点処理部243は、特徴点の位置座標を出力部220に出力しても良いし、画像データに特徴点をプロットして出力部220に出力しても良い。
これに対して、第1の候補点処理部243は、端点間の距離に該当する第1候補点の組が存在し、この組が2組以上の場合には、第2の候補点判定処理部244に特徴点の抽出を要求する。この場合には、第1の候補点処理部243は、第1候補点集を第2の候補点判定処理部244に出力する。この第1候補点集には、端点間の距離に該当する第1候補点の組の位置座標と、検出対象の部品を識別する情報が含まれる。
第2の候補点判定処理部244は、画像データ全域に含まれる部品の端点の候補となる候補点に基づいて、検出対象となる部品の特徴点を判定する。この第2の候補点判定処理部244は、第1の候補点判定処理部243から特徴点の抽出要求を受け付けた場合に動作する。
以下において、第2の候補点判定処理部244の処理を具体的に説明する。第2の候補点判定処理部244は、第1の候補点判定処理部243が検出対象とした部品以外の部品の領域から候補点を判定する。第2の候補点判定処理部244は、上記コーナー検出法を用いて候補点を判定する。第2の候補点判定処理部244が判定した候補点を第2候補点と表記する。例えば、第1の候補点判定処理部243が検出対象とした部品が「目」の場合には、第2の候補点判定処理部244は、部品「鼻」、「口」に対応する画像データの領域から第2候補点を判定する。
第2の候補点判定処理部244は、第2候補点を判定した後に、第2候補点を第1の特徴点または第2の特徴点に分類する。第2候補点を第1の特徴点または第2の特徴点に分類する処理は、上記の第1候補点を第1の特徴点または第2の特徴点に分類する処理と同様である。
第2の候補点判定処理部244は、第2候補点を第1の特徴点または第2の特徴点に分類した後に、第2の位置関係データ232を基にして、検出対象となる部品に応じた配列パターンとなる第2候補点の組を選択する。この処理は、上述した、検出対象となる部品に応じた配列パターンとなる第1候補点の組を選択する処理と同様である。
第2の候補点判定処理部244は、第2候補点の組を選択した後に、選択した組の各第2候補点間の距離と、第3の位置関係データ231とを比較して、各第2候補点間の距離が、端点間の距離に該当する第2候補点の組を特定する。例えば、第2の候補点判定処理部244は、「鼻」、「口」に対応する部品毎に、端点間の距離に該当する第2候補点の組を特定する。
第2の候補点判定処理部244は、異なる部品毎に、第2候補点の組を特定した後に、第2候補点の組と、第1候補点集と、第2の位置関係データ232とを基にして、検出対象の部品の特徴点を判定する。この処理は、実施例1に示した第2の候補点判定処理部144の処理と同様である。
次に、本実施例2にかかる特徴点判定装置200が、候補点を第1の特徴点または第2の特徴点に分類する処理手順について説明する。図13は、候補点を第1の特徴点または第2の特徴点に分類する処理手順を示すフローチャートである。例えば、図13に示す処理は、第1の候補点判定処理部243が第1候補点を第1の特徴点または第2の特徴点に分類する場合に実行される。または、図13に示す処理は、第2の候補点判定処理部244が第2候補点を第1の特徴点または第2の特徴点に分類する場合に実行される。
図13に示すように、特徴点判定装置200は、候補点のうち一つを選択し(ステップS301)、グループAに含まれる近隣画素のうち、候補点のx座標よりもx座標が小さい近隣画素の画素数を計数する(ステップS302)。
特徴点判定装置200は、画素数が所定の閾値以下の場合には(ステップS303,No)、候補点を第2の特徴点と判定し(ステップS304)、ステップS306に移行する。
一方、特徴点判定装置200は、画素数が所定の閾値よりも大きい場合には(ステップS303,Yes)、候補点を第1の特徴点と判定する(ステップS305)。特徴点判定装置200は、全ての候補点について処理が完了したか否かを判定する(ステップS306)。特徴点判定装置200は、全ての候補点について処理が終了した場合には(ステップS306、Yes)、処理を終了する。一方、特徴点判定装置200は、全ての候補点について処理が終了していない場合には(ステップS306,No)、再度ステップS301に移行する。
次に、本実施例2にかかる特徴点判定装置200が、顔の所定の部品が含まれる画像データの局所的な領域から、部品の特徴点を判定する処理手順について説明する。図14は、局所的な領域から部品の特徴点を判定する処理のフローチャートである。例えば、図14に示す処理は、第1の候補点判定処理部243が、特徴点を判定する処理または第2の特徴点判定処理部244が、特徴点を判定する場合に実行させる。
図14に示すように、特徴点判定装置200は、所定の領域内に含まれる候補点のうち、同一の特徴を有する候補点を一つの候補点に纏め(ステップS401)、所定の配列パターンとなる候補点の組を取得する(ステップS402)。特徴点判定装置200は、取得した候補点の組の位置関係に基づいて、顔の部品の端点に対応する特徴点を判定する(ステップS403)。
次に、本実施例2にかかる特徴点判定装置200の効果について説明する。本実施例2にかかる特徴点判定装置200は、顔の所定の部品が含まれる画像データの局所的な領域から、特徴点を抽出する場合に、端点の位置関係だけではなく、端点の配列パターンを更に利用して、端点に適合する特徴点を判定する。このため、特徴点の判定基準が厳しくなり、特徴点判定装置200は、局所的な領域において、端点の候補となる特徴点の組が複数抽出してしまうことが少なくなる。したがって、第1の候補点判定処理部243のみで、特徴点を判定できる可能性が高まり、特徴点の判定に要する時間が短縮される。
ところで、上述の実施例で説明した特徴点判定装置100等の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータシステムで実行することによって実現することもできる。
ここで、図15を用いて、上記の実施例で説明した特徴点判定装置100等による処理と同様の機能を実現する特徴点判定プログラムを実行するコンピュータの一例を説明する。図15は、特徴点判定プログラムを実行するコンピュータの一例を示す図である。
図15に示すように、特徴点判定装置100として機能するコンピュータ300は、各種演算処理を実行するCPU(Central Processing Unit)301と、ユーザからのデータの入力を受け付ける入力装置302と、モニタ303を有する。
また、コンピュータ300は、図15に示すように、記憶媒体からプログラム等を読取る媒体読み取り装置304と、ネットワークを介して他のコンピュータとの間でデータの授受を行うネットワークインターフェース装置305とを有する。また、コンピュータ300は、カメラ306、各種情報を一時記憶するRAM(Random Access Memory)307と、ハードディスク装置308を有する。そして、各装置301〜308は、バス309に接続される。
ハードディスク装置308には、上述した特徴点判定装置100の機能と同様の機能を発揮する特徴点判定プログラム308aが記憶されている。なお、この特徴点判定プログラム308aを適宜分散させて、ネットワークを介して通信可能に接続された他のコンピュータの記憶部に記憶させておくこともできる。
そして、CPU301が、特徴点判定プログラム308aをハードディスク装置308から読み出してRAM307に展開することにより、図15に示すように、特徴点判定プログラム308aは特徴点判定プロセス307aとして機能する。また、CPU301が、位置関係データ308bをハードディスク装置308から読み出してRAM307に展開する。特徴点判定プロセス307aは、例えば、図1に示した各処理部141〜144に対応する。位置関係データ308bは、例えば、図1に示した第1の位置関係データ131、第2の位置関係データ132に対応する。特徴点判定プロセス307aは、RAM307に格納された位置関係データ307bを用いて、画像データの特徴点を判定する。
なお、特徴点判定プログラム308aについては、必ずしも最初からハードディスク装置308に記憶させておく必要はない。例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ300がこれらから各プログラムを読み出して実行するようにしてもよい。