(57)【特許請求の範囲】
【請求項１】
着目画像中の被写体を検出する被写体検出手段と、
前記被写体ごとの陰影の程度を示す陰影状態を検出する状態検出手段と、を備え、
ここで前記陰影状態は前記被写体ごとの被写体領域の中のコントラストを表す情報を含み、
検出された前記陰影状態に基づいて、前記被写体の補正の前の陰影の程度と補正の後の陰影の程度の序列が入れ替わらないように、前記着目画像中の対象となる被写体ごとに、目標となる陰影の状態である目標陰影状態を設定する目標設定手段と、
前記着目画像に対して、前記状態検出手段により検出された陰影状態と前記目標陰影状態とに基づいて、前記対象となる被写体ごとに仮想光源の設定を決定する光源設定手段と、
前記仮想光源を用いて前記着目画像中の前記対象となる被写体の明るさを補正する補正手段と
をさらに備えることを特徴とする画像処理装置。
【請求項２】
前記被写体検出手段により複数の被写体が検出された場合には、前記状態検出手段により検出された前記被写体ごとの陰影状態に基づいて前記複数の被写体の中から選択された被写体を、前記対象となる被写体とすることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記陰影状態とは、前記着目画像を撮影した際に、前記被写体を照らしている環境光によって、前記被写体に対応する被写体領域に生じた陰影の特性を表す情報であることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記陰影状態とは、前記被写体領域の中の明るさの分布と、前記被写体領域の中で陰影が生じている領域の輪郭の特性と、前記被写体領域の中で陰影が生じている領域の面積を表す情報のうちの少なくとも一つの情報をさらに含むことを特徴とする請求項１乃至３のいずれか一項に記載の画像処理装置。
【請求項５】
前記目標設定手段は、前記着目画像中において、前記陰影の程度が最も高い被写体については前記陰影の程度を下げ、前記陰影の程度が最も低い被写体については前記陰影の程度を上げるよう前記目標陰影状態を決定することを特徴とする請求項１乃至４の何れか一項に記載の画像処理装置。
【請求項６】
前記目標設定手段は、複数の前記被写体のそれぞれに対して、被写体の陰影状態を表す評価値を算出し、前記評価値が目標となる評価値となるよう前記目標陰影状態を決定することを特徴とする請求項１乃至５の何れか一項に記載の画像処理装置。
【請求項７】
前記評価値は、前記被写体領域の中の輝度が最も高い部分と最も低い部分との輝度の比を示すコントラスト値であることを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記目標設定手段は、前記着目画像中の複数の前記被写体に対する前記評価値を比較した結果に基づいて、前記目標陰影状態を、被写体毎に異なる状態にするか、被写体間で同一の状態とするかを決定することを特徴とする請求項６又は７に記載の画像処理装置。
【請求項９】
前記目標設定手段は、複数の前記被写体間での前記評価値の差分が所定値よりも大きい場合に、前記目標陰影状態を、被写体毎に異なる状態にするよう決定することを特徴とする請求項８に記載の画像処理装置。
【請求項１０】
前記目標設定手段は、複数の前記被写体に対する前記評価値を比較した結果に基づいて、前記対象とする被写体を決定することを特徴とする請求項６乃至９の何れか一項に記載の画像処理装置。
【請求項１１】
前記仮想光源の設定とは、前記仮想光源の前記被写体に対する位置と、前記仮想光源の発する仮想的な照明光の強度とを含むことを特徴とする請求項１乃至１０の何れか一項に記載の画像処理装置。
【請求項１２】
前記陰影状態は、被写体領域の中のコントラストを表す情報であるコントラスト値により示され、
前記光源設定手段は、前記目標陰影状態を示す目標コントラスト値が、前記状態検出手段により検出された陰影状態を示すコントラスト値よりも小さい場合には、前記仮想光源の位置を、前記被写体の法線に対して前記被写体を照らしている環境光と反対側に設定し、前記状態検出手段により検出された陰影状態を示すコントラスト値が前記目標陰影状態を示す目標コントラスト値よりも小さい場合には、前記仮想光源の位置を、前記被写体の法線に対して前記環境光と同じ側に設定することを特徴とする請求項１１に記載の画像処理装置。
【請求項１３】
コンピュータを、請求項１乃至１２のいずれか１項に記載の画像処理装置として機能させるための、コンピュータが実行可能なプログラム。
【請求項１４】
着目画像中の被写体を検出する被写体検出工程と、
前記被写体ごとの陰影の程度を示す陰影状態を検出する状態検出工程と、を有し、
前記陰影状態は前記被写体ごとの被写体領域の中のコントラストを表す情報を含み、
検出された前記陰影状態に基づいて、前記被写体の補正の前の陰影の程度と補正の後の陰影の程度の序列が入れ替わらないように、前記着目画像中の対象となる被写体ごとに、目標となる陰影の状態である目標陰影状態を設定する目標設定工程と、
前記着目画像に対して、前記状態検出工程により検出された陰影状態と前記目標陰影状態とに基づいて、前記対象となる被写体ごとに仮想光源の設定を決定する光源設定工程と、
前記仮想光源を用いて前記着目画像中の前記対象となる被写体の明るさを補正する補正工程と
をさらに有することを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置に関し、特に、入力された画像の明るさを補正する画像処理装置及び方法に関するものである。
【背景技術】
【０００２】
従来、撮影後の画像中の被写体に対して、仮想的な光源（仮想光源）からの光を照射し、リライティングを行う技術が知られている。これにより、環境光によって生じる被写体の陰影を、撮影後に補正することができる。
例えば、特許文献１では、撮影画像に対して疑似的なライティング処理を行うリライティング処理手段について開示されている。具体的には、仮想光源の位置を決定する方法に関して、被写体に対して環境光と仮想光源とを逆方向に配置することにより、被写体の影を低減させるよう補正する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１３５９９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
リライティング補正を行うことで、被写体の陰影の状態を目標とする陰影の状態へ近づけるよう補正する事ができる。リライティング補正の目標とする陰影の状態は、画像中の被写体が一つのみである場合には、見た目に好ましい所定の陰影の状態を定めれば良い。
【０００５】
一方、画像中の被写体が複数存在する場合には、単に見た目に好ましい陰影の状態を定めるのではなく、被写体間での陰影の状態の違いも考慮して目標とする陰影の状態を定める必要がある。例えば、コントラストの大小関係など、被写体間での陰影の状態の違いは、それぞれの被写体への撮影時の環境光の当たり方の違いを反映したものである。このため、リライティング補正の前後で、被写体間の陰影の状態の関係が逆転してしまうと、撮影時の環境光の当たり方と矛盾する不自然な画像になる場合があると考えられるからである。
【０００６】
しかしながら、特許文献１で挙げた従来の技術においては、画像中に被写体が複数含まれる場合に、目標とする陰影の状態を設定する方法が開示されておらず、複数の被写体に対するリライティング補正を適切に制御できない場合があった。
【０００７】
そこで、本発明の目的は、複数の被写体が存在する画像に対して、仮想光源を用いてリライティング処理を行う場合に、リライティング補正の目標とする陰影の状態を適切に決定することにより、自然なリライティング結果を得ることが可能となる画像処理装置及び方法を提供することである。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明は以下の構成を有する。
【０００９】
着目画像中の被写体を検出する被写体検出手段と、
前記被写体ごとの陰影の程度を示す陰影状態を検出する状態検出手段と、を有し、
前記陰影状態は前記被写体ごとの被写体領域の中のコントラストを表す情報を含みと、
検出された前記陰影状態に基づいて、前記被写体の補正の前の陰影の程度と補正の後の陰影の程度の序列が入れ替わらないように、前記着目画像中の対象となる被写体ごとに、目標となる陰影の状態である目標陰影状態を設定する目標設定手段と、
前記着目画像に対して、前記状態検出手段により検出された陰影状態と前記目標陰影状態とに基づいて、前記対象となる被写体ごとに仮想光源の設定を決定する光源設定手段と、
前記仮想光源を用いて前記着目画像中の前記対象となる被写体の明るさを補正する補正手段とをさらに備えることを特徴とする画像処理装置。
【発明の効果】
【００１０】
本発明によれば、複数の被写体が存在する画像に対するリライティング処理を行う際に、それぞれの被写体に対するリライティング補正の目標とする陰影の状態を適切に設定することで、自然なリライティング結果を得ることが可能となる。
【図面の簡単な説明】
【００１１】
【図１】デジタルカメラの構成を示すブロック図である。
【図２】画像処理部の構成を示すブロック図である。
【図３】本発明の第１の実施例におけるリライティング処理全体の流れを示すフローチャートである。
【図４】本発明の第１の実施例における被写体の例を示す図である。
【図５】本発明の第１の実施例における目標陰影状態の設定方法を説明する図である。
【図６】本発明の第一の実施例における仮想光源の位置を決定する方法の例を示す図である。
【図７】本発明の第１の実施例における仮想光源と被写体の位置関係の例を示す図である。
【図８】本発明の第２の実施例における目標陰影状態の設定処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下に、本発明の好ましい実施の形態を、添付の図面に基づいて詳細に説明する。本実施例では、画像処理装置としてデジタルカメラに適用した例について説明する。
【実施例１】
【００１３】
以下、図１〜７を参照して、本発明の第1の実施例おける、デジタルカメラについて説明する。
＜デジタルカメラの構成＞
図１は、本発明の実施形態によるデジタルカメラ１００の構成例を示すブロック図である。本発明は撮影された画像に適用する画像処理、より具体的にはリライティング（re-lighting）処理の方法に特徴を有する。従って、撮影や記録に関する構成は必須では無い。
【００１４】
図１において、レンズ群１０１は、フォーカスレンズを含むズームレンズである。絞り機能を備えるシャッター１０２が、レンズ群１０１と撮像部１０３との間に設けられている。撮像部１０３は、レンズ群１０１によって撮像面に形成される光学像を画素単位の電気信号に変換するＣＣＤ／ＣＭＯＳイメージセンサを代表とする撮像素子を有する。Ａ／Ｄ変換器１０４は、撮像部１０３が出力するアナログ信号をデジタル信号（画像データ）に変換する。
【００１５】
画像処理部１０５は、Ａ／Ｄ変換器１０４から出力される画像データに対し、色補間（デモザイク）、ホワイトバランス調整、γ補正などの各種画像処理を行う。画像処理部１０５はまた、撮影された画像に対するリライティング処理を行う。画像メモリ１０６は画像データを一時的に記憶する。メモリ制御部１０７は、画像メモリ１０６の読み書きを制御する。Ｄ／Ａ変換器１０８は、画像データをアナログ信号に変換する。表示部１０９はＬＣＤや有機ＥＬディスプレイ等の表示装置を有し、各種ＧＵＩやライブビュー画像、記録媒体１１２から読み出して再生した画像などを表示する。コーデック部１１０は、画像メモリ１０６に記憶されている画像データを記録媒体に記録するために予め定められた方法で符号化したり、画像ファイルに含まれる符号化画像データを例えば表示のために復号したりする。
【００１６】
インタフェース（Ｉ／Ｆ）１１１は、例えば半導体メモリカードやカード型ハードディスクなどの着脱可能な記録媒体１１２を、デジタルカメラ１００と機械的および電気的に接続する。システム制御部５０は例えばＣＰＵやＭＰＵなどのプログラマブルなプロセッサであってよい。システム制御部５０は、不揮発性メモリ１２１等に記録されたプログラムを実行して必要なブロックや回路を制御することにより、デジタルカメラ１００の機能を実現する。
【００１７】
顔検出部１１３は、撮影された画像に含まれる顔領域を検出し、検出された顔領域のそれぞれについて、位置、大きさ、信頼度などの顔情報を求める。なお、顔検出部１１３はニューラルネットワークに代表される学習を用いた手法、目、鼻、口などの特徴部位を、画像領域からテンプレートマッチングを用い探し出し類似度が高ければ顔とみなす手法など、任意の方法を用いて顔領域を検出することができる。
【００１８】
操作部１２０は、ユーザがデジタルカメラ１００に各種の指示を入力するためのボタンやスイッチなどの入力デバイスをまとめて記載したものである。表示部１０９がタッチディスプレイである場合、タッチパネルは操作部１２０に含まれる。また、音声入力や視線入力など、非接触で指示を入力するタイプの入力デバイスが操作部１２０に含まれてもよい。
【００１９】
不揮発性メモリ１２１は電気的に消去・記録可能な、例えばＥＥＰＲＯＭ等であってよい。不揮発性メモリ１２１は、各種の設定値、ＧＵＩデータをはじめ、システム制御部５０がＭＰＵやＣＰＵである場合には、システム制御部５０が実行するためのプログラムが記録される。システムメモリ１２２は、システム制御部５０の動作用の定数、変数、不揮発性メモリ１２１から読みだしたプログラム等を展開するために用いる。
【００２０】
＜デジタルカメラの基本動作＞
次に、上記のように構成されたデジタルカメラ１００における被写体撮影時の基本動作について説明する。撮像部１０３は、シャッター１０２が開いている際にレンズ群１０１が撮像面に形成する被写体像を撮像素子によって光電変換し、アナログ画像信号としてＡ／Ｄ変換器１０４へ出力する。Ａ／Ｄ変換器１０４は撮像部１０３から出力されるアナログ画像信号をデジタル画像信号（画像データ）に変換し画像処理部１０５に出力する。
画像処理部１０５は、Ａ／Ｄ変換器１０４からの画像データ、又は、メモリ制御部１０７からの画像データに対し、同時化処理（デモザイク処理）、γ補正、リライティング処理などの各種画像処理を行う。また、画像処理部１０５では、撮影で得られた画像データを用いて輝度やコントラストなどに関する所定の演算処理を行い、得られた演算結果に基づいてシステム制御部５０が焦点調節や露光制御を行う。焦点検出や露出制御に顔検出部１１３の検出結果を考慮してもよい。このように、本実施形態のデジタルカメラ１００では、ＴＴＬ（スルー・ザ・レンズ）方式のＡＦ（オートフォーカス）処理、ＡＥ（自動露出）処理を行う。画像処理部１０５ではさらに、撮影で得られた画像データを用いたオートホワイトバランス（ＡＷＢ）調整も行う。
【００２１】
画像処理部１０５から出力された画像データは、メモリ制御部１０７を介して画像メモリ１０６に書き込まれる。画像メモリ１０６は、撮像部１０３から出力された画像データや、表示部１０９に表示するための画像データを格納する。
また、Ｄ／Ａ変換器１０８は、画像メモリ１０６に格納されている画像表示用のデータをアナログ信号に変換して表示部１０９に供給する。表示部１０９は、ＬＣＤ等の表示装置に、Ｄ／Ａ変換器１０８からのアナログ信号に応じた表示を行う。
コーデック部１１０は、画像メモリ１０６に記録された画像データをＪＰＥＧやＭＰＥＧなどの規格に基づき符号化する。システム制御部５０は符号化した画像データに対して予め定められたヘッダなどを付与して画像ファイルを形成し、インタフェース１１１を介して記録媒体１１２に記録する。
【００２２】
なお、現在のデジタルカメラでは、撮影スタンバイ状態においては動画撮影を行い、撮影された動画を表示部１０９に表示し続けることにより表示部１０９を電子ビューファインダ（ＥＶＦ）として機能させるのが一般的である。この場合、シャッター１０２は開いた状態とし、撮像部１０３のいわゆる電子シャッターを用いて例えば３０フレーム／秒の撮影を行う。
【００２３】
そして、操作部１２０に含まれるシャッターボタンが半押しされると上述のＡＦ，ＡＥ制御が行われ、全押しされると本撮影により記録用の静止画撮影が実行され、記録媒体１１２に記録される。また、動画撮影ボタンなどにより動画撮影が指示された場合は、記録媒体１１２への動画記録を開始する。
【００２４】
＜リライティング処理に関する機能構成例＞
図２は、画像処理部１０５の、リライティング処理に関係する機能構成例を示すブロック図である。なお、図２に示す機能ブロックの１つ以上は、マイクロプロセッサとソフトウェアの組み合わせよって実現されてもよいし、ＡＳＩＣ(Application Specific Integrated Circuit)やＰＬＤ(Programmable Logic Device)のようなハードウェアによって実現されてもよい。ＰＬＤにはＦＰＧＡ(Field-Programmable Gate Array）、ＰＬＡ(Programmable Logic Array)などが含まれる。なお、リライティング処理は、リライティング処理の実行が指定された状態で撮影された画像や、メニュー画面等からリライティング処理の実施が指示された、例えば記録媒体１１２に記録済の画像に対して実施することができる。なお、リライティング処理において撮影時の情報が必要な場合、不揮発性メモリ１２１またはシステムメモリ１２２から読み出したり、画像ファイルのヘッダなどから取得したりするものとする。図２において、画像処理部１０５は、画像信号生成部２０１、ＷＢ増幅部２０２、被写体領域抽出部２０３、陰影状態検出部２０４、目標陰影状態設定部２０５、仮想光源設定部２０６、仮想光源信号付加部２０７、ガンマ処理部２０８を含む。
【００２５】
＜リライティング処理＞
次に、画像処理部１０５における処理の流れを説明する。図３に示したのは、画像処理部１０５の各部が実行するリライティング処理全体の流れを示したフローチャートである。
ステップＳ３０１では、被写体領域抽出部２０３が、ＷＢ増幅部２０２から入力された画像信号のうち、被写体領域に対応する画像信号のみを抽出する。すなわち被写体検出を行う。なお入力された画像信号を入力画像または着目画像と呼ぶ。例えば、リライティング処理の対象となる被写体領域が、人物の顔領域である場合、顔検出部１１３で検出した被写体人物の顔領域に対応する画像信号を抽出する。被写体が複数存在する場合は、複数の被写体領域をそれぞれ抽出する。
ステップＳ３０２では、被写体領域抽出部２０３が、抽出した被写体領域が着目画像中に複数存在するか否かを判定する。被写体領域が複数存在していると判定した場合は、ステップＳ３０３へ進み、被写体領域が単一である場合は、ステップＳ３０７へ進む。
【００２６】
ステップＳ３０３では、陰影状態検出部２０４が、抽出された被写体領域のそれぞれに対して、被写体の陰影の状態を検出する。陰影状態検出部２０４は、検出した被写体の陰影の状態を表す情報を、目標陰影状態設定部２０５へ出力する。陰影の状態とは、例えば被写体領域中の明るさの分布と、被写体領域中のコントラストを表す情報と、被写体領域中で陰影が生じている領域の輪郭の特性と、被写体領域中で陰影が生じている領域の面積を表す情報のうちの少なくとも一つの情報を含む。本実施例では主にコントラスト値を陰影状態を示す評価値として用いる。
ステップＳ３０４では、目標陰影状態設定部２０５が、入力された被写体それぞれの陰影の状態を表す情報を比較した結果に基づき、リライティング補正の対象とする被写体を決定する。
ステップＳ３０５では、目標陰影状態設定部２０５が、ステップＳ３０４で選択された被写体のそれぞれに対して、入力された被写体の陰影の状態を表す情報を比較した結果に基づき目標設定する。すなわち、リライティング補正の目標とする陰影の状態である目標陰影状態を決定する。目標陰影状態設定部２０５は、決定した目標陰影状態を表す情報を、仮想光源設定部２０６へ出力する。
ステップＳ３０６では、仮想光源設定部２０６が、入力された目標陰影状態を表す情報と、陰影状態検出部２０４が検出した被写体の陰影の状態を表す情報に基づき、ステップＳ３０４で選択された被写体のそれぞれに対して、仮想光源の設定値を決定する。仮想光源設定部２０６は、決定した仮想光源の設定値を、仮想光源信号付加部２０７へ出力する。
【００２７】
ステップＳ３０７では、陰影状態検出部２０４が、抽出された被写体領域に対して、被写体の陰影の状態を検出する。陰影状態検出部２０４は、検出した被写体の陰影の状態を表す情報を、目標陰影状態設定部２０５へ出力する。
ステップＳ３０８では、目標陰影状態設定部２０５が、入力された被写体の陰影の状態を表す情報に基づき、リライティング補正の目標とする陰影の状態である目標陰影状態を決定する。ただし、ステップＳ３０８へ進む場合は、補正の対象となる被写体が一つのみ検出されている場合であり、被写体間で陰影の状態を比較して目標陰影状態を定める必要がない。このため、ここでは、予め定められた所定の陰影の状態を目標陰影状態として決定する。目標陰影状態検出部２０５は、決定した目標陰影状態を表す情報を、仮想光源設定部２０６へ出力する。
ステップＳ３０９では、仮想光源設定部２０６が、入力された被写体の陰影の状態を表す情報と、目標陰影状態を表す情報とに基づいて、仮想光源の設定値を決定する。仮想光源設定部２０６は、決定した仮想光源の設定値を、仮想光源信号付加部２０７へ出力する。ここで仮想光源の設定値を決定する方法は、ステップＳ３０６で用いる方法と同様である。
【００２８】
ステップＳ３１０では、仮想光源信号付加部２０７が、入力された仮想光源の設定値に基づいて、仮想光源に対応する信号を生成し、ＷＢ増幅部２０２から入力された画像信号に対して付加する。なお、リライティング対象となる被写体が複数選択されている場合は、それぞれの被写体に対してステップＳ３０６で決定された仮想光源の設定値に基づいて、仮想光源に対応する信号を生成する。
以上が、本実施例におけるリライティング処理の全体の流れである。以下、各ステップにおける処理の詳細について、順に説明する。
【００２９】
＜被写体の陰影状態の検出処理＞
図４を用いて、陰影状態検出部２０４が、環境光によって生じる被写体の陰影の状態を検出する処理の詳細について説明する。この処理は図３のステップＳ３０３、Ｓ３０７に相当する。陰影状態検出部２０４は、被写体領域抽出部２０３から入力された被写体領域の画像信号に基づいて、被写体の明るさ情報を算出する。具体的には、図４に示したように、被写体領域を複数の部分（例えば、８×８＝６４個のブロック）に分割して、分割したブロック毎に輝度平均値を算出する。次に、陰影状態検出部２０４は、算出した輝度平均値に基づいて、被写体のコントラスト値を算出する。具体的には、分割した複数のブロックのうち、最も平均輝度の高いブロック（４０２）と最も平均輝度の低いブロック（４０３）を選び、その平均輝度の比を算出して、コントラスト値として用いる事とする。ただし、輝度信号に加えて、色相や彩度などの色信号をブロック毎に算出して、被写体色が近いブロック間でコントラスト値を算出するようにする。被写体色が近いとは、たとえば色相や彩度などの色信号の値の差が所定値以内であることなどにより判定される。被写体色が近いブロック間でコントラスト値を算出する場合、たとえば、被写体のブロックを被写体色が近いグループに分類し、各グループ内でコントラスト値を算出する。そしてグループ間で最も大きいコントラスト値を最終的なコントラスト値とする。陰影状態検出部２０４は、算出したコントラスト値を、被写体陰影情報として、目標陰影状態設定部２０５へ出力する。
【００３０】
また、陰影状態検出部２０４は、環境光の位置の推定を行う。環境光の位置の推定は、公知の種々の方法を用いる事ができる。例えば、被写体の中で最も明るい領域を検出して、その領域の法線ベクトルを算出し、その方向を環境光が位置する方向として定めても良い。また、人物の顔領域であれば、鼻などの器官を検出し、その陰の位置を検出することにより、環境光の方向を推定するようにしてもよい。陰影状態検出部２０４は、推定した環境光の位置情報を、仮想光源設定部２０６へ出力する。
【００３１】
＜リライティング対象の決定処理＞
次に、目標陰影状態設定部２０５が、被写体陰影情報に基づいて、リライティング対象とする被写体を決定する処理について、詳細を説明する。この処理は図３のステップＳ３０４に相当する。
図５に示したのは、画像中に複数の被写体が含まれる場合に、それぞれの被写体のコントラスト値を算出した結果の例を示したものである。図の横軸は、被写体の区別を表し、縦軸はコントラスト値を表す。図中のＣａ〜Ｃｄはそれぞれ、被写体ａ〜ｄのコントラスト値を表す。図に示した通り、Ｃａ＜Ｃｂ＜Ｃｃ＜Ｃｄの関係がある。
【００３２】
目標陰影状態設定部２０５は、コントラスト値が最も低い被写体と、最も高い被写体とを、リライティング補正の対象として選択する。図５に示した場合であれば、被写体ａと被写体ｄとがリライティング補正の対象となり、被写体ｂ、ｃはリライティング補正の対象としない。このようにすることで、リライティング補正によって陰影の状態を補正する必要が高いと考えられる被写体のみをリライティング補正の対象とする事ができる。一方、それ以外の被写体はリライティング補正を行わないため、撮影時の環境光による陰影の状態を残した画像を生成することができる。
【００３３】
＜被写体の目標陰影状態の決定処理＞
次に、目標陰影状態設定部２０５が、リライティング補正の対象として選択した被写体に対する目標陰影状態を決定する処理について、詳細を説明する。この処理は図３のステップＳ３０５、Ｓ３０８に相当する。ここでは、被写体のコントラスト値が基準となるコントラストの値に近づくよう目標陰影状態を定める。更に、本実施例での特徴的な処理として、リライティング補正の前後において、被写体のコントラスト値の大小関係が逆転しないよう、それぞれの被写体に対する目標陰影状態を定める。すなわち、補正の前の陰影状態で表される各被写体の陰影の程度と、補正の後の各被写体の陰影の程度の序列が入れ替わらないように、リライティングの対象となる被写体ごとに、目標となる陰影の状態である目標陰影状態を設定する。このようにすることで、見た目に好ましい陰影の状態に近づけるよう補正し、かつ、元の環境光による影響を残した自然な見た目となるよう、リライティング補正を制御することができる。
【００３４】
具体的には、以下のように処理を行う。まず、目標陰影状態設定部２０５は、基準となるコントラスト値として、被写体コントラスト値の平均値を算出する。算出した平均値の例を図５のＣａｖｅに示した。目標陰影状態設定部２０５は、被写体のコントラスト値がＣａｖｅより低ければ（高ければ）、被写体コントラスト値が高く（低く）なるように目標とするコントラスト値を定める。例えば、被写体ａの場合であれば、Ｃａ＜Ｃａｖｅであるから、被写体コントラスト値が高くなるよう目標陰影状態を設定する。ただし、補正後の被写体ａのコントラスト値が、被写体ｂのコントラスト値Ｃｂより高くならないよう、被写体ｂのコントラスト値Ｃｂより所定の値ΔＣだけ低い値であるＣａ'＝Ｃｂ−ΔＣを目標陰影状態として決定する。ここで、ΔＣは、正の値を持つ定数であり、Ｃｂ−Ｃａ≧ΔＣ＞０（条件１）である。あるいはΔＣを目標陰影状態としても良い。この場合には目標陰影状態はコントラストの補正量となる。
【００３５】
同様に、被写体ｄの場合であれば、Ｃａｖｅ＜Ｃｄであるから、被写体コントラスト値が低くなるよう目標陰影状態を設定する。ただし、補正後の被写体ｄのコントラスト値が、被写体ｃのコントラスト値Ｃｃより低くならないよう、Ｃｄ'＝Ｃｃ＋ΔＣを目標陰影状態として決定する。すなわち、Ｃｄ−Ｃｃ≧ΔＣ＞０（条件２）となる。条件１と条件２のいずれをも満たす値がΔＣとして選ばれる。目標陰影状態設定部２０５は、上記の方法により、それぞれの被写体に対して目標とするコントラスト値を決定し、その結果を目標陰影状態として、仮想光源設定部２０６へ出力する。
【００３６】
＜仮想光源の設定値の決定処理＞
次に、仮想光源設定部２０６が、それぞれの被写体の被写体陰影情報と、目標陰影状態とに基づいて、仮想光源の設定値を算出する処理について、詳細を説明する。この処理は図３のステップＳ３０６、Ｓ３０９に相当する。図６に示したのは、仮想光源設定部２０６が行う処理の流れを示したフローチャートである。図６はひとつの被写体に対する処理手順であり、被写体が複数ある場合には各被写体に順次着目して着目被写体に対して図６の処理手順が遂行される。また、図７に示したのは、被写体、環境光、仮想光源の位置関係を表した図である。ここでは、補正対象領域を図４に示したような人物の顔とした場合で説明する。
【００３７】
図７は被写体上方から俯瞰した状態を表しており、被写体領域７０１の斜線部はたとえば人物の顔の領域を表したものであり、簡単のため、表面は平面で表している。また、法線ベクトル７０２は、被写体領域７０１の向きを表す代表的な法線ベクトルである。代表的な法線ベクトルの算出方法は、公知の様々な方法を用いる事が出来る。例えば、不図示の測距手段により被写体までの距離を測定した結果から、被写体の立体形状を推定し、法線ベクトルを算出する事ができる。また、人物の顔の場合であれば、顔検出部１１３により、顔、及び、目や鼻などの器官を検出して顔の向きを推定した結果に基づき、法線ベクトルを推定する事もできる。また、被写体の法線ベクトルの代表的な方向は、算出した法線ベクトルを被写体領域全体について平均化することで算出する事ができる。または、リライティングの対象とする被写体領域の中心位置での法線ベクトルを代表的な法線ベクトルとして用いても良い。
【００３８】
環境光７０３が、代表的な法線ベクトル７０２と顔領域７０１とが交わる座標（画素）７１０を、陰影状態検出部２０４が推定した方向から照射している。仮想光７０４ａ、７０４ｂは、それぞれの位置から座標７１０を照射する仮想光のイメージである。ここで、法線ベクトル７０２と仮想光７０４ａ，７０４ｂの照射方向とが成す角を角α、法線ベクトル７０２と環境光７０３の照射方向とが成す角を角βで表す。なお、角αは、仮想光源７０４ａ，７０４ｂの座標と法線ベクトル７０２の始点（すなわち法線ベクトル７０２と被写体領域７０１との交点７１０）とを結ぶ直線と、法線ベクトル７０２とがなす角とも言える。同様に、角βは、環境光源の座標と法線ベクトル７０２の始点（法線ベクトル７０２と被写体領域７０１との交点）とを結ぶ直線と、法線ベクトル７０２とがなす角とも言える。また、法線ベクトル７０２と仮想光源７０４ａ、７０４ｂ、環境光７０３の照射方向とがなす角度は、反時計回りに正の符号、時計回りに負の符号を取るものとする。したがって例えば座標７１０を原点として法線ベクトル７０２の角度を基準（すなわち０）とすれば、法線ベクトル７０２と環境光７０４ｂの照射方向とが成す角は−αと表せる。また法線ベクトル７０２と環境光７０４ａの照射方向とが成す角は＋αと表せる。
【００３９】
なお、ここで説明する光源の方向とは図７に例示したように平面上における方向であるが、この方向を、たとえば被写体を平面としてとらえた場合に、その被写体面に直交し、かつ互いに直交する２つの平面内で定めれば、三次元空間における光源の方向を定めることができる。たとえば三次元直交座標系において、交点７１０を原点、被写体面をＹ−Ｚ平面とした場合、Ｘ−Ｙ平面とＺ−Ｘ平面それぞれの上で光源の方向を決めることで、三次元空間における光源の方向を定めることができる。
【００４０】
＜仮想光源の設定値の決定処理手順＞
図６のフローチャートを用いて、処理の流れを説明する。ここでは、仮想光源設定部２０６が、仮想光源の設定値として、仮想光源の位置(光を照射する方向)を算出する場合で説明する。したがって図６の各ステップの実行主体は仮想光源設定部２０６である。
ステップＳ６０１では、ステップＳ３０５で決定した目標コントラスト値の情報を、目標陰影状態設定部２０５より取得する。
ステップＳ６０２では、ステップＳ３０３で検出した、環境光によって生じた被写体コントラスト値を、陰影状態検出部２０４から取得する。またステップＳ３０３では環境光の位置も陰影状態検出部２０４により検出されており、被写体コントラスト値と共に当該被写体に対する環境光の位置情報も併せて取得する。
ステップＳ６０３では、目標コントラスト値と被写体コントラスト値とを比較し、被写体コントラスト値が目標コントラスト値より高いか否かを判定する。被写体コントラスト値が目標コントラスト値より高いと判定した場合はステップＳ６０４へ進み、そうでない場合はステップＳ６０５へ進む。
ステップＳ６０４へ進む場合は、環境光によって被写体領域に暗い陰影が生じ、目標とするコントラスト値よりも被写体コントラスト値が高くなっている場合に対応する。このため、ステップＳ６０４で仮想光源設定部２０６は、被写体に対して、仮想光源と環境光とが異なる側から照射されるよう、仮想光源の位置(方向)を算出する。環境光と異なる側とは、たとえば被写体の法線を挟んで環境光源とは反対側を指す。具体的には、角αの符号が角βの符号とは逆となり、角αの絶対値が４５°となるよう、仮想光の照射方向を決定する。
【００４１】
ここで、角αの絶対値を４５°としたのは、一般的な被写体に対して、法線ベクトル６０２に対して４５°の角度から照射すると適切なコントラストとなる場合が多いことによる。ただし、これは単なる例であり、被写体の陰の部分を仮想光によって明るく補正し、被写体領域のコントラストを下げることができれば、これに限定されない。図７の例であれば、ステップＳ６０４では仮想光７０４ｂが設定される。ここで仮想光７０４ｂの照射方向を、法線ベクトル７０２を対称軸として環境光７０３と対称となる方向（−β）としても良い。なおここでは法線ベクトル７０２の角度を０としている。また、他の例として、４５°±１０°、好ましくは４５°±５°の範囲で設定しても良い。リライティング処理後の被写体コントラスト値を算出して、その値が最も目標コントラスト値に近づくよう照射方向を決定するようにしても良い。仮想光の照射方向を算出すると、仮想光源設定部２０６は処理をＳ６０８へ進める。
【００４２】
一方ステップＳ６０５では、被写体コントラスト値が所定の閾値以下であるか否かを判定する。所定の閾値以下であると判定した場合はステップＳ６０６へ進み、そうでない場合はステップＳ６０７へ進む。
ステップＳ６０６へ進む場合は、被写体コントラスト値が目標とするコントラスト値より低く、さらに、環境光が被写体に対してほぼ一様に照射されており、環境光による陰影がほとんど生じていない場合に対応する。この場合、仮想光源設定部２０６は、ステップＳ６０６で仮想光の照射方向が法線ベクトル７０２となす角αの絶対値が４５°となるように、仮想光の照射方向を決定する。角αの符号は正負何れでも構わないので、角αは、４５°と−４５°の２通りの値となる。ただし、角αの絶対値を４５°としたのは、好ましい値の一例であり、被写体領域の一部を仮想光源によって明るく補正し、被写体領域のコントラストを上げる事ができれば、これに限定されない。例えば、リライティング処理後の被写体コントラスト値を算出して、その値が最も目標コントラスト値に近づくよう照射方向を決定するようにしても良い。仮想光の照射方向を算出すると、仮想光源設定部２０６は処理をＳ６０８へ進める。
【００４３】
Ｓ６０７へ進む場合は、環境光によってある程度被写体に陰影が生じているが、目標のコントラストは得られていない場合である。従って、仮想光源設定部２０６は、ステップＳ６０７で、仮想光の照射方向が法線ベクトル７０２となす角αの符号が、環境光の照射方向が法線ベクトル７０２となす角βと同一符号で、角αの絶対値が４５°となるように、仮想光の照射方向を決定する。ただし、角αの絶対値を４５°としたのは、好ましい値の一例であり、被写体領域の一部を仮想光源によって明るく補正し、被写体領域のコントラストを上げる事ができれば、これに限定されない。例えば、角αの絶対値を角βの絶対値を基準として算出しても良い。具体的には、角αの絶対値を、｜β｜±１５°、好ましくは｜β｜±１０°、さらに好ましくは｜β｜±５°としても良い。ここで±は範囲を示していてもよい。あるいは、α＝β、すなわち、環境光と同じ照射方向を仮想光の照射方向として決定してもよい。又は、リライティング処理後の被写体コントラスト値を算出して、その値が最も目標コントラスト値に近づくよう照射方向を決定するようにしても良い。仮想光の照射方向を決定すると、仮想光源設定部２０６は処理をＳ６０８へ進める。
【００４４】
ステップＳ６０８では、算出した仮想光源の配置を、仮想光源の位置の設定値として、仮想光源信号付加部２０７へ出力する。なお、被写体ａに対する補正量（△Ｃ）と被写体ｄに対する補正量（△Ｃ）は必ずしも同じでなくても良い。
【００４５】
以上、説明した通り、仮想光源設定部２０６は、補正対象領域のそれぞれに対して、その陰影状態に応じた仮想光源の設定値を算出し、仮想光源信号付加部２０７へ出力する。なお交点７１０から光源までの距離Ｄについては、たとえば定数で与えてもよい。仮想光源の方向や強度といった設定は、後述するリライティングによる被写体の補正前の陰影状態と、補正後の陰影状態との大小関係（あるいは強弱関係）が逆転しないように決定される。すなわち、たとえば図５の例で説明すれば、Ｃｂ−Ｃａ≧ΔＣ＞０（条件１）と、Ｃｄ−Ｃｃ≧ΔＣ＞０（条件２）とを満たすコントラストすなわち陰影状態の補正量ΔＣが得られるように、仮想光源の設定を定める。そのためには、たとえば、被写体の最も明るい領域の輝度は仮想光源によって変化しないものと仮定し、目標コントラスト値を得るための、当該被写体の最も暗い領域の目標輝度を算出する。そして、後述する数式１にしたがってその最も暗い領域の補正前の輝度を目標輝度に補正するための仮想光源の強度及び距離を決定する。その際、仮想光源の方向（法線に対する角度）は決定されているものとする。ここで、被写体の最も明るい領域の輝度は仮想光源によって変化しないものと仮定したが、この領域の輝度も仮想光源によって増加することがあり得る。この場合には、補正後のコントラスト値は目標コントラスト値よりも大きくなる可能性があるので、決定した仮想光源の強度または距離から、所定値を減じておいてもよい。
【００４６】
＜仮想光源を用いたリライティング処理＞
次に、仮想光源信号付加部２０７での、仮想光源を用いたリライティング処理について説明する。この処理は図３のステップＳ３１０に相当する。本実施例では、仮想光源によって照射された処理対象画素の出力ＲＧＢ値（Ｒｏｕｔ、Ｇｏｕｔ、Ｂｏｕｔ）は、下記の式で算出するものとする。
【００４７】
Ｒｏｕｔ＝［Ｒｔ＋Ａ×cos(α)×（１／Ｄ＾２）×Ｒｖ］／Ｍ
Ｇｏｕｔ＝［Ｇｔ＋Ａ×cos(α)×（１／Ｄ＾２）×Ｇｖ］／Ｍ  ...  （数式１）
Ｂｏｕｔ＝［Ｂｔ＋Ａ×cos(α)×（１／Ｄ＾２）×Ｂｖ］／Ｍ
ただし、｜α｜≦９０°であり、｜α｜＞９０°であれば、仮想光源からの光で照らされないので、出力値は処理対象の画素値のままとする。（Ｒｔ、Ｇｔ、Ｂｔ）は処理対象の画素値、Ａは仮想光源の強度（すなわち仮想光源の発する仮想的な照明光の強度）を表す所定の定数、Ｄは仮想光源と被写体までの距離、（Ｒｖ、Ｇｖ、Ｂｖ）は光源反射色を表す。光源反射色は、仮想光源が被写体表面で反射した時の反射色を、予め設定された仮想光源色と被写体色とによって推定した色である。Ｍはリライティング後の出力ＲＧＢ値を正規化するための予め設定された定数である。角度αは、仮想光源設定部２０６が決定した仮想光源の方向と、対象画素における被写体の法線ベクトルの成す角である。数式１では、Ａ×cos(α)×（１／Ｄ＾２）は、仮想光源の被写体面における強度であり、その値は、被写体面における仮想光源からの光の強度のうち、仮想光源からの光の被写体面に直交する強度成分が、仮想光源の距離に反比例するものとして算出されている。そして、算出した値に光源反射色を乗じて画素値に加算し、正規化した値が着目画素の画素値として算出される。
【００４８】
ここで、角度αを算出する際に、リライティング対象画素の各画素に対して被写体の法線ベクトルを算出して、角度αを算出するようにしても良い。又は、図４に示したように被写体領域を複数のブロックに分割し、ブロック毎に算出した法線ベクトルに基づいて、角度αを算出するようにしても良い。又は、人物の顔のように被写体の３次元形状が予め分かっている場合には、対象画素が顔領域中でどこの位置であるかに基づいて、法線ベクトルの方向を推定し、角度αを算出するようにしても良い。また、仮想光源の強度Ａは、被写体コントラスト値と目標コントラストの差分ΔＣまたは−ΔＣに応じて決定すれば良い。また仮想光源の距離Ｄは所定の距離としてもよい。距離Ｄを一定の距離とするならば、１／Ｄ＾２は定数となるので、Ａ×（１／Ｄ＾２）を定数として与えることもできる。この場合Ａ×（１／Ｄ＾２）の値は、被写体コントラスト値と目標コントラストの差分｜ΔＣ｜（これをコントラスト調整量あるいは陰影状態調整量と呼ぶ）に応じて決定すれば良い。たとえば数式１によって変更した画素値から被写体ごとにステップＳ３０３の要領でコントラスト値を算出し、そのコントラスト値が目標コントラスト値になるようにＡ×（１／Ｄ＾２）及び定数Ｍは決められる。Ａ×（１／Ｄ＾２）をあらかじめ決めておき、定数Ｍにより調整してもよいし、その逆でもよい。
【００４９】
本実施例の構成をまとめると、以下のようになる。
１）入力画像中の被写体を検出する。
２）各被写体のコントラスト値を検出する。
３）検出したコントラスト値が最大の被写体と最小の被写体とを補正対象の被写体として選択し、選択したコントラスト値が最大の被写体についてはコントラスト値を下げ、コントラスト値が最小の被写体についてコントラスト値を上げるように目標コントラスト値を設定する。このとき、入力画像中の各被写体のコントラスト値の順序が維持されるよう目標コントラスト値は決定される。
４）補正対象の被写体のコントラスト値が目標コントラスト値になるよう仮想光源を設定する。
５）仮想光源を用いて補正対象の被写体の明るさを補正する。
【００５０】
以上説明したように、本実施例では、複数の被写体領域を対象にリライティング補正を行う際に、被写体の陰影状態を比較した結果に基づいて、それぞれの被写体に対するリライティング補正の目標とする目標陰影状態を決定するように制御した。これにより、複数の被写体が含まれる画像に対してリライティング補正を行う際に、リライティング補正によって、被写体間での陰影の状態が逆転して不自然な画像になることを避ける事が可能となる。
【００５１】
［変形例１］
なお、本実施例では、検出された複数の被写体の全てに対して、陰影の状態を検出する場合で説明したが、本発明は、リライティング処理での陰影の状態の検出方法を、これに限定するものではない。例えば、検出した複数の被写体のうち、画像中に占める面積が所定の閾値以上の被写体のみを選んで、陰影の状態を検出するようにしても良い。又は、被写体のうち、陰影が生じている領域の輪郭の特性を検出してもよい。たとえば、被写体が人物の顔である場合は、その輪郭に基づいて正面向きの顔と横向きの顔とを判別し、顔の向きが正面に近い被写体のみを選んで、横向きに近い被写体は除外し、陰影の状態を検出するようにしても良い。
【００５２】
［変形例２］
また、本実施例では、複数の被写体のうち、最もコントラスト値が低い（高い）被写体を、リライティング補正の対象とする場合で説明したが、本発明は、リライティング補正の対象の決定方法をこれに限定するものではない。すなわち、複数の被写体の陰影の状態を比較して、リライティング補正の対象を決定する方法であれば、どのような方法を用いても構わない。例えば、予め定められた所定の基準値と比較し、基準値と被写体コントラスト値の差分が所定の大きさを超えている場合に、その被写体をリライティング補正の対象として選択するようにしても良い。また、複数の被写体のうち、コントラスト値が複数の被写体の平均値より低い（高い）被写体を、リライティング補正の対象として選択するようにしても良い。また、複数の被写体のうち、最も主要な被写体の被写体コントラスト値と比べて、コントラスト値が低い（高い）被写体を、リライティング補正の対象として選択するようにしても良い。最も主要な被写体は、たとえば最も大きな面積の被写体や、検出された顔、あるいは焦点の合っている被写体などであってよい。焦点の合い具合はたとえばエッジ抽出などにより判定できる。また、画像中で近接する被写体同士を比較して、コントラスト値が低い(高い)被写体を、リライティング補正の対象として選択するようにしても良い。
【００５３】
また、他の被写体と比べて、陰影の状態が大きく異なる被写体すなわち、たとえばコントラスト値が、他の被写体のコントラスト値から所定の閾値以上の差がある被写体を、リライティング補正の対象から除外するように制御しても良い。このようにすることで、陰影の状態が他の被写体と大きく異なるため、リライティング補正を行うと補正量が大きくなり、ノイズ成分が強調されるような弊害が生じないよう制御することができる。
【００５４】
［変形例３］
また、本実施例では、目標とする陰影の状態を定める際に、複数の被写体コントラスト値の平均値を基準として用いる場合で説明したが、被写体の陰影状態を比較した結果に基づいて、目標値を決定する方法であれば、どのようなものを基準として用いても構わない。例えば、予め定められた所定のコントラスト値を基準として、それぞれの被写体に対する目標コントラスト値を定めても良い。また、複数の被写体のうち、最も主要な被写体のコントラスト値を基準として用いても良い。
【００５５】
［変形例４］
また、本実施例では、リライティングの対象として選択した被写体の補正後の被写体コントラスト値と、リライティングの対象外の被写体の被写体コントラスト値の関係を用いて、目標陰影状態を設定する場合で説明したが、目標陰影状態の設定方法はこれに限定されるものではない。例えば、複数の被写体が共にリライティングの対象として選択されている場合、補正前の被写体コントラスト値の大小関係が、補正後にも保たれるよう目標陰影状態を設定するようにしても良い。
【００５６】
［変形例５］
また、本実施例では、リライティング補正の目標値を、被写体のコントラスト値とし、他の被写体とのコントラスト値との大小関係が逆転しないよう設定する場合で説明したが、リライティング補正の目標値の決定方法はこれに限定されるものではない。すなわち、複数の被写体の陰影の状態を比較した結果を用いて、リライティング補正の目標値を決定する方法であれば、どのようなものを用いても構わない。例えば、リライティング補正の目標として、被写体の陰の領域の位置を定めるようにしても良い。そして、複数の被写体について、それぞれの被写体での陰の領域の位置（例えば、被写体が人物の顔であれば、顔の上下左右のどちら側が陰の領域であるか）を判定し、その位置が他の被写体と異ならないようリライティング補正の目標値を定める。また、陰影の状態を表す情報として、被写体の明るさの情報を用いるようにしても良い。具体的には、複数の被写体について、それぞれの被写体の領域における平均的な明るさを算出し、リライティング補正の前後において、被写体間で明るさの大小関係が逆転しないよう、リライティング補正の目標値を定めても良い。
【００５７】
［変形例６］
また、被写体の陰の領域を検出し、その境界の特性を表す情報を被写体の陰影の状態を表す情報として用いても良い。具体的には、被写体の陰の領域の境界の明るさ勾配を算出し、その値が他の被写体と比べて同程度の値となるよう、仮想光源の位置や仮想的な照明光の拡散特性を定めるようにしても良い。また、被写体領域中の陰の領域の面積を算出し、その結果を被写体の陰影の状態を表す情報として用い、その値を他の被写体と比べた結果に基づいて、リライティング補正を制御するようにしても良い。
【００５８】
［変形例７］
また、本実施例では、複数の被写体のそれぞれに対して、別個に目標とする陰影の状態を定める場合で説明したが、本発明は、目標とする陰影の状態を定める方法を、これに限定するものではない。すなわち、複数の被写体の陰影の状態を比較して、それぞれの被写体に対する目標陰影状態を定める方法であれば、どのようなものを用いても構わない。例えば、複数の被写体に対して、陰影の状態を比較する事で環境光の当たり方を推定し、環境光の当たり方が近い被写体同士をグループ化し、グループ毎に目標とする陰影の状態を定めるようにしても良い。
【００５９】
［変形例８］
また、本実施例では、仮想光源の設定として、仮想光源の位置を制御する場合で説明したが、本発明は、仮想光源の設定の制御方法をこれに限定するものではない。例えば、仮想光源の強度、色、個数、形状のパラメータを制御し、被写体の陰影の状態が、目標陰影状態に近づくようリライティング補正を制御するようにしても良い。
【００６０】
［変形例９］
本実施例の数式１において、定数Ｍの値が１から離れすぎると、本来近似した色を有する近隣画素の画素値の差が拡大されて境界線を生じてしまうことがある。たとえばα＝±９０°付近で仮想光源によって補正した画素値（ｃｏｓα≒０なので例えばＲｏｕｔ≒Ｒｔ／Ｍ）と、その付近にあって｜α｜＞９０°となるために補正対象とならない画素値（例えばＲｏｕｔ＝Ｒｔ）との差が、近隣の画素でありながら大きくなることがあり得る。これにより元々画像中には無いはずの境界線が現れてしまうこともあり得る。そこで例えば正規化定数Ｍで除するのは元の画素値に加算する補正値（あるいは補正量）のみとし、例えばＲ成分であれば、Ｒｏｕｔ＝Ｒｔ＋［Ａ×cos(α)×（１／Ｄ＾２）×Ｒｖ］／Ｍなどとしてもよい。
【００６１】
［変形例１０］
またたとえば、仮想光源は被写体ごとに一つとし、次のように補正してもよい。被写体領域ごとにたとえばその重心位置を代表画素と定め、その法線ベクトルを被写体の代表法線ベクトルとする。そしてその被写体の仮想光源の位置（方向）は、代表法線ベクトルに対して設定する。ここで代表法線ベクトルに対する仮想光源の方向を角度α０で表す。そして被写体領域に属する画素ｐの法線ベクトルに対する仮想光源の角度αｐを、代表法線ベクトルと画素ｐの法線ベクトルとが成す角度γｐを角度α０から差し引いたα０−γｐとして算出し、このαｐを、実施例の数式１の角度αとして適用する。このようにすることで、被写体を構成する面の方向に応じて、その面を照射する仮想光源の光量を求めることができ、より高精度の補正が可能となる。なお計算量を減らすために、画素ごとではなく、たとえば被写体領域内にあって輝度の差が所定範囲内にある画素群から成る連続した領域ごとに法線ベクトルを定めてもよい。
【実施例２】
【００６２】
以下、図８，９を参照して、本発明の第二の実施例における、デジタルカメラについて説明する。第一の実施例では、複数の被写体に対し、被写体の陰影の状態を比較した結果を用いて、それぞれの被写体にリライティング補正の目標とする目標陰影状態を設定する場合で説明した。第二の実施例では、被写体の陰影の状態を比較した結果を用いて、それぞれの被写体に目標陰影状態を設定するか、複数の被写体で共通の目標陰影状態を設定するかを判定する場合の方法を説明する。第二の実施例における、デジタルカメラの全体構成、画像処理部の構成、及び、リライティング処理全体の流れは、それぞれ、図１、２、３に示した第一の実施例の場合と同様であるため、説明は省略する。
【００６３】
第二の実施例では、図３のステップＳ３０５における目標陰影状態の決定方法が、第一の実施例の場合と異なる。図８を参照して、第二の実施例における目標陰影状態の決定方法を、詳細に説明する。図８の手順は、目標陰影状態設定部２０５により実行される。
【００６４】
ステップＳ８０１では、目標陰影状態設定部２０５が、リライティング対象として選択された被写体のコントラスト値を比較し、その最大値と最小値との差分を算出する。
ステップＳ８０２では、目標陰影状態設定部２０５が、算出した差分値と、予め定められた所定のコントラスト差分閾値とを比較し、差分値がコントラスト差分閾値より小さいか判定する。差分値がコントラスト差分閾値より小さいと判定した場合は、ステップＳ８０３へ進む。差分値がコントラスト差分閾値以上と判定した場合は、ステップＳ８０６へ進む。
【００６５】
ステップＳ８０３では、目標陰影状態設定部２０５が、リライティング補正の対象として選択された被写体の明るさを比較し、その最大値と最小値との差分を算出する。
ステップＳ８０４では、目標陰影状態設定部２０５が、算出した差分値と、予め定められた所定の明るさ差分閾値とを比較し、差分値が明るさ差分閾値より小さいか判定する。差分値が明るさ差分閾値より小さいと判定した場合は、ステップＳ８０５へ進む。差分値が明るさ差分閾値以上と判定した場合は、ステップＳ８０６へ進む。
【００６６】
ステップＳ８０５へ進む場合は、環境光によって生じている被写体の陰影の状態が、被写体間で近い状態である場合に対応する。この場合は、ステップＳ８０５では、目標陰影状態設定部２０５が、複数の被写体に対し、共通の目標陰影状態を設定する。共通の目標陰影状態としては、予め定められた見た目に好ましい陰影の状態を用いるようにすれば良い。
【００６７】
ステップＳ８０６へ進む場合は、環境光の当たり方が被写体によって大きく異なる場合に対応する。この場合に、複数の被写体に対して共通の目標陰影状態を設定し、リライティング補正を行うと、撮影時の環境光の当たり方と大きく陰影状態が変わる被写体が生じることとなり、不自然な印象の画像となる場合がある。このため、ステップＳ８０６では、目標陰影状態設定部２０５が、複数の被写体に対し、被写体毎に目標陰影状態を設定することとする。被写体毎の目標値としては、予め代表的な光源や撮影環境下での見た目に好ましい陰影の状態を複数定めておき、その値を用いるようにすれば良い。その際には、予め複数定められている陰影の状態の中で、被写体の陰影の状態が最も近いものを選択するようにする。
【００６８】
以上の処理により、それぞれの被写体に対する目標陰影状態を定めた後の仮想光源の設定値を定める処理、仮想光源に対応する画像信号を付加する処理の内容は、第一の実施例の場合と同様であるため、詳細な説明は省略する。
【００６９】
以上、説明した通り、本実施例では、複数の被写体領域を対象にリライティング補正を行う際に、被写体の陰影の状態を比較した結果を用いて、被写体毎に目標陰影状態を定めるか、被写体間で共通の目標陰影状態を定めるかを選択する方法を説明した。これにより、複数の被写体を共通の陰影状態へと補正すると不自然な画像になる場合は、被写体毎に目標陰影状態を定めることとなり、自然なリライティング結果を得ることが可能となる。逆に、被写体ごとに目標陰影状態を定めると、被写体ごとの陰影状態のばらつきが大きくなり不自然となるような画像については、共通の目標陰影状態を定めることで、その不自然さを解消できる。
【００７０】
［変形例１］
なお、本実施例では、コントラストと明るさの差分に基づいて、目標陰影状態を被写体間で共通にするか否かを判定する場合で説明したが、複数の被写体の陰影の状態を比較した結果に基づいて、目標陰影状態の決定方法を制御する方法であれば、どのようなものを用いても構わない。例えば、被写体の明るさ、コントラストのいずれか一方のみを用いて判定してもよい。また例えば、被写体の明るさ、コントラストに加えて、影の向きや被写体の色情報も用いて、被写体間で同一の環境光が当たっているか、互いに異なる環境光が当たっているかを判定するようにしても良い。この場合、同一の環境光が当たっていると判定された場合は、被写体間で共通の目標陰影状態を設定し、異なる環境光が当たっていると判定された場合は、それぞれに当たっている環境光に適した目標陰影状態を被写体毎に設定するようにする。このようにすることで、元の環境光による特性を残しながら、より見た目に好ましくなるようリライティング補正を行う事が可能となる。
【００７１】
［変形例２］
また、複数の被写体の陰影の状態を比較し、その中で見た目に好ましい陰影の状態の被写体が存在するか否かを判定する方法を用いても良い。この場合、見た目に好ましい陰影の状態の被写体が存在しない場合は、目標陰影状態を、被写体間で共通の陰影状態とする。目標陰影状態としては、見た目に好ましい所定の陰影の状態を定めるようにすれば良い。
【００７２】
［変形例３］
また、本実施例では、目標陰影状態として予め定められた所定の陰影状態を用いる場合で説明したが、目標陰影状態の決定方法はこれに限定されるものではない。例えば、複数の被写体の環境光での陰影の状態を検出し、その平均値を目標陰影状態として定めても良い。また、複数の被写体の中で、同一の陰影の状態である被写体の数が多い場合には、その陰影の状態を目標陰影状態として選ぶようにしても良い。
【００７３】
［変形例４］
また、共通の目標陰影状態を設定した後に、更に、第一の実施例で説明した方法を用いて、被写体の陰影の状態の関係が逆転しないよう、被写体毎に目標陰影状態を調整するようにしても良い。このようにすることで、第一の実施例の場合と同様、リライティング補正の前後で陰影の状態が逆転せず、自然な見た目のリライティング結果を得ることが可能となる。
【００７４】
［その他の実施例］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００７５】
５０  システム制御部、１０１  光学系、１０２  シャッター、１０３  撮像部、１０４  Ａ／Ｄ変換器、１０５  画像処理部、１０６  画像メモリ、１０７  メモリ制御部、１０９  表示部、１１０  コーデック部、１１１  記録Ｉ／Ｆ、１１２  記録媒体、１１３  顔検出部、１２０  操作部、１２１  不揮発性メモリ、１２２  システムメモリ
【図１】
0006718253.tif 000002
【図２】
0006718253.tif 000003
【図３】
0006718253.tif 000004
【図４】
0006718253.tif 000005
【図５】
0006718253.tif 000006
【図６】
0006718253.tif 000007
【図７】
0006718253.tif 000008
【図８】
0006718253.tif 000009