(57)【特許請求の範囲】
【請求項１】
画像の補正領域を検出する画像処理方法であって、
補正を施す画像領域の内部または近傍の点を示すユーザ指示を入力し、
前記点を含む予め定めたサイズの領域内に領域拡張の開始点を示す複数の始点画素を設定し、
前記始点画素それぞれから前記領域拡張を実行し、
前記領域拡張の結果に応じて前記補正領域を決定し、
前記始点画素として、前記ユーザ指示が示す点に対応する画素、および、前記予め定めたサイズの領域において色評価量が上位の画素を設定することを特徴とする画像処理方法。
【請求項２】
前記始点画素として、前記ユーザ指示が示す点に対応する第一の画素、前記予め定めたサイズの領域において色評価量が上位の第二の画素、並びに、前記第一および第二の画素を対角頂点とする矩形の他の二頂点に対応する第三および第四の画素を設定することを特徴とする請求項1に記載された画像処理方法。
【請求項３】
前記領域拡張は、前記始点画素を拡張開始時の基準画素として、前記基準画素の色評価量、前記基準画素に隣接する近傍画素の色評価量、および、前記基準画素と前記近傍画素が並ぶ線上で前記近傍画素に隣接する周囲画素の色評価量を計算する第一の計算ステップと、
前記基準画素の色評価量と前記近傍画素の色評価量の第一の差分を計算する第二の計算ステップと、
前記近傍画素の色評価量と前記周囲画素の色評価量の第二の差分を計算する第三の計算ステップと、
前記第一および第二の差分に基づき、前記近傍画素を拡張領域に加えるか否かを判定する判定ステップとを有し、
前記拡張領域に加えた画素を前記基準画素として、前記第一から第三の計算ステップおよび前記判定ステップを再帰的に繰り返すことを特徴とする請求項1または請求項2に記載された画像処理方法。
【請求項４】
前記判定ステップは、前記第一の差分が第一の閾値未満、かつ、前記第一の差分と前記第二の差分の間の差分が第二の閾値未満の場合、前記近傍画素を拡張領域に加えると判定することを特徴とする請求項3に記載された画像処理方法。
【請求項５】
前記第一の計算ステップは、注目画素のB成分を除くR、Gの二成分から前記色評価量を計算することを特徴とする請求項3に記載された画像処理方法。
【請求項６】
前記第一の計算ステップは、注目画素のレッドおよびグリーン成分に比べて小さい重みをブルー成分に適用し、前記注目画素のレッド、グリーン成分および前記小さい重みを適用したブルー成分から前記色評価量を計算することを特徴とする請求項3に記載された画像処理方法。
【請求項７】
前記補正領域は、前記領域拡張によって得られる拡張領域を包含することを特徴とする請求項1から請求項6の何れか一項に記載された画像処理方法。
【請求項８】
前記色評価量は、前記画像の各画素のR成分とG成分のみから算出されることを特徴とする請求項1または請求項2に記載された画像処理方法。
【請求項９】
前記色評価量は、前記画像の各画素のR成分とG成分を用いて(R-G)/Rから算出されることを特徴とする請求項8に記載された画像処理方法。
【請求項１０】
さらに、前記補正領域に目の色調不良を補正する補正処理を施すことを特徴とする請求項1に記載された画像処理方法。
【請求項１１】
画像の補正領域を検出する画像処理装置であって、
補正を施す画像領域の内部または近傍の点を示すユーザ指示を入力する入力手段と、
前記点を含む予め定めたサイズの領域内に領域拡張の開始点を示す複数の始点画素を設定する設定手段と、
前記始点画素それぞれから前記領域拡張を実行する拡張手段と、
前記領域拡張の結果に応じて前記補正領域を決定する決定手段と、
前記始点画素として、前記ユーザ指示が示す点に対応する画素、および、前記予め定めたサイズの領域において色評価量が上位の画素を設定する設定手段とを有することを特徴とする画像処理装置。
【請求項１２】
画像処理装置を制御して、請求項1から請求項10の何れか一項に記載された画像処理を実行することを特徴とするコンピュータプログラム。
【請求項１３】
請求項12に記載されたコンピュータプログラムが記録されたことを特徴とするコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、目の色調不良を示す画像領域を検出する画像処理に関する。
【背景技術】
【０００２】
カメラのフラッシュに起因する目の色調不良を補正する方法がある。なお、目の色調不良は、赤目現象として一般によく知られている。赤目現象は、照明の少ない環境下で、人間あるいは犬や猫などの動物をフラッシュを使用して撮影した際、開いた瞳孔部分に入ったフラッシュの光が眼底で反射して、毛細血管が赤く光る現象である。色素が薄い（少ない）人の方が、瞳孔すなわち水晶体の透過率が高いため、赤目現象を生じ易いとされている。
【０００３】
また、近年普及したディジタルカメラはさらに小型化が進み、レンズの光軸とフラッシュの光源位置が近付く傾向にある。一般に、フラッシュの光源位置がレンズの光軸に近いほど、赤目現象が発生し易いとされ、その対策は重要な課題である。
【０００４】
赤目現象を防ぐ一手段として、撮影を行う際にプレ発光を行い、被写体の瞳孔が閉じた上で撮影を行う方法が知られている。しかし、この方法は、通常の撮影に比べて電池が消耗することや、プレ発光によって被写体の表情が崩れるなどの不具合がある。
【０００５】
そこで、近年、ディジタルカメラによる撮影で得たディジタル画像データを、パーソナルコンピュータなどを使用して補正、加工し、赤目を修正する方法が数多く提案されている。
【０００６】
ディジタル画像データ上で赤目を補正する方法は、大別すると手動補正、半自動補正、自動補正に分類することができる。
【０００７】
手動補正は、ユーザが、マウス、スタイラスとタブレットなどのポインティングデバイス、あるいは、タッチパネルを使用して、ディスプレイに表示された赤目領域を指定して補正する。
【０００８】
半自動補正は、ユーザが赤目が存在する領域をある程度指定し、その情報から赤目の補正範囲を特定して補正を行う。例えば、ユーザは、両目を囲むような領域をポインティングデバイスで指定したり、目の近辺の一点を指定する。この指定領域または指定点の情報から補正範囲を特定し補正する。
【０００９】
自動補正は、ユーザによる特別な操作を必要とせず、自動的にディジタル画像データから補正領域を検出し、補正処理を実行する。
【００１０】
これらの補正方法を検討すると、ユーザにとって煩わしい操作が不要で、視認性が高い、高性能の表示装置を備えないデバイスでも実行可能な自動補正が最有力である。しかし、自動補正は、画像から赤目領域を確実に検出できる保証がなく、誤って赤目以外の赤い領域を検出し補正する危惧がある。そのため、画像編集ソフトウェアなどは、自動補正と、手動または半自動補正を組み合わせた赤目補正機能を搭載する。ユーザは、赤目補正したい画像に自動補正を施し、その結果に満足できない場合は手動補正を行う。言い換えれば、手動補正は、自動補正の精度を補う重要な機能である。
【００１１】
手動補正および半自動補正について、以下の技術が開示されている。
【００１２】
米国特許5,130,789号が開示する技術は、ユーザが補正対象の赤目を含む領域を指定し、その領域内で、かつ赤目内の一点を指定する。この一点の画素の色をターゲット色として、色空間上で、ターゲット色を中心に幾何学的なシェイプを生成する。そして、ユーザが指定した領域内の画素について、その色がシェイプに含まれるか否かを判定し、含まれる画素を赤目を構成する画素（以下「赤目画素」と呼ぶ）と判定し補正する。
【００１３】
また、特開平6-350914号公報が開示する技術は、ユーザが修正領域の輪郭をライトペンなどで指定、または、修正領域近傍を一点を指定する。次に、修正領域に含まれる画素の色成分（例えばRGB成分）の値が所定範囲にあれば、当該画素が赤目を構成する候補画素と判定し、候補画素の集合（領域）が赤目か否かを判定する。そして、赤目と判定した候補画素の集合（領域）を黒色に修正する。
【００１４】
また、特開平10-75374号公報が開示する技術は、ユーザが目を含む領域を指定すると、指定領域の色相および彩度から当該領域に赤目が存在するか否かを判定する。そして、赤目が存在すると判定した場合は当該領域を補正する。さらに、目の領域のキャッチライト、すなわちフラッシュ光が反射した光点を判定して、キャッチライトが弱いと判定した場合のキャッチライトの強調を開示する。
【００１５】
また、特開2003-304555公報が開示する技術は、ユーザが目を含む画像領域を指定し、さらに赤目内の少なくとも一点を指定する。そして、ユーザが指定する領域内の隣接する画素の赤色を比較して、一つまたは複数の赤色の境界を抽出する。次に、指定点が赤色の境界内部にあるか否かを判定し、指定点が赤色の境界内部になければ当該境界内部を赤目にはしない。つまり、このような方法によって、確実性が高い手動補正が可能であるとする。
【００１６】
出願人の調査によれば、赤目は局所的な領域であるにも関わらず、一般に、その輝度は低輝度から高輝度まで広く分布し、その色味も彩度が高い赤色から低い赤色まで存在する。つまり、赤目は局所的でありながら、輝度や色味が激しく変化するという性質をもつ。上記の技術は、赤目画素か否かを判定するための基準を、ユーザが指定する一点の画素から決定する。言い換えれば、上記の技術は、ユーザが指定する一点を基準として、それに類似する輝度や色味をもつ画素を赤目画素として抽出する。しかし、上記の性質をもつ赤目の画素を、一点の基準で漏れなく抽出することは、到底、困難である。
【００１７】
また、上記の技術は、赤目画素か否かの判定に、注目画素の色味とターゲット色の距離を利用する。しかし、そのような単純な判定基準では、上述した性質をもつ赤目の画素を確実に抽出することは困難である。
【００１８】
さらに、上記の技術は、赤目画素か否かの判定に色相、彩度を用いるが、この方法には次の問題がある。
【００１９】
よく知られているように、画素値が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になり、ほぼ同様の彩度値をもつ。言い換えれば、ターゲット色の彩度を中心に、ある範囲の彩度をもつ画素を赤目画素と判定すれば、肌色領域の画素も赤目画素と判定する可能性が高くなる。
【００２４】
【特許文献１】米国特許5,130,789号
【特許文献２】特開平6-350914号公報
【特許文献３】特開平10-75374号公報
【特許文献４】特開2003-304555公報
【発明の開示】
【発明が解決しようとする課題】
【００２５】
本発明は、目の色調不良を補正すべき画像領域の指定を容易にし、かつ、当該画像領域を高精度に検出することを目的とする。
【課題を解決するための手段】
【００２７】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００２８】
本発明にかかる画像処理は、画像の補正領域を検出する画像処理方法であって、補正を施す画像領域の内部または近傍の点を示すユーザ指示を入力し、前記点を含む予め定めたサイズの領域内に領域拡張の開始点を示す複数の始点画素を設定し、前記始点画素それぞれから前記領域拡張を実行し、前記領域拡張の結果に応じて前記補正領域を決定し、前記始点画素として、前記ユーザ指示が示す点に対応する画素、および、前記予め定めたサイズの領域において色評価量が上位の画素を設定することを特徴とする。
【発明の効果】
【００３０】
本発明によれば、目の色調不良を補正すべき画像領域の指定を容易にし、かつ、当該画像領域を高精度に検出することができる。
【発明を実施するための最良の形態】
【００３２】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。なお、以下で説明する画像処理は、主として、プリンタエンジンへ出力すべき画像情報を生成するコンピュータ内で稼働するプリンタドライバに組み込むことが望ましい。また、スキャナなどの光学読取装置を駆動するコンピュータ内で稼働するスキャナドライバに組み込むことが望ましい。あるいは、複写機、ファクシミリ、プリンタ、スキャナ、ディジタルカメラ、ディジタルビデオカメラなどのハードウェアに内蔵する、または、ソフトウェアとして供給してもよい。
【実施例１】
【００３３】
［装置の構成］
図1は実施例1の画像処理を実行するコンピュータ（画像処理装置）の構成例を示すブロック図である。
【００３４】
コンピュータ100は、CPU 101を備える。そして、CPU 101は、システムバス109を介してROM 102、RAM 103に接続する。さらに、システムバス109は、モニタ113を接続するビデオカード104、記憶装置105、ポインティングデバイス106、キーボード107などを接続するインタフェイス108、ネットワークインタフェイスカード(NIC) 107を相互に接続する。
【００３５】
モニタ113はタッチパネルを備えていてもよい。記憶装置105はハードディスクドライブやメモリカードなどである。ポインティングデバイス106は、マウス、スタイラスおよびタブレットなどである。インタフェイス108は、USBやIEEE1394などのシリアルバス用のインタフェイスで、プリンタ110、スキャナ111、ディジタルカメラ112などが接続可能である。また、NIC 107は、ネットワーク114と接続する。
【００３６】
CPU 101は、ROM 103または記憶装置105に格納されたプログラム（以下で説明する画像処理のプログラムを含む）をワークメモリであるRAM 103にロードして当該プログラムを実行し、当該プログラムに従いシステムバス109を介して上記の各構成を制御することで、当該プログラムの機能を実現する。
【００３７】
なお、図1は、実施例1で説明する画像処理を実施するハードウェアの一般的な構成を示し、その一部の構成を欠いたり、他のデバイスが追加されても、本発明の範疇に含まれる。
【００３８】
［処理の概要］
図2は実施例1の赤目補正処理の概要を示す機能ブロック図で、CPU 101によって実行される処理である。なお、入力画像は、例えば、ディジタルカメラ112やフィルムスキャナ111から入力される一画素あたりRGB各8ビット、合計24ビットのディジタル画像データである。
【００３９】
図3はディジタルカメラ112などの撮像装置により撮像された赤目画像を概念的に示す図で、目の瞳孔領域302、虹彩領域301、撮影時に使用したフラッシュに起因するハイライト領域304を示す。また、符号303は白目部分を示している。通常、赤目現象により瞳孔領域302が赤くなる。
【００４０】
図2に示す入力部202は、入力端子201から画像データを入力して、ユーザが視認できるようにモニタ113に表示する。ユーザは、モニタ113の画像を参照して、赤目補正したい領域内または近辺の一点をポインティグデバイス106を使用して指定する。補正位置入力部203は、このユーザ指示を入力する。
【００４１】
図4はユーザが赤目補正したい領域内または近辺の一点を指定する様子を示す図である。ユーザは、マウスポインタ401を赤目の瞳孔領域302内に移動してクリックする。補正位置入力部203は、このクリック時にマウスポインタが指していた画像上の位置情報を入力する。
【００４２】
補正範囲決定部204は、補正位置入力部203が入力した位置情報に基づき、赤目の瞳孔領域302を特定して補正範囲を決定する。補正範囲は、詳細は後述するが、入力位置情報に領域拡張法を適用し、類似する特徴をもつ画素をグルーピングすることで決定する。
【００４３】
補正部205は、補正範囲決定部204から補正範囲を入力して、その補正範囲に補正処理を施し、補正処理した画像データを出力端子206に出力する。補正処理後の画像データは、モニタ113に表示されたり、RAM 103あるいは記憶装置105に格納される。あるいは、インタフェイス108に接続されたプリンタ110によってプリントされたり、NIC 107を介してネットワーク114（イントラネット、インターネットを含む）に接続された他のコンピュータやサーバに送信される。
【００４４】
［補正範囲決定部］
図5は補正範囲決定部204の処理を説明するフローチャートである。
【００４５】
まず、補正位置入力部203が入力した位置情報に基づき領域を設定する(S501)。図6はステップS501で設定する領域の一例を示す図である。入力位置情報であるユーザが指定した点602を中心とする所定サイズの矩形領域603を設定する。矩形領域603のサイズは任意であるが、例えば、その一辺を、入力画像データが表す画像の短辺の数パーセント（2〜5%）程度にすることが望ましい。
【００４６】
次に、た矩形領域603内で色評価量が最大の画素を検出する(S502)。なお、色評価量は、画素ごとに算出する赤色の強さを示す。色評価量として様々な指標を用いることできる。例えば、HSI系の彩度、RGB系から輝度色差成分であるYCbCrに変換した後のCr成分などを利用することができる。ただし、本実施例では、特別な評価量として式(3)に示す色評価量Eを用いる。
E = (R-G)/R      …(3)
【００４７】
式(3)は、注目画素の赤色の度合いを、一般的なHSI系の彩度ではなく、B成分を除くR、Gの二成分から求めることを意味している。赤色評価量Eを彩度ではなく、式(3)で定義することの利点を以下に説明する。
【００４８】
例えば、色素が濃い（多い）人の場合、瞳孔領域302の水晶体の透過率が低いために、鮮やかな赤目になりにくいという傾向がある。前述したように、日本人の赤目領域の画素値の推測値は(R, G, B)=(109, 58, 65)であり、日本人の肌色は色相で言えば赤（0度）からイエロー（60度）の間に多く分布することが実験の結果明らかになっている。このような領域は、RGB各成分の大小関係がR＞G＞Bになり、目の周辺の肌色領域の画素値の推測値は(R, G, B)=(226, 183, 128)である。このような場合、赤目画素の彩度は40、目の周辺の肌領域の画素の彩度は43とほぼ同様の彩度値になる。つまり、赤目領域の画素の彩度値は、目の周辺の肌色領域の画素の彩度値に対して特別突出するわけではない。従って、彩度を用いれば補正範囲の特定が困難になる。
【００４９】
一方、赤色評価量Eを式(3)で定義すれば、赤目領域の画素の赤色評価量Erは47、目の周辺の肌色領域の赤色評価量Erは19になり、目の周辺の肌色領域に比べて赤目領域の画素の赤色評価量Erは二倍以上の値をもつことになる。
【００５０】
以上から、色素が濃い（多い）人の赤目を検出する場合、彩度ではなく、式(3)に示すようなB成分を含まない、R、G成分のみの評価量を定義することで、赤目画素を精度よく抽出することが可能になる。なお、式(3)において、R成分に対する(R-G)の割合を評価量Eとしたが、これに限定されるわけではなく、例えば(R-G)のみやR/Gを評価量Eとしてもよい。
【００５１】
図6において、画素601が領域603内で色評価量Eが最大になる画素である。
【００５２】
次に、後段の処理である領域拡張(S504)に使用する始点位置を決定する(S503)。この始点位置を開始点として領域拡張を実行する。始点位置は、例えば、ユーザ指定点602にすることが最も容易である。ただし、本実施例では一点だけではなく、複数の始点から領域拡張を行う方法を説明する。
【００５３】
図7はステップS503で決定する始点位置の一例を示す図である。
【００５４】
本実施例は、ユーザ指定点602と、色評価量Eが最大の画素601を対角頂点とする矩形を設定して、当該矩形の四頂点、つまり点601、602、702、 703を始点にする。すなわち、領域拡張(S504)は、図7に示す四点を開始点として拡張処理を行うことになる。
【００５５】
勿論、始点は上記の四点に限られるものではなく、図7に示す四点のうち、点701、704の二点を使用してもよいし、何れか一点を除いた三点を使用してもよい。あるいは、領域603内の画素それぞれの色評価量Eを算出し、その内、色評価量Eが上位の数点を始点としてもよい。図8は色評価量Eの上位四点（点601を含む、802〜804）を始点とする例を示す図である。さらに、上位四点にユーザ指定点602を加えた五点を始点とすることも考えられる。
【００５６】
●領域拡張(S504)
図9は領域拡張を説明するフローチャートである。
【００５７】
まず、パラメータiを零に初期化し(S901)、一つの始点の座標（画素）をリストLのi番目(L[i])に登録する(S902)。なお、リストLは複数の座標を格納可能な配列である。
【００５８】
次に、パラメータjを零に初期化し(S903)、L[j]に登録された画素（以下「基準画素」と呼ぶ）の近傍の画素（以下「近傍画素」と呼ぶ）について類似度を算出する(S904)。そして、近傍画素が基準画素に類似し、赤目領域に含まれるか否かを判定する(S905)。
【００５９】
図10は近傍画素の一例を示す図で、基準画素に隣接する八つの画素を近傍画素にする。なお、近傍画素の枠内に付した番号は近傍画素のインデックスkである。
【００６０】
まず、類似度として、基準画素の色評価量Ejと、k (k=0〜8)番目の近傍画素の色評価量Ekの差分R0を算出する。
R0 = |Ek - Ej|      …(4)
【００６１】
類似度R0が所定の閾値T0より小さい、つまりEkとEjが近い場合、k番目の近傍画素は基準画素に類似すると判定する。
Ro ＜ T0 ならば類似度高      …(5)
【００６２】
なお、類似度R0はEkとEjの差分で定義するだけでなく、例えば、EkとEjの比を用いて定義してもよい。
【００６３】
背景技術として説明した技術は、近傍画素と基準画素の色評価量（例えば、色相、彩度、色差成分、RGB値そのもの）を算出して、その差分により類似度を判定し、類似度が高い場合は近傍画素を赤目画素と判定するものである。しかし、このような判定を行えば、次の問題が発生する。
【００６４】
図11に示す線分状の領域2501に位置する画素について、画素Aから画素Cまでの色評価量を算出しプロットすると図12に示すグラフが得られる。つまり、画素Aから画素Bまでは赤目の瞳孔領域内に位置し、画素Bから画素Cまでは赤目外の肌色領域に含まれる。出願人の調査によれば、赤目画像の多くは、図12に示すように、赤目領域の色評価量が変動が肌色領域のそれに比べて大きい特徴をもつ。従って、赤目画素を漏れなく抽出するには、赤目画素として検出する色評価値の範囲、つまり閾値T0に対応する範囲を図12に示す範囲1201に設定する必要がある。しかし、そうすれば、色評価量の変動が小さい肌色領域も含めて、画素Aから画素Cまでを赤目画素として抽出して、補正領域は肌色領域を含むことになる。補正領域から肌色領域を除外するには範囲1201を狭めることになり、赤目画素を漏れなく抽出することは困難である。
【００６５】
そこで、上記問題を解決するために、基準画素に類似すると判定した近傍画素に対して第二の判定を行う。第二の判定は、例えば図11の例に対応して説明すると、基準画素とその上の近傍画素(k=2)の色評価量Eの差分Vjを算出する。そして、k=2の近傍画素とその上に隣接する画素の色評価量Eの差分Vkを算出する。そして、それら差分のさらに差分を判定値R1にする。
Vj = |Ek - Ej|
Vk = |En - Ek|
R1 = |Vj - Vk|      …(6)
ここで、Enはk番目の近傍画素に隣接する非基準画素の色評価量
【００６６】
ステップS905においてVjとVkが近い値となる場合、言い換えれば、変動量の類似度R1が所定の閾値T1よりも小さい場合（式(7)を満たす場合）、注目画素の変動量と基準画素の変動量の類似度が高いと判定される。
R1 ＜ T1      …(7)
【００６７】
このような変動量の類似度判定を図12に示すような変動に適用すれば、画素Bの色評価量の変動特性と、周辺画素の色評価量の変動特性が明らかに異なるため、画素B〜Cを誤って抽出する可能性を低減することができる。
【００６８】
このように、第一の判定により基準画素に類似すると判定した近傍画素について、さらに、第二の判定を行う。つまり、第一の判定をパスした近傍画素について、基準画素との色変化量Eの差分Vj、その左右上下、斜め方向の何れかに隣接する非基準画素との色変化量Eの差分Vkに基づき、当該近傍画素が赤目領域にあるか否かを判定する。このようにすれば、図12に示すような色評価量の変動から、画素Bから画素Cの範囲の画素を赤目画素として抽出する可能性は小さくなる。つまり、色評価値が基準値に近いか否かだけで判定せずに、近隣との間の色評価値の変化の度合いを考慮して赤目領域に含まれる画素か否かを判定することで、赤目領域をより高精度に特定することができる。
【００６９】
こうして、上記第一および第二の判定をパスした近傍画素をリストLに登録し(S906)、ステップS907の判定により、他の近傍画素を判定する。なお、近傍画素のうち、既にリストLに登録されている画素は、あらためて上記の判定を行う必要はない。
【００７０】
上記では、判定値R1はVkとVjの差分と定義したが、例えば、VkとVjの比を用いて定義してもよい。また、Vkは、近傍画素の左右上下、斜め方向の何れかに隣接する非基準画素との色変化量Eの差分としたが、基準画素を含まない複数の隣接画素の色評価値Eとの差分和を用いてもよい。
【００７１】
ある基準画素の近傍画素すべての判定が終了すると、パラメータjをインクリメントし(S908)、パラメータiとjを比較して(S909)、i＞jならば処理をステップS904に戻し、次の基準画素L[j]について判定を繰り返す。また、i=jになればリストLに登録したすべての画素について判定が終了したので領域拡張処理を終了する。
【００７２】
図13は領域拡張によりリストLに登録された画素を説明する図である。始点画素1102に対して、領域拡張の結果、画素群1101がリストLに登録される。領域拡張処理により、大部分の赤目画像において、瞳孔領域302の画素を適切に抽出することが可能である。しかし、赤目画像によっては、図13に示すように、瞳孔領域302の一部の画素だけが抽出される場合もある。そのような場合、始点画素1102および画素群1101を補正領域とすれば、所望の補正結果を得ることはできない。
【００７３】
画素群1101を瞳孔領域302の全体に広げるには、閾値T0、T1による制限を緩くすることが考えられる。しかし、制限を緩くすれば、肌色領域まで領域拡張する危惧がある。そこで、制限を緩めるのではなく、先に述べたように、領域拡張の始点を複数設定することで、瞳孔領域302から精度よく赤目領域を特定する。なお、複数の始点の決定方法は、先述したように、ユーザ指定点602と、色評価量Eが最大の画素601を頂点とする矩形の四頂点を始点としてもよい。または、ステップS501で設定した領域内の画素の色評価量Eを算出し、それらの上位数点を始点としてもよい。
【００７４】
図14は複数の始点に対する領域拡張を行った例を示す図で、四つの始点から領域拡張によって検出した画素群が存在する。図5に示すステップS506において、領域拡張によって検出したすべての画素を包含する領域1202を補正範囲に決定する。なお、図14には領域1202を矩形領域として示したが、円領域、楕円領域、多角形領域としてもよいし、ユーザが領域の形状を選択または入力するようにしてもよい。
【００７５】
［補正部］
補正部205は、補正範囲決定部204が決定した補正範囲（赤目領域）を補正する。図15は補正範囲に決定された赤目領域の一つに対する補正処理を示すフローチャートである。補正部205は、補正範囲決定部204から一つ以上の赤目領域が記載されたリストを入力し、赤目領域を一つずつ補正処理する。
【００７６】
まず、注目赤目領域に対して補正範囲を決定する(S1301)。図16は補正範囲の設定を説明する図である。図16において、中央の矩形領域1401がリストに記載された赤目領域である。k矩形領域1401の中心（以下「原点」と呼ぶ）を通る長軸がLW1、短軸がLH1の楕円領域1402を補正領域に設定する。
LW1 = LW0×CPARAM_AREARATIO
LH1 = LH0×CPARAM_AREARATIO      …(8)
ここで、LW0とLH0は矩形領域1401の幅と高さの1/2
CPARAM_AREARATIOは補正範囲を決定するパラメータ（例えば1.2〜1.5）
【００７７】
次に、楕円領域1402内を補正するために必要なパラメータである、楕円領域1402内の最大輝度値Emaxおよび赤色評価量Eの最大値Emaxを算出する(S1302)。
【００７８】
次に、注目画素が楕円領域1402内にあるか否かを判定する(S1303)。注目画素が楕円領域1402内にあるか否かは、下の楕円を算出する式によって判定する。
(x/LW1)2 + (y/LH1)2 ≦ 1
…(9)
【００７９】
座標(x, y)に位置する注目画素が式(9)を満たす場合、注目画素は楕円領域1402内にある。また、式(9)の左辺の平方根は、原点から円周までの距離に対する、原点から注目画素までの距離の割合に相当する。注目画素が楕円領域1402内にない場合は、注目画素を移動する。
【００８０】
注目画素が楕円領域1402内にある場合、注目画素のRGB値を輝度・色差成分であるYCC値に変換する(S1304)。変換方法には様々な方法が存在し、どの方法を用いても構わない。
【００８１】
次に、注目画素に対する各評価量を算出する(S1305)。この評価量は、補正量を決定するために必要なパラメータで、下の三つの値である。
Rr: 原点から、注目画素までの距離rと、楕円の円周までの距離r0の比r/r0
Er: 注目画素の赤色評価量EとEmaxの比E/Emax
Yr: 注目画素の輝度YとYmaxの比Y/Ymax
【００８２】
次に、上記のパラメータを用いて、注目画素の輝度と色差成分それぞれの補正量VyとVc算出する(S1306)。
Vy = {1 - RrTy1}{1 - (1 - Er)Ty2}{1 - YrTy3}
Vc = {1 - RrTc1}{1 - (1 - Er)Tc2}          …(10)
【００８３】
Vy、Vcはともに0.0〜1.0の範囲になり、1.0に近いほど補正量が大きいことを意味する。Vyは三つのパラメータすべてを用いて決定し、注目画素が原点から離れるほどVyは小さくなる。また、注目画素の赤色評価量EがEmaxに比べて小さい場合、Vyは小さくなる。また、注目画素の輝度YがYmaxに近い場合、Vyは小さくなる。なお、輝度値が高い画素の補正量を小さくすれば、目の中のハイライト部分（キャッチライト）を保存する効果がある。一方、Vcは、Vyの式から輝度に関する評価量を除去したものである。
【００８４】
式(10)において、Ty1、Ty2、Ty3、Tc1、Tc2もパラメータで、それらの設定によって、各評価量（つまり、式(10)の括弧{ }内の値）を図17に示すように一次（実線）、二次（破線）、三次（一点鎖線）といった直線または曲線で適用することが可能である。
【００８５】
次に、補正量Vy、Vcを用いて下式により補正後のYCC値を算出する(S1307)。
Y' = (1.0 - Wy・Vy)・Y
C' = (1.0 - Wc・Vc)・C      …(11)
ここで、Y、Cは補正前の値
Y'、C'は補正後の値
Wy、Wcは重み(0.0〜1.0)
【００８６】
重みWy、Wcは、補正強度を指定したい場合に調節する。例えば、補正強度を弱、中、強と三段階とする場合、Wy、Wcをともに0.3、0.7、1.0などに設定することで、同一の処理で、補正強度が異なる結果を得ることができる。
【００８７】
新しい輝度、色差成分の値が決定したら、YCC値をRGB値へ変換し、補正後の画素値として入力画像用のメモリバッファに上書きする、あるいは、出力用画像を格納するメモリバッファの所定アドレスに格納する(S1308)。
【００８８】
そして、ステップS1309の判定により、注目赤目領域に対応する最後の画素に達するまで、ステップS1303で注目画素を移動し、上記の処理（S1303〜S1308）を繰り返す。また、注目赤目領域に対応する最後の画素に達した場合、次の赤目領域の補正処理に移行して、リストに記録されたすべての赤目領域の補正処理を繰り返す。
【００８９】
なお、補正部205に入力される画像がRGB成分で構成され、入力画像を輝度、色差成分に変換して補正した後、再び、RGB成分に戻す方法を説明したが、これに限定されるものではない。例えば、RGB成分を明度、彩度に変換し、同様の方法を用いて明度、彩度を補正した後、再び、RGB成分に戻したとしても、ほぼ同様の出力結果が得られる。
【００９０】
さらに、補正量を決定するためのパラメータとして、注目画素の赤色評価量Eと楕円領域1402内の赤色評価量の最大値Emaxの比Erを用いる例を説明したが、同パラメータを単純に彩度に置き換えることも可能である。つまり、注目画素の彩度と楕円領域1402内の最大彩度との比を用いて補正量を決定してもよい。
【００９１】
このように、赤目画素を抽出する領域拡張の始点を複数設定し、近隣画素との間の評価値の変動を考慮して領域拡張を行うことで、補正すべき赤目領域を高精度に決定することができる。また、赤色評価量Eを、一般的なHSI系の彩度ではなく、B成分を除くR、Gの二成分から求めることで、色素が薄い（少ない）、色素の濃い（多い）の影響を受けずに赤目領域を高精度に決定することができる。
【実施例２】
【００９２】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００９３】
実施例1では、ユーザ指定位置に基づき複数の始点を求め、それら始点から領域拡張を行い、補正範囲（赤目領域）を特定する方法を説明した。実施例2では、ユーザが指定する矩形領域から、補正範囲を特定する方法を説明する。
【００９４】
図18は実施例2の赤目補正処理の概要を示す機能ブロック図で、CPU 101によって実行される処理である。
【００９５】
図19はユーザがマウスポインタ1703を移動して赤目補正したい領域1702を指定する様子を示す図である。ユーザは、領域の一点（例えば点1701）にマウスポインタ1703を移動してマウスボタンを押したまま、マウスポインタ1703をドラッグし、マウスボタンを離すことで領域1702を指示する。補正領域入力部207は、このユーザ指示を入力する。なお、領域指定は矩形に限らず、円形、楕円形、あるいは、ユーザが補正したい領域の外周をトレースするなどして多角形を指定してもよい。
【００９６】
図20は補正範囲決定部204の処理を説明するフローチャートである。
【００９７】
まず、矩形領域1702内の画素の色評価量Eの平均値Eaveを算出し(S1801)、平均値Eaveを閾値として矩形領域1702内の各画素の色評価量Eを二値化する(S1802)。なお、二値化閾値は、平均値Eaveをそのまま使用してもよいし、ある程度のマージンを加減算した値にしてもよい。
【００９８】
図21は二値化によって得られる二値画像の一例を示す図である。矩形領域1702を二値化すると、閾値よりも色評価値Eが大きい画素（図に□で示す、以下「候補画素」と呼ぶ）が残る。この二値画像はRAM 103などに格納する。
【００９９】
次に、二値画像の重心を算出し(S1803)、重心から候補画素の平均距離λを計算する(S1804)。そして、重心を中心とし、平均距離λを半径とする、図21に示す円領域1902を補正範囲に決定する(S1805)。
【０１００】
図21に示すように、色評価量の平均値Eaveを用いて二値化した結果は、必ずしも、瞳孔領域302に候補画素が集中するとは限らず、肌色領域にも候補画素1901が存在する場合がある。また、瞳孔領域302の候補画素もすべて連結しているわけではなく、とくに瞳孔304内のハイライト領域は候補画素から外れる可能性が高い。従って、上述した候補画素の重心と平均距離を算出することで、瞳孔領域302を高精度に特定することができる。
【０１０１】
このように、ユーザが赤目補正したい領域を指定する場合も、補正範囲（赤目領域）を高精度に決定することができる。
【実施例３】
【０１０２】
以下、本発明にかかる実施例3の画像処理を説明する。なお、実施例3において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【０１０３】
実施例1はユーザ指定点に基づき赤目領域を特定し、実施例2はユーザ指定領域に基づき赤目領域を特定する。しかし、これらの方法はそれぞれ長所と短所が存在する。例えば、実施例1の一点の指定は、ユーザは赤目近辺を一点を指定すればよいため、その操作は極めて簡単である。その反面、補正範囲は自動設定すため、ユーザが意図しない補正範囲になる可能性がある。また、実施例2の領域指定は、ユーザが意図する補正範囲をより正確に指定することができる。その反面、マウス操作などによって領域指定する必要があり、コンピュータ等の扱いに慣れない者には煩わしい。
【０１０４】
実施例3は、一点の指定と、領域指定の双方を併用する補正方法を説明する。
【０１０５】
図22は実施例3において、モニタ113に表示するユーザインタフェイス2201の一例を示す図である。ウィンドウ2201は、ユーザが補正領域を指定するためのウィンドウで、補正対象の画像が表示される。ユーザは、マウスポインタ2203を操作して所望の補正領域を指定し、補正領域の指定が終了すると「実行」ボタン2204を押することで、補正処理の実行を指示する。ユーザは、補正領域を指定する際、一点指定か、領域指定かを選ぶことができる。
【０１０６】
図23は、ユーザが一点指定したか、領域指定したかを判定する処理例を示すフローチャートで、CPU 101が実行する処理である。
【０１０７】
まず、ウィンドウ2203上にマウスポインタ2003があり、ユーザがマウスボタンを押したか否かを判定する(S2101)。ウィンドウ2203上にマウスポインタ2003があり、ユーザがマウスボタンを押した場合は、そのときのマウスポインタ2003の座標AをRAM 103に記憶する(S2102)。次に、ユーザがマウスボタンを離したか否かを判定する(S2103)。ユーザがマウスボタンを離した場合は、そのときのマウスポインタ2003の座標BをRAM 103に記憶する(S2104)。なお、ステップS2101からS2103の間にマウスポインタ2003がウィンドウ2203外に出た場合は、RAM 103に記憶した座標をクリアし、処理をステップS2101に戻す。
【０１０８】
次に、RAM 103に記憶した座標AとBの間の距離λabを算出し(S2105)、距離λabと所定の距離λthを比較する(S2106)。λab＜λthの場合はユーザは一点指定したと判定し(S2107)、λab≧λthの場合はユーザは領域指定したと判定する(S2108)。
【０１０９】
AB間の距離λabを所定距離λthと比較する理由を説明する。近年、マウスに採用されている光学センサによる位置検出は感度が高く非常に高精度な位置検出が可能である。その反面、微小な手の振動を捕らえ、微小距離、ポインタを移動させる場合がある。つまりユーザは、一点指定したつもりでも、マウスボタンのクリックの間にポインタが微妙に移動し、矩形指定と誤判定される可能性がある。そこで、距離λabと所定距離λthを比較して、移動距離が微小（λth未満）の場合は一点指定と判定する。
【０１１０】
所定距離λthとして、モニタの左上を原点とする座標系においては、画素数を単位とする値を設定すればよい。例えば、表示解像度が1600×1200ドットのモニタにおいて、λth=5に設定する。この場合、例えば座標Aが(100, 100)、Bが(103, 103)であればλabは√(32+32)=4.2であるから一点指定と判定する。
【０１１１】
しかし、λthを画素数で固定すると、モニタの解像度に応じて操作感が異なる。例えば3200×2400ドットのモニタにおいて五画素は水平方向に0.1%程度の微小距離である。他方、600×480ドットのモニタにおいて五画素は水平方向に0.8%程度で、微小距離とは言えない。このような表示解像度の違いを考慮すると、λthは表示解像度に対する割合として設定すべきである。例えば、λthを水平方向のドット数の0.5%に設定すると、3200ドットに対して16画素、600ドットであれば三画素になる。このように、λthを表示解像度との関係で設定すれば、ユーザに、モニタの解像度に関係ない操作感を与えることができる。
【実施例４】
【０１１２】
以下、本発明にかかる実施例4の画像処理を説明する。なお、実施例3において、実施例1〜3と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【０１１３】
赤目補正機能として、自動検出および補正機能と、手動補正（以後、手動補正は半自動補正を含むことにする）を組み合わせたものが提案されている。赤目の自動検出として様々な方法が提案されているが、何れの方法を採用しても検出率100%を達成することは困難であり、補正されない領域や、赤目領域以外の補正が発生する。そこで、手動補正を併用して、自動検出および補正機能を補い、自動検出できなかった赤目領域を補正することができる。
【０１１４】
このような、自動検出および補正と手動補正の併用においては、補正方法や補正強度などを自動、手動に応じて変化させることが有効である。例えば金目補正が挙げられる。
【０１１５】
金目とは、よく知られているように、瞳孔領域が赤ではなく金色に光る現象である。また、金目の場合は、赤目現象では存在するフラッシュに起因するキャッチライトが存在しない場合が多い。このような金目に対して、実施例1で説明した輝度と色差を低下させる補正を適用した場合、金目の瞳孔領域（図24に示す領域2402）の輝度は元々高い傾向にあるため、輝度の低下量を赤目よりも大きくしなければ、充分な補正結果が得られない。また、補正量を大きくすれば、瞳孔領域より外側の領域が極端に暗くなり、よい結果が得られない場合がある。そして、キャッチライトが存在しないため、非常に不自然な補正結果になる。
【０１１６】
従って、金目に対する有効な補正方法は、図25に示すように、検出した瞳孔領域2402内を所定の瞳孔色（例えば黒）で塗り潰し、その中央にキャッチライトとして白い領域2404を追加する。言い換えれば、有効な金目補正は、元々の画像データを破棄して瞳孔領域2402の画像データを生成することである。
【０１１７】
しかし、このような補正を自動補正に適用すると、誤検出が目立つという不具合が生じる。前述したように、自動検出は何れの方法を用いても所望領域を100%抽出することはできない。例えば、金目領域として、唇、キャンドルの炎、耳朶などを抽出する可能性がある。誤検出領域に上記の補正を適用すれば、実施例1で説明した輝度と色差を低下させる補正に比べて、例えば黒く塗り潰した補正個所が目立つことは容易に想像される。
【０１１８】
そこで、自動検出および補正と、手動補正の両方備える赤目補正機能において、金目補正のような極端な補正は、手動補正しかできないようにする。手動補正は、ユーザが所望領域（または位置）を指定するため、目以外の領域を補正することはない。
【０１１９】
図26は実施例4の処理を示すフローチャートで、CPU 101が実行する処理である。
【０１２０】
まず、現在の補正モードが自動か手動かを判定し(S2301)、自動補正の場合は赤目の自動検出を行い(S2302)、補正領域に対して実施例1で説明した方法を用いて赤目補正する(S2303)。赤目の自動検出方法は、背景技術で説明したような方法や、それら以外にも様々な方法が提案されている。それらのどの方法を用いても構わない。
【０１２１】
一方、現在の補正モードが手動補正と判定した場合は、ユーザ指定に基づき補正領域を決定する(S2304)。補正領域の決定は、上記の実施例で説明した方法を用いればよい。次に、補正領域が赤目領域か金目領域かを判定するための評価量を算出する(S2305)。金目は、赤目に比べ明るく、かつ、瞳孔領域内の輝度変化が少ない性質があるから、評価量として補正領域内の平均輝度値と輝度の標準偏差（または分散値）を用いる。
【０１２２】
次に、算出した評価量を所定の閾値と比較して、補正領域が金目か否かを判定する(S2306)。平均輝度値が所定の閾値よりも大きく、輝度の標準偏差が所定の閾値よりも小さい場合、補正領域を金目と判定する。
【０１２３】
金目と判定した場合は上述した金目補正を行い(S2307)、金目ではない（赤目）と判定した場合は、補正領域に対して実施例1で説明した方法を用いて赤目補正する(S2303)。
【０１２４】
なお、金目の評価量は、平均輝度値と輝度値の標準偏差に限らず、例えば輝度値の代わりにR成分の平均値および標準偏差を用いてもよい。
【０１２５】
［変形例］
上記の各実施例においては、画素ごとの色評価量としてRGB成分値のうち、Bを使用しない評価量Eを定義した。しかし、これに限定するものではなく、例えば、式(12)によって評価量Eを定義し、係数kを0または係数i、jよりも小さい値に設定しても同様の効果を得ることができる。ここで、係数i、j、kは負の数になり得る重みである。
Er = (i・R + j・G + k・B)/R      …(12)
【０１２６】
また、画素値をLabやYCbCrなどの別の色空間に変換した後、青色成分を考慮に入れない、あるいは、青色成分の重みを小さくして評価量Eを定義してもよい。
【０１２７】
［他の実施例］
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【０１２８】
また、本発明の目的は、上記実施例の機能を実現するソフトウェアを記録した記憶媒体（記録媒体）をシステムまたは装置に供給し、そのシステムまたは装置のコンピュータ（CPUやMPU）が前記ソフトウェアを実行することでも達成される。この場合、記憶媒体から読み出されたソフトウェア自体が上記実施例の機能を実現することになり、そのソフトウェアを記憶した記憶媒体は本発明を構成する。
【０１２９】
また、前記ソフトウェアの実行により上記機能が実現されるだけでなく、そのソフトウェアの指示により、コンピュータ上で稼働するオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、それによって上記機能が実現される場合も含む。
【０１３０】
また、前記ソフトウェアがコンピュータに接続された機能拡張カードやユニットのメモリに書き込まれ、そのソフトウェアの指示により、前記カードやユニットのCPUなどが実際の処理の一部または全部を行い、それによって上記機能が実現される場合も含む。
【０１３１】
本発明を前記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するソフトウェアが格納される。
【図面の簡単な説明】
【０１３２】
【図１】実施例1の画像処理を実行するコンピュータ（画像処理装置）の構成例を示すブロック図、
【図２】実施例1の赤目補正処理の概要を示す機能ブロック図、
【図３】ディジタルカメラなどの撮像装置により撮像された赤目画像を概念的に示す図、
【図４】ユーザが赤目補正したい領域内または近辺の一点を指定する様子を示す図、
【図５】補正範囲決定部の処理を説明するフローチャート、
【図６】ステップS501で設定する領域の一例を示す図、
【図７】ステップS503で決定する始点位置の一例を示す図、
【図８】色評価量Eの上位四点を始点とする例を示す図、
【図９】領域拡張を説明するフローチャート、
【図１０】近傍画素の一例を示す図、
【図１１】補正範囲（赤目領域）の特定を説明する図、
【図１２】補正範囲（赤目領域）の特定を説明する図、
【図１３】領域拡張によりリストLに登録された画素を説明する図、
【図１４】複数の始点に対する領域拡張を行った例を示す図、
【図１５】補正範囲に決定された赤目領域の一つに対する補正処理を示すフローチャート、
【図１６】補正範囲の設定を説明する図、
【図１７】補正パラメータの設定方法を説明する図、
【図１８】実施例2の赤目補正処理の概要を示す機能ブロック図、
【図１９】ユーザがマウスポインタを移動して赤目補正したい領域を指定する様子を示す図、
【図２０】補正範囲決定部の処理を説明するフローチャート、
【図２１】二値化によって得られる二値画像の一例を示す図、
【図２２】実施例3において、モニタに表示するユーザインタフェイスの一例を示す図、
【図２３】ユーザが一点指定したか、領域指定したかを判定する処理例を示すフローチャート、
【図２４】金目を説明する図、
【図２５】金目領域の補正を説明する図、
【図２６】実施例4の処理を示すフローチャートである。
【図１】
0004416724.tif 000002
【図２】
0004416724.tif 000003
【図３】
0004416724.tif 000004
【図４】
0004416724.tif 000005
【図５】
0004416724.tif 000006
【図６】
0004416724.tif 000007
【図７】
0004416724.tif 000008
【図８】
0004416724.tif 000009
【図９】
0004416724.tif 000010
【図１０】
0004416724.tif 000011
【図１１】
0004416724.tif 000012
【図１２】
0004416724.tif 000013
【図１３】
0004416724.tif 000014
【図１４】
0004416724.tif 000015
【図１５】
0004416724.tif 000016
【図１６】
0004416724.tif 000017
【図１７】
0004416724.tif 000018
【図１８】
0004416724.tif 000019
【図１９】
0004416724.tif 000020
【図２０】
0004416724.tif 000021
【図２１】
0004416724.tif 000022
【図２２】
0004416724.tif 000023
【図２３】
0004416724.tif 000024
【図２４】
0004416724.tif 000025
【図２５】
0004416724.tif 000026
【図２６】
0004416724.tif 000027