(57)【要約】      （修正有）【課題】撮像画像から所望の照明条件下で撮影したかのような別の画像を生成する画像処理装置において、容易に照明の位置と姿勢を設定可能にするプログラムを提供する。【解決手段】表示画面上に表示された画像データに対して仮想照明を用いてライティング処理する画像処理装置２０９であって、画像データ内の被写体を特定する特定手段３０３と、被写体の位置を示す位置情報を取得する取得手段と、被写体の位置情報に基づいて、仮想照明の位置を設定可能な可動範囲を設定する設定手段３０５と、ユーザにより入力される表示画面上の指示位置を取得する指示位置取得手段３０４と、可動範囲と指示位置とに基づいて、照明の位置を決定する決定手段と、決定手段により決定された仮想照明の位置に基づいて、画像データにおける被写体に対してライティング処理をするライティング処理手段３０４とを有する。【選択図】図３
2015201839.tif 000002
【特許請求の範囲】
【請求項１】
表示画面上に表示された画像データに対して仮想照明を用いてライティング処理する画像処理装置であって、
前記画像データ内の被写体を特定する特定手段と、
前記被写体の位置を示す位置情報を取得する取得手段と、
前記被写体の位置情報に基づいて、前記仮想照明の位置を設定可能な可動範囲を設定する設定手段と、
ユーザにより入力される表示画面上の指示位置を取得する指示位置取得手段と、
前記可動範囲と前記指示位置とに基づいて、前記照明の位置を決定する決定手段と、
前記決定手段により決定された仮想照明の位置に基づいて、前記画像データにおける被写体に対してライティング処理をするライティング処理手段とを有することを特徴とする画像処理装置。
【請求項２】
前記設定手段は、前記被写体の形状情報に基づいて、前記可動範囲の大きさを設定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記指示位置手段により取得した第１の指示位置に対応する前記仮想照明の第１の位置と、前記第１の指示位置とは異なる第２の指示位置に対応する前記仮想照明の第２の位置との移動量は、前記被写体位置に応じて異なることを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記設定手段は、前記被写体の位置情報に対応する座標位置を中心とし、前記被写体の形状情報に基づいて設定される半径を有する楕円体を、前記仮想照明の可動範囲として設定することを特徴とする請求項２に記載の画像処理装置。
【請求項５】
前記設定手段は、前記被写体の大きさに基づいて前記仮想照明の可動範囲の大きさを設定することを特徴とする請求項１乃至４の何れか一項に記載の画像処理装置。
【請求項６】
前記決定手段はさらに、前記指示位置に基づいて、前記仮想照明の向きを決定することを特徴とする請求項１乃至５のいずれか一項に記載の画像処理装置。
【請求項７】
前記指示位置取得手段は、ユーザからのドラッグ操作を受け付け、前記ドラッグ操作の終了位置を前記指示位置として取得することを特徴とする請求項１乃至６の何れか一項に記載の画像処理装置。
【請求項８】
前記指示位置取得手段は、ユーザからのドラッグ操作を受け付け、一定期間ごとにユーザによるタッチ位置を検出した結果を、前記指示位置として取得することを特徴とする請求項１乃至６の何れか一項に記載の画像処理装置。
【請求項９】
コンピュータに読み込ませ実行させることで、前記コンピュータを請求項１乃至８の何れか一項に記載された画像処理装置として機能させることを特徴とするプログラム。
【請求項１０】
表示画面上に表示された画像データに対して仮想照明を用いてライティング処理する画像処理方法あって、
前記画像データにおける被写体を特定し、
前記被写体の位置を示す位置情報を取得し、
前記被写体の位置情報に基づいて、前記仮想照明の位置を設定可能な可動範囲を設定し、
ユーザにより入力される表示画面上の指示位置を取得し、
前記可動範囲と前記指示位置とに基づいて、前記照明の位置を決定し、
前記決定手段により決定された仮想照明の位置に基づいて、前記画像データにおける被写体に対してライティング処理をすることを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像画像において、撮像画像の照明条件とは異なる仮想的な照明条件下で撮影したかのような画像を生成する画像処理に関する。
【背景技術】
【０００２】
撮像装置が被写体を撮影する場合、被写体に対する照明（光）によって撮影画像は大きく変わる。例えば、被写体が人の場合、被写体に対して斜めから光が当たる照明条件下では、被写体の顔の陰影が強調され立体的な印象の撮像画像が得られる。一方、被写体の後方から当たる光が強い逆光などの照明条件下では、被写体の一部あるいは全体が陰になり暗くなった撮像画像が得られる。後者のように被写体が暗く写ってしまった撮影画像を補正して、撮影者が所望する照明条件下で被写体を撮影したかのような別の画像を生成する方法がある。特許文献１は、被写体のモデルデータを用いて仮想的な照明条件で撮影された被写体画像を生成し、これを撮影画像中の被写体領域に配置することにより、撮像画像における被写体に対する照明を補正する方法を開示している。この際、仮想的な照明条件は、あらかじめ所定の位置に配置された複数の照明の明るさをそれぞれ調整することにより設定される。
【０００３】
また特許文献２は、仮想的な照明が加えられたように撮影画像に擬似的なライティング処理を行う方法を開示している。具体的には、撮像画像における仮想的な照明のライティング強度を、被写体像の輝度の最大値に基づいて決定する。この際、予め設定したライティング方向に従ってガウス分布を偏らせることにより、仮想的に所望の方向から照明を与えたような画像を得ることができる。
【０００４】
また特許文献３は、撮影空間内の模擬形状と仮想的な照明器具の位置や方向を設定することで、仮想的な照明器具が照射した画像方法を開示している。この際、照明器具の位置や方向がキーボード操作等によって入力する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１１３２９号公報
【特許文献２】特開２０１０−１３５９９６号公報
【特許文献３】特開平４−３０１３０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ユーザは撮像画像における被写体の照明を調整したい場合、仮想照明の位置や姿勢を変更しながら被写体が好みの状態になるよう調整する場面が想定される。しかしながら特許文献１や特許文献２は、三次元的な仮想照明の位置を調整することができない。また、特許文献３に開示された方法によれば、仮想照明の位置と姿勢を撮影者が設定する場合、仮想照明の位置を示すｘ、ｙ、ｚ軸方向の座標値と、仮想照明の姿勢を示す各軸回りの回転量とを設定しなければならない。このため、ユーザは仮想照明の位置と姿勢を調整するためその都度複数のパラメータを設定する必要があった。
【０００７】
そこで本発明は、撮像画像における被写体に対して仮想的な照明条件下で撮像したかのような別の画像を生成する際に、容易に照明の位置や姿勢を設定可能な画像処理装置を実現することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため本発明は、表示画面上に表示された画像データに対して仮想照明を用いてライティング処理する画像処理装置であって、前記画像データ内の被写体を特定する特定手段と、前記被写体の位置を示す位置情報を取得する取得手段と、前記被写体の位置情報に基づいて、前記仮想照明の位置を設定可能な可動範囲を設定する設定手段と、ユーザにより入力される表示画面上の指示位置を取得する指示位置取得手段と、前記可動範囲と前記指示位置とに基づいて、前記照明の位置を決定する決定手段と、前記決定手段により決定された仮想照明の位置に基づいて、前記画像データにおける被写体に対してライティング処理をするライティング処理手段とを有することを特徴とする。
【発明の効果】
【０００９】
本発明は、撮像画像から所望の照明条件下で撮影したかのような別の画像を生成する画像処理装置において、容易に照明の位置と姿勢を設定可能にする事ができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態１に係る画像処理装置の外観を示す図
【図２】実施形態１に係る画像処理装置の内部構成を示す図
【図３】実施形態１に係る画像処理部の構成を示すブロック図
【図４】実施形態１に係る処理の流れを示すフローチャート
【図５】実施形態１に係る画像データの例を示す図
【図６】実施形態１に係る照明位置の制御方法を示す図
【図７】実施形態１に係る照明パラメータ設定処理の流れを示すフローチャート
【図８】実施形態１に係る選択領域の例を示す図
【図９】実施形態１に係る照明パラメータ設定方法の例を示す図
【図１０】実施形態１に係る照明の移動方法の例を示す図
【図１１】実施形態１に係る照明の移動処理の例を示す図
【図１２】実施形態１に係る照明の移動処理の例を示す図
【図１３】実施形態１に係る表示画像の例を示す図
【図１４】実施形態２に係る可動範囲設定処理の流れを示すフローチャート
【図１５】実施形態２に係る曲面当てはめの例を示す図
【図１６】実施形態２に係る照明パラメータの設定結果の例を示す図
【発明を実施するための形態】
【００１１】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下の実施例において示す構成は一例にすぎず、本発明は図示された構成に限定されるものではない。
【００１２】
［第１実施形態］
＜撮像装置の外観＞
図１は、本実施形態に適用可能な撮像装置の外観を示す図である。本実施形態では撮像装置を構成する一例として、デジタルカメラの構成例を示す。なお、デジタルカメラについて述べるが、これに限られない。例えば、携帯電話やタブレットデバイス、パーソナルコンピュータなどの情報処理装置であっても良いし、カメラ付き携帯電話等の撮像装置として構成されていても良い。図１（ａ）は撮像装置の正面、図１（ｂ）は背面の外観を示している。撮像装置１０１は、光学部１０２、撮像ボタン１０３、ストロボ１０４、距離画像取得部１０５、表示部１０６、および操作ボタン１０７を有する。
【００１３】
光学部１０２はズームレンズ、フォーカスレンズ、ブレ補正レンズ、絞り、およびシャッターによって構成される鏡筒であり、被写体の光情報を集光する。撮像ボタン１０３は、ユーザが撮像の開始を撮像装置１０１に指示するためのボタンである。ストロボ１０４は、ユーザ指示に従い撮像の開始に合わせて発光する。距離画像取得部１０５は、撮像指示に応じて被写体の距離画像データを取得する。本実施形態において距離画像データは、撮像装置を基準とした被写体までの距離を示す情報を保持するデータである。
【００１４】
表示部１０６は、液晶ディスプレイなどが用いられており、撮像装置１０１が処理した画像データや他の各種データなどを表示する。本実施形態では光学ファインダを設けていないので、ユーザは表示部１０６を用いてフレーミング操作（ピントや構図の確認）を行う。ユーザは表示部１０６が表示するライブビュー画像を確認しながら撮像を行うので、このフレーミングやフォーカシングの操作を行っている間、表示部１０６は電子ファインダとして機能すると言える。表示部１０６には、撮像範囲をリアルタイムに表示するライブビュー表示を行う他、カメラ設定メニューを表示する。
【００１５】
操作ボタン１０７は、ユーザ操作を取得するためのボタンである。具体的には表示部１０６が表示するカメラ設定メニューに対して、撮像モードの切り換え操作や、撮像時の各種パラメータなどをユーザが指示するためのボタンである。なお、本実施形態では撮影モードの一つとしてライティング処理モードを含む。ユーザは操作ボタン１０７、あるいは撮像ボタン１０３を用いてライティング処理モードの切り替え、照明パラメータの設定、距離画像データ出力モードの切り替え、被写体領域の選択等を指示することができるものとする。なお、表示部１０６がタッチスクリーン機能を有していても良く、その場合はタッチスクリーンを用いたユーザ指示を操作ボタン１０７の入力として扱うことも可能である。
【００１６】
＜撮像装置の内部構成＞
図２は、本実施形態における撮像装置１０１の内部構成を示すブロック図である。ＣＰＵ２０２は、各構成の処理を実行する。ＣＰＵ２０２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０３や、ＲＡＭ（Ｒｏｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０４に格納された命令を順に読み込み、解釈し、その結果に従って各構成の処理を実行する。システムバス２１２はデータを送受信するためのバスである。
【００１７】
制御部２０６は、撮像ボタン１０３や操作ボタン１０７からのユーザ指示によって、撮像、ライティング処理モードの切り換え、被写体領域の選択、照明パラメータの設定などを制御する。本実施形態において制御部２０６は、ユーザ指示に応じてフラグＳＷ１、ＳＷ２、ＳＷ３、ＳＷ４を制御する。ＳＷ１は、ライティング処理を有効にするように指示された場合にＯＮ、ライティング処理を無効にするよう指示された場合にＯＦＦとする。フラグＳＷ２は、仮想的な照明を移動させるよう指示された場合にＯＮ、移動させないよう指示された場合にＯＦＦとする。フラグＳＷ３は、距離画像データの保存を行うよう指示された場合にＯＮ、距離画像データの保存を行わないよう指示された場合にＯＦＦとする。フラグＳＷ４は、補正画像を保存するように指示された場合にＯＮ、それ以外の場合はＯＦＦとする。実際にはフラグＳＷ１、ＳＷ３、ＳＷ４はそれぞれＲＡＭ２０４内のビット信号であり、ビットが０の状態をＯＦＦ、ビットが１の状態をＯＮとし、制御部２０６はこれらビットの状態を切り替える。また、制御部２０６はユーザ操作取得を行う。
【００１８】
光学系制御部２０５は光学部１０２に対して、フォーカスを合わせる、シャッターを開く、絞りを調整するなどのＣＰＵ２０２から指示された制御を行う。
【００１９】
カラー撮像素子部２０１は、光学部１０２にて集光された光情報を電流値へと変換する素子であり、カラーフィルタなどと組み合わせることで色情報を取得する。
【００２０】
距離画像取得部１０５は、赤外光を発光する赤外発光部と、被写体に反射した赤外光を受光する受光部とを含む。距離画像取得部１０５は、発光した赤外光が被写体に反射し受光するまでの時間に基づいて、撮像装置から被写体までの距離値を算出する。そして、算出した距離値と受光部のセンサ画素数や画角等を含む距離撮像情報に基づき被写体の位置情報を算出し距離画像データとして取得する。
【００２１】
Ａ／Ｄ変換部２０８は、光学部１０２が検知した被写体の光量をデジタル信号値に変換してＲＡＷ画像データに変換する。なお、本実施形態では同時刻に撮像した距離画像データとＲＡＷ画像データが取得可能であるとする。
【００２２】
画像処理部２０９は上記のＲＡＷ画像データに対して現像処理を行い、カラー画像データを生成する。画像処理部２０９は、カラー画像データに対して各種画像処理を実行する。本実施形態において、画像処理部２０９はカラー画像データや距離画像データに基づいて、カラー画像データをライティング補正画像データに変換するライティング処理を行う。画像処理部２０９の内部構造は後に詳述する。
【００２３】
キャラクタージェネレーション部２０７は文字やグラフィックなどを生成する。ここで生成された文字やグラフィックは、画像処理部２０９によって生成されたライティング補正画像データと重畳して表示部１０６に表示される。
【００２４】
エンコーダ部２１０は、画像処理部２０９が処理したカラー画像データやライティング処理によって生成されるライティング補正画像データを含む各種画像データをＪｐｅｇなどのファイルフォーマットに変換処理を行う。
【００２５】
メディアＩ／Ｆ２１１は、ＰＣ／メディア２１３（例えば、ハードディスク、メモリカード、ＣＦカード、ＳＤカードなど）に画像データを送受信するためのインタフェースである。
【００２６】
＜画像処理部の内部構成＞
図３は本実施形態における画像処理部２０９の詳細な内部構成を示すブロック図である。
【００２７】
現像処理部３０１は、Ａ／Ｄ変換部２０８からＲＡＷ画像データを取得する。そして、ＲＡＷ画像データに対してホワイトバランス処理、デモザイク処理、ノイズリダクション処理、色変換処理、エッジ強調処理およびガンマ処理等を施し、カラー画像データを生成する。生成したカラー画像データは表示部１０６へ出力して表示したり、ＲＡＭ２０４、ＰＣ／メディア２１３などの記憶装置に記憶することができる。本実施形態において、カラー画像データＩを構成する画素Ｉ（ｉ，ｊ）にはＲＧＢ値が画素値として格納されているものとする。カラー画像データ５０１の各画素に格納されたＲＧＢ値はそれぞれＩｒ（ｉ，ｊ）、Ｉｇ（ｉ，ｊ）、Ｉｂ（ｉ，ｊ）と表す。また、距離画像取得部１０５が取得する距離画像データＤを構成する画素Ｄ（ｉ，ｊ）には画素値として撮像装置を基準とする各被写体の座標値が格納されている。距離画像データのＤ（ｉ，ｊ）は、ｘ（ｉ，ｊ）、ｙ（ｉ，ｊ）、ｚ（ｉ，ｊ）によって表される。ここでｘ軸は撮像装置に対して水平な方向、ｙ軸は撮像装置に対して垂直な方向、ｚ軸は撮像装置の光軸方向とする。カラー画像データＩは、距離画像データＤの各画素と対応付けられている。具体的には、カラー画像データの画素Ｉ（ｉ，ｊ）に対応する座標値は、距離画像データのＤ（ｉ，ｊ）に格納されている。
【００２８】
法線推定処理部３０２は、距離画像取得部１０５から取得した距離画像データに基づいて、距離画像データにおける画素毎の法線ベクトルを推定し法線画像データを取得する。法線画像データＮの画素Ｎ（ｉ，ｊ）には画素値として単位法線ベクトルの各要素の値が格納されている。具体的には、カラー画像データの画素Ｉ（ｉ，ｊ）に対応する法線ベクトルのｘｙｚ成分の値はＮ（ｉ，ｊ）に格納されているものとし、それぞれＮｘ（ｉ，ｊ）、Ｎｙ（ｉ，ｊ）、Ｎｚ（ｉ，ｊ）と表す。
【００２９】
被写体特定部３０３は、制御部２０６からユーザ操作により被写体の選択を受け付け、入力された被写体選択位置Ｐ０’を取得する。そして被写体特定部３０３は、被写体選択位置Ｐ０’に基づいて、カラー画像データにおける被写体位置Ｐ０を算出する。本実施形態では、タッチスクリーン機能を有した表示部１０６にカラー画像データを表示し、表示画面中の被写体をユーザがタッチする操作を受け付け、被写体特定部３０３はタッチした位置を被写体選択位置Ｐ０’として取得する。この際、被写体選択位置Ｐ０’は表示部１０６の画素位置に対応する。この表示部１０６上での画素位置を、カラー画像データの画素位置に変換することで被写体位置Ｐ０を算出する。
【００３０】
指示位置取得部３０４は、制御部２０６からユーザ操作により入力された光源位置を変更するための操作を受け付け、照明に対する指示位置を取得する。本実施形態では、タッチスクリーン機能を有した表示部１０６にカラー画像データを表示し、表示画面に対するユーザによるドラッグ操作を受け付ける。指示位置取得部３０４は、ユーザのドラッグ操作に応じて、少なくとも押下開始位置Ｐ１’と押下終了位置Ｐ２’を含む指示位置を取得する。
【００３１】
照明可動範囲設定部３０５は、距離画像取得部１０５から距離画像データ、被写体特定部３０３から被写体位置を取得する。そして、カラー画像データにおける被写体を照明する仮想的な照明の可動範囲を設定する。本実施形態では、照明は図６に示すような回転中心Ｃ＝（Ｃｘ，Ｃｙ，Ｃｚ）６０１を中心とする楕円体６０２の上を移動するものとする。この際、照明の位置Ｑ＝（Ｑｘ，Ｑｙ，Ｑｚ）６０３は式（１）に従う。
【００３２】
【数１】
2015201839.tif 000003
【００３３】
ここで、ａはｘ軸方向の半径，ｂはｙ軸方向の半径，ｃはｚ軸方向の半径を表す。また、ｚ軸回りの回転角度をθ、ｘ軸回りの回転角度をφとすると、照明の位置Ｑ６０３は式（２）のように表される。
【００３４】
【数２】
2015201839.tif 000004
【００３５】
また、照明の向きＵ＝（Ｕｘ，Ｕｙ，Ｕｚ）６０４は、照明の位置Ｑから回転中心Ｃに向かう単位ベクトルとして式（３）のように表される。
【００３６】
【数３】
2015201839.tif 000005
【００３７】
本実施形態では、距離画像データから得られる被写体位置Ｐ０周辺の座標値に基づいて回転中心Ｃを設定する。式（２）におけるａ、ｂ、ｃはあらかじめ設定されている。また、ユーザ操作に応じて光源の位置Ｑはｚ軸回りの回転角度θおよびｘ軸回りの回転角度φを更新することにより、照明の位置Ｑと照明の向きＵを変更する。
【００３８】
照明位置取得部３０６は、ＲＡＭ２０４などから照明の位置を表す回転角度θ、φを取得する。
【００３９】
照明位置更新部３０７は、距離画像取得部１０５から距離画像データ、照明可動範囲設定部３０５から照明の回転中心Ｃ及び回転半径、照明位置取得部３０６から回転角度θ、φ、指示位置取得部３０４からユーザによる指示位置を取得する。そして、指示位置に基づき、回転角度θ、φを更新する。その後、式（２）に従い照明の位置Ｑを、式（３）に従い照明の向きＵをそれぞれ更新する。
【００４０】
ライティング処理部３０８は、距離画像データと法線画像データと照明の位置Ｑ及び照明の向きＵに基づいて、処理対象のカラー画像データに対して仮想的な光源を加えることによりライティング補正画像を生成する。生成したライティング補正画像はＲＡＭ２０４やＰＣ／メディア２１３などの記憶装置に出力して記憶したり、表示部１０６へ出力して表示したりすることができる。
【００４１】
＜画像処理部の処理フロー＞
図４は、本実施形態の撮像装置における画像処理部２０９の動作手順を示すフローチャートである。本実施形態における画像処理部２０９はまず、距離画像データに基づいて画素毎の法線を推定し法線画像データを取得する。そして、ユーザ操作と距離画像データに基づき照明パラメータの設定を行う。この際、照明パラメータに基づいて生成したライティング補正画像を表示部１０６に表示することにより、ユーザがライティング補正画像の変化を確認しながら照明パラメータを変更できるようにする。
【００４２】
本実施形態では照明は２つ設定可能とする。なお、照明パラメータには、アクティブな照明を表す変数、照明の配置状態を表す変数、照明の点灯状態を表す変数、照明の色を表す変数、照明の明るさを表す変数、照明の位置および姿勢を制御する変数を含む。照明の配置状態を表す変数ＳＷ＿Ｌ１がＯＮの場合、照明が配置されていることを示し、ＳＷ＿Ｌ１がＯＦＦの場合は照明が配置されていないことを示す。照明の点灯状態を表す変数ＳＷ＿Ｌ２がＯＮの場合、照明が点灯していることを示し、ＳＷ＿Ｌ２がＯＦＦの場合は照明が消灯していることを示す。照明の色はＲＧＢ値で表すものとし、それぞれ変数Ｌｒ、Ｌｇ、Ｌｂで表す。照明の明るさを表す変数はαとし、値が大きいほど照明が明るいものとする。以下、各ステップに沿って説明する。
【００４３】
ステップＳ４０１において、現像処理部３０１がＡ／Ｄ変換部２０８から取得したＲＡＷ画像データに基づいてカラー画像データを生成する。図５はカラー画像データ５０１の一例を示す。なお、カラー画像データの取得方法はこれに限るものではない。例えば、ＲＡＭ２０４やＰＣ／メディア２１３に記憶されているＲＡＷ画像データを取得し現像処理部３０１がカラー画像データを生成してもよい。あるいは、ＲＡＭ２０４やＰＣ／メディア２１３に記憶されているカラー画像データを取得してもよい。
【００４４】
ステップＳ４０２において、ライティング処理部３０８が距離画像取得部１０５から距離画像データを取得する。図５は、距離画像データ５０２の一例を示す。なお、距離画像データの取得方法はこれに限るものではない。例えば、ＲＡＭ２０４やＰＣ／メディア２１３に記憶されている距離画像データを取得してもよい。
【００４５】
ステップＳ４０３において、ライティング処理部３０８がＲＡＭ２０４からＳＷ１の状態を取得する。そして、ＳＷ１の状態に基づいてライティング処理を行うか否かの判定を行う。ユーザの指示によりＳＷ１がＯＦＦになっている場合はライティング処理を行わないと判定し、ステップＳ４０４に進む。一方ＳＷ１がＯＮである場合は、ライティング処理を行うと判定しステップＳ４０５に進む。
【００４６】
ステップＳ４０４において、ライティング処理部３０４がＲＡＭ２０４からＳＷ３の状態を取得する。ユーザ指示によりＳＷ３がＯＦＦになっている場合はカラー画像データのみを、ＳＷ３がＯＮの場合はカラー画像データと距離画像データをＰＣ／メディア２０３に出力し記録する。あるいは、表示部１０６に出力し表示しても構わない。その後、処理を終了する。
【００４７】
ステップＳ４０５において、法線推定処理部３０２が距離画像取得部１０５から距離画像データを取得する。そして、距離画像データに基づいて画素毎の法線ベクトルを推定し法線画像データＮを取得する。図５は、法線画像データ５０３の一例を示す。法線ベクトルの推定方法としては、距離画像データの注目画素に対して近傍領域を基に微分を行って求める方法や、平面を当てはめる方法などが適用可能である。ここでは、注目画素の近傍領域に当てはめた平面に垂直なベクトルを法線として求める。
【００４８】
ステップＳ４０６において、ライティング処理部３０８が照明パラメータの初期化を行う。具体的には、全照明を消灯状態にするため全照明のＳＷ＿Ｌ１、ＳＷ＿Ｌ２をＯＦＦにする。そして、予め設定した照明１をアクティブにする。
【００４９】
また、照明の回転角θ、φを初期値にする。本実施形態では、θ＝９０°、φ＝９０°を初期値とすることにより、被写体正面から照明が当たる状態を初期状態とすることができる。
【００５０】
ステップＳ４０７において、ライティング処理部３０８は、カラー画像データに対してライティング処理を実行する。ライティング処理によって、設定された照明パラメータで表される照明条件下で被写体を撮像したような画像が生成される。ステップＳ４０６からステップＳ４０７に進んだ場合、処理対象の画像データはカラー画像データである。この場合、照明パラメータはステップＳ４０６において設定された初期値となる。また後述のステップＳ４１０からステップＳ４０７に進んだ場合、ステップＳ４０６において設定された初期値ではなく、ステップＳ４１０において設定された照明パラメータを用いてライティング処理を実行する。ライティング処理部３０８は、カラー画像データと距離画像データと法線画像データと照明パラメータに基づいてライティング処理を行い、補正画像データを生成する。ステップＳ４０７における処理の詳細は後述する。
【００５１】
ステップＳ４０８において、ライティング処理部３０８が補正画像データを表示部１０６に出力することにより補正画像データを表示部１０６に表示する。
【００５２】
ステップＳ４０９において、ライティング処理部３０８がＲＡＭ２０４から補正画像を保存するか否かを示すフラグＳＷ４の状態を取得する。ユーザ指示によってＳＷ４がＯＦＦに設定されている場合はステップＳ４１０に進み、ＳＷ４がＯＮに設定されている場合はステップＳ４１１に進む。
【００５３】
ステップＳ４１０において、ユーザ操作に応じて選択された選択領域に応じて照明パラメータ設定処理を行い、照明パラメータを設定する。ユーザは表示部１０６に表示された補正画像データを観察しながら、補正画像データ上の所望の位置を選択することにより選択した位置に照明を移動させることができる。照明パラメータの設定方法については後に詳述する。
【００５４】
ステップＳ４１１において、ライティング処理部３０８がＲＡＭ２０４からＳＷ３の状態を取得する。そして、ＳＷ３がＯＦＦの場合は補正画像データとカラー画像データを、ＳＷ３がＯＮの場合は補正画像データとカラー画像データと距離画像データをＰＣ／メディア２０３に出力し記録する。その後、処理を終了する。
【００５５】
＜照明パラメータ設定処理＞
ここでは、ステップＳ４１０の照明パラメータ設定処理について詳細に説明する。本実施形態における照明パラメータ設定処理は、ユーザ操作と距離画像データに基づいて照明パラメータを設定するものとする。本実施形態では、ユーザは表示された補正画像データを観察しながら、照明の位置を変更するための操作を行うものとする。照明の位置は、距離画像データＤ、指示位置等に基づき、照明位置更新部３０７によって更新される。この際、リライティング処理の対象として選択された被写体の位置に応じて、照明の移動量を決定する。以下、照明パラメータ設定処理の詳細について述べる。
【００５６】
ステップＳ７０１において、アクティブな照明を変更する指示があるか否かを判定する。変更する場合はステップＳ７０２へ進み、変更しない場合はステップＳ７０３へ進む。
【００５７】
ステップＳ７０２において、ステップＳ７０１において選択された照明をアクティブにする。以降の操作は本ステップでアクティブに設定された照明の照明パラメータに対してのみ有効とする。
【００５８】
ステップＳ７０３において、ユーザ操作に基づいて照明をさらに配置するか否かの判定を行う。配置する際はステップＳ７０４へ進み、配置しない場合はステップＳ７０９へ進む。
【００５９】
ステップＳ７０４において、被写体特定部３０３は制御部２０６から被写体選択位置Ｐ０’を取得する。本実施形態では、ステップＳ４０８で表示部１０４に表示した補正画像に対して、ユーザが被写体を選択する。ユーザは、照明の当たり具合を調整したい被写体を指定する操作を行う。選択領域の取得方法について、図８を用いて説明する。まず、ユーザ操作によって選択された表示部１０４上の被写体選択位置Ｐ０’（８０１）を制御部２０６から取得する。そして、被写体選択位置Ｐ０’に対応する補正画像データ上の座標である被写体位置Ｐ０（８０２）を算出する。その後、被写体位置Ｐ０を中心とする近傍領域を被写体近傍領域８０３とする。被写体近傍領域８０３は、被写体位置８０２を中心とする矩形領域などとして設定する
ことができる。
【００６０】
ステップＳ７０５において、照明可動範囲設定部３０５はまず、照明の可動範囲を表す照明パラメータＣｘ、Ｃｙ、Ｃｚ、ａ、ｂ、ｃを設定する。照明パラメータの設定方法を図８を用いて説明する。まず、被写体位置Ｐ０（ｉ，ｊ）（８０２）に対応する被写体座標値９０１を距離画像データ５０２より取得する。各照明パラメータは被写体座標値９０１とあらかじめ定めておいた被写体の曲率半径（Ｒｘ，Ｒｙ，Ｒｚ）とから式（４）に従い算出する。
【００６１】
【数４】
2015201839.tif 000006
【００６２】
従って、照明の可動範囲の大きさ（つまり楕円体の大きさ）は被写体の大きさに基づいて設定される。ここで、βは被写体の位置と照明の位置とのおおよその距離を表す変数である。βの値はあらかじめ与えておいてもよいし、被写体近傍領域８０３の画素値などに応じて変えても良い。例えば、被写体に対応する画素群の画素値が小さく暗く写っている場合はβを小さくし、被写体に対応する画素群の画素値が大きく明るく写っている場合はβを大きくすると良い。これにより、被写体が暗い場合ほど照明を近くに配置することができるため、照明による補正効果を大きくすることができる。あるいは、照明の明るさαに応じてβを変えてもよい。例えば、照明の明るさαが大きくなるに従いβを大きな値にしても良い。
【００６３】
これにより指定された被写体にライティングする仮想的な照明の移動領域が設定される。ここで決定された照明パラメータにより、指定された被写体を照明する仮想的な照明の行動範囲が設定され、位置や姿勢を変更することにより、被写体に対するライティング補正を可能とする。
【００６４】
ステップＳ７０６において、照明位置更新部３０６は照明の回転角θ、φと照明パラメータＣｘ、Ｃｙ、Ｃｚ、ａ、ｂ、ｃに基づいて、照明を初期位置に配置する。具体的には、式（２）に従い照明の位置Ｑを、式（３）に従い照明の向きＵをそれぞれ算出する。そして、ＳＷ＿Ｌ１をＯＮにして照明が配置された状態にする。
【００６５】
図１０に、被写体選択位置Ｐ０’（８０１）に対応する照明の初期位置１００３、照明の初期姿勢１００４を示す。
【００６６】
ステップＳ７０７において、ＳＷ＿Ｌ２をＯＮにして照明を点灯状態にし、照明パラメータ設定処理を終了する。
【００６７】
ステップＳ７０８において、照明が配置されているかを判定する。具体的には、アクティブになっている照明のＳＷ＿Ｌ１の状態を取得し、ＳＷ＿Ｌ１がＯＮの場合はステップＳ７１０に進み、ＳＷ＿Ｌ１がＯＦＦの場合は照明パラメータ設定処理を終了する。
【００６８】
ステップＳ７０９において、照明を移動するか否かの判定を行う。具体的には、ＳＷ２の状態を取得し、ＳＷ２がＯＮの場合はステップＳ７１０に進み、ＳＷ２がＯＦＦの場合はステップＳ７１３へ進む。
【００６９】
ステップＳ７１０において、照明位置取得部３０６は照明の位置を表すパラメータθ、φの値を取得する。
【００７０】
ステップＳ７１１において、指示位置取得部３０４はユーザのドラッグ操作によって得られる押下開始位置Ｐ１’と押下終了位置Ｐ２’を取得する。例えば、ユーザが表示部１０６をドラッグ操作した際の開始位置を押下開始位置Ｐ１’、終了位置を押下終了位置Ｐ２’とすることができる。
【００７１】
ステップＳ７１２において、照明位置更新部３０７は照明の位置を更新する。まず、押下開始位置Ｐ１’と押下終了位置Ｐ２’に対応するカラー画像データ上の開始位置Ｐ１＝（ｉ１，ｊ１）、終了位置Ｐ２＝（ｉ２，ｊ２）を算出する。そして、式（５）に従いθ、φの変化量Δθ、Δφを算出する。
【００７２】
【数５】
2015201839.tif 000007
【００７３】
ここで、Ａはカラー画像データ５０１上における照明の可動範囲を表す楕円体の半径ａに対応する値である。Ｂはカラー画像データ５０１上における照明の可動範囲を表す楕円体の半径ｂに対応する値である。Ｃｚは照明パラメータひとつであり、被写体位置Ｐ０から式（４）に従って求めることができる。Ｗはカラー画像データ５０１の水平画素数を表す。Ｈはカラー画像データ５０１の垂直画素数を表す。ｕは撮像装置１０１の水平画角を表す。ｖは撮像装置１０１の垂直画角を表す。
【００７４】
上記のように算出した、変化量Δθ、Δφを、照明位置取得部３０６より取得した照明の位置を表すパラメータθ、φに加えることによりθ、φの値を更新する。その後、更新したθ、φに基づいて、式（２）に従い照明の位置Ｑを、式（３）に従い照明の向きＵをそれぞれ更新する。照明位置の更新位置について、図１０を用いて説明する。照明の現在位置を初期位置とし、押下開始位置Ｐ１を被写体選択位置Ｐ０’（８０１）、押下終了位置Ｐ２’を位置Ｅ１（１００１）とした場合、照明は位置Ｑ１（１００５）、姿勢はＵ１（１００６）に更新される。また、照明の現在位置を初期位置とし、押下開始位置Ｐ１を被写体選択位置Ｐ０’（８０１）、押下終了位置Ｐ２’を位置Ｅ２（１００２）とした場合、照明は位置Ｑ２（１００７）、姿勢はＵ２（１００８）に更新される。
【００７５】
以上のように、被写体位置Ｐ０に基づいてθ、φの変化量Δθ、Δφを設定することにより、ユーザは被写体の位置に応じた直感的な操作が可能となる。具体的な説明として、近くの被写体を選択した場合を図１１、遠くの被写体を選択した場合を図１２を用いて説明する。点１１０１を選択し近くの被写体に対して照明を設定した場合、押下開始位置Ｐ１を点１１０１、押下終了位置Ｐ２’を点１１０２にすることにより、照明は初期位置１１０４から位置１１０５に更新される。また、押下開始位置Ｐ１を点１１０１、押下終了位置Ｐ２’を点１１０３にすることにより、照明は初期位置１１０４から位置１１０６に更新される。点１２０１を選択し遠くの被写体に対して照明を設定した場合、押下開始位置Ｐ１を点１２０１、押下終了位置Ｐ２’を点１２０２にすることにより、照明は初期位置１２０４から位置１２０５に更新される。また、押下開始位置Ｐ１を点１２０１、押下終了位置Ｐ２’を点１２０３にすることにより、照明は初期位置１２０４から位置１２０６に更新される。このように、近くの被写体ほどθ、φを変化させるために必要となるドラッグ操作の移動量を大きくすることより、表示部１０６上の選択位置に、照明の位置があるかのように操作することができる。なお、照明の位置を表すパラメータθ、φの値に制限を設けても良い。例えば、θ、φはそれぞれθｍｉｎ≦θ≦θｍａｘ、φｍｉｎ≦φ≦φｍａｘの範囲内の値をとるものとし、θ、φが変化量Δθ、Δφによって前記範囲を超える値に更新される場合は、前記範囲内になるように値を調整してもよい。
【００７６】
ステップＳ７１３において、ユーザ操作に基づいて照明の点灯状態を変更するか否かの判定を行う。照明の点灯状態を変更する場合はステップＳ７１４へ進み、変更しない場合は照明パラメータ設定処理を終了する。
【００７７】
ステップＳ７１４において、照明の点灯状態を変更する。具体的には、ＲＡＭ２０４からＳＷ＿Ｌ２の状態を取得した後、ＳＷ＿Ｌ２がＯＮの場合はＯＦＦに変更し、ＳＷ＿Ｌ２がＯＦＦの場合はＯＮに変更する。そして照明パラメータ設定処理を終了する。
【００７８】
＜ライティング処理＞
ここでは、ステップＳ４１１で行うライティング処理について説明する。本実施形態では式（６）に従い補正画像データをＩ’を生成するものとする。
【００７９】
【数６】
2015201839.tif 000008
【００８０】
ここで、Ｉ’ｒ、Ｉ’ｇ、Ｉ’ｂは補正画像データＩ’の画素値、Ｌｒｍ、Ｌｇｍ、Ｌｂｍはｍ番目の照明の色、ｋｍはｍ番目の照明に対する補正度合いを表す。ｋｍ（ｉ、ｊ）は、照明の明るさα、位置Ｑ、姿勢Ｕおよび画素（ｘ、ｙ）に対応する距離値Ｐ（ｘ、ｙ）と法線ベクトルＮ（ｘ、ｙ）に基づいて決定する。例えば式（６）のように求めることができる。
【００８１】
【数７】
2015201839.tif 000009
【００８２】
Ｗは被写体位置Ｐから照明の位置Ｑまでの距離が大きくなるに従い大きな値を返す関数である。ρは照明の位置Ｑから被写体位置Ｐ（ｉ，ｊ）に向かうベクトルと、照明の姿勢Ｕのなす角度を表す。Ｋはρが小さいほど大きな値となるような関数である。Ｖ（ｉ，ｊ）は被写体位置Ｐ（ｉ，ｊ）から照明の位置Ｑに向かう方向を表す単位ベクトルである。ただし、照明のＳＷ＿ＬあるいはＳＷ＿Ｌ２のいずれかがＯＦＦの場合はｋの値は０とする。本実施形態のように補正画像を生成することにより、照明の位置と被写体の形状に応じた明るさの補正が可能である。
【００８３】
なお、ステップＳ３０５において、式（１）で表される楕円体上に照明の可動範囲を設定しているが、照明の可動範囲はこれに限るものではない。例えば、被写体から所定の距離だけ離れた平面上を照明が移動するように設定するなどしても良い。
【００８４】
また、図１３に示すように照明の可動範囲に対応する領域を表示部１０６に表示しても良い。例えば、式（５）によって取得したＡ及びＢに基づき、表示画像上における照明の可動範囲Ａ’、Ｂ’を算出し、被写体選択位置１３０１とともに矢印状の記号１３０２で表示部１０６に表示する。あるいは、被写体選択位置１３０１を中心とし、Ａ’、Ｂ’を半径とする楕円１３０３として表示部１０６に表示する。これにより、ユーザは照明の可動範囲を直感的に理解することができる。
【００８５】
以上により、ユーザは画像データ上の位置を選択すると、選択した位置から所望の仮想的な照明条件下で撮像した画像を観察することができる。さらにユーザは照明の移動示す操作を入力すると、操作に従って照明が移動すると共に、撮像画像における被写体に対する照明の当たり加減も変更して表示される。このようにライティング処理を行い、表示することで、撮像画像から所望の照明条件下で撮影したかのような別の画像を生成する画像処理装置において、ユーザは容易に照明の位置と姿勢を設定することができる。
【００８６】
［第２実施形態］
第１実施形態では照明の可動範囲を被写体によらず規定値に基づいてａ、ｂ、ｃを値を設定した。第２実施形態では、被写体の形状に基づいて上記パラメータを決定することにより、被写体に応じて照明の可動範囲を設定する方法について説明する。なお、前述の実施形態と同様の構成については、詳細な説明を省略する。第２実施形態では第１実施形態と比較し、ステップＳ７０５における可動範囲設定処理が異なる。第２実施形態における可動範囲設定処理（Ｓ７０５）の流れを、図１４に示す。
【００８７】
ステップＳ１４０１において、距離画像データ５０２と被写体位置Ｐ０（８０２）及び被写体近傍領域８０３に基づいて、被写体の形状を示す形状情報を推定する。具体的には、図１５に示すように距離画像データから取得した、被写体近傍領域８０３に含まれる画素の座標値１５０１に対して楕円状の二次曲面１５０２を当てはめる。二次曲面の当てはめ方は、例えば最小二乗法等が適用可能である。この際、二次曲面のｘ軸方向の径の半値をＲｘ、ｙ軸方向の径の半値をＲｙ、ｚ軸方向の径の半値をＲｚとする。なお、二次曲面１５０２を当てはめることによりＲｘ、Ｒｙ、Ｒｚを算出したが、この際、Ｒｘ、Ｒｙ，Ｒｚのそれぞれ値が規定値以上にならないように制限を設けても良い。例えば、被写体形状が平面に近い場合は曲率半径が極めて大きくなり、その結果照明の移動範囲が極端に広くなってしまいユーザ操作が困難になる場合がある。このような場合は、Ｒｘ、Ｒｙ，Ｒｚのうち規定値を超えたものをＲｘ’、Ｒｙ’、Ｒｚ’などに置き換えてもよい。こうすることにより、被写体形状が平面に近い場合であっても照明の移動範囲を制限することが可能である。
【００８８】
また、二次曲面１５０２を当てはめる際に、被写体形状によっては解が安定的にも止まらない場合が考えられる。そこで、Ｒｘ、Ｒｙ，Ｒｚの少なくとも一つの値を規定値としても構わない。たとえば、光軸方向に平行なｚ軸方向の径の半値をＲｚをあらかじめ定めた規定値Ｒｚ”とし、残るＲｘ、Ｒｙを求めても良い。これにより、Ｒｘ、Ｒｙ，Ｒｚの値を安定的に求める事ができる。さらに、この際規定値とする軸の数をユーザ操作によって変更可能にしても良い。
【００８９】
ステップＳ１４０２において、被写体座標値９０１とステップＳ１４０１で取得した（Ｒｘ，Ｒｙ，Ｒｚ）に基づいて、式（４）に従い照明パラメータを設定する。
【００９０】
以上により、被写体の形状に応じて照明の可動範囲を設定することが可能となる。これにより、図１０に示すように８０１を被写体選択位置としたｘｚ平面上に広がる被写体を選択した場合は、ｘｚ平面における照明の移動範囲が大きくなる。一方で、図１６に示すように１６０１を被写体選択位置としたｘｚ平面上で小さな被写体を選択した場合は、ｘｚ平面における照明の移動範囲が小さくなる。その結果、被写体毎の形状に対してより自然に被写体の周囲を仮想的な照明が移動するように、仮想的な照明の行動範囲を設定できる。
【００９１】
［その他の実施形態］
前述の実施形態では、照明に対するユーザの指示位置を、ユーザによる表示画面上のドラッグ操作を受け付け、押下開始位置と押上終了位置とを指示位置として取得した。ドラッグ（押下）の開始位置と終了位置だけではなく、一定の期間毎にユーザによるタッチ位置を検出し、検出した位置を照明に対する指示位置として取得し、照明パラメータを更新しても良い。これにより、仮想的な照明による照明を連続的に表示することができ、ユーザは撮像対象の空間において、実在する照明を動かして被写体へのライティングを調整しているかのように、操作することができる。また、照明に対する指示位置としてドラッグ操作に限らない。例えば、ライティングモードの設定を受けつけ、ライティングモード下におけるユーザによるタッチ操作を全て、照明に対する指示位置として取得してもよい。この場合、ユーザによるタッチ位置が変わるたびに、被写体に対するライティングが変更されることになる。
【００９２】
また前述の実施形態では、ライティング処理を実行する被写体を選択し、被写体の位置に応じた照明の可動範囲を設定して照明パラメータを設定した。しかしながら、複数の被写体に対してライティング処理を実行する構成とすることもできる。例えば、予め被写体毎に照明の可動範囲を算出しておく。この時、照明の可動範囲は、被写体自体のサイズや位置に基づいて算出する。被写体が手前（近く）にある場合、もしくは被写体が大きい場合は、照明の可動範囲を大きく設定し、被写体を奥（遠く）にある場合、もしくは被写体が小さい場いいは、照明の稼働範囲を小さく設定する。ユーザの操作により照明の指示位置を取得すると、複数の被写体毎の可動範囲それぞれにおいて、ユーザの指示位置に応じた位置に照明を設定し、ライティング処理をする。これにより、複数の被写体に対してライティング補正をすることができる。
【００９３】
また、被写体の位置が同じであることが明確である場合、被写体の大きさに応じて照明の可動範囲を決定してもよい。例えば、同じ位置にある被写体のうち、大きい方の被写体に対してライティング処理を実行する場合には、対応する照明の可動範囲を、基準とする照明の可動範囲よりも大きく設定する。一方小さい方の被写体に対してライティング処理を実行する場合には、対応する処理の可動範囲を、基準とする照明の可動範囲よりも小さく設定する。これにより、ユーザは前述の実施形態と同様、自然なライティング処理を実現することができる。
【００９４】
さらには、照明の可動範囲を、被写体の位置のみに基づいて設定する形態と、被写体の位置及び形状や大きさに基づいて設定する形態を併用してもよい。特に、ライティング処理の対象として被写体が人物等に限定される場合は、平均的な形状や大きさに基づいて予め照明の可動範囲（楕円球の大きさ）を定義するパラメータを設定しておく。被写体の位置を取得すると、照明の中心位置を特定するだけで、簡易的に照明の可動範囲を設定する構成でもよい。あるいは、複数の被写体に応じた大きさを予め設定し、被写体を特定する情報に基づいて予め決められた大きさを用いてもよい。
【００９５】
本発明は、上述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給することによっても実現できる。この場合、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ）が、コンピュータが読み取り可能な記憶媒体に格納されたプログラムコードを読み出し実行することにより、上述した実施形態の機能を実現する。
【図１】
2015201839.tif 000010
【図２】
2015201839.tif 000011
【図３】
2015201839.tif 000012
【図４】
2015201839.tif 000013
【図５】
2015201839.tif 000014
【図６】
2015201839.tif 000015
【図７】
2015201839.tif 000016
【図８】
2015201839.tif 000017
【図９】
2015201839.tif 000018
【図１０】
2015201839.tif 000019
【図１１】
2015201839.tif 000020
【図１２】
2015201839.tif 000021
【図１３】
2015201839.tif 000022
【図１４】
2015201839.tif 000023
【図１５】
2015201839.tif 000024
【図１６】
2015201839.tif 000025