以下、本発明の実施例について、図面を参照しながら詳細に説明する。各図において、同一の部材については同一の参照番号を付し、重複する説明は省略する。
照度差ステレオ法は、被写体の法線(面法線)と被写体から光源への方向に基づく被写体の反射特性を仮定し、複数の光源位置での被写体の輝度情報と仮定した反射特性から法線を算出する方法である。反射特性は、所定の法線と光源の位置が与えられたときに反射率が一意に定まらない場合、ランバートの余弦則に従うランバート反射モデルで近似すればよい。図15は、Torrance-Sparrowモデルの説明図である。図15に示されるように、鏡面反射成分は、光源ベクトルsと視線方向ベクトルvの2等分線と、法線nのなす角αに依存する。したがって、反射特性は、視線方向に基づく特性としてもよい。また、輝度情報は、光源が点灯している場合と消灯している場合のそれぞれの被写体を撮像し、これらの差分をとることで環境光等の光源以外の光源による影響を除いてもよい。
以下、ランバート反射モデルで反射特性を仮定した場合について説明する。反射光の輝度値をi、物体のランバート拡散反射率をρd、入射光の強さをE、物体から光源への方向(光源方向)を示す単位ベクトル(光源方向ベクトル)をs、物体の単位法線ベクトルをnとする。このとき、輝度値iは、ランバートの余弦則より、以下の式(1)のように表される。
ここで、異なるM個(M≧3)の光源ベクトルの各成分をs1、s2、…、sM、光源ベクトルの各成分の輝度値をi1、i2、・・・iMとすると、式(1)は以下の式(2)のように表される。
式(2)において、左辺はM行1列の輝度ベクトル、右辺の[s1
T、…sM
T]はM行3列の光源方向を示す入射光行列S、nは3行1列の単位法線ベクトルである。M=3の場合は、入射光行列Sの逆行列S-1を用いることにより、Eρdnは以下の式(3)のように表される。
式(3)の左辺のベクトルのノルムが入射光の強さEとランバート拡散反射率ρdとの積であり、正規化したベクトルが物体の法線ベクトルとして算出される。すなわち、入射光の強さEとランバート拡散反射率ρdは積の形でのみ条件式に現れるため、Eρdを1つの変数とすると、式(3)は単位法線ベクトルnの2自由度と合わせて未知の3変数を決定する連立方程式とみなせる。したがって、少なくとも3つの光源を用いて輝度情報を取得することで、各変数を決定することができる。なお、入射光行列Sが正則行列でない場合は逆行列が存在しないため、入射光行列Sが正則行列となるように入射光行列Sの各成分s1~s3を選択する必要がある。すなわち、成分s3を成分s1、s2に対して線形独立に選択することが好ましい。
M>3の場合、求める未知変数より多い条件式が得られる。このため、任意に選択した3つの条件式から、M=3の場合と同様の方法で単位法線ベクトルnを算出すればよい。4つ以上の条件式を用いる場合、入射光行列Sが正則行列ではなくなるため、例えば、Moore-Penrose疑似逆行列を使って近似解を算出すればよい。また、フィッティング手法や最適化手法によって単位法線ベクトルnを算出してもよい。
被写体の反射特性をランバート反射モデルとは異なるモデルで仮定すると、条件式が単位法線ベクトルnの各成分に対する線形方程式と異なる場合がある。この場合、未知変数以上の条件式が得られれば、フィッティング手法や最適化手法を用いることができる。
またM>3の場合、3以上M-1以下の複数の条件式が得られるため、単位法線ベクトルnの複数の解の候補を求めることができる。この場合、さらに別の条件を用いて複数の解の候補から解を選択すればよい。例えば、単位法線ベクトルnの連続性を条件として用いることができる。単位法線nを撮像装置の1画素ごとに算出する場合、画素(x、y)での法線をn(x、y)として、n(x-1、y)が既知であれば、以下の式(4)で表される評価関数が最小となる解を選択すればよい。
また、n(x+1、y)やn(x、y±1)も既知であれば、以下の式(5)が最小となる解を選択すればよい。
既知の法線がなく、全画素位置で法線の不定性があるとすれば、以下の式(6)で示されるように、式(5)の全画素での総和が最小となるように解を選択してもよい。
なお、最近傍以外の画素での法線を用いることや、注目する画素位置からの距離に応じて重み付けした評価関数を用いてもよい。また、別の条件として、任意の光源位置での輝度情報を用いてもよい。ランバート反射モデルに代表される拡散反射モデルでは、単位法線ベクトルと光源方向ベクトルが近いほど反射光の輝度が大きくなる。よって、複数の光源方向での輝度値のうち最も輝度値が大きくなる光源方向ベクトルに近い解を選択することで、単位法線ベクトルを決定することができる。
また、鏡面反射モデルでは、光源ベクトルをs、物体からカメラへの方向の単位ベクトル(カメラの視線ベクトル)をvとすると、以下の式(7)が成り立つ。
式(7)で表されるように、光源方向ベクトルsとカメラの視線ベクトルvが既知であれば、単位法線ベクトルnを算出することができる。表面に粗さがある場合、鏡面反射も出射角の広がりを持つが、平滑面として求めた解の付近に広がるため、複数の解の候補うち最も平滑面に対する解に近い候補を選択すればよい。また、複数の解の候補の平均によって真の解を決定してもよい。
以上の照度差ステレオ法によって法線nおよび反射率ρ(=Eρd)を取得すると、式(1)に対して任意の光源ベクトルsを与えることにより、任意の光源下での輝度値iを算出することができる。すなわち、任意の光源下での見えを再現したレンダリング画像を生成することが可能となる。式(1)ではランバート拡散反射でのレンダリング画像を生成するが、その他の拡散反射特性やそれに加えて鏡面反射特性でのレンダリング画像を生成することもできる。
次に、図1および図2Aを参照して、本発明の実施例1における撮像装置について説明する。図1は、本実施例における撮像装置1の外観図である。図2Aは、撮像装置1のブロック図である。
撮像装置1は、レンダリング処理を行ってレンダリング画像(リライティング画像)を生成する。図1に示されるように、撮像装置1は、被写体を撮像する撮像部100および光源部200を有する。図2Aに示されるように、撮像部100は、撮像光学系101および撮像素子102を有する。光源部200は、互いに異なる複数の位置からの光を被写体に光を照射可能に構成されている。本実施例において、光源部200は8つの光源200a~200hを有するが、これに限定されるものではない。照度差ステレオ法を実施する際に必要な光源は少なくとも3個であるため、入力画像を取得するために少なくとも3つ以上の光源を備えていればよい。また本実施例において、撮像部100を構成する撮像光学系の光軸OAから等距離の位置に同心円状に8つの光源を等間隔で配置しているが、これに限定されるものではない。また本実施例において、光源部200は、撮像装置1に内蔵されているが、これに限定されるものではない。光源部200は、撮像装置1に着脱可能に取り付けられるように構成されていてもよい。
撮像光学系101は、絞り101aを備え、被写体からの光を撮像素子102上に結像させる。撮像素子102は、CCDセンサやCMOSセンサ等の光電変換素子により構成され、被写体を撮像する。すなわち撮像素子102は、撮像光学系101により形成された被写体の像(光学像)を光電変換し、アナログ電気信号(入力画像に対応する画像データ)を生成する。A/Dコンバータ103は、撮像素子102の光電変換により生成されたアナログ信号をデジタル信号に変換し、デジタル信号を画像処理部104に出力する。
画像処理部(処理装置)104は、A/Dコンバータ103から入力されたデジタル信号に対して、各種の画像処理を行う。また本実施例において、画像処理部104は、被写体の法線情報を算出し、任意の光源下でのレンダリング画像を生成する。画像処理部104は、入力画像取得部104a、法線情報取得部104b、光源条件取得部104c、および、レンダリング部104dを有する。
画像処理部104により処理された出力画像は、半導体メモリや光ディスク等の画像記録部109に保存される。また、出力画像を表示部(ディスプレイ)105に表示してもよい。本実施例において、入力画像取得部104a、法線情報取得部104b、光源条件取得部104c、および、レンダリング部104dは、撮像装置1に内蔵されている。ただし本発明は、これに限定されるものではなく、前述の各部の少なくとも一部を撮像装置1とは別に設けてもよい。
情報入力部108は、ユーザにより選択された撮影条件(絞り値、露出時間、ISO感度、および、焦点距離など)をシステムコントローラ110に供給する。撮像制御部107は、システムコントローラ110からの情報に基づいて、ユーザが選択した所望の撮影条件で画像を取得する。照射光源制御部106は、システムコントローラ110の制御指示に応じて光源部200の発光状態を制御する。また情報入力部108は、ユーザにより選択された光源条件(仮想光源角度、仮想光源強度、および、仮想光源色など)をシステムコントローラ110に供給する。画像処理部104は、システムコントローラ110からの情報に基づいて、ユーザが選択した所望の仮想光源条件でレンダリング画像(リライティング画像)を生成する。なお本実施例において、撮像光学系101は、撮像装置1と一体的に構成されているが、これに限定されるものではない。本発明は、撮像素子を有する撮像装置本体と、撮像装置本体に着脱可能な撮像光学系(交換レンズ)とを備えて構成される一眼レフカメラやミラーレスカメラ等のカメラシステムにも適用可能である。
次に、図3および図4を参照して、本実施例におけるレンダリング処理(処理方法)について説明する。図3は、レンダリング処理を示すフローチャートである。本実施例のレンダリング処理は、システムコントローラ110および画像処理部104により、コンピュータプログラムとしての処理プログラムに従って実行される。なお処理プログラムは、例えば、コンピュータに読み取り可能な記憶媒体(システムコントローラ110の内部メモリ等)に記憶されている。
まず、ステップS101において、入力画像取得部104aは、互いに位置の異なる複数の光源位置で被写体の撮像を行うことで撮像部100により取得された複数の入力画像を取得する。複数の入力画像は、単一の光源の位置を(駆動部などを用いて)変更しながら単一の光源からの光を順次照射することで取得することができる。または、複数の入力画像を、それぞれ位置の異なる複数の光源(例えば、図1に示される8つの光源200a~200h)からの光を順次照射して取得してもよい。
また、後述するステップS102にてランバート反射等の拡散反射モデルを仮定した照度差ステレオ法で法線情報を取得する場合、入力画像として撮影画像から鏡面反射成分を除去した複数の拡散反射画像を用いてもよい。画像から鏡面反射成分を除去した拡散反射画像を取得するため、例えば、2色性反射モデルによる手法を用いることができる。ただし、画像から鏡面反射成分を除去する手法はこれに限定されるものではなく、種々の手法を用いることが可能である。
続いてステップS102において、法線情報取得部104bは、法線情報を取得する。本実施例において、具体的には、法線情報取得部104bは、互いに位置の異なる複数の光源位置で被写体の撮像を行うことで取得された複数の入力画像を用いて、被写体の法線情報および反射率を取得する。法線情報および反射率は、照度差ステレオ法を用いて、光源位置による輝度情報の変化に基づいて算出される。なお本実施例において、法線情報取得部104bは、複数の入力画像に基づいて法線情報および反射率を算出するが、他のユニットが算出した法線情報や反射率を取得してもよく、入力画像を取得しなくてもよい。
ここで、取得した法線情報には、前述のように種々の要因により誤差が生じている。例えば、被写体までの距離が遠くなるほど、撮像装置1が備える撮像光学系101の光軸(あるいは視線)と光源から被写体への光がなす角度(照射角度)が小さくなる。複数の光源位置での輝度変化から被写体の法線を決定する照度差ステレオ法では、照射角度が小さくなると輝度変化が低下し、撮像装置1内でのノイズの影響が強くなる。その結果、算出される法線にばらつきが生じる。さらに、照度差ステレオ法で面法線を算出した場合、仮定した反射特性とは異なる反射特性の被写体については法線誤差が生じる。そのため、誤差が生じた面法線を用いてレンダリング画像を生成すると、レンダリング画像にも誤差が生じる。例えば、ランバート拡散反射モデルを仮定した照度差ステレオ法で金属や透明体等の拡散反射が少ない被写体の面法線を算出すると、特に大きな法線誤差が生じる。このため、取得した面法線を用いてレンダリング画像を生成すると、レンダリング画像に破綻が生じる。
また、レンダリング時の仮想光源角度が大きくなると、仮想光源下での見えの変化は大きくなるが、法線誤差がレンダリング画像に与える影響が大きくなる。式(1)で示されるように、レンダリング画像は法線ベクトルと仮想光源ベクトルの内積、つまり法線ベクトルと仮想光源ベクトルのなす角の余弦にしたがって変化する。法線ベクトルに誤差が生じると、法線ベクトルと仮想光源ベクトルのなす角が90°に近づくにつれ、レンダリング画像における誤差が大きくなる。また、照度差ステレオ法においては、互いに異なる複数の光源位置における輝度変化から法線情報を算出しているため、レンダリング時の仮想光源が撮影時の光源位置から離れるほどレンダリング画像における誤差が大きくなる。
続いてステップS103において、光源条件取得部104cは、レンダリング画像を生成するための(レンダリング時の)第一の光源条件を取得する。ここで、第一の光源条件は、仮想光源角度または仮想光源強度の一方である。第一の光源条件は、ユーザが指定した仮想光源角度や仮想光源強度とすることができ、例えば撮影シーン毎等で予め決められた仮想光源条件であってもよい。ユーザによって選択された第一の光源条件は、情報入力部108からシステムコントローラ110に供給され、光源条件取得部104cがシステムコントローラ110からの情報に基づいて第一の光源条件を取得する。
ここで、仮想光源角度とは、視線ベクトルまたは光軸とレンダリング時の仮想光源ベクトルとのなす角度である。仮想光源強度は、仮想光源下での見えを再現したレンダリング画像の強度であり、式(1)で生成されるレンダリング画像を1として考えた場合の、生成するレンダリング画像の割合である。すなわち仮想光源強度は、レンダリング画像におけるベース画像の割合に基づいて決定される。例えば、仮想光源強度が0.5である場合には式(1)を用いて生成されるレンダリング画像を0.5倍したものが設定した仮想光源強度におけるレンダリング画像として生成される。また、入力画像等のベース画像に仮想光源下での見えを再現したレンダリング画像を加算あるいは加重平均してレンダリング画像を生成する場合、最終的なレンダリング画像のうち仮想光源下での見えを再現したレンダリング画像の割合を仮想光源強度としてもよい。したがって、仮想光源強度が大きいほど、仮想光源下での見えの変化は大きくなるが、法線誤差がレンダリング画像に与える影響が大きくなる。
続いてステップS104において、光源条件取得部104cは、ステップS103にて取得した第一の光源条件に基づいて、レンダリング画像を生成するための(レンダリング時の)第二の光源条件の範囲(最大値)を決定する。ここで、第二の光源条件は、第一の光源条件として取得した仮想光源角度または仮想光源強度の他方である。すなわち、第一の光源条件が仮想光源角度である場合、第二の光源条件は仮想光源強度である。また、第一の光源条件が仮想光源強度である場合、第二の光源条件は仮想光源角度である。
前述のように、レンダリング時の仮想光源角度(第一の光源条件)が大きくなると、仮想光源下での見えの変化は大きくなるが、法線誤差がレンダリング画像に与える影響が大きくなる。したがって、仮想光源角度が大きいほど仮想光源強度を小さくすればよい。すなわち、仮想光源角度が大きいほど仮想光源強度の最大値(画像全体の最大強度)が小さくなるように制限する。仮想光源角度が大きいほど仮想光源強度の範囲を小さく制限することで、仮想光源角度を大きくした際に法線誤差がレンダリング画像に与える影響を低減することができる。
ステップS103にて第一の光源条件として仮想光源強度を取得した場合、仮想光源強度が大きいほど仮想光源角度の最大値が小さくなるように制限する。仮想光源強度が大きいほど仮想光源角度の範囲を小さく制限することで、法線誤差がレンダリング画像に与える影響を低減することができる。ここで、光源条件の範囲を決定する際の仮想光源角度は、視線ベクトルもしくは光軸とレンダリング時の仮想光源ベクトルのなす角、または、撮影時の光源ベクトルとレンダリング時の仮想光源ベクトルとのなす角である。または、仮想光源角度は、撮影時の複数の光源ベクトルとレンダリング時の仮想光源ベクトルとのなす角の最小値としてもよい。
図4は、第一の光源条件と第二の光源条件の最大値との関係を示す図である。図4において、横軸は第一の光源条件、縦軸は第二の光源条件の最大値をそれぞれ示す。例えば、図4に示されるように、第一の光源条件が大きくなるほど第二の光源条件の最大値を小さくする。なお図4では第一の光源条件に対して第二の光源条件の最大値が線形になるように決定しているが、本発明はこれに限定されるものではない。第一の光源条件に対して第二の光源条件の最大値が非線形あってもよい。また、第一の光源条件に対する第二の光源条件の最大値の関係を関数として記憶しておくこともでき、または、第一の光源条件に対する第二の光源条件の最大値を離散的にテーブルとして記憶しておいてもよい。
続いて、図3のステップS105において、光源条件取得部104cは、ステップS104にて決定された第二の光源条件の範囲(最大値)に基づいて、第二の光源条件を取得する。ステップS103にて第一の光源条件として仮想光源角度を取得した場合、ステップS104において第二の光源条件としての仮想光源強度の範囲を決定し、その範囲に基づいて仮想光源強度を取得する。決定した仮想光源強度の範囲内で仮想光源強度を設定できるようにしてもよい。または、範囲外の仮想光源強度を設定した場合(光源条件取得部104cが第二の光源条件の最大値よりも大きい第二の光源条件の値を取得した場合)、警告を表示させるようにしてもよい。
ステップS103にて第一の光源条件として仮想光源強度を取得した場合、ステップS104において第二の光源条件としての仮想光源角度の範囲を決定し、その範囲に基づいて仮想光源角度を取得する。決定した光源角度の範囲内で光源角度を設定できるようにしてもよく、または、範囲外の仮想光源角度を設定した場合には警告を表示させるようにしてもよい。第二の光源条件の取得は、第一の光源条件と同様に、ユーザが指定した仮想光源角度または仮想光源強度としてもよいし、設定できる最大の仮想光源条件にするなどして自動で決められた仮想光源条件であってもよい。ユーザによって選択された第二の光源条件も第一の光源条件と同様にして情報入力部108からシステムコントローラ110に供給され、光源条件取得部104cがシステムコントローラ110からの情報に基づいて第二の光源条件を取得する。
続いてステップS106において、レンダリング部104dは、ステップS103およびステップS105にて取得した第一の光源条件および第二の光源条件に基づいて、レンダリング画像を生成する。レンダリング画像は、光源条件に基づいて生成した仮想光源下での見えを再現したレンダリング画像のみでもよく、または、入力画像等のベース画像に対して加算や加重平均したものでもよい。いずれの場合でも、ステップS105にて取得した仮想光源強度となるレンダリング画像を生成する。ベース画像としては、前述のように光源位置を変化させて取得した入力画像(少なくとも3つの異なる光源位置で撮影された複数の撮影画像である入力画像に基づく画像)を用いることができる。または、ベース画像として、光源を照射せずに撮影して得られた環境光画像など、光源環境が異なる画像を用いてもよい。また、レンダリング画像の生成においては、ステップS102の法線情報算出において仮定した反射特性でなくてもよく、または、その他の拡散反射特性やそれに加えて鏡面反射特性でのレンダリング画像を生成してもよい。また、入力画像やベース画像を反射率とみなしてレンダリング画像を生成してもよい。
このように本実施例において、処理装置(画像処理部104)は、法線情報取得部104b、光源条件取得部104c、および、レンダリング部104dを有する。法線情報取得部は、被写体の法線情報を取得する。光源条件取得部は、レンダリング時の第一の光源条件として仮想光源角度または仮想光源強度の一方を取得する。そして光源条件取得部は、取得した第一の光源条件に基づいて、レンダリング時の第二の光源条件の最大値として仮想光源角度または仮想光源強度の他方の最大値を決定し、最大値以下の第二の光源条件を取得する。レンダリング部は、第一の光源条件および第二の光源条件に基づいてレンダリング画像を生成する。また光源条件取得部は、第一の光源条件が大きいほど第二の光源条件の最大値を小さくする。
なお本実施例では、撮像装置1を用いて被写体の面法線を算出してレンダリング画像を生成しているが、これに限定されるものではない。例えば図2Bに示されるように、撮像装置1とは異なる処理システム2を用いて処理を行ってもよい。図2Bは、処理システム2のブロック図である。処理システム2は、処理装置500、撮像部501、および光源部502を有する。処理装置500は、入力画像取得部500a、法線情報取得部500b、光源条件取得部500c、および、レンダリング部500dを有する。
処理システム2を用いてレンダリング画像を生成する場合、まず、入力画像取得部500aが互いに位置の異なる複数の光源位置で被写体の撮像を行うことで取得された複数の入力画像を取得する。次に、法線情報取得部500bは、複数の入力画像に基づいて被写体の法線情報および反射率を算出する。そして光源条件取得部500cは、レンダリング画像を生成するための第一の光源条件を取得し、第一の光源条件に基づいて第二の光源条件の範囲(最大値)を決定し、第二の光源条件の範囲に基づいて第二の光源条件を取得する。そしてレンダリング部500dは、取得した光源条件に基づいてレンダリング画像を生成する。なお、撮像部501および光源部502はそれぞれ、個別の装置であってもよいし、光源部502が撮像部501に内蔵されていてもよい。
本実施例によれば、第一の光源条件に基づいて第二の光源条件の範囲(最大値)を決定することで、高品位なレンダリング画像を生成することができる。
次に、本発明の実施例2について説明する。本実施例の撮像装置1aは、実施例1の撮像装置1と同様に、被写体の法線を取得し、高品位なレンダリング画像を生成する。また本実施例の撮像装置1aは、撮影条件に基づいて第一の光源条件の範囲(最大値)を決定し、決定した範囲に基づいて第一の光源条件を取得する。
図5は、本実施例における撮像装置1aのブロック図である。図6は、本実施例におけるレンダリング処理(処理方法)を示すフローチャートである。本実施例のレンダリング処理は、実施例1と同様に、システムコントローラ110および撮像制御部107により、コンピュータプログラムとしての画像処理プログラムに従って実行される。
画像処理部104は、デジタル信号に対して一般的に行われる画像処理と併せて、被写体の法線情報を取得し、レンダリング画像を生成する。図5に示されるように、画像処理部104は、入力画像取得部104a、法線情報取得部104b、光源条件取得部104c、レンダリング部104d、および、撮影条件取得部104eを有する。なお、図6のステップS201、S203、およびS206~S208は、実施例1のステップS101、S102、およびS104~S106とそれぞれ同様であるため、それらの詳細な説明は省略する。
図6のステップS202において、撮影条件取得部104eは、入力画像を取得した際の撮影条件を取得する。撮影条件取得部104eは、例えば、撮影条件として被写体までの距離情報(被写体距離)を取得する。本実施例において、距離情報は、ステップS201にて取得された入力画像が撮影された際のオートフォーカス、またはユーザが手動でフォーカスを行った際のフォーカスレンズの位置から取得される。また、異なる視点から撮影した複数の視差画像を取得するステレオ法によって距離情報を取得してもよい。ステレオ法では、取得した複数の視差画像中の被写体の対応点の視差量と撮影した各視点の位置情報および光学系の焦点距離から三角測量によって奥行きを取得する。距離情報は、被写体の対応点で算出された奥行きの平均値としてもよく、または、被写体の特定の点における奥行きとしてもよい。
視差画像から距離情報を取得する場合、複数の視差画像の撮像部(撮像系)100は、図7に示されるように、撮像光学系101の瞳のうち互いに異なる領域P1、P2を通過した複数の光束を撮像素子102の互いに異なる受光部(画素)に導いて光電変換を行う。
図7は、撮像素子102の受光部と撮像光学系101の瞳との関係を示す図である。撮像素子102には、受光部であるG1画素とG2画素の対(画素対)が複数配列されている。複数のG1画素をまとめてG1画素群といい、複数のG2画素をまとめてG2画素群という。対のG1画素とG2画素は、共通の(すなわち、画素対ごとに1つずつ設けられた)マイクロレンズMLを介して撮像光学系101の射出瞳EXPと共役な関係を有する。また、マイクロレンズMLと受光部との間には、カラーフィルタCFが設けられている。
図8は、射出瞳EXPの位置に薄肉レンズがあると仮定した場合の撮像部(撮像系)の模式図である。G1画素は射出瞳EXPのうち領域P1を通過した光束を受光し、G2画素は射出瞳EXPのうち領域P2を通過した光束を受光する。撮像している物点OSPには必ずしも物体が存在している必要はなく、物点OSPを通った光束は通過する瞳内での領域(位置)に応じてG1画素またはG2画素に入射する。瞳内の互いに異なる領域を光束が通過することは、物点OSPからの入射光が角度(視差)によって分離されることに相当する。すなわち、マイクロレンズMLごとに設けられたG1画素およびG2画素のうち、G1画素からの出力信号を用いて生成された画像とG2画素からの出力信号を用いて生成された画像とが、互いに視差を有する複数(ここでは一対)の視差画像となる。以下の説明において、瞳内の互いに異なる領域を通過した光束を互いに異なる受光部(画素)により受光することを瞳分割という。
図7および図8において、射出瞳EXPの位置がずれる等して、上述した共役関係が完全ではなくなった場合や、領域P1と領域P2とが部分的にオーバーラップする場合でも、得られた複数の画像を視差画像として扱うことができる。
図9は、撮像装置の他の例を示す図である。図9に示されるように、1つの撮像装置に複数の撮像光学系OSj(j=1、2)を設けることで視差画像を取得することができる。また、複数のカメラを用いて同一被写体を撮像する場合も視差画像が得られる。
また本実施例において、撮影条件としてISO感度やノイズ量を取得してもよい。または、入力画像を取得した際の互いに異なる複数の光源位置からの光の発光(光量)ばらつきを撮影条件として取得してもよい。
図6のステップS204において、光源条件取得部104cは、ステップS202にて取得した撮影条件に基づいて、第一の光源条件の範囲(最大値)を決定する。光源の位置が固定されている場合、被写体が遠くなるほど、撮像光学系101の光軸(あるいは視線)と光源方向がなす角(照射角度)が小さくなる。複数の光源位置での輝度変化から被写体の法線を算出する照度差ステレオ法では、照射角度が小さくなると輝度変化が低下し、ノイズの影響が強くなる。ノイズの影響が強くなると、算出される法線にばらつきが生じる。ばらついた法線を用いてレンダリング画像を生成すると、ノイズが増幅されてしまう。したがって、被写体までの距離(被写体距離)が遠くノイズの影響が強くなる場合、第一の光源条件の範囲(最大値)を小さくする。
第一の光源条件が仮想光源角度である場合、被写体までの距離が遠いほど仮想光源角度の最大値を小さくする。第一の光源条件が仮想光源強度である場合、距離が遠いほど仮想光源強度の最大値を小さくする。被写体までの距離が遠いほど第一の光源条件の範囲を制限することで、被写体までの距離が遠くなった際にノイズが法線やレンダリング画像に与える影響を低減できる。また、撮影条件としてISO感度やノイズ量を取得した場合、ノイズ量が多くなる条件ほど第一の光源条件の範囲を小さくする。すなわち、ISO感度が高いほど第一の光源条件の範囲を小さくする。また、撮影条件として入力画像を取得した際の複数の光源の発光ばらつきを取得した場合、発光ばらつきが大きいほど第一の光源条件の範囲を小さくする。
互いに位置の異なる複数の光源位置で被写体の撮像を行って得られた撮影画像を入力画像として取得する際に、複数の光源位置からの光量にばらつきが大きいほど法線誤差が生じるため、第一の光源条件の範囲を小さくすればよい。前述の撮影条件が大きいほど第一の光源条件の範囲を制限することで、ノイズや発光ばらつきが法線やレンダリング画像に与える影響を低減することができる。
図10は、本実施例における撮影条件と第一の光源条件の最大値との関係を示す図である。図10において、横軸は撮影条件(距離、ISO感度、ノイズ量、発光ばらつき)、縦軸は第一の光源条件の最大値をそれぞれ示す。例えば、図10に示されるように、前述の距離情報等の撮影条件が大きくなるほど第一の光源条件の最大値を小さくする。図10では撮影条件に対して第一の光源条件の最大値が線形になるように決定しているが、本実施例はこれに限定されるものではない。撮影条件に対して第一の光源条件の最大値が非線形あってもよい。また、撮影条件に対する第一の光源条件の最大値の関係を関数として記憶しておいてもよく、または、撮影条件に対する第一の光源条件の最大値を離散的にテーブルとして記憶しておいてもよい。また、レンダリング画像における領域毎に第一の光源条件の範囲を決定してもよい。例えば、被写体までの距離が遠い領域ほど仮想光源強度の最大値を小さくする。
続いて、図6のステップS205において、光源条件取得部104cは、ステップS204にて決定された第一の光源条件の範囲(最大値)に基づいて、第一の光源条件を取得する。第一の光源条件として仮想光源角度を取得する場合、ステップS204にて仮想光源角度の範囲(最大値)を決定し、その範囲に基づいて仮想光源角度を取得する。決定した仮想光源角度の範囲内で仮想光源角度を設定できるようにしてもよく、または、範囲外の仮想光源角度を設定した場合には警告を表示させるようにしてもよい。第一の光源条件として仮想光源強度を取得する場合、ステップS204にて仮想光源強度の範囲(最大値)を決定し、その範囲に基づいて仮想光源強度を取得する。決定した仮想光源強度の範囲内で仮想光源強度を設定できるようにしてもよく、または、範囲外の仮想光源強度を設定した場合には警告を表示させるようにしてもよい。
第一の光源条件は、ユーザが指定した仮想光源角度や仮想光源強度としてもよく、または、設定できる最大の光源条件にするなどして自動で決められた光源条件であってもよい。ユーザによって選択された第一の光源条件は、情報入力部108からシステムコントローラ110に供給され、光源条件取得部104cがシステムコントローラ110からの情報に基づいて第一の光源条件を取得する。
このように本実施例において、撮影条件取得部104eは、入力画像が撮影された際の撮影条件を取得する。光源条件取得部104cは、撮影条件に基づいて第一の光源条件の最大値を決定する。好ましくは、撮影条件は、入力画像が撮影された際の被写体距離である。より好ましくは、光源条件取得部は、被写体距離が遠いほど第一の光源条件の最大値を小さくする。また好ましくは、撮影条件は、入力画像におけるノイズ量、入力画像が撮影された際のISO感度、および、入力画像が撮影された際の発光ばらつきの少なくとも一つである。また好ましくは、光源条件取得部は、レンダリング画像の領域毎に第一の光源条件の最大値を決定する。
本実施例によれば、第一の光源条件に基づいて第二の光源条件の範囲を決定することで、高品位なレンダリング画像を生成することができる。また本実施例によれば、撮影条件に基づいて第一の光源条件の範囲を決定し、決定した範囲に基づいて第一の光源条件を取得することで、高品位なレンダリング画像を生成することができる。
次に、本発明の実施例3について説明する。本実施例の撮像装置1bは、実施例1の撮像装置1と同様に、被写体の法線を取得し、高品位なレンダリング画像を生成する。また本実施例の撮像装置1bは、法線信頼度に基づいて第一の光源条件の範囲(最大値)を決定し、決定した範囲に基づいて第一の光源条件を取得する。
図11は、本実施例における撮像装置1bのブロック図である。図12は、本実施例におけるレンダリング処理(処理方法)を示すフローチャートである。本実施例のレンダリング処理は、実施例1と同様に、システムコントローラ110および撮像制御部107により、コンピュータプログラムとしての画像処理プログラムに従って実行される。
画像処理部104は、デジタル信号に対して一般的に行われる画像処理と併せて、被写体の法線情報を取得し、レンダリング画像を生成する。図11に示されるように、画像処理部104は、入力画像取得部104a、法線情報取得部104b、光源条件取得部104c、レンダリング部104d、および、法線信頼度取得部104fを有する。なお、図12のステップS301、S302、およびS306~S308は、実施例1のステップS101、S102、およびS104~S106とそれぞれ同様であるため、それらの詳細な説明は省略する。
ステップS303において、法線信頼度取得部104fは、ステップS302にて取得した法線情報および反射率とステップS301にて取得した入力画像が撮影された際の光源条件に基づいて、再現レンダリング画像を生成する。すなわち法線信頼度取得部104fは、取得した法線情報および反射率を用いて、入力画像を再現したレンダリング画像を生成する。再現レンダリング画像の生成は、ステップS302にて法線情報を算出する際に仮定した反射特性を用いてレンダリング処理により行う。ランバート拡散を仮定して法線情報を算出した場合、式(1)に従って、複数の再現レンダリング画像を生成する。また、再現レンダリング画像は、複数の入力画像のうち一部の入力画像に対応したレンダリング画像としてもよく、または、複数の入力画像の全てに対応する複数のレンダリング画像としてもよい。
また法線信頼度取得部104fは、ステップS301にて取得した入力画像とステップS303にて取得した再現レンダリング画像とに基づいて、法線情報の信頼度である法線信頼度を取得する。前述のように、照度差ステレオ法で面法線を算出した場合、仮定した反射特性とは異なる反射特性の被写体については法線誤差が生じる。このため、誤差が生じた面法線を用いてレンダリング画像を生成すると、レンダリング画像にも誤差が生じる。
そこで法線信頼度取得部104fは、ステップS301にて取得した入力画像とステップS303にて取得した再現レンダリング画像との差分に基づいて、法線信頼度を取得する。差分が大きいほど法線信頼度が低いことを意味する。法線信頼度は、入力画像とステップS303にて取得した再現レンダリング画像との差分としてもよい。または、法線信頼度は、差分を反射率で除した正規化差分を法線信頼度としてもよく、または、差分を入力画像や複数の入力画像の平均値または中央値等の入力画像に基づく画像で除した正規化差分を法線信頼度として用いてもよい。差分を反射率や入力画像で除することで、算出した差分から明るさの影響を除外することができる。
または、複数の入力画像と複数の再現レンダリング画像との複数の差分における最大値である最大差分または平均値である平均差分を法線信頼度としてもよい。また、最大差分や平均差分を反射率で除した正規化最大差分または正規化平均差分を法線信頼度としてもよい。あるいは、最大差分や平均差分を入力画像や複数の入力画像の平均値または中央値等の入力画像に基づいた画像で除した正規化最大差分や正規化平均差分を法線信頼度としてもよい。
また、法線情報を用いたレンダリング処理では、光が遮られて発生する影を再現することができない。したがって、入力画像と再現レンダリング画像との差分をとった際に入力画像における影領域で差分が大きくなり、法線情報が正確であってもエラー領域と検出されてしまう。そこで、法線情報に加えて形状情報を用いて影まで再現した再現レンダリング画像を生成することが好ましい。形状情報がない場合、入力画像における影領域を検出し、検出した影領域においては差分をとらないようにするとよい。入力画像における影領域は、輝度値がしきい値以下である領域とすればよい。あるいは、入力画像と再現レンダリング画像との差分と符号に基づいて法線信頼度を取得するとよい。例えば、入力画像における影領域では、入力画像から再現レンダリング画像を引いた値が負となるため、負の差分領域は差分が大きく(信頼度が低く)ならないようにする。
また、入力画像とステップS303にて取得した再現レンダリング画像との差分に基づいた法線信頼度をしきい値処理したものを法線信頼度としてもよい。具体的には、入力画像と再現レンダリング画像との差分に対して、しきい値以上の差分である領域は信頼度なし領域とし、しきい値より小さい差分である領域は信頼度あり領域とする。なお本実施例では、入力画像と再現レンダリング画像との差分に基づいて法線信頼度を取得する。ただし本実施例は、これに限定されるものではなく、複数の入力画像における輝度値をフィッティングすることで法線情報を取得し、得られたフィッティング誤差やその誤差をしきい値処理したものを法線信頼度として取得してもよい。
続いてステップS304において、光源条件取得部104cは、ステップS303にて取得した法線信頼度に基づいて、第一の光源条件の範囲(最大値)を決定する。法線信頼度が低い場合、第一の光源条件の範囲を小さくする。具体的には、法線信頼度である入力画像と再現レンダリング画像との差分の平均値や中央値、最大値が大きく、信頼度が低いほど第一の光源条件の範囲を小さくする。または、法線信頼度がない領域の画素数が多いほど第一の光源条件の範囲を小さくする。例えば、第一の光源条件が仮想光源角度である場合、法線信頼度が低いほど仮想光源角度の最大値を小さくする。または、第一の光源条件が仮想光源強度である場合、法線信頼度が低いほど仮想光源強度の最大値を小さくする。法線信頼度が低いほど第一の光源条件の範囲を制限することで、法線誤差がレンダリング画像に与える影響を低減することができる。
図13は、本実施例における法線信頼度と第一の光源条件の最大値との関係を示す図である。図13において、横軸は法線信頼度、縦軸は第一の光源条件の最大値をそれぞれ示す。例えば、図13に示されるように、法線信頼度が低くなるほど第一の光源条件の最大値を小さくする。図13では法線信頼度に対して第一の光源条件の最大値が線形になるように決定しているが、本実施例はこれに限定されるものではない。法線信頼度に対して第一の光源条件の最大値が非線形あってもよい。また、法線信頼度に対する第一の光源条件の最大値の関係を関数として記憶しておいてもよく、または、法線信頼度に対する第一の光源条件の最大値を離散的にテーブルとして記憶しておいてもよい。
続いてステップS305において、光源条件取得部104cは、ステップS304にて決定された第一の光源条件の範囲(最大値)に基づいて、第一の光源条件を取得する。第一の光源条件として仮想光源角度を取得する場合、ステップS304にて仮想光源角度の範囲(最大値)を決定し、その範囲に基づいて仮想光源角度を取得する。決定した仮想光源角度の範囲内で仮想光源角度を設定できるようにしてもよく、または、範囲外の仮想光源角度を設定した場合には警告を表示させるようにしてもよい。第一の光源条件として仮想光源強度を取得する場合、ステップS304にて仮想光源強度の範囲(最大値)を決定し、その範囲に基づいて仮想光源強度を取得する。決定した仮想光源強度の範囲内で仮想光源強度を設定できるようにしてもよく、または、範囲外の仮想光源強度を設定した場合には警告を表示させるようにしてもよい。
第一の光源条件は、ユーザが指定した仮想光源角度や仮想光源強度としてもよく、または、設定できる最大の光源条件にするなどして自動で決められた光源条件であってもよい。ユーザによって選択された第一の光源条件は、情報入力部108からシステムコントローラ110に供給され、光源条件取得部104cがシステムコントローラ110からの情報に基づいて第一の光源条件を取得する。
なお本実施例では、法線信頼度に基づいて第一の光源条件の範囲(最大値)を決定し、決定した範囲に基づいて第一の光源条件を取得したが、実施例2で説明したような撮影条件にも基づいて第一の光源条件の範囲を決定してもよい。法線信頼度および撮影条件に基づいて第一の光源条件を決定する場合、撮影条件が大きく、法線信頼度が低いほど第一の光源条件の範囲を小さくすればよい。または、撮影条件に基づいて決定された第一の光源条件の範囲と、法線信頼度に基づいて決定された第一の光源条件の範囲とで、より小さい範囲を採用するあるいは平均の範囲を採用する等してもよい。
このように本実施例において、法線信頼度取得部104fは、法線情報の信頼度である法線信頼度を取得する。光源条件取得部104cは、法線信頼度に基づいて第一の光源条件の最大値を決定する。好ましくは、光源条件取得部は、法線信頼度がないと判定される領域に基づいて、第一の光源条件の最大値を決定する。より好ましくは、光源条件取得部は、法線信頼度がないと判定される領域が多いほど第一の光源条件の最大値を小さくする。また好ましくは、光源条件取得部は、法線信頼度が小さいほど第一の光源条件の最大値を小さくする。また好ましくは、法線信頼度取得部は、少なくとも3つの異なる光源位置で撮影された複数の撮影画像である入力画像と、入力画像の少なくとも一つと同じ光源条件下での見えを再現した再現レンダリング画像とに基づいて、法線信頼度を取得する。
本実施例によれば、第一の光源条件に基づいて第二の光源条件の範囲を決定することで、高品位なレンダリング画像を生成することができる。また本実施例によれば、法線信頼度に基づいて第一の光源条件の範囲を決定し、決定した範囲に基づいて第一の光源条件を取得することで、高品位なレンダリング画像を生成することができる。
次に、図14を参照して、本発明の実施例4について説明する。実施例1~3では、光源を内蔵した撮像装置について説明したが、本実施例では撮像装置と光源ユニットとから構成される処理システムについて説明する。図14は、処理システム3の外観図である。処理システム3は、被写体303を撮像する撮像装置301、および、複数の光源ユニット302を備えて構成される。本実施例の撮像装置301は、実施例1の撮像装置1と同様の構成であるが、光源部として照度差ステレオ法用の複数の光源を内蔵する必要はない。
光源ユニット302は、撮像装置301と有線または無線で接続され、撮像装置301からの情報に基づいて制御できることが好ましい。また、照度差ステレオ法では少なくとも3つの光源を順次照射して撮像された画像が必要であるが、光源が移動可能に構成された光源ユニットを使用する場合、少なくとも一つの光源ユニットを備えていればよい。ただし、光源を移動させて、少なくとも互いに異なる3つの光源位置で撮像を行う必要がある。なお、光源ユニット302が自動で光源位置を変更できない場合や光源ユニット302が撮像装置301により制御できない場合、撮像装置301の表示部に表示される光源位置に位置するようにユーザに光源ユニット302を調整させてもよい。なお、本実施例の法線算出処理は、実施例1~3の処理と同様であるため、詳細な説明は省略する。
本実施例では、第一の光源条件に基づいて第二の光源条件の範囲(最大値)を決定することで、高品位なレンダリング画像を生成することができる。
(その他の実施例)
本発明は、上述の実施例の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
各実施例によれば、高品位なレンダリング画像を生成可能な処理装置、処理システム、撮像装置、処理方法、および、プログラムを提供することができる。
以上、本発明の好ましい実施例について説明したが、本発明はこれらの実施例に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。例えば、第二の光源条件等の範囲は、最大値と最小値との間の範囲であるが、最大値と最小値とが等しい(1つの値のみを有する)場合であってもよい。