(57)【特許請求の範囲】
【請求項１】
顔画像の赤領域が赤目領域であるかを、複数の評価要素を用いて評価する画像処理方法であって、
前記顔画像の赤領域内に含まれる白領域を検出し、
当該検出した白領域の大きさと、当該赤領域の大きさとの割合を求め、
当該割合と所定の閾値との大小関係を、前記複数の評価要素のうちの１つとして求めることを特徴とする画像処理方法。
【請求項２】
顔画像の赤領域が赤目領域であるかを、複数の評価要素を用いて評価する画像処理装置であって、
前記顔画像の赤領域内に含まれる白領域を検出し、
当該検出した白領域の大きさと、当該赤領域の大きさとの割合を求め、
当該割合と所定の閾値との大小関係を、前記複数の評価要素のうちの１つとして求めることを特徴とする画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フラッシュ撮影などで赤目が生じた人物像を含む顔画像から、赤目を除去した自然な画像を生成する画像処理装置及び方法に関するものである。
【０００２】
【従来の技術】
人物をフラッシュを用いてカメラ撮影すると、人物の目が赤く写ってしまう赤目という現象が知られている。
【０００３】
銀塩写真では、赤目を除去する方法として、プリントした写真にスポッティングを施し赤い領域を黒く塗り潰すことで赤目を除去していた。
【０００４】
今日では、人物をデジタルカメラで撮影したデジタル画像データ、あるいは銀塩カメラで撮影したフィルムをスキャナで読み込んだデジタル画像データにおいて、赤目領域を別の色に変更することにより赤目を除去することが行われる。
【０００５】
こうした画像データに対して赤目除去を行う場合、赤目が生じている領域の一点をマウスなどのポインティング・デバイスでオペレータが指示したり、あるいはオペレータが赤目領域を囲むように領域を指定して、その範囲内の赤い領域の色を全て変更するなどの方法が存在する。
【０００６】
【発明が解決しようとする課題】
しかし、赤目領域の一点をオペレータが指定する場合、被写体の撮影倍率が低いとき、あるいはディスプレイの表示解像度が低い場合などには、画像を拡大表示してから赤目領域の一部をポイントしなければならず、煩わしい操作を伴っていた。
【０００７】
また、赤目領域を囲んで指定する場合も、指定領域内の唇など、赤い領域はすべて修正してしまうので、他の赤い領域を囲まないように入力する必要が有り、この場合も画像を拡大表示して領域をしなければならないなどオペレータに負荷が生じていた。
【０００８】
こうした方法であっても、例えば撮影倍率が大きいポートレートなど被修正被写体数が少ない場合はまだ負荷は少ないが、集合写真など被修正被写体が多数存在する写真から赤目を修正する場合には、一人一人の顔を拡大表示してからマウスで正確に領域を指定しなければならず、非常に面倒であった。
【０００９】
本発明は上述の課題を解決するためのものであり、本発明の第１の目的は、簡便なオペレーションに基づき赤目領域の検出精度を高め、また検出スピードを早め、さらに自然に赤目を除去することができる画像処理方法を提供することに有る。
【００１０】
本発明の第２の目的は、被写体の撮影倍率がどのような場合であっても、正確に赤目領域を検出・除去できる画像処理方法を提供する画像処理方法を提供することに有る。
【００１１】
本発明の第３の目的は、赤目を探索する領域を顔領域に限定することにより、不要な領域を検出対象とすることなく高速かつ正確な赤目領域検出の方法を提供することに有る。
【００１２】
本発明の第４の目的は、非常に高速に赤目領域を検出する画像処理方法を提供することに有る。
【００１３】
【課題を解決するための手段】
上述の目的と目的を達成する一手段として例えば以下の構成を備える。
【００１４】
即ち、顔画像の赤領域が赤目領域であるかを、複数の評価要素を用いて評価する画像処理方法であって、
前記顔画像の赤領域内に含まれる白領域を検出し、
当該検出した白領域の大きさと、当該赤領域の大きさとの割合を求め、
当該割合と所定の閾値との大小関係を、前記複数の評価要素のうちの１つとして求めることを特徴とする。
【００１５】
また、顔画像の赤領域が赤目領域であるかを、複数の評価要素を用いて評価する画像処理装置であって、
前記顔画像の赤領域内に含まれる白領域を検出し、
当該検出した白領域の大きさと、当該赤領域の大きさとの割合を求め、
当該割合と所定の閾値との大小関係を、前記複数の評価要素のうちの１つとして求めることを特徴とする。
【００１６】
また、顔画像を含む自然画像の中から赤目領域を検出し、検出した赤目領域の色を変更することにより自然な顔画像に変換する画像処理装置であって、
所定の画像領域に対して白領域を検出し、検出した白領域を前記所定の画像領域が赤目領域であるかの評価に用いることを特徴とする。
【００１７】
また、顔画像を含む自然画像の中から赤目領域を検出し、検出した赤目領域の色を変更することにより自然な顔画像に変換する画像処理装置であって、
所定の画像領域の近傍にある白領域を検出し、検出した白領域を前記所定の画像領域が赤目領域であるかの評価に用いることを特徴とする。
【００２６】
【発明の実施の形態】
以下、本発明に係る一発明の実施の形態例を図面を参照して詳細に説明する。
【００２７】
＜第１の実施形態＞
はじめに、本発明を適用する画像処理装置の全体構成を図１を参照して説明する。図１は、本発明を適用する画像処理装置としてのパーソナルコンピュータのブロック構成図である。
【００２８】
図中、２１は装置の全体制御を司るＣＰＵ、２２は処理画像を表示するＣＲＴ等のディスプレイ、２３は操作者よりの各種指示データなどを入力するキーボード、２４は処理プログラム等を記憶しているＲＯＭ、２５は各種処理結果を一時記憶するＲＡＭ、２６は本発明の顔領域検出処理、特徴領域検出処理、赤目領域検出処理等の各種処理を行なうプログラム等を記憶するハードディスクドライブ（ＨＤＤ）等の記憶装置、２７は外部の装置と通信回線３１を介して通信するための通信インタフェースである。
【００２９】
また、２８は、入力補助手段としてのマウス等のポインティング装置である。２９は、所謂ＣＣＤを含み、被写体を撮影してデジタル画像信号を生成する画像入力装置である。これらの各構成は、内部バス３０を介して接続されている。後述の特徴領域の検出処理の対象となるデジタル画像信号（自然画像）は、画像入力装置２９により得られた情報であっても、外部の画像処理装置（例えば、デジタルカメラ、スキャナ等）からの情報を通信インタフェース２７を介して入手したものでも良い。
【００３０】
以上の構成を備える本発明の実施の形態例における赤目領域の特定処理を図２のフローチャートを参照して以下に説明する。
【００３１】
まず、ステップＳ１において、赤目処理を行なうべき赤目部分が含まれている領域を大まかに指定する。この指定は、厳密なものである必要はなく、赤目部分が含まれている顔の一部を指定した様な状態であってもよい。続いてステップＳ２において、ステップＳ１で指定された領域が含まれる領域を検出する。このかう領域検出時に同時に撮影倍率も算出する。
【００３２】
顔領域及び撮影倍率が検出されたらステップＳ３で顔領域に含まれる特徴領域の検出を行なう。例えばここでは、目、眉、口等の特徴的な領域の検出を行なう。更にステップＳ４で検出した特徴点の色を判別し、輝度情報を基準として毛、黒目部分影等の黒領域及び白目部分などの白領域を検出し、彩度情報を基準としてしみ、赤目、唇等の赤領域の判別等の各特徴点の色を判別する。
【００３３】
そしてステップＳ５で各色の判別結果に加え、特徴点の形状なども考慮して総合的に判断し、赤目領域を検出する。そしてステップＳ６で検出した赤目領域に対する赤目除去処理を行なう。
【００３４】
以下、図２に示す各処理の詳細を説明する。
【００３５】
図３は図２のステップステップＳ１の処理領域の指定処理及びステップＳ２の顔領域の画像領域の検出処理の詳細処理を示すフローチャートである。顔領域の検出処理は、ＣＰＵ２１によって実行される処理であり、記憶装置２６の画像記憶部領域に記憶されている処理対象の画像データにより表される画像から、顔の画像領域を検出する処理である。
【００３６】
まずステップＳ５１で、オペレータの指示に従い、処理対象の画像データを画像表示部２に表示する。この表示例を図４の３Ａに示す。続いてステップＳ５２で、オペレータはキーボード２３を用いて、赤目領域が含まれる顔の一点あるいは、一部範囲を指示する。例えば図４の３Ｂに示す点Ａを指示する。以上の処理が図１のステップＳ１に示す処理である。
【００３７】
続いてステップＳ５３で指示された領域を含むこの領域を一定範囲拡大した画像領域の検索範囲Ｂを初期設定する。検索範囲Ｂの設定範囲の例を図４の３Ｃに示す。なお、ここでいきなり広範囲を検索範囲に設定すると、画像領域の検索に時間がかかるだけでなく、探索対象の画像が画像全体に占める割合が小さい場合、無駄な範囲を探索することになるので、初期の検索範囲Ｂは比較的小さな範囲に設定することが望ましい。また、検索範囲Ｂは矩形である必要はなく、どのような形状でもよい。
【００３８】
次にステップＳ５４で、肌領域の検出に用いる基準色を設定する。この基準色とは、検出しようとする顔の画像領域の基本的な色、つまり肌の色のことで、ＣＰＵ２１はステップＳ５２で指示された領域周辺の画素の色、あるいは、検索範囲Ｂの全部または一部の画素の色を参照して基準色を設定する。例えば、図４の３Ｄに示すように、検索範囲Ｂを拡大した場合に、点Ａからの距離が所定値以内（例えば点Ａを中心とする半径が所定値の円内）の近傍画素の集合Ｃに含まれる画素を参照し、それら画素の値の例えば平均値を基準色にする。
【００３９】
また、図４の３Ｅに示すように、点Ａを例えば中心とする矩形の画素集合Ｄに含まれる画素の色を参照して基準色を決定してもよい。
【００４０】
基準色を決定するための色空間は、モニタ画面の表示に用いられているRGB色空間でも、テレビ放送で用いられるYIQ色空間、画像圧縮などに用いられるYCbCr色空間など、どのような色空間であってもよいが、後に、複数画素間の色差を評価することを考慮すると、人間の視覚特性に近い色差を表現できる色空間が望ましく、例えば、CIEにより定義されるLab色空間またはLuv色空間などの均等色空間が望ましい。
【００４１】
また、指定された点Ａが顔の画像領域のエッジに近い場合、領域Ｃや領域Ｄには顔の画像領域ではない背景などが含まれる可能性があるし、ノイズなどの影響で肌の色とは異なる色の画素が領域Cや領域Ｄに存在する可能性もある。このような場合、背景色やノイズによって生じる色の影響を受けて、基準色が本来の肌の色とは異なった色になることもある。このような基準色のずれを考慮すると、肌の色の色相は、多くの場合、赤の近傍にあるという性質を利用して、領域Ｃまたは領域Ｄの画素の内、色相が赤から離れた画素を基準色の算出対象から外すのが望ましい。このようにすれば、背景色やノイズの影響を低減して、より正しく肌の色を表す基準色を得ることができる。
【００４２】
次に、ステップＳ５５で肌領域を検出する。例えば、検索範囲Ｂのすべての画素の色と基準色を比較し、それらの色差が所定のしきい値Tdより小さい画素の集合を、肌を構成する画素群とする。Luv色空間において、基準色が(L0,a0,b0)であり、画素の色が(L１,a１,b１)であるとすると、色差dは次の演算により得られる。
【００４３】
d = √{(L１ - L0)^2 + (u1 - u0)^2 + (v1 - v0)^2}       …(１)
ただし、a^2はaの二乗を表す
(１)式により得られる式差ｄは、視覚的に感じられる色の差に比例した値を表す。
【００４４】
前述したように色差の評価は、均等色空間で行うことが望ましいが、原画像が他の色空間のデータで表されていて、その色空間から均等色空間への変換に時間がかかる場合などは、原画像の色空間で色差dを算出してもよい。例えば、原画像がRGB色空間で表されている場合、
基準色が(R0,G0,B0)、画素の色が(R１,G１,B１)であるとすると、色差dは次の演算により得られる。
【００４５】
d = √{(R１ - R0)^2 + (G１ - G0)^2 + (B１ - B0)^2}         …(2)
(２)式の結果は、均等色空間などで算出した色差dに比べて、人間の視覚特性からずれたものになるが、演算時間を短縮したい場合などには有効である。
【００４６】
図４の３Ｆは検索範囲Ｂを拡大した図で、この場合は領域Ｅが肌領域として検出される。
【００４７】
そしてステップＳ５６で肌領域の拡大もしくは処理の終了を判定する。この判定は、検索範囲Ｂと肌領域Ｅとの重なりを判定することにより行う。図４の３Ｆを例にとると、矩形の検索範囲Ｂの四辺それぞれについて、肌領域Ｅがどれだけ重なっているかを評価する。
【００４８】
図４の３Ｆの場合、検索範囲Ｂの左辺は肌領域Ｅに完全に重なるので重なり率を１００%とし、同様に、上辺の重なり率は８０%、下辺の重なり率は５０%、右辺の重なり率は０%とする。そして、所定のしきい値Tpより重なり率が大きい辺を検出した場合、まだ顔領域の全てが検出できていないとして肌領域の拡大を指示するために終了判定フラグを‘０’にする。
【００４９】
また、しきい値Tpより重なり率が大きい辺を検出しなかった場合には顔領域の検出が終了したとして処理の終了を指示終了判定フラグを‘１’にする。しきい値Tpは、検出精度と検出時間との兼ね合いから設定されるが、例えば５%に設定される。図４に示す３Ｆの例では、左辺、上辺および右辺の重なり率が５%を超えるので、終了判定フラグは‘０’に設定される。
【００５０】
次に、ステップＳ５７で終了判定フラグを判定し、‘１’であればステップＳ５８に進み、‘０’であればステップＳ５３に戻り、顔の画像領域の検索を続行する。
【００５１】
ステップＳ５３に処理が戻った場合、次の手順で検索範囲Ｂを拡大する。つまり、ＣＰＵ２１は、しきい値Tpを超える重なり率をもつ辺の情報より、重なり率がTpより大きかった辺の方向に検索範囲Ｂを拡大する。図４の３Ｆの場合は、右辺を除く方向に検索範囲Ｂが拡大され、図４の３Ｇに示す領域Ｂ'が新たな検索範囲になる。
【００５２】
ここで、範囲Ｂを範囲Ｂ'に拡大する率は、固定値、重なり率に比例した値にする、など様々な方法が考えられるが、例えば、元の検索範囲Ｂの幅がＷ、高さがＨの場合、左および/または右方向へＷ×Ｓ、上および/または下方向へＨ×Ｓ、検索範囲を広げて領域Ｂ'とする。
【００５３】
ここで、Ｓは一次元の拡大率であり、零より大きい値を有する。Ｓが０.５の場合、左および/または右へ０.５Ｗ、上および/または下へ０.５Ｈ検索範囲は拡大される。なお、このような方法で検索範囲Ｂを拡大する場合、検出する顔の画像領域の中心近傍に点Ａを指定させた方が、検出時間を短縮することができる。従って、ステップＳ５２で点Ａの指定を受ける際に「検出する画像の中心付近を指定してください」などのメッセージを表示して、オペレータに注意を促すのが好ましい。
【００５４】
処理は、次にステップＳ５４に移るが、既に基準色が決っているので何も行わずステップＳ５５に移る。そして、ステップＳ５５で、新たな検索範囲Ｂ'に対して肌領域の検出を行う。ただし、前回肌領域の検出を行った範囲Ｂに対して肌領域の検出を行う必要はない。そして、ステップＳ５6で前回と同様の拡大/終了判定を行う。以上の処理を繰返すことにより、検索範囲Ｂは徐々に拡大され、顔の画像領域を囲むようになるまで拡大され、肌領域Ｅ、つまり顔の画像領域が検出される。
【００５５】
また、再びステップＳ５４に処理が移動した際に、拡大された検索範囲Ｂ'に対して、初回と同様の手続により、再度、基準色を設定してもよいし、検出された肌領域Eの画素全体の平均値を新しい基準色として設定してもよい。検索範囲Ｂが拡大される毎に基準色を更新すれば、画像領域の一部における局所的な色の変動の影響を低減し、正確な基準色を常に維持することができる。
【００５６】
通常、検索範囲Ｂの拡大は画像全体の四辺で制限されるが、画像の撮影条件が限定され被写体の撮影倍率が所定値以上にならないことが分かっている場合は検索範囲に上限を設け、可能性として最も大きい顔の画像領域を検索範囲の上限としてもよい。また、ステップＳ５２で、顔の画像全体を含む矩形領域を、点Ａとともにオペレータに指定させ、指定された矩形領域を検索範囲の上限としてもよい。このようにして、検索範囲の上限を設け、検索範囲が上限に達したか否かを判定すれば、必要以上に検索範囲が拡がってしまうケースを低減することができる。
【００５７】
また、顔の領域が検出されると、ステップＳ５８に進み、撮影倍率の算出処理が行われる。撮影倍率の算出処理においては、ステップＳ５７までの処理で検出した回領域より顔の輪郭（顔の大きさ）を算出し、この顔の大きさが予め定量化している標準的な顔の大きさと比べてどの位の大きさかを算出し、撮影倍率を算出している。なお、この撮影倍率は、赤目の部分の大きさに関連して以下の処理が多少異なるためであり、例えばかうの大きさが表示標準より大きい人や小さい人がいても、赤目の部分の大きさをパラメータに加えるのが目的であるから何らの不具合は発生しない。
【００５８】
なお、以上の説明においては、撮影倍率の算出が顔領域の大きさが判明してから行ったが、予め撮影倍率が判明している場合には、この撮影倍率に従って検出対象画像を間引く等して処理対象データ量を軽減してもよい。このようにすることにより、高速での処理が可能となる。また例えば、最初は粗い解像度での顔領域検出を行い、もし、この処理で十分な検出結果が得られない場合に始めで高解像度での検出処理を行なうように制御することも考えられる。このように制御しても、赤目処理を実行する対象である顔部分が小さい場合はまれであることより、左程の障害にはならないものと考えられる。そして、同じ原画像の異なる領域が再度指定されたような場合には、先の処理で算出した解像度に対応して処理対象のデータを間引く等して処理の高速化を図ることも考えられる。
【００５９】
以上説明したように、本発明の実施の形態例の顔領域の検出処理によれば、操作者に指示された画像の領域が例え一点であっても、一点を基準に、検索範囲を徐々に拡大することで、画像全体に検索を行う必要がなく、短時間に顔領域の範囲を検出することができる。
【００６０】
また、指示された画像の一点の近傍画素から例えば肌の色を表す基準色を設定し、この基準色により所望の画像領域を検出するので、例えば、照明などの周囲環境、体調や化粧、撮影システムの状態などによる影響を低減して、多種多様な肌の色をもつ人の顔の画像領域を正確に検出することができる。
【００６１】
次にこのようにして検出した顔領域内に対する図２のステップＳ３に示す特徴点の検出処理を図５のフローチャートを参照して詳細に説明する。図５は、本発明の実施の形態例における特徴領域の検出処理を示すフローチャートである。
【００６２】
図５において、まずステップＳ１０１で自然画像中に含まれる先に検出した顔領域（閉領域）を設定する。続いてステップＳ１０２でステップＳ１０１において設定された閉領域内の画素を対象として、隣接する画素との色の差が少ないもの同士でグループを構成する。これは一般的にクラスタリングあるいはグルーピング等と呼ばれる。
【００６３】
このクラスタリング処理の詳細を図６を参照して説明する。図６は本発明の実施の形態例における特徴検出処理におけるクラスタリングを説明する図である。
【００６４】
図６において、各格子は画像の１画素を表わしており、この画像は幅ｍ画素×高さｎ画素の矩形領域からなる。本発明の実施の形態例においては、説明の便宜上左上の画素を座標（０，０）としている。１０１は、該矩形領域のうち、ステップＳ１０１において設定された顔画像の領域に外接する画素を示す。また、画素１０２は、注目画素である。
【００６５】
ここで、図６上部に示す矢印の如く、画像の左上から右下に注目画素１０２を移動しながら、各画素毎に以下に説明する処理を行う。
【００６６】
同図において注目画素１０２の座標を（ｘ，ｙ）とし、この注目画素の色は色空間Ｌ*ａ*ｂ*において、（Ｌ0，ａ0，ｂ0）であるとする。ここで、この注目画素１０２に隣接する１つ上の画素（ｘ，ｙ−１）の色が、（Ｌ１，ａ１，ｂ１）であるとき、これら２つの画素の色差ｄは、
ｄ＝｛（Ｌ１−Ｌ0）↑2＋（ａ１−ａ0）↑2＋（ｂ１−ｂ0）↑2｝↑(１/2)
で表わされる(但し、Ｘ↑ＹはＸのＹ乗を表わすものとする。以下同様）。
【００６７】
これは、視覚的に感じる色の差に比例した値を表わすものとなっている。この色差ｄが、第１のしきい値Ｔｄ１（ここで、しきい値Ｔｄ１は、均等色空間における色差に関するしきい値である。）以下である場合は、２つの画素は同じクラスタを構成するものとする。また、色差ｄが、第１のしきい値Ｔｄ１より大きい場合は、２つの画素は別のクラスタを構成する可能性があると判断する。
【００６８】
更に、同様の判断処理を、注目画素１０２の左側の画素（ｘ−１，ｙ）に対しても行い、これら２つの画素が同じクラスタを構成するか、或は別のクラスタを構成する可能性が有るか否かを判断する。
【００６９】
また、注目画素１０２が顔領域以外の領域である場合は、抽出対象外であるものとして無視する。また、注目画素１０２と比較される画素（以下、比較画素）が、顔領域以外の領域である場合や、比較画素の座標がｘ＜０またはｙ＜０等の場合には、色差の比較を行わずに別の領域として判断する。
【００７０】
上記のような判断を、矩形領域１０１の全画素について行い、クラスタ毎に番号を割り付けると、色が類似している領域毎に番号が振られることになる。従って、近似色で連続する領域毎に領域が分割され、領域分割が完了する。
【００７１】
上記の均等色空間における色差に関するしきい値Ｔｄ１は、比較的小さい値が好ましく、本願発明者らによる検討によると、しきい値Ｔｄ１は３〜１０程度（但し、この値はＬ*ａ*ｂ*空間における値である。）に設定すると人間の肌の領域を１つの大きなクラスタとして領域分割することが可能であることが分かった。
【００７２】
次に、このしきい値Ｔｄ１によりクラスタリングを行った場合の効果を図７を用いて説明する。図７は、本発明の実施の形態例における特徴検出処理におけるクラスタリングによる結果を説明する図である。
【００７３】
図７に示す（ａ）は図３に示す顔領域検出処理で検出された顔漁期画像の例である。この画像に対して小さい値のしきい値Ｔｄ１でクラスタリングを行うと、領域分割の結果は図７の（ｂ）に示すようになる。
【００７４】
（ｂ）に示すように、人間の肌の部分は、ほくろ染み、微妙な陰影等の様々な要因で細かくクラスタリングされてしまう領域は幾つか存在するが、その大きさはかなり小さいことが多く、しきい値Ｔｄ１を比較的小さい値にしてクラスタリングを行っても、まとまった領域として分割される。
【００７５】
これは、顔画像においては、隣接する画素間における色差の相関が高いためである。一方、顔画像の特徴領域である目や口、眉等は、隣接する画素間において色差の変動が大きい場合が多いため、細かな領域としてバラバラの領域にクラスタリングされる。
【００７６】
以上のようにしてクラスタリングが行われると、次に、図５のステップＳ１０３の処理に移行し、クラスタリングにより生成された各領域についてその大きさを調べ、各領域の大きさと第１の所定値Ｔａ１との大小関係より領域の大きさがＴａ１より大きければその領域は顔の特徴的部位を含まない領域として抽出対象から除外する処理を行う。
【００７７】
即ち、図７の（ｂ）に示す如く分割された全ての領域の大きさを調べて、第１の所定値Ｔａ１より大きい領域は除外する。この除外処理により残った領域は、図７に（ｃ）に示す明部の領域となり、肌の大部分は除外することが可能となる。但し、前述したように肌のほくろや染み等、細かな陰影等により一部領域が点々と残る。
【００７８】
ここで、ステップＳ１０２のクラスタリングにより生成された各領域の大きさの評価要素として、各領域の画素数や、高さ、幅等が評価対象となるが、このうちどれか１つを対象に所定値Ｔａ１を設定しても良い。複数の要素に対してそれぞれ所定値Ｔａ１に相当する所定値を複数設定しても良いことは言うまでもない。
【００７９】
また、本発明の形態例においては、上述した顔領域の検出時に顔画像の撮影倍率を算出しており、所定値Ｔａ１は、撮影倍率が高倍率の場合と低倍率の場合とで変更する。これは、底撮影倍率の場合には誤差が大きくなるためである。なお、顔画像の撮影倍率が予め分からない場合には、ステップＳ１０１において設定された顔領域の大きさから、適当な大きさの所定値Ｔａ１を設定することが好ましく、例えば、設定された顔領域の面積の１５％の面積をＴａ１に設定すると、撮影倍率によらず一定の結果を得ることが可能となる。
【００８０】
次に、ステップＳ１０４に移り、再びクラスタリング処理を実施する。クラスタリングの手順自体はステップＳ１０２で実施した内容と同様であるが、ステップＳ１０３において検出対象から除外した領域は無視することと、色差の大小を評価するしきい値が異なる。ここで用いる第２のしきい値Ｔｄ２は第１のしきい値Ｔｄ１より大きい値を用いる。このクラスタリングによる領域分割結果は図７の（ｄ）に示すようになり、特徴的な部位はそれぞれ１つのクラスタとして形成される。
【００８１】
第２のしきい値Ｔｄ２は、比較的大きい値が好ましく本願発明者らによる検討によれば、しきい値Ｔｄ２は３０以上（但し、この値はＬ*ａ*ｂ*空間における値である。）に設定すると人間の特徴的な部位（例えば、同図に示すように白目と黒目の部位）をそれぞれ１つのクラスタとして領域分割することが可能であることが分かった。
【００８２】
そしてステップＳ１０５でステップＳ１０４のクラスタリングにより生成された各領域についてその大きさを調べ、これらの各領域の大きさと第２の所定値Ｔａ２との大小関係を調べ、領域の大きさがしきい値Ｔａ２より小さければ、その領域は顔の特徴的部位を含まない領域として検出対象から除外する処理を行う。即ち、図７の（ｄ）に示すように分割された全ての領域の大きさを調べて、第２の所定値Ｔａ２より小さい領域は除外する。この除外処理により残った領域は、図７の（ｅ）に示す明部の領域となり、図７の（ｄ）において肌等に残っていた細かい領域を除外することができる。
【００８３】
ここで、ステップＳ１０４のクラスタリングにより生成された各領域大きさの評価要素としては、各領域の画素数や高さ、幅等が考えられる。このうちどれか１つを対象に撮影倍率に応じた所定値Ｔａ２を設定しても良い。また、複数の要素に対してそれぞれ所定値Ｔａ２に相当する所定値を複数設定しても良いことは言うまでもない。
【００８４】
また、顔画像の撮影倍率が予め分からない場合には、ステップＳ１０１において設定された顔領域の大きさから、適切な所定値Ｔａ２を設定することが好ましく、例えばステップＳ１０１において設定された顔領域の面積の３％の面積をＴａ２に設定すると、撮像倍率によらず一定の結果を得ることが可能となる。
【００８５】
以上の処理により残った領域は、顔画像の中から目や口、眉等の特徴的部位を表わす領域となる。
【００８６】
尚、被写体である顔画像が、ステップＳ１０１で設定する矩形領域に対して真正面に位置する（正対する）ことが予め分かっている場合等には、次のような判断を加えることにより、特徴領域の検出確度を向上することができる。即ち、顔画像が真正面を向いている場合は、図７の（ａ）の如く目や口、眉等の特徴的部位は顔画像の輪郭内に存在する。そこで、ステップＳ１０５の処理により残った領域のうち、顔画像の輪郭線（図６の顔領域と顔領域外の領域との境界）に接している領域は、更に除外するという判断を加えることで、特徴領域の検出確度を向上することができる。
【００８７】
最後にステップＳ１０６で最終的に残った領域の情報の出力が行われる。この出力結果は図２のステップＳ４の処理に利用される。
【００８８】
尚、以上の処理で検出すべき画像の種類としきい値とを対応付けて記憶した記憶媒体（フロッピディスク（ＦＤ）、光磁気ディスク（ＭＯ）等）を用意（個別に用意しても良い）すれば、様々な画像に対して本発明の実施の形態例に示した処理を応用できることは明らかである。
【００８９】
なお、以上の処理において、ステップＳ１０２のクラスタリング処理の前に、顔の領域の大きさに応じて検出解像度を設定して以下の処理を行ってもよい。この検出の解像度を設定するのは、処理の高速化のためである。即ち、顔領域の画素数は撮影倍率の２乗に比例して大きくなるので、高速化を実現するために顔領域として設定された領域の大きさに応じて間引きを行う処理を行なうことにより処理量を減らす。間引き間隔は、
（間引き間隔）＝（設定された領域の幅）／３００
により算出する。尚、この間引きは、設定された領域の幅方向に間引くが、設定された領域の高さ方向に間引いても、幅方向及び高さ方向の両方向に間引いても良いことは言うまでもない。
【００９０】
以降の処理においては、顔領域の画像を算出した間引き間隔で間引いた状態のデータに対して処理を行う。但し、実際に間引いた画像を新たに生成する必要はなく、高速での特徴点検出ができる。
【００９１】
次にこのようにして検出した特徴点より赤目領域を検出する処理を説明する。まず図８を参照して先の処理で検出した特徴領域の色の判別処理を説明する。図８は本発明の実施の計他例における特徴領域の色判別処理の詳細を示すフローチャートである。
【００９２】
まず図８のステップＳ２０１において、検出された最初の特徴点の各画素毎の色相と彩度とを調べる。そして続くステップＳ２０２において算出した彩度の最大値を抽出し、ステップＳ２０３で検出した彩度の最小値を抽出する。そしてステップＳ２０４で検出した彩度の最大値と最小値より彩度しきい値Tsatを設定する。この彩度しきい値Tsatは、３種類設定される。
【００９３】
Tsat１＝｛（彩度の最大値）−（彩度の最小値）｝×0.7＋（彩度の最小値）
Tsat２＝０．１５
Tsat＝max（Tsat１，Tsat２）
続いてステップＳ２０５で検出領域の全ての画素に対して以下の条件で色相と彩度を演算してステップＳ２０６で赤目を構成する可能性のある画素を抽出する。この検出条件は、  条件１：−３０°＜色相＜１３°
条件２：Tsat＜彩度
である。
【００９４】
ステップＳ２０７で抽出画素数を調べる。そして抽出画素数がまったく無い場合には候補となる画素が特徴領域に存在しないため、ステップＳ２０８でこの特徴領域を赤目対象領域より外すことになる。そしてステップＳ２１０に進む。一方、ステップＳ２０７で対象となる画素がある場合にはステップＳ２０９に進み、この画素数を保持する。そしてステップＳ２１０に進む。
【００９５】
ステップＳ２１０では、全ての特徴領域に対する処理が終了したか否かを調べ、全ての領域に対する処理が終了していない場合にはステップＳ２０１に戻り次の特徴領域に対する処理を行なう。処理が終了している場合には当該処理を終了する。
【００９６】
最後に図２のステップＳ６に示す赤目除去処理の詳細を図９を参照して説明する。図９は本発明に係る発明の実施の形態例における赤目除去処理の詳細を示すフローチャートである。
【００９７】
まずステップＳ３０１からステップＳ３０４で画素配列を個々の領域にクラスタリングして領域の形状・大きさの判断を行なう。即ち、ステップＳ３０１で先のステップＳ２０６で抽出された画素の対してラベリングを実施してこの抽出画素の固まるを有効画素の塊として取り扱えるようにクラスタリングする。このラベリングの例を図９に示す。
【００９８】
続いてステップＳ３０２でラベリングされた領域毎に領域の特性を演算する。この領域の特性の演算については後述する。そして、ステップＳ３０３で領域の演算結果に従って当該領域が所定評価値に達しているか否かを調べる。そして、ステップＳ３０４でこの結果、赤目候補領域があるか否かを判断する。赤目領域が残っていない場合には例えばステップＳ３２０で赤目領域が検出されなかったことを表示などにより報知して操作者の判断を仰ぐ。
【００９９】
一方、ステップＳ３０４で候補がある場合にはステップＳ３０５に進み、領域の周辺の状況を調べて候補を限定する。この領域の周辺の状況を調べる処理の詳細は後述する。そしてステップＳ３０６においてこの時点での赤目候補領域が存在するか否かを調べる。赤目候補領域が存在しない場合にはステップＳ３２０に進む。
【０１００】
一方、ステップＳ３０６で赤目候補が存在すればすればステップＳ３０７に進み、候補領域の評価指数を元に領域の優先順位付けを行なう。そしてステップＳ３０８に進み、複数の候補が存在するか否かを調べる。複数の候補が存在せず1つの特徴領域のみが候補である場合にはステップＳ３１５に進み、単一領域に置ける詳細をく述する赤目除去ウ処理を実行して赤目除去画像を作成し、ステップＳ３１６で除去画像を表示する。操作者はステップＳ３１７でこの画像を確認してこの処理で良い場合には原画像にこの赤目除去処理を実行させるコマンドを作成して登録する。
【０１０１】
この赤目除去では十分に赤目が除去されていない場合にはステップＳ３１９で手動による赤目除去処理を行なう。
【０１０２】
一方、ステップＳ３０８で赤目領域候補が複数存在した場合には更に候補の絞り込みを行なうため、ステップＳ３０９で特徴領域の組み合わせを検出する。ここでは、複数の領域から左右の赤目ペアとして妥当な領域の組み合わせを検出する。組み合わせの要素は、２領域間の色相の差、２領域間の彩度の差、２領域間の明度の差、２領域間の面積比、２領域間の距離（顔領域の大きさより算出した基準値を基に比較する。）、面積の平均値、２領域間の類似度等を総合的に判断してペアとして妥当か否かを検出する。
【０１０３】
この処理は特に３つ以上の領域が検出された時に任意の２つの領域がペアを構成するか否かを判断する際に有効である。例えば、色の差については、２つの領域の画素の平均値からそれらの色差を求め、これが所定値以下であればペアとして合格とする。また、大きさの差のチェックでは、面積比があまりにも大きく異なる場合にはペアでないと判断する。
【０１０４】
ここでは、赤目の直径が６画素以下の低倍率での撮影時には誤差が大きくなるため、撮影倍率を考慮して（大きい方の面積）／（小さい方の面積）＜６
赤目の直径が１２画素以下では（大きい方の面積）／（小さい方の面積）＜３その他の場合には（大きい方の面積）／（小さい方の面積）＜１．５とすればよい。
【０１０５】
また、間隔の検出では、顔領域の大きさより実際の目の間隔を推定し、この距離が一定の範囲に含まれているか否かを基準に行なう。一般的に人の目の間隔は、併記６５mmであり、誤差を考慮に入れても５０mm〜８０mm程度と見込むことができ、また、赤目の大きさは４mm〜１４mm程度であることより、２つの領域の大きさと間隔の関係が
0003684017.tif 000002
の範囲内であればペアとして合格とする。
【０１０６】
なお、ペアの評価要素には、上述した要素に加えて、水平方向に並んでいるかどうかも評価要素に加えてもよい。この場合には、条件を満たす領域が複数検出された場合に、もっとも確率の高い候補を選択するために、連続的な値を得る評価関数を設定する。
【０１０７】
そして、次のステップＳ３１０でこのようにしてペア候補が検出されたか否かを調べる。検出されていない場合にはステップＳ３１５に進む。
【０１０８】
ペア候補が検出された場合にはステップＳ３１１に進み、検出領域に対して優先順位付けが行われる。そして、ステップＳ３１２で２つの領域の赤目領域に対して詳細を後述する赤目除去処理を実行して赤目除去画像を作成する。そしてステップＳ３１６に進む。
【０１０９】
以上の処理における赤目除去処理の詳細を図１1を参照して以下に説明する。図１1は本発明に係る発明の実施の形態例における赤目除去処理を説明するための図である。
【０１１０】
赤目を除去する際には、落とす彩度と明度の低減レベルを１画素毎に決定する。基本的には、赤目を除去する際に、落とす彩度と明度の低減レベルを１画素毎に決定する。基本的には、図１１のように赤目領域は彩度又は明度を元のｌ［％］に低減し、その周辺ｗ［画素］ではぼかし効果を持たせて、自然な修正とするために、図のような傾斜を持たせて低減を行う。
【０１１１】
ここで、Ｄは赤目領域の直径であり、領域画素数に基づき算出した値である。これらのデータに基づき、赤目領域およびその周辺の明度と彩度の低減レベルデータを作成する。
【０１１２】
ここで、ぼかし領域の低減レベル設定は、横スキャンと縦スキャンの２回で、１レベル分設定できるようにしている。ぼかし幅ｗが例えば５の場合、この横スキャンと縦スキャンを交互に５回ずつ行えば、設定が完了する。スキャン中、値の変化点を検出し、変化点の前後に低減レベルを設定している。この場合、距離は４近傍距離で検出するのに相当する。
【０１１３】
最後に、この低減レベルデータに基づいて、明度と彩度を画素毎に下げ、赤目の修正が完了する。
【０１１４】
本発明の実施の形態例においては、決定された赤目領域の画像データに対して、図１１に示すように、彩度（Saturation  Level）を２０％に、明度（Luminancy  Level）を５０％に低下させる処理を行なう。
【０１１５】
更に、赤目領域の周辺と滑らかに接続するために、周辺の領域もなだらかに彩度、明度を低下させている。この低下範囲は、彩度は赤目領域の平均直径（Ｄ）１／３、明度は平均直径（Ｄ）の１／５としている。
【０１１６】
なお、この割合は以上の例に限定されるものではない。例えば撮影倍率に対応して低下率を修正することにより、更に自然な赤目除去効果が得られる。この場合には、撮影倍率が小さい場合には低下量を軽めに制御し、撮影倍率が大きいときには重めに制御すればよい。
【０１１７】
例えば、撮影倍率が０．０４以下の場合であれば彩度の低減レベルは２０％、ぼかしはＤ／３、明度の低減レベルは５０％ぼかしはＤ／４に設定する。
【０１１８】
撮影倍率が０．０４〜０．０２の場合であれば彩度の低減レベルは３０％、ぼかしはＤ／６、明度の低減レベルは５０％ぼかしはＤ／８に設定する。
【０１１９】
撮影倍率が０．０２以上の場合であれば彩度の低減レベルは４０％、ぼかしは２固定、明度の低減レベルは８０％ぼかしは２固定に設定する。
【０１２０】
以上の様に制御することにより、、更に自然な赤目除去効果が得られる。
【０１２１】
次にステップＳ３０２における特性の演算処理理の詳細を説明する。
【０１２２】
この処理では、以下に示す各評価要素をステップＳ３０１でクラスタリングされた各赤目領域に対して順次演算し、最後にこれらの評価が所定しきい値以上であれば赤目領域候補とする。
（１）中央部に白領域が存在するか
撮影倍率が高い場合には、赤目領域内にキャッチライトによる明領域が含まれていることがある。したがって、領域内に白領域を含む領域は赤目である可能性が高いとして評価することができる。
【０１２３】
白領域は輝度を基準にして判断し、２つの領域の重心位置の距離と赤目候補領域の平均的な半径の評価値、
及び、｛（白領域の大きさ）／（赤領域の大きさ）｝  ≦  （しきい値）
を評価し、このしきい値を０．５程度に設定すればよい。
（２）円らしさの判定
赤目領域は基本的には丸いはずだが以下の要因により、丸とは異なった形状を有するようになってくる。
【０１２４】
・キャッチライトが赤目の円周部に発生
・画素の間引きで絵が荒くなり、円というより矩形に近づく
・肌の一部として結合してしまう。特に撮影倍率が低い場合など、色がなだらかにつながってしまう。
【０１２５】
こうした要因で、赤目であっても円にならない場合があり、完全な丸らしさを評価要因とするのは危険である。そこで、円らしさの評価式として
（領域の周囲長）2／（領域の面積）＝（２πγ）2／πγ2＝４π
を採用しており、上式で＝以降は完全な円を仮定した場合の値である。領域の形状が円から遠ざかる程、この値は４πより大きくなっていく。
【０１２６】
本例ではこの評価しきい値を前述の理由により５０と大きめに設定している。（３）実際の大きさ
大きさの評価などでは赤目領域の実際の大きさを、領域の画素長と画像サイズや撮影倍率から算出し、この大きさが赤目として妥当なものかどうかを評価する。
（４）その他
以上の他に、領域の周囲長、領域に外接する矩形、領域内の最大長、色相平均値、彩度平均値、輝度平均値をそれぞれ検出し、赤目領域として妥当な範囲内か否かを評価する。
【０１２７】
更に、ステップステップ３０５の領域の周辺状態との比較処理においては、以下の各要素を評価する。
（１）近傍に黒領域が存在するか
赤目が存在する周辺にはほとんど黒領域が存在するため、周辺赤領域以外で肌の基準色より明度が低い画素について色差の積分を行う。これを有効だった画素数で割り、低輝度部の平均色差を算出する。これにより、囲いに黒い画素が多い程、数値が高くなる評価関数が生成できる。
（２）近傍に白領域が存在するか（白目があるか？）
赤目が存在する集変位は白領域が存在することが多い。このため、周辺赤領域以外で肌の基準色より明度が高い画素について色差の積分を行う。これを有効だった画素数で割り、高輝度部の平均色差を算出する。これにより、囲いに白画素が多い程、数値が高くなる評価関数が生成できる。
【０１２８】
しかし、白領域が存在しない例も多いため、この評価ウエイトは低く設定されている。
（３）彩度の発散
赤目領域は周辺が黒領域で囲まれていることが多く、彩度の変化が急峻であることが多い。そこで、赤目領域の周辺に沿って周回路に垂直な方向に彩度の微分を演算し、この演算値を周回路に沿って積分することにより、赤目領域の周辺の変化量を表す目安となる値が得られる。この値を評価値とする。
【０１２９】
以上説明した各要素毎に評価の重み付けを行い、確実かつ御検出の無い赤目領域の検出を行っている。
【０１３０】
なお、以上の各フローチャートの各処理は、それぞれ記憶装置２６又はＲＡＭ２５或はＲＯＭ２４中の所定領域にモジュール単位で格納されている。
【０１３１】
また、以上の説明では複数の赤目領域の検出方法を実行可能であるが、顔領域検出の結果に基づいて撮影倍率を検出することにより、赤目領域検出時の検出方法を切り替える例について説明したが、顔の領域の大きさにより切換えてもよい。
【０１３２】
＜他の実施形態＞
本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或は装置に供給し、そのシステム或は装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【０１３３】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１３４】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭ等を用いることができる。
【０１３５】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１３６】
更に、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１３７】
【発明の効果】
以上説明したように、本発明によれば、対象とする画像から赤目領域を高速、且つ高精度に検出するともに、自然な赤目除去が可能となる。
【０１３８】
【図面の簡単な説明】
【図１】本発明に係る一発明の実施の形態例の画像処理装置の構成を示すブロック図である。
【図２】本発明の実施の形態例における赤目除去処理を示すフローチャートである。
【図３】本発明の実施の形態例における顔領域の検出処理を示すフローチャーである。
【図４】本発明の実施の形態例における顔領域の検出処理例を説明するための図である。
【図５】本発明の実施の形態例における特徴領域の検出処理を示すフローチャートである。
【図６】本発明の実施の形態例における特徴検出処理におけるクラスタリングを説明する図である。
【図７】本発明の実施の形態例における特徴検出処理におけるクラスタリングによる結果を説明する図である。
【図８】本発明の実施の形態例における特徴領域の色判別処理の詳細を示すフローチャートである。
【図９】本発明に係る発明の実施の形態例における赤目除去処理の詳細を示すフローチャートである。
【図１０】図９におけるラベリング処理におけるラベリングの例を示す図である。
【図１１】本発明に係る発明の実施の形態例における赤目除去処理を説明するための図である。
【符号の説明】
２１  ＣＰＵ
２２  ディスプレイ
２３  キーボード
２４  ＲＯＭ
２５  ＲＡＭ
２６  記憶装置
２７  通信インタフェース
２８  ポインティング装置
２９  画像入力装置
３０  内部バス
３１  通信回線
【図１】
0003684017.tif 000003
【図２】
0003684017.tif 000004
【図３】
0003684017.tif 000005
【図４】
0003684017.tif 000006
【図５】
0003684017.tif 000007
【図６】
0003684017.tif 000008
【図７】
0003684017.tif 000009
【図８】
0003684017.tif 000010
【図９】
0003684017.tif 000011
【図１０】
0003684017.tif 000012
【図１１】
0003684017.tif 000013