(57)【要約】【課題】人の輪郭を高精度で検出する。【解決手段】入力操作により、開始領域１１から終了領域１２に向かって延伸された、一定以上の幅を有する探索領域１０が、入力画像上に設定される。探索手段３は、探索領域１０において開始領域１１側から終了領域１２側に向かってエッジを探索する。また、探索手段３は、探索領域１０内の画素のうち、肌色領域３１と肌色領域３２とに挟まれた領域３３に位置すると判定された画素２４を、輪郭の誤検出が発生したものとして、エッジと判定する画素から除外する。【選択図】図１
2014102712.tif 000002
【特許請求の範囲】
【請求項１】
入力操作に応じて、開始領域から終了領域に向かって延伸された、一定以上の幅を有する探索領域を、入力画像上に設定する入力受付手段と、
前記探索領域において前記開始領域側から前記終了領域側に向かってエッジを探索する探索手段であって、前記探索領域内の画素のうち、肌色領域と肌色領域とに挟まれた領域に位置すると判定された画素を、エッジと判定する画素から除外する探索手段と、
を有することを特徴とする輪郭検出装置。
【請求項２】
前記入力画像から人の顔を検出する顔検出手段をさらに有し、
前記探索手段は、前記探索領域内の画素のうち、その画素よりも検出された顔の外側方向に肌色領域が存在する画素を、肌色領域と肌色領域とに挟まれた領域に位置すると判定する、
ことを特徴とする請求項１記載の輪郭検出装置。
【請求項３】
前記探索手段は、
前記探索領域の中から設定した着目画素の周囲画素のうち、当該着目画素の位置での前記探索領域の延伸方向を含む所定範囲に含まれる画素をエッジ候補画素とし、前記エッジ候補画素からエッジである可能性が高い画素を判定して次の着目画素に設定するエッジ探索処理を、着目画素が前記開始領域から前記終了領域に達するまで繰り返し、
前記設定した着目画素の周囲画素のうち、その画素よりも検出された顔の外側方向に肌色領域が存在する画素を、肌色領域と肌色領域とに挟まれた領域に位置すると判定して前記エッジ候補画素から除外する、
ことを特徴とする請求項２記載の輪郭検出装置。
【請求項４】
前記探索手段は、前記設定した着目画素の周囲画素から選択した画素について、当該画素と前記検出された顔との位置関係と、当該画素の位置での前記探索領域の延伸方向とに基づいて、肌色領域の調査方向が当該画素の位置での前記探索領域の延伸方向に対して右方向か左方向かを判定し、判定した方向に対して肌色領域の有無を調査することを特徴とする請求項３記載の輪郭検出装置。
【請求項５】
前記探索手段は、前記選択した画素の周囲画素のうち、当該画素の位置での前記探索領域の延伸方向に位置する第１の画素を基準として前記判定した方向に所定画素数分だけ回転させた位置にある第２の画素を選択し、前記選択した画素から前記第２の画素への方向に位置する画素について肌色であるかを調査することを特徴とする請求項４記載の輪郭検出装置。
【請求項６】
前記探索手段は、前記設定した着目画素より所定個数だけ前に設定された着目画素から前記選択した画素への傾きを前記判定した方向に９０°回転した方向を判別し、前記選択した画素から前記判別した方向に沿って隣接する画素について肌色であるかを調査することを特徴とする請求項４記載の輪郭検出装置。
【請求項７】
輪郭検出装置が、
入力操作に応じて、開始領域から終了領域に向かって延伸された、一定以上の幅を有する探索領域を、入力画像上に設定し、
前記探索領域において前記開始領域側から前記終了領域側に向かってエッジを探索する、
処理を含み、
前記エッジを探索する処理では、前記探索領域内の画素のうち、肌色領域と肌色領域とに挟まれた領域に位置すると判定された画素を、エッジと判定する画素から除外する、
ことを特徴とする輪郭検出方法。
【請求項８】
コンピュータに、
入力操作に応じて、開始領域から終了領域に向かって延伸された、一定以上の幅を有する探索領域を、入力画像上に設定し、
前記探索領域において前記開始領域側から前記終了領域側に向かってエッジを探索する、
処理を実行させ、
前記エッジを探索する処理では、前記探索領域内の画素のうち、肌色領域と肌色領域とに挟まれた領域に位置すると判定された画素を、エッジと判定する画素から除外する、
ことを特徴とする輪郭検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、輪郭検出装置、輪郭検出方法および輪郭検出プログラムに関する。
【背景技術】
【０００２】
写真などの画像から画像処理によって特定の物体の輪郭を検出する技術が知られている。このような技術は、例えば、人の輪郭を検出して、輪郭外の背景画像を消去する、あるいは差し替えることなどに利用されている。
【０００３】
また、人などの所望の物体の輪郭を正確に検出するための技術として、輪郭を検出させる領域をマウスなどの入力デバイスを用いてユーザに指定させ、輪郭の検出範囲を指定された領域またはその近傍領域に限定する技術がある。例えば、ユーザ操作によって指定された始点と終点との間において、終点に向かってエッジ検出強度の大きい画素を探索していく方法がある。また、ユーザ操作によって指定された帯状領域において、その中心線と交差する幅方向に画素を走査することで輪郭点を探索する方法もある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２０９４３０号公報
【特許文献２】特開平７−９２６５０号公報
【特許文献３】特開２０００−３３９４８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
輪郭を検出させる領域をユーザに指定させ、指定された領域を始点側から終点側にエッジを探索する方法でも、人の輪郭を正確に検出できない場合がある。例えば、顔が正面を向いた状態での耳の近傍では、耳より顔の内側の領域に髪がかかっていることがある。この場合、耳の外縁部よりも髪の領域の外縁部の方が強いエッジと判断されて、耳より内側にある髪の領域の外縁部が輪郭として誤検出されることがある。
【０００６】
１つの側面では、本発明は、人の輪郭を高精度で検出可能な輪郭検出装置、輪郭検出方法および輪郭検出プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの案では、次のような輪郭検出装置が提供される。この輪郭検出装置は、入力受付手段および探索手段を有する。入力受付手段は、入力操作に応じて、開始領域から終了領域に向かって延伸された、一定以上の幅を有する探索領域を、入力画像上に設定する。探索手段は、探索領域において開始領域側から終了領域側に向かってエッジを探索する。また、探索手段は、探索領域内の画素のうち、肌色領域と肌色領域とに挟まれた領域に位置すると判定された画素を、エッジと判定する画素から除外する。
【０００８】
また、１つの案では、上記の輪郭検出装置と同様の処理が実行される輪郭検出方法、および、上記の輪郭検出装置と同様の処理をコンピュータに実行させる輪郭検出プログラムが提供される。
【発明の効果】
【０００９】
１態様によれば、人の輪郭を高精度で検出できる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態に係る輪郭検出装置の構成例および処理例を示す図である。
【図２】第２の実施の形態に係る輪郭検出装置のハードウェア構成例を示す図である。
【図３】輪郭検出装置が備える処理機能の構成例を示すブロック図である。
【図４】トレース操作実行時における状態遷移の例を示す図である。
【図５】トレース方向角度の算出方法について説明するための図である。
【図６】トレース領域情報に登録される情報の例を示す図である。
【図７】トレース方向角度の分類の例を示す図である。
【図８】角度範囲とエッジ探索範囲との関係の例について示す図である。
【図９】エッジ強度の算出例を示す図である。
【図１０】トレース領域の設定例を示す図である。
【図１１】輪郭線が誤検出されるケースについて示す図である。
【図１２】第２の実施の形態に係る輪郭検出装置の全体処理手順の例を示すフローチャートである。
【図１３】ステップＳ１９の第１の処理例を示すフローチャートである。
【図１４】第１の処理例における調査方向の設定例を示す図である。
【図１５】ステップＳ１９の第２の処理例を示すフローチャートである。
【図１６】図１５のステップＳ５７の処理手順の例を示すフローチャートである。
【図１７】第２の処理例における調査方向の設定例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る輪郭検出装置の構成例および処理例を示す図である。図１の輪郭検出装置１は、入力画像から物体の輪郭線を検出する処理を実行する装置であり、入力受付手段２および探索手段３を有する。
【００１２】
なお、入力受付手段２および探索手段３の各処理は、例えば、輪郭検出装置１が備えるプロセッサが所定のプログラムを実行することで実現される。あるいは、入力受付手段２および探索手段３の処理の少なくとも一部は、専用回路によって実現されてもよい。
【００１３】
入力受付手段２は、ユーザの入力操作に応じて、エッジを探索するための探索領域を入力画像上に設定する。探索領域は、開始領域から終了領域に向かって延伸された、一定以上の幅を有する領域である。図１では、開始領域１１から終了領域１２に向かって緩やかに湾曲した探索領域１０の例を示している。
【００１４】
探索領域は、できるだけ簡易な操作によって設定できることが望ましい。探索領域の設定方法の例としては、ユーザが画面上の指示位置を連続的に移動させる操作を行うと、その移動軌跡に沿って一定の幅の探索領域が設定されるという方法が考えられる。この場合の指示位置とは、例えば、マウスカーソルの位置や、タッチパネルに対する接触位置とすることができる。また、類似する例として、ユーザが一定の大きさのアイコン画像を移動させる操作を行うと、アイコン画像が移動した領域が探索領域に設定されるという方法も考えられる。
【００１５】
探索手段３は、設定された探索領域において開始領域側から終了領域側に向かってエッジを探索する。
例えば、探索手段３は、探索領域において、その開始領域のいずれかの画素を起点として着目画素を設定し、着目画素の周囲画素のうち、着目画素の位置での探索領域の延伸方向を含む所定のエッジ探索範囲に含まれる画素をエッジ候補画素とする。探索手段３は、エッジ候補画素からエッジである可能性が高い画素を判定して次の着目画素に設定し、同様の処理を行う。探索手段３は、このようなエッジ探索処理を、着目画素が終了領域に達するまで繰り返す。これにより、設定された着目画素群が輪郭線として検出される。
【００１６】
図１には、画素２１を着目画素に設定した場合が例示されており、このとき、画素２１の位置での探索領域１０の延伸方向Ａ１を含むエッジ探索範囲Ｂ１が設定される。探索手段３は、例えば、画素２１の周囲画素のうちエッジ探索範囲Ｂ１に含まれる画素をエッジ候補画素とする。エッジ探索範囲Ｂ１は、例えば、延伸方向Ａ１の角度を略中心とした所定角度の範囲として設定される。探索手段３は、エッジ候補画素の中でエッジである可能性が最も高い画素を画素２２と判定した場合には、画素２２を次の着目画素に設定する。
【００１７】
このように、探索領域において開始領域側から終了領域側に向かってエッジが探索されることにより、探索領域の延伸方向から大きく外れた方向に伸びる輪郭線が検出されにくくなる。このため、所望の輪郭線に沿って探索領域が設定されるようにユーザが操作することで、探索領域に沿って伸びている輪郭線、すなわちユーザが意図する輪郭線を精度よく検出できるようになる。
【００１８】
ところで、人の輪郭線、特に人の頭部の輪郭線が、肌色領域と肌色領域とに挟まれた領域に位置することは、通常は考えられない。そこで、探索手段３は、探索領域内の画素のうち、肌色領域と肌色領域とに挟まれた領域に位置すると判定された画素を、エッジと判定する画素から除外する。これにより、人の輪郭線が誤検出される可能性が低減され、検出精度が向上する。
【００１９】
例えば、探索手段３が、図１の画素２３を着目画素に設定したものとする。また、画素２３に対応するエッジ探索範囲Ｂ２が、画素２３での探索領域１０の延伸方向Ａ２を含むように設定され、このエッジ探索範囲Ｂ２に位置する画素の１つである画素２４が、肌色領域３１と肌色領域３２とに挟まれた領域３３に位置するものとする。この場合、探索手段３は、たとえ画素２４がエッジ探索画素のうちエッジである可能性が最も高いとしても、この画素２４をエッジ探索候補から除外する。すなわち、画素２４は、次の着目画素として設定されなくなる。
【００２０】
前述のように、人の輪郭線が肌色領域と肌色領域とに挟まれた領域に位置することは、通常は考えられない。このため、仮に、探索手段３が肌色領域と肌色領域とに挟まれた領域を次の着目画素に設定した場合、設定した着目画素は人の輪郭線に沿っているとは考えにくく、誤検出が発生した可能性が高い。従って、探索手段３は、このような領域に位置する画素をエッジ候補画素から除外することで、人の輪郭線の誤検出が発生する可能性を低減でき、人の輪郭線の検出精度を向上させることができる。
【００２１】
肌色領域と肌色領域との間の領域が次の着目画素として誤って設定されるケースとしては、例えば、顔が正面を向いた状態において、耳が露出しており、耳と顔との間の領域に頭髪がかかっているケースがある。あるいは、頭髪の一部が顔の外縁部より内側にかかっているケースも考えられる。上記の輪郭検出装置１によれば、このようなケースにおける人の輪郭線の誤検出の発生可能性を低減できる。
【００２２】
また、上記のように画素をエッジと判定する画素から除外する代わりに、人の輪郭線の形状に正確に沿って探索領域が設定されるようにユーザが操作することで、エッジの検出精度は向上する。しかしながら、例えば耳の外縁部の形状に沿って探索領域が設定されるようにユーザが操作することは、大きな手間を必要とし、ユーザの作業効率を低下させる。
【００２３】
本実施の形態の輪郭検出装置１によれば、耳の近傍領域においても、耳の外縁部の形状に正確に沿わせずに、頭部全体についての大まかな輪郭線に沿うように探索領域が設定されることで、耳の外縁部が輪郭線として検出されるようになる。すなわち、人の輪郭検出を高精度かつ高効率で実行可能になる。
【００２４】
なお、探索手段３は、画素が肌色領域と肌色領域とに挟まれた領域に位置するかの判定処理を、例えば、その画素を挟む両側の領域の色情報を基に行ってもよいが、他の方法として例えば、入力画像からの顔の検出結果を基に次のように行ってもよい。探索手段３は、検出された顔の位置と、判定対象とする画素との位置関係に基づいて、判定対象の画素よりも検出された顔の外側方向に肌色領域が存在するかを判定する。探索手段３は、外側方向に肌色領域が存在すると判定した場合に、判定対象画素は肌色領域と肌色領域とに挟まれた領域に位置するとみなし、その画素をエッジ候補画素から除外する。
【００２５】
〔第２の実施の形態〕
次に、入力画像から人の顔を検出する機能を備えた輪郭検出装置の例について説明する。図２は、第２の実施の形態に係る輪郭検出装置のハードウェア構成例を示す図である。輪郭検出装置１００は、例えば、図２に示すようなコンピュータとして実現される。
【００２６】
輪郭検出装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２７】
ＲＡＭ１０２は、輪郭検出装置１００の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。
【００２８】
バス１０９に接続されている周辺機器としては、例えば、ＨＤＤ（Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００２９】
ＨＤＤ１０３は、内蔵したディスクに対して磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、輪郭検出装置１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＳＳＤ（Solid State Drive）などの他の種類の不揮発性記憶装置を使用することもできる。
【００３０】
グラフィック処理装置１０４には、モニタ１０４ａが接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ１０４ａの画面に表示させる。モニタ１０４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３１】
入力インタフェース１０５には、キーボード１０５ａとマウス１０５ｂとが接続されている。入力インタフェース１０５は、キーボード１０５ａやマウス１０５ｂから送られてくる信号をプロセッサ１０１に送信する。なお、マウス１０５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３２】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク１０６ａに記録されたデータの読み取りを行う。光ディスク１０６ａは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク１０６ａには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３３】
機器接続インタフェース１０７は、輪郭検出装置１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置１０７ａやメモリリーダライタ１０７ｂを接続することができる。メモリ装置１０７ａは、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ１０７ｂは、メモリカード１０７ｃへのデータの書き込み、またはメモリカード１０７ｃからのデータの読み出しを行う装置である。メモリカード１０７ｃは、カード型の記録媒体である。
【００３４】
ネットワークインタフェース１０８は、ネットワーク１０８ａに接続されている。ネットワークインタフェース１０８は、ネットワーク１０８ａを介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００３５】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示した輪郭検出装置１も、図２に示した輪郭検出装置１００と同様のハードウェアにより実現することができる。
【００３６】
図３は、輪郭検出装置が備える処理機能の構成例を示すブロック図である。輪郭検出装置１００は、ユーザの入力操作に応じて入力画像上に設定された、一定以上の幅を有する探索領域において、その探索領域の延伸方向に対してエッジ強度が大きい画素を順次探索していくことで、入力画像上の人の輪郭線を検出する。特に、輪郭検出装置１００は、顔が正面を向いた人の頭部近傍の輪郭線を高精度に検出可能とするものである。また、探索領域は、所定の大きさのアイコン画像をユーザがドラッグ操作により移動させる操作を行ったときに、アイコン画像が移動した領域として設定されるものとする。
【００３７】
輪郭検出装置１００は、画像読み込み部１１１、顔検出部１１２、トレース入力部１１３および輪郭検出部１１４を有する。画像読み込み部１１１、顔検出部１１２、トレース入力部１１３および輪郭検出部１１４の各処理は、プロセッサ１０１が所定のプログラムを実行することで実現される。ただし、これらの処理の少なくとも一部が、例えばグラフィック処理装置１０４内の回路などの専用回路によって実現されてもよい。
【００３８】
また、輪郭検出装置１００の記憶装置には、顔位置情報１２１、トレース領域情報１２２、探索範囲情報１２３および座標リスト１２４が記憶される。これらの情報のうち、探索範囲情報１２３は、ＨＤＤ１０３などの不揮発性記憶装置にあらかじめ記憶される。一方、顔位置情報１２１、トレース領域情報１２２および座標リスト１２４は、少なくとも、ＲＡＭ１０２などの揮発性記憶装置に一時的に記憶される。
【００３９】
画像読み込み部１１１は、人が映った入力画像を、ＨＤＤ１０３などの輪郭検出装置１００に接続された不揮発性記憶装置や、ネットワーク１０８ａ上の情報処理装置などからＲＡＭ１０２へ読み込む。本実施の形態では、入力画像には、少なくとも、顔が略正面を向いた人の頭部が映っているものとする。
【００４０】
顔検出部１１２は、入力画像から人の顔を検出し、検出された顔の位置を示す顔位置情報１２１を設定する。顔位置情報１２１は、着目画素が顔の右側または左側のどちらに位置するかを判定するための情報であり、例えば、水平方向（ｙ方向）に対する顔の中心を示す座標が設定される。
【００４１】
トレース入力部１１３は、所定の大きさのアイコン画像をユーザがドラッグ操作により移動させる「トレース操作」を行ったとき、アイコン画像が移動した領域を探索領域に設定する。以下、アイコン画像が移動した領域を「トレース領域」と呼ぶ。トレース領域を示す情報は、トレース領域情報１２２としてＲＡＭ１０２に記憶される。
【００４２】
トレース入力部１１３は、設定したトレース領域内の画素のそれぞれについて、「トレース方向角度」を算出し、算出したトレース方向角度を各画素に対応付けてトレース領域情報１２２に登録する。トレース方向角度は、画素ごとにエッジ探索のための進行可能方向を判定するための基準角度である。トレース方向角度の詳細については後述する。
【００４３】
探索範囲情報１２３には、トレース方向角度ごとに、エッジ探索を行う範囲を示すエッジ探索範囲が対応付けて記憶されている。
輪郭検出部１１４は、トレース領域における開始領域から終了領域に向かって、エッジ強度が大きい画素を順次辿っていくことで、輪郭線を検出する。このようなエッジ探索処理において、輪郭検出部１１４は、顔位置情報１２１、トレース領域情報１２２および探索範囲情報１２３を参照する。輪郭検出部１１４は、着目画素を設定するたびに、その着目画素の座標を座標リスト１２４に登録する。そして、エッジ探索処理が終了すると、座標リスト１２４は検出された輪郭線を示す情報として出力される。
【００４４】
また、輪郭検出部１１４は、着目画素の周囲画素からエッジ強度が最も大きい画素を選択したとき、選択した画素の位置でのトレース方向と、選択した画素と顔との位置関係とに基づいて、選択した画素について、本来あるべきでない方向に肌色領域があるかを判定する。輪郭検出部１１４は、あるべきでない方向に肌色領域がある場合には、選択した画素を次の着目画素に設定せずに、エッジと判定する画素から除外する。これにより、耳の近傍領域や頭髪を含む領域でも、人の輪郭線を正確に検出できるようにする。
【００４５】
次に、輪郭検出装置１００の基本的な輪郭検出処理手順について説明する。基本的な輪郭検出処理は、次のような処理ステップを含む。
（１）トレース操作に応じてトレース領域を設定する。
【００４６】
（２）トレース領域の各画素について、トレース方向角度を算出する。
（３）トレース領域の開始領域内のいずれかの画素を着目画素に設定し、着目画素がトレース領域の終了領域に達するまで、次の（３−１）〜（３−３）を繰り返す。
【００４７】
（３−１）着目画素についてのトレース方向角度に対応するエッジ探索範囲を、探索範囲情報１２３を基に判別する。
（３−２）着目画素の周囲画素のうちエッジ探索範囲に含まれる画素をエッジ候補画素とし、各エッジ候補画素のエッジ強度を算出する。
【００４８】
（３−３）エッジ強度が最も大きいエッジ候補画素を次の着目画素に設定する。
なお、トレース方向角度の算出は、（２）の時点でトレース領域内の全画素について行われるのではなく、（３−１）の時点で、設定された着目画素について行われてもよい。
【００４９】
以下、図４〜図９を用いて、上記の（１）〜（３）の処理について説明する。
まず、図４は、トレース操作実行時における状態遷移の例を示す図である。この図４を用いて、トレース操作およびトレース領域について説明する。
【００５０】
本実施の形態では例として、ユーザは、トレース領域を指定するためのトレース操作を、マウスを用いて行うものとする。そして、ユーザが、矩形のアイコン画像２０１をドラッグ操作により移動させることで、トレース領域２１０が設定されるものとする。
【００５１】
図４において、トレース領域２１０は、破線によって囲まれた領域である。また、図４中の点線矢印は、アイコン画像２０１の中心点が移動した軌跡を示し、以下、この軌跡を「トレース領域の中心線」と呼ぶ。
【００５２】
図４の状態１のように、ユーザが、マウスカーソルを入力画像２００上の所望の位置に配した状態でマウスボタンを押下すると、マウスカーソルの位置にアイコン画像２０１が表示される。なお、アイコン画像２０１は、マウスボタン押下の前からマウスカーソルの位置に表示されていてもよい。
【００５３】
ユーザが、マウスボタンを押下したままでマウスを動かして画面上の指示位置を移動させると、その移動に伴ってアイコン画像２０１も移動する。このとき、図４の状態２のように、アイコン画像２０１が移動した領域がトレース領域２１０に設定されるとともに、設定されたトレース領域２１０が画面上に識別可能な状態で表示される。その後、ユーザが所望の位置でマウスボタンの押下を終了すると、図４の状態３に示すように、トレース領域２１０の設定が完了する。
【００５４】
人の頭部の輪郭線を検出させる場合、ユーザは、アイコン画像２０１の内部に常に入力画像２００上の人の頭部の輪郭が含まれるように、アイコン画像２０１を移動させればよい。
【００５５】
なお、タッチパネルが用いられる場合、ユーザは例えば、入力画像２００上の所望の位置に指を接触させ、指が接触された状態を保ったまま接触位置を移動させ、その後、所望の位置で指を離す、という操作により、トレース領域２１０を指定することができる。
【００５６】
また、図４の例では、アイコン画像２０１が移動した領域がトレース領域２１０に設定されているが、その他に例えば、マウスカーソルの軌跡または指の接触位置の軌跡を中心とした一定幅の領域が、トレース領域２１０に設定されてもよい。
【００５７】
また、アイコン画像２０１の形状は、図４のような矩形に限らない。
ところで、後述するように、エッジ探索の始点および終点を判別するために、トレース領域２１０の開始領域および終了領域が設定される。開始領域としては、トレース領域２１０の始点側の端部に隣接する複数画素が設定され、終了領域としては、トレース領域２１０の終点側の端部に隣接する複数画素が設定される。
【００５８】
図４のように矩形のアイコン画像２０１が用いられる場合、例えば、開始領域としては、トレース領域２１０においてアイコン画像２０１が最初に配置された領域のうち、端部に面する１辺または２辺の画素が設定される。アイコン画像２０１が初期位置から左右方向（ｘ軸方向）または上下方向（ｙ軸方向）に移動した場合、開始領域としては、端部に面する１辺の画素が設定される。一方、アイコン画像２０１が初期位置から斜めに移動した場合、開始領域としては、端部に面する２辺の画素が設定される。図４は後者の例を示しており、辺２１１，２１２に隣接する画素が開始領域に設定される。
【００５９】
また、終了領域についても同様であり、トレース領域２１０においてアイコン画像２０１が最後に配置された領域のうち、端部に面する１辺または２辺の画素が設定される。アイコン画像２０１が最終位置に対して左右方向（ｘ軸方向）または上下方向（ｙ軸方向）に移動した場合、終了領域としては、端部に面する１辺の画素が設定される。一方、アイコン画像２０１が最終位置に対して斜めに移動した場合、終了領域としては、端部に面する２辺の画素が設定される。図４は後者の例を示しており、辺２１３，２１４に隣接する画素が終了領域に設定される。
【００６０】
図５は、トレース方向角度の算出方法について説明するための図である。なお、図５では、図４と同様に、破線によって囲まれた領域がトレース領域２１０を示し、点線矢印はトレース領域２１０の中心線を示している。
【００６１】
図４に示したようにトレース領域２１０が設定されると、トレース入力部１１３は、トレース領域２１０内の各画素に対してトレース方向角度を算出し、トレース領域情報１２２に登録する。トレース方向角度は、各画素の位置におけるトレース領域２１０の延伸方向の角度を示す。トレース方向角度は、対応する画素に着目したとき、その周囲画素のうちどの画素を探索対象とするかを決定するための基準角度となる。
【００６２】
具体的な算出方法の例を、図５における画素２２１を例に挙げて説明する。トレース方向角度θ１は、画面上の所定の基準方向（本実施の形態では垂直方向）に対する角度として設定される。画素２２１についてのトレース方向角度θ１は、画素２２１から中心線に対して下ろした垂線と中心線との交点２２２における、中心線の接線２２３の傾きθ２として算出することができる。
【００６３】
なお、上記の接線２２３の傾きθ２は、演算負荷の軽減や処理速度の向上を目的として、より簡易な計算方法によって近似的に算出されてもよい。例えば、交点２２２の座標と、交点２２２を起点として終点側に所定距離だけ離れた中心線上の座標とを結ぶ直線の角度が、接線２２３の傾きθ２の近似値として算出されてもよい。
【００６４】
図６は、トレース領域情報に登録される情報の例を示す図である。トレース入力部１１３は、ユーザの操作入力によってトレース領域２１０が設定されると、トレース領域情報１２２に、トレース領域２１０に含まれる画素ごとにレコードを作成する。各レコードには、例えば、座標、トレース方向角度、開始領域フラグおよび終了領域フラグの欄が設けられる。
【００６５】
座標の欄には、各画素の座標が登録される。トレース方向角度の欄には、図５で説明した画素ごとのトレース方向角度が登録される。開始領域フラグは、該当の画素が図４で説明した開始領域に属するか否かを示すフラグであり、開始領域に属する場合は「１」が登録され、属さない場合は「０」が登録される。終了領域フラグは、該当の画素が図４で説明した終了領域に属するか否かを示すフラグであり、終了領域に属する場合は「１」が登録され、属さない場合は「０」が登録される。なお、終了領域に属する画素は、その画素が着目画素に設定されたときにそれ以上のエッジ探索が行われないので、その画素についてはトレース方向角度が登録されていなくてよい。
【００６６】
図７は、トレース方向角度の分類の例を示す図である。前述のように、探索範囲情報１２３には、トレース方向角度ごとに、エッジ探索を行う範囲を示すエッジ探索範囲が対応付けて記憶されている。本実施の形態では、トレース方向角度が図７に示す８つの角度範囲Ｄ０〜Ｄ７に分類され、分類された角度範囲ごとにエッジ探索範囲が対応付けられる。
【００６７】
ここで、トレース方向角度が８つの角度範囲Ｄ０〜Ｄ７に分類される理由は、トレース領域内の着目画素の周囲に８つの画素が存在することと関係する。角度範囲Ｄ０〜Ｄ７は、それぞれ着目画素の上側、右上側、右側、右下側、下側、左下側、左側、左上側に対して、それぞれ略均等の角度を有するように設定されればよい。
【００６８】
図７の例では、表示画面の上側を角度の基準方向として、３３８°以上３６０°未満および０°以上２４°未満の範囲を角度範囲Ｄ０に、２４°以上６８°未満の範囲を角度範囲Ｄ１に、６８°以上１１４°未満の範囲を角度範囲Ｄ２に、１１４°以上１５８°未満の範囲を角度範囲Ｄ３に、１５８°以上２０４°未満の範囲を角度範囲Ｄ４に、２０４°以上２４８°未満の範囲を角度範囲Ｄ５に、２４８°以上２９４°未満の範囲を角度範囲Ｄ６に、２９４°以上３３８°未満の範囲を角度範囲Ｄ７に、それぞれ設定している。
【００６９】
図８は、角度範囲とエッジ探索範囲との関係の例について示す図である。なお、図８では、着目画素の周囲画素について、上側、右上側、右側、右下側、下側、左下側、左側、左上側の順にＮ０，Ｎ１，Ｎ２，Ｎ３，Ｎ４，Ｎ５，Ｎ６，Ｎ７という符号を付して示している。
【００７０】
図８に示す「エッジ候補画素」とは、エッジ探索の対象とする画素、より具体的には、エッジ強度の計算を行う対象の画素を示す。エッジ探索範囲とは、着目画素の周囲画素のうちエッジ候補画素が含まれる範囲を示す。輪郭検出部１１４によるエッジ探索範囲は、着目画素について算出されたトレース方向角度が示す方向の近傍範囲に限定される。換言すると、次の着目画素として設定可能な画素は、現在の着目画素の周囲画素のうちエッジ探索範囲に含まれる画素に限定される。これにより、トレース領域の延伸方向から大きく外れた方向に位置するエッジが検出されなくなり、ユーザが意図する輪郭線が検出されやすくなる。
【００７１】
本実施の形態では例として、図８に示すように、エッジ探索範囲は図７に示した角度範囲ごとに設定される。トレース方向角度が角度範囲Ｄ０に含まれる場合、エッジ探索範囲は着目画素の上方向の近傍に設定され、画素Ｎ７，Ｎ０，Ｎ１がエッジ候補画素となる。トレース方向角度が角度範囲Ｄ１に含まれる場合、エッジ探索範囲は着目画素の右上方向の近傍に設定され、画素Ｎ０，Ｎ１，Ｎ２がエッジ候補画素となる。トレース方向角度が角度範囲Ｄ２に含まれる場合、エッジ探索範囲は着目画素の右方向の近傍に設定され、画素Ｎ１，Ｎ２，Ｎ３がエッジ候補画素となる。トレース方向角度が角度範囲Ｄ３に含まれる場合、エッジ探索範囲は着目画素の右下方向の近傍に設定され、画素Ｎ２，Ｎ３，Ｎ４がエッジ候補画素となる。
【００７２】
トレース方向角度が角度範囲Ｄ４に含まれる場合、エッジ探索範囲は着目画素の下方向の近傍に設定され、画素Ｎ３，Ｎ４，Ｎ５がエッジ候補画素となる。トレース方向角度が角度範囲Ｄ５に含まれる場合、エッジ探索範囲は着目画素の左下方向の近傍に設定され、画素Ｎ４，Ｎ５，Ｎ６がエッジ候補画素となる。トレース方向角度が角度範囲Ｄ６に含まれる場合、エッジ探索範囲は着目画素の左方向の近傍に設定され、画素Ｎ５，Ｎ６，Ｎ７がエッジ候補画素となる。トレース方向角度が角度範囲Ｄ７に含まれる場合、エッジ探索範囲は着目画素の左上方向の近傍に設定され、画素Ｎ６，Ｎ７，Ｎ０がエッジ候補画素となる。
【００７３】
なお、図８の例ではエッジ候補画素を着目画素の周囲１画素の範囲に設定したが、エッジ候補画素を着目画素の周囲複数画素の範囲に設定してもよい。
探索範囲情報１２３には、角度範囲ごとに、エッジ候補画素の位置を示す情報（例えば、図８に示すＮ０〜Ｎ７）があらかじめ登録される。輪郭検出部１１４は、着目画素を設定すると、着目画素についてのトレース角度範囲に対応するエッジ候補画素を、探索範囲情報１２３に基づいて判別する。輪郭検出部１１４は、判別したエッジ候補画素のそれぞれについてエッジ強度を算出し、エッジ強度が最も大きい画素を次の着目画素に設定する。
【００７４】
図９は、エッジ強度の算出例を示す図である。エッジ強度は、対象の画素がエッジである可能性の高さを示す指標である。この図９では、Ｓｏｂｅｌフィルタを用いてエッジ候補画素のエッジ強度を算出する例について示す。
【００７５】
Ｓｏｂｅｌフィルタを用いた方法では、ｘ方向およびｙ方向のそれぞれについてのフィルタ係数が用意される。それぞれのフィルタ係数を用いて、エッジ強度のｘ成分、ｙ成分が算出される。そして、ｘ成分およびｙ成分を合成することでエッジ強度が算出される。
【００７６】
ｘ，ｙの各方向のフィルタ演算では、エッジ候補画素およびその周囲画素の合計９個の画素にそれぞれフィルタ係数が設定される。図９の例では、エッジ候補画素についてのｘ方向のフィルタ演算は、「左上画素の輝度値×（−１）＋上側画素の輝度値×０＋右上側画素の輝度値×１＋左側画素の輝度値×（−２）＋エッジ候補画素の輝度値×０＋右側画素の輝度値×２＋左下側画素の輝度値×（−１）＋下側画素の輝度値×０＋右下側画素の輝度値×１」なる式によって行われ、これによりエッジ強度のｘ成分が算出される。
【００７７】
また、図９の例では、エッジ候補画素についてのｙ方向のフィルタ演算は、「左上画素の輝度値×（−１）＋上側画素の輝度値×（−２）＋右上側画素の輝度値×（−１）＋左側画素の輝度値×０＋エッジ候補画素の輝度値×０＋右側画素の輝度値×０＋左下側画素の輝度値×１＋下側画素の輝度値×２＋右下側画素の輝度値×１」なる式によって行われ、これによりエッジ強度のｙ成分が算出される。
【００７８】
そして、ｘ成分の二乗値とｙ成分の二乗値とを加算した値の平方根をとることで、エッジ強度Ｅが算出される。
図１０は、トレース領域の設定例を示す図である。ユーザは、図１０に示すように、アイコン画像の内部に常に人の輪郭線が包含されるように、アイコン画像を移動させる。これにより、人の輪郭線を含む領域にトレース領域２１０が設定される。上記の図４〜図９において説明した輪郭検出手順によれば、トレース領域２１０の延伸方向（すなわち、アイコン画像の移動方向）から大きく外れた方向に位置する輪郭線が検出されなくなり、ユーザが意図する輪郭線が検出されやすくなる。
【００７９】
また、アイコン画像をある程度の大きさ以上に設定することで、ユーザは、頭部の輪郭線に大まかに沿うようにアイコン画像を移動させるだけで、頭部の輪郭線を正確に検出させることができるようになる。例えば、アイコン画像の左右の幅を、耳の水平方向の範囲より大きく設定する。この場合、ユーザは、図１０に示すように、頭部の輪郭線に大まかに沿ってアイコン画像を移動させる。このとき、耳の形状に沿ってアイコン画像の移動方向を変化させる必要はなく、耳の水平方向の範囲がアイコン画像の内部に包含されるようにアイコン画像が移動されればよい。このような簡単な操作により、耳の近傍領域についても輪郭線を正確に検出できる。
【００８０】
しかしながら、例えば、耳の近傍領域において頭髪が存在する場合には、次のように誤った輪郭線が検出される場合がある。図１１は、輪郭線が誤検出されるケースについて示す図である。
【００８１】
図１１の領域３０１においては、耳の領域と顔の領域との間に頭髪の領域が存在する。頭髪の領域と耳や顔の肌色領域との境界部では、エッジ強度が比較的大きくなる。このため、輪郭検出部１１４は、耳の外縁部ではなく、耳より顔の内側方向に存在する頭髪の領域の外縁部を、人の輪郭として誤検出する場合がある。また、図１０のようにトレース領域が頭部の輪郭線に大まかに沿うように設定された場合、耳の近傍領域の画素についてのトレース方向角度は概ね上下方向と一致する。このことから、輪郭検出部１１４は、頭髪の領域の外縁部を一旦人の輪郭線として誤検出すると、誤検出の状態のまま上下方向へのエッジ探索を続行して、耳の領域の他端まで進行してしまう可能性もある。
【００８２】
また、上記のような誤検出は、耳の近傍領域に限らず、例えば、顔の外縁部より内側に頭髪が流れているような領域でも発生し得る。
そこで、輪郭検出部１１４は、エッジ候補画素の中からエッジ強度が最も大きい画素を選択したとき、選択した画素が肌色領域と肌色領域との間の領域に位置する場合には、選択した画素を次の着目画素に設定せずに、エッジ候補画素から除外する。この方法の具体例として、輪郭検出部１１４は、選択した画素の位置でのトレース方向と、選択した画素と顔との位置関係とに基づいて、選択した画素について、本来あるべきでない方向に肌色領域があるかを判定する。輪郭検出部１１４は、あるべきでない方向に肌色領域がある場合には、選択した画素を次の着目画素に設定せずに、エッジと判定する画素から除外する。これにより、耳の近傍領域や頭髪を含む領域でも、人の輪郭線を正確に検出できるようになる。
【００８３】
次に、輪郭検出装置１００の処理手順について、フローチャートを用いて説明する。まず、図１２は、第２の実施の形態に係る輪郭検出装置の全体処理手順の例を示すフローチャートである。
【００８４】
［ステップＳ１１］画像読み込み部１１１は、入力画像の画像データをＲＡＭ１０２に読み込む。
［ステップＳ１２］顔検出部１１２は、入力画像から顔検出を行い、検出された顔の位置を示す情報を顔位置情報１２１としてＲＡＭ１０２に保存する。
【００８５】
［ステップＳ１３］トレース入力部１１３は、ユーザによるトレース操作を受け付ける。
［ステップＳ１４］トレース入力部１１３は、トレース操作に基づいて、トレース領域を設定する。トレース入力部１１３は、トレース領域内の各画素に対応するレコードをトレース領域情報１２２に作成し、各画素の座標を登録する。また、トレース入力部１１３は、各画素についてのトレース方向角度を算出して、トレース領域情報１２２に登録する。さらに、トレース入力部１１３は、トレース領域における開始領域および終了領域を判別して、その判別結果を基にトレース領域情報１２２の開始領域フラグおよび終了領域フラグを設定する。
【００８６】
［ステップＳ１５］輪郭検出部１１４は、トレース領域における開始領域の各画素のエッジ強度を算出し、エッジ強度が最も大きい画素を最初の着目画素に設定する。また、輪郭検出部１１４は、設定した着目画素の座標を座標リスト１２４に登録する。
【００８７】
［ステップＳ１６］輪郭検出部１１４は、トレース領域情報１２２から、現在の着目画素に対応付けられたトレース方向角度を読み出す。輪郭検出部１１４は、探索範囲情報１２３を参照し、読み出したトレース方向角度が属する角度範囲に対応するエッジ候補画素の位置を判別する。
【００８８】
［ステップＳ１７］輪郭検出部１１４は、エッジ候補画素のそれぞれについて、エッジ強度を算出する。
［ステップＳ１８］輪郭検出部１１４は、未選択のエッジ候補画素の中から、エッジ強度が最大の画素を選択する。
【００８９】
［ステップＳ１９］輪郭検出部１１４は、ステップＳ１８で選択した画素についてのトレース方向、および、選択した画素と顔位置情報１２１に登録された顔の位置との関係に基づいて、選択した画素について、本来あるべきでない方向に肌色領域があるかを判定する。あるべきでない方向に肌色領域がある場合には、誤検出と判定されて、ステップＳ２０の処理が実行される。一方、あるべきでない方向に肌色領域がない場合には、誤検出でないと判定されて、ステップＳ２１の処理が実行される。
【００９０】
［ステップＳ２０］輪郭検出部１１４は、ステップＳ１８で選択した画素をエッジ候補画素から除外する。輪郭検出部１１４は、例えば、ステップＳ１８で選択した画素の位置をＲＡＭ１０２に一時的に記憶する。
【００９１】
この後、ステップＳ１８の処理が再実行されるが、ステップＳ２０の処理によってエッジ候補画素から除外された画素は、次のステップＳ１８において選択済みの画素となって、エッジ強度が最大の画素として選択されない。
【００９２】
［ステップＳ２１］輪郭検出部１１４は、トレース領域情報１２２に登録された、ステップＳ１８で選択画素についての終了領域フラグに基づき、選択した画素が終了領域に含まれるかを判定する。選択した画素が終了領域に含まれない場合には、ステップＳ２２の処理が実行され、含まれる場合には、ステップＳ２３の処理が実行される。
【００９３】
［ステップＳ２２］輪郭検出部１１４は、着目画素を、ステップＳ１８で選択した画素に更新し、この画素の座標を座標リスト１２４に登録する。この後、ステップＳ１６が実行されて、更新された着目画素についての処理が行われる。
【００９４】
［ステップＳ２３］輪郭検出部１１４は、ステップＳ１８で選択した画素の座標を座標リスト１２４に登録した後、座標リスト１２４を、検出された輪郭線を示す情報として出力する。
【００９５】
以上の図１２の処理によれば、耳の近傍領域や頭髪を含む領域でも、人の頭部の輪郭線を正確に検出できるようになる。また、ユーザが、耳の外縁部や頭髪の領域の外縁部の形状に沿って忠実にアイコン画像を移動させなくても、これらの領域において頭部の輪郭線が精度よく検出される。従って、簡単な操作によって輪郭線を効率よく検出することができる。例えば、輪郭線の検出対象とする入力画像が多数ある場合でも、輪郭線の検出精度を維持しつつ、作業時間を短縮することができる。
【００９６】
なお、上記の図１２の処理では、エッジ探索処理を開始する前のステップＳ１４において、事前にトレース領域内の全画素のトレース方向角度を算出した。しかし、他の例として、ステップＳ１４の時点ではトレース方向角度を算出せずに、ステップＳ１６の時点で着目画素のトレース方向角度を算出してもよい。
【００９７】
また、図１２の処理では、ステップＳ１５およびステップＳ１７の時点でエッジ強度の計算を行った。しかし、他の例として、ステップＳ１４でトレース領域を設定した後、ステップＳ１５の処理を実行する前の段階で、トレース方向角度と同様に、トレース領域内の全画素のエッジ強度をあらかじめ計算し、トレース領域情報１２２に登録しておいてもよい。この場合、ステップＳ１５およびステップＳ１７では、該当する画素のエッジ強度がトレース領域情報１２２から読み出される。
【００９８】
また、入力画像上の全画素についてのトレース方向角度とエッジ強度のいずれか、または両方が、ステップＳ１３でトレース操作を受け付けるより前の時点で計算されて、記憶装置に一時的に記憶されてもよい。
【００９９】
次に、ステップＳ１９の判定処理手順について、２つの処理例を挙げる。まず、図１３は、ステップＳ１９の第１の処理例を示すフローチャートである。
［ステップＳ３１］輪郭検出部１１４は、顔位置情報１２１に基づき、図１２のステップＳ１８で選択した画素が、顔の右側または左側のどちらに位置するかを判定する。顔の右側に位置する場合、ステップＳ３２の処理が実行され、左側に位置する場合、ステップＳ３３の処理が実行される。
【０１００】
［ステップＳ３２］輪郭検出部１１４は、選択した画素の位置でのトレース方向が下向きまたは上向きのどちらであるかを判定する。具体的には、輪郭検出部１１４は、トレース領域情報１２２から、選択した画素についてのトレース方向角度を読み出す。輪郭検出部１１４は、読み出したトレース方向角度の垂直成分（ｙ成分）が下方向を示す場合には、トレース方向が下向きと判定し、上方向を示す場合には、トレース方向が上向きと判定する。
【０１０１】
トレース方向が下向きの場合、ステップＳ３４の処理が実行され、上向きの場合、ステップＳ３５の処理が実行される。
［ステップＳ３３］輪郭検出部１１４は、選択した画素の位置でのトレース方向が下向きまたは上向きのどちらであるかを判定する。具体的な処理手順はステップＳ３２と同様である。トレース方向が下向きの場合、ステップＳ３５の処理が実行され、上向きの場合、ステップＳ３４の処理が実行される。
【０１０２】
［ステップＳ３４］輪郭検出部１１４は、肌色領域を調査する調査方向を、選択した画素の周囲画素のうち、選択した画素についてのトレース方向角度に対して左側に位置する画素の方向に設定する。
【０１０３】
例えば、輪郭検出部１１４は、選択した画素についてのトレース方向角度が、図７に示した角度範囲Ｄ０〜Ｄ７のどれに属するかを判定し、どの角度範囲に属するかによって、周囲画素のうち左側に位置する画素を決定する。ここで、選択した画素の周囲画素を、図８に示した符号（Ｎ０〜Ｎ７）を用いて示す。
【０１０４】
輪郭検出部１１４は、トレース方向角度が角度範囲Ｄ０に属する場合、周囲画素のうち画素Ｎ６を、左側に位置する画素に決定する。また、輪郭検出部１１４は、トレース方向角度が角度範囲Ｄ１に属する場合、周囲画素のうち画素Ｎ７を、左側に位置する画素に決定する。また、輪郭検出部１１４は、トレース方向角度が角度範囲Ｄ２に属する場合、周囲画素のうち画素Ｎ０を、左側に位置する画素に決定する。また、輪郭検出部１１４は、トレース方向角度が角度範囲Ｄ３に属する場合、周囲画素のうち画素Ｎ１を、左側に位置する画素に決定する。
【０１０５】
また、輪郭検出部１１４は、トレース方向角度が角度範囲Ｄ４に属する場合、周囲画素のうち画素Ｎ２を、左側に位置する画素に決定する。また、輪郭検出部１１４は、トレース方向角度が角度範囲Ｄ５に属する場合、周囲画素のうち画素Ｎ３を、左側に位置する画素に決定する。また、輪郭検出部１１４は、トレース方向角度が角度範囲Ｄ６に属する場合、周囲画素のうち画素Ｎ４を、左側に位置する画素に決定する。また、輪郭検出部１１４は、トレース方向角度が角度範囲Ｄ７に属する場合、周囲画素のうち画素Ｎ５を、左側に位置する画素に決定する。
【０１０６】
輪郭検出部１１４は、選択した画素から左側に位置する画素への方向を、肌色領域の調査方向とする。これにより、選択した画素についてのトレース方向角度に対して左向きに概ね９０°回転された方向に、肌色領域の調査方向が設定される。この調査方向は、顔の外側に向かう方向となり、これはすなわち、選択した画素が頭部の輪郭線に正しく沿っているのであれば、通常は肌色領域が存在しない方向となる。
【０１０７】
［ステップＳ３５］輪郭検出部１１４は、肌色領域を調査する調査方向を、選択した画素の周囲画素のうち、選択した画素についてのトレース方向角度に対して右側に位置する画素の方向に設定する。
【０１０８】
例えば、輪郭検出部１１４は、ステップＳ３４と同様に、選択した画素についてのトレース方向角度が図７の角度範囲Ｄ０〜Ｄ７のどれに属するかを判定し、どの角度範囲に属するかによって、周囲画素のうち右側に位置する画素を決定する。
【０１０９】
輪郭検出部１１４は、トレース方向角度が角度範囲Ｄ０に属する場合、周囲画素のうち画素Ｎ２を、右側に位置する画素に決定する。また、輪郭検出部１１４は、トレース方向角度が角度範囲Ｄ１に属する場合、周囲画素のうち画素Ｎ３を、右側に位置する画素に決定する。また、輪郭検出部１１４は、トレース方向角度が角度範囲Ｄ２に属する場合、周囲画素のうち画素Ｎ４を、右側に位置する画素に決定する。また、輪郭検出部１１４は、トレース方向角度が角度範囲Ｄ３に属する場合、周囲画素のうち画素Ｎ５を、右側に位置する画素に決定する。
【０１１０】
また、輪郭検出部１１４は、トレース方向角度が角度範囲Ｄ４に属する場合、周囲画素のうち画素Ｎ６を、右側に位置する画素に決定する。また、輪郭検出部１１４は、トレース方向角度が角度範囲Ｄ５に属する場合、周囲画素のうち画素Ｎ７を、右側に位置する画素に決定する。また、輪郭検出部１１４は、トレース方向角度が角度範囲Ｄ６に属する場合、周囲画素のうち画素Ｎ０を、右側に位置する画素に決定する。また、輪郭検出部１１４は、トレース方向角度が角度範囲Ｄ７に属する場合、周囲画素のうち画素Ｎ１を、右側に位置する画素に決定する。
【０１１１】
輪郭検出部１１４は、選択した画素から右側に位置する画素への方向を、肌色領域の調査方向とする。これにより、選択した画素についてのトレース方向角度に対して右向きに概ね９０°回転された方向に、肌色領域の調査方向が設定される。この調査方向は、顔の外側に向かう方向となり、これはすなわち、選択した画素が頭部の輪郭線に正しく沿っているのであれば、通常は肌色領域が存在しない方向となる。
【０１１２】
［ステップＳ３６］輪郭検出部１１４は、設定された調査方向に位置する最初の画素を、肌色領域かの判定対象とする調査画素に設定する。
［ステップＳ３７］輪郭検出部１１４は、トレース領域情報１２２に基づき、現在の調査画素がトレース領域外であるかを判定する。調査画素がトレース領域外である場合、ステップＳ４１の処理が実行され、調査画素がトレース領域内である場合、ステップＳ３８の処理が実行される。
【０１１３】
［ステップＳ３８］輪郭検出部１１４は、現在の調査画素が肌色かを判定する。この判定は、例えば、調査画素の色情報の値が所定の範囲に含まれるかによって行われる。調査画像が肌色である場合、ステップＳ３９の処理が実行され、肌色でない場合、ステップＳ４０の処理が実行される。
【０１１４】
［ステップＳ３９］輪郭検出部１１４は、あるべきでない方向に肌色領域があり、誤検出が発生したと判定する。すなわち、ステップＳ１９において「Ｙｅｓ」と判定される。
［ステップＳ４０］輪郭検出部１１４は、調査画素を、設定された調査方向に対して１画素分移動させる。この後、移動後の調査画素についてステップＳ３７の処理が再度実行される。
【０１１５】
［ステップＳ４１］ステップＳ３７で「Ｙｅｓ」と判定される場合とは、調査方向に対して肌色の画素が検出されずに、調査画素がトレース領域外に設定されてしまった場合である。この場合、輪郭検出部１１４は、あるべきでない方向に肌色領域がないので、ステップＳ１８で選択した画素は頭部の輪郭線に沿って正しく検出されたものであると判定する。すなわち、ステップＳ１９において「Ｎｏ」と判定される。
【０１１６】
図１４は、第１の処理例における調査方向の設定例を示す図である。なお、以下の説明では、座標（ｎ，ｍ）の画素を「画素（ｎ，ｍ）」と表記する。
図１４では例として、画素（１２，１２）が着目画素に設定されており、この場合のエッジ候補画素の中で、画素（１３，１３）のエッジ強度が最も大きいと判定されたとする。また、画素（１３，１３）についてのトレース方向角度が、図７の角度範囲Ｄ４に属するものとする。また、顔の中心位置は画素（１３，１３）の左側方向（−ｘ方向）であるものとする。
【０１１７】
この場合、輪郭検出部１１４は、画素（１３，１３）の左側に位置する画素を画素（１４，１３）と決定し、画素（１３，１３）から画素（１４，１３）に向かう方向（すなわち右方向）を肌色領域の調査方向とする。ここで、トレース領域の右端がｘ座標「１７」の位置にあるものとする。このとき、輪郭検出部１１４は、調査方向に存在する画素（１４，１３）、画素（１５，１３）、画素（１６，１３）、画素（１７，１３）を調査画素とし、これらのうち少なくとも１つが肌色であると判定すると、あるべきでない方向に肌色領域があると判定する。
【０１１８】
この場合、輪郭検出部１１４は、画素（１３，１３）は頭部の輪郭線に沿っていないと判定して、画素（１３，１３）をエッジ候補画素から除外する。そして、画素（１２，１２）についてのエッジ候補画素のうち、画素（１３，１３）の次にエッジ強度が大きい画素を選択して、上記と同様の肌色領域の判定を行う。
【０１１９】
以上の第１の処理例によれば、エッジ強度が大きいと判定された画素についてのトレース方向角度に対し、顔の外側方向に対して概ね９０°回転した方向に対して、肌色領域が調査される。これにより、本来あるべきでない方向に肌色領域があるかを判定することができる。
【０１２０】
次に、図１５は、ステップＳ１９の第２の処理例を示すフローチャートである。第２の処理例は、第１の処理例と比較して、肌色領域の調査方向を、トレース方向角度に応じたより正確な角度に設定可能とするものである。
【０１２１】
なお、図１５の処理では、図１２のステップＳ１８で選択した画素の座標を（Ｘ２，Ｙ２）、所定個数だけ前に設定された着目画素の座標を（Ｘ１，Ｙ１）とする。画素（Ｘ１，Ｙ１）は、例えば、アイコン画像の幅の１／２（ただし、小数点以下は切り捨て）に相当する個数だけ前に設定された着目画素とすることができる。
【０１２２】
［ステップＳ５１］輪郭検出部１１４は、ＸＤ＝Ｘ２−Ｘ１、ＹＤ＝Ｙ２−Ｙ１を計算する。
［ステップＳ５２］輪郭検出部１１４は、顔位置情報１２１に基づき、画素（Ｘ２，Ｙ２）が顔の右側または左側のどちらに位置するかを判定する。顔の右側に位置する場合、ステップＳ５３の処理が実行され、左側に位置する場合、ステップＳ５４処理が実行される。
【０１２３】
［ステップＳ５３］輪郭検出部１１４は、画素（Ｘ２，Ｙ２）の位置でのトレース方向が下向きまたは上向きのどちらであるかを判定する。トレース方向が下向きの場合、ステップＳ５５の処理が実行され、上向きの場合、ステップＳ５６の処理が実行される。
【０１２４】
［ステップＳ５４］輪郭検出部１１４は、画素（Ｘ２，Ｙ２）の位置でのトレース方向が下向きまたは上向きのどちらであるかを判定する。トレース方向が下向きの場合、ステップＳ５６の処理が実行され、上向きの場合、ステップＳ５５の処理が実行される。
【０１２５】
なお、ステップＳ５３，Ｓ５４は、図１３のステップＳ３２と同様の処理手順により実行できる。
［ステップＳ５５］輪郭検出部１１４は、肌色領域の調査方向を決定するための座標（ＸＳ，ＹＳ）を、座標（Ｘ１，Ｙ１）から座標（Ｘ２，Ｙ２）へ向かう直線の傾きを左方向に９０°回転させた方向の位置に設定する。この座標は、ＸＳ＝Ｘ２＋ＹＤ、ＹＳ＝Ｙ２−ＸＤと計算される。なお、ＸＳ，ＹＳは整数でなくてもよい。
【０１２６】
［ステップＳ５６］輪郭検出部１１４は、肌色領域の調査方向を決定するための座標（ＸＳ，ＹＳ）を、座標（Ｘ１，Ｙ１）から座標（Ｘ２，Ｙ２）へ向かう直線の傾きを右方向に９０°回転させた方向の位置に設定する。この座標は、ＸＳ＝Ｘ２−ＹＤ、ＹＳ＝Ｙ２＋ＸＤと計算される。なお、ＸＳ，ＹＳは整数でなくてもよい。
【０１２７】
なお、上記のステップＳ５５，Ｓ５６では、座標（Ｘ１，Ｙ１）から座標（Ｘ２，Ｙ２）へ向かう直線の傾きを基準として座標（ＸＳ，ＹＳ）を決定した。しかし、他の方法として、トレース領域情報１２２から読み出した、座標（Ｘ２，Ｙ２）についてのトレース方向角度を基準として、座標（ＸＳ，ＹＳ）を決定してもよい。
【０１２８】
［ステップＳ５７］輪郭検出部１１４は、画素（Ｘ２，Ｙ２）から座標（ＸＳ，ＹＳ）の方向への座標の変化量のｘ成分およびｙ成分をそれぞれ示すｘ増分およびｙ増分を算出する。この処理では、ｘ増分またはｙ増分の少なくとも一方の値が１となるように計算が行われる。このステップＳ５７の算出処理については後の図１６において詳述する。
【０１２９】
［ステップＳ５８］輪郭検出部１１４は、画素（Ｘ２，Ｙ２）から、算出されたｘ増分、ｙ増分の距離だけ離れた位置の画素を、肌色領域の調査画素に設定する。ｘ増分またはｙ増分の少なくとも一方の値が１であることから、この処理では画素（Ｘ２，Ｙ２）に隣接する周囲画素のうちの１つが、調査画素に設定される。
【０１３０】
［ステップＳ５９］輪郭検出部１１４は、トレース領域情報１２２に基づき、現在の調査画素がトレース領域外であるかを判定する。調査画素がトレース領域外である場合、ステップＳ６３の処理が実行され、調査画素がトレース領域内である場合、ステップＳ６０の処理が実行される。
【０１３１】
［ステップＳ６０］輪郭検出部１１４は、現在の調査画素が肌色かを判定する。この判定は、例えば、調査画素の色情報の値が所定の範囲に含まれるかによって行われる。調査画像が肌色である場合、ステップＳ６１の処理が実行され、肌色でない場合、ステップＳ６２の処理が実行される。
【０１３２】
［ステップＳ６１］輪郭検出部１１４は、あるべきでない方向に肌色領域があり、誤検出が発生したと判定する。すなわち、ステップＳ１９において「Ｙｅｓ」と判定される。
［ステップＳ６２］輪郭検出部１１４は、調査画素を、現在の調査画素からｘ増分およびｙ増分の距離だけ離れた位置に移動させる。ここで、ｘ増分またはｙ増分の少なくとも一方の値が１であることから、この処理では現在の調査画素の周囲画素のうちの１つが、新たな調査画素に設定される。この後、移動後の調査画素についてステップＳ５９の処理が再度実行される。
【０１３３】
［ステップＳ６３］ステップＳ５９で「Ｙｅｓ」と判定される場合とは、調査方向に対して肌色の画素が検出されずに、調査画素がトレース領域外に設定されてしまった場合である。この場合、輪郭検出部１１４は、あるべきでない方向に肌色領域がないので、ステップＳ１８で選択した画素（Ｘ２，Ｙ２）は頭部の輪郭線に沿って正しく検出されたものであると判定する。すなわち、ステップＳ１９において「Ｎｏ」と判定される。
【０１３４】
図１６は、図１５のステップＳ５７の処理手順の例を示すフローチャートである。
［ステップＳ７１］輪郭検出部１１４は、ｘ差分＝ＸＳ−Ｘ２、ｙ差分＝ＹＳ−Ｙ２を計算する。
【０１３５】
［ステップＳ７２］輪郭検出部１１４は、ｘ差分の絶対値がｙ差分の絶対値より小さいかを判定する。ｘ差分の絶対値がｙ差分の絶対値より小さい場合、ステップＳ７３の処理が実行され、ｘ差分の絶対値がｙ差分の絶対値以上である場合、ステップＳ７７の処理が実行される。
【０１３６】
［ステップＳ７３］輪郭検出部１１４は、ｘ差分をｙ差分の絶対値で除算した値を、ｘ増分として算出する。
［ステップＳ７４］輪郭検出部１１４は、ｙ差分が０以上であるかを判定する。ｙ差分が０以上である場合、ステップＳ７５の処理が実行され、ｙ差分が０未満である場合、ステップＳ７６の処理が実行される。
【０１３７】
［ステップＳ７５］輪郭検出部１１４は、ｙ増分を１とする。
［ステップＳ７６］輪郭検出部１１４は、ｙ増分を−１とする。
上記のステップＳ７３〜Ｓ７６の処理によって算出されるｘ増分およびｙ増分は、座標（Ｘ２，Ｙ２）から座標（ＸＳ，ＹＳ）に向かう方向（すなわち、肌色領域の調査方向）に対する、ｙ方向の１画素単位での変化量のｘ成分およびｙ成分を示す。ステップＳ７３〜Ｓ７６の処理によってｘ増分およびｙ増分が算出された場合、図１５のステップＳ５８、およびその後のステップＳ６２において調査画素が設定される際には、ｙ座標が１画素ずつ順次シフトされていくことになる。
【０１３８】
［ステップＳ７７］輪郭検出部１１４は、ｙ差分をｘ差分の絶対値で除算した値を、ｙ増分として算出する。
［ステップＳ７８］輪郭検出部１１４は、ｘ差分が０以上であるかを判定する。ｘ差分が０以上である場合、ステップＳ７９の処理が実行され、ｘ差分が０未満である場合、ステップＳ８０の処理が実行される。
【０１３９】
［ステップＳ７９］輪郭検出部１１４は、ｘ増分を１とする。
［ステップＳ８０］輪郭検出部１１４は、ｘ増分を−１とする。
上記のステップＳ７７〜Ｓ８０の処理によって算出されるｘ増分およびｙ増分は、座標（Ｘ２，Ｙ２）から座標（ＸＳ，ＹＳ）に向かう方向（すなわち、肌色領域の調査方向）に対する、ｘ方向の１画素単位での変化量のｘ成分およびｙ成分を示す。ステップＳ７７〜Ｓ８０の処理によってｘ増分およびｙ増分が算出された場合、図１５のステップＳ５８、およびその後のステップＳ６２において調査画素が設定される際には、ｘ座標が１画素ずつ順次シフトされていくことになる。
【０１４０】
図１７は、第２の処理例における調査方向の設定例を示す図である。図１７では例として、着目画素についてのエッジ候補画素のうち、画素（１０，１０）（＝画素（Ｘ２，Ｙ２））が、エッジ強度が大きい画素として選択されたものとする。また、所定個数だけ前に設定された着目画素を、画素（９，７）（＝画素（Ｘ１，Ｙ１））とする。また、画素（１０，１０）は顔の右側にあるものとする。
【０１４１】
この場合、図１５のステップＳ５３ではトレース方向が下向きと判定される。また、ステップＳ５５では、肌色領域の調査方向Ｃを決定するための座標（ＸＳ，ＹＳ）が、座標（９，７）から座標（１０，１０）へ向かう直線の傾きを左方向に９０°回転させた方向に沿った座標（１３，９）に設定される。そして、ｘ増分＝１、ｙ増分＝−（１／３）と算出される。
【０１４２】
このとき、輪郭検出部１１４は、画素（１０，１０）を起点として、調査方向Ｃに対してｘ座標をｘ増分に相当する１画素分ずつ加算しながら調査画素を選択していく。ｙ座標についても同様にｙ増分の値ずつ加算していくが、ｙ増分の絶対値が１未満であるので、調査画素のｙ座標が小数点以下の値を有する場合があり得る。ｙ座標が小数点以下の値を有する場合、例えば、ｙ座標の小数点以下の値を切り捨てたときの画素と切り上げたときの画素の両方が、調査画素に設定される。
【０１４３】
例えば図１７において、第１回目の調査画素の設定では、画素（１１，９）と画素（１１，１０）とが調査画素に設定され、第２回目の調査画素の設定では、画素（１２，９）と画素（１２，１０）とが調査画素に設定される。第３回目の調査画素の設定では、調査画素のｙ座標が整数となるので、１つの画素（１３，９）が調査画素に設定される。
【０１４４】
なお、調査画素のｙ座標が小数点以下の値を有する場合、ｙ座標の切り捨てまたは切り上げを行うことで、１つの画素のみが調査画素に設定されるようにしてもよい。
前述した第１の処理例では、起点となる画素から、その画素の周囲に位置する８つの画素のいずれかの方向に、肌色領域の調査方向が設定される。このため、肌色領域の調査方向は４５°単位で設定される。これに対して、第２の処理例では、肌色領域の調査方向の角度をより細かく設定することが可能である。これにより、調査が必要な領域を正確に設定できるようになり、本来あるべきでない方向に肌色領域があるかの判定精度を向上させることができる。
【０１４５】
なお、上記の各実施の形態に示した装置（輪郭検出装置１，１００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／ＲＷなどがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１４６】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１４７】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【符号の説明】
【０１４８】
１  輪郭検出装置
２  入力受付手段
３  探索手段
１０  探索領域
１１  開始領域
１２  終了領域
２１〜２４  画素
３１，３２  肌色領域
３３  領域
Ａ１，Ａ２  延伸方向
Ｂ１，Ｂ２  エッジ探索範囲
【図１】
2014102712.tif 000003
【図２】
2014102712.tif 000004
【図３】
2014102712.tif 000005
【図４】
2014102712.tif 000006
【図５】
2014102712.tif 000007
【図６】
2014102712.tif 000008
【図７】
2014102712.tif 000009
【図８】
2014102712.tif 000010
【図９】
2014102712.tif 000011
【図１０】
2014102712.tif 000012
【図１１】
2014102712.tif 000013
【図１２】
2014102712.tif 000014
【図１３】
2014102712.tif 000015
【図１４】
2014102712.tif 000016
【図１５】
2014102712.tif 000017
【図１６】
2014102712.tif 000018
【図１７】
2014102712.tif 000019