(57)【要約】【課題】  第１の画像の顔に適用した仮想光源によるライティングを、同条件で第２の画像の顔に簡単な操作で適用できるようにする。【解決手段】  ＣＰＵ１０１は、ＨＤＤ１０５の第１の画像から顔を検出し、仮想光源に基づくライティングを施す。ユーザが入力装置１０６を使って、仮想光源の位置等を調整できる。ＣＰＵ１０１は、ユーザのコピー操作に応じて、仮想光源の対象となる顔に対する相対位置をコピーする。ＣＰＵ１０１は、第２の画像から顔を検出し、ユーザのペースト操作に応じて、コピー操作でコピーした相対位置に基づき、第２の画像の顔に対して仮想光源を同じ相対位置に配置し、第２の画像の顔にライティングを施す。【選択図】  図７
2018010498.tif 000002
【特許請求の範囲】
【請求項１】
第１の画像および第２の画像から顔を検出する顔検出手段と、
前記顔検出手段で検出される顔に仮想光源によるライティングを施すライティング手段と、
前記第１の画像の顔に対する前記仮想光源の相対位置と同じ相対位置で前記第２の画像の顔に適用するように、前記ライティング手段において前記第１の画像に適用した仮想光源パラメータを前記第２の画像に適用する制御手段
とを有することを特徴とする画像処理装置。
【請求項２】
前記仮想光源パラメータが、仮想光源の位置と角度であることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記仮想光源パラメータは更に、仮想光源のオンオフ、光強度、光源種類及び光源色温度の１つ以上を含むこと特徴とする請求項２に記載の画像処理装置。
【請求項４】
さらに、前記第１の画像及び前記第２の画像の撮像時に撮像装置からの距離を示す距離情報を取得し、前記顔検出手段の検出結果および前記距離情報を用いて、撮像装置から前記顔検出手段で検出される顔までの距離を算出する手段を有することを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記ライティング手段は、前記第２の画像の顔へのライティング後の顔輝度が、前記第１の画像の顔へのライティング後の顔輝度と同じになるように、前記第２の画像の顔に適用する仮想光源の光強度を調整することを特徴とする請求項１から４のいずれか１項に記載の画像処理装置。
【請求項６】
前記ライティング手段は、前記第２の画像の複数の顔のそれぞれに、前記第１の画像の顔に適用した仮想光源に基づくライティングを施すことを特徴とする請求項１から５のいずれか１項に記載の画像処理装置。
【請求項７】
第１の画像から顔を検出する第１の顔検出ステップと、
前記第１の顔検出ステップで検出された顔に仮想光源によるライティングを施す第１のライティングステップと、
第２の画像から顔を検出する第２の顔検出ステップと、
前記第２の画像から検出された顔に、前記第１の画像の顔に対する前記仮想光源の相対位置と同じ相対位置でライティングを施す第２のライティングステップ
とを有することを特徴とする画像処理方法。
【請求項８】
第１の画像から顔を検出する第１の顔検出ステップと、
前記第１の顔検出ステップで検出された顔に仮想光源によるライティングを施す第１のライティングステップと、
前記第１のライティングステップで前記第１の顔検出ステップで検出された顔に適用される前記仮想光源の、前記第１の顔検出ステップで検出された顔に対する相対位置をコピーするコピーステップと、
第２の画像から顔を検出する第２の顔検出ステップと、
前記第２の画像から検出された顔に対して前記コピーステップでコピーされた前記相対位置に仮想光源を置き、前記第２の画像から検出された顔にライティングを施す第２のライティングステップ
とを有することを特徴とする画像処理方法。
【請求項９】
画像から顔を検出する顔検出手段と、対象に仮想光源に基づくライティングを施すライティング手段と、操作手段と、制御手段とを有する画像処理装置において、前記制御手段により実行される制御する制御プログラムであって、
前記顔検出手段に第１の画像から顔を検出させる第１の顔検出ステップと、
前記第１の顔検出ステップで検出された顔を前記対象として前記ライティング手段に供給し、前記ライティング手段に仮想光源によるライティングを施させる第１のライティングステップと、
前記第１のライティングステップにおける前記仮想光源の仮想光源パラメータの変更を前記操作手段から受け付けるステップと、
前記操作手段によるコピー操作に従い、前記第１のライティングステップで前記第１の顔検出ステップで検出された顔に適用される前記仮想光源の、前記第１の顔検出ステップで検出された顔に対する相対位置をコピーするコピーステップと、
前記顔検出手段に第２の画像から顔を検出させる第２の顔検出ステップと、
前記第２の顔検出ステップで検出される顔を前記ライティング手段に供給するステップと、
前記ライティング手段に対し、前記操作手段によるペースト操作に従い、前記第２の画像から検出された顔に対して前記コピーステップでコピーされた前記相対位置に仮想光源を配置する配置ステップと、
前記ライティング手段に、前記配置ステップで配置された仮想光源によるライティングを第２の画像から検出された顔にライティングを施させる第２のライティングステップ
とを有することを特徴とする画像処理装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、明るさ補正を行う画像処理装置及び方法並びに制御プログラムに関する。
【背景技術】
【０００２】
画像中の被写体に対して仮想光源による照明効果を適用することで被写体の暗部の明るさを補正することが、知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−０７２６９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載される技術では、複数の画像の同様の被写体に同じ照明効果を与えるのが難しい。具体的には、第１の画像に含まれる人物の顔に対してユーザが所望の位置に仮想光源を設定した場合、他の画像に含まれる顔に対して仮想光源による同様の照明効果を当てるのが難しい。
【０００５】
本発明は、ある画像の被写体に設定した仮想光源を別の画像の被写体にも同じ設定で適用できるようにした画像処理装置及び方法並びに制御プログラムを提示することを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る画像処理装置は、第１の画像および第２の画像から顔を検出する顔検出手段と、前記顔検出手段で検出される顔に仮想光源によるライティングを施すライティング手段と、前記第１の画像の顔に対する前記仮想光源の相対位置と同じ相対位置で前記第２の画像の顔に適用するように、前記ライティング手段において前記第１の画像に適用した仮想光源パラメータを前記第２の画像に適用する制御手段とを有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、第１の画像に含まれる顔に適用されるライティングと同じ条件のライティングを、簡単な操作で第２の画像に含まれる顔に適用できる。
【図面の簡単な説明】
【０００８】
【図１】本発明の一実施例の概略構成ブロック図である。
【図２】本実施例のユーザインターフェイス例である。
【図３】本実施例のライティング工程を示すフローチャートである。
【図４】点光源の場合の法線ベクトルと仮想光源照射方向との関係を示す平面図である。
【図５】面光源の場合の法線ベクトルと仮想光源照射方向との関係を示す平面図である。
【図６】本実施例の仮想光源パラメータのコピー処理のフローチャートである。
【図７】本実施例の仮想光源パラメータのペースト処理のフローチャートである。
【図８】顔検出結果を収納するテーブルの内容例である。
【図９】ペースト先の画像データに複数の顔がある場合のライティング工程のフローチャートである。
【発明を実施するための形態】
【０００９】
以下、図面を参照して、本発明の実施例を詳細に説明する。なお，本明細書では、仮想光源を設定して疑似的なライティングを行う画像処理を以降、リライティングと記す。仮想光源の撮像装置の撮影光軸に対する水平方向の角度をｌｉｇｈｔ＿ｈと記し、撮影光軸と直角に交差する垂直軸に対する角度をｌｉｇｈｔ＿ｖと記す。仮想光源の位置の水平座標値をｌｉｇｈｔ＿ｘ、垂直座標値をｌｉｇｈｔ＿ｙ、奥行き座標値をｌｉｇｈｔ＿ｚと記す。仮想光源に関する、光のオンオフ情報、光源種類、光の強さ、光源の位置、角度及び光源色温度を総称して、以降、仮想光源パラメータと記す。
【実施例１】
【００１０】
図１は、本発明に係る画像処理装置の一実施例の概略構成ブロック図を示す。図１に示す画像処理装置１００の主要な機能は、コンピュータ上で動作するコンピュータプログラムにより実現される。
【００１１】
１０１は画像処理装置１００の全体の制御を司るＣＰＵである。１０２は、ＣＰＵ１０１の動作処理手順（例えばコンピュータの立ち上げ処理や基本入出力処理等のプログラム）を記憶するＲＯＭである。１０３はＲＡＭであり、ＣＰＵ１０１のメインメモリとして機能する。ＲＡＭ１０３には後述の処理を実現するための制御プログラムを含む各種プログラムがハードディスクドライブ１０５等からロードされ、ＣＰＵ１０１によって実行される。ＲＡＭ１０３は、ＣＰＵ１０１が各種処理を実行する際のワークエリアを提供する。
【００１２】
１０４はディスプレイであり、ＣＰＵ１０１の制御下で各種表示を行なう。１０５はハードディスクドライブ（以下、ＨＤＤ）であり、アプリケーションプログラム、データ及びライブラリなどの保存に用いられる。リラインティん具の対象となる画像データは、ＨＤＤ１０５に格納されている。
【００１３】
１０６はポインティングデバイス及びキーボード等からなる入力装置である。１０７は記憶媒体を着脱可能な記憶媒体装着ユニット（メディアドライブ）である。記憶媒体は例えば、デジタルスチルカメラに着脱可能な、撮影画像を記憶するメモリカードである。
【００１４】
１０８はネットワークインターフェイスであり、通信回線１１０を介してコンピュータネットワーク１１１と接続する。ＣＰＵ１０１は、ネットワークインターフェイス１０８により、コンピュータネットワーク１１１上の機器との間でデータを送受信する。
【００１５】
１０９は、上述した各ユニット間を接続するシステムバスであり、アドレスバス、データバスおよび制御バスからなる。
【００１６】
図２は、画像処理装置１００のユーザインターフェイスの一例である。図２を用いて、ユーザが仮想光源パラメータを設定する方法を説明する。
【００１７】
２０１は、ユーザが画像データのあるフォルダを選択するフォルダ選択エリアである。ＣＰＵ１０１は、ＨＤＤ１０５のフォルダ構成を読みとり、フォルダツリーを表示する。
【００１８】
２０２は、ユーザが選択したフォルダを示すフォルダフォーカス枠である。ユーザが入力装置１０６のポインティングデバイス等で所望のフォルダをクリックした場合、ＣＰＵ１０１は、フォルダフォーカス枠２０２をそのフォルダの位置に描画する。その後、ＣＰＵ１０１は、ＨＤＤ１０５からそのフォルダ内の画像データを読み込む。
【００１９】
２０３は、画像処理結果を表示するプレビューエリアである。２０４は、フォルダ選択エリア２０１でユーザが指定したフォルダ内の画像データを縮小画像で一覧表示するサムネイルエリアである。２０５は、サムネイルエリア２０４内にユーザが選択したフォルダ内の画像データを縮小画像で表示しきれない場合に、表示範囲を変更するためのサムネイルエリアスクロールバーである。サムネイルエリアスクロールバー２０５をユーザが操作すると、ＣＰＵ１０１は、サムネイルエリア２０４の表示領域を変更すべくサムネイルエリア２０４の表示を更新する。
【００２０】
２０６は、ユーザが画像処理対象として選択した画像データを示す画像フォーカス枠である。サムネイルエリア２０４内でユーザが所望の縮小画像を入力装置１０６のポインティングデバイス等でクリックした場合、ＣＰＵ１０１は、ユーザから画像処理対象の画像データ指定があったものと判定する。そして、ＣＰＵ１０１は、画像フォーカス枠２０６をユーザがクリックした位置の縮小画像を囲む形で描画すると共に、その縮小画像に対応する画像データを読み込み、プレビューエリア２０３に表示する。
【００２１】
２０７は、ユーザが画像処理対象として選択した画像データの表示結果例である。２０８は、ユーザが設定した仮想光源を画像データに重畳して表示している例である。
【００２２】
２０９は、光源のオンオフ指定ラジオボタンであり、仮想光源を疑似的に点灯するか否かをＣＰＵ１０１に指示するのに使用される。ユーザがＯＮを押下した場合、ＣＰＵ１０１は、ユーザから仮想光源点灯の操作があったと判定し、仮想光源が点灯しているものとして後述のリライティングを行う。ユーザがＯＦＦを押下した場合、ＣＰＵ１０１は、ユーザから仮想光源消灯の操作があったと判定して、仮想光源が消灯しているものとして、リライティングしない。リライティングの後ではリライティングの効果を消去する。
【００２３】
２１０は、光源種類選択リストボックスである。ユーザが光源種類選択リストボックス２１０の下矢印ボタンを押下すると、光源の種類として、点光源及び面光源がリストされる。そして、ユーザがいずれかを選択した場合、ＣＰＵ１０１はユーザから仮想光源の種類を指定する操作があったと判定して、後述のリライティングを行う。２１１は、光の強さスライダである。ユーザがスライダ２１１のツマミを操作した場合、ＣＰＵ１０１は、ユーザから仮想光源の光の強さの変更操作があったと判定して、つまみの位置に対応する光の強さで、後述のリライティングを行う。
【００２４】
２１２は、光源水平座標値ｌｉｇｈｔ＿ｘを入力する水平座標入力エディットボックスである。仮想光源の水平座標値を数値で指定する。画像の中心座標を０、左方向の座標値を負値、右方向の座標値を正値とする。２１３は、光源垂直座標値ｌｉｇｈｔ＿ｙを入力する垂直座標入力エディットボックスである。仮想光源の垂直座標を数値で指定する。画像の中心座標を０、上方向の座標値を負値、下方向の座標値を正値とする。２１４は、光源奥行き座標値ｌｉｇｈｔ＿ｚを入力する奥行き座標入力エディットボックスである。仮想光源の奥行き座標値を数値で指定する。仮想空間上の撮像装置の位置を０、撮像装置から被写体に近づく方向の座標値を正値、遠ざかる方向の座標値を負値とする。エディットボックス２１２，２１３，２１４で指定された座標値を総称して、以降、仮想光源絶対座標値と記す。
【００２５】
２１５は、水平角度ｌｉｇｈｔ＿ｈを入力する水平角度入力エディットボックスである。仮想光源の撮像装置の撮影光軸に対する水平角度ｌｉｇｈｔ＿ｈを指定する。撮像装置の撮影光軸と平行な場合に０となり、撮影光軸よりも右方向に向いた場合に正値、左方向に向いた場合に負値とする。２１６は、垂直角度ｌｉｇｈｔ＿ｖを入力する垂直角度入力エディットボックスである。撮影光軸と直角に交差する垂直軸に対する角度（垂直角度）ｌｉｇｈｔ＿ｖを指定する。撮像装置の撮影光軸と平行な場合に０となり、上方向に向いた場合に正値、下方向に向いた場合に負値とする。
【００２６】
各エディットボックス２１２〜２１６の初期値は０とする。各エディットボックス２１２〜２１６でユーザが値を指定した場合、ＣＰＵ１０１は、仮想光源の位置変更操作があったものとして、仮想空間上の仮想光源の位置および角度を入力値に応じて変更し、後述のリライティングを行う。
【００２７】
２１７は、光源色温度入力エディットボックスであり、２７００Ｋ〜１００００Ｋまでの値を入力可能とする。エディットボックス２１７の初期値は、白色蛍光ランプの色温度４５００Ｋとする。ユーザが光源色温度入力エディットボックス２１７の値を変更した場合、ＣＰＵ１０１はユーザから仮想光源の色温度の変更操作があったと判定して、指定された光源色温度で後述のリライティングを行う。
【００２８】
ＣＰＵ１０１は、要素２０９〜２１７によりユーザが指定した仮想光源パラメータを、処理対象の画像データと関連付けて、ＲＡＭ１０３に記憶する。いずれかの仮想光源パラメータに変更があった場合、ＣＰＵ１０１は、ＲＡＭ１０３の対応する記憶値を更新する。
【００２９】
２１８は、仮想光源パラメータコピーボタンである。ユーザが仮想光源パラメータコピーボタン２１８を押下した場合、ＣＰＵ１０１は、ユーザから仮想光源パラメータコピー指示があったと判定する。そして、ＣＰＵ１０１は、仮想光源に関して要素２０９〜２１７で指定された各種設定情報を後述の方法で仮想光源パラメータを相対位置に変換して、ＲＡＭ１０３に記憶する。
【００３０】
２１９は、仮想光源パラメータペーストボタンである。ユーザが仮想光源パラメータペーストボタン２１９を押下した場合、ＣＰＵ１０１は、ユーザから仮想パラメータペースト指示があったと判定する。そして、ＣＰＵ１０１は、ＲＡＭ１０３に仮想光源パラメータが格納されている場合、後述の方法でその仮想光源パラメータを絶対座標に変換し、その後、処理対象の画像データに対してリライティングを行う。
【００３１】
２２０から２２４は、処理前または処理後の説明例の画像データである。例えば、画像データ２２０に対して仮想光源によるライティングした後に画像データ２２１に対して同様のライティング効果を得たいとする。この場合、ユーザは、画像データ２２０を選択した状態で仮想光源パラメータコピーボタン２１８を押下し、その後、画像データ２２１を選択し、仮想光源パラメータペーストボタン２１９を押下する。仮想光源パラメータのペースト先の画像データが、画像データ２２２，２２３のように複数の顔を含む場合、各顔に対してコピー元と同様のリライティングが適用される。仮想光源パラメータコピー処理および仮想光源パラメータペースト処理については、後述する。
【００３２】
２２５は、終了ボタンである。ユーザが終了ボタン２２５を押下した場合、ＣＰＵ１０１は、ユーザから終了指示があったと判定し、ＲＡＭ１０３に記憶している情報を破棄した後、画像処理装置１００による画像処理を終了する。
【００３３】
図３は、ある画像データに設定された仮想光源パラメータに基づき他の画像に同様のライティングを施す本実施例の動作フローチャートである。ＣＰＵ１０１が、ＲＡＭ１０３に格納される制御プログラムを実行することにより、図３に示す処理を実現する。
【００３４】
ステップＳ３００で、ＣＰＵ１０１は、処理対象とする画像データと、その画像データと関連付けられた関連情報を読み込む。関連情報は、距離マップとして表現される、撮像時の撮像装置と被写体との間の距離情報を含む。距離マップは、処理対象として選択された画像データの撮像時に、被写体像の各画素に対して撮像素子から被写体までの物理的な距離を数値化した画像データである。距離マップは、撮像装置において、ぼけ方の異なる複数の画像から被写体距離を算出して生成され、画像データの関連情報として画像データと共に記憶媒体に記録される。距離マップの代わりに、ステレオカメラによる写真測量またはスポット光の照射もしくは走査による３次元計測などで得られる３次元形状データを使っても良い。
【００３５】
ステップＳ３０１で、ＣＰＵ１０１は、ＲＡＭ１０３から仮想光源パラメータを読み込む。仮想光源パラメータは、光のオンオフ情報、光源種類、光の強さ、仮想光源の位置、角度及び光源色温度の各設定値からなる。ユーザがサムネイルエリア２０４で未調整の画像データを選択した場合、ＣＰＵ１０１は、初期値を読み込む。ユーザが要素２０９〜２１７で仮想光源パラメータを変更している場合、ＣＰＵ１０１は、変更後の仮想光源パラメータを読み込む。ユーザが仮想光源パラメータペーストボタン２１９を押下したとき、ＣＰＵ１０１は、ペースト処理で算出した仮想光源パラメータを読み込む。
【００３６】
ステップＳ３０２で、ＣＰＵ１０１は、処理対象となる画像データの被写体像内に含まれる人物の顔を検出する。ＣＰＵ１０１はまず、顔の個数を検出し、検出した各顔に０から順のユニークな顔ＩＤを割り振る。ＣＰＵ１０１は、顔ＩＤに対応付けられて、顔の中心座標、顔の大きさ、顔の角度及び顔向きを決定する。顔の中心座標値は、仮想光源の絶対座標と同じ座標系で出力される。
【００３７】
ステップＳ３０３で、ＣＰＵ１０１は、カウンタｉに０を代入する。カウンタｉは、ステップＳ３０５からＳ３０８までの処理を、顔の個数分繰り返すためのループ変数である。
【００３８】
ステップＳ３０４で、ＣＰＵ１０１は、カウンタｉが顔の個数よりも小さい値か否かを判定する。カウンタｉが顔の個数よりも小さい値の場合、ＣＰＵ１０１は、ステップＳ３０５に進む。カウンタｉが顔の個数以上の値の場合、ＣＰＵ１０１は、ステップＳ３０５〜Ｓ３０８の処理を顔の個数分繰り返したと判定し、ステップＳ３０９に進む。
【００３９】
ステップＳ３０５で、ＣＰＵ１０１は、顔ＩＤがｉの顔に関して、撮像素子からの物理的距離を算出する。物理距離算出の為に、ＣＰＵ１０１は、距離マップから顔の中心座標までの距離を取得する。
【００４０】
ステップＳ３０６で、ＣＰＵ１０１は、顔ＩＤがｉの顔の顔器官を検出する。顔器官は、左右の目、鼻及び口である。ＣＰＵ１０１は、顔器官の検出結果として、各顔器官の２次元の画像データ上での左右の端、及び、上下の端に該当する座標を出力する。
【００４１】
ステップＳ３０７で、ＣＰＵ１０１は、顔器官の検出結果から、顔の法線情報を生成する。ＣＰＵ１０１は、被写体像の仮想空間上で顔の凹凸をシミュレートした結果から、顔の向き、則ち、顔の法線を決定する。ＣＰＵ１０１は、顔の向きから既定のマスクに最も近いマスクを選択し、顔の大きさと顔器官の位置に合わせて、当該マスクを正面向きに変形する。
【００４２】
ステップＳ３０８で、ＣＰＵ１０１は、ステップＳ３０７で算出した顔法線情報を顔ＩＤがｉの顔法線情報としてＲＡＭ１０３に記憶する。
【００４３】
ステップＳ３０９で、ＣＰＵ１０１は、ＲＡＭ１０３から顔ＩＤが０〜ｉまでの顔法線情報を読み込み、各顔の距離に合わせて距離マップの各顔の位置に合成し、顔の部分の距離精度が高い距離マップを生成する。
【００４４】
ステップＳ３１０で、ＣＰＵ１０１は、仮想光源パラメータに基づいて出力画像データを生成する。仮想光源によって照射された処理対象の出力ＲＧＢ値（Ｒｏｕｔ，Ｇｏｕｔ，Ｂｏｕｔ）は、下記式（１）で得られる。すなわち、
Rout=[Rt+A×cos(θ)×(1/D^2)×Rv]/M
Gout=[Gt+A×cos(θ)×(1/D^2)×Gv]/M      （１）
Bout=[Bt+A×cos(θ)×(1/D^2)×Bv]/M
ここで、（Ｒｔ，Ｇｔ，Ｂｔ）は処理対象の入力画素値、Ａは仮想光源の強度、Ｄは仮想光源とリライティング処理対象の被写体との距離、（Ｒｖ，Ｇｖ，Ｂｖ）は光源反射色を示す。Ｍは、リライティング後の出力ＲＧＢ値を正規化するための予め設定された定数を示す。角度θは、仮想光源の照射方向と処理対象画素の被写体の法線ベクトルとがなす角度を示す。
【００４５】
処理対象の入力画素値（Ｒｔ，Ｇｔ，Ｂｔ）は、ステップＳ３００で読み込んだ画像データを構成する画素値である。仮想光源の強度Ａは、光の強さスライダ２１１でユーザが指定する値である。ペースト時の強度は後述する。
【００４６】
ＣＰＵ１０１は、仮想光源とリライティング処理対象の被写体との距離Ｄを、ステップＳ３０９で算出した各画素の位置と仮想光源の絶対座標（ｌｉｇｈｔ＿ｘ，ｌｉｇｈｔ＿ｙ，ｌｉｇｈｔ＿ｚ）から算出する。距離Ｄは、下記式（２）に従い算出される。すなわち、
D={(tP_x-light_x)2+(tP_y-light_y)2+(tP_z-light_z)2}1/2      （２）
ここで、（ｔＰ＿ｘ，ｔＰ＿ｙ，ｔＰ＿ｚ）は対象画像の座標位置を示す。
【００４７】
光源反射色（Ｒｖ，Ｇｖ，Ｂｖ）は、光源色温度入力エディットボックス２１７でユーザが指定する光源色温度に応じて決定される。色温度の値が低いほど、赤みがかった反射色となり、色温度が高いほど、青みがかった反射色となる。ＣＰＵ１０１は、公知の変換テーブルを参照して、光源色温度を光源反射色（Ｒｖ，Ｇｖ，Ｂｖ）に変換する。
【００４８】
ＣＰＵ１０１は、仮想光源の絶対位置と角度から仮想光の処理対象への照射方向を特定し、この照射方向と、ステップＳ３０９で算出した各画素の仮想空間上での法線ベクトルとから、角度θを算出する。
【００４９】
図４は、仮想光源が点光源の場合の、法線ベクトルと仮想光源照射方向との関係を示す概念図である。４０１は、仮想光源である。４０２は、仮想空間上の処理対象画素である。４０３は、処理対象画素４０２に仮想光源から照射された光の照射方向を示す直線である。点光源である仮想光源４０１は、出力光を放射状に照射するものとする。４０４は、処理対象画素４０２における法線ベクトルである。４０５は、法線ベクトル４０４と照射方向４０３が成す角度であり、処理対象画素４０２への入射角度θである。
【００５０】
図５は、仮想光源が面光源の場合の、法線ベクトルと仮想光源照射方向との関係を示す概念図である。５０１は、仮想光源である。仮想光源の位置を示す座標は、仮想光源５０１となる面光源の中央座標を示す。５０２は、仮想空間上の処理対象画素である。５０３は、処理対象画素５０２に仮想光源から照射された光の照射方向を示す直線である。面光源である仮想光源５０１は、その出力面から垂直に光を照射するものとする。５０４は、処理対象画素５０２における法線ベクトルである。５０５は、法線ベクトル５０４と照射方向５０３が成す角度であり、処理対象画素５０２への入射角度θである。
【００５１】
図６は、仮想光源パラメータのコピー処理のフローチャートである。ＣＰＵ１０１は、ＲＡＭ１０３に格納された制御プログラムを実行することにより、図６に示す処理を実現する。図６を用いて、仮想光源パラメータのコピー処理において、絶対座標でＲＡＭ１０３に記憶されている仮想光源位置を顔に対する相対位置に変換する方法を説明する。
【００５２】
ステップＳ６０１で、ＣＰＵ１０１は、ユーザが仮想光源パラメータのコピー操作をしたか否かを判定する。ユーザが仮想光源パラメータコピーボタン２１８を押下した場合、ＣＰＵ１０１は、コピー操作をしたと判定し、ステップＳ６０２に進む。ユーザが仮想光源パラメータコピーボタン２１８を押下していない場合、ＣＰＵ１０１は、コピー操作がないと判定し、図６に示す処理を終了する。
【００５３】
ステップＳ６０２で、ＣＰＵ１０１は、主被写体の顔の位置を読み込む。以降、主被写体の顔のことを主顔と記す。被写体像に顔が１つであった場合、ＣＰＵ１０１は、その顔を主顔とする。被写体像に複数の顔が存在する場合、ＣＰＵ１０１は、合焦距離に存在する顔の中で最も大きい顔を主顔とする。ステップＳ３０２およびステップＳ３０５での算出結果に従い、主顔の位置は予めＲＡＭ１０３に記憶されている。
【００５４】
ステップＳ６０３で、ＣＰＵ１０１は、ＲＡＭ１０３に記憶されている仮想光源絶対座標と主顔の位置から、主顔に対する相対座標を算出する。仮想光源の相対座標（ｒｅＬｉｇｈｔ＿ｘ，ｒｅＬｉｇｈｔ＿ｙ，ｒｅＬｉｇｈｔ＿ｚ）は、下記式３により算出される。則ち、
reLight_x=sFace_x-sLight_x
reLight_y=sFace_y-sLight_y      （３）
reLight_z=sFace_z-sLight_z
ただし、パラメータコピー元の画像における仮想光源絶対座標を（ｓＬｉｇｈｔ＿ｘ，ｓＬｉｇｈｔ＿ｙ，ｓＬｉｇｈｔ＿ｚ）とし、主顔の中心座標を（ｓＦａｃｅ＿ｘ，ｓＦａｃｅ＿ｙ，ｓＦａｃｅ＿ｚ）とする。
【００５５】
ステップＳ６０４で、ＣＰＵ１０１は、コピーされた仮想光源パラメータをＲＡＭ１０３に記憶する。その際、ＣＰＵ１０１は、仮想光源パラメータを構成する仮想光源の位置については、ステップＳ６０３で算出した相対座標を記憶する。それ以外の仮想光源パラメータに関しては、ＣＰＵ１０１は、コピー元の画像データに適用されている値をそのまま記憶する。コピーされた仮想光源パラメータは、ユーザが異なる画像データを選択して、仮想光源パラメータコピーボタン２１８を押下するまで、または画像処理装置１００が終了するまで、ＲＡＭ１０３に保持される。
【００５６】
図７は、仮想光源パラメータのペースト処理を示すフローチャートである。ＣＰＵ１０１は、ＲＡＭ１０３に格納された制御プログラムを実行することにより、図７に示す処理を実現する。図７を用いて、仮想光源パラメータのペースト処理において、仮想光源相対座標をペースト先の画像の被写体像の仮想空間内における絶対座標に変換する方法を説明する。
【００５７】
ステップＳ７００で、ＣＰＵ１０１は、ユーザが仮想光源パラメータのペースト操作をしたか否かを判定する。ユーザが仮想光源パラメータペーストボタン２１９を押下した場合、ＣＰＵ１０１は、ペースト操作をしたと判定し、ステップＳ７０２に進む。ユーザが仮想光源パラメータペーストボタン２１９を押下していない場合、ＣＰＵ１０１は、ペースト操作は無かったと判定し、図７に示す処理を終了する。
【００５８】
ステップＳ７０１で、ＣＰＵ１０１は、ＲＡＭ１０３内にコピーされた仮想光源パラメータがあるか否かを判定する。ある場合、ＣＰＵ１０１は、ステップＳ７０２に進む。ない場合、ＣＰＵ１０１は、ステップＳ７０８に進む。
【００５９】
ステップＳ７０２で、ＣＰＵ１０１は、ＲＡＭ１０３内からコピーされた仮想光源パラメータを読み込む。
【００６０】
ステップＳ７０３で、ＣＰＵ１０１は、ペースト先の画像における主顔の位置と距離を取得する。取得方法は、ステップＳ３０２およびステップＳ３０５と同様である。ＣＰＵ１０１は、取得した主顔の位置と距離を、ライティングに備えてＲＡＭ１０３（またはＨＤＤ１０５）に保存する。
【００６１】
ステップＳ７０４で、ＣＰＵ１０１は、仮想光源位置として記憶されている相対座標をペースト先の画像における絶対座標に変換する。仮想光源絶対座標（ｔＬｉｇｈｔ＿ｘ，ｔＬｉｇｈｔ＿ｙ，ｔＬｉｇｈｔ＿ｚ）は、下記式（４）におより算出される。すなわち、
tLight_x=tFace_x-reLight_x
tLight_y=tFace_y-reLight_y      （４）
tLight_z=tFace_z-reLight_z
ただし、主顔の中心座標を（ｔＦａｃｅ＿ｘ，ｔＦａｃｅ＿ｙ，ｔＦａｃｅ＿ｚ）、仮想光源の相対座標（ｒｅＬｉｇｈｔ＿ｘ，ｒｅＬｉｇｈｔ＿ｙ，ｒｅＬｉｇｈｔ＿ｚ）とする。
【００６２】
ステップＳ７０５で、ＣＰＵ１０１は、ペースト先の画像と関連付けて、ステップＳ７０２で参照した仮想光源パラメータをコピーする。そして、ＣＰＵ１０１は、仮想光源パラメータを構成する光源の位置を、ステップＳ７０４で算出した絶対座標に変更する。これにより、ペースト先の画像の顔に対して、コピー元の画像の顔に対するのと同じ相対位置に、仮想光源を配置できる。
【００６３】
ステップＳ７０６で、ＣＰＵ１０１は、ペースト先の画像に対してライティングを実行する。ステップＳ７０７で、ＣＰＵ１０１は、プレビューエリア２０３とサムネイルエリア２０４の対象画像の表示をライティング結果による出力画像データで更新する。ステップＳ７０７の後、ＣＰＵ１０１は、図７に示す処理を終了する。
【００６４】
ステップＳ７０８で、ＣＰＵ１０１は、ペーストする仮想光源パラメータがない旨をユーザに通知する警告を表示し、図７に示す処理を終了する。
【００６５】
図８は、ＣＰＵ１０１がステップＳ３０２およびステップＳ３０５で顔検出した結果の一例である。ＣＰＵ１０１は、この顔検出結果をＲＡＭ１０３（またはＨＤＤ１０５）に格納する。
【００６６】
８０１は、検出した顔を一意に特定するための顔Ｎｏである。顔Ｎｏ８０１は、複数画像から検出した結果の顔毎にインクリメントされた連続番号からなる。複数画像から検出した複数の顔を管理するために用いる。
８０２は、顔検出を行った画像データのファイル名である。
８０３は、主顔かどうかの判定結果である。主顔かどうかの判定方法は前述の通りである。
８０４は、顔ＩＤである。対象となる画像データ毎に０から割り振られる値からなる。
８０５は、画像データにおける水平方向の顔の中心座標である。８０６は、画像データにおける垂直方向の顔の中心座標である。８０７は、顔の距離である。撮像素子から被写体の顔の物理的な距離を数値化したものである。
８０８は、画像データにおける顔の大きさである。
８０９は、撮像装置の光軸を軸とした顔の角度である。
８１０は、顔の向きである。顔の正面が撮像装置の方向を向いている場合に０となる。
【００６７】
８１１から８１７は顔毎の検出結果例を示すエントリまたはレコードである。エントリ８１１は、画像例２２０に対する結果を示す。エントリ８１２は画像例２２１に対する結果を示す。エントリ８１３，８１４は、画像例２２２に対する結果を示す。エントリ８１５，８１６は、画像例２２３に対する結果を示す。エントリ８１７は、画像例２２４に対する結果を示す。
【００６８】
上記説明では、リライティングの処理工程および仮想光源パラメータペースト処理工程において顔を検出した。この代わりに、フォルダ選択エリア２０１で処理対象となる画像データが含まれるフォルダが選択された時点で、顔検出および顔距離取得をしてもよい。この場合、リライティング処理工程および仮想光源パラメータペースト処理における顔検出および顔距離取得は、顔検出結果読み込み処理で代替できる。
【００６９】
上記説明では、合焦時に用いた測距離枠位置から主顔を決定したが、ユーザ指示またはユーザが仮想光源を設定したときに一番近くの顔を主顔にするようにしてもよい。こうすることにより、ユーザが主被写体と指定した顔や一番手間をかけて輝度を調整した顔に対する疑似的なライティング処理を、他の画像の顔に適用できる。
【００７０】
上記説明では、仮想光源パラメータをコピーする際に、相対位置に変換した仮想光源パラメータをＲＡＭ１０３に記憶した。この代わりに、ＨＤＤ１０５に画像ファイルとは別ファイルとして記憶してもよいし、画像ファイルのヘッダまたはフッダに付与して記憶してもよい。この場合、コピー元の画像ファイルとペースト先の画像ファイルが異なる機器間でも、ファイルを介して同様のリライティング処理を行うことが可能となる。
【００７１】
仮想光源が１つの場合を説明したが、これは理解を容易にするためである。複数の仮想光源を利用できる場合でも、コピー元の画像の主顔に対する相対位置とペースト先の主顔に対する相対位置が同じになるように、個々の光源位置を変換することで、同様のリライティング処理を行うことが可能である。
【００７２】
本実施例によれば、被写体像の平面上の位置だけではなく、撮像素子から被写体の顔までの物理的な距離も算出する。これにより、仮想光源パラメータコピー元の画像（第１の画像）に含まれる顔と、仮想光源パラメータペースト先の画像（第２の画像）に含まれる顔とで奥行き方向の位置が異なっても、第２の画像に第１の画像と同様のライティング効果を与えることができる。
【００７３】
第２の画像に複数の顔が含まれていても、その中で主顔を特定し、第１の画像の主顔と仮想光源の相対位置が同じになるように第２の画像の主顔における仮想光源位置を決定する。これにより、第１の画像に含まれる主顔と同様のライティングを第２の画像の主顔に適用できる。第１及び第２の画像における主顔の向きをも加味して、第２の画像の主顔に対する仮想光源位置を決定しても良い。こうすることで、第１の画像の主顔に対するのと同じ照射方向のライティングを第２の画像の主顔に適用できる。
【００７４】
第１の画像に対する仮想光源パラメータをコピーする際に位置情報を相対値に変換した上でコピーし、第２の画像に対してペーストの際に主顔と同じ座標上の絶対値に変換するので、第２の画像に対して同じライティング環境を実現できる。コピーした仮想光源のパラメータを保持することにより、複数の第２の画像に対して同じライティング環境を実現できる。
【実施例２】
【００７５】
仮想光源パラメータのペースト先の画像の複数の顔のそれぞれにコピー元と同じライティングを実現する実施例２を説明する。図９は、その動作フローチャートを示す。ＣＰＵ１０１が、ＲＡＭ１０３に格納される制御プログラムを実行することにより、図９に示す処理を実現する。例えば、仮想光源パラメータのコピー先の画像における各顔に、ステップＳ７０２〜Ｓ７０６で説明した処理を適用する。
【００７６】
なお、図９に示す処理を実行する前の仮想光源パラメータコピー時に、ＣＰＵ１０１は、コピー元の画像における、主顔のリライティング前の顔輝度とリライティング後の顔輝度を、予めＲＡＭ１０３に記憶しておく。以降、リライティング前の顔輝度を基準顔輝度、リライティング後の顔輝度を目標顔輝度と記す。基準顔輝度は、リライティング前の画像データにおける顔位置の平均輝度とする。目標顔輝度は、リライティング後の画像データにおける顔位置の平均輝度とする。ＣＰＵ１０１は、基準顔輝度と目標顔輝度をステップＳ６０３とＳ６０４の間で求め、ステップＳ６０４において、仮想光源パラメータと共に、ＲＡＭ１０３に記憶する。
【００７７】
ステップＳ９０１，Ｓ９０２，Ｓ９０３の処理はそれぞれ、ステップＳ７０２，Ｓ３０２，Ｓ３０３と同様なので、説明を省略する。
【００７８】
ステップＳ９０４で、ＣＰＵ１０１は、カウンタｉが顔数ＦａｃｅＮｕｍよりも小さい値か否かを判定する。カウンタｉが顔数ＦａｃｅＮｕｍよりも小さい値の場合、ＣＰＵ１０１は、ステップＳ９０５に進む。カウンタｉが顔数ＦａｃｅＮｕｍ以上の値の場合、ＣＰＵ１０１は、ステップＳ９０５からＳ９１２までの処理を顔数ＦａｃｅＮｕｍだけ繰り返したと判定し、ステップＳ９１３に進む。ステップＳ９０５からＳ９０７の処理は、ステップＳ３０５からＳ３０７の処理と同様なので、詳細な説明を省略する。
【００７９】
ステップＳ９０８で、ＣＰＵ１０１は、顔ＩＤがｉである顔に関して顔の輝度を取得する。ＣＰＵ１０１はまず、顔の中心座標および顔の大きさから、注目する顔の含まれる画像データの範囲を算出し、算出した範囲の平均輝度を顔の輝度とする。
【００８０】
ステップＳ９０９で、ＣＰＵ１０１は、仮想光源位置として記憶されている相対座標を、顔ＩＤがｉである顔に対して仮想光源の相対位置が同じになるように絶対座標に変換する。仮想光源絶対座標（ｔＬｉｇｈｔ＿ｘ，ｔＬｉｇｈｔ＿ｙ，ｔＬｉｇｈｔ＿ｚ）は、先に説明した式（４）で算出できる。式（４）において、顔ＩＤがｉの顔の中心座標を（ｔＦａｃｅ＿ｘ，ｔＦａｃｅ＿ｙ，ｔＦａｃｅ＿ｚ）とし、仮想光源の相対座標（ｒｅＬｉｇｈｔ＿ｘ，ｒｅＬｉｇｈｔ＿ｙ，ｒｅＬｉｇｈｔ＿ｚ）とする。
【００８１】
ステップＳ９１０で、ＣＰＵ１０１は、顔ＩＤがｉである顔についてライティング後の顔輝度が目標顔輝度と同じになる、仮想光源の光強度を算出する。目標輝度と同じになる光強度ｏｕｔＡは、式（５）により算出でできる。すなわち、
outA = (tLumi-b2Lumi)×inA/(tLumi-b1Lumi)      （５）
ただし、基準顔輝度をｂ１Ｌｕｍｉとし、目標顔輝度をｔＬｕｍｉとし、ステップＳ９０１で読み込んだ仮想光源パラメータの光強度をｉｎＡ、ステップＳ９０８で取得した顔輝度をｂ２Ｌｕｍｉとする。ステップＳ９０８で取得した顔輝度ｂ２Ｌｕｍｉが目標顔輝度ｔＬｕｍｉよりも大きい場合、光強度ｏｕｔＡを０にする。
【００８２】
ステップＳ９１１で、ＣＰＵ１０１は、顔ＩＤがｉである顔に対して、ステップＳ９０９で算出した光源絶対座標とステップＳ９１０で算出した光強度を用いて、出力画像を生成する。出力画像の算出方法は、ステップＳ３１０と同様であるので、詳細な説明を省略する。
【００８３】
ステップＳ９１２で、ＣＰＵ１０１は、顔ＩＤがｉであることと、ステップＳ９１２で生成した出力画像を関連付けてＲＡＭ１０３に記憶する。
【００８４】
ステップＳ９１３で、ＣＰＵ１０１は、顔ＩＤ＝０から顔ＩＤ＝（ＦａｃｅＮｕｍ-１）に関連付けられた出力画像を、各顔の元々の位置で合成する。
【００８５】
実施例２では、仮想光源パラメータのペースト先の画像（第２の画像）に含まれる各顔に対して、仮想光源パラメータのコピー元の画像（第１の画像）の主顔に対するのと同じ相対関係で仮想光源を設定して同じライティングを適用できる。
【００８６】
第２の画像に第１の画像の主顔と同じ顔が含まれる場合、第２の画像のその顔には、第１の画像の主顔と同じ照射方向でのライティングを適用するようにしてもよい。
【００８７】
また、第１の画像の主顔の輝度と、第２の画像に含まれる各顔の輝度の違いに応じて、仮想光源の光強度を変更するので、第２の画像の各顔について、輝度が同じになるライティングを適用できる。加えて、ストロボ発光撮影において撮像装置から遠い顔ほど顔輝度が暗くなってしまっている場合にも、暗い顔ほど仮想光源の光強度が強くなるので、暗い顔ほど明るくなるという明るさ補正の効果も得られる。
【００８８】
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。上述の実施形態の一部を適宜組み合わせてもよい。
【００８９】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2018010498.tif 000003
【図２】
2018010498.tif 000004
【図３】
2018010498.tif 000005
【図４】
2018010498.tif 000006
【図５】
2018010498.tif 000007
【図６】
2018010498.tif 000008
【図７】
2018010498.tif 000009
【図８】
2018010498.tif 000010
【図９】
2018010498.tif 000011