(57)【要約】【課題】  彩度に着目した場合、被写体（人）によっては赤目を検出できない場合がある。【解決手段】  赤領域抽出部202は、入力画像の画素ごとに、青色成分を除く色成分に基づき赤色領域の評価量を算出し、その評価量に基づき赤色領域を構成する候補画素を抽出する。赤丸領域抽出部203は、候補画素が構成する円または楕円に近い形状の候補領域を抽出する。特徴量判定部204は、候補領域から算出した目に関する特徴量に基づき、候補領域を補正領域にするか否かを決定する。【選択図】  図2
2010257482.tif 000002
【特許請求の範囲】
【請求項１】
画像の画素ごとに、目の色調の評価量を前記画像のR成分およびG成分のみから算出する算出手段と、
前記算出手段によって算出された評価量に基づき目の色調不良を示す候補画素を抽出する抽出手段と、
前記抽出手段によって抽出された複数の候補画素から構成される領域を抽出し、該抽出された領域が予め定められた形状であるか判定を行い、該予め定められた形状であると判定された領域を目の色調不良の候補領域として抽出する領域抽出手段とを有することを特徴とする画像処理装置。
【請求項２】
前記抽出手段は、前記画像における注目画素の近傍に予め定めたウィンドウ領域を設定し、前記ウィンドウ領域に含まれる画素の前記評価量から閾値を決定し、前記閾値を用いて注目画素の前記評価量を二値化することで前記候補画素を抽出することを特徴とする請求項1に記載された画像処理装置。
【請求項３】
前記抽出手段は、前記画像における前記注目画素と同一ライン上に複数の画素の分の前記ウィンドウ領域を設定することを特徴とする請求項2に記載された画像処理装置。
【請求項４】
前記抽出手段は、前記注目画素を前記同一ラインの方向に走査して候補画素の抽出を行った後、前記ライン上で該走査した方向と逆の方向に前記注目画素を走査して候補画素の抽出を行い、前記二回の走査でともに抽出した画素を前記候補画素とすることを特徴とする請求項3に記載された画像処理装置。
【請求項５】
前記予め定められた形状の領域は、円または楕円に近い形状の領域であることを特徴とする請求項1に記載された画像処理装置。
【請求項６】
さらに、前記領域抽出手段によって抽出された候補領域から算出した目の特徴量に基づき、前記候補領域を補正領域にするか否かを決定する決定手段と、
前記決定手段において前記候補領域を補正領域にすると決定された場合、前記補正領域に色調不良を補正する処理を施す補正手段とを有することを特徴とする請求項1または請求項5に記載された画像処理装置。
【請求項７】
前記決定手段は、前記候補領域から複数の前記目の特徴量を算出し、前記候補領域が前記特徴量のすべて、または、前記特徴量のうち予め定めた特徴量に対して予め定めた基準を満たす場合、前記候補領域を前記補正領域と判定することを特徴とする請求項6に記載された画像処理装置。
【請求項８】
前記補正手段は、前記補正領域の画素と前記補正領域の中心の間の距離に応じて第一の重みを算出する手段、前記画像における注目画素の前記評価量と前記補正領域の画素の評価量の最大値の比に応じて第二の重みを算出する手段、前記注目画素の輝度値と前記補正領域の画素の輝度値の最大値の比に応じて第三の重みを算出する手段、前記第一から第三の重みを用いて輝度および色差成分の補正量を決定する手段、並びに、前記補正量を用いて、前記注目画素の輝度および色差成分を補正する手段を有することを特徴とする請求項7に記載された画像処理装置。
【請求項９】
前記補正量を決定する手段は、前記第一から第三の重みを用いて前記輝度成分の補正量を決定し、前記第一および第二の重みを用いて前記色差成分の補正量を決定することを特徴とする請求項8に記載された画像処理装置。
【請求項１０】
さらに、前記候補領域の近傍に、前記候補領域より小さい候補領域が存在する場合、前記小さい候補領域を除外する領域の除外手段を有することを特徴とする請求項1に記載された画像処理装置。
【請求項１１】
さらに、前記領域抽出手段によって抽出された複数の候補領域の間の距離を判定する閾値を用いて前記複数の候補領域の間の距離を判定し、さらに、前記複数の候補領域に外接する領域の縦横比を用いて前記外接する領域の形状を判定し、前記複数の候補領域の間の距離と前記外接する領域の形状の判定結果に応じて、前記複数の候補領域を結合する領域結合手段を有することを特徴とする請求項1に記載された画像処理装置。
【請求項１２】
前記領域結合手段は、前記複数の候補領域の面積の和を、前記複数の候補領域に外接する領域の面積で除算した値が所定の閾値よりも大きく、かつ、前記外接する領域の形状が、前記複数の候補領域の何れよりも正方形に近い場合に、前記複数の候補領域を結合することを特徴とする請求項11に記載された画像処理装置。
【請求項１３】
前記領域結合手段は、前記複数の候補領域の面積の和を、前記複数の候補領域に外接する領域の面積で除算した値が所定の閾値よりも大きく、かつ、前記外接する領域の縦横比が前記複数の候補領域の何れの縦横比よりも大きい場合に、前記複数の候補領域を結合することを特徴とする請求項11に記載された画像処理装置。
【請求項１４】
前記評価量は、前記画像のR成分およびG成分を用いて(R-G)またはR/Gから算出されることを特徴とする請求項1に記載された画像処理装置。
【請求項１５】
画像の画素ごとに、目の色調の評価量を前記画像のR成分およびG成分のみから算出する算出ステップと、
前記算出ステップによって算出された評価量に基づき目の色調不良を示す候補画素を抽出する抽出ステップと、
前記抽出ステップによって抽出された複数の候補画素から構成される領域を抽出し、該抽出された領域が予め定められた形状であるか判定を行い、該予め定められた形状であると判定された領域を目の色調不良の候補領域として抽出する領域抽出ステップとを有することを特徴とする画像処理方法。
【請求項１６】
コンピュータを請求項1から請求項14の何れか一項に記載された画像処理装置の各手段として機能させるためのプログラム。
【請求項１７】
請求項16に記載されたプログラムが記録されたことを特徴とするコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置およびその方法に関し、例えば、目の色調不良を示す画像領域を検出する画像処理に関する。
【背景技術】
【０００２】
カメラのフラッシュに起因する目の色調不良を補正する方法が提案されている。なお、目の色調不良は、赤目現象として一般によく知られている。赤目現象は、照明の少ない環境下で、人間あるいは犬や猫などの動物を、フラッシュを使用して撮影した際、開いた瞳孔部分に入ったフラッシュの光が眼底で反射して、毛細血管が赤く光る現象である。色素が薄い（少ない）人の方が、瞳孔すなわち水晶体の透過率が高いため、赤目現象を生じ易いとされている。
【０００３】
また、近年普及したディジタルカメラはさらに小型化が進み、レンズの光軸とフラッシュの光源位置が近付く傾向にある。一般に、フラッシュの光源位置がレンズの光軸に近いほど、赤目現象が発生し易いとされ、その対策は重要な課題になっている。
【０００４】
赤目現象を防ぐ一つの手段として、撮影を行う際にプレ発光を行い、被写体の瞳孔が閉じた上で撮影を行う方法が知られている。しかし、この方法は、通常の撮影に比べて電池を消耗させることや、プレ発光によって被写体の表情が崩れる不具合がある。
【０００５】
そこで、近年、ディジタルカメラによる撮影で得られたディジタル画像データを、パーソナルコンピュータなどを使用して補正、加工することで、赤目を修正する方法が数多く提案されている。
【０００６】
ディジタル画像データ上で赤目を補正する方法は、大別すると手動補正、半自動補正、自動補正に分類することができる。
【０００７】
手動補正は、ユーザが、マウスやスタイラスとタブレットなどのポインティングデバイスやタッチパネルを使用して、ディスプレイに表示された赤目領域を指定して補正するものである。
【０００８】
半自動補正は、ユーザが赤目が存在する領域をある程度指定し、その情報から赤目の補正範囲を特定して補正を行うものである。例えば、ユーザは、両目を囲むような領域をポインティングデバイスによって指定したり、目の近辺の一点を指定する。この指定領域または指定点の情報から補正範囲を特定し補正するものである。
【０００９】
自動補正は、ユーザによる特別な操作を必要とせず、自動的にディジタル画像データ中から補正領域を検出し、補正処理を実行するものである。
【００１０】
手動または半自動補正は、ユーザが何らかの操作により、補正個所を指定する必要がある。そのため、ユーザは、画像データの補正すべき領域付近を拡大表示した後、補正領域を指定する煩わしい操作を必要とする。また、大画面の表示装置を備えたパーソナルコンピュータシステムなどであれば、このような操作も比較的容易であるが、ディジタルカメラやプリンタなど、数インチの表示装置しか備えないデバイス上では、画像を拡大し、画像をスクロールして補正領域を指定する操作は、到底、容易とは言えない。
【００１１】
近年、ユーザにとって煩わしい操作を不要とし、かつ、大きな表示装置を備えないデバイスに有効な赤目現象の自動補正に関して様々な提案が行われている。
【００１２】
例えば、特開平11-136498号公報は、画像から肌色領域を検出し、その領域内で赤目を構成すると思われる画素をサーチして検出した赤目を構成する画素を補正する方法を提案する。また、特開平11-149559号公報は、肌色領域を検出し、その領域中で瞳の輝度の低さに対応する谷領域を検出し、第一の谷と第二の谷との距離を基に目を決定する方法を提案する。また、特開2000-125320公報は、肌色領域を検出し、肌色領域が人間の顔の特徴であるかを判断し、その領域内で赤目欠陥の一組を検出して距離と大きさを評価することで、赤目領域を特定する方法を提案する。また、特開平11-284874号公報は、画像が赤い瞳孔を含むか否かを自動検出し、赤い瞳孔を検出した場合はその位置、大きさを検出して、瞳孔内の赤色画素を自動的に所定の色に変換する方法を提案する。
【００１３】
しかし、提案されている赤目現象の自動補正方法には以下の問題が存在する。
【００１４】
まず、人物の肌色検出またはニューラルネットワークなどを用いた顔検出の結果に基づく赤目領域の検出は、検出結果の信頼性は高いが、画像中のある程度広い範囲を参照する必要があり、大量のメモリや演算量を必要とする。従って、数GHzのクロックで動作する高性能なCPUと、数百MBのメモリを搭載するパーソナルコンピュータによる処理には適しているが、ディジタルカメラやプリンタ内部の組み込みシステムに実装するのは困難である。
【００１５】
また、上記の自動補正例に限らず、これまでに提案されている方法の多くは、赤目領域が周辺領域と比較して彩度が高いという特徴を利用して赤目領域を特定する。しかし、彩度に基づく判定は、色素が濃い（多い）人には必ずしも適合しない問題がある。よく知られているように、画素値がRGB系で与えられた際の彩度Sは式(1)で求めることができる。
S = {max(R, G, B) - min(R, G, B)}/max(R, G, B)      …(1)
ここで、max(R, G, B)はRGB成分の最大値
min(R, G, B)はRGB成分の最小値
【００１６】
例えば、日本人の肌色領域は色相（0〜359度）で言えば、0〜30度付近に多く分布することが実験の結果明らかになっている。なお、HIS系の色相では0度付近が赤色で、色相角が大きくなるに従ってイエローに近付く。0〜30度付近で、RGB値の大小関係は以下のようになる。
R ＞ G ＞ B      …(2)
【００１７】
また、上述したように、色素が薄い（少ない）人に比べて、色素の濃い（多い）人は鮮やかな赤目にはなり難い。
【００１８】
これらを考慮して日本人の赤目領域の画素値および目の周辺の肌色領域の画素値を推測すると次のようになる。
赤目領域：(R, G, B)=(109, 58, 65)
肌色領域：(R, G, B)=(226, 183, 128)
【００１９】
上記のような場合、赤目画素の彩度は40、肌領域画素の彩度は43になり、ほぼ同様の彩度値になる。言い換えれば、彩度に着目しても、被写体（人）によっては赤目画素を特定できない場合がある。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】特開平11-136498号公報
【特許文献２】特開平11-149559号公報
【特許文献３】特開2000-125320公報
【特許文献４】特開平11-284874号公報
【特許文献５】特開2004-326805公報
【発明の概要】
【発明が解決しようとする課題】
【００２１】
本発明は、目の色調不良を示す画像領域を高精度に検出することを目的とする。
【課題を解決するための手段】
【００２２】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００２３】
本発明にかかる画像処理は、画像の画素ごとに、目の色調の評価量を前記画像のR成分およびG成分のみから算出し、前記算出された評価量に基づき目の色調不良を示す候補画素を抽出し、前記抽出された複数の候補画素から構成される領域を抽出し、該抽出された領域が予め定められた形状であるか判定を行い、該予め定められた形状であると判定された領域を目の色調不良の候補領域として抽出することを特徴とする。
【発明の効果】
【００２４】
本発明によれば、目の色調不良を示す画像領域を高精度に検出することができる。従って、色素が薄い、濃い（少ない、多い）という人の特性に関わらず、目の色調不良を示す画像領域（補正すべき画像領域）を適切に検出することができる。
【図面の簡単な説明】
【００２５】
【図１】実施例1の画像処理を実行するコンピュータ（画像処理装置）の構成例を示すブロック図、
【図２】実施例1の赤目の自動補正処理の概要を示す機能ブロック図、
【図３】ディジタルカメラなどの撮像装置により撮像された赤目画像を概念的に示す図、
【図４】適応的二値化処理を説明する図、
【図５】適応的二値化の結果例を示す図、
【図６】平均値Er(ave)を求める際の高速化手法を説明する図、
【図７】境界線追跡法を説明する図、
【図８】境界線追跡法を説明する図、
【図９】追跡方向ヒストグラムの方向を示す図、
【図１０】方向ヒストグラムの一例を示す図、
【図１１】赤色領域の外接矩形領域を示す図、
【図１２】赤丸領域か否かの判定処理の一例を示すフローチャート、
【図１３】赤目候補領域の特徴量を算出する際に使用する周辺領域の定義を説明する図、
【図１４】赤目候補領域が画像の端部近傍に存在する場合の周辺領域を説明する図、
【図１５】ブロックの平均値Er(ave)の算出領域を示す図、
【図１６】特徴量群の判定手順の一例を示すフローチャート、
【図１７】周辺領域の設定方法を説明する図、
【図１８】候補領域リストに記載された複数の赤目領域のうちの一つを補正する処理例を示すフローチャート、
【図１９】補正範囲の決定を説明する図、
【図２０】補正パラメータの設定方法を説明する図、
【図２１】実施例2の課題を説明する図、
【図２２Ａ】実施例2における適応的二値化処理を説明する図、
【図２２Ｂ】実施例2における適応的二値化処理を説明する図、
【図２３】実施例3の課題を説明する図、
【図２４】実施例3の赤目の自動補正処理の概要を示す機能ブロック図、
【図２５】候補領域評価部の処理例を示すフローチャート、
【図２６】中心間距離Sizeを説明する図、
【図２７】中心間距離Sizeと閾値Th_Sizeの関係例を示す図、
【図２８】実施例4の課題を説明する図、
【図２９】実施例4の赤目の自動補正処理の概要を示すブロック図、
【図３０】候補領域結合部の処理例を示すフローチャート、
【図３１】候補領域リストの一例を示す図、
【図３２】候補領域結合処理を説明する図、
【図３３】実施例5におけるバンド分割を説明する図、
【図３４】実施例5における赤目領域の抽出処理の一例を示すフローチャート、
【図３５】Nバンド目の赤目領域の抽出処理の詳細を示すフローチャート、
【図３６】N-1、NおよびN+1バンド目において、OverlapArea内に四つの赤丸領域が存在する例を示す図、
【図３７】候補領域選択処理を説明する図、
【図３８】候補領域リストの一例を示す図、
【図３９】実施例5における補正処理の一例を示すフローチャート、
【図４０】補正ラインと補正対象領域の関係を示す図、
【図４１】候補領域リストに格納された赤目領域の位置情報を説明する図である。
【発明を実施するための形態】
【００２６】
以下、本発明にかかる一実施例の画像処理を図面を参照して詳細に説明する。なお、以下で説明する画像処理は、主として、プリンタエンジンへ出力すべき画像情報を生成する、コンピュータ内で稼働するプリンタドライバ、および、スキャナなどの光学読取装置を駆動する、コンピュータ内で稼働するスキャナドライバに組み込むことが望ましい。あるいは、複写機、ファクシミリ、プリンタ、スキャナ、ディジタルカメラ、ディジタルビデオカメラなどのハードウェアに内蔵する、または、ソフトウェアとして供給してもよい。
【実施例１】
【００２７】
［装置の構成］
図1は実施例1の画像処理を実行するコンピュータ（画像処理装置）の構成例を示すブロック図である。
【００２８】
コンピュータ100は、CPU101、ROM102、RAM103、モニタ113（タッチパネルを備えてもよい）を接続するビデオカード104、ハードディスクドライブやメモリカードなどの記憶装置105、マウス、スタイラスおよびタブレットなどのポインティングデバイス106、キーボード107などを接続するUSBやIEEE1394などのシリアルバス用のインタフェイス108、ネットワーク114と接続するネットワークインタフェイスカード(NIC)107を備え、これらの構成はシステムバス109で相互に接続されている。また、インタフェイス108には、プリンタ110、スキャナ111、ディジタルカメラ112などを接続可能である。
【００２９】
CPU101は、ROM103または記憶装置105に格納されたプログラム（以下で説明する画像処理のプログラムを含む）をワークメモリであるRAM103にロードして当該プログラムを実行し、当該プログラムに従いシステムバス109を介して上記の各構成を制御することで、当該プログラムの機能を実現する。
【００３０】
なお、図1は、実施例1で説明する画像処理を実施するハードウェアの一般的な構成を示し、その一部の構成を欠いたり、他のデバイスが追加されても、本発明の範疇に含まれる。
【００３１】
［処理の概要］
図2は実施例1の赤目の自動補正処理の概要を示す機能ブロック図で、CPU101によって実行される処理である。なお、入力画像は、例えば、ディジタルカメラ112やフィルムスキャナ111から入力される一画素あたりRGB各8ビット、合計24ビットのディジタル画像データである。
【００３２】
図3はディジタルカメラ112などの撮像装置により撮像された赤目画像を概念的に示す図で、目の瞳孔領域302、虹彩領域301、撮影時に使用したフラッシュに起因するハイライト領域304を示す。また、符号303は白目部分を示している。通常、赤目現象により瞳孔領域302が赤くなる。
【００３３】
図2に示す赤領域抽出部202は、入力端子201に入力される画像データから赤色の領域を抽出する。赤色の領域の抽出方法は様々な方法が考えられるが、適応的二値化による赤色領域の抽出法を後述する。なお、赤領域抽出部202は目であるか否かに関わらず赤色領域を抽出するため、抽出される赤色の領域は、赤目、赤色の信号機、衣服の赤色の模様、赤色の照明など様々なものを含む。
【００３４】
赤丸領域抽出部203は、入力画像データと抽出された赤色領域の情報を入力して、赤色の領域の中からその形状が比較的円に近い領域（以下「赤丸領域」と呼ぶ）を特定する。領域形状の判定方法は様々な方法が考えられるが、境界線追跡による赤丸領域の抽出法を後述する。なお、赤丸領域抽出部203は、抽出した赤丸領域の位置情報を候補領域リストに格納する。
【００３５】
特徴量判定部204は、入力画像データと候補領域リストを入力して、候補領域リストに記録された赤丸領域について、目と特定できるような様々な特徴量の判定処理を行う。目と特定できるような特徴量には、赤丸領域の彩度、赤丸周辺領域の明度、彩度、色相、エッジの分布などがある。これらの特徴量を、予め定められた閾値と比較し、すべての条件を満たす赤丸領域を赤目領域であると特定する。なお、特徴量判定部204は、特定した赤目領域の位置情報を候補領域リストに格納する。
【００３６】
補正部205は、入力画像データと赤目領域の位置情報が格納された候補領域リストを入力して、画像データの赤目領域に補正処理を施し、補正処理を施した画像データを出力端子206に出力する。補正処理後の画像データは、モニタ113に表示されたり、RAM103あるいは記憶装置105に格納される、あるいは、インタフェイス108に接続されたプリンタ110によってプリントされたり、NIC107を介してネットワーク114（イントラネット、インターネットを含む）に接続された他のコンピュータやサーバに送信される。
【００３７】
［赤領域抽出部202］
赤領域抽出部202は、入力画像データに適応的二値化処理を適用することで、画像データから赤色領域を抽出する。つまり、入力画像データの各画素に対して赤色度合いを示す赤色評価量を算出し、その評価量と閾値を比較して、評価値＞閾値の場合に注目画素を赤色と判定する。この閾値は、注目画素の周辺領域において適応的に決定される閾値である。なお、ここで言う「二値化」とは赤色と判定した画素に‘1’を、そうではない画素に‘0’を割り当てることを言う。
【００３８】
図4は適応的二値化処理を説明する図である。
【００３９】
図4において、入力画像データ401上の注目画素402は二値化処理の対象画素である。赤領域抽出部202は、注目画素402の赤色度合いを示す評価量Erを式(3)で定義する。
Er = (R - G)/R      …(3)
【００４０】
式(3)は、注目画素402の赤色度合いを、一般的なHSI系の彩度ではなく、B成分を除くR、Gの二成分から求めることを意味している。赤色評価量Erを彩度ではなく、式(3)で定義することの利点を以下に説明する。
【００４１】
例えば、色素が濃い（多い）人の場合、瞳孔領域302の水晶体の透過率が低いために、鮮やかな赤目になりにくいという傾向がある。前述したように、日本人の赤目領域の画素値の推測値は(R, G, B)=(109, 58, 65)であり、日本人の肌色は色相で言えば赤（0度）からイエロー（60度）の間に多く分布することが実験の結果明らかになっている。このような領域は、RGB各成分の大小関係がR＞G＞Bになり、目の周辺の肌色領域の画素値の推測値は(R, G, B)=(226, 183, 128)である。このような場合、赤目画素の彩度は40、目の周辺の肌領域の画素の彩度は43とほぼ同様の彩度値になる。つまり、赤目領域の画素の彩度値は、目の周辺の肌色領域の画素の彩度値に対して特別突出するわけではない。従って、適応的二値化処理の閾値として彩度を用いれば赤目領域の検出が困難になる。
【００４２】
一方、赤色評価量Erを式(3)で定義すれば、赤目領域の画素の赤色評価量Erは47、目の周辺の肌色領域の赤色評価量Erは19になり、目の周辺の肌色領域に比べて赤目領域の画素の赤色評価量Erは二倍以上の値をもつことになる。
【００４３】
以上から、色素が濃い（多い）人の赤目を検出する場合、彩度ではなく、式(3)に示すようなB成分を含まない、R、G成分のみの評価量を定義することで、赤目を構成する画素を精度よく抽出することが可能になる。なお、式(3)において、R成分に対する(R-G)の割合を評価量Erとしたが、これに限定されるわけではなく、例えば(R-G)のみやR/Gを評価量Erとしてもよい。
【００４４】
図4に戻り、注目画素402を二値化するために、注目画素402と同一ライン上の、注目画素402に対して左方向（主走査方向の前方）に画素数がThWindowSizeになるようなウィンドウ領域403を設定し、当該ウィンドウ内の画素の赤色評価量Erの平均値Er(ave)を求める。ここで、画素数ThWindowSizeは画像の短辺と比較して1〜2%程度の幅とすることが望ましい。なお、評価量Erは以下の条件を満たす場合にのみ算出するため、評価量Erが負になることはない。
R ＞ 0 かつ R ＞ G      …(4)
【００４５】
平均値Er(ave)を用いて注目画素402を二値化するが、この処理を行うには、注目画素402は以下の条件を満たす必要がある。
R ＞ Th_Rmin かつ R ＞ G かつ R ＞ B      …(5)
ここで、Th_RminはRの下限値を表す閾値
【００４６】
上記の条件を満たす場合、式(6)による二値化処理を実行する。
Er ＞ Er(ave) + Margin_RGB ならば‘1’
Er ≦ Er(ave) + Margin_RGB ならば‘0’      …(6)
ここで、Margin_RGRはパラメータ
【００４７】
式(6)は、注目画素402の赤色度合いErがウィンドウ領域403の平均値Er(ave)にMargin_RGRを加えた値よりも大きい場合、注目画素402の二値化後の値を‘1’にする。すなわち、その注目画素402を赤色領域として抽出したことを意味する。なお、赤色領域が連続する場合、平均値Er(ave)の値が大きくなり過ぎるため、平均値Er(ave)に上限を設けてもよい。この二値化結果は、RAM103の中の入力画像用のバッファとは別に割り当てられた領域に保存される。
【００４８】
以上の処理を、入力画像データのライン単位に、注目画素402を左から右に移動して、すべての画素に施す。
【００４９】
なお、実施例1においては、二値化するための閾値（平均値Er(ave)）を、注目画素402と同一ライン上の左方向に設定したウィンドウ内の画素の評価値Erから算出したが、これに限定されるものではなく、例えば、注目画素402を含むラインの上方（副走査方向行の前方）数ラインの注目画素402の左方向（主走査方向行の前方）数画素を含むような領域や、注目画素402を中心とする所定の矩形領域をウィンドウに設定してもよい。
【００５０】
図5は適応的二値化の結果例を示す図である。図5(a)は入力画像データの赤目周辺の画像を示し、図5(b)は適応的二値化の結果得られる二値画像で、赤目の瞳孔部分の画素のみが抽出されている様子を示す。
【００５１】
また、主走査方向に設定したウィンドウ内部の評価量の平均値Er(ave)を求める際に、以下のような高速化手法を用いてもよい。
【００５２】
図6は平均値Er(ave)を求める際の高速化手法を説明する図である。
【００５３】
図6(a)において、注目画素402の左方向に設定したウィンドウ403内の平均値Er(ave)を求める際、ウィンドウ403内の評価量Erの総和をメモリ（例えばRAM103）に格納する。平均値Er(ave)は、総和をウィンドウ403を構成する画素数nで除算することにより、簡単に求めることができる。次に、注目画素402は一画素右へ移動するが、その際はウィンドウ403も一画素分右へ移動する。この時、図6(b)に示すウィンドウ403内の評価量Erの総和は、図6(a)において求めた総和から画素501の評価量Erを減算し、画素502（直前の注目画素402）の評価量Erを加えることで処理の高速化が図れる。つまり、注目画素402およびウィンドウ403の移動後、改めてウィンドウ403内すべての画素の評価量Erを算出する必要はない。
【００５４】
［赤丸領域抽出部203］
赤丸領域抽出部203は、二値画像処理方法の一つである境界線追跡法を用いて、赤丸領域を抽出する。
【００５５】
図7は境界線追跡法を説明する図である。
【００５６】
境界線追跡処理は、適応的二値化処理の結果得られる二値画像に対して、画像を上端から主副走査方向にスキャンして、注目画素(xa, ya)の値が‘1’で、注目画素の左(xa-1, ya)、左斜め上(xa-1, ya-1)、上方(xa, ya-1)、右斜め上(xa+1, ya-1)の四画素の値が‘0’である注目画素を始点にする（図7に符号701で示す画素）。なお、図7は、二値画像の左上を原点とする座標系を設定している。
【００５７】
そして、始点画素701から反時計回りに再び始点701に戻るまで、値が‘1’の画素を追跡する。追跡の途中、画像領域を逸脱したり、始点画素701よりもY座標が小さくなる場合は、追跡を打ち切り、次の始点を探索する。追跡の途中でY座標が始点画素701よりも小さくなった場合に追跡を打ち切るのは、図8に示すような環状領域の内側を誤って追跡することを防ぐためである。環状領域の内側を追跡した場合には、図8において、画素802に到達すると始点画素801よりもY座標が小さくなるので、ここで追跡処理を打ち切る。
【００５８】
上記の追跡過程で、追跡対象領域の周辺の長さ、方向ヒストグラム、X座標とY座標の最大値、最小値を得ることができる。ここで、周辺の長は、追跡した画素の数で、例えば図7の例では始点画素701を含めて九画素になる。
【００５９】
方向ヒストグラムは、追跡過程で、ある画素から次の画素へ移動する向きを、図9に示す八方向で累積したヒストグラムである。図7の例では、始点画素701から反時計回りに追跡すると、移動の向きは667812334になり、その方向ヒストグラムは図10に示すようになる。
【００６０】
X、Y座標の最大、最小値は、図11に示すように、値が‘1’の画素が存在する領域、すなわち赤色領域の外接矩形領域を示す。
【００６１】
赤丸領域抽出部203は、各赤色領域を境界線追跡して、上記の値を取得し、赤丸領域か否かを判定する。
【００６２】
図12は赤丸領域か否かの判定処理の一例を示すフローチャートである。
【００６３】
まず、赤色領域の縦横比が予め設定された閾値Th_BF_VHRatio以上か否かを判定する(S1201)。縦横比ARは式(7)で算出する。
AR = (ymax - ymin)/(xmax - xmin)      …(7)
ただし、AR ＞ 1ならばAR = 1/AR
【００６４】
すなわち、縦横比ARは0.0〜1.0の範囲で表され、AR=1.0のときは縦と横の長さが同じである。ステップS1201は、縦横比ARと閾値Th_BF_VHRatioを比較して、AR＜Th_BF_VHRatioの場合は、その赤色領域は赤丸領域ではないと判定して、次の赤色領域の探索に遷移する。
【００６５】
AR≧Th_BF_VHRatioの場合は、赤色領域のサイズが適正か否かを判定する(S1202)。サイズの判定は、(1)実際の画素数の上限、下限、(2)画像の短辺または長辺に対する比の二つの観点から行う。
【００６６】
まず、(1)については、赤色領域の横幅X=xmax-xminと縦幅Y=ymax-yminの小さい方と、予め設定された閾値を比較して、縦幅または横幅が上限Th_BF_SizeMaxと下限Th_BF_SizeMinの間にあるか否かを判定する。もし、上限と下限の間に縦幅Yまたは横幅Xがなければ、その赤色領域は赤丸領域ではないと判定して、次の赤色領域の探索に遷移する。
【００６７】
また、(2)については、式(8)により求める。
Th_BF_RatioMin ＜ min(X, Y)/min(W, H) ＜ Th_BF_RatioMax  …(8)
ここで、X = xmax - xmin
Y = ymax - ymin
Wは入力画像の幅
Hは入力画像の高さ
【００６８】
もし、注目赤色領域が式(8)を満さない場合は、赤丸領域ではないと判定して、次の赤色領域の探索に遷移する。なお、式(8)には、短辺同士を比較する例を示したが、長辺同士を比較してもよい。
【００６９】
ステップS1202とサイズが適正と判定した場合は、周辺の長さを理想的な円周と比較して、抽出した赤領域が円形に近いか否かの判定を行う。赤色領域の幅X、高さYから、理想的な円周Ciを式(9)で近似的に求める。
Ci = (X + Y)×2×2π/8      …(9)
【００７０】
式(9)は、抽出した赤色領域が正方形と仮定して、正方形に内接する円の円周を算出するものである。式(9)において、(X+Y)×2は赤色領域を包含する正方形の四辺の長を、2π/8が正方形の四辺の長さと当該正方形に内接する円の円周の比を示す。上記の理想的な円周ciと周辺の長さを式(10)によって比較し、式(10)を満たさない場合は赤丸領域とは判定せずに、次の赤色領域の探索に遷移する。
min(Ci, Cx)/max(Ci, Cx) ＞ Th_BF_CircleRatio      …(10)
ここで、Cxは周辺の長さ
【００７１】
周辺の長さが式(10)を満たす場合、方向ヒストグラムの偏りに関する判定を行う(S1204)。既に説明したように、境界線追跡の過程で、図10に示すような方向のヒストグラムを得ることができる。もし、境界線追跡の対象領域が円に近い場合、追跡処理の結果から得られた八方向の方向ヒストグラムは均等な分布になるが、対象領域が細長い場合などは方向ヒストグラムに偏りが生じる。例えば、右上から右下に細長い形状の対象領域であれば、図9に示す方向のうち、方向2および6に度数が集中し、方向4および8の度数が少なくなる。従って、式(11)に示す条件すべてを満たす場合は注目赤色領域を赤丸領域と判定し、何れか一つでも条件を満たさない場合は、注目赤色領域は赤丸領域ではないと判定して、次の赤色領域の探索に遷移する。
sum(f1, f2, f5, f6) ＜ Σf×Th_BF_DirectRatio
sum(f2, f3, f6, f7) ＜ Σf×Th_BF_DirectRatio
sum(f3, f4, f7, f8) ＜ Σf×Th_BF_DirectRatio      …(11)
sum(f4, f5, f8, f1) ＜ Σf×Th_BF_DirectRatio
ここで、fnは方向nの度数
sum(fa, fb, fc, fd)は方向a, b, c, dの度数の和
Σfは度数の総和
【００７２】
式(11)により、ある方向について求めた度数の和が所定割合よりも多い場合、すなわち、ある方向に集中があるならば、注目赤色領域は赤丸領域ではないと判定する。また、式(11)による判定は、度数の総和Σfが小さい場合は判定精度が低下する危惧があり、度数の総和Σfが所定値以下の場合、ステップS1204の処理をスキップしてステップS1205に進むようにしてもよい。
【００７３】
以上のステップS1201〜S1204のすべての判定（ステップS1204をスキップした場合は残るステップS1201〜S1203の判定）を満たす赤色領域について赤丸領域（赤目領域候補）と判定して、RAM103に割り当てた候補領域リストにその座標位置を格納し(S1205)、画像データの右下近傍に達するまでさらに境界線追跡および図12に示す判定を繰り返す。
【００７４】
［特徴量判定部204］
特徴量判定部204は、抽出された赤丸領域（赤目候補領域）について、人の赤目と特定できるような様々な特徴量を算出し、それを予め定められた閾値と比較して、赤目か否かを判定する。
【００７５】
特徴量判定部204は、前段までの処理によって候補領域リストに記録された赤目候補領域に対して、以下の五つの特徴量群の判定を図16に示す順番で実行する。
特徴量群0：赤丸領域と周辺領域の評価量の平均値Er(ave)の比較(S10)
特徴量群1：赤丸領域内の色相と評価量Er、色成分の変化に関する判定(S11)
特徴量群2：周辺領域の輝度に関する判定(S12)
特徴量群3：周辺領域の彩度、色相に関する判定(S13)
特徴量群4：周辺領域のエッジの強度に関する判定(S14)
【００７６】
理想的な赤目領域の赤色成分は、その周辺領域に比べて、瞳孔部分にのみ突出して存在する特徴がある。この特徴は、その他の様々な特徴量と比較しても、最も顕著に表れることが実験により判明している。従って、特徴量群0の判定処理(S10)を最初に行い、赤目候補領域を絞ることが効率的である。
【００７７】
特徴量群1の判定(S11)は、赤丸候補領域内のみの画素を参照して特徴量判定を行うため、他の特徴量群の判定に比較して演算量は少ない。
【００７８】
特徴量群2と特徴量群3の判定(S12、S13)は、設定した周辺領域に存在する画素に対して、RGB成分を輝度、色差成分に変換したり、RGB成分を明度、彩度、色相成分に変換する処理を必要とするため、特徴量群1の判定に比べて演算量は多くなる。
【００７９】
特徴量群4の判定(S14)は、エッジの強度を求めるためにSobelなどの公知のエッジ検出フィルタを用いる。そのため、他の特徴量群の判定と比較して最も演算量が多い。
【００８０】
従って、特徴量判定部204は、演算量の少ない判定、あるいは、赤目領域の特徴を掴み易い判定から順に行い、それによって赤目領域ではないと判定される赤目候補領域について、図16に示すように、以降の判定をスキップすることで、特徴量判定部204の処理量を抑制する。
【００８１】
●周辺領域の定義
図13は赤目候補領域の特徴量を算出する際に使用する周辺領域の定義を説明する図である。
【００８２】
図13において、中央のブロック1301が前段の処理で抽出された赤目候補領域（赤丸領域）の外接矩形で、周辺領域はブロック1301を中心として、その周辺にブロック1301の縦横のサイズをそれぞれ二倍、三倍、五倍に拡大した領域である。各倍率の周辺領域を図13(a)〜図13(c)に示す。また、以降で「周辺領域全体」と呼ぶ場合は、周辺領域からブロック1301を除いた部分を意味する。また、「周辺領域のブロック」とは、図13に破線で示すように、ブロック1301の辺を延長して周辺領域を八つに区切った各ブロックを意味する。特徴量群のうち、特徴量群1以外は、この周辺領域に対して判定を行う。このような周辺領域の設定は、最大でも赤目候補領域の外接矩形の五倍の領域しか参照しないため、高速な判定処理が可能である。
【００８３】
図14は赤目候補領域が画像の端部近傍に存在する場合の周辺領域を説明する図である。
【００８４】
図14(a)は、赤目候補領域の外接矩形（ブロック1301）が画像の右端近傍に、ややマージンを残して存在する場合を示す。この場合、周辺領域の各ブロック内に一画素でも画素が存在するならば、その画素を用いて特徴量判定を行う。
【００８５】
一方、図14(b)は、ブロック1301がマージンなしで画像右端に接する場合を示している。この場合、周辺ブロックのうち、右上(TR)、右(R)、右下(BR)の3ブロックには画素が存在しないため、当該周辺ブロックの特徴量を算出することができない。このような場合、実施例1では、ブロック1301を赤目領域と判定しないことにして、候補領域リストから除外する。
【００８６】
●特徴量群0の判定(S10)
特徴量群0の判定は、ブロック1301に対して例えば図13(b)に示す三倍の周辺領域を設定し、ブロック1301を含む各ブロックについて、式(3)を用いて各画素の評価量Erを算出し、それらの平均値Er(ave)を算出する。算出した平均値Er(ave)は、RAM103に割り当てた配列AEvR[8]に格納する。ここでAEvRは0〜8の九つの要素を保持する配列で、要素0は図13に示す左上(TL)ブロック、要素1は上(T)ブロック、要素2は右上(TR)ブロック、…というように、左上ブロックから右下ブロックの順に割り当てる。
【００８７】
次に、要素i=0〜8（ただし、ブロック1301のi=4は除く）について、以下の式を満たすか否かを判定する。
AEvR[i] ＜ AEvR[4]×Th_FJ0_EvR      …(12)
【００８８】
式(12)は、ブロック1301の評価量の平均値AEvR[4]に閾値Th_FJ0_EvRを乗じた値が、他の八個の周辺ブロックの評価量の平均値AEvR[i]よりも大きい場合、赤目領域と判定することを意味する。式(12)を満さない場合、注目赤目候補領域は赤目領域ではないとして、以降の特徴量群の判定を行わず、次の赤目候補領域の判定に移る。
【００８９】
ところで、まず式(12)によって評価量Erを比較する理由は、以降で説明する特徴量の中で、最も顕著に赤目領域の特徴を掴むことができるからである。様々な実験の結果、式(12)による判定が、赤目領域以外の領域を候補領域リストから除外するのに最も効果的であることが判明している。従って、できるだけ特徴を掴みやすい特徴量から順番に判定することで、特徴量判定部204の演算量を最小限に抑えることができる。
【００９０】
また、各ブロックの平均値Er(ave)を算出する際、ブロック1301については、図15(a)に示すような菱形の算出領域1501の画素についてのみ評価値Erを算出することが望ましい。赤目領域の形状は一般に円もしくは楕円であるから、ブロック1301の四隅には、赤色度合いが小さい画素が存在する。このため、ブロック1301の評価量の平均値Er(ave)を低下させないためにも、ブロック1301の四隅を除く画素を対象として評価量Erを算出すべきである。なお、評価値Erの算出領域は図15(a)に示す菱形以外に、ブロック1306に内接する円（図15(b)）や楕円（図15(c)）内としても、同等もしくはより良好な算出結果を得ることができる。
【００９１】
●特徴量群1の判定(S11)
特徴量群1の判定は、赤目候補領域（図13に示すブロック1301）内のみの画像データを参照して、赤目領域か否かを判定する処理である。特徴量群1の判定には、例えば以下のような判定処理が含まれる。
【００９２】
まず、赤目候補領域において、色相が±30度以内の画素の評価量の平均値Er(ave)が閾値Th_FJ1_EMin以上で、かつ、閾値Th_FJ1_EMax以下かを判定する。この判定を満さない場合は候補領域リストから除外する。なお、色相については、公知の手法により求めることが可能である。
【００９３】
次に、赤目候補領域において、色相が±30度以内の画素の評価量Erの最大値、最小値を求め、比率R=最小値/最大値を算出する。赤目候補領域では、評価量Erは大きく変化するため、比率Rはある程度小さい値になる。従って、式(13)に示す判定を行い、式(13)を満さない注目赤目候補領域を候補領域リストから除外する。
R ＜ Th_FJ1_EMaxMinRatio      …(13)
【００９４】
次に、赤目候補領域において、R成分の標準偏差を測定する。赤目領域には鮮やかな赤領域と、瞳孔境界付近の暗い領域が含まれるため、R成分のダイナミックレンジは非常に大きな値になる。従って、赤目領域のR成分の偏差を測定すれば、その値はある程度大きい値になる。従って、赤目候補領域において、既知の方法によりR成分の標準偏差δrを測定し、閾値Th_FJ1_RDivより大きいか否か判定する。
δr ＞ Th_FJ1_RDiv      …(14)
【００９５】
式(14)を満たさない赤目候補領域は候補領域リストから除外する。なお、上ではR成分の標準偏差について言及したが、当然、R成分の分散を用いたとしても、同様の判定を行うことができる。
【００９６】
また、R成分の変化の度合いを判定する別の方法として、赤目候補領域において、近隣画素間のR成分の差分和の平均値SDr(ave)を算出して閾値Th_FJ1_RDiffより大きいか否かを判定することも考えられる（式15）。
SDr(ave) ＞ Th_FJ1_RDiff      …(15)
【００９７】
近隣画素の差分和の平均値を算出する方法は様々な方法が考えられる。例えば、注目画素と、隣接する八つの画素との差分和の平均値を算出してもよいし、単純に左隣の画素との差分を求めてもよい。また、上記の判定は、R成分だけでなく、他のG、B成分あるいは輝度や評価量Erに対しても同様に実施することができる。
【００９８】
●特徴量群2の判定(S12)
特徴量群2の判定は、特徴量群1の判定により候補領域リストから除外されずに残った赤目候補領域に対して周辺領域を設定し、周辺領域内の輝度成分に関する判定処理を行う。特徴量群2の判定には、例えば以下の判定処理が含まれる。
【００９９】
まず、赤目候補領域に対して周辺領域（例えば図13(c)に示す五倍領域）を設定する。次に、ブロック1301を除く周辺領域の8ブロックの平均輝度値Y(ave)を算出し、平均輝度値Y(ave)が閾値Th_FJ2_YMin以上、閾値Th_FJ2_YMax以下の範囲か否かを判定する。平均輝度値Y(ave)がこの範囲に入らない場合、つまりブロック1301の周辺が極端に明るい、あるいは、暗い場合は、注目赤目候補領域を候補領域リストから除外する。
【０１００】
上記の輝度に関する判定は、周辺領域の8ブロック全体で行ってもよいし、周辺領域のブロックごとに平均輝度値Y(ave)を求めて、ブロックごとに予め設定した閾値と比較してもよい。
【０１０１】
次に、赤目候補領域に対して二倍の周辺領域（図13(a)）を設定し、ブロック1301を除く周辺領域の8ブロックそれぞれの平均輝度値Y(ave)を算出し、さらに、八つの平均輝度値の最大値Ymaxと最小値Yminを得る。赤目候補領域に対して二倍の周辺領域を設定した場合、周辺領域の明るさが大きく変化している可能性があるため、以下のような判定を行う。
(Ymax - Ymin) ＞ Th_FJ2_MaxMinDiff2      …(16)
【０１０２】
式(16)を満たさない場合、注目赤目候補領域を候補領域リストから除外する。
【０１０３】
また一方で、赤目候補領域に対して五倍の周辺領域（図13(c)）を設定し、上述したように、周辺領域の8ブロックそれぞれの平均輝度値Y(ave)を算出し、さらに、八つの平均輝度値の最大値Ymaxと最小値Yinを得る。赤目候補領域に対して比較的広い五倍の周辺領域を設定した場合、周辺領域の多くは肌色領域であり、それら領域で輝度値が大きく変化するとは考えられない。従って、二倍の周辺領域を設定した場合と異なり、以下の判定を行う。
(Ymax - Ymin) ＜ Th_FJ2_MaxMinDiff5      …(17)
【０１０４】
式(17)を満たさない場合、注目赤目候補領域を候補領域リストから除外する。
【０１０５】
●特徴量群3の判定(S13)
特徴量群3の判定は、特徴量群1および特徴量群2の判定により候補領域リストから除外されずに残った赤目候補領域に対して周辺領域を設定し、該周辺領域内の彩度および色相に関する判定を行う。特徴量群3の判定には、例えば以下の判定処理が含まれる。
【０１０６】
まず、赤目候補領域に対して周辺領域を設定し（例えば、図13(c)に示す五倍領域）、ブロック1301を除く周辺領域の8ブロックにおいて、色相が±Th_FJ3_HRangeの画素数の割合Rhを算出する。赤目領域の周辺領域は肌色領域であるから、大部分の画素の色相は上記の範囲に含まれる筈である。従って、算出した割合Rhが閾値Th_FJ3_HRatio以上であれば赤目候補領域とするが、当該閾値未満の場合は注目赤目候補領域を候補領域リストから除外する。なお、割合Rhは式(18)で計算する。
Rh = Nh/ΣN      …(18)
ここで、Nhは色相が±Th_FJ3_HRangeの画素数
ΣNは8ブロックの画素数
【０１０７】
次に、赤目候補領域に対して周辺領域を設定し（例えば、図13(c)に示すの五倍領域）、周辺領域の8ブロック全体の平均彩度S(ave)を算出する。平均彩度S(ave)が閾値Th_FJ3_SMin以上、閾値Th_FJ3_SMax以下の範囲にあるか否かを判定する。当該範囲を逸脱する場合、注目赤目候補領域を候補領域リストから除外する。
【０１０８】
また、上記の彩度の判定は、ブロック単位に行うことも考えられる。つまり、周辺領域のブロックごとに平均彩度S(ave)を算出し、予め設定された閾値と比較すればよい。
【０１０９】
さらに、赤目領域の周辺には所謂白目領域が存在するため、赤目候補領域に対して設定した周辺領域（例えば、図13(b)に示すの三倍領域）において、彩度Sと明度Lの比S/Lが閾値Th_FJ3_WhitePix以下になる、すなわち彩度Sが小さく、明度Lが高い画素が存在するならば赤目候補領域と判定する。もし、上記の判定が否の場合は、注目赤目候補領域を候補領域リストから除外する。
【０１１０】
●特徴量群4の判定(S14)
特徴量群4の判定は、特徴量群1から特徴量群3の判定により候補領域リストから除外されずに残った赤目候補領域に対して周辺領域を設定し、周辺領域内のエッジに関する判定処理を行う。人の目近傍には非常に強いエッジが存在するため、有効な特徴量になり得る。また、以下ではエッジの検出に公知のSobelフィルタを用いる例を説明するが、これに限定されるものではなく、他のエッジ検出フィルタを用いたとしても、同様の判定処理を行うことが可能である。なお、Sobelフィルタについては公知であるため、ここでの詳細な説明は省略する。特徴量群4の判定には、例えば以下のような判定処理が含まれる。
【０１１１】
まず、赤目候補領域に対して周辺領域（例えば、図13(a)に示す二倍領域）を設定し、周辺領域内の各画素に対してSobelフィルタを施す。その結果、画素ごとに得られるSobel出力値の平均値So(ave)を算出する。人の目近傍には強いエッジが存在する場合が多いため、平均値So(ave)と閾値Th_FJ4_SobelPowを比較して、So(ave)≦Th_FJ4_SobelPowの場合は注目赤目候補領域を候補領域リストから除外する。
【０１１２】
また、赤目候補領域に対して周辺領域（例えば、図13(b)に示す三倍領域）を設定し、周辺領域内の各画素に対してSobelフィルタを施す。その結果、画素ごとに得られるSobel出力値の最大値と最小値の差Dsを算出する。人の目近傍には強いエッジが存在する一方で、肌色の平坦な部分も存在することから、差Dsは比較的大きな値になる筈である。従って、差Dsと閾値Th_FJ4_MaxMinDiffを比較して、Ds≦Th_FJ4_MaxMinDiffの場合は注目赤目候補領域を候補領域リストから除外する。
【０１１３】
さらに、赤目候補領域に対して周辺領域（例えば、図13(b)に示すの三倍領域）を設定し、周辺領域内の各画素に対してSobelフィルタを施す。その結果、画素ごとに得られるSobel出力値をエッジ画像としてRAM103の割り当てた配列sobel[y][x]に格納する。次に、エッジ画像の重心位置(Xw, Yx)を算出する。重心位置(Xw, Yx)は、式(19)によって求める。
(Xw, Yw) = (Σx・Sobel[y][x]/Sobel[y][x], Σy・Sobel[y][x]/Sobel[y][x])      …(19)
【０１１４】
もし、注目赤目候補領域が人の目であれば、重心位置(Xw, Yx)は、エッジ画像の中央近傍に存在する筈である。従って、重心位置(Xw, Yx)が、例えばブロック1301に含まれるか否かを判定し、含まれていれば赤目候補領域と判定し、含まれない場合は注目赤目候補領域を候補領域リストから除外する。
【０１１５】
また、赤目候補領域に対して五倍の周辺領域（図13(c)）を設定し、周辺領域の各画素に対してSobelフィルタを施す。その結果得られる各画素のSobel出力値をエッジ画像として配列Sobel[y][x]に格納する。配列Sobel[y][x]は五倍の周辺領域の画素数と同じサイズの配列になる。次に、ブロック1301を含む周辺領域全体に対して、図17に示すような二つの領域、すなわち中央領域1601と外部領域1602を定義し、各領域に対して、配列Sobel[y][x]に格納したSobel出力値の平均値を算出する。なお、図17においては、中央領域1601のサイズをブロック1301の2.5倍としたが、これに限定されるものではない。中央領域1601と外部領域1602それぞれのSobel出力値の平均をSPowin、SPowoutとすると、人の目の近辺においては、外部領域1602よりも中央領域1601の方が強いエッジが存在することから、以下の判定を行う。
SPowin/SPowout ＞ Th_FJ4_InOutRatio      …(20)
【０１１６】
式(20)を満たす場合、注目赤目候補領域を赤目領域と判定する。もし、式(20)を満たさない注目赤目候補領域は赤目領域ではないと判定し、候補領域リストから除外する。
【０１１７】
また、上記の応用として、SPowin、SPowoutを単独に別の閾値と比較するような判定も考えられる。
【０１１８】
特徴量判定部204は、以上の特徴量群0〜4の判定すべて（あるいは一部）を満たす赤目候補領域を赤目領域として確定し、赤目領域を確定した候補領域リストを補正部205に入力する。
【０１１９】
［補正部205］
補正部205は、RGB成分で構成された入力画像データと、前段までの処理で得られた赤目領域が記載された候補領域リストが入力される。
【０１２０】
図18は補正部205が実行する、候補領域リストに記載された複数の赤目領域のうちの一つを補正する処理例を示すフローチャートである。つまり、補正部205は、候補領域リストに記載された赤目領域を一つずつ図18に示す処理で補正する。
【０１２１】
まず、注目赤目領域に対して補正範囲を決定する(S1701)。図19は補正範囲の決定を説明する図である。
【０１２２】
図19において、中央の矩形領域が候補領域リストに記載された赤目領域1901である。赤目領域1901の中心を通る長径、短径がそれぞれLw1、Lh1の楕円の補正領域1902を設定する。なお、Lw1、Lh1は式(21)によって算出する。
Lw1 = Lw0×CPARAM_AREARATIO
Lh1 = Lh0×CPARAM_AREARATIO      …(21)
ここで、Lw0、Lh0は赤目領域1901の幅と高さの1/2
CPARAM_AREARATIOは補正範囲を決定するためのパラメータ
【０１２３】
次に、補正領域1902内で補正に必要なパラメータを算出する(S1702)。算出するパラメータは、楕円領域内部での最大輝度値Ymaxおよび式(3)に示す評価量Erの最大値Ermaxである。
【０１２４】
次に、注目画素が補正領域1902内に存在するか否かを判定する(S1703)。注目画素が補正領域1902の楕円領域に存在するか否かは、楕円を算出する公式（式(22)）によって判定することができる。
(x/Lw1)2 + (y/Lh1)2 ≦ 1      …(22)
ここで、(x, y)は注目画素の座標
ただし、座標原点は注目赤目領域の中心
【０１２５】
注目画素の座標(x, y)が式(22)を満たす場合、注目画素は補正領域1902内に存在すると判断して、処理をステップS1704に進める。注目画素が補正領域1902内に存在しない場合は、注目画素を次の画素に移動し(S1710)、処理をステップS1703に戻す。
【０１２６】
注目画素が補正領域1902に存在する場合、注目画素のRGB成分値を輝度、色差成分のYCC値に変換する(S1704)。変換方法には既知の様々な方法が存在するが、どの方法を用いても構わない。
【０１２７】
次に、注目画素に対する評価量を算出する(S1705)。この評価量は、後段のステップS1706で補正量を決定するために必要なパラメータで、具体的には以下の三つの値である。
(1) 赤目領域1901の中心から注目画素までの距離rと、
中心から楕円境界までの距離r0の比r/r0
(2) 注目画素の評価量Erと評価量の最大値Ermaxの比Er/Ermax
(3) 注目画素の輝度Yと最大輝度値Ymaxの比Y/Ymax
【０１２８】
次に、ステップS1705で求めたパラメータを用いて、注目画素の輝度Yおよび色差成分Cr、Cbそれぞれの補正量Vy、Vcを式(23)によって算出する(S1706)。
Vy = {1 - RrTy1}・{1 - (1 - Re)Ty2}・{1 - RyTy3}
Vc = {1 - RrTc1}・{1 - (1 - Re)Tc2}            …(23)
ここで、Rr = r/r0、Re = Er/Ermax、Ry = Y/Ymax
【０１２９】
Vy、Vcはともに0.0〜1.0の範囲になり、1.0に近いほど補正量が大きいことを意味する。輝度の補正量Vyは、三つのパラメータすべてを用いて決定し、注目画素の位置が補正領域1902の中心から離れるほど補正量が小さくなる。また、注目画素の評価量Erが、最大値Ermaxに比べて小さい場合、補正量Vyは小さくなる。また、注目画素の輝度値Yが、最大値Ymaxに近い場合、補正量Vyは小さくなる。輝度が高い画素の補正量Vyを小さくするのは、目の中のハイライト部（キャッチライト）を保存する効果がある。一方、色差の補正量Ycは、輝度に関するパラメータを除いたものである。
【０１３０】
式(23)において、Ty1、Ty2、Ty3、Tc1、Tc2もパラメータで、それらの設定によって、各評価量（つまり、式(23)の括弧{ }内の値）を図20に示すように一次（実線）、二次（破線）、三次（一転鎖線）といった直線または曲線で適用することが可能である。
【０１３１】
次に、補正量Vy、Vcを用いて式(24)により補正後のYCC値を算出する(S1707)。
Y' = (1.0 - Wy・Vy)・Y
C' = (1.0 - Wc・Vc)・C      …(24)
ここで、Y、Cは補正前の値
Y'、C'は補正後の値
Wy、Wcは重み(0.0〜1.0)
【０１３２】
重みWy、Wcは、補正強度を指定したい場合に調節する。例えば、補正強度を弱、中、強と三段階とする場合、Wy、Wcをともに0.3、0.7、1.0などに設定することで、同一の処理で、補正強度が異なる結果を得ることができる。
【０１３３】
新しい輝度、色差成分の値が決定したら、YCC値をRGB値へ変換し、補正後の画素値として入力画像用のメモリバッファに上書きする、あるいは、出力用画像を格納するメモリバッファの所定アドレスに格納する(S1708)。
【０１３４】
ステップS1709の判定により、注目赤目領域に対応する最後の画素に達するまで、ステップS1710で注目画素を移動して(S1710)、上記の処理（S1703〜S1708）を繰り返す。また、注目赤目領域に対応する最後の画素に達した場合、次の赤目領域の補正処理に移行して、公報領域リストに記録されたすべての赤目領域の補正処理を繰り返す。
【０１３５】
なお、補正部205に入力される画像がRGB成分で構成され、入力画像を輝度、色差成分に変換して補正した後、再び、RGB成分に戻す方法を説明したが、これに限定されるものではない。例えば、RGB成分を明度、彩度に変換し、同様の方法を用いて明度、彩度を補正した後、再び、RGB成分に戻したとしても、ほぼ同様の出力結果が得られる。
【０１３６】
さらに、補正量を決定するためのパラメータとして、注目画素の評価量Erと補正領域1902内の評価量の最大値Ermaxの比Er/Ermaxを用いる例を説明したが、同パラメータを単純に彩度に置き換えることも可能である。つまり、注目画素の彩度と、補正領域1902内の最大彩度との比を用いて補正量を決定してもよい。
【０１３７】
このように、赤目を構成する画素か否かを、彩度ではなく、RおよびG成分の関係で求めた評価量Erを用いて判定することで、色素が濃い（多い）人の赤目も高精度に抽出することができる。また、赤目候補画素に対応する二値画像上で、境界線追跡法を適用することにより、二値画像から極めて少ない演算量で高速に赤丸領域を抽出することができる。また、赤丸領域から、赤目であると考えられる様々な特徴量を算出し、それを評価することで、最終的に赤目領域を高精度に特定することができる。また、個々の特徴量判定による効果、および、特徴量算出時の演算量を考慮して、特徴量の判定を適切な順序で行って赤目領域候補を篩にかけ、赤目領域ではない可能性が高い候補領域を早々に除外する。従って、必要最小限の処理量で赤目領域の検出を実現することができる。
【実施例２】
【０１３８】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【０１３９】
実施例1において説明した適応的二値化処理は、注目画素の左方向（主走査方向の前方）に所定サイズのウィンドウ403（図4参照）を設定し、同ウィンドウ403内の画素の評価量の平均値Er(ave)を算出し、平均値Er(ave)を閾値として注目画素が赤色領域を構成するか否かによって二値化する。このような方法は、閾値を算出するために参照する画素数が少なく、処理の高速化が図れる。しかし、ウィンドウ403を注目画素の左方向にしか設定しないため、二値化結果は処理方向に依存する。その結果、図5(a)に示すような画像に適応的二値化処理を施した場合、図21(a)に示すように、赤目領域である瞳孔部分のほかに、符号2001で示すアイラインが赤色領域を構成する画素として抽出される場合がある。以下では、この理由を説明する。
【０１４０】
実施例1では、注目画素2002を二値化する閾値は、注目画素2002の左方向に設定したウィンドウの画素の評価量の平均値Er(ave)であり、注目画素2002の評価量Erと平均値er(ave)の比較結果から二値化を行う（式(6)参照）。ここで、抽出したい瞳孔に対して、ウィンドウは左方向にあるため、通常、肌色部分にウィンドウが設定される。色素が薄い（少ない）人の肌色部分の画素値は例えば(R, G, B)=(151, 135, 110)になる。式(3)によって評価量Erを算出すると11%であり、比較的小さい値である。一方、目のアイラインを構成する注目画素2002は、例えば(R, G, B)=(77, 50, 29)のように、肌色部分と比べて多少輝度が低く、同様に評価量Erを算出すると35%になる。両者を比較すると、明らかにウィンドウ内に存在する肌色部分の評価量Erよりも、アイライン部分の評価量Erが大きく、実施例1の適応的二値化処理によれば、パラメータMargin_RGRの設定にも依存するが、注目画素2002は赤色領域を構成する画素として抽出され易い。
【０１４１】
その結果、図21(a)に示すような、(xmin, ymin)(xmax, ymax)で囲まれた赤色領域が抽出される。この抽出結果を赤丸領域抽出部203に入力すれば、本来の赤色領域よりも広い領域を対象として赤丸領域の抽出が行われ、抽出結果の信頼性低下、抽出時間の増加などが発生する。
【０１４２】
もし、注目画素2002に対して同じ大きさのウィンドウを右方向にも設定した場合は、ウィンドウには肌色画素のほかに、アイラインを構成する画素や、場合によっては赤目の瞳孔部分も多く含まれるため、右方向に設定したウィンドウにおける評価量の平均値Er(ave)は増加する。その結果、注目画素2002は、右方向に設定したウィンドウの画素に比べて、突出した評価量Erをもつわけではないから、赤色領域を構成する画素とは判定され難くい。
【０１４３】
以下、実施例2として、赤領域抽出部202が実行する適応的二値化処理において、ウィンドウを左右双方向に設定する例を説明する。
【０１４４】
実施例2の適応的二値化処理は、図22Aに示すように、まず注目画素402に対して左方向にウィンドウ403を設定し、実施例1と同様の方法によって注目画素402を二値化する。そして、図22Aに矢印で示すように、注目画素402を左から右方向に移動しながら、その二値化結果をRAM103に割り当てた二値画像用のバッファに格納する。
【０１４５】
注目画素402がラインの右端に達し、注目画素402を左から右へ移動する二値化が終了すると、図22Bに示すように、同じラインにおいて注目画素402を右から左へ移動する二値化処理を行う。この際、二値化の閾値を設定するためのウィンドウ404は、注目画素402の右方向に設定する。
【０１４６】
上記の双方向の二値化の何れにおいても、その二値化結果が‘1’の画素を、赤色領域を構成する画素として二値画像用のバッファに格納する。
【０１４７】
図21(b)は、双方向の適応的二値化処理によって得られる赤色領域を構成する画素の例を示している。片方向の適応的二値化処理の結果（図21(a)）に比べて、アイライン部分などの画素が除去され、赤色領域がより適切に抽出される。
【０１４８】
このように、適応的二値化処理によって赤色領域を抽出する場合、二値化閾値を算出するウィンドウを、注目画素に対して左右双方向に設定することで、赤色領域を構成する画素を高精度に抽出することができる。
【実施例３】
【０１４９】
以下、本発明にかかる実施例3の画像処理を説明する。なお、実施例3において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【０１５０】
実施例1、2では、式(3)に示す評価量Erに着目した適応的二値化処理を行い、赤色領域を構成する画素を抽出する方法を説明した。このような方法は、稀に図23に示すような赤目の瞳孔部分2201とは別に、目尻、目頭部分2202の画素を赤色領域を構成する画素として検出することがある。目尻、目頭部分2202を拡大してみると、例えば(R, G, B)=(81, 41, 31)といった「赤黒い」画素が多く存在することがわかる。この画素の評価量Erは49%になり、比較的大きな値である。そのため、実施例1、2の適応的二値化処理においては、ある程度の大きさをもつ画素集合として検出される可能性が高い上、エッジや周辺領域の明度、色相、彩度などが目の特徴を兼ね備えるため、赤丸領域判定部203と特徴量判定部204においてすべての判定を満足し、最終的に赤目領域と誤判定される可能性が高い。実施例3は、この問題を解決するための構成を備える。
【０１５１】
図24は実施例3の赤目の自動補正処理の概要を示す機能ブロック図で、CPU 101によって実行される処理である。実施例1と比較すると、候補領域評価部207が追加されている。
【０１５２】
候補領域評価部207は、前段までの処理で生成された候補領域リストを参照して、赤目候補領域それぞれについて、相対的な位置と面積を評価して、赤目候補領域を整理する。すなわち、評価の結果、赤目領域として適当ではないと判断される赤目候補領域を候補領域リストから除外する。
【０１５３】
図25は候補領域評価部207の処理例を示すフローチャートである。なお、特徴量判定部204の処理によって、k個（0〜k-1番目）の領域が赤目候補領域として抽出されたと仮定する（総検出数Ne=k）。
【０１５４】
まず、カウンタkに総検出数Neを設定し(S2499)、k番目の赤目候補領域（以下「領域k」と呼ぶ）の中心位置とサイズを算出する(S2500)。なお、サイズは矩形領域として抽出される赤目候補領域の短辺の長さとする。次に、カウンタiに零を設定し(S2501)、領域kの面積（以下「面積k」と呼ぶ）を、領域候補リストに格納されている他の赤目候補領域（以下「領域i」と呼ぶ）の面積（以下「面積i」と呼ぶ）と比較する(S2502、S2503)。面積i＜面積kの場合はカウンタiをインクリメントし(S2512)、処理をステップS2502に戻す。
【０１５５】
面積i≧面積k（領域kよりも面積が大きい赤目候補領域が存在する）場合は、図26に示すような両領域の中心間距離Sizeを算出し(S2504)、中心間距離Sizeから大きさの評価、判定を行うための閾値Th_Sizeを算出する(S2505)。
【０１５６】
図27は中心間距離Sizeと閾値Th_Sizeの関係例を示す図で、横軸は中心間距離、縦軸は閾値Th_Sizeである。また、Sa、Sb、La、Lbはパラメータであり、例えば、La=3.0、Lb=5.0、Sa=1.0、Sb=2.0といった値を設定する。このパラメータを設定した場合、中心間距離Sizeが領域kのサイズ（短辺の長さ）の三倍以下であれば閾値Th_Sizeは1.0になる。また、中心間距離sizeが領域kのサイズの三倍から五倍であれば、図27に示す直線上の値として閾値Th_Sizeが決定される。また、中心間距離sizeが五倍を超える場合は判定処理を行わない。
【０１５７】
次に、面積iと面積k×Th_Sizeを比較して、面積i≧面積k×Th_Size、すなわち、領域kの近傍に領域kよりも大きい赤目候補領域が存在する場合は、領域kは赤目領域ではないと判定し、領域kを候補領域リストから除外し(S2507)、総検出数Neをデクリメントし(S2508)、処理をステップS2501に戻す。
【０１５８】
一方、面積i＜面積k×Th_Sizeの場合は、ステップS2509の判定により、i＜k-1であればカウンタiをインクリメントし(S2512)、処理をステップS2502に戻す。また、i=k-1であればカウンタkをデクリメントし(S2510)、ステップS2511の判定により、k＞0であれば処理をステップS2500に戻し、k=0であれば処理を終了する。
【０１５９】
このような判定処理により、候補領域リストに記録された赤目候補領域から不要な候補領域を除去することができる。
【０１６０】
このように、ある赤目候補領域の近傍に、その赤目候補領域よりも小さい赤目候補領域が存在する場合、小さい赤目候補領域を候補領域リストから除外することで、上記の問題を解決することができる。
【実施例４】
【０１６１】
以下、本発明にかかる実施例4の画像処理を説明する。なお、実施例3において、実施例1〜3と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【０１６２】
実施例1の適応的二値化処理を用いると、赤目の中に存在するハイライトによって赤目領域が分断される場合がある。図28(a)は赤目の拡大図を示し、符号2701は虹彩領域を、符号2702は赤い瞳孔領域を、符号2703はフラッシュによって発生したハイライト（白）領域をそれぞれ示している。よく知られているように、赤目現象はフラッシュによって引き起こされる現象であるから、撮影された画像データの瞳孔領域2702には、高い確率でフラッシュの光が反射したハイライト領域が存在する。これはキャッチライトとも呼ばれる。
【０１６３】
通常、ハイライト領域は瞳孔内の微小な点として存在するため、赤目検出処理には影響しない。しかし、撮影条件によっては、ハイライト領域が瞳孔領域の大部分を占めるほど大きくなったり、図28(a)に示すハイライト領域2703のように、細長い領域になったりする。このような画像データに実施例1の適応的二値化処理を適用すると、ハイライト領域2703の評価量Erは極めて小さい値になり、赤色領域としては認識されず、二値画像において、図28(b)に示すように、瞳孔領域が二つの領域2704、2705に分断される場合がある。このような二つの領域に後段の処理を適用すれば、瞳孔領域2702が赤目領域と判定される確率は極めて低下する。実施例4は、近隣に存在する赤丸領域を結合する処理によって、この問題を解決する。
【０１６４】
図29は実施例4の赤目の自動補正処理の概要を示す機能ブロック図で、CPU101によって実行される処理である。実施例3と比較すると、候補領域結合部208が追加されている。
【０１６５】
候補領域結合処理部208は、赤丸領域抽出部203が抽出した赤丸領域の左上、右下座標が格納された候補領域リストを参照して、当該赤丸領域の近傍に存在する赤丸領域を結合すべきか否か判断する。図31は候補領域リストの一例を示す図である。図31には四つの赤丸領域が記録された例を示すが、実際には、赤丸領域の数は数十から、場合によっては数千になる。
【０１６６】
図30は候補領域結合部208の処理例を示すフローチャートである。
【０１６７】
まず、カウンタi=0、カウンタj=iに初期化し(S2901、S2902)、候補領域リストのi番目とj番目に記録された赤丸領域（以下「領域i」「領域j」と呼ぶ）を結合すべきか否かを判定する(S2903)。具体的には、図32(a)に示すように、幅がWi、高さがHi（単位は画素数）の領域iと、幅がWj、高さがHjの領域jを包含する矩形領域を設定し、その幅Wijと高さHijを算出する。次に、式(25)によって、領域i、領域jが近隣に存在し、かつ、その大きさも同程度であるか否かを判定する。
(Wi・Hi + Wj・Hj)/(Wij・Hij) ＞ Th_J      …(25)
ここで、0＜閾値Th_J≦1.0
【０１６８】
式(25)は、領域iの面積と領域jの面積の和と、両者を包含する矩形領域の面積の比を算出し、比が閾値Th_Jよりも大きい場合、両領域は近隣に存在し、かつ、大きさも同程度であると判断できることを意味する。もし、領域i、領域jが図32(b)に示すような位置関係にあれば、式(25)で算出する比は小さくなり、結合すべきではないと判断される。
【０１６９】
ステップS2903の判定の結果、結合すべきではないと判定した場合は、カウンタjをインクリメントして(S2908)、処理をステップS2903に戻す。また、結合すべきと判定した場合は、結合後の領域が、結合前と比較して正方形に近付いたか否かを判定する(S2904)。具体的には、式(26)を用いて判定する。
min(Wij, Hij)/max(Wij, Hij) ＞ max{min(Wi, Hi)/max(Wi, Hi), min(Wj, Hj)/max(Wj, Hj)}
…(26)
【０１７０】
式(26)は、領域i、領域jを包含する矩形領域の縦横比（1.0以下）と、領域iおよび領域jの縦横比のうちの大きい値とを比較した場合に左辺が大きい、すなわち、正方形に近いことを意味する。式(26)を満たせば、結合後の矩形領域はより正方形に近付くことになり、その結果、赤丸領域も円形に近付くことになる。
【０１７１】
式(26)を満たさない場合は、カウンタjをインクリメントして(S2908)、処理をステップS2903に戻す。また、式(26)を満たす場合は、候補領域リストのi番目の座標情報を、領域i、領域jを包含する矩形領域の座標に更新し、j番目の位置情報を候補領域リストから削除する(S2905)。
【０１７２】
次に、ステップS2906の判定により、カウンタjの値が最大値（リストの終わり）に達していない場合はカウンタjをインクリメントして(S2908)、処理をステップS2903に戻す。また、カウンタjの値が最大値に達した場合は、ステップS2907の判定により、カウンタiの値が最大値（リストの終わり）に達していない場合はカウンタiをインクリメントして(S2909)、処理をステップS2902に戻す。また、カウンタiの値が最大値に達した場合は処理を終了する。
【０１７３】
このような判定処理により、候補領域リストに記録された、ハイライト領域によって分断された赤丸領域を結合することができる。
【０１７４】
このように、ある赤丸候補の近隣に、当該赤丸領域に類似する赤丸領域が存在する場合、両者を結合すると赤目領域の条件（外接矩形が正方形に近い）に近づくか否かを判定することで、瞳孔内に存在するハイライト領域によって分断された、赤目領域に相当する赤丸領域を適切に結合することができる。
【実施例５】
【０１７５】
以下、本発明にかかる実施例5の画像処理を説明する。なお、実施例5において、実施例1〜4と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【０１７６】
実施例5では、実施例1〜4で説明した画像処理を、CPUの処理能力や使用可能なメモリ（RAMなど）の記憶容量が制限された環境下において実施する方法を説明する。このような環境は、複写機、プリンタ、ディジタルカメラ、スキャナ、複合機などの画像入出力デバイスに実装される画像処理部を想定したものである。
【０１７７】
上記の環境では、使用可能なワークメモリは多くても数百KB〜数MB程度である。一方、ディジタルカメラの高解像度化が進み、1000万画素を超える撮像能力をもつかカメラも登場している。このような高精細な画像から赤目領域を検出する処理を、限られたワークメモリを用いて行うには、入力画像の解像度を低下することが有効である。例えば、800万画素の入力画像を、水平垂直方向に一画素間隔でサブサンプルすれば1/4の解像度、すなわち200万画素の画像に縮小することが可能である。この場合、画像を記憶するために必要なワークメモリの容量も1/4になる。しかし、たとえ200万画素に縮小したとしても、縮小後の画像全体を同時に保持するには、RGB24ビットの場合、約6MBのワークメモリが必要になる。大容量のRAMを備えるパーソナルコンピュータやワークステーションでは問題とならない記憶容量だが、限られた環境下においては、ワークメモリの使用量を削減するために、さらなる工夫が必要になる。
【０１７８】
実施例5においては、入力画像を縮小し、縮小画像をさらにバンドに分割し、各バンド単位に、順次、赤目領域を抽出する方法を説明する。また、バンド分割においては、バンド境界に存在する赤目の検出を可能にするために、図33に示すように、オーバラップ領域を有する。図33において、符号3201は入力画像を縮小して得られる縮小画像を示し、BandHeightは1バンドを構成するライン数を示す。つまり、赤目領域の抽出処理は、Width×BandHeight（単位は画素数）の画像に対して行うことになる。また、実施例5におけるバンド分割は、OverlapAreaで示すライン数だけ、前のバンドと重複する。これによって、符号3202で示すような、バンド境界に存在する赤目領域についても抽出が可能になる。
【０１７９】
図34は実施例5における赤目領域の抽出処理の一例を示すフローチャートで、画像入出力デバイスに搭載されたCPUが実行する処理である。
【０１８０】
まず、カウンタNを零に初期化し(S3301)、Nバンド目の縮小画像を生成する(S3302)。
【０１８１】
縮小画像の生成方法は、簡単のために、単純間引きによって縮小画像を生成する方法を説明する。例えば、800万画素の画像が画像入出力デバイスのメモリ（例えばデバイスに装備されたフラッシュメモリやハードディスク、あるいは、外部から装着されたメモリカード）に格納されているものとする。
【０１８２】
ステップS3302において、メモリの画像データにアクセスし、画像データがJPEG形式で保存されていれば、最初のMCU（最小符号化単位）ブロックのデコードしてワークメモリの所定領域に格納する。このMCUブロックのサイズは、例えば16×8画素である。次に、デコード後の画像データから例えば一画素間隔でサブサンプリングして、8×4画素の画像データを生成し、ワークメモリの赤目領域抽出用の画像格納領域に格納する。この処理をBandHeightライン数分の赤目領域抽出用の画像格納領域が満たされるまで繰り返す。この処理によって、800万画素の画像を200万画素に縮小する場合のバンド画像を得ることができる。
【０１８３】
勿論、画像の縮小方法は、単純間引き以外にも、最近隣補間や線形縮小を用いる方法など、様々な方法を利用することができ、それらのどれを使用しても構わない。
【０１８４】
上記の処理によって、縮小画像のバンド画像が得られると、Nバンド目の赤目領域の抽出処理を行う(S3303)。
【０１８５】
図35はNバンド目の赤目領域の抽出処理(S3303)の詳細を示すフローチャートである。
【０１８６】
まず、縮小画像データに上記実施例で説明した適応的二値化処理を施す(S3401)。処理結果（赤色領域の二値画像）は、縮小画像の格納領域とは別に割り当てた領域に保存する。この際、縮小画像のOverlapArea領域は重複領域であるから、当該領域の処理は、N-1バンド目で実施済みである。従って、N＞0であれば、OverlapArea領域の処理をスキップし、N-1バンド目の処理結果を再利用するようにしてもよい。このようにすることで、処理の高速化を図ることができる。
【０１８７】
次に、二値化の結果（赤色領域）に対して、上記の実施例で説明した境界線追跡を施し、バンド画像から赤丸領域を抽出する(S3402)。
【０１８８】
次に、抽出した赤丸領域に対して特徴量判定処理を施す前に、複数の赤丸領域のうち、特徴量判定処理を施す赤丸領域を選択する候補領域選択処理を行う(S3403)。
【０１８９】
図36は、N-1、NおよびN+1バンド目において、OverlapArea内に四つの赤丸領域が存在する例を示している。例えば、赤丸領域3603に注目すると、当該領域はNバンド目とN+1バンド目の双方に存在し両者について特徴量判定を行えば、OverlapArea領域に存在する赤丸領域は常に二回の処理することになり、効率的ではない。
【０１９０】
そこで、赤丸領域3603の場合、NまたはN+1バンド目のどちらで特徴量判定を行うべきかを考える。N+1バンド目では、赤丸領域3601に対して設定する周辺領域の上部が欠けるのに対して、Nバンド目では、周辺領域を参照することが可能である。従って、赤丸領域3603については、Nバンド目の判定結果の方が信頼性が高いと言える。さらに一般化すれば、OverlapArea領域に存在する赤丸領域の特徴量判定は、周辺領域をより広く参照できるバンドにおいて処理すべきである。
【０１９１】
従って、実施例5の候補領域選択処理(S3403)は、OverlapArea領域に存在する赤丸領域について、図37に示すように、赤丸領域の上端からN+1バンド目の上端までの距離UPLenを予測（N+1バンド目は未処理であるから、N+1バンド目における赤丸領域の位置を予測する）し、赤丸領域の下端からNバンド目の下端までの距離BTLenを算出し、当該赤丸領域の特徴量判定を、UPLen＜BTLenならばNバンド目で行い、UPLen≧BTLenならばNバンド目では行わない（言い換えればN+1バンド目で行う）と判定する。なお、Nバンド目で特徴量判定を行わない場合は、当該赤丸領域を当該バンドの候補領域リストから除外する。
【０１９２】
同様に、図36に示す赤丸領域3604について距離UPLen、BTLenを算出すると、その関係はUPLen＞BTLenになるため、赤丸領域3604はN+1バンド目で特徴量判定を行うことになる。また、上記の関係を赤丸領域3601、3602に適用すると、それぞれN-1バンド目、Nバンド目で特徴量判定を行うことになる。
【０１９３】
このように、候補領域選択処理(S3403)では、OverlapArea領域に存在する赤丸領域の上部および下部とバンド端の距離（マージン）を算出し、その関係に応じて、どちらのバンドで特徴量判定を行うか否かを判断する。これによって、OverlapArea領域内の赤丸領域の重複する特徴量判定を防ぐことができる。
【０１９４】
図35に戻り、候補領域選択処理(S3403)で選択された赤丸領域に対して、上記の実施例で説明した特徴量判定処理を施す(S3404)。その結果、赤目領域と判断した領域の補正処理に必要なパラメータを算出し(S3405)、赤目領域の情報とパラメータの組み合わせを、図38に示すように、候補領域リストに追加する(S3406)。なお、パラメータは、補正量Vy、Vcの計算（式(23)）に必要な補正領域の最大輝度値Ymaxと評価量の最大値Ermaxである。
【０１９５】
図34に戻り、図35に示すNバンド目の赤目領域の抽出処理(S3303)が終了すると、最終バンドの処理が完了したか否かを判定し(S3304)、完了であれば処理を終了し、未了であればカウンタNをインクリメントして(S3405)、処理をステップS3302に戻す。
【０１９６】
図39は実施例5における補正処理の一例を示すフローチャートである。
【０１９７】
まず、赤目領域の位置情報を変換する(S3801)。実施例5では、赤目領域の抽出、補正処理を画像入出力デバイスの組み込み処理として実行することを想定するため、上述したように、赤目領域の抽出処理は縮小画像で行う。しかし、補正対象の画像は縮小前の高解像度の画像であり、プリンタなどの画像出力デバイスであれば、縮小前の画像をさらに印刷（出力）解像度に拡大したり、回転した画像の可能性がある。従って、縮小画像上で抽出した赤目領域の位置情報を縮小率や拡大率（変倍率）、回転に応じて変換する必要がある。
【０１９８】
候補領域リストに格納された位置情報が、図41に示すように、赤目領域の左上座標(xt0, yt0)と右下座標(xb0, yb0)で表現され、かつ、縮小画像の縦横の画素数がW0、H0、補正対象画像の縦横の画素数がW1、H1の場合、補正対象画像における赤目領域の座標を式(27)で算出する。
(xt1, yt1) = {int(xt0・k), int(yt0・k)}
(xb1, yb1) = {int(xb0・k), int(yb0・k)}      …(27)
ここで、k = W1/W0
int( )は自身を超えない最大の整数
(xt1, yt1)は補正対象画像上の赤目領域の左上座標
(xb1, yb1)は補正対象画像上の赤目領域の右下座標
【０１９９】
ステップSS3801において、補正対象画像上の赤目領域の座標が決定すると、実施例1と同様に、赤目領域周辺に楕円領域を設定し、楕円領域に含まれる画素を補正対象画素として以下の処理を行う。
【０２００】
まず、カウンタRを零に初期化し(S3802)、補正対象画像のRライン目の画像データを取得する(S3803)。実施例5では、補正対象画像をライン単位に補正する処理を説明するが、これに限定されるわけではなく、所定ライン数のバンド単位に補正しても構わない。補正対象画像の画像データの取得は、例えば図1に示す記憶装置105やメモリカードなどに、JPEGなどの圧縮形式で保存された画像データを所定のライン数分伸長し、そのうちの1（または複数）ラインを取得することで実現する。
【０２０１】
次に、Rライン目が補正対象画素を含むか否かを判定する(S3804)。実施例5の補正処理は、赤目領域（矩形領域）の周辺に設定した楕円領域を補正対象領域にする。そのため、Rライン目が補正対象領域の上端から下端の間に位置するか否かを、候補領域リストに格納されたすべての赤目領域について判定する。Rライン目が補正対象画素を含まない場合は、カウンタRをインクリメントして(S3807)、処理をステップS3803に戻す。
【０２０２】
例えば、図40に示すような場合、Rライン目は、ある赤目領域4003周辺に設定した補正対象領域4002に含まれる。従って、Rライン目の補正対象領域4002に含まれる画素について、実施例1で説明した補正処理を施す(S3805)。この補正処理に必要な最大輝度値Ymaxと評価量の最大値Ermaxは、上述したステップS3405において求めて候補領域リストに格納された値を使用する。
【０２０３】
以上の処理を、ステップS3806の判定により、Rライン目が最終ラインになるまで繰り返すことで、入力画像全体に補正処理を施すことができる。
【０２０４】
補正処理が終了した画像データは、例えば、記憶装置105に格納されたり、あるいは、色変換、疑似階調処理を施した後、例えばプリンタ110により記録紙に印刷されることになる。
【０２０５】
このように、入力画像を縮小し、かつ、バンドに分割してバンド単位に赤目領域の抽出処理を行うことで、実施例1〜4で説明したような赤目領域の抽出および補正を、メモリリソースが極めて少ない環境下で実行することが可能になる。また、隣接するバンドとの間に重複領域が存在するようにバンド分割することで、バンド境界に存在する赤目領域の抽出が可能になる。
【０２０６】
なお、赤目領域の抽出部を撮像装置などの画像入力デバイスに搭載し、赤目領域の補正部を印刷装置などの画像出力デバイスに搭載しても構わない。
【０２０７】
［変形例］
上記の各実施例においては、画素ごとの評価量ErとしてRGB成分値のうち、Bを使用しない評価量Erを定義した。しかし、これに限定するものではなく、例えば、式(28)によって評価量Erを定義し、係数kを0または係数i、jよりも小さい値に設定しても同様の効果を得ることができる。ここで、係数i、j、kは負の数になり得る重みである。
Er = (i・R + j・G + k・B)/R      …(28)
【０２０８】
また、画素値をLabやYCbCrなどの別の色空間に変換した後、青色成分を考慮に入れない、あるいは、青色成分の重みを小さくして評価量Erを定義してもよい。
【０２０９】
［他の実施例］
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【０２１０】
また、本発明の目的は、前述した実施例の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【０２１１】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【０２１２】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図１】
2010257482.tif 000003
【図２】
2010257482.tif 000004
【図３】
2010257482.tif 000005
【図４】
2010257482.tif 000006
【図５】
2010257482.tif 000007
【図６】
2010257482.tif 000008
【図７】
2010257482.tif 000009
【図８】
2010257482.tif 000010
【図９】
2010257482.tif 000011
【図１０】
2010257482.tif 000012
【図１１】
2010257482.tif 000013
【図１２】
2010257482.tif 000014
【図１３】
2010257482.tif 000015
【図１４】
2010257482.tif 000016
【図１５】
2010257482.tif 000017
【図１６】
2010257482.tif 000018
【図１７】
2010257482.tif 000019
【図１８】
2010257482.tif 000020
【図１９】
2010257482.tif 000021
【図２０】
2010257482.tif 000022
【図２１】
2010257482.tif 000023
【図２２Ａ】
2010257482.tif 000024
【図２２Ｂ】
2010257482.tif 000025
【図２３】
2010257482.tif 000026
【図２４】
2010257482.tif 000027
【図２５】
2010257482.tif 000028
【図２６】
2010257482.tif 000029
【図２７】
2010257482.tif 000030
【図２８】
2010257482.tif 000031
【図２９】
2010257482.tif 000032
【図３０】
2010257482.tif 000033
【図３１】
2010257482.tif 000034
【図３２】
2010257482.tif 000035
【図３３】
2010257482.tif 000036
【図３４】
2010257482.tif 000037
【図３５】
2010257482.tif 000038
【図３６】
2010257482.tif 000039
【図３７】
2010257482.tif 000040
【図３８】
2010257482.tif 000041
【図３９】
2010257482.tif 000042
【図４０】
2010257482.tif 000043
【図４１】
2010257482.tif 000044