本発明の第1態様では、撮像装置の状況が、光源情報の取得に適しているか否かを判断する撮像装置状況判断部と、前記撮像装置状況判断部によって適していると判断されたとき、前記撮像装置によって撮像を行い、この撮像画像を光源画像として取得する光源画像取得部と、前記光源画像取得部によって光源画像が取得されたときにおける、前記撮像装置の状況を表す第1の撮像装置情報を、取得する第1の撮像装置情報取得部と、撮像者の操作によって前記撮像装置による撮像が行われた撮像時における、前記撮像装置の状況を表す第2の撮像装置情報を、取得する第2の撮像装置情報取得部と、前記光源画像、並びに前記第1および第2の撮像装置情報を用いて、前記撮像時における、光源の方向および位置のうち少なくともいずれか一方を含む光源情報を推定する光源情報推定部とを備えた光源推定装置を提供する。
本発明の第2態様では、前記撮像装置状況判断部は、前記撮像装置の光軸の方向を検出し、光軸が上方向を向いているとき、適していると判断する前記第1態様の光源推定装置を提供する。
本発明の第3態様では、前記光源画像取得部は、撮像者の操作による前記撮像装置による撮像が行われないことを確認した後に、光源画像の取得を行う前記第1態様の光源推定装置を提供する。
本発明の第4態様では、前記光源情報推定部は、光源の方向および位置のうち少なくともいずれか一方に加えて、光源の輝度、色、およびスペクトル情報のうち少なくともいずれか1つを推定する前記第1態様の光源推定装置を提供する。
本発明の第5態様では、前記光源画像取得部は、前記光源画像を複数枚取得するものであり、前記第1の撮像装置情報取得部は、前記光源画像取得部によって各光源画像が取得されたとき、それぞれ、前記第1の撮像装置情報を取得するものであり、前記光源推定装置は、前記光源画像取得部によって取得された複数の光源画像から、前記第1の撮像装置情報取得部によって取得された複数の第1の撮像装置情報を用いて、パノラマ光源画像を合成する光源画像合成部を備え、前記光源情報推定部は、前記パノラマ光源画像および前記第2の撮像装置情報を用いて、光源情報の推定を行う前記第1態様の光源推定装置を提供する。
本発明の第6態様では、前記撮像装置の光軸方向を変動させる光軸方向変動手段を備え、前記光軸方向変動手段によって前記撮像装置の光軸方向が変動している状態で、前記光源画像取得部が複数枚の光源画像の取得を行うように、構成されている前記第1態様の光源推定装置を提供する。
本発明の第7態様では、前記光源推定装置は、折り畳み式携帯電話に搭載されており、前記光軸方向変動手段は、前記折り畳み式携帯電話を開閉させる開閉機構である前記第6態様の光源推定装置を提供する。
本発明の第8態様では、前記光軸方向変動手段は、バイブレーション機構である前記第6態様の光源推定装置を提供する。
本発明の第9態様では、撮像装置によって撮像を行い、この撮像画像を光源画像として取得する光源画像取得部と、前記光源画像取得部によって光源画像が取得されたときにおける、前記撮像装置の状況を表す第1の撮像装置情報を、取得する第1の撮像装置情報取得部と、撮像者の操作によって前記撮像装置による撮像が行われた撮像時における、前記撮像装置の状況を表す第2の撮像装置情報を、取得する第2の撮像装置情報取得部と、前記光源画像、並びに前記第1および第2の撮像装置情報を用いて、前記撮像時における、光源の方向および位置のうち少なくともいずれか一方を含む光源情報を推定する光源情報推定部と、前記撮像装置の光軸方向を変動させる光軸方向変動手段とを備え、前記光軸方向変動手段によって前記撮像装置の光軸方向が変動している状態で、前記光源画像取得部が複数枚の光源画像の取得を行うように、構成されている光源推定装置を提供する。
本発明の第10態様では、光源情報を推定する光源推定システムとして、前記第1態様の撮像装置状況判断部、光源画像取得部、第1の撮像装置情報取得部、および第2の撮像装置情報取得部を有し、前記光源画像取得部によって取得された光源画像、前記第1の撮像装置情報取得部によって取得された第1の撮像装置情報、および、前記第2の撮像装置情報取得部によって取得された第2の撮像装置情報を送信する通信端末と、前記第1態様の光源情報推定部を有し、前記通信端末から送信された前記光源画像、並びに前記第1および第2の撮像装置情報を受信し、前記光源情報推定部に与えるサーバとを備えたものを提供する。
本発明の第11態様では、撮像装置の状況が、光源情報の取得に適しているか否かを判断する第1のステップと、前記第1のステップにおいて適していると判断したとき、前記撮像装置によって撮像を行い、この撮像画像を光源画像として取得する第2のステップと、前記第2のステップにおいて光源画像を取得したときにおける、前記撮像装置の状況を表す第1の撮像装置情報を、取得する第3のステップと、撮像者の操作によって前記撮像装置による撮像が行われた撮像時における、前記撮像装置の状況を表す第2の撮像装置情報を、取得する第4のステップと、前記光源画像、並びに前記第1および第2の撮像装置情報を用いて、前記撮像時における、光源の方向および位置のうち少なくともいずれか一方を含む光源情報を推定する第5のステップとを備えた光源推定方法を提供する。
本発明の第12態様では、撮像装置によって撮像を行い、この撮像画像を光源画像として取得する第1のステップと、前記第1のステップにおいて光源画像を取得したときにおける、前記撮像装置の状況を表す第1の撮像装置情報を、取得する第2のステップと、撮像者の操作によって前記撮像装置による撮像が行われた撮像時における、前記撮像装置の状況を表す第2の撮像装置情報を、取得する第3のステップと、前記光源画像、並びに前記第1および第2の撮像装置情報を用いて、前記撮像時における、光源の方向および位置のうち少なくともいずれか一方を含む光源情報を推定する第4のステップとを備え、前記第1のステップにおいて、光軸方向変動手段によって前記撮像装置の光軸方向を変動させ、前記撮像装置の光軸方向が変動している状態で、複数枚の光源画像の取得を行う光源推定方法を提供する。
本発明の第13態様では、撮像装置によって撮像を行う画像撮像部と、前記第11または12態様の光源推定方法によって、被写体に照射する光源の方向および位置のうち少なくともいずれか一方を含む光源情報を推定する光源情報推定部と、前記被写体の、表面の法線情報または3次元位置情報を、形状情報として取得する形状情報取得部と、前記光源情報および形状情報を用いて、前記画像撮像部によって撮像された画像を高解像度化する画像高解像度化部とを備えた画像高解像度化装置を提供する。
本発明の第14態様では、前記画像高解像度化部は、前記画像撮像部によって撮像された画像を、拡散反射成分と鏡面反射成分とに分離し、分離した拡散反射成分と鏡面反射成分とを、個別に、高解像化するものである前記第13態様の画像高解像度化装置を提供する。
本発明の第15態様では、前記画像高解像度化部は、前記画像撮像部によって撮像された画像を、パラメータに分解し、分解したパラメータを、個別に、高解像化するものである前記第13態様の画像高解像度化装置を提供する。
本発明の第16態様では、撮像装置によって撮像を行う第1のステップと、前記第11または12態様の光源推定方法によって、被写体に照射する光源の方向および位置のうち少なくともいずれか一方を含む光源情報を推定する第2のステップと、前記被写体の、表面の法線情報または3次元位置情報を、形状情報として取得する第3のステップと、前記光源情報および形状情報を用いて、前記第1のステップにおいて撮像した画像を高解像度化する第4のステップとを備えた画像高解像度化方法を提供する。
以下、本発明の実施の形態について、図面を参照しながら説明する。
(第1の実施形態)
図1は本発明の第1の実施形態に係る光源推定装置の構成を示すブロック図である。図1において、1001はCCDやCMOS等によって構成された撮像装置、1002は撮像行為を行う主体者である撮像者が撮像装置1001に撮像を指示するための撮像スイッチである。撮像装置1001には3軸の角度センサ1025が搭載されている。
また、101は撮像装置1001の状況が、光源情報の取得に適しているか否かを判断する撮像装置状況判断部、102は撮像装置状況判断部101によって適していると判断されたとき、撮像装置1001によって撮像を行い、この撮像画像を光源画像として取得する光源画像取得部、103は光源画像取得部102によって光源画像が取得されたとき、撮像装置1001の状況を表す第1の撮像装置情報を取得する第1の撮像装置情報取得部、104は撮像者の操作によって撮像装置1001による撮像が行われた撮像時に、撮像装置の状況を表す第2の撮像装置情報を取得する第2の撮像装置情報取得部、そして105は光源画像取得部102によって取得された光源画像、並びに第1の撮像装置情報取得部103によって取得された第1の撮像装置情報、および第2の撮像装置情報取得部104によって取得された第2の撮像装置情報を基にして、撮像時における光源の方向および位置のうち少なくともいずれか一方を推定する光源情報推定部である。
なお、ここでは、撮像装置状況判断部101、光源画像取得部102、第1の撮像装置情報取得部103、第2の撮像装置情報取得部104および光源情報推定部105は、CPU1029によってプログラムを実行することによって、実現されるものとする。ただし、これらの機能の全部または一部を、ハードウェアによって実現するようにしてもかまわない。また、メモリ1028は、光源画像取得部102によって取得された光源画像と、第1の撮像装置情報取得部103によって取得された第1の撮像装置情報を格納する。
図2は本実施形態に係る光源推定装置が搭載されたカメラ付き折り畳み式携帯電話1000の構成例を示す。図2において、図1と共通の構成要素には図1と同一の符号を付している。なお、図2のカメラ付き折り畳み式携帯電話1000では、撮像装置1001に偏光フィルタ1016が設けられており、この偏光フィルタ1016を回転させるためのモータ1026aと、その回転角を検出するためのエンコーダ1027aとが設けられている。また、折り畳み機構を駆動するためのモータ1026bと、その回転角を検出するためのエンコーダ1027bとが設けられている。また、マナーモードスイッチ1034が設けられている。
図3は図2のカメラ付き折り畳み式携帯電話1000が折り畳まれた状態を示す図である。図3において、1005は撮像装置1001の光軸方向を示し、1006は撮像装置1001の視野範囲を示している。
以下、本実施形態に係る光源推定装置の各構成要素の動作について、説明する。
撮像装置状況判断部101は、撮像装置1001の状況が、光源情報を取得するために適しているか否かを判断する。最も一般的な光源として、家庭内では照明、屋外では街灯や太陽が考えられる。そのため、撮像装置1001の撮像方向、つまり光軸の方向が上向きになっている場合、撮像装置1001が光源情報を取得するために適した状況にある、と判断することができる。そこで、撮像装置状況判断部101は、撮像装置1001に搭載された角度センサ1025の出力を用いて、撮像装置101の光軸の方向を検出し、光軸が上方向を向いているとき、光源情報を取得するために適していると判断する。このとき、撮像装置状況判断部101は、光源画像取得部102に撮像を促す信号を送信する。
光源画像取得部102は、撮像装置状況判断部101から撮像を促す信号を受けたとき、すなわち、撮像装置1001の状況が光源情報を取得するために適していると撮像装置状況判断部101によって判断されたとき、撮像装置1001によって撮像を行い、この撮像画像を光源画像として取得する。取得された光源画像は、メモリ1028に格納される。
このとき、光源画像取得部102は、撮像者の操作による撮像が行われないことを確認した後に、光源画像の取得を行うのが好ましい。例えば、撮像スイッチ1002が押されていないことを確認した上で、光源画像の撮像を行えばよい。
光源画像取得部102は、撮像者の撮像意図を考慮して、撮像が行われていない期間を利用して光源画像を撮像するものである。本実施形態に係る光源推定装置では、被写体を撮像するための撮像装置1001を利用して、光源画像の撮像を行う。このため、もし撮像者が被写体をまさに撮像しようとしているその直前に光源画像の撮像が行われてしまうと、撮像者が撮像しようとした瞬間に被写体を撮像することができず、撮像者の撮像意図を無視することになってしまう。
このため、本実施形態では、撮像者の撮像意思を考慮するために、撮像者が撮像を行わないと想定される間、例えば、机などにおかれている間に光源画像の撮像を行う。例えば、図3のカメラ付き折畳式携帯電話1000が机などにおかれている場合、光軸方向1005は上向きになると考えられる。この状態であれば、最適な光源画像を撮像することが可能である。
図4は撮像装置状況判断部101および光源画像取得部102の処理の一例を示すフローである。まず、撮像装置状況判断部101は、撮像装置1001の光軸方向の検出を行い、その光軸方向が上向きであるか否かを判断する(ステップS121)。光軸方向が上向きでない場合(ステップS121でNo)、光軸方向が上向きになるまで繰り返し光軸方向のチェックを行う。一方、光軸方向が上向きである場合(ステップS122でYes)、光源画像取得部102は撮像スイッチ1002のチェックを行う(ステップS122)。もし、オートフォーカス(AF)などの処理を行うために、撮像スイッチ1002が押されている場合(ステップS122でNo)、撮像が行われる可能性が高いため、光源画像の撮像は行わない。一方、撮像スイッチ1002が押されていない場合(ステップS122でYes)、光源画像取得部102は撮像装置1001によって撮像を行い、光源画像を取得する(ステップS123)。
なお、ここでは、撮像スイッチのチェックによって、撮像者の操作による撮像が行われるか否かを判断するものとしたが、撮像者が撮像する意思を持っているか否かを確認する方法は、これに限られるものではない。例えば、「撮像中ですか?」という撮像を確認する表示をディスプレイに表示し、撮像者が「No」という意思を表示するか、なんの反応もない場合に、撮像者が撮像する意思を持っていないと判断してもかまわない。
また、加速度センサなどを利用し、撮像装置1001が静止しているとき、光源画像の取得を行うようにしてもかまわない。すなわち、撮像装置1001が静止している場合、撮像装置1001は撮像者が保持しておらず、机などにおかれていると判断できる。そのため、この場合、撮像者は撮像を行っていない可能性が高い。一方、撮像者が撮像を行うために撮像装置1001を構えている場合、手ぶれの影響を加速度センサが感知する。このときは、光源画像取得部102は撮像を行わないようにすればよい。
また、マナーモードを利用して撮像者が撮像する意思を持っているか否かを確認するようにしても構わない。この処理を詳述する。
図4Aはマナーモードを利用して撮像者が撮像する意思を持っているか否かを確認する場合の、撮像装置状況判断部101および光源画像取得部102の処理の一例を示すフローチャートである。まず、撮像装置状況判断部101は、撮像装置1001の光軸方向の検出を行い、その光軸方向が上向きであるか否かを判断する(ステップS121)。光軸方向が上向きでない場合(ステップS121でNo)、光軸方向が上向きになるまで一定時間間隔で光軸方向のチェックを行う。一方、光軸方向が上向きである場合(ステップS121でYes)、光源画像取得部102はマナーモードのチェックを行う(ステップS124)。もし、マナーモードスイッチ1034がOFFに設定されている場合(ステップS124でNo)、撮像が行われる可能性が高いため、光源画像の撮像は行わない。一方、マナーモードスイッチ1034がONに設定されている場合(ステップS124でYes)、光源画像取得部102は撮像装置1001によって撮像を行い、光源画像を取得する(ステップS123)。
このとき、マナーモードとしてドライブモードが設定されている場合、撮像者は移動中であると考えられるため、光源画像の撮像は行わないようにしても構わない。つまり、サイレントモードでは光源画像を撮影するが、ドライブモードでは撮影を行わない。
第1の撮像装置情報取得部103は、光源画像取得部102によって光源画像が取得されたとき、撮像装置1001の状況を表す第1の撮像装置情報を取得する。具体的には例えば、角度センサ1025の出力と撮像装置1001の焦点距離情報とを、第1の撮像装置情報として取得する。取得された第1の撮像装置情報はメモリ1028に格納される。図5はメモリ1028に保持された情報の一部を示す模式図である。ある光源画像に対して、角度センサ出力と焦点距離が、第1の撮像装置情報として格納されている。
撮像装置1001の姿勢情報は、角度センサ1025の出力を使用して、以下の3x3行列Rlightで表現される。
撮像装置1001の姿勢情報を表す、この3x3行列Rlightのことをカメラ姿勢行列と呼ぶ。ここで、(α,β,γ)はカメラに取り付けられたセンサ出力のロール・ピッチ・ヨー角表現での値であり、ある基準点からの動き量で表現される。ロール・ピッチ・ヨー角表現とは、図6に示したように、任意の回転を、z軸周りの回転であるロー、次に、新しいy軸周りの回転であるピッチ、最後に、新しいx軸まわりの回転であるヨーの3段階の回転によって表すものである。
また、Rx(α)、Ry(β)、Rz(γ)はロール・ピッチ・ヨー角からx軸回転、y軸回転、z軸回転へ変換する行列であり、次式で表される。
また、撮像装置1001がズーム可能である場合、そのズーム情報も焦点距離情報として取得される。また、撮像装置1001が固定焦点の場合、その焦点距離情報も取得される。焦点距離情報は、画像処理の分野で広く使われているカメラキャリブレーションを行なうことにより、取得できる。
このような、カメラに取り付けられた角度センサや角速度センサからカメラの姿勢情報を取得する方法は、既存の手法を利用すればよい(例えば、「岡谷貴之,“メカニカルセンサとイメージセンサの融合による3次元形状復元”,情報処理学会研究報告会,2005−CVIM−147,pp.123−130,2005」)。
第2の撮像装置情報取得部104は、撮像者の操作によって撮像装置1001による撮像が行われた撮像時に、撮像装置1001の状況を表す第2の撮像装置情報を取得する。ここでも、上述した第1の撮像装置情報取得部103と同様に、角度センサ1025の出力と撮像装置1001の焦点距離情報とを、第2の撮像装置情報として取得するものとする。このとき、角度センサ1025の出力(α,β,γ)から求められる姿勢行列Rnowを、現在の姿勢行列と呼ぶ。
光源情報推定部105は、メモリ1028に格納された光源画像および第1の撮像装置情報と、第2の撮像装置情報取得部104によって取得された第2の撮像装置情報を用いて、撮像者の操作による撮像時における、光源情報を推定する。ここでは、光源の方向を推定するものとする。
まず、光源画像において、十分に輝度値の高い画素を、光源を撮像している画素すなわち光源画素として抽出する。図7はこの処理を説明するための模式図である。図7では、視野範囲1006を持った撮像装置1001が光源1007を撮像している。このとき、撮像画像1008において、光源が撮像されている領域1009の輝度値は非常に高くなる。そこで、閾値処理を利用し、所定の閾値よりも輝度値が高い画素を光源画素として抽出する。
こうして求まった光源画素から、光源方向を推定する。この処理には、撮像装置の画素位置(u,v)と画像座標系とよばれる撮像素子上での実寸位置(xf,yf)との関係式が必要である。レンズの歪みなどの影響を考慮すると、画素位置(u,v)と実寸位置(xf,yf)との関係は、次式で求められる。
ただし、(Cx,Cy)は画素中心位置、sはスケールファクタ、(dx,dy)は撮像素子1画素のサイズ[mm]、Ncxはx方向の撮像素子数、Nfxはx方向の有効画素数、κ1、κ2はレンズの歪みを示す歪みパラメータである。
また、図8に示した、撮像装置の焦点位置を原点、その光軸方向をZ軸にとったカメラ座標系(x,y,z)と画像座標系(xf,yf)との関係は、次式で求められる。
ここで、fは撮像装置の焦点距離を表している。つまり、カメラパラメータ(Cx,Cy),s,(dx,dy)、Ncx、Nfx、f、κ1、κ2が既知であれば、(式2)(式3)により、画素位置(u,v)とカメラ座標系(x,y,z)の変換が可能である。
通常、Ncx、Nfxは撮像素子が特定できれば既知であり、また、(Cx,Cy),s,(dx,dy)、κ1、κ2、fはいわゆるカメラキャリブレーションを行うことで既知となる(例えば、Roger Y.Tsai,“An Efficient and Accurate Camera Calibration Technique for 3D Machine Vision”,Proceedings of IEEE Conference on Computer Vision and Pattern Recognition,Miami Beach,FL,1986,pp.364−374)。これらのパラメータは、撮像装置の位置や姿勢が変化しても変化しない。このようなパラメータをカメラ内部パラメータとよぶ。
そこで、撮像を行う前にカメラキャリブレーションを行い、カメラ内部パラメータ(Cx,Cy)、s、(dx,dy)、Ncx、Nfx、f、κ1、κ2を特定する。これらの値は、撮像装置購入時に付属されているものを利用しても構わない。また、カメラが固定焦点ではなく、ズーム可能である場合、各ズーム時の焦点距離fを個別に求めておき、必要なときに選択できるようにしておけばよい。そして、焦点距離fを撮像した画像とともに保持しておけばよい。
以上の情報を利用して、光源画素から光源方向を推定する。光源画素の画素位置を(ulight,vlight)とすると、光源方向Llightは以下の式で表現できる。
ところで、Llightは光源画像を撮像したカメラ座標系で表現されているため、現在のカメラ座標系Lnowで表現しなおす。これは、以下の式で表現できる。
以上の処理を行うことにより、光源方向ベクトルLnowを推定する。このようにして、光源の方向が推定される。
さらに、撮像装置1001が移動することを利用して、光源の方向だけでなく、3次元位置まで求めるようにしても構わない。
図9はこの処理を説明するための模式図である。図9において、1001A、1010Aは時刻t=t1における撮像装置と推定された光源方向ベクトル、また、1001B、1010Bは時刻t=t2における撮像装置と推定された光源方向ベクトルを示している。ここで、時刻t1とt2における撮像装置の相対的な位置関係と姿勢がわかっていれば、光源ベクトル1010A,1010Bを延長した交点に光源は存在するはずである。つまり、光源の3次元位置は以下のように求まる。
時刻t1における、撮像装置の姿勢行列、撮像装置の相対的な3次元位置、および推定された光源方向ベクトルをそれぞれ、R1、P1、L1とし、時刻t2における、撮像装置の姿勢行列と推定された光源方向ベクトルをそれぞれ、R2、L2とする。ただし、時刻t2において、撮像装置の位置は原点O(0,0,0)であるとする。このとき、光源位置Plightは次式を満たす。
ただし、s,mは任意の定数である。もし、すべての推定値が正しく、ノイズが存在していなければ、(式5)と(式6)をsとmに関する連立方程式として解くことによって、光源位置Plightは求まる。しかし、通常はノイズの影響があるため、最小自乗法を利用して、光源位置を求める。
まず、以下の関数f(m,s)を考える。
ここで、m,sは以下の関係式を満たす。
つまり、
よって、(式7)、(式8)をmとsに関する連立方程式として解き、求まったsとmを(式5)または(式6)へ代入することにより、光源位置Plightが求まる。このようにして、光源の位置が推定される。
なお、時刻t1における撮像装置の相対的な3次元位置P1(時刻t1とt2における撮像装置の相対的な位置関係)は、オプティカルフローを用いることによって求められる。オプティカルフローは、被写体上のある1点に対応する、時間的に連続した2つの画像上の点、すなわち対応点を結ぶベクトルであり、対応点とカメラ動きの間には、幾何学的な拘束式が成り立つ。このため、対応点が一定の条件を満たす場合にカメラの動きを算出することができる。
異なる時刻における撮像装置の相対的な位置関係をオプティカルフローから求める手法としては、例えば8点法と呼ばれる手法が知られている(H.C.Longuet−Higgins,“A computer algorithm for reconstructing a scene from two projections”,Nature,vol.293,pp.133−135,1981)。この手法は、2画像間の静止した8点以上の対応点の組からカメラ動きを算出するものである。また、このような2画像間の対応点を求める手法は、一般に広く知られた方法であるので、詳細な説明を省略する(例えば、Carlo Tomasi and Takeo Kanade,“Detection and Tracking of Point Features”,Carnegie Mellon University Technical Report,CMU−CS−91−132,April 1991)。
さらに、光源画素の輝度値やRGB値を求めることによって、光源の輝度や色も求めることができる。また、画像をマルチスペクトルカメラで取得することによって、光源のスペクトルを検出するようにしても構わない。このように光源のスペクトルを取得することによって,後述する画像の高解像度化や拡張現実において、色再現性の高い画像が合成できることが知られている(例えば、「内山俊郎,土田 勝,山口雅浩,羽石秀昭,大山永昭,“マルチスペクトル撮影による光源環境計測とスペクトルに基づく画像生成”,電子情報通信学会技術研究報告PRMU2005−138,pp.7−12,2006」)。
また、光源情報推定部105は、光源情報として、光源の照度情報を取得するようにしても構わない。これは撮像装置1001と光軸方向が一致した照度計を利用すればよい。照度計としては、光電池にマイクロアンペア計を接続し、入射光によって生じる光電流を読む光電池照度計などを用いればよい。
以上のように本実施形態の光源推定装置によると、撮像装置の状況が光源情報の取得に適していると判断されたとき、この撮像装置によって光源画像を取得し、光源画像の取得時における第1の撮像装置情報と、撮像者による撮像時における第2の撮像装置情報とを用いて、撮像時における光源情報を推定する。したがって、カメラ付き携帯電話などにおいて、付加的な撮像装置を搭載することなく、被写体周囲の光源情報を推定することができる。
なお、上述の実施形態では、撮像装置状況判断部101が撮像装置1001の光軸方向を検出するために、角度センサ1025の出力を用いるものとしたが、これ以外にも例えば、錘とタッチセンサを利用した方法(特開平4−48879号公報参照)や、加速度センサを利用した方法(特開昭63−219281号公報参照)など、既存の方法を利用してもよい。
ここでは、錘とタッチセンサを利用する方法について説明する。図10は錘とタッチセンサの構成を示す図である。図10(a)において、1003は常に垂直方向を保持するよう基端部を回動可能に支持して吊下された錘、1004A、1004Bはタッチセンサである。また、1005は撮像装置の光軸方向を示している。図10(b)に示すように、撮像装置の光軸方向1005と水平面との角度をθとすると、タッチセンサ1004A,1004Bは、光軸方向1005が水平方向から所定角度θ1、θ2だけ傾いたとき、錘1003に当接するように設置されている。
図11は図10の錘とタッチセンサがカメラ付き折り畳み式携帯電話に搭載された場合の構成例である。図11のカメラ付き折り畳み式携帯電話が、撮像装置1001を下にして置かれた場合、錘1003がタッチセンサ1004Aに当接し、タッチセンサ1004AがONになる(図12(a))。一方、撮像装置1001を上にして置かれた場合、錘1003がタッチセンサ1004Bに当接し、タッチセンサ1004BがONになる(図12(b))。
図13は光軸方向とタッチセンサのON/OFFとの関係を示す図である。すなわち、タッチセンサ1004AがONになり、タッチセンサ1004BはOFFのとき、光軸は水平方向から+θ1以上傾いた下向きであると推定できる。また、タッチセンサ1004BがONになり、タッチセンサ1004AはOFFのとき、光軸は水平方向から−θ2以上傾いた上向きであると推定できる。一方、タッチセンサ1004A、1004B両方ともOFFの場合は、−θ2<θ<θ1であり、光軸方向はほぼ水平と推定できる。
このように、錘とタッチセンサを利用して、撮像装置1001の光軸方向を検出することが可能となる。
なお、ここでは、カメラ付き折畳式携帯電話を例にとって説明したが、もちろんデジタルスチルカメラやデジタルビデオカメラであっても、錘とタッチセンサを利用して、撮像装置の光軸方向を検出することは可能である。図14はデジタルスチルカメラに錘とタッチセンサを搭載した場合の構成例である。図14(a)に示すように、撮像装置1001の光軸が下向きのときは錘1003がタッチセンサ1004Aに当接しており、一方、図14(b)に示すように、撮像装置1001の光軸が上向きのときは錘1003がタッチセンサ1004Bに当接している。
また、上述の実施形態では、撮像装置状況判断部101は、撮像装置1001の光軸の方向を検出して、撮像装置1001の状況が光源情報の取得に適しているか否かを判断するものとしたが、光軸の方向を検出する代わりに、例えば、撮像された画像の輝度値を検出するようにしても構わない。
撮像画像に光源が映っている場合、光源が撮像されている画素の輝度値は非常に高くなる。そこで、撮像装置1001により画像を撮像し、撮像された画像に閾値以上の輝度値が存在する場合、光源が撮像されており、光源情報の取得に適した状況であると判断することができる。このとき、光源の輝度値は非常に高いと考えられるため、撮像装置1001は露光時間をできる限り短くして撮像することが望ましい。
あるいは、撮像装置1001の状況が光源情報の取得に適しているか否かを判断するために、カメラの視野範囲に遮蔽物が存在するか否かを検出するようにしても構わない。これは、遮蔽物が存在する場合、光源が遮蔽されてしまい、光源を撮影できない可能性が高くなるためである。
遮蔽物の存在を検出するためには、距離情報を利用する方法と、画像情報を利用する方法とがある。前者は、例えばカメラのオートフォーカスなどに利用されている測距センサの出力を利用し、例えば、1m以内に被写体が存在する場合はその被写体は遮蔽物であると判断するようにすればよい。また、後者の画像情報を利用する方法は、例えば、撮像装置1001で画像を撮影し、その画像中から画像処理により人物を検出する。もし、人物が撮像されていた場合、その人物は遮蔽物であると判断する。これは、カメラの近傍で光源を遮蔽する最も一般的な被写体は人物だと考えられるためである。画像からの人物の検出は、例えば、色情報を利用して、肌色領域を検出するなど、広く知られている画像認識技術を利用すればよい。
また、光源画像取得部102が光源画像の取得を行う際には、フラッシュを照射せずに撮像を行うことが望ましい。これは、鏡のような鏡面反射を起こす被写体が撮像装置1001の視野内に存在している場合、フラッシュが反射され、誤って光源画素として推定されてしまうためである。そのため、冷却CCDカメラや多重露光撮像など、広いダイナミックレンジを撮像できる撮像装置を利用することが望ましい。また、光源画像取得部102が光源画像の取得を行う際に、露光量が足りない場合は、露光時間を長くすればよい。これは、上述のように、加速度センサなどを利用し、撮像装置1001が静止しているときのみ、光源画像の取得を行う場合に特に有効である。
(第2の実施形態)
図15は本発明の第2の実施形態に係る光源推定装置の構成を示すブロック図である。図15において、図1と共通の構成要素には図1と同一の符号を付しており、ここではその詳細な説明は省略する。
図15の構成では、図1の構成に加えて、光源画像合成部106が設けられている。光源画像合成部106は、光源画像取得部102によって取得された複数の光源画像から、第1の撮像装置情報取得部103によって取得された複数の第1の撮像装置情報を用いて、パノラマ光源画像を合成する。パノラマ光源画像とは、広範囲なシーンが撮像された光源画像のことである。パノラマ光源画像を利用することによって、広範囲なシーンにおける光源情報を一度に取得することができる。
本実施形態では、撮像装置状況判断部101、光源画像取得部102および第1の撮像装置情報取得部103が、処理を繰り返し実行し、複数枚の光源画像を取得するとともに、各光源画像にそれぞれ対応する複数の第1の撮像装置情報を取得する。これら複数組の光源画像および第1の撮像装置情報は、メモリ1028に格納される。
この際、例えば、第1の撮像装置情報取得部103は、光源画像取得部102によって新たな光源画像が取得されたとき、この新たな光源画像をすでに撮像されている光源画像と比較し、その差が大きい場合のみ、第1の撮像装置情報を取得するようにすればよい。一方、その差が小さい場合は、新たな光源画像を廃棄するようにすればよい。あるいは、加速度センサや角度センサを利用して、撮像装置1001が動いたときに、光源画像と第1の撮像装置情報を取得して格納するようにしてもかまわない。
光源画像合成部106は、メモリ1028に格納された複数組の光源画像と第1の撮像装置情報から、一枚の広域なパノラマ光源画像を合成する。
図16はパノラマ光源画像の合成方法を説明するための模式図である。図16において、1001は撮像装置、1006は視野範囲、1011は画像を投影するための投影面、1012は撮像した光源画像を投影した投影画像を示している。まず、メモリ1028に格納された光源画像を、これに対応する第1の撮像装置情報を用いて、投影面1011に投影する。ここで、投影面は半球状であるものとする。撮像装置1001に搭載された角度センサ1025の出力(α,β,γ)が、
であるときのカメラ座標系(x、y、z)を(Xw,Yw,Zw)とすると、投影面は以下の式で表される。
ここで、rprjは投影面1011である半球の半径である。例えば、屋外では街灯を想定し、10mとし、また屋内では天井に敷設された照明を想定し、2.5m程度とすればよい。このような屋外・屋内の切り替えは、例えば、屋内撮像モードと屋外撮像モードとを撮像者が切り替えるようにすればよい。
(式4)、(式10)より、全ての画素は次式によって投影面1011に投影できる。
ただし、R0は(式1)と(式9)から求まる姿勢行列である。
(式11)を利用して、撮像された全ての光源画像を投影面1011に投影し、投影画像1012を作製する。この際、2つ以上の光源画像が投影面上の同一領域に投影される場合があるが、この場合は例えば、新たに撮像された光源画像を優先し、以前に撮像された光源画像による投影画像1012は廃棄するようにすればよい。
このように、複数枚の光源画像を統合して投影画像を合成することにより、みかけの視野範囲を広げることが可能である。図17はこの様子を示した模式図である。図17において、1001は撮像装置、1005、1006はそれぞれ撮像装置1001の姿勢を変更した際の光軸方向と視野範囲、1013は姿勢を変更して撮像した画像を統合したことによって得られた、みかけの視野範囲を示している。このように、光軸方向を変化させて撮像した画像を統合してパノラマ画像化することにより、視野範囲を広げることができる。
また、投影面1011は半球である必要はなく、例えば屋内であれば、図18に示したように、直方体であっても構わない。この場合、カメラ座標系(x、y、z)を(Xw,Yw,Zw)とすると、投影面である直方体の各面は以下の式で表される。
ここで、a、b、cは定数であり、図18の直方体上の投影面を示している。よって、(式11)と同様に、(式4)と(式59)の交点を求めることにより、すべての画素は次式によって投影面1011に投影できる。
ただし、R0は(式1)と(式9)から求まる、姿勢行列である。
なお、屋外・屋内の切り替えは、光源画素の色を利用して行ってもかまわない。すなわち、撮像された光源画素のRGB成分から求まる色を利用し、それが太陽光か、あるいは蛍光灯または電球かを判別し、太陽光の場合は屋外、蛍光灯や電球の場合は屋内と判別すればよい。この場合、撮像装置のRGBそれぞれの波長特性と、画像の明るさの変化に対する電圧換算値の変化の比であるガンマ値とを保持しておけばよい。
光源情報推定部105は、光源画像合成部106が合成したパノラマ光源画像を利用して、光源情報を推定する。ここでは、光源情報として、光源位置を推定する方法を説明する。
まず、第1の実施形態で述べた方法によって、パノラマ光源画像から光源画素を抽出する。こうして抽出された光源画素の位置は、撮像装置1001の姿勢が(式9)である場合におけるものである。そこで、第2の撮像装置情報取得部104によって取得された第2の撮像装置情報を用いて、次式により、撮像者による撮像時におけるカメラ座標での光源位置(Xl_now,Yl_now,Zl_now)を推定する。
以上のように本実施形態の光源推定装置によると、パノラマ光源画像から、光源情報が推定されるので、広範囲なシーンにおける光源情報を一度に取得することができる。
(第3の実施形態)
図19は本発明の第3の実施形態に係る光源推定装置の構成を示すブロック図である。図19において、図1と共通の構成要素には図1と同一の符号を付しており、ここではその詳細な説明を省略する。
図19の構成は、折り畳み式携帯電話に搭載されていることを前提としている。そして、折り畳み式携帯電話を開閉させる開閉機構1031と、開閉機構1031に開閉動作を実行させるための開閉スイッチ1014とを備えている。開閉スイッチ1014が押されて開閉機構1031が開閉動作を実行すると、折り畳み式携帯電話に搭載された撮像装置1001の光軸方向が、この開閉動作に伴い変化する。すなわち、開閉機構1031は、撮像装置1001の光軸方向を変動させる光軸方向変動手段として、機能する。
光源画像取得指示部110は、開閉スイッチ1014が押されたとき、まず、光源画像取得部102に光源画像の取得を行うよう指示する。このとき、撮像装置1001は連写や動画撮影をすることが望ましい。撮像装置1001の撮像開始後、光源画像取得指示部110は開閉機構1031によって開閉動作を実行する。これによって、開閉機構1031が開閉動作を実行する間に、言い換えると、光軸方向変動手段によって撮像装置1001の光軸方向が変動している状態で、光源画像取得部102によって光源画像の取得が行われる。これによって、図17に示したように、広域な視野範囲において、複数枚の光源画像を撮像することができる。
図20は本実施形態に係る光源推定装置が実装されたカメラ付き折り畳み式携帯電話1000の外観図である。図20において、1001Aと1001Bは撮像装置、1002は撮像スイッチ、1014は折り畳み式携帯電話の開閉スイッチである。また、撮像装置1001A,1001Bに付された矢印は光軸方向を示している。折り畳み式携帯電話は、通話や撮像を行わない際は、通常、液晶ディスプレイの保護や携帯性の向上のために、図20(b)のように折り畳まれている。
図20(b)の状態で、開閉スイッチ1014を押すと、折り畳み式携帯電話1000は、図21(a)→(b)→(c)→(d)→(e)のように、自動で開く。図21において、1006A、1006Bは折り畳み式携帯電話1000に搭載された2つの撮像装置(図20における1001A,1001B)で撮像される視野範囲を示している。図21から、カメラ付き折り畳み式携帯電話1000の開閉スイッチ1014を利用することによって、撮像装置1001A,1001Bの光軸方向を変動させることができることが分かる。
開閉機構1031は例えば、バネやロック機構を設けることによって実現できる(例えば、特開平7−131850号公報参照)。また、折り畳み式携帯電話のヒンジ部に、モータを設置しておいてもよい。このとき、撮像装置1001の姿勢情報は、モータに併せて設置したロータリーエンコーダを、角度センサ1025として用いて取得すればよい。
図19の構成の動作について説明する。まず、開閉スイッチ1014が押されると、光源画像取得指示部110は、これを検出し、光源画像取得部102に光源画像の取得を指示する。また、光源方向変動手段としての開閉機構1031は、開閉スイッチ1014が押されたとき、折り畳み式携帯電話の自動開閉動作を実行する。開閉機構1031が作動している間に、光源画像取得指示部110から指示された光源画像取得部102は、撮像装置1001を利用して、光源画像を複数枚、撮像する。以降の動作は、第1の実施形態と同様である。
また、本実施形態では、撮像装置1001を移動させながら光源画像を撮像するため、露光時間はできるだけ短くすることが望ましい。また、手ぶれ補正処理を導入することによって、撮像装置1001が移動していても光源画像をブレなしに撮像するようにしてもかまわない。
ここで、手ぶれ補正処理を導入しない場合の露光時間TEとすると、露光時間TEは次式で表現される。
ここで、Mは開閉スイッチ1014を押すことによって回転する光軸の回転速度[deg/sec]、θsは撮像装置1001の縦方向の視野角[deg]、Lxは撮像装置1001の縦方向の画素数である。例えば、M=180[deg/sec]、θs=80[deg]、Lx=1000とすると、
となり、露光時間を1/4000秒程度にすればよい。
また、(式60)より、光軸の回転速度Mを決定するようにしても構わない。例えば、θs=40[deg]、Lx=1000、TE=0.0005[sec]であれば、
M<40[deg/sec]
となり、通常の開閉動作に比べ、ゆっくりと開閉機構1031を動作させればよい。
また、光源環境は時間とともに変化していくため、光源画像の取得は、実際に被写体を撮像する時間にできるだけ近いタイミングで実行することが望ましい。通常、開閉スイッチ1014は撮像を行う直前に押されることが多いため、本実施形態によると、撮像直前の光源画像を取得できる可能性が高くなるので、非常に有効である。
また、光源画像として、わざとボケた画像を撮影するようにしても構わない。ボケた画像を撮影することによって、撮影シーンにおける人物のプライバシーを保持しながら光源画像を撮像することができる。これは、例えば、露光時間を長くすることで実現できる。
前述のように、(式60)を満たさない場合、開閉機構1031による光軸の移動に伴い動きブレが生じ、ボケた画像が撮影される。そこで、例えば以下の式を満たす露光時間や回転速度を決定すればよい。
ここで、TBはボケ量を決定する定数である。例えば、TB=8、θs=40[deg]、Lx=1000、M=40[deg/sec]の場合、露光時間TE=0.008[sec]とすればよい。
また、複数枚の光源画像から、投票処理を利用して光源方向を推定してもよい。これにより、光源方向の推定精度を上げることができる。例えば、ある光源画像から光源位置を求めた結果、他の光源画像における光源位置と大きなズレがある場合、あるいは、他の光源画像には対応する光源が存在しないような場合、その光源位置の推定は失敗していると判断して、光源推定結果から廃棄するようにすればよい。
また、光源画像がきちんと撮像されていない場合、撮像を再度行うように促しても構わない。例えば、推定した光源情報から推定される画像と実際に撮像された光源画像とを比較し、その差が大きい場合は、光源画像において光源が撮像されておらず、光源推定に失敗していると判断すればよい。撮像を促す方法としては、例えば、音声で「再度、光源を撮像してください」と伝えたり、ディスプレイに「再度、光源を撮像してください」と表示させたりすればよい。
図22は本実施形態に係る光源推定装置の他の構成を示すブロック図である。図22において、図1および図19と共通の構成要素には、図1および図19と同一の符号を付しており、ここではその詳細な説明を省略する。
図22の構成は、第1の実施形態で示した撮像装置状況判断部101を備えている。また、例えば携帯電話のバイブレーション機能を実現するために用いられる、バイブレーション機構1026を備えている。バイブレーション機能とは、携帯電話がマナーモード時などに振動で着信を知らせる機能のことである。バイブレーション機能がONの状態で、バイブレーション機構1026が振動動作を実行すると、携帯電話に搭載された撮像装置1001の光軸方向が、この振動動作に従って変化する。すなわち、バイブレーション機構1026は、撮像装置1001の光軸方向を変動させる光軸方向変動手段として、機能する。
撮像装置状況判断部101は、第1の実施形態で説明したように、撮像装置1001の状況が光源情報を取得するのに適しているか否かを判断する。光源画像取得指示部110は、撮像装置状況判断部101によって適していると判断されたとき、バイブレーション機構1026に振動動作を実行させるとともに、光源画像取得部102に光源画像の取得を行うよう指示する。これによって、バイブレーション機構1026が振動動作を実行している間に、言い換えると、光軸方向変動手段によって撮像装置1001の光軸方向が変動している状態で、光源画像取得部102によって光源画像の取得が行われる。これによって、図17に示したように、広域な視野範囲において、複数枚の光源画像を撮像することができる。この場合、撮像装置1001は静止していないため、露光時間は短くすることが望ましい。
このとき、撮像装置1001の視野角をθs、バイブレーション機構1026による携帯電話の振動する角度をθv(図23の振動角)とすると、拡大された視野角θtは次式で表現される。
この式から、撮像装置1001の視野角θsと光源推定に必要な視野角θtが決まれば、必要な振動量を計算することができる。例えば、撮像装置1001の視野角θsが80度であり、光源推定に90度の視野角が必要だとすると、振動角は5度程度となる。これは、11cmの高さのある携帯電話を9mm程度振動させることによって実現できる値である。
なお、光源画像の取得のためにバイブレーション機構1026を動作させる際に、例えば、着信時やメール受信時とは異なる音をスピーカから流すようにしてもよい。これにより、光源画像の取得時を、着信時やメール受信時と区別することができる。また、光源画像を取得している際に、LEDやインターフェイス用の液晶ディスプレイを光らせて、利用者に告知するようにしてもかまわない。
もちろん、音やLED、ディスプレイによって告知した後に、バイブレーション機構1026を動作させて光源画像を取得するようにしてもかまわない。
図24は本実施形態に係る光源推定装置の他の構成例を示すブロック図である。図24において、図1および図22と共通の構成要素には、図1および図22と同一の符号を付しており、ここではその詳細な説明を省略する。
図24の構成では、図22と対比すると、メール受信検出部1032が設けられており、撮像装置状況判断部101が省かれている。メール受信検出部1032がメール受信を検出したとき、バイブレーションモードに設定されているものとすると、バイブレーション機構1026が振動動作を行う。またこのとき、光源画像取得指示部110は、メール受信検出部1032からの信号を受けて、光源画像取得部102に光源画像の取得を指示する。このような動作によって、バイブレーション機構1026が振動動作を実行している間に、言い換えると、光軸方向変動手段によって撮像装置1001の光軸方向が変動している状態で、光源画像取得部102によって光源画像の取得が行われる。
この構成によると、メールの受信によって作動するバイブレーション機能を利用して、撮像装置の光軸方向が変動した状態で複数の光源画像を取得することができるため、余計なバイブレーションを行う必要がなくなるというメリットがある。
以上のように本実施形態によると、光軸方向変動手段によって撮像装置の光軸方向が変動している状態で、光源画像の取得が行われるため、被写体周囲の広い範囲にわたって光源画像を取得することができるので、精度良く、光源情報を推定することができる。
なお、上述した各構成において、第2の実施形態で示した光源画像合成部106を設けて、複数の光源画像からパノラマ光源画像を生成するようにしてもかまわない。
なお、本実施形態では、光軸方向変動手段を、折り畳み式携帯電話の開閉機構やバイブレーション機構によって実現するものとしたが、本発明はこれに限られるものではなく、撮像装置の光軸方向を変動させる構成であれば、どのようなもので実現してもかまわない。例えば、撮像装置自体に専用の駆動機構を設けてもよい。
(第4の実施形態)
図25は本発明の第4の実施形態に係る光源推定システムの構成を示すブロック図である。図25では、図1と共通の構成要素については図1と同一の符号を付しており、ここではその詳細な説明を省略する。
図25では、例えばカメラ付き携帯電話によって構成される通信端末1100に、図1に示した各構成要素のうち光源情報推定部105以外のものが設けられている。そして、光源情報推定部105は、通信端末1100から離れてネットワークを介して接続された外部の装置であるサーバ1101に設けられている。すなわち、本実施形態では、通信端末1000側では、全ての処理を行うのではなく、光源画像と撮像装置情報の取得のみを行い、光源情報推定処理はサーバ1101側で実行する。
通信端末1100では、第1の実施形態で述べたように、光源画像取得部102によって光源画像が取得され、第1の撮像装置情報取得部103によって光源画像取得時における第1の撮像装置情報が取得され、第2の撮像装置取得部104によって実際の撮像時における第2の撮像装置情報が取得される。これら光源画像並びに第1および第2の撮像装置情報は、情報送信部108によって送信される。また、このとき、光源情報推定の内容についても指示するようにしてもよい。
サーバ1101では、情報受信部109が、通信端末1100からネットワークを介して送信される情報、すなわち光源画像並びに第1および第2の撮像装置情報を受信する。受信された光源画像並びに第1および第2の撮像装置情報は、光源情報推定部105に与えられる。光源情報推定部105は、第1の実施形態で述べたように、光源情報の推定を行う。光源情報推定の内容について指示されたときは、その指示に従って、光源情報の推定を行う。
このように、光源情報推定部105をサーバ1101に設けて、光源情報推定処理を実行させることによって、通信端末1100側の計算負荷を軽くすることが可能になる。
(光源情報を利用した画像の高解像度化)
本発明の光源推定装置は、デジタルズームとして知られている画像の高解像度化に特に有効である。画像の高解像度化は、撮像した画像を任意に拡大処理することができるため、画像撮像後の編集処理において重要である。本来、このような画像の高解像度化は補間処理などによって行なわれてきたが、2x2倍以上の拡大画像を合成する場合、合成される画像がボケてしまい、画質が劣化するという問題があった。本発明の光源推定方法を利用することで、画質劣化の少ない、画像の高解像度化を実現することができる。この手法を説明する。
まず、この処理の概念を説明する。本発明の高解像度化処理は、以下の4つの入力情報を利用する。
○被写体の拡散反射画像
○被写体の鏡面反射画像
○被写体の3次元形状情報
○光源位置・色・照度
ここで、拡散反射画像とは、入力画像のうち、マットな反射成分である拡散反射成分のみを画像化したものであり、同様に、鏡面反射画像は、入力画像のうち、てかりである鏡面反射成分のみを画像化したものである。ここで、拡散反射成分とは、光沢の無い物体表面で起こる反射で、すべての方向に一様に散乱する成分である。一方、鏡面反射成分とは、鏡の面での反射のように、法線に対して入射光の反対方向に強く反射する成分である。2色性反射モデルを仮定すると、物体の輝度は、拡散反射成分と鏡面反射成分との和として表現される。後述するように、鏡面反射画像と拡散反射画像は、例えば偏光フィルタを回転させながら被写体を撮像することで取得することができる。
図26(a)は、光源で照射された被写体(タンブラー)を撮像装置で撮像した画像を示している。図の上部にてかりである鏡面反射が現れているのがわかる。一方、図26(b)(c)は、図26(a)の画像を後述する方法で拡散反射画像と鏡面反射画像とに分離した結果である。拡散反射画像はてかりが取り除かれ、表面のテクスチャ情報が鮮明になっているが、立体感が失われている。一方、鏡面反射画像は細かな形状情報が鮮明に現れているが、逆にテクスチャ情報が失われている。つまり、入力画像はこれら全く異なる情報を含んだ二つの画像が重畳されたものであった。画像を拡散反射画像と鏡面反射画像とに分離し、別々に処理することにより、より精細な高解像度化処理が可能である。
高解像度化処理には、学習ベースの手法を用いる。学習ベースとは、事前に低解像度と高解像度の画像組を用意し、その対応を学習する。この際、用意された画像以外の画像においても高解像度化処理を働かせるために、画像そのものを学習するのではなく、画像から抽出した特徴量を学習する。
図27は本発明の一実施形態に係る画像高解像度化装置の構成を示すブロック図である。図27の画像高解像度化装置は、撮像装置を利用し、撮像を行う画像撮像部201と、上述した光源推定方法によって、被写体に照射する光源の方向や位置、輝度、色、スペクトル情報などの光源情報を推定する光源情報推定部203と、被写体の表面の法線情報または3次元位置情報を形状情報として取得する形状情報取得部204と、光源推定部203によって推定された光源情報と、形状情報取得部203によって取得された形状情報を用いて、画像撮像部201によって撮像された画像を高解像度化する画像高解像度化部217とを備えている。さらに、画像高解像度化部217は、画像撮像部201によって撮像された画像を、拡散反射・鏡面反射分離部202によって拡散反射成分と鏡面反射成分とに分離し、分離した拡散反射成分と鏡面反射成分とを個別に高解像化する。以下、それぞれの処理について説明する。
画像撮像部201はCCDやCMOSなどの撮像装置を利用して、被写体を撮像する。こうして撮像された画像は、輝度が非常に高くなる鏡面反射成分と拡散反射成分とが同時に、飽和することなく記録されることが望ましい。このため、冷却CCDカメラや多重露光撮像など、広いダイナミックレンジを撮像できる撮像装置を利用することが望ましい。
拡散反射・鏡面反射分離部202は、画像撮像部201によって撮像された画像を、拡散反射成分と鏡面反射成分とに分離する。
まず、物体の反射特性について説明する。2色性反射モデルを仮定すると、物体の輝度は、拡散反射成分と鏡面反射成分との和として以下の式で表現される。
ここで、Iは撮像装置が撮像した被写体の輝度値、I
aは環境光成分、I
dは拡散反射成分、I
sは鏡面反射成分である。ここで、環境光成分とは、光源の光が物体などによって散乱された間接光のことである。これは空間の至る所に散乱され、直接光がとどかない影の部分にもわずかに明るさを与える。そのため、通常はノイズとして取り扱われることが多い。
環境光成分は十分に小さく、ノイズとして無視できると考えると、画像は拡散反射成分と鏡面反射成分とに分離できる。上述のように、拡散反射成分がテクスチャ情報に依存するのに対し、鏡面反射画像は細かな形状情報に依存するといったように、これらの成分は非常に異なった特質を示す。そのため、画像を高解像度化するために、入力画像を拡散反射画像と鏡面反射画像とに分離し、それぞれの画像を別々の方法で高解像度化することによって、非常に高精細な高解像度化画像を取得することができる。このため、まずは拡散反射画像と鏡面反射画像とを分離する必要性がある。
この分離方法は、従来からさまざまなものが提案されている。例えば、
・鏡面反射と拡散反射の偏光度の違いを利用し、偏光フィルタを用いた方法(例えば、特許第3459981号公報)
・対象物を回転させ、マルチスペクトルカメラを利用することで鏡面反射領域を分離する方法(例えば、特開2003−85531号公報)。
・様々な方向から光源を当てた対象物の画像を利用し、鏡面反射が生じない理想状態での画像である線形化画像を合成し、その線形化画像を利用して鏡面反射や影領域を分離する方法(例えば、「石井育規,福井孝太郎,向川康博,尺長健,“光学現象の分類に基づく画像の線形化“,情報処理学会論文誌,vol.44,no.SIG5(CVIM6),pp.11−21,2003」)。
などがある。
ここでは、偏光フィルタを利用する方法を用いる。図28は本実施形態に係る画像高解像度化装置が搭載されたカメラ付き携帯電話1000を示している。図28に示すように、撮像装置1001には回転機構(図示せず)をもった直線偏光フィルタ1016Aが設けられている。また、直線偏光フィルタ1016Bが取り付けられた照明装置1007が設けられている。また、1017は使用者のインターフェイス用の液晶ディスプレイである。
ここで、直線偏光フィルタ1016Bが取り付けられた照明装置1007に照らされた被写体について、撮像装置1001が、直線偏光フィルタ1016Aを回転機構により回転させながら、複数枚の画像を撮像する。ここで、照明が直線偏光されていることに着目すると、反射光強度は偏光フィルタ1016Aの回転角ψに対して、図29のように変化する。ここで、反射光の拡散成分をI
d、鏡面反射成分をI
sとすると、反射光輝度の最大値I
maxと最小値I
minは以下の式で表現される。
つまり、反射光の拡散成分I
d、鏡面反射成分I
sは、以下の式から求まる。
図30はこの処理の流れを示したものである。まず、回転機構により偏光フィルタ1016Aを回転させ(ステップS301)、画像を撮像し、メモリに保持する(ステップS302)。次に、メモリに保持された画像が、所定の枚数撮像されているかを確認する(ステップS303)。このとき、反射光輝度の最小値と最大値を検出するのに十分な枚数がまだ撮像されていない場合(ステップS303でNo)、偏光フィルタを再度回転させ(ステップS301)、撮像を繰り返す。一方、十分な枚数の撮像ができている場合(ステップS303でYes)、撮像された画像データを利用して、反射光輝度の最小値と最大値を検出し(ステップS304)、(式13)と(式14)を利用することにより、拡散反射成分と鏡面反射成分とを分離する(ステップS305)。この処理は、複数枚の画像から画素ごとに最小値と最大値を求めても構わないが、ここでは、sin関数のフィッテングを利用する。この処理を説明する。
図29に示した偏光フィルタ角ψに対する反射光輝度Iは、以下のように、sin関数で近似できる。
ここで、A、B、Cは定数であり、(式13)、(式14)より
つまり、撮像された画像から、(式15)のA,B,Cを求めることにより、拡散反射成分と鏡面反射成分とを分離することができる。
ところで、(式15)は以下のように展開できる。
ただし、
つまり、以下の評価式を最小にするA,B,Cを求めることで、拡散反射成分と鏡面反射成分とを分離することができる。
ただし、I
iは、偏光フィルタ角ψ
i時の反射光強度を示している。ここで、最小自乗法を用いると、各パラメータは以下のように推定される。
以上より、(式16)〜(式23)を利用することで、拡散反射成分と鏡面反射成分とを分離する。この場合、未知パラメータが3個であるため、偏光フィルタの回転角を変更した画像を最低3枚撮像すればよい。
このため、直線偏光フィルタ1016Aの回転機構を設ける代わりに、画素ごとに偏光方向の異なる撮像装置を利用しても構わない。図31はこのような撮像装置の画素を模式的に示したものである。ここで、1022は各画素を示し、各画素内の直線は偏光方向を示している。すなわち、この撮像装置は0°、45°、90°、135°の4種類の偏光方向を有する画素を持つ。そして、図31の太線1023のように、4種類の画素をベイヤ配列のように1画素として取り扱うことによって、偏光方向が4種類異なった画像を同時に撮像することができる。このような撮像装置は、例えば、フォトニック結晶デバイスなどを利用すればよい。
また、照明装置1007として、偏光された照明例えば液晶ディスプレイを利用してもかまわない。例えば、携帯電話1000に搭載されている液晶ディスプレイ1017を利用すればよい。この場合、液晶ディスプレイ1017の輝度値を、利用者のインターフェイス用として利用しているときに比べ、高くすることが望ましい。
もちろん、撮像装置1001の偏光フィルタ1016Aを回転させる代わりに、照明装置1007の偏光フィルタ1016Bを回転させてもかまわない。また、撮像装置1001と照明装置1007の両方に偏光フィルタを設置する代わりに、撮像装置側など片側のみに設置し、独立成分分析を利用して拡散反射成分と鏡面反射成分とを分離させてもかまわない(例えば、特許3459981号公報参照)。
光源情報推定部203は、上述したような光源推定方法を利用して、光源の位置と色、および照度情報を取得する。
形状情報取得部204は、被写体の形状情報である表面の法線情報または、被写体の3次元位置情報を取得する。被写体の形状情報を取得する手段としては、例えば、スリット光投影法、パターン光投影法、レーザレーダ法などの既存の手法を用いればよい。
もちろん、形状情報の取得はこれらの手法に限られるものでない。例えば、複数のカメラを利用するステレオ視、カメラの動きを利用するモーションステレオ法、光源の位置を変化させながら撮像した画像を利用する照度差ステレオ法、ミリ波や超音波を利用して被写体との距離を測定する方法、さらには反射光の偏光特性を利用した方法(例えば、米国特許第5,028,138号や「宮崎大輔,池内克史,″偏光レイトレーシング法による透明物体の表面形状の推定手法″,電子情報通信学会論文誌,vol.J88−D−II,No.8,pp.1432−1439,2005」)を用いてもかまわない。ここでは、照度差ステレオ法と偏光特性を利用した方法について説明する。
照度差ステレオ法は、光源方向が異なる3枚以上の画像を利用して、被写体の法線方向と反射率を推定する手法である。例えば、「H.Hayakawa,”Photometric Stereo under a light source with arbitrary motion”,Journal of the Optical Society of America A,vol.11,pp.3079−89,1994」は、画像上で6点以上の反射率が等しい点を既知情報として取得し、拘束条件として利用することによって、光源の位置情報も未知としながらも、以下のパラメータを推定する手法である。
・被写体情報:画像上の各点の法線方向と反射率
・光源情報:被写体の観察点における光源方向と照度
ここでは、前述の拡散反射・鏡面反射分離手法によって分離された拡散反射画像のみを利用した照度差ステレオ法を行う。本来、この手法は被写体が完全拡散反射をしていることを仮定しているため、鏡面反射が存在する被写体では大きな誤差が生じてしまう。しかし、分離した拡散反射画像のみを利用することで、鏡面反射の存在による推定誤差を無くすことができる。もちろん、後述するように、影除去部205で影領域を除去した拡散反射画像で処理を行なっても構わない。
光源方向が異なる拡散反射画像を以下のように輝度行列I
dで表現する。
ただし、i
df(p)は光源方向fの拡散反射画像の画素pにおける輝度値を示している。また、画像の画素数はP画素、異なった光源方向で撮像した画像枚数はF枚である。ところで、ランバーシャンモデルより、拡散反射画像の輝度値は以下のように表現できる。
ただし、ρ
pは画素pの反射率(アルベド)、n
pは画素pの法線方向ベクトル、t
fは光源fの入射照度、L
fは光源fの方向ベクトルを示している。
(式24)、(式25)より以下の式が導かれる。
ただし、
ここで、Rは表面反射行列、Nは表面法線行列、Lは光源方向行列、Tは光源強度行列、Sは表面行列、Mは光源行列と呼ぶ。
ここで、特異値分解を利用すると、(式26)は以下のように展開できる。
ただし、
であり、Eは単位行列を示している。また、U’はP×3行列、U”はP×(F−3)行列、Σ’は3×3行列、Σ”は(F−3)×(F−3)行列、V’は3×F行列、V”は(F−3)×F行列である。ここで、U”、V”は信号成分であるU’、V’の直交基底、すなわち、ノイズ成分であると考えられる。ここで、特異値分解を利用すると、(式28)は以下のように変形できる。
すなわち、(式29)を解くことにより、形状情報と光源情報を同時に取得することができるが、以下の3×3行列Aの不定性が残る。
ここで、Aは任意の3×3行列である。形状情報と光源情報を取得するためには、この行列Aを求める必要がある。これは、例えば、画面上の6点以上で反射率が等しいことが既知であればよい。例えば、任意の6点k1〜k6の反射率が等しいとすると、
(式27)、(式30)と(式32)より、
さらに、
とおくと、(式33)は以下のようになる。
ここで、(式34)より行列Bは対称行列であるため、行列Bの未知数は6である。すなわち、画面上の6点以上で反射率が等しいことが既知であれば、(式35)は解くことができる。
また、行列Bが既知となれば、(式34)に特異値分解を利用することにより、行列Aは解くことができる。
さらに、(式30)、(式31)より、形状情報と光源情報を取得する。
以上のことより、反射率が等しい6点以上の画素が既知な被写体において、光源方向を変更しながら3枚以上の画像を撮像することにより、以下の情報を得ることができる。
・被写体情報:画像上の各点の法線方向ベクトルと反射率
・光源情報:被写体の観察点における光源方向ベクトルと放射輝度
ただし、上記の処理で求まる被写体の反射率と光源の放射輝度は相対的なものであり、絶対値を求めるためには、画面上の6点以上で反射率が既知であるなど、上記とは異なる既知情報が必要となる。
また、光源と撮像装置との位置関係が既知の場合、撮像装置と被写体の距離や3次元位置を求めるようにしても構わない。これを図を用いて説明する。
図32はこの処理を説明するための模式図である。図32において、1001は撮像装置、1007Aおよび1007Bは光源、1015は被写体の観察点O、1010Aおよび1010Bは被写体の観察点Oにおける各光源の光源方向、1021は被写体の観察点Oにおける撮像装置の視線方向を示している。
まず、光源と撮像装置との位置関係が既知であるため、撮像装置1001と光源1007A、1007Bの3次元位置関係La、Lbは既知である。また、撮像装置1001はキャリブレーションされているとすると、撮像装置1001の視線方向1021も既知である。このことから、被写体の観察点O1015はこの視線方向1021上に存在する。また、上述の照度差ステレオ法により、被写体の観察点Oにおける各光源の光源方向1010A、1010Bは既知である。撮像装置1001と観察点O1015の距離Lvが正(Lv>0)であるとすると、このような位置関係を満たす観察点Oは、1点しか存在しない。そのため、観察点O1015の位置がわかり、撮像装置1001と観察点O1015の距離Lvが求まる。
また、例えばデジタルカメラのフラッシュのように撮像装置に光源が設置されている場合、光源と撮像装置との位置関係は設計情報から求めることができる。
また、形状情報取得部204は反射光の偏光特性を利用して、被写体の表面法線方向を取得しても構わない。この処理について、図33を用いて説明する。
図33において、1001は撮像装置、1007は光源、1015は観察点O、1016はモータなどの回転機構(図示せず)をもった直線偏光フィルタ、1019は法線方向を示している。光源として自然光が照射されている状態において、回転機構によって偏光フィルタ1016を回転しながら撮像を行った場合、その反射光強度は、図34に示したように、周期πのsin関数となる。
ここで、この反射光強度の最大値Imaxと最小値Iminを計測する偏光フィルタの角度ψmax、ψminを考える。撮像装置1001と光源1007、観察点O1015を含む平面を入射面とし、被写体は鏡面反射成分が支配的であるとすると、ψmaxは偏光フィルタ1016の偏光方向が入射面に対して垂直な方向、また、ψminは偏光フィルタ1016の偏光方向が入射面に対して平行な方向になることが知られている。
また、上述したように、光源が偏光光源の場合、反射光成分において、偏光特性を有するものは観察点Oの表面で反射した鏡面反射成分、非偏光の成分は拡散反射成分である。このことから、反射光強度の最大値Imaxと最小値Iminの強度差が生じる観察点Oは鏡面反射成分が強い観察点、すなわち、光が正反射している(観察点Oの法線方向1019が観察点Oからの光源方向と観察点Oからの撮像装置方向の二等分線方向である)ことがわかる。そのため、法線方向1019も入射面内に存在する。そのため、ψmaxまたはψminを推定することにより、法線方向1019は以下の平面内に存在すると推定することができる。
○撮像装置1001を通り、偏光フィルタ1016の偏光方向ψmin(またはψmaxの垂直方向)を含む平面。
ここで、ψmaxまたはψminは、前述のsin関数のフィッテング処理を行うことで推定する。
また、撮像装置1001の位置を変更させて、同様な処理を行うことによって、法線方向1019を含む、異なった2つの平面を推定することができる。推定した2つの平面の交線を求めることによって、法線方向1019を推定する。この際、撮像装置1001の移動量を推定する必要があるが、これは、前述の8点法などを利用すればよい。
もちろん、拡散反射・鏡面反射分離部202と同様に、画素ごとに偏光方向の異なる撮像装置を利用しても構わない。
また、もちろん、撮像装置1001の位置を変更させるのではなく、複数台の撮像装置を設置して法線方向1019を求めるようにしても構わない。
以上のように、照度差ステレオ法と偏光特性を利用した方法では、表面の法線情報を取得する。一方、スリット光投影法やステレオ視などの手法では、被写体の3次元位置情報を取得する。被写体表面の法線情報とは、被写体の3次元位置情報の微小空間での傾き情報であり、どちらも被写体の形状情報である。
以上の処理により、形状情報取得部204は被写体の形状情報である表面の法線情報または、被写体の3次元位置情報を取得する。
以上の処理により、以下の情報を取得する。
○被写体の拡散反射画像
○被写体の鏡面反射画像
○被写体の3次元形状情報
○光源位置・照度
影除去部205は、画像中の影領域を推定し、影除去処理を行う。このような、影除去および影領域推定処理はさまざまな方法が提案されているが、例えば、影領域は輝度値が低いことを利用し、輝度値が閾値以下の画素を影領域と推定すればよい。
また、形状情報取得部204によって3次元形状情報が取得されている場合、Computer−Graphicsの分野で広く利用されているレンダリング手法である、レイトレーシングを利用してもかまわない。レンダリングは物体の座標データや光源や視点の位置などの環境に関するデータを計算して行うが、レイトレーシングは、視点に届く光線を逆にたどることによって描画する。このため、レイトレーシングを利用してどの場所にどの程度の影が生成されているかを計算することができる。
次に、拡散反射・鏡面反射分離部202によって分離された拡散反射画像と鏡面反射画像を、それぞれ、別々の方法で高解像度化する。まず、拡散反射画像の処理について説明する。
アルベド推定部206は、拡散反射・鏡面反射分離部202によって分離された拡散反射画像を利用し、被写体のアルベドを推定する。アルベドは光源情報に影響を受けないため、アルベド画像を利用して処理を行うことによって、光源変動にロバストな処理が実現できる。
この処理を説明する。(式25)より、拡散反射成分では、以下の関係が成り立つ。
ただし、θ
iは被写体の法線方向ベクトルと光源方向ベクトルのなす角度を示す。ここで、光源情報取得部203および形状情報取得部204により、角度θ
iは既知である。また、後述するように、光源の入射照度t
fも推定可能なため、被写体のアルベドr
pを(式36)から求める。
この際、cosθiが0以下の値を持つ場合、すなわち、attached shadowである場合、(式36)はアルベドがマイナスになる、あるいは、0で除算を行うことになり、意味を持たない。しかし、上述の影除去部205によってこのような画素を除去しているため、問題は生じない。
もちろん、被写体のアルベドを求めるのではなく、次式によりアルベドを鏡面反射画像の最大輝度値で正規化した擬似アルベドr
p’を求め、これを利用しても構わない。
ここで、isf_maxは鏡面反射画像の最大輝度値を示している。このような擬似アルベドは、光源情報推定部203により、光源の放射輝度(照度)が取得できない場合に有効である。擬似アルベド画像を利用した場合、正規化に利用した鏡面反射画像の最大輝度値isf_maxをメモリに保持しておく。図51はアルベド推定部206が擬似アルベドを利用した場合、メモリに保持されるデータを示した図である。作成された擬似アルベド画像と、正規化に利用した鏡面反射画像の最大輝度値isf_maxが保持されている。
鏡面反射パラメータが被写体の広い領域で一様であり、被写体表面にさまざまな方向の法線が存在しているとすると、カメラに対して被写体を照らす位置に光源が存在している限り、正反射が生じる正反射画素が存在する。そのため、鏡面反射画像の最大輝度値isf_maxはこの正反射画素の輝度値となる。
反射特性が一様であり、視線方向1021がほぼ一様である場合、ある光源位置での正反射画素の輝度値と別の光源位置での正反射画素の輝度値の比は、各光源での光源の放射輝度比とほぼ等しくなる。そのため、拡散反射画像の輝度値idf(p)をθiにより除算しただけでは光源の放射輝度の影響が残ってしまうが、さらに正反射画素の輝度値である鏡面反射画像の最大輝度値isf_maxで正規化を行った擬似アルベド画像を利用することにより、光源の放射輝度が取得できない場合においても光源に影響されない拡散成分画像を作成できる。
また、鏡面反射画像の最大輝度値isf_maxによって正規化を行うのではなく、拡散反射画像の最大輝度値や入力画像の最大輝度値を利用して正規化を行い、擬似アルベドを作成しても構わない。
次に、こうして求めたアルベド画像の高解像度化について説明する。
アルベド高解像度化部207は、アルベド推定部206が推定したアルベド画像を高解像度化する。この処理について詳述する。
前述のように、アルベド画像は、光の鏡面反射や陰影など光学現象によらない被写体固有の反射率特性を表現した画像である。本実施形態における高解像度化は、被写体情報が不可欠なため、被写体の事前学習に基づく。ここではテキストン(画像のテクスチャ特徴量)に基づく高解像度化を用いる。
図35はテキストンに基づく高解像度化の概念を示す図である。実行時に入力された低解像度画像LR(画素数N×N)は、画素数を目標画素数に合致させるため、M×M倍に補間拡大される。この画素数MN×MN画像をexLR画像と称する。exLR画像では画像の高周波成分が失われて、ぼけた画像になる。このぼけ画像を先鋭化することが高解像度化に他ならない。
次に、多重解像度変換WTによって、exLR画像の輝度値を画素ごとに、多重解像度に基づくT次元テキストンに変換する。この変換にはウェーブレット変換やピラミッド構造分解などの処理が用いられる。この結果、exLR画像の各画素ごとに、合計MN×MN本のT次元テキストンベクトルが生成される。次に、汎用性の向上のため、テクストンベクトルにクラスタリングが実施されて、L本の入力代表テキストンベクトルが選択生成される。これらL本のテキストンベクトルに対して、予め学習したデータベースの情報から変換が施されて、T次元の高解像度化テキストンベクトルが生成される。この変換には、テーブル読み出しや、T次元の多次元特徴ベクトル空間内における線形および非線形変換が用いられる。高解像度化テキストンベクトルは、逆ウェーブレット変換やピラミッド構造再構成などの逆変換IWTによって、画像輝度値に戻されて、高解像度画像HRが完成する。
この処理では、MN×MN本のT次元テクストンベクトルのクラスタリング処理における探索とテーブル読み出しの処理に多大な時間を要し、動画など高速化対応が困難であった。そこで、1)クラスタリング処理をLR画像にて実施する。2)テーブル読み出しを線形マトリクス変換に変更する。という改良を加えた。この処理では、LR画像の1画素はHR画像のM×M画素のセルに対応する事実を使って、T次元からT次元への線形マトリクス変換をセル毎に実施して、セル内部での空間的な連続性を維持することができる。また利用する線形マトリクスはクラスタリングの結果から最適に選択する。セル境界の不連続性が問題になる場合にはマトリクス処理単位のブロックを一部重ねるなどの処理を追加してもよい。
図36は上の改良点を模式的に描いた図である。LR画像をWT変換して、T次元の特徴量空間の中のL(ここではL=3)本の代表特徴ベクトルとしている。そして、各特徴ベクトルに異なる線形マトリクスが付随している。この状態を保存したものが高解像度化データベースに他ならない。
以下、N=32、M=4、すなわち32×32画素の低解像画像に4×4倍の高解像度化を施す例をとって、画像処理手法の詳細を述べる。アルベド画像は(RGB)カラー画像とするが、カラー画像は(RGB)から輝度色差(YCrCB)に変換して独立した色成分画像として取り扱うものとする。通常、2×2倍率程度では、輝度Y成分だけの高解像度でカラー成分は低解像度の色差信号のまま付加しても違和感はないが、4×4以上では、色信号も高解像度化が必須になるので各成分とも同様な取り扱いとする。以下、カラー画像の1つの成分画像のみの処理を説明することとする。
(学習時)
図37は学習処理の流れを説明するPAD図であり、図38は学習処理において処理される画像の処理対象画素と処理対象セルとの関係を説明する図である。以下、図37および図38を交互に用いて説明を行なう。
まず、S311〜S313において、低解像度画像LR画像、高解像度画像HR画像、および低解像度画像の拡大画像exLR画像を入力する。これら画像は、HRから全て生成されており、撮像における画素ずれがない状態としておく。また、LR画像からexLR画像の生成にはバイキュービック補間を用いている。図38において、高解像度画像HR(画素数128×128)と、低解像度LR画像(画素数32×32)とLRを画素数だけHRと合致させたexLR画像(画素数128×128)の3種類の画像を用意する。
S314において、LR画像をテキストン化する。具体的にはHaar基底を用いた2次元離散定常ウェーブレット変換(Discrete stationary wavelet transform:SWT変換)する。SWT変換の階層は2階層(2−step)とすると、6次元のLRW画像(画素数32×32=1024)が生成される。本来、2階層ステップの2次元離散定常ウェーブレット変換では7次元の特徴ベクトルとなるが、最低周波数のLL成分画像は画像の平均輝度情報に近くなり、これを保存するため残りの6成分のみを利用する。
S315において、テキストン化されたLRW画像の合計1024本の6次元ベクトルをCmax個にまでクラスタリングする。ここではK−means法を用いて、例えばCmax=512本にクラスタリングする。この512本の結果のテキストンベクトルの集合をクラスタCと称する。クラスタリングをせず1024本のテキストンを全て利用しても問題ない。
S316において、クラスタCの同一クラスタに判別されたLR画素を判定する。具体的には、LR画像の画素値がクラスタCの各テキストン番号に置き換えられる。
S317において、クラスタCの全テキストンに対して繰り返し処理をしながら、該当テキストンに対応するexLRの画素セルとHR画像の画素セルを探索して、該当セル番号を格納する。この探索がLR画像の画素数分だけで済むため、高倍率の場合に大きな探索時間の削減となる。
ここでLR画像の画素とexLR画像、HR画像の画素セルとの対応につき、図38で説明する。図38では、LR画像上で、2001と2002という2画素がCの同一クラスタ(クラスタ番号:Ci=0)に判別されたとする。すると、そのままの位置関係を保って拡大されたexLR画像上では2003,2004、HR画像上では2005、2006という画素セルが対応していると考えられ、これらの2箇所のセル位置の番号が、該当するテキストンを有するものとして格納される。画素セル内に含まれる画素数は拡大率4×4=16に等しい。
次にS318において、これらの画素セル群についてexLR画像とHR画像の対でテキストン化を行う。具体的には、2次元離散定常ウェーブレット変換(Discrete stationary wavelet transform)が実施されて、exLRW画像とHRW画像が生成される。
S319とS320において、上記HRW画像とexLRW画像から得られたテキストンの対が行列の形として集積される。形式はいずれも、6×Data_numの行列となる。ここでData_numは、(1セルの画素数)×(探索されたセルの数)となり、上のCi=0の例では、2個のセルが探索されたので16×2=32となる。
S321において、集積された両者に所属する合計2×4×4=128個の特徴ベクトルから最小二乗法にて6×6マトリクスMを算出し、それをS322において、クラスタ番号K=0とともにデータベースCMat(K)に格納蓄積する。S322における最小二乗法は、まずS319とS320において集積されたexLRとHRのテキストンの行列を各々LfとHf(サイズ:6×Data_num)とし、求めるマトリクスをM(6×6)とすると以下のように実行できる。
次に、クラスタ番号K=1について同様処理を繰り返して、K=511まで行う。すなわち、CMatはクラスタ番号ごとに規定される6×6変換行列の群である。
最後に、S323とS324において、使用したクラスタCと学習された変換行列CMatとを出力する。こうして求めたクラスタCと学習された変換行列CMatを、アルベドDB208に蓄積する。
図39は2次元離散定常ウェーブレット変換(Discrete stationary wavelet transform)の処理を示す図である。通常のウェーブレット変換では、フィルタバンク構成は同一のまま分解の階層が進む毎に画像が縮小していくが、2次元離散定常ウェーブレット変換では、分解の階層が進んでも変換画像サイズは不変であり、スケーリング関数Fとウェーブレット関数Gの2種類のフィルタがアップサンプリング(↑)されて2のべき乗で長くなっていくことにより多重解像度解析を行う。Haar基底では、FとGの具体的な数値とアップサンプリングの様子は表1のようになる。
LL成分であるcA画像を1階層進めてウェーブレット分解する場合、FとGのフィルタを交互に1次元的にコンボリューションすることにより、図39のように4種類の画像が生成される。1)行方向にF・列方向にF:cA画像(LL成分)2)行方向にF・列方向にG:cDh画像(LH成分)3)行方向にG・列方向にF:cDv画像(HL成分)4)行方向にG・列方向にG:cDd画像(HH成分)。
図40は2次元離散定常ウェーブレット変換をテスト画像に実施した場合の画像結果例である。テキストンベクトルとは、これらウェーブレットの1−STEPと2−STEPの変換画像の1画素ごとに対応する値を連ねたもので、
の7次元ベクトルのことである。ただし2−STEPのLL成分であるcA2を除いて、6次元ベクトル部分のみを使って高解像度変換し、cA2成分は保存している。
なお、ウェーブレット変換のステップ数をここではS314とS318のいずれも2−STEPとしている。このステップ数が大きくなるほど、画像の大まかな特徴までテキストンで表現することができる。本発明においてステップ数は可変であるが、LR画像のクラスタリングのためのS314の場合、1−STEPでは周辺の画素状況として十分な情報とならない場合があるため、2−STEPとしている。一方、exLR画像を高解像度化するためのテキストンを生成するS318の場合、たとえば8×8の倍率においては2−STEPよりも3−STEPの方が良好な画像が得られることが、実験的に確認されている。このため、倍率との関係でステップ数を決定することが望ましい。
(高解像度化処理の実行時)
図41は実行時の処理の流れを示すPAD図であり、図42は実行時の処理の画素セルとの関係を示す図である。
まず、S331とS332において、LR画像とこれを拡大したexLR画像とを入力する。学習時と同様に、LR画像の画素数=32×32、exLR画像の画素数=128×128とする。ここでexLR画像の生成方法は、図37のS313において学習画像のexLR画像を生成した方法と同様にバイキュービック法による。
次に、S333とS334において、学習時に得られたクラスタCと変換行列CMatをアルベドDB208から読み出し、入力する。
S335において、LR画像をテキストン化する。具体的には図42で示すように、Haar基底を用いた2次元離散定常ウェーブレット変換(Discrete stationary wavelet transform:SWT変換)を行う。SWT変換の階層は2階層(2−step)とすると、6次元のLRW画像(画素数32×32=1024)が生成される。本来は2階層ステップの2次元離散定常ウェーブレット変換では7次元の特徴ベクトルとなるが、最低周波数のLL成分画像は画像の平均輝度情報に近くなり、これを保存するため残りの6成分のみを利用する。
次にS336において、各テキストンにつき、クラスタC(Cmax個のテキストン)内の最短距離のテキストンベクトルを探索してテキストン番号(Ci)を得る。これは図42において、LR画像の1ライン上の各画素2011,2012,…,2013について、各々C0,C1,…,Cnというテキストン番号が付与されることに相当する。
次にS337に進むが、これ以降はHR画像の各セルを走査線順に処理していく繰り返し処理となる。具体的には、図42において、exLR画像のセル2014,2015,…,2016を処理していくと、対応するHR画像のセル2023,2024,…,2025が順次高解像度化されていく。
S337において、exLR画像の該当セル領域がテキストン化される。具体的には、2次元離散定常ウェーブレット変換(Discrete stationary wavelet transform)が実施されて、exLRW画像が生成される。セル2017,2018,…,2019などが生成される。
S338において、テキストン番号から変換行列CMatを引いて該当セルにおける変換行列Mを確定する。この処理は図42のように行われる。LRW画像には、すでに画素2011=C0、画素2012=C1、…、画素2013=Cnとテキストン番号が振られている。これを位置関係を保存したexLRW画像のセル2017、2018、…2019に適用して、各々のセルで、C0,C1,・・Cnをテキストン番号としてMatから別々の6×6変換行列Mを選択することができる。
S339において、各セルに変換行列Mを作用させる。これはセル内のテキストンLTi(i=1〜16)全部について、
を実施すればよい。これらを繰り返して、exLRW画像のセル2017,2018,…,2019からHRW画像のセル2020,2021,…,2022が、それぞれ生成される。
次に、これら高解像度化されたセル内の6次元テキストンに、exLRW画像の2−STEPのLL成分を付加して7次元テキストンを生成する。
S340において、この各セル内7次元のテキストンを逆SWT変換することにより画像に変換する。以上をexLR画像の全セルについて繰り返す。
逆SWT(ISWT)変換は、図43で示す信号フローで実現できる。図39とほとんど同じ表現である。通常のウェーブレット逆変換ではフィルタバンクの構成は同一のまま、分解の階層が進む毎に画像が拡大していく。これに対して、本逆変換においては、分解の階層が進んでも変換画像サイズは不変であり、スケーリング関数Fとウェーブレット関数G1の2種類のフィルタがダウンサンプリング(↓)されて2のべき乗で短くなっていくことにより、多重解像度解析を行う。Haar基底では、FとG1の具体的な数値とダウンサンプリングの様子は表2のようになる。
以上のようにしてアルベド画像の1成分が高解像度化される。この処理を、アルベド画像全てに行うことにより、高解像度なアルベド画像を合成する。
このとき、アルベド画像に含まれる被写体の大きさや姿勢、向きなどが変化しても処理が可能なように、画像の正規化を行うようにしてもかまわない。テキストンを利用した高解像度化処理は、学習データに対してアルベド画像の大きさや姿勢が異なっている場合、高解像度化の精度が十分に発揮されないことが考えられる。そこで、アルベド画像を複数組用意し、この問題を解決する。すなわち、アルベド画像を30度ずつ回転させた画像を合成し、そのすべての画像で高解像度化を行い、姿勢や向きの変化に対応させる。この場合、前述の「高解像度化処理の実行時」のPAD図である図41のステップS336において、最短距離のテキストンを探索する際、回転処理を行った各画像から求めた複数のLR画像のテキストン、それぞれにおいて最短距離のテキストンを探索し、最も距離の近いものを探索してテキストン番号(Ci)を得るようにすればよい。
また、大きさの変化に対応するために、画像の大きさを変更したアルベド画像を合成するようにしてもかまわない。
また、実際の大きさを基準に、例えば、5cm×5cmの画像が必ず8x8画素になるように拡大縮小処理を行い、その画像に対してテキストンを作製するようにしてもかまわない。被写体の大きさは、形状情報取得部204により既知であるため、「学習時」および「高解像度化処理の実行時」ともに同じ大きさの画像でテキストンを作製することで、大きさの変動に対応するようにしてもかまわない。
また、「高解像度化処理の実行時」のアルベド画像を回転させるのではなく、「学習時」のアルベド画像を回転させ、複数組のテキストンを作製し、クラスタCと学習された変換行列CMatをアルベドDB208に蓄積するようにしても構わない。
さらに、入力された被写体が何であるかを推定し、推定された被写体がどのように回転しているかを姿勢推定するようにしてもかまわない。このような処理は、広く使われている画像認識技術を利用すればよい。これは、例えば、被写体にRFIDのようなタグを設置しておき、そのタグ情報を認識することで被写体が何であるかを認識し、さらにタグ情報から被写体の形状情報を推定し、画像や被写体の形状情報から姿勢推定を行うようにすればよい(例えば、特開2005−346348号公報参照)。
拡散画像高解像度化部209は、アルベド高解像度化部207が合成した高解像度アルベド画像から高解像度な拡散画像を合成する。この処理を説明する。
前述のように、アルベド画像は、拡散成分画像を光源ベクトルと被写体の法線方向ベクトルの内積で除算したものである。そのため、アルベド画像に、光源情報推定部203によって推定された光源方向ベクトルと、後述するパラメータ高解像度化部によって求めた被写体の高密度法線方向ベクトルとの内積を乗算することによって、高解像度の拡散画像を合成する。光源情報推定部203により、複数の光源が推定された場合、それぞれの光源に対して高解像度な拡散画像をおのおの合成し、その画像を足し合わせることで、一枚の高解像度拡散画像を合成する。
また、アルベド画像ではなく擬似アルベド画像を利用している場合、擬似アルベド画像に、光源情報推定部203によって推定された光源方向ベクトルと、形状情報高密度化部211によって求められた被写体の高密度法線方向ベクトルとの内積を乗算し、さらに正規化を行うために利用した鏡面反射画像の最大輝度値isf_maxを乗算することによって、高解像度拡散反射画像を合成する。正規化で利用した鏡面反射画像の最大輝度値isf_maxは、アルベド推定部206によってメモリに蓄積されているため、この情報を読み出せばよい。もちろん、拡散反射画像の最大輝度値や入力画像の最大輝度値を利用して正規化を行っている場合、鏡面反射画像の最大輝度値isf_maxを乗算するのではなく、正規化に利用した拡散反射画像の最大輝度値や入力画像の最大輝度値を乗算する。
以上の処理により、高解像度化された拡散画像を合成することができる。ここで、高解像度化処理はアルベド画像を利用して行ったが、アルベド画像ではなく、拡散画像を直接、高解像度化するようにしても構わない。この場合、学習処理は拡散画像を用いて行えばよい。
次に、鏡面反射画像の高解像度化処理について説明する。ここでは、画像をパラメータに分解し、パラメータごとに高密度化する。この処理を順に説明する。
パラメータ推定部210は、形状情報取得部204によって取得された被写体の法線情報、拡散反射・鏡面反射分離部202によって分離された拡散反射画像と鏡面反射画像を利用して、その被写体を表現するパラメータを推定する。ここでは、Computer−Graphicsの分野で広く使われているCook−Torranceモデルを利用する方法を説明する。
Cook−Torranceモデルでは、鏡面反射画像を次式のようにモデル化する。
ここで、Eiは入射照度、ρs,λは波長λにおける鏡面反射成分の双方向反射率、nは被写体の法線方向ベクトル、Vは視線ベクトル、Lは光源方向ベクトル、Hは視線ベクトルと照明方向ベクトルの中間ベクトル、βは中間ベクトルHと法線方向ベクトルnの角度を表す。また、Fλはフレネル方程式から求められる誘電体表面からの反射光の比であるフレネル係数、Dはマイクロファセット分布関数、Gは物体表面の凸凹による遮光の影響を表す幾何減衰率である。さらに、nλは被写体の屈折率、mは被写体表面の粗さを示す係数、Ijは入射光の放射輝度である。また、ksは鏡面反射成分の係数である。
さらに、(式25)のランバーシャンモデルを利用すると、(式12)は以下のように展開される。
ただし、
ここで、ρ
dは拡散反射成分の反射率(アルベド)、dpx、dpyは撮像装置の1画素のx方向、y方向の長さ、rは撮像装置の観察点Oからの距離を示している。また、k
dは以下の関係式を満たす係数である。
Srは拡散反射成分と鏡面反射成分の輝度値の違いを表現するための定数であり、拡散反射成分が被写体からすべての方向へエネルギーを反射することを示している。図44はこの定数Srを説明するための模式図である。図44において、観察点Oで反射された拡散反射成分エネルギーは、半球状に広がっていく。ここで、撮像装置1001が観察点Oからrだけ離れているので、撮像装置の1撮像素子に届くエネルギーと、観察点Oで反射した総エネルギーの比S
rは、(式48)で表される。
以上のことから、パラメータ推定部210は、(式37)〜(式45)(式46)(式47)、(式48)からパラメータを推定する。
以上の関係式をまとめると、パラメータ推定を行なうための既知パラメータと、推定すべきパラメータは以下のようになる。
(既知パラメータ)
○環境光成分Ia
○拡散反射成分Id
○鏡面反射成分Is
○被写体の法線方向ベクトルn
○光源方向ベクトルL
○視線ベクトルV
○中間ベクトルH
○中間ベクトルHと法線方向ベクトルnの角度β
○撮像装置1001の1画素のx方向、y方向の長さdpx,dpy
○撮像装置1001と観察点Oとの距離r
(推定すべきパラメータ)
○入射照度Ei
○鏡面反射成分の係数ks
○被写体表面の粗さm
○被写体の屈折率ηλ
ここで、拡散反射成分の係数kd、および拡散反射成分の反射率(アルベド)ρdも未知パラメータであるが、鏡面反射成分のパラメータのみを推定するため、ここでは推定処理を行なわない。
図45はパラメータ推定部210の処理の流れを示す図である。処理は、以下の2段階からなる。
まず、光源情報を使用して、入射照度E
iを求める(ステップS351)。ここでは、光源情報推定部203によって取得した光源の位置情報、形状情報取得部204で求めた撮像装置と被写体との距離情報、さらには光源情報取得部203で求めた光源照度を用いる。これは、次式から求まる。
ここで、I
iは撮像装置1001に設置された照度計1018によって測定された光源1007の入射照度、R
1は撮像装置1001と光源1007との距離、R
2は光源1007と観察点Oとの距離、θ
1は観察点Oにおける法線1019と光源方向1010Cとのなす角度、θ
2は撮像装置1001における光軸方向1005と光源方向1010Aとのなす角度を示している(図46参照)。ここで、被写体の大きさが、光源1007と観察点Oとの距離R
2に比べ十分に大きいと考えられる場合、距離R
2は被写体上の全ての観察点Oで等しくなる。そのため、(式50)において、(R
1/R
2)は定数となり、実際に計測する必要はなくなる。
次に、シンプレックス法を利用して、未知パラメータm、η
λ、k
sを推定する(ステップS352)。シンプレックス法は、シンプレックスと呼ぶ図形の頂点に変数を割り付け、シンプレックスの大きさと形を変えて関数の最適化を行なう方法である(大田登,“色再現光学の基礎”,pp.90−92,コロナ社)。シンプレックスは、n次元空間の(n+1)個の点の集合である。ただし、nは推定する未知数の数であり、ここでは「3」である。そのため、シンプレックスは四面体である。シンプレックスの頂点をベクトルx
iで表し、新しいベクトルを次のように定める。
ただし、
はそれぞれ関数f(x
i)を最大、最小にするx
iを示している。
さらに、この方法で用いる3種類の操作を以下のように定める。
1.鏡像:
2.拡張:
3.収縮:
ここで、α(>0)、β(>1)、γ(1>γ>0)は係数である。
シンプレックス法は、シンプレックスの頂点の中で関数値の最も大きなものを選ぶことで、その鏡像における関数値は小さくなるという期待に基づいている。この期待が正しければ、同じプロセスの繰り返しで関数の最小値が求められる。つまり、初期値で与えたパラメータを3種類の操作で更新しながら、評価関数が示すターゲットとの誤差が閾値未満になるまでパラメータの更新を繰り返す。ここでは、パラメータとしてm、η
λ、k
s、評価関数として(式56)で表される、(式37)から算出される鏡面反射成分画像と拡散反射・鏡面反射分離部202で求められた鏡面反射成分画像との差ΔI
sを利用した。
ただし、i
s(i,j)’,i
s(i,j)はそれぞれ、計算された鏡面反射画像の推定値I
s’と拡散反射・鏡面反射分離部202で求められた鏡面反射成分画像I
sの画素(i,j)の輝度値、M
s(i,j)は、画素(i,j)が鏡面反射成分を持つ場合に1、そうでない場合0をとる関数である。
この処理について詳しく説明する。図47はこの処理の流れを説明するためのフローチャートである。
まず、繰り返し演算の更新回数を記憶するカウンターnとkに0を代入し、初期化する(ステップS361)。ここで、カウンターnは初期値を何回変更したかを記憶するカウンターであり、kはある初期値に対してシンプレックスによる候補パラメータの更新を何回行ったかを記憶するカウンターである。
次に、乱数を利用し、推定パラメータの候補パラメータm’、η
λ’、k
s’の初期値を決定する(ステップS362)。このとき、各パラメータの物理的な拘束条件から、初期値の発生範囲は以下のように決定した。
次に、こうして求めた候補パラメータを(式37)へ代入し、鏡面反射画像の推定値Is’を求める(ステップS363)。さらに、計算された鏡面反射画像の推定値Is’と拡散反射・鏡面反射分離部202で求められた鏡面反射成分画像との差ΔIsを(式56)より求め、これをシンプレックス法の評価関数とする(ステップS364)。こうして求めたΔIsが十分小さい場合(ステップS365でYes)、パラメータ推定は成功したとして、推定パラメータm、ηλ、ksとして候補パラメータm’、ηλ’、ks’を選択し、処理を終了する。一方、ΔIsが大きい場合(ステップS365でNo)、シンプレックス法により候補パラメータの更新を行う。
候補パラメータの更新を行う前に、更新回数の評価を行う。まず、更新回数を記憶しているカウンターkに1を足し(ステップS366)、カウンターkの大きさを判断する(ステップS367)。カウンターkが十分に大きい場合(ステップS367でNo)、繰り返し演算は十分に行なわれているが、ローカルミニマムに落ちているため、このまま更新を繰り返しても最適値には達しないと判断し、初期値を変更して、ローカルミニマムからの脱却を図る。そのため、カウンターnに1を足し、カウンターkに0を入れる(ステップS371)。ここで、カウンターnの値が閾値より高いかどうかを判定し、処理をこのまま続けるか、処理不能として処理を終了させるかを決定する(ステップS372)。ここで、nが閾値より大きい場合(ステップS372でNo)、この画像は推定不能として処理を終了する。一方、nが閾値より小さい場合(ステップS372でYes)、再度、初期値を(式57)の範囲内で乱数から選択しなおし(ステップS362)、処理を繰り返す。このようなkに対する閾値は、例えば、100などを選択すればよい。
一方、ステップS367において、カウンターkが閾値以下の場合(ステップS367でYes)、候補パラメータを(式53)〜(式55)を利用して変更する(ステップS368)。この処理については後述する。
次に、こうして変形された候補パラメータが、解として意味のあるものであるかを判定する(ステップS369)。すなわち、シンプレックス法を繰り返すことで、変形されたパラメータが物理的に意味のない値(例えば、粗さパラメータmが負の値など)におちいる可能性があるため、これを除去する。これは、例えば、以下のような条件を与え、この条件を満たす場合には意味のあるパラメータ、満たさない場合には意味のないパラメータと判定すればよい。
これらの値は、被写体より求めることができる。例えば、屈折率η
λであれば、被写体の材質によって決定される値である。例えば、プラスチックであれば1.5〜1.7、ガラスであれば1.5〜1.9であることが知られているため、これらの値を利用すればよい。つまり、被写体がプラスチックである場合、屈折率η
λは1.5〜1.7とすればよい。
変形したパラメータが(式58)を満たす場合(ステップS369でYes)、その候補パラメータは意味のある値であると考えられるため、新しい候補パラメータとして設定し(ステップS370)、更新処理を繰り返す(ステップS363)。一方、変形したパラメータが(式58)を満たさない場合(ステップS369でNo)、その初期値に対する更新処理を打ち切り、新しい初期値により更新を行う(ステップS371)。
ここで、ステップS368の変形処理について詳述する。図48はこの処理の流れを示したフローチャートである。ここでは、候補パラメータm’、η
λ’、k
s’をベクトル表現し、これをパラメータxとする。すなわち、
まず、(式51)(式52)(式53)を利用して、鏡像操作を行ったパラメータxrを計算し、(式56)によってxrでの鏡面反射成分画像との差ΔIs(xr)を計算する(ステップS381)。次に、こうして求められたΔIs(xr)と、2番目に評価関数が悪かったΔIs(xs)を比較する(ステップS382)。ここでΔIs(xr)がΔIs(xs)より小さかった場合(ステップS382でYes)、鏡像操作を行った評価値ΔIs(xr)と現在、最も評価値のよいΔIs(xl)を比較する(ステップS383)。ここで、ΔIs(xr)のほうが大きかった場合(ステップS383でNo)、最も評価値の低かったxhをxrへ変更し(ステップS384)、処理を終了する。
一方、ΔIs(xr)がΔIs(xl)より小さかった場合(ステップS383でYes)、(式54)を利用して拡張処理を行ない、パラメータxeと、xeでの鏡面反射成分画像との差ΔIs(xe)を計算する(ステップS385)。次に、こうして求められたΔIs(xe)と、鏡像操作によるΔIs(xr)を比較する(ステップS386)。ここでΔIs(xe)がΔIs(xr)より小さかった場合(ステップS386でYes)、最も評価値の悪かったxhをxeへ変更し(ステップS387)、処理を終了する。
一方、ΔIs(xe)がΔIs(xr)より大きかった場合(ステップS386でNo)、最も評価値の悪かったxhをxrへ変更し(ステップS387)、処理を終了する。
また、ステップS382において、ΔIs(xr)がΔIs(xs)より大きかった場合(ステップS382でNo)、鏡像操作を行った評価値ΔIs(xr)と現在、最も評価値の悪いΔIs(xh)を比較する(ステップS388)。ここでΔIs(xr)がΔIs(xh)より小さかった場合(ステップS388でYes)、最も評価値の悪かったxhをxrへ変更し(ステップS389)、(式55)を利用して、収縮操作を行ったパラメータxcと、xcでの鏡面反射成分画像との差ΔIs(xc)を計算する(ステップS390)。一方、ΔIs(xr)がΔIs(xh)より大きかった場合(ステップS388でNo)、xhを変更することなく、収縮操作を行ったパラメータxcと、xcでの鏡面反射成分画像との差ΔIs(xc)を計算する(ステップS390)。
次に、こうして求められたΔIs(xc)と、最も評価値の悪いΔIs(xh)を比較する(ステップS391)。ここでΔIs(xc)がΔIs(xh)より小さかった場合(ステップS391でYes)、最も評価値の悪かったxhをxcへ変更し(ステップS392)、処理を終了する。
一方、ΔI
s(x
c)がΔI
s(x
h)より大きかった場合(ステップS391でNo)、すべての候補パラメータx
i(i=1,2,3,4)を以下の式により変更し、処理を終了する。
以上の処理を繰り返すことにより、鏡面反射画像における未知パラメータであるm、ηλ、ksを推定する。
以上の処理により、すべての未知パラメータを推定することができる。
なお、パラメータ推定に用いるモデルは、Cook−Torranceモデルである必要はなく、例えば、Torrance−SparrowモデルやPhongモデル、簡易Torrance−Sparrowモデル(例えば、「K.Ikeuchi and K.Sato,“Determining reflectance properties of an object using range and brightness images”,IEEE Transactions on Pattern Analysis and Machine Intelligence,vol.13,no.11,pp.1139−1153,1991」)であっても構わない。
また、パラメータ推定方法は、シンプレックス法である必要はなく、例えば、勾配法や最小自乗法などのような一般的なパラメータ推定手法を利用しても構わない。
また、以上の処理は、画素毎に行ってもかまわないし、領域分割を行い、領域ごとに等しいパラメータ組を推定するようにしてもかまわない。画素毎に処理を行う場合、光源や撮像装置、または被写体を動かすことにより、被写体の法線方向ベクトルnや光源方向ベクトルL、または視線ベクトルVといった既知パラメータが変動したサンプルを取得するようにすることが望ましい。また、処理を領域ごとに行う場合、領域ごとに求まったパラメータのばらつきが小さくなるように領域分割を変更することで、最適なパラメータ推定を行うようにすることが望ましい。
法線情報高密化部211は、形状情報取得部204で取得した表面の法線情報を高密度化する。これは、以下のように実現される。
まず、形状情報取得部204によって取得した表面の法線情報を、画像撮像部201によって取得された画像へ投影し、画像内の各画素に対応する法線方向を求める。このような処理は、従来のカメラキャリブレーション処理(例えば、「運天 弘樹,池内 克史,“実物体の仮想化のための3次元幾何モデルのテクスチャリング手法”,CVIM−149−34,pp.301−316,2005」)を行うことで実現できる。
この際、法線ベクトルnpは極座標で表現し、その値をθp、φpとする(図49参照)。以上の処理により、法線成分であるθ、φの画像を作製する。こうして求めたθ画像とφ画像を、上述のアルベド高解像度化部207と同様の手法によって高解像度化することによって、高密度の法線情報を推定する。この際、高密度度化処理を行う前に学習処理を行い、法線のθ、φ成分に対するクラスタCと学習された変換行列CMatを法線DB212に蓄積する。
また、以上の処理は、影除去部205において、影として除去されなかった領域のみに対して行うことが望ましい。これは、影の存在により、パラメータ推定処理に誤差が生じてしまうことを防止するためである。
また、パラメータ推定部210において、撮像装置近傍に設置された制御可能な光源を利用してもかまわない。この光源は、デジタルカメラのフラッシュであってもよい。この場合、フラッシュを照射して撮像したフラッシュ画像と、フラッシュを照射しないで撮像した非フラッシュ画像を時間的に連続的に撮像し、その差分画像を利用してパラメータ推定を行なえばよい。撮像装置と光源であるフラッシュの位置関係は既知であり、また、フラッシュの光源情報である3次元位置や色、強度も事前に測定しておくことが可能である。また、撮像装置とフラッシュは非常に近い場所に設置されているため、影が少ない画像を撮像することができる。そのため、画像内のほとんどの画素において、パラメータを推定することができる。
さらに、パラメータ高密度化部213は、パラメータ推定部210によって求めたパラメータを高密度化する。ここでは、単純な線形補間を行い、すべてのパラメータを高密度化する。もちろん、上述のアルベド高解像度化部207のような学習を利用した高密度化手法を利用してもかまわない。
また、パラメータごとに高密化方法を切り替えるようにしても構わない。例えば、推定パラメータである被写体の屈折率ηλは、高密度化しても値が変化しないと考えられる。そのため、被写体の屈折率ηλは単純補間により高密度化を行い、拡散反射成分の係数kd、鏡面反射成分の係数ks、さらには拡散反射成分の反射率(アルベド)ρdに関しては学習を利用した高密度化処理を行うようにしてもかまわない。
鏡面反射画像高解像度化部214は、法線情報高密度化部211によって推定された高密度法線情報と、パラメータ高解像度化部214によって高密度化されたパラメータを利用し、高解像度な鏡面反射画像を合成する。高解像度な鏡面反射画像は、(式37)〜(式45)に高密度化したパラメータを代入することによって、合成する。
ここで、実際の鏡面反射画像よりも輝度値が高くなるように、例えば入射照度Eiのみ推定された値に係数l(例えば、l=2)を乗算するようにしてもかまわない。これは、鏡面反射画像の輝度値を上げることによって、被写体の質感を上げるためである。同じように、被写体表面の粗さmを推定値よりも大きな値として、実際よりもてかりが強い鏡面反射画像を合成してもかまわない。
影生成部215は、拡散反射画像高解像度化部209と鏡面反射画像高解像度化部214によって生成された高解像度拡散反射画像と高解像度化鏡面反射画像に重畳する、影画像を合成する。これは、影除去部205において利用したレイトレーシングを利用すればよい。
ここで、画像高解像度化部217は、撮影対象となっている被写体の3次元形状に関する知識を有するものとする。影生成部215は、被写体の3次元形状データを取得し、撮影画像における被写体の見え(appearance)から、被写体の3次元姿勢及び3次元位置を推定する。被写体が人間の目の角膜である場合の、見えから3次元位置及び3次元姿勢を推定する例が、「K.Nishino and S.K.Nayar,″The World in an Eye″,in Proc.of Computer Vision and Pattern Recognition CVPR’04,vol.1,pp444−451,Jul.,2004.」に開示されている。見えから3次元位置及び3次元姿勢を推定できる被写体は限られるが、そのような被写体であれば、上記文献の手法を適用することが可能である。
被写体の3次元姿勢及び3次元位置が推定されれば、被写体上の任意の位置において、被写体表面の法線情報が算出できる。以上の処理を、撮影画像において繰り返し、被写体表面の法線情報を算出する。さらに、法線情報高密度化部211で推定された高密度法線情報を利用して被写体の法線情報を高密度化することによって、被写体の3次元形状を高密化することが可能である。こうして求めた高密度3次元形状と、パラメータ高解像度化部213によって高密度化されたパラメータを利用してレイトレーシングを行うことにより、高解像度な影画像の推定を行なう。
レンダリング部216は、拡散反射画像高解像度化部209が合成した高解像度拡散反射画像、鏡面反射画像高解像度化部214が合成した高解像度鏡面反射画像、さらには、影生成部215が合成した影画像を合成し、高解像度の出力画像を合成する。
以上のように、上述した光源推定方法を利用して、高解像度なデジタルズーム処理を行う。すなわち、画像の高解像度化において、光源情報は、影除去部205、アルベド推定部206、拡散反射画像高解像度化部209、パラメータ推定部210、鏡面反射画像高解像度化部214、影生成部215に必要な情報であり、非常に重要である。このため、光源情報を正確に取得することができる本発明の光源推定方法は、画像の高解像度化において非常に重要な処理である。
また、上記説明では、鏡面反射画像のみパラメータ推定を利用して高解像度化を行ったが、拡散反射画像においてもパラメータ推定を行ない、高解像度化するようにしてもかまわない。
この処理を説明する。拡散反射画像の未知パラメータは、上述のとおり、以下の2つである。
○拡散反射成分の係数kd
○拡散反射成分の反射率(アルベド)ρd
そこで、これらのパラメータを推定する。図50は拡散反射画像のパラメータ推定処理の流れを示した図である。処理は、図45で示した鏡面反射画像のパラメータ推定部210の処理後、さらに以下の2段階の処理を行なう。
まず、(式49)と鏡面反射画像のパラメータ推定で求まったk
sを利用して、次式よりk
dを推定する(ステップS353)。
さらに、(式47)を利用して、拡散反射画像の反射率(アルベド)ρ
dを次式より推定する(ステップS354)。
以上の処理により、すべての未知パラメータを推定することができる。こうして求まったパラメータをパラメータ高密度化部213と同様の手法により高密化することによって、拡散反射画像を高解像度化すればよい。
なお、本発明の光源推定方法は、画像処理だけではなく、例えば画像の撮像に関しても有効である。例えば、偏光フィルタを利用する場合に、これを最適な角度で設置することができる。この処理を説明する。
水面やウインドガラスなどの鏡面反射光を除去するために、PLフィルタと呼ばれる偏光フィルタが利用されている。しかし、偏光フィルタによる効果は、偏光フィルタの偏光軸と入射面(被写体への入射光線と反射光線を含む平面)により大きく異なる。そのため、図28のように、回転機構により偏光フィルタ1016Aを回転させながら撮像する場合、その回転角により、撮像される画像が大きく異なる。例えば、最も効果が大きくなる場合は、偏光軸が入射面と平行になる場合である。本発明における光源推定方法を利用することによって、光源の位置が既知となるため、被写体の入射面を特定することができる。そのため、推定された入射面に対して偏光フィルタが平行になるように、回転機構を制御するようにすればよい。
以上のように、本発明の光源推定方法を利用することによって、高解像度なデジタルズーム処理などの画像処理や効果的な画像撮像を行うことができる。
本発明の第1態様では、撮像装置の状況が、光源情報の取得に適しているか否かを判断する撮像装置状況判断部と、前記撮像装置状況判断部によって適していると判断されたとき、前記撮像装置によって撮像を行い、この撮像画像を光源画像として取得する光源画像取得部と、前記光源画像取得部によって光源画像が取得されたときにおける、前記撮像装置の状況を表す第1の撮像装置情報を、取得する第1の撮像装置情報取得部と、撮像者の操作によって前記撮像装置による撮像が行われた撮像時における、前記撮像装置の状況を表す第2の撮像装置情報を、取得する第2の撮像装置情報取得部と、前記光源画像、並びに前記第1および第2の撮像装置情報を用いて、前記撮像時における、光源の方向および位置のうち少なくともいずれか一方を含む光源情報を推定する光源情報推定部とを備えた光源推定装置を提供する。
本発明の第2態様では、前記撮像装置状況判断部は、前記撮像装置の光軸の方向を検出し、光軸が上方向を向いているとき、適していると判断する前記第1態様の光源推定装置を提供する。
本発明の第3態様では、前記光源画像取得部は、撮像者の操作による前記撮像装置による撮像が行われないことを確認した後に、光源画像の取得を行う前記第1態様の光源推定装置を提供する。
本発明の第4態様では、前記光源情報推定部は、光源の方向および位置のうち少なくともいずれか一方に加えて、光源の輝度、色、およびスペクトル情報のうち少なくともいずれか1つを推定する前記第1態様の光源推定装置を提供する。
本発明の第5態様では、前記光源画像取得部は、前記光源画像を複数枚取得するものであり、前記第1の撮像装置情報取得部は、前記光源画像取得部によって各光源画像が取得されたとき、それぞれ、前記第1の撮像装置情報を取得するものであり、前記光源推定装置は、前記光源画像取得部によって取得された複数の光源画像から、前記第1の撮像装置情報取得部によって取得された複数の第1の撮像装置情報を用いて、パノラマ光源画像を合成する光源画像合成部を備え、前記光源情報推定部は、前記パノラマ光源画像および前記第2の撮像装置情報を用いて、光源情報の推定を行う前記第1態様の光源推定装置を提供する。
本発明の第6態様では、前記撮像装置の光軸方向を変動させる光軸方向変動手段を備え、前記光軸方向変動手段によって前記撮像装置の光軸方向が変動している状態で、前記光源画像取得部が複数枚の光源画像の取得を行うように、構成されている前記第1態様の光源推定装置を提供する。
本発明の第7態様では、前記光源推定装置は、折り畳み式携帯電話に搭載されており、前記光軸方向変動手段は、前記折り畳み式携帯電話を開閉させる開閉機構である前記第6態様の光源推定装置を提供する。
本発明の第8態様では、前記光軸方向変動手段は、バイブレーション機構である前記第6態様の光源推定装置を提供する。
本発明の第9態様では、撮像装置によって撮像を行い、この撮像画像を光源画像として取得する光源画像取得部と、前記光源画像取得部によって光源画像が取得されたときにおける、前記撮像装置の状況を表す第1の撮像装置情報を、取得する第1の撮像装置情報取得部と、撮像者の操作によって前記撮像装置による撮像が行われた撮像時における、前記撮像装置の状況を表す第2の撮像装置情報を、取得する第2の撮像装置情報取得部と、前記光源画像、並びに前記第1および第2の撮像装置情報を用いて、前記撮像時における、光源の方向および位置のうち少なくともいずれか一方を含む光源情報を推定する光源情報推定部と、前記撮像装置の光軸方向を変動させる光軸方向変動手段とを備え、前記光軸方向変動手段によって前記撮像装置の光軸方向が変動している状態で、前記光源画像取得部が複数枚の光源画像の取得を行うように、構成されている光源推定装置を提供する。
本発明の第10態様では、光源情報を推定する光源推定システムとして、前記第1態様の撮像装置状況判断部、光源画像取得部、第1の撮像装置情報取得部、および第2の撮像装置情報取得部を有し、前記光源画像取得部によって取得された光源画像、前記第1の撮像装置情報取得部によって取得された第1の撮像装置情報、および、前記第2の撮像装置情報取得部によって取得された第2の撮像装置情報を送信する通信端末と、前記第1態様の光源情報推定部を有し、前記通信端末から送信された前記光源画像、並びに前記第1および第2の撮像装置情報を受信し、前記光源情報推定部に与えるサーバとを備えたものを提供する。
本発明の第11態様では、撮像装置の状況が、光源情報の取得に適しているか否かを判断する第1のステップと、前記第1のステップにおいて適していると判断したとき、前記撮像装置によって撮像を行い、この撮像画像を光源画像として取得する第2のステップと、前記第2のステップにおいて光源画像を取得したときにおける、前記撮像装置の状況を表す第1の撮像装置情報を、取得する第3のステップと、撮像者の操作によって前記撮像装置による撮像が行われた撮像時における、前記撮像装置の状況を表す第2の撮像装置情報を、取得する第4のステップと、前記光源画像、並びに前記第1および第2の撮像装置情報を用いて、前記撮像時における、光源の方向および位置のうち少なくともいずれか一方を含む光源情報を推定する第5のステップとを備えた光源推定方法を提供する。
本発明の第12態様では、撮像装置によって撮像を行い、この撮像画像を光源画像として取得する第1のステップと、前記第1のステップにおいて光源画像を取得したときにおける、前記撮像装置の状況を表す第1の撮像装置情報を、取得する第2のステップと、撮像者の操作によって前記撮像装置による撮像が行われた撮像時における、前記撮像装置の状況を表す第2の撮像装置情報を、取得する第3のステップと、前記光源画像、並びに前記第1および第2の撮像装置情報を用いて、前記撮像時における、光源の方向および位置のうち少なくともいずれか一方を含む光源情報を推定する第4のステップとを備え、前記第1のステップにおいて、光軸方向変動手段によって前記撮像装置の光軸方向を変動させ、前記撮像装置の光軸方向が変動している状態で、複数枚の光源画像の取得を行う光源推定方法を提供する。
本発明の第13態様では、撮像装置によって撮像を行う画像撮像部と、前記第11または12態様の光源推定方法によって、被写体に照射する光源の方向および位置のうち少なくともいずれか一方を含む光源情報を推定する光源情報推定部と、前記被写体の、表面の法線情報または3次元位置情報を、形状情報として取得する形状情報取得部と、前記光源情報および形状情報を用いて、前記画像撮像部によって撮像された画像を高解像度化する画像高解像度化部とを備えた画像高解像度化装置を提供する。
本発明の第14態様では、前記画像高解像度化部は、前記画像撮像部によって撮像された画像を、拡散反射成分と鏡面反射成分とに分離し、分離した拡散反射成分と鏡面反射成分とを、個別に、高解像化するものである前記第13態様の画像高解像度化装置を提供する。
本発明の第15態様では、前記画像高解像度化部は、前記画像撮像部によって撮像された画像を、パラメータに分解し、分解したパラメータを、個別に、高解像化するものである前記第13態様の画像高解像度化装置を提供する。
本発明の第16態様では、撮像装置によって撮像を行う第1のステップと、前記第11または12態様の光源推定方法によって、被写体に照射する光源の方向および位置のうち少なくともいずれか一方を含む光源情報を推定する第2のステップと、前記被写体の、表面の法線情報または3次元位置情報を、形状情報として取得する第3のステップと、前記光源情報および形状情報を用いて、前記第1のステップにおいて撮像した画像を高解像度化する第4のステップとを備えた画像高解像度化方法を提供する。
以下、本発明の実施の形態について、図面を参照しながら説明する。
(第1の実施形態)
図1は本発明の第1の実施形態に係る光源推定装置の構成を示すブロック図である。図1において、1001はCCDやCMOS等によって構成された撮像装置、1002は撮像行為を行う主体者である撮像者が撮像装置1001に撮像を指示するための撮像スイッチである。撮像装置1001には3軸の角度センサ1025が搭載されている。
また、101は撮像装置1001の状況が、光源情報の取得に適しているか否かを判断する撮像装置状況判断部、102は撮像装置状況判断部101によって適していると判断されたとき、撮像装置1001によって撮像を行い、この撮像画像を光源画像として取得する光源画像取得部、103は光源画像取得部102によって光源画像が取得されたとき、撮像装置1001の状況を表す第1の撮像装置情報を取得する第1の撮像装置情報取得部、104は撮像者の操作によって撮像装置1001による撮像が行われた撮像時に、撮像装置の状況を表す第2の撮像装置情報を取得する第2の撮像装置情報取得部、そして105は光源画像取得部102によって取得された光源画像、並びに第1の撮像装置情報取得部103によって取得された第1の撮像装置情報、および第2の撮像装置情報取得部104によって取得された第2の撮像装置情報を基にして、撮像時における光源の方向および位置のうち少なくともいずれか一方を推定する光源情報推定部である。
なお、ここでは、撮像装置状況判断部101、光源画像取得部102、第1の撮像装置情報取得部103、第2の撮像装置情報取得部104および光源情報推定部105は、CPU1029によってプログラムを実行することによって、実現されるものとする。ただし、これらの機能の全部または一部を、ハードウェアによって実現するようにしてもかまわない。また、メモリ1028は、光源画像取得部102によって取得された光源画像と、第1の撮像装置情報取得部103によって取得された第1の撮像装置情報を格納する。
図2は本実施形態に係る光源推定装置が搭載されたカメラ付き折り畳み式携帯電話1000の構成例を示す。図2において、図1と共通の構成要素には図1と同一の符号を付している。なお、図2のカメラ付き折り畳み式携帯電話1000では、撮像装置1001に偏光フィルタ1016が設けられており、この偏光フィルタ1016を回転させるためのモータ1026aと、その回転角を検出するためのエンコーダ1027aとが設けられている。また、折り畳み機構を駆動するためのモータ1026bと、その回転角を検出するためのエンコーダ1027bとが設けられている。また、マナーモードスイッチ1034が設けられている。
図3は図2のカメラ付き折り畳み式携帯電話1000が折り畳まれた状態を示す図である。図3において、1005は撮像装置1001の光軸方向を示し、1006は撮像装置1001の視野範囲を示している。
以下、本実施形態に係る光源推定装置の各構成要素の動作について、説明する。
撮像装置状況判断部101は、撮像装置1001の状況が、光源情報を取得するために適しているか否かを判断する。最も一般的な光源として、家庭内では照明、屋外では街灯や太陽が考えられる。そのため、撮像装置1001の撮像方向、つまり光軸の方向が上向きになっている場合、撮像装置1001が光源情報を取得するために適した状況にある、と判断することができる。そこで、撮像装置状況判断部101は、撮像装置1001に搭載された角度センサ1025の出力を用いて、撮像装置101の光軸の方向を検出し、光軸が上方向を向いているとき、光源情報を取得するために適していると判断する。このとき、撮像装置状況判断部101は、光源画像取得部102に撮像を促す信号を送信する。
光源画像取得部102は、撮像装置状況判断部101から撮像を促す信号を受けたとき、すなわち、撮像装置1001の状況が光源情報を取得するために適していると撮像装置状況判断部101によって判断されたとき、撮像装置1001によって撮像を行い、この撮像画像を光源画像として取得する。取得された光源画像は、メモリ1028に格納される。
このとき、光源画像取得部102は、撮像者の操作による撮像が行われないことを確認した後に、光源画像の取得を行うのが好ましい。例えば、撮像スイッチ1002が押されていないことを確認した上で、光源画像の撮像を行えばよい。
光源画像取得部102は、撮像者の撮像意図を考慮して、撮像が行われていない期間を利用して光源画像を撮像するものである。本実施形態に係る光源推定装置では、被写体を撮像するための撮像装置1001を利用して、光源画像の撮像を行う。このため、もし撮像者が被写体をまさに撮像しようとしているその直前に光源画像の撮像が行われてしまうと、撮像者が撮像しようとした瞬間に被写体を撮像することができず、撮像者の撮像意図を無視することになってしまう。
このため、本実施形態では、撮像者の撮像意思を考慮するために、撮像者が撮像を行わないと想定される間、例えば、机などにおかれている間に光源画像の撮像を行う。例えば、図3のカメラ付き折畳式携帯電話1000が机などにおかれている場合、光軸方向1005は上向きになると考えられる。この状態であれば、最適な光源画像を撮像することが可能である。
図4は撮像装置状況判断部101および光源画像取得部102の処理の一例を示すフローである。まず、撮像装置状況判断部101は、撮像装置1001の光軸方向の検出を行い、その光軸方向が上向きであるか否かを判断する(ステップS121)。光軸方向が上向きでない場合(ステップS121でNo)、光軸方向が上向きになるまで繰り返し光軸方向のチェックを行う。一方、光軸方向が上向きである場合(ステップS122でYes)、光源画像取得部102は撮像スイッチ1002のチェックを行う(ステップS122)。もし、オートフォーカス(AF)などの処理を行うために、撮像スイッチ1002が押されている場合(ステップS122でNo)、撮像が行われる可能性が高いため、光源画像の撮像は行わない。一方、撮像スイッチ1002が押されていない場合(ステップS122でYes)、光源画像取得部102は撮像装置1001によって撮像を行い、光源画像を取得する(ステップS123)。
なお、ここでは、撮像スイッチのチェックによって、撮像者の操作による撮像が行われるか否かを判断するものとしたが、撮像者が撮像する意思を持っているか否かを確認する方法は、これに限られるものではない。例えば、「撮像中ですか?」という撮像を確認する表示をディスプレイに表示し、撮像者が「No」という意思を表示するか、なんの反応もない場合に、撮像者が撮像する意思を持っていないと判断してもかまわない。
また、加速度センサなどを利用し、撮像装置1001が静止しているとき、光源画像の取得を行うようにしてもかまわない。すなわち、撮像装置1001が静止している場合、撮像装置1001は撮像者が保持しておらず、机などにおかれていると判断できる。そのため、この場合、撮像者は撮像を行っていない可能性が高い。一方、撮像者が撮像を行うために撮像装置1001を構えている場合、手ぶれの影響を加速度センサが感知する。このときは、光源画像取得部102は撮像を行わないようにすればよい。
また、マナーモードを利用して撮像者が撮像する意思を持っているか否かを確認するようにしても構わない。この処理を詳述する。
図4Aはマナーモードを利用して撮像者が撮像する意思を持っているか否かを確認する場合の、撮像装置状況判断部101および光源画像取得部102の処理の一例を示すフローチャートである。まず、撮像装置状況判断部101は、撮像装置1001の光軸方向の検出を行い、その光軸方向が上向きであるか否かを判断する(ステップS121)。光軸方向が上向きでない場合(ステップS121でNo)、光軸方向が上向きになるまで一定時間間隔で光軸方向のチェックを行う。一方、光軸方向が上向きである場合(ステップS121でYes)、光源画像取得部102はマナーモードのチェックを行う(ステップS124)。もし、マナーモードスイッチ1034がOFFに設定されている場合(ステップS124でNo)、撮像が行われる可能性が高いため、光源画像の撮像は行わない。一方、マナーモードスイッチ1034がONに設定されている場合(ステップS124でYes)、光源画像取得部102は撮像装置1001によって撮像を行い、光源画像を取得する(ステップS123)。
このとき、マナーモードとしてドライブモードが設定されている場合、撮像者は移動中であると考えられるため、光源画像の撮像は行わないようにしても構わない。つまり、サイレントモードでは光源画像を撮影するが、ドライブモードでは撮影を行わない。
第1の撮像装置情報取得部103は、光源画像取得部102によって光源画像が取得されたとき、撮像装置1001の状況を表す第1の撮像装置情報を取得する。具体的には例えば、角度センサ1025の出力と撮像装置1001の焦点距離情報とを、第1の撮像装置情報として取得する。取得された第1の撮像装置情報はメモリ1028に格納される。図5はメモリ1028に保持された情報の一部を示す模式図である。ある光源画像に対して、角度センサ出力と焦点距離が、第1の撮像装置情報として格納されている。
撮像装置1001の姿勢情報は、角度センサ1025の出力を使用して、以下の3x3行列Rlightで表現される。
撮像装置1001の姿勢情報を表す、この3x3行列Rlightのことをカメラ姿勢行列と呼ぶ。ここで、(α,β,γ)はカメラに取り付けられたセンサ出力のロール・ピッチ・ヨー角表現での値であり、ある基準点からの動き量で表現される。ロール・ピッチ・ヨー角表現とは、図6に示したように、任意の回転を、z軸周りの回転であるロー、次に、新しいy軸周りの回転であるピッチ、最後に、新しいx軸まわりの回転であるヨーの3段階の回転によって表すものである。
また、Rx(α)、Ry(β)、Rz(γ)はロール・ピッチ・ヨー角からx軸回転、y軸回転、z軸回転へ変換する行列であり、次式で表される。
また、撮像装置1001がズーム可能である場合、そのズーム情報も焦点距離情報として取得される。また、撮像装置1001が固定焦点の場合、その焦点距離情報も取得される。焦点距離情報は、画像処理の分野で広く使われているカメラキャリブレーションを行なうことにより、取得できる。
このような、カメラに取り付けられた角度センサや角速度センサからカメラの姿勢情報を取得する方法は、既存の手法を利用すればよい(例えば、「岡谷貴之,“メカニカルセンサとイメージセンサの融合による3次元形状復元” ,情報処理学会研究報告会,2005−CVIM−147,pp.123−130,2005」)。
第2の撮像装置情報取得部104は、撮像者の操作によって撮像装置1001による撮像が行われた撮像時に、撮像装置1001の状況を表す第2の撮像装置情報を取得する。ここでも、上述した第1の撮像装置情報取得部103と同様に、角度センサ1025の出力と撮像装置1001の焦点距離情報とを、第2の撮像装置情報として取得するものとする。このとき、角度センサ1025の出力(α,β,γ)から求められる姿勢行列Rnowを、現在の姿勢行列と呼ぶ。
光源情報推定部105は、メモリ1028に格納された光源画像および第1の撮像装置情報と、第2の撮像装置情報取得部104によって取得された第2の撮像装置情報を用いて、撮像者の操作による撮像時における、光源情報を推定する。ここでは、光源の方向を推定するものとする。
まず、光源画像において、十分に輝度値の高い画素を、光源を撮像している画素すなわち光源画素として抽出する。図7はこの処理を説明するための模式図である。図7では、視野範囲1006を持った撮像装置1001が光源1007を撮像している。このとき、撮像画像1008において、光源が撮像されている領域1009の輝度値は非常に高くなる。そこで、閾値処理を利用し、所定の閾値よりも輝度値が高い画素を光源画素として抽出する。
こうして求まった光源画素から、光源方向を推定する。この処理には、撮像装置の画素位置(u,v)と画像座標系とよばれる撮像素子上での実寸位置(xf,yf)との関係式が必要である。レンズの歪みなどの影響を考慮すると、画素位置(u,v)と実寸位置(xf,yf)との関係は、次式で求められる。
ただし、(Cx,Cy)は画素中心位置、sはスケールファクタ、(dx,dy)は撮像素子1画素のサイズ[mm]、Ncxはx方向の撮像素子数、Nfxはx方向の有効画素数、κ1、κ2はレンズの歪みを示す歪みパラメータである。
また、図8に示した、撮像装置の焦点位置を原点、その光軸方向をZ軸にとったカメラ座標系(x,y,z)と画像座標系(xf,yf)との関係は、次式で求められる。
ここで、fは撮像装置の焦点距離を表している。つまり、カメラパラメータ(Cx,Cy),s,(dx,dy)、Ncx、Nfx、f、κ1、κ2が既知であれば、(式2)(式3)により、画素位置(u,v)とカメラ座標系(x,y,z)の変換が可能である。
通常、Ncx、Nfxは撮像素子が特定できれば既知であり、また、(Cx,Cy),s,(dx,dy)、κ1、κ2、fはいわゆるカメラキャリブレーションを行うことで既知となる(例えば、Roger Y.Tsai, “An Efficient and Accurate Camera Calibration Technique for 3D Machine Vision”, Proceedings of IEEE Conference on Computer Vision and Pattern Recognition, Miami Beach, FL, 1986, pp. 364-374)。これらのパラメータは、撮像装置の位置や姿勢が変化しても変化しない。このようなパラメータをカメラ内部パラメータとよぶ。
そこで、撮像を行う前にカメラキャリブレーションを行い、カメラ内部パラメータ(Cx,Cy)、s、(dx,dy)、Ncx、Nfx、f、κ1、κ2を特定する。これらの値は、撮像装置購入時に付属されているものを利用しても構わない。また、カメラが固定焦点ではなく、ズーム可能である場合、各ズーム時の焦点距離fを個別に求めておき、必要なときに選択できるようにしておけばよい。そして、焦点距離fを撮像した画像とともに保持しておけばよい。
以上の情報を利用して、光源画素から光源方向を推定する。光源画素の画素位置を(ulight,vlight)とすると、光源方向Llightは以下の式で表現できる。
ところで、Llightは光源画像を撮像したカメラ座標系で表現されているため、現在のカメラ座標系Lnowで表現しなおす。これは、以下の式で表現できる。
以上の処理を行うことにより、光源方向ベクトルLnowを推定する。このようにして、光源の方向が推定される。
さらに、撮像装置1001が移動することを利用して、光源の方向だけでなく、3次元位置まで求めるようにしても構わない。
図9はこの処理を説明するための模式図である。図9において、1001A、1010Aは時刻t=t1における撮像装置と推定された光源方向ベクトル、また、1001B、1010Bは時刻t=t2における撮像装置と推定された光源方向ベクトルを示している。ここで、時刻t1とt2における撮像装置の相対的な位置関係と姿勢がわかっていれば、光源ベクトル1010A,1010Bを延長した交点に光源は存在するはずである。つまり、光源の3次元位置は以下のように求まる。
時刻t1における、撮像装置の姿勢行列、撮像装置の相対的な3次元位置、および推定された光源方向ベクトルをそれぞれ、R1、P1、L1とし、時刻t2における、撮像装置の姿勢行列と推定された光源方向ベクトルをそれぞれ、R2、L2とする。ただし、時刻t2において、撮像装置の位置は原点O(0,0,0)であるとする。このとき、光源位置Plightは次式を満たす。
ただし、s,mは任意の定数である。もし、すべての推定値が正しく、ノイズが存在していなければ、(式5)と(式6)をsとmに関する連立方程式として解くことによって、光源位置Plightは求まる。しかし、通常はノイズの影響があるため、最小自乗法を利用して、光源位置を求める。
まず、以下の関数f(m,s)を考える。
ここで、m,sは以下の関係式を満たす。
つまり、
よって、(式7)、(式8)をmとsに関する連立方程式として解き、求まったsとmを(式5)または(式6)へ代入することにより、光源位置Plightが求まる。このようにして、光源の位置が推定される。
なお、時刻t1における撮像装置の相対的な3次元位置P1(時刻t1とt2における撮像装置の相対的な位置関係)は、オプティカルフローを用いることによって求められる。オプティカルフローは、被写体上のある1点に対応する、時間的に連続した2つの画像上の点、すなわち対応点を結ぶベクトルであり、対応点とカメラ動きの間には、幾何学的な拘束式が成り立つ。このため、対応点が一定の条件を満たす場合にカメラの動きを算出することができる。
異なる時刻における撮像装置の相対的な位置関係をオプティカルフローから求める手法としては、例えば8点法と呼ばれる手法が知られている(H. C. Longuet-Higgins, “A computer algorithm for reconstructing a scene from two projections”, Nature, vol.293, pp.133-135, 1981)。この手法は、2画像間の静止した8点以上の対応点の組からカメラ動きを算出するものである。また、このような2画像間の対応点を求める手法は、一般に広く知られた方法であるので、詳細な説明を省略する(例えば、 Carlo Tomasi and Takeo Kanade, “Detection and Tracking of Point Features”, Carnegie Mellon University Technical Report, CMU-CS-91-132, April 1991)。
さらに、光源画素の輝度値やRGB値を求めることによって、光源の輝度や色も求めることができる。また、画像をマルチスペクトルカメラで取得することによって、光源のスペクトルを検出するようにしても構わない。このように光源のスペクトルを取得することによって,後述する画像の高解像度化や拡張現実において、色再現性の高い画像が合成できることが知られている(例えば、「内山俊郎, 土田 勝, 山口雅浩, 羽石秀昭, 大山永昭, “マルチスペクトル撮影による光源環境計測とスペクトルに基づく画像生成”, 電子情報通信学会技術研究報告PRMU2005-138, pp.7-12, 2006」)。
また、光源情報推定部105は、光源情報として、光源の照度情報を取得するようにしても構わない。これは撮像装置1001と光軸方向が一致した照度計を利用すればよい。照度計としては、光電池にマイクロアンペア計を接続し、入射光によって生じる光電流を読む光電池照度計などを用いればよい。
以上のように本実施形態の光源推定装置によると、撮像装置の状況が光源情報の取得に適していると判断されたとき、この撮像装置によって光源画像を取得し、光源画像の取得時における第1の撮像装置情報と、撮像者による撮像時における第2の撮像装置情報とを用いて、撮像時における光源情報を推定する。したがって、カメラ付き携帯電話などにおいて、付加的な撮像装置を搭載することなく、被写体周囲の光源情報を推定することができる。
なお、上述の実施形態では、撮像装置状況判断部101が撮像装置1001の光軸方向を検出するために、角度センサ1025の出力を用いるものとしたが、これ以外にも例えば、錘とタッチセンサを利用した方法(特開平4−48879号公報参照)や、加速度センサを利用した方法(特開昭63−219281号公報参照)など、既存の方法を利用してもよい。
ここでは、錘とタッチセンサを利用する方法について説明する。図10は錘とタッチセンサの構成を示す図である。図10(a)において、1003は常に垂直方向を保持するよう基端部を回動可能に支持して吊下された錘、1004A、1004Bはタッチセンサである。また、1005は撮像装置の光軸方向を示している。図10(b)に示すように、撮像装置の光軸方向1005と水平面との角度をθとすると、タッチセンサ1004A,1004Bは、光軸方向1005が水平方向から所定角度θ1、θ2だけ傾いたとき、錘1003に当接するように設置されている。
図11は図10の錘とタッチセンサがカメラ付き折り畳み式携帯電話に搭載された場合の構成例である。図11のカメラ付き折り畳み式携帯電話が、撮像装置1001を下にして置かれた場合、錘1003がタッチセンサ1004Aに当接し、タッチセンサ1004AがONになる(図12(a))。一方、撮像装置1001を上にして置かれた場合、錘1003がタッチセンサ1004Bに当接し、タッチセンサ1004BがONになる(図12(b))。
図13は光軸方向とタッチセンサのON/OFFとの関係を示す図である。すなわち、タッチセンサ1004AがONになり、タッチセンサ1004BはOFFのとき、光軸は水平方向から+θ1以上傾いた下向きであると推定できる。また、タッチセンサ1004BがONになり、タッチセンサ1004AはOFFのとき、光軸は水平方向から−θ2以上傾いた上向きであると推定できる。一方、タッチセンサ1004A、1004B両方ともOFFの場合は、-θ2<θ<θ1であり、光軸方向はほぼ水平と推定できる。
このように、錘とタッチセンサを利用して、撮像装置1001の光軸方向を検出することが可能となる。
なお、ここでは、カメラ付き折畳式携帯電話を例にとって説明したが、もちろんデジタルスチルカメラやデジタルビデオカメラであっても、錘とタッチセンサを利用して、撮像装置の光軸方向を検出することは可能である。図14はデジタルスチルカメラに錘とタッチセンサを搭載した場合の構成例である。図14(a)に示すように、撮像装置1001の光軸が下向きのときは錘1003がタッチセンサ1004Aに当接しており、一方、図14(b)に示すように、撮像装置1001の光軸が上向きのときは錘1003がタッチセンサ1004Bに当接している。
また、上述の実施形態では、撮像装置状況判断部101は、撮像装置1001の光軸の方向を検出して、撮像装置1001の状況が光源情報の取得に適しているか否かを判断するものとしたが、光軸の方向を検出する代わりに、例えば、撮像された画像の輝度値を検出するようにしても構わない。
撮像画像に光源が映っている場合、光源が撮像されている画素の輝度値は非常に高くなる。そこで、撮像装置1001により画像を撮像し、撮像された画像に閾値以上の輝度値が存在する場合、光源が撮像されており、光源情報の取得に適した状況であると判断することができる。このとき、光源の輝度値は非常に高いと考えられるため、撮像装置1001は露光時間をできる限り短くして撮像することが望ましい。
あるいは、撮像装置1001の状況が光源情報の取得に適しているか否かを判断するために、カメラの視野範囲に遮蔽物が存在するか否かを検出するようにしても構わない。これは、遮蔽物が存在する場合、光源が遮蔽されてしまい、光源を撮影できない可能性が高くなるためである。
遮蔽物の存在を検出するためには、距離情報を利用する方法と、画像情報を利用する方法とがある。前者は、例えばカメラのオートフォーカスなどに利用されている測距センサの出力を利用し、例えば、1m以内に被写体が存在する場合はその被写体は遮蔽物であると判断するようにすればよい。また、後者の画像情報を利用する方法は、例えば、撮像装置1001で画像を撮影し、その画像中から画像処理により人物を検出する。もし、人物が撮像されていた場合、その人物は遮蔽物であると判断する。これは、カメラの近傍で光源を遮蔽する最も一般的な被写体は人物だと考えられるためである。画像からの人物の検出は、例えば、色情報を利用して、肌色領域を検出するなど、広く知られている画像認識技術を利用すればよい。
また、光源画像取得部102が光源画像の取得を行う際には、フラッシュを照射せずに撮像を行うことが望ましい。これは、鏡のような鏡面反射を起こす被写体が撮像装置1001の視野内に存在している場合、フラッシュが反射され、誤って光源画素として推定されてしまうためである。そのため、冷却CCDカメラや多重露光撮像など、広いダイナミックレンジを撮像できる撮像装置を利用することが望ましい。また、光源画像取得部102が光源画像の取得を行う際に、露光量が足りない場合は、露光時間を長くすればよい。これは、上述のように、加速度センサなどを利用し、撮像装置1001が静止しているときのみ、光源画像の取得を行う場合に特に有効である。
(第2の実施形態)
図15は本発明の第2の実施形態に係る光源推定装置の構成を示すブロック図である。図15において、図1と共通の構成要素には図1と同一の符号を付しており、ここではその詳細な説明は省略する。
図15の構成では、図1の構成に加えて、光源画像合成部106が設けられている。光源画像合成部106は、光源画像取得部102によって取得された複数の光源画像から、第1の撮像装置情報取得部103によって取得された複数の第1の撮像装置情報を用いて、パノラマ光源画像を合成する。パノラマ光源画像とは、広範囲なシーンが撮像された光源画像のことである。パノラマ光源画像を利用することによって、広範囲なシーンにおける光源情報を一度に取得することができる。
本実施形態では、撮像装置状況判断部101、光源画像取得部102および第1の撮像装置情報取得部103が、処理を繰り返し実行し、複数枚の光源画像を取得するとともに、各光源画像にそれぞれ対応する複数の第1の撮像装置情報を取得する。これら複数組の光源画像および第1の撮像装置情報は、メモリ1028に格納される。
この際、例えば、第1の撮像装置情報取得部103は、光源画像取得部102によって新たな光源画像が取得されたとき、この新たな光源画像をすでに撮像されている光源画像と比較し、その差が大きい場合のみ、第1の撮像装置情報を取得するようにすればよい。一方、その差が小さい場合は、新たな光源画像を廃棄するようにすればよい。あるいは、加速度センサや角度センサを利用して、撮像装置1001が動いたときに、光源画像と第1の撮像装置情報を取得して格納するようにしてもかまわない。
光源画像合成部106は、メモリ1028に格納された複数組の光源画像と第1の撮像装置情報から、一枚の広域なパノラマ光源画像を合成する。
図16はパノラマ光源画像の合成方法を説明するための模式図である。図16において、1001は撮像装置、1006は視野範囲、1011は画像を投影するための投影面、1012は撮像した光源画像を投影した投影画像を示している。まず、メモリ1028に格納された光源画像を、これに対応する第1の撮像装置情報を用いて、投影面1011に投影する。ここで、投影面は半球状であるものとする。撮像装置1001に搭載された角度センサ1025の出力(α,β,γ)が、
であるときのカメラ座標系(x、y、z)を(Xw,Yw,Zw)とすると、投影面は以下の式で表される。
ここで、rprjは投影面1011である半球の半径である。例えば、屋外では街灯を想定し、10mとし、また屋内では天井に敷設された照明を想定し、2.5m程度とすればよい。このような屋外・屋内の切り替えは、例えば、屋内撮像モードと屋外撮像モードとを撮像者が切り替えるようにすればよい。
(式4)、(式10)より、全ての画素は次式によって投影面1011に投影できる。
ただし、R0は(式1)と(式9)から求まる姿勢行列である。
(式11)を利用して、撮像された全ての光源画像を投影面1011に投影し、投影画像1012を作製する。この際、2つ以上の光源画像が投影面上の同一領域に投影される場合があるが、この場合は例えば、新たに撮像された光源画像を優先し、以前に撮像された光源画像による投影画像1012は廃棄するようにすればよい。
このように、複数枚の光源画像を統合して投影画像を合成することにより、みかけの視野範囲を広げることが可能である。図17はこの様子を示した模式図である。図17において、1001は撮像装置、1005、1006はそれぞれ撮像装置1001の姿勢を変更した際の光軸方向と視野範囲、1013は姿勢を変更して撮像した画像を統合したことによって得られた、みかけの視野範囲を示している。このように、光軸方向を変化させて撮像した画像を統合してパノラマ画像化することにより、視野範囲を広げることができる。
また、投影面1011は半球である必要はなく、例えば屋内であれば、図18に示したように、直方体であっても構わない。この場合、カメラ座標系(x、y、z)を(Xw,Yw,Zw)とすると、投影面である直方体の各面は以下の式で表される。
ここで、a、b、cは定数であり、図18の直方体上の投影面を示している。よって、(式11)と同様に、(式4)と(式59)の交点を求めることにより、すべての画素は次式によって投影面1011に投影できる。
ただし、R0は(式1)と(式9)から求まる、姿勢行列である。
なお、屋外・屋内の切り替えは、光源画素の色を利用して行ってもかまわない。すなわち、撮像された光源画素のRGB成分から求まる色を利用し、それが太陽光か、あるいは蛍光灯または電球かを判別し、太陽光の場合は屋外、蛍光灯や電球の場合は屋内と判別すればよい。この場合、撮像装置のRGBそれぞれの波長特性と、画像の明るさの変化に対する電圧換算値の変化の比であるガンマ値とを保持しておけばよい。
光源情報推定部105は、光源画像合成部106が合成したパノラマ光源画像を利用して、光源情報を推定する。ここでは、光源情報として、光源位置を推定する方法を説明する。
まず、第1の実施形態で述べた方法によって、パノラマ光源画像から光源画素を抽出する。こうして抽出された光源画素の位置は、撮像装置1001の姿勢が(式9)である場合におけるものである。そこで、第2の撮像装置情報取得部104によって取得された第2の撮像装置情報を用いて、次式により、撮像者による撮像時におけるカメラ座標での光源位置(Xl_now,Yl_now,Zl_now)を推定する。
以上のように本実施形態の光源推定装置によると、パノラマ光源画像から、光源情報が推定されるので、広範囲なシーンにおける光源情報を一度に取得することができる。
(第3の実施形態)
図19は本発明の第3の実施形態に係る光源推定装置の構成を示すブロック図である。図19において、図1と共通の構成要素には図1と同一の符号を付しており、ここではその詳細な説明を省略する。
図19の構成は、折り畳み式携帯電話に搭載されていることを前提としている。そして、折り畳み式携帯電話を開閉させる開閉機構1031と、開閉機構1031に開閉動作を実行させるための開閉スイッチ1014とを備えている。開閉スイッチ1014が押されて開閉機構1031が開閉動作を実行すると、折り畳み式携帯電話に搭載された撮像装置1001の光軸方向が、この開閉動作に伴い変化する。すなわち、開閉機構1031は、撮像装置1001の光軸方向を変動させる光軸方向変動手段として、機能する。
光源画像取得指示部110は、開閉スイッチ1014が押されたとき、まず、光源画像取得部102に光源画像の取得を行うよう指示する。このとき、撮像装置1001は連写や動画撮影をすることが望ましい。撮像装置1001の撮像開始後、光源画像取得指示部110は開閉機構1031によって開閉動作を実行する。これによって、開閉機構1031が開閉動作を実行する間に、言い換えると、光軸方向変動手段によって撮像装置1001の光軸方向が変動している状態で、光源画像取得部102によって光源画像の取得が行われる。これによって、図17に示したように、広域な視野範囲において、複数枚の光源画像を撮像することができる。
図20は本実施形態に係る光源推定装置が実装されたカメラ付き折り畳み式携帯電話1000の外観図である。図20において、1001Aと1001Bは撮像装置、1002は撮像スイッチ、1014は折り畳み式携帯電話の開閉スイッチである。また、撮像装置1001A,1001Bに付された矢印は光軸方向を示している。折り畳み式携帯電話は、通話や撮像を行わない際は、通常、液晶ディスプレイの保護や携帯性の向上のために、図20(b)のように折り畳まれている。
図20(b)の状態で、開閉スイッチ1014を押すと、折り畳み式携帯電話1000は、図21(a)→(b)→(c)→(d)→(e)のように、自動で開く。図21において、1006A、1006Bは折り畳み式携帯電話1000に搭載された2つの撮像装置(図20における1001A,1001B)で撮像される視野範囲を示している。図21から、カメラ付き折り畳み式携帯電話1000の開閉スイッチ1014を利用することによって、撮像装置1001A,1001Bの光軸方向を変動させることができることが分かる。
開閉機構1031は例えば、バネやロック機構を設けることによって実現できる(例えば、特開平7−131850号公報参照)。また、折り畳み式携帯電話のヒンジ部に、モータを設置しておいてもよい。このとき、撮像装置1001の姿勢情報は、モータに併せて設置したロータリーエンコーダを、角度センサ1025として用いて取得すればよい。
図19の構成の動作について説明する。まず、開閉スイッチ1014が押されると、光源画像取得指示部110は、これを検出し、光源画像取得部102に光源画像の取得を指示する。また、光源方向変動手段としての開閉機構1031は、開閉スイッチ1014が押されたとき、折り畳み式携帯電話の自動開閉動作を実行する。開閉機構1031が作動している間に、光源画像取得指示部110から指示された光源画像取得部102は、撮像装置1001を利用して、光源画像を複数枚、撮像する。以降の動作は、第1の実施形態と同様である。
また、本実施形態では、撮像装置1001を移動させながら光源画像を撮像するため、露光時間はできるだけ短くすることが望ましい。また、手ぶれ補正処理を導入することによって、撮像装置1001が移動していても光源画像をブレなしに撮像するようにしてもかまわない。
ここで、手ぶれ補正処理を導入しない場合の露光時間TEとすると、露光時間TEは次式で表現される。
ここで、Mは開閉スイッチ1014を押すことによって回転する光軸の回転速度[deg/sec]、θsは撮像装置1001の縦方向の視野角[deg]、Lxは撮像装置1001の縦方向の画素数である。例えば、M=180[deg/sec]、θs=80[deg]、Lx=1000とすると、
となり、露光時間を1/4000秒程度にすればよい。
また、(式60)より、光軸の回転速度Mを決定するようにしても構わない。例えば、θs=40[deg]、Lx=1000、TE=0.0005[sec]であれば、
M<40[deg/sec]
となり、通常の開閉動作に比べ、ゆっくりと開閉機構1031を動作させればよい。
また、光源環境は時間とともに変化していくため、光源画像の取得は、実際に被写体を撮像する時間にできるだけ近いタイミングで実行することが望ましい。通常、開閉スイッチ1014は撮像を行う直前に押されることが多いため、本実施形態によると、撮像直前の光源画像を取得できる可能性が高くなるので、非常に有効である。
また、光源画像として、わざとボケた画像を撮影するようにしても構わない。ボケた画像を撮影することによって、撮影シーンにおける人物のプライバシーを保持しながら光源画像を撮像することができる。これは、例えば、露光時間を長くすることで実現できる。
前述のように、(式60)を満たさない場合、開閉機構1031による光軸の移動に伴い動きブレが生じ、ボケた画像が撮影される。そこで、例えば以下の式を満たす露光時間や回転速度を決定すればよい。
ここで、TBはボケ量を決定する定数である。例えば、TB=8、θs=40[deg]、Lx=1000、M=40[deg/sec]の場合、露光時間TE=0.008[sec]とすればよい。
また、複数枚の光源画像から、投票処理を利用して光源方向を推定してもよい。これにより、光源方向の推定精度を上げることができる。例えば、ある光源画像から光源位置を求めた結果、他の光源画像における光源位置と大きなズレがある場合、あるいは、他の光源画像には対応する光源が存在しないような場合、その光源位置の推定は失敗していると判断して、光源推定結果から廃棄するようにすればよい。
また、光源画像がきちんと撮像されていない場合、撮像を再度行うように促しても構わない。例えば、推定した光源情報から推定される画像と実際に撮像された光源画像とを比較し、その差が大きい場合は、光源画像において光源が撮像されておらず、光源推定に失敗していると判断すればよい。撮像を促す方法としては、例えば、音声で「再度、光源を撮像してください」と伝えたり、ディスプレイに「再度、光源を撮像してください」と表示させたりすればよい。
図22は本実施形態に係る光源推定装置の他の構成を示すブロック図である。図22において、図1および図19と共通の構成要素には、図1および図19と同一の符号を付しており、ここではその詳細な説明を省略する。
図22の構成は、第1の実施形態で示した撮像装置状況判断部101を備えている。また、例えば携帯電話のバイブレーション機能を実現するために用いられる、バイブレーション機構1026を備えている。バイブレーション機能とは、携帯電話がマナーモード時などに振動で着信を知らせる機能のことである。バイブレーション機能がONの状態で、バイブレーション機構1026が振動動作を実行すると、携帯電話に搭載された撮像装置1001の光軸方向が、この振動動作に従って変化する。すなわち、バイブレーション機構1026は、撮像装置1001の光軸方向を変動させる光軸方向変動手段として、機能する。
撮像装置状況判断部101は、第1の実施形態で説明したように、撮像装置1001の状況が光源情報を取得するのに適しているか否かを判断する。光源画像取得指示部110は、撮像装置状況判断部101によって適していると判断されたとき、バイブレーション機構1026に振動動作を実行させるとともに、光源画像取得部102に光源画像の取得を行うよう指示する。これによって、バイブレーション機構1026が振動動作を実行している間に、言い換えると、光軸方向変動手段によって撮像装置1001の光軸方向が変動している状態で、光源画像取得部102によって光源画像の取得が行われる。これによって、図17に示したように、広域な視野範囲において、複数枚の光源画像を撮像することができる。この場合、撮像装置1001は静止していないため、露光時間は短くすることが望ましい。
このとき、撮像装置1001の視野角をθs、バイブレーション機構1026による携帯電話の振動する角度をθv(図23の振動角)とすると、拡大された視野角θtは次式で表現される。
この式から、撮像装置1001の視野角θsと光源推定に必要な視野角θtが決まれば、必要な振動量を計算することができる。例えば、撮像装置1001の視野角θsが80度であり、光源推定に90度の視野角が必要だとすると、振動角は5度程度となる。これは、11cmの高さのある携帯電話を9mm程度振動させることによって実現できる値である。
なお、光源画像の取得のためにバイブレーション機構1026を動作させる際に、例えば、着信時やメール受信時とは異なる音をスピーカから流すようにしてもよい。これにより、光源画像の取得時を、着信時やメール受信時と区別することができる。また、光源画像を取得している際に、LEDやインターフェイス用の液晶ディスプレイを光らせて、利用者に告知するようにしてもかまわない。
もちろん、音やLED、ディスプレイによって告知した後に、バイブレーション機構1026を動作させて光源画像を取得するようにしてもかまわない。
図24は本実施形態に係る光源推定装置の他の構成例を示すブロック図である。図24において、図1および図22と共通の構成要素には、図1および図22と同一の符号を付しており、ここではその詳細な説明を省略する。
図24の構成では、図22と対比すると、メール受信検出部1032が設けられており、撮像装置状況判断部101が省かれている。メール受信検出部1032がメール受信を検出したとき、バイブレーションモードに設定されているものとすると、バイブレーション機構1026が振動動作を行う。またこのとき、光源画像取得指示部110は、メール受信検出部1032からの信号を受けて、光源画像取得部102に光源画像の取得を指示する。このような動作によって、バイブレーション機構1026が振動動作を実行している間に、言い換えると、光軸方向変動手段によって撮像装置1001の光軸方向が変動している状態で、光源画像取得部102によって光源画像の取得が行われる。
この構成によると、メールの受信によって作動するバイブレーション機能を利用して、撮像装置の光軸方向が変動した状態で複数の光源画像を取得することができるため、余計なバイブレーションを行う必要がなくなるというメリットがある。
以上のように本実施形態によると、光軸方向変動手段によって撮像装置の光軸方向が変動している状態で、光源画像の取得が行われるため、被写体周囲の広い範囲にわたって光源画像を取得することができるので、精度良く、光源情報を推定することができる。
なお、上述した各構成において、第2の実施形態で示した光源画像合成部106を設けて、複数の光源画像からパノラマ光源画像を生成するようにしてもかまわない。
なお、本実施形態では、光軸方向変動手段を、折り畳み式携帯電話の開閉機構やバイブレーション機構によって実現するものとしたが、本発明はこれに限られるものではなく、撮像装置の光軸方向を変動させる構成であれば、どのようなもので実現してもかまわない。例えば、撮像装置自体に専用の駆動機構を設けてもよい。
(第4の実施形態)
図25は本発明の第4の実施形態に係る光源推定システムの構成を示すブロック図である。図25では、図1と共通の構成要素については図1と同一の符号を付しており、ここではその詳細な説明を省略する。
図25では、例えばカメラ付き携帯電話によって構成される通信端末1100に、図1に示した各構成要素のうち光源情報推定部105以外のものが設けられている。そして、光源情報推定部105は、通信端末1100から離れてネットワークを介して接続された外部の装置であるサーバ1101に設けられている。すなわち、本実施形態では、通信端末1000側では、全ての処理を行うのではなく、光源画像と撮像装置情報の取得のみを行い、光源情報推定処理はサーバ1101側で実行する。
通信端末1100では、第1の実施形態で述べたように、光源画像取得部102によって光源画像が取得され、第1の撮像装置情報取得部103によって光源画像取得時における第1の撮像装置情報が取得され、第2の撮像装置取得部104によって実際の撮像時における第2の撮像装置情報が取得される。これら光源画像並びに第1および第2の撮像装置情報は、情報送信部108によって送信される。また、このとき、光源情報推定の内容についても指示するようにしてもよい。
サーバ1101では、情報受信部109が、通信端末1100からネットワークを介して送信される情報、すなわち光源画像並びに第1および第2の撮像装置情報を受信する。受信された光源画像並びに第1および第2の撮像装置情報は、光源情報推定部105に与えられる。光源情報推定部105は、第1の実施形態で述べたように、光源情報の推定を行う。光源情報推定の内容について指示されたときは、その指示に従って、光源情報の推定を行う。
このように、光源情報推定部105をサーバ1101に設けて、光源情報推定処理を実行させることによって、通信端末1100側の計算負荷を軽くすることが可能になる。
(光源情報を利用した画像の高解像度化)
本発明の光源推定装置は、デジタルズームとして知られている画像の高解像度化に特に有効である。画像の高解像度化は、撮像した画像を任意に拡大処理することができるため、画像撮像後の編集処理において重要である。本来、このような画像の高解像度化は補間処理などによって行なわれてきたが、2x2倍以上の拡大画像を合成する場合、合成される画像がボケてしまい、画質が劣化するという問題があった。本発明の光源推定方法を利用することで、画質劣化の少ない、画像の高解像度化を実現することができる。この手法を説明する。
まず、この処理の概念を説明する。本発明の高解像度化処理は、以下の4つの入力情報を利用する。
○被写体の拡散反射画像
○被写体の鏡面反射画像
○被写体の3次元形状情報
○光源位置・色・照度
ここで、拡散反射画像とは、入力画像のうち、マットな反射成分である拡散反射成分のみを画像化したものであり、同様に、鏡面反射画像は、入力画像のうち、てかりである鏡面反射成分のみを画像化したものである。ここで、拡散反射成分とは、光沢の無い物体表面で起こる反射で、すべての方向に一様に散乱する成分である。一方、鏡面反射成分とは、鏡の面での反射のように、法線に対して入射光の反対方向に強く反射する成分である。2色性反射モデルを仮定すると、物体の輝度は、拡散反射成分と鏡面反射成分との和として表現される。後述するように、鏡面反射画像と拡散反射画像は、例えば偏光フィルタを回転させながら被写体を撮像することで取得することができる。
図26(a)は、光源で照射された被写体(タンブラー)を撮像装置で撮像した画像を示している。図の上部にてかりである鏡面反射が現れているのがわかる。一方、図26(b)(c)は、図26(a)の画像を後述する方法で拡散反射画像と鏡面反射画像とに分離した結果である。拡散反射画像はてかりが取り除かれ、表面のテクスチャ情報が鮮明になっているが、立体感が失われている。一方、鏡面反射画像は細かな形状情報が鮮明に現れているが、逆にテクスチャ情報が失われている。つまり、入力画像はこれら全く異なる情報を含んだ二つの画像が重畳されたものであった。画像を拡散反射画像と鏡面反射画像とに分離し、別々に処理することにより、より精細な高解像度化処理が可能である。
高解像度化処理には、学習ベースの手法を用いる。学習ベースとは、事前に低解像度と高解像度の画像組を用意し、その対応を学習する。この際、用意された画像以外の画像においても高解像度化処理を働かせるために、画像そのものを学習するのではなく、画像から抽出した特徴量を学習する。
図27は本発明の一実施形態に係る画像高解像度化装置の構成を示すブロック図である。図27の画像高解像度化装置は、撮像装置を利用し、撮像を行う画像撮像部201と、上述した光源推定方法によって、被写体に照射する光源の方向や位置、輝度、色、スペクトル情報などの光源情報を推定する光源情報推定部203と、被写体の表面の法線情報または3次元位置情報を形状情報として取得する形状情報取得部204と、光源推定部203によって推定された光源情報と、形状情報取得部203によって取得された形状情報を用いて、画像撮像部201によって撮像された画像を高解像度化する画像高解像度化部217とを備えている。さらに、画像高解像度化部217は、画像撮像部201によって撮像された画像を、拡散反射・鏡面反射分離部202によって拡散反射成分と鏡面反射成分とに分離し、分離した拡散反射成分と鏡面反射成分とを個別に高解像化する。以下、それぞれの処理について説明する。
画像撮像部201はCCDやCMOSなどの撮像装置を利用して、被写体を撮像する。こうして撮像された画像は、輝度が非常に高くなる鏡面反射成分と拡散反射成分とが同時に、飽和することなく記録されることが望ましい。このため、冷却CCDカメラや多重露光撮像など、広いダイナミックレンジを撮像できる撮像装置を利用することが望ましい。
拡散反射・鏡面反射分離部202は、画像撮像部201によって撮像された画像を、拡散反射成分と鏡面反射成分とに分離する。
まず、物体の反射特性について説明する。2色性反射モデルを仮定すると、物体の輝度は、拡散反射成分と鏡面反射成分との和として以下の式で表現される。
ここで、Iは撮像装置が撮像した被写体の輝度値、I
aは環境光成分、I
dは拡散反射成分、I
sは鏡面反射成分である。ここで、環境光成分とは、光源の光が物体などによって散乱された間接光のことである。これは空間の至る所に散乱され、直接光がとどかない影の部分にもわずかに明るさを与える。そのため、通常はノイズとして取り扱われることが多い。
環境光成分は十分に小さく、ノイズとして無視できると考えると、画像は拡散反射成分と鏡面反射成分とに分離できる。上述のように、拡散反射成分がテクスチャ情報に依存するのに対し、鏡面反射画像は細かな形状情報に依存するといったように、これらの成分は非常に異なった特質を示す。そのため、画像を高解像度化するために、入力画像を拡散反射画像と鏡面反射画像とに分離し、それぞれの画像を別々の方法で高解像度化することによって、非常に高精細な高解像度化画像を取得することができる。このため、まずは拡散反射画像と鏡面反射画像とを分離する必要性がある。
この分離方法は、従来からさまざまなものが提案されている。例えば、
・鏡面反射と拡散反射の偏光度の違いを利用し、偏光フィルタを用いた方法(例えば、特許第3459981号公報)
・対象物を回転させ、マルチスペクトルカメラを利用することで鏡面反射領域を分離する方法(例えば、特開2003−85531号公報)。
・様々な方向から光源を当てた対象物の画像を利用し、鏡面反射が生じない理想状態での画像である線形化画像を合成し、その線形化画像を利用して鏡面反射や影領域を分離する方法(例えば、「石井育規,福井孝太郎,向川康博,尺長健, “光学現象の分類に基づく画像の線形化“,情報処理学会論文誌,vol.44,no. SIG5 (CVIM6) ,pp.11-21,2003」)。
などがある。
ここでは、偏光フィルタを利用する方法を用いる。図28は本実施形態に係る画像高解像度化装置が搭載されたカメラ付き携帯電話1000を示している。図28に示すように、撮像装置1001には回転機構(図示せず)をもった直線偏光フィルタ1016Aが設けられている。また、直線偏光フィルタ1016Bが取り付けられた照明装置1007が設けられている。また、1017は使用者のインターフェイス用の液晶ディスプレイである。
ここで、直線偏光フィルタ1016Bが取り付けられた照明装置1007に照らされた被写体について、撮像装置1001が、直線偏光フィルタ1016Aを回転機構により回転させながら、複数枚の画像を撮像する。ここで、照明が直線偏光されていることに着目すると、反射光強度は偏光フィルタ1016Aの回転角ψに対して、図29のように変化する。ここで、反射光の拡散成分をI
d、鏡面反射成分をI
sとすると、反射光輝度の最大値I
maxと最小値I
minは以下の式で表現される。
つまり、反射光の拡散成分I
d、鏡面反射成分I
sは、以下の式から求まる。
図30はこの処理の流れを示したものである。まず、回転機構により偏光フィルタ1016Aを回転させ(ステップS301)、画像を撮像し、メモリに保持する(ステップS302)。次に、メモリに保持された画像が、所定の枚数撮像されているかを確認する(ステップS303)。このとき、反射光輝度の最小値と最大値を検出するのに十分な枚数がまだ撮像されていない場合(ステップS303でNo)、偏光フィルタを再度回転させ(ステップS301)、撮像を繰り返す。一方、十分な枚数の撮像ができている場合(ステップS303でYes)、撮像された画像データを利用して、反射光輝度の最小値と最大値を検出し(ステップS304)、(式13)と(式14)を利用することにより、拡散反射成分と鏡面反射成分とを分離する(ステップS305)。この処理は、複数枚の画像から画素ごとに最小値と最大値を求めても構わないが、ここでは、sin関数のフィッテングを利用する。この処理を説明する。
図29に示した偏光フィルタ角ψに対する反射光輝度Iは、以下のように、sin関数で近似できる。
ここで、A、B、Cは定数であり、(式13)、(式14)より
つまり、撮像された画像から、(式15)のA,B,Cを求めることにより、拡散反射成分と鏡面反射成分とを分離することができる。
ところで、(式15)は以下のように展開できる。
ただし、
つまり、以下の評価式を最小にするA,B,Cを求めることで、拡散反射成分と鏡面反射成分とを分離することができる。
ただし、I
iは、偏光フィルタ角ψ
i時の反射光強度を示している。ここで、最小自乗法を用いると、各パラメータは以下のように推定される。
以上より、(式16)〜(式23)を利用することで、拡散反射成分と鏡面反射成分とを分離する。この場合、未知パラメータが3個であるため、偏光フィルタの回転角を変更した画像を最低3枚撮像すればよい。
このため、直線偏光フィルタ1016Aの回転機構を設ける代わりに、画素ごとに偏光方向の異なる撮像装置を利用しても構わない。図31はこのような撮像装置の画素を模式的に示したものである。ここで、1022は各画素を示し、各画素内の直線は偏光方向を示している。すなわち、この撮像装置は0°、45°、90°、135°の4種類の偏光方向を有する画素を持つ。そして、図31の太線1023のように、4種類の画素をベイヤ配列のように1画素として取り扱うことによって、偏光方向が4種類異なった画像を同時に撮像することができる。このような撮像装置は、例えば、フォトニック結晶デバイスなどを利用すればよい。
また、照明装置1007として、偏光された照明例えば液晶ディスプレイを利用してもかまわない。例えば、携帯電話1000に搭載されている液晶ディスプレイ1017を利用すればよい。この場合、液晶ディスプレイ1017の輝度値を、利用者のインターフェイス用として利用しているときに比べ、高くすることが望ましい。
もちろん、撮像装置1001の偏光フィルタ1016Aを回転させる代わりに、照明装置1007の偏光フィルタ1016Bを回転させてもかまわない。また、撮像装置1001と照明装置1007の両方に偏光フィルタを設置する代わりに、撮像装置側など片側のみに設置し、独立成分分析を利用して拡散反射成分と鏡面反射成分とを分離させてもかまわない(例えば、特許3459981号公報参照)。
光源情報推定部203は、上述したような光源推定方法を利用して、光源の位置と色、および照度情報を取得する。
形状情報取得部204は、被写体の形状情報である表面の法線情報または、被写体の3次元位置情報を取得する。被写体の形状情報を取得する手段としては、例えば、スリット光投影法、パターン光投影法、レーザレーダ法などの既存の手法を用いればよい。
もちろん、形状情報の取得はこれらの手法に限られるものでない。例えば、複数のカメラを利用するステレオ視、カメラの動きを利用するモーションステレオ法、光源の位置を変化させながら撮像した画像を利用する照度差ステレオ法、ミリ波や超音波を利用して被写体との距離を測定する方法、さらには反射光の偏光特性を利用した方法(例えば、米国特許第5,028,138号や「宮崎大輔,池内克史,"偏光レイトレーシング法による透明物体の表面形状の推定手法",電子情報通信学会論文誌,vol. J88-D-II, No.8,pp. 1432-1439,2005」)を用いてもかまわない。ここでは、照度差ステレオ法と偏光特性を利用した方法について説明する。
照度差ステレオ法は、光源方向が異なる3枚以上の画像を利用して、被写体の法線方向と反射率を推定する手法である。例えば、「H. Hayakawa, ”Photometric Stereo under a light source with arbitrary motion”, Journal of the Optical Society of America A, vol.11, pp.3079-89, 1994」は、画像上で6点以上の反射率が等しい点を既知情報として取得し、拘束条件として利用することによって、光源の位置情報も未知としながらも、以下のパラメータを推定する手法である。
・被写体情報:画像上の各点の法線方向と反射率
・光源情報:被写体の観察点における光源方向と照度
ここでは、前述の拡散反射・鏡面反射分離手法によって分離された拡散反射画像のみを利用した照度差ステレオ法を行う。本来、この手法は被写体が完全拡散反射をしていることを仮定しているため、鏡面反射が存在する被写体では大きな誤差が生じてしまう。しかし、分離した拡散反射画像のみを利用することで、鏡面反射の存在による推定誤差を無くすことができる。もちろん、後述するように、影除去部205で影領域を除去した拡散反射画像で処理を行なっても構わない。
光源方向が異なる拡散反射画像を以下のように輝度行列I
dで表現する。
ただし、i
df(p)は光源方向fの拡散反射画像の画素pにおける輝度値を示している。また、画像の画素数はP画素、異なった光源方向で撮像した画像枚数はF枚である。ところで、ランバーシャンモデルより、拡散反射画像の輝度値は以下のように表現できる。
ただし、ρ
pは画素pの反射率(アルベド)、n
pは画素pの法線方向ベクトル、t
fは光源fの入射照度、L
fは光源fの方向ベクトルを示している。
(式24)、(式25)より以下の式が導かれる。
ただし、
ここで、Rは表面反射行列、Nは表面法線行列、Lは光源方向行列、Tは光源強度行列、Sは表面行列、Mは光源行列と呼ぶ。
ここで、特異値分解を利用すると、(式26)は以下のように展開できる。
ただし、
であり、Eは単位行列を示している。また、U’はP×3行列、U”はP×(F−3)行列、Σ’は3×3行列、Σ”は(F−3)×(F−3)行列、V’は3×F行列、V”は(F−3)×F行列である。ここで、U”、 V”は信号成分であるU’、 V’の直交基底、すなわち、ノイズ成分であると考えられる。ここで、特異値分解を利用すると、(式28)は以下のように変形できる。
すなわち、(式29)を解くことにより、形状情報と光源情報を同時に取得することができるが、以下の3×3行列Aの不定性が残る。
ここで、Aは任意の3×3行列である。形状情報と光源情報を取得するためには、この行列Aを求める必要がある。これは、例えば、画面上の6点以上で反射率が等しいことが既知であればよい。例えば、任意の6点k1〜k6の反射率が等しいとすると、
(式27)、(式30)と(式32)より、
さらに、
とおくと、(式33)は以下のようになる。
ここで、(式34)より行列Bは対称行列であるため、行列Bの未知数は6である。すなわち、画面上の6点以上で反射率が等しいことが既知であれば、(式35)は解くことができる。
また、行列Bが既知となれば、(式34)に特異値分解を利用することにより、行列Aは解くことができる。
さらに、(式30)、(式31)より、形状情報と光源情報を取得する。
以上のことより、反射率が等しい6点以上の画素が既知な被写体において、光源方向を変更しながら3枚以上の画像を撮像することにより、以下の情報を得ることができる。
・被写体情報:画像上の各点の法線方向ベクトルと反射率
・光源情報:被写体の観察点における光源方向ベクトルと放射輝度
ただし、上記の処理で求まる被写体の反射率と光源の放射輝度は相対的なものであり、絶対値を求めるためには、画面上の6点以上で反射率が既知であるなど、上記とは異なる既知情報が必要となる。
また、光源と撮像装置との位置関係が既知の場合、撮像装置と被写体の距離や3次元位置を求めるようにしても構わない。これを図を用いて説明する。
図32はこの処理を説明するための模式図である。図32において、1001は撮像装置、1007Aおよび1007Bは光源、1015は被写体の観察点O、1010Aおよび1010Bは被写体の観察点Oにおける各光源の光源方向、1021は被写体の観察点Oにおける撮像装置の視線方向を示している。
まず、光源と撮像装置との位置関係が既知であるため、撮像装置1001と光源1007A、1007Bの3次元位置関係La、Lbは既知である。また、撮像装置1001はキャリブレーションされているとすると、撮像装置1001の視線方向1021も既知である。このことから、被写体の観察点O1015はこの視線方向1021上に存在する。また、上述の照度差ステレオ法により、被写体の観察点Oにおける各光源の光源方向1010A、1010Bは既知である。撮像装置1001と観察点O1015の距離Lvが正(Lv>0)であるとすると、このような位置関係を満たす観察点Oは、1点しか存在しない。そのため、観察点O1015の位置がわかり、撮像装置1001と観察点O1015の距離Lvが求まる。
また、例えばデジタルカメラのフラッシュのように撮像装置に光源が設置されている場合、光源と撮像装置との位置関係は設計情報から求めることができる。
また、形状情報取得部204は反射光の偏光特性を利用して、被写体の表面法線方向を取得しても構わない。この処理について、図33を用いて説明する。
図33において、1001は撮像装置、1007は光源、1015は観察点O、1016はモータなどの回転機構(図示せず)をもった直線偏光フィルタ、1019は法線方向を示している。光源として自然光が照射されている状態において、回転機構によって偏光フィルタ1016を回転しながら撮像を行った場合、その反射光強度は、図34に示したように、周期πのsin関数となる。
ここで、この反射光強度の最大値Imaxと最小値Iminを計測する偏光フィルタの角度ψmax、ψminを考える。撮像装置1001と光源1007、観察点O1015を含む平面を入射面とし、被写体は鏡面反射成分が支配的であるとすると、ψmaxは偏光フィルタ1016の偏光方向が入射面に対して垂直な方向、また、ψminは偏光フィルタ1016の偏光方向が入射面に対して平行な方向になることが知られている。
また、上述したように、光源が偏光光源の場合、反射光成分において、偏光特性を有するものは観察点Oの表面で反射した鏡面反射成分、非偏光の成分は拡散反射成分である。このことから、反射光強度の最大値Imaxと最小値Iminの強度差が生じる観察点Oは鏡面反射成分が強い観察点、すなわち、光が正反射している(観察点Oの法線方向1019が観察点Oからの光源方向と観察点Oからの撮像装置方向の二等分線方向である)ことがわかる。そのため、法線方向1019も入射面内に存在する。そのため、ψmaxまたはψminを推定することにより、法線方向1019は以下の平面内に存在すると推定することができる。
○撮像装置1001を通り、偏光フィルタ1016の偏光方向ψmin(またはψmaxの垂直方向)を含む平面。
ここで、ψmaxまたはψminは、前述のsin関数のフィッテング処理を行うことで推定する。
また、撮像装置1001の位置を変更させて、同様な処理を行うことによって、法線方向1019を含む、異なった2つの平面を推定することができる。推定した2つの平面の交線を求めることによって、法線方向1019を推定する。この際、撮像装置1001の移動量を推定する必要があるが、これは、前述の8点法などを利用すればよい。
もちろん、拡散反射・鏡面反射分離部202と同様に、画素ごとに偏光方向の異なる撮像装置を利用しても構わない。
また、もちろん、撮像装置1001の位置を変更させるのではなく、複数台の撮像装置を設置して法線方向1019を求めるようにしても構わない。
以上のように、照度差ステレオ法と偏光特性を利用した方法では、表面の法線情報を取得する。一方、スリット光投影法やステレオ視などの手法では、被写体の3次元位置情報を取得する。被写体表面の法線情報とは、被写体の3次元位置情報の微小空間での傾き情報であり、どちらも被写体の形状情報である。
以上の処理により、形状情報取得部204は被写体の形状情報である表面の法線情報または、被写体の3次元位置情報を取得する。
以上の処理により、以下の情報を取得する。
○被写体の拡散反射画像
○被写体の鏡面反射画像
○被写体の3次元形状情報
○光源位置・照度
影除去部205は、画像中の影領域を推定し、影除去処理を行う。このような、影除去および影領域推定処理はさまざまな方法が提案されているが、例えば、影領域は輝度値が低いことを利用し、輝度値が閾値以下の画素を影領域と推定すればよい。
また、形状情報取得部204によって3次元形状情報が取得されている場合、Computer−Graphicsの分野で広く利用されているレンダリング手法である、レイトレーシングを利用してもかまわない。レンダリングは物体の座標データや光源や視点の位置などの環境に関するデータを計算して行うが、レイトレーシングは、視点に届く光線を逆にたどることによって描画する。このため、レイトレーシングを利用してどの場所にどの程度の影が生成されているかを計算することができる。
次に、拡散反射・鏡面反射分離部202によって分離された拡散反射画像と鏡面反射画像を、それぞれ、別々の方法で高解像度化する。まず、拡散反射画像の処理について説明する。
アルベド推定部206は、拡散反射・鏡面反射分離部202によって分離された拡散反射画像を利用し、被写体のアルベドを推定する。アルベドは光源情報に影響を受けないため、アルベド画像を利用して処理を行うことによって、光源変動にロバストな処理が実現できる。
この処理を説明する。(式25)より、拡散反射成分では、以下の関係が成り立つ。
ただし、θ
iは被写体の法線方向ベクトルと光源方向ベクトルのなす角度を示す。ここで、光源情報取得部203および形状情報取得部204により、角度θ
iは既知である。また、後述するように、光源の入射照度t
fも推定可能なため、被写体のアルベドr
pを(式36)から求める。
この際、cosθiが0以下の値を持つ場合、すなわち、attached shadowである場合、(式36)はアルベドがマイナスになる、あるいは、0で除算を行うことになり、意味を持たない。しかし、上述の影除去部205によってこのような画素を除去しているため、問題は生じない。
もちろん、被写体のアルベドを求めるのではなく、次式によりアルベドを鏡面反射画像の最大輝度値で正規化した擬似アルベドr
p’を求め、これを利用しても構わない。
ここで、isf_maxは鏡面反射画像の最大輝度値を示している。このような擬似アルベドは、光源情報推定部203により、光源の放射輝度(照度)が取得できない場合に有効である。擬似アルベド画像を利用した場合、正規化に利用した鏡面反射画像の最大輝度値isf_maxをメモリに保持しておく。図51はアルベド推定部206が擬似アルベドを利用した場合、メモリに保持されるデータを示した図である。作成された擬似アルベド画像と、正規化に利用した鏡面反射画像の最大輝度値isf_maxが保持されている。
鏡面反射パラメータが被写体の広い領域で一様であり、被写体表面にさまざまな方向の法線が存在しているとすると、カメラに対して被写体を照らす位置に光源が存在している限り、正反射が生じる正反射画素が存在する。そのため、鏡面反射画像の最大輝度値isf_maxはこの正反射画素の輝度値となる。
反射特性が一様であり、視線方向1021がほぼ一様である場合、ある光源位置での正反射画素の輝度値と別の光源位置での正反射画素の輝度値の比は、各光源での光源の放射輝度比とほぼ等しくなる。そのため、拡散反射画像の輝度値idf(p)をθiにより除算しただけでは光源の放射輝度の影響が残ってしまうが、さらに正反射画素の輝度値である鏡面反射画像の最大輝度値isf_maxで正規化を行った擬似アルベド画像を利用することにより、光源の放射輝度が取得できない場合においても光源に影響されない拡散成分画像を作成できる。
また、鏡面反射画像の最大輝度値isf_maxによって正規化を行うのではなく、拡散反射画像の最大輝度値や入力画像の最大輝度値を利用して正規化を行い、擬似アルベドを作成しても構わない。
次に、こうして求めたアルベド画像の高解像度化について説明する。
アルベド高解像度化部207は、アルベド推定部206が推定したアルベド画像を高解像度化する。この処理について詳述する。
前述のように、アルベド画像は、光の鏡面反射や陰影など光学現象によらない被写体固有の反射率特性を表現した画像である。本実施形態における高解像度化は、被写体情報が不可欠なため、被写体の事前学習に基づく。ここではテキストン(画像のテクスチャ特徴量)に基づく高解像度化を用いる。
図35はテキストンに基づく高解像度化の概念を示す図である。実行時に入力された低解像度画像LR(画素数N×N)は、画素数を目標画素数に合致させるため、M×M倍に補間拡大される。この画素数MN×MN画像をexLR画像と称する。exLR画像では画像の高周波成分が失われて、ぼけた画像になる。このぼけ画像を先鋭化することが高解像度化に他ならない。
次に、多重解像度変換WTによって、exLR画像の輝度値を画素ごとに、多重解像度に基づくT次元テキストンに変換する。この変換にはウェーブレット変換やピラミッド構造分解などの処理が用いられる。この結果、exLR画像の各画素ごとに、合計MN×MN本のT次元テキストンベクトルが生成される。次に、汎用性の向上のため、テクストンベクトルにクラスタリングが実施されて、L本の入力代表テキストンベクトルが選択生成される。これらL本のテキストンベクトルに対して、予め学習したデータベースの情報から変換が施されて、T次元の高解像度化テキストンベクトルが生成される。この変換には、テーブル読み出しや、T次元の多次元特徴ベクトル空間内における線形および非線形変換が用いられる。高解像度化テキストンベクトルは、逆ウェーブレット変換やピラミッド構造再構成などの逆変換IWTによって、画像輝度値に戻されて、高解像度画像HRが完成する。
この処理では、MN×MN本のT次元テクストンベクトルのクラスタリング処理における探索とテーブル読み出しの処理に多大な時間を要し、動画など高速化対応が困難であった。そこで、1)クラスタリング処理をLR画像にて実施する。2)テーブル読み出しを線形マトリクス変換に変更する。という改良を加えた。この処理では、LR画像の1画素はHR画像のM×M画素のセルに対応する事実を使って、T次元からT次元への線形マトリクス変換をセル毎に実施して、セル内部での空間的な連続性を維持することができる。また利用する線形マトリクスはクラスタリングの結果から最適に選択する。セル境界の不連続性が問題になる場合にはマトリクス処理単位のブロックを一部重ねるなどの処理を追加してもよい。
図36は上の改良点を模式的に描いた図である。LR画像をWT変換して、T次元の特徴量空間の中のL(ここではL=3)本の代表特徴ベクトルとしている。そして、各特徴ベクトルに異なる線形マトリクスが付随している。この状態を保存したものが高解像度化データベースに他ならない。
以下、N=32、M=4、すなわち32×32画素の低解像画像に4×4倍の高解像度化を施す例をとって、画像処理手法の詳細を述べる。アルベド画像は(RGB)カラー画像とするが、カラー画像は(RGB)から輝度色差(YCrCB)に変換して独立した色成分画像として取り扱うものとする。通常、2×2倍率程度では、輝度Y成分だけの高解像度でカラー成分は低解像度の色差信号のまま付加しても違和感はないが、4×4以上では、色信号も高解像度化が必須になるので各成分とも同様な取り扱いとする。以下、カラー画像の1つの成分画像のみの処理を説明することとする。
(学習時)
図37は学習処理の流れを説明するPAD図であり、図38は学習処理において処理される画像の処理対象画素と処理対象セルとの関係を説明する図である。以下、図37および図38を交互に用いて説明を行なう。
まず、S311〜S313において、低解像度画像LR画像、高解像度画像HR画像、および低解像度画像の拡大画像exLR画像を入力する。これら画像は、HRから全て生成されており、撮像における画素ずれがない状態としておく。また、LR画像からexLR画像の生成にはバイキュービック補間を用いている。図38において、高解像度画像HR(画素数128×128)と、低解像度LR画像(画素数32×32)とLRを画素数だけHRと合致させたexLR画像(画素数128×128)の3種類の画像を用意する。
S314において、LR画像をテキストン化する。具体的にはHaar基底を用いた2次元離散定常ウェーブレット変換(Discrete stationary wavelet transform:SWT変換)する。SWT変換の階層は2階層(2-step)とすると、6次元のLRW画像(画素数32×32=1024)が生成される。本来、2階層ステップの2次元離散定常ウェーブレット変換では7次元の特徴ベクトルとなるが、最低周波数のLL成分画像は画像の平均輝度情報に近くなり、これを保存するため残りの6成分のみを利用する。
S315において、テキストン化されたLRW画像の合計1024本の6次元ベクトルをCmax個にまでクラスタリングする。ここではK-means法を用いて、例えばCmax=512本にクラスタリングする。この512本の結果のテキストンベクトルの集合をクラスタCと称する。クラスタリングをせず1024本のテキストンを全て利用しても問題ない。
S316において、クラスタCの同一クラスタに判別されたLR画素を判定する。具体的には、LR画像の画素値がクラスタCの各テキストン番号に置き換えられる。
S317において、クラスタCの全テキストンに対して繰り返し処理をしながら、該当テキストンに対応するexLRの画素セルとHR画像の画素セルを探索して、該当セル番号を格納する。この探索がLR画像の画素数分だけで済むため、高倍率の場合に大きな探索時間の削減となる。
ここでLR画像の画素とexLR画像、HR画像の画素セルとの対応につき、図38で説明する。図38では、LR画像上で、2001と2002という2画素がCの同一クラスタ(クラスタ番号:Ci=0)に判別されたとする。すると、そのままの位置関係を保って拡大されたexLR画像上では2003,2004、HR画像上では2005、2006という画素セルが対応していると考えられ、これらの2箇所のセル位置の番号が、該当するテキストンを有するものとして格納される。画素セル内に含まれる画素数は拡大率4×4=16に等しい。
次にS318において、これらの画素セル群についてexLR画像とHR画像の対でテキストン化を行う。具体的には、2次元離散定常ウェーブレット変換(Discrete stationary wavelet transform)が実施されて、exLRW画像とHRW画像が生成される。
S319とS320において、上記HRW画像とexLRW画像から得られたテキストンの対が行列の形として集積される。形式はいずれも、6×Data_numの行列となる。ここでData_numは、(1セルの画素数)×(探索されたセルの数)となり、上のCi=0の例では、2個のセルが探索されたので16×2=32となる。
S321において、集積された両者に所属する合計2×4×4=128個の特徴ベクトルから最小二乗法にて6×6マトリクスMを算出し、それをS322において、クラスタ番号K=0とともにデータベースCMat(K)に格納蓄積する。S322における最小二乗法は、まずS319とS320において集積されたexLRとHRのテキストンの行列を各々LfとHf(サイズ:6×Data_num)とし、求めるマトリクスをM(6×6)とすると以下のように実行できる。
次に、クラスタ番号K=1について同様処理を繰り返して、K=511まで行う。すなわち、CMatはクラスタ番号ごとに規定される6×6変換行列の群である。
最後に、S323とS324において、使用したクラスタCと学習された変換行列CMatとを出力する。こうして求めたクラスタCと学習された変換行列CMatを、アルベドDB208に蓄積する。
図39は2次元離散定常ウェーブレット変換(Discrete stationary wavelet transform)の処理を示す図である。通常のウェーブレット変換では、フィルタバンク構成は同一のまま分解の階層が進む毎に画像が縮小していくが、2次元離散定常ウェーブレット変換では、分解の階層が進んでも変換画像サイズは不変であり、スケーリング関数Fとウェーブレット関数Gの2種類のフィルタがアップサンプリング(↑)されて2のべき乗で長くなっていくことにより多重解像度解析を行う。Haar基底では、FとGの具体的な数値とアップサンプリングの様子は表1のようになる。
LL成分であるcA画像を1階層進めてウェーブレット分解する場合、FとGのフィルタを交互に1次元的にコンボリューションすることにより、図39のように4種類の画像が生成される。1)行方向にF・列方向にF:cA画像(LL成分) 2)行方向にF・列方向にG:cDh画像(LH成分) 3)行方向にG・列方向にF:cDv画像(HL成分) 4)行方向にG・列方向にG:cDd画像(HH成分)。
図40は2次元離散定常ウェーブレット変換をテスト画像に実施した場合の画像結果例である。テキストンベクトルとは、これらウェーブレットの1−STEPと2−STEPの変換画像の1画素ごとに対応する値を連ねたもので、
の7次元ベクトルのことである。ただし2−STEPのLL成分であるcA2を除いて、6次元ベクトル部分のみを使って高解像度変換し、cA2成分は保存している。
なお、ウェーブレット変換のステップ数をここではS314とS318のいずれも2−STEPとしている。このステップ数が大きくなるほど、画像の大まかな特徴までテキストンで表現することができる。本発明においてステップ数は可変であるが、LR画像のクラスタリングのためのS314の場合、1−STEPでは周辺の画素状況として十分な情報とならない場合があるため、2−STEPとしている。一方、exLR画像を高解像度化するためのテキストンを生成するS318の場合、たとえば8×8の倍率においては2−STEPよりも3−STEPの方が良好な画像が得られることが、実験的に確認されている。このため、倍率との関係でステップ数を決定することが望ましい。
(高解像度化処理の実行時)
図41は実行時の処理の流れを示すPAD図であり、図42は実行時の処理の画素セルとの関係を示す図である。
まず、S331とS332において、LR画像とこれを拡大したexLR画像とを入力する。学習時と同様に、LR画像の画素数=32×32、exLR画像の画素数=128×128とする。ここでexLR画像の生成方法は、図37のS313において学習画像のexLR画像を生成した方法と同様にバイキュービック法による。
次に、S333とS334において、学習時に得られたクラスタCと変換行列CMatをアルベドDB208から読み出し、入力する。
S335において、LR画像をテキストン化する。具体的には図42で示すように、Haar基底を用いた2次元離散定常ウェーブレット変換(Discrete stationary wavelet transform:SWT変換)を行う。SWT変換の階層は2階層(2-step)とすると、6次元のLRW画像(画素数32×32=1024)が生成される。本来は2階層ステップの2次元離散定常ウェーブレット変換では7次元の特徴ベクトルとなるが、最低周波数のLL成分画像は画像の平均輝度情報に近くなり、これを保存するため残りの6成分のみを利用する。
次にS336において、各テキストンにつき、クラスタC(Cmax個のテキストン)内の最短距離のテキストンベクトルを探索してテキストン番号(Ci)を得る。これは図42において、LR画像の1ライン上の各画素2011,2012,…,2013について、各々C0,C1,…,Cnというテキストン番号が付与されることに相当する。
次にS337に進むが、これ以降はHR画像の各セルを走査線順に処理していく繰り返し処理となる。具体的には、図42において、exLR画像のセル2014,2015,…,2016を処理していくと、対応するHR画像のセル2023,2024,…,2025が順次高解像度化されていく。
S337において、exLR画像の該当セル領域がテキストン化される。具体的には、2次元離散定常ウェーブレット変換(Discrete stationary wavelet transform)が実施されて、exLRW画像が生成される。セル2017,2018,…,2019などが生成される。
S338において、テキストン番号から変換行列CMatを引いて該当セルにおける変換行列Mを確定する。この処理は図42のように行われる。LRW画像には、すでに画素2011=C0、画素2012=C1、…、画素2013=Cnとテキストン番号が振られている。これを位置関係を保存したexLRW画像のセル2017、2018、…2019に適用して、各々のセルで、C0,C1,・・Cnをテキストン番号としてMatから別々の6×6変換行列Mを選択することができる。
S339において、各セルに変換行列Mを作用させる。これはセル内のテキストンLTi(i=1〜16)全部について、
を実施すればよい。これらを繰り返して、exLRW画像のセル2017,2018,…,2019からHRW画像のセル2020,2021,…,2022が、それぞれ生成される。
次に、これら高解像度化されたセル内の6次元テキストンに、exLRW画像の2−STEPのLL成分を付加して7次元テキストンを生成する。
S340において、この各セル内7次元のテキストンを逆SWT変換することにより画像に変換する。以上をexLR画像の全セルについて繰り返す。
逆SWT(ISWT)変換は、図43で示す信号フローで実現できる。図39とほとんど同じ表現である。通常のウェーブレット逆変換ではフィルタバンクの構成は同一のまま、分解の階層が進む毎に画像が拡大していく。これに対して、本逆変換においては、分解の階層が進んでも変換画像サイズは不変であり、スケーリング関数Fとウェーブレット関数G1の2種類のフィルタがダウンサンプリング(↓)されて2のべき乗で短くなっていくことにより、多重解像度解析を行う。Haar基底では、FとG1の具体的な数値とダウンサンプリングの様子は表2のようになる。
以上のようにしてアルベド画像の1成分が高解像度化される。この処理を、アルベド画像全てに行うことにより、高解像度なアルベド画像を合成する。
このとき、アルベド画像に含まれる被写体の大きさや姿勢、向きなどが変化しても処理が可能なように、画像の正規化を行うようにしてもかまわない。テキストンを利用した高解像度化処理は、学習データに対してアルベド画像の大きさや姿勢が異なっている場合、高解像度化の精度が十分に発揮されないことが考えられる。そこで、アルベド画像を複数組用意し、この問題を解決する。すなわち、アルベド画像を30度ずつ回転させた画像を合成し、そのすべての画像で高解像度化を行い、姿勢や向きの変化に対応させる。この場合、前述の「高解像度化処理の実行時」のPAD図である図41のステップS336において、最短距離のテキストンを探索する際、回転処理を行った各画像から求めた複数のLR画像のテキストン、それぞれにおいて最短距離のテキストンを探索し、最も距離の近いものを探索してテキストン番号(Ci)を得るようにすればよい。
また、大きさの変化に対応するために、画像の大きさを変更したアルベド画像を合成するようにしてもかまわない。
また、実際の大きさを基準に、例えば、5cm×5cmの画像が必ず8x8画素になるように拡大縮小処理を行い、その画像に対してテキストンを作製するようにしてもかまわない。被写体の大きさは、形状情報取得部204により既知であるため、「学習時」および「高解像度化処理の実行時」ともに同じ大きさの画像でテキストンを作製することで、大きさの変動に対応するようにしてもかまわない。
また、「高解像度化処理の実行時」のアルベド画像を回転させるのではなく、「学習時」のアルベド画像を回転させ、複数組のテキストンを作製し、クラスタCと学習された変換行列CMatをアルベドDB208に蓄積するようにしても構わない。
さらに、入力された被写体が何であるかを推定し、推定された被写体がどのように回転しているかを姿勢推定するようにしてもかまわない。このような処理は、広く使われている画像認識技術を利用すればよい。これは、例えば、被写体にRFIDのようなタグを設置しておき、そのタグ情報を認識することで被写体が何であるかを認識し、さらにタグ情報から被写体の形状情報を推定し、画像や被写体の形状情報から姿勢推定を行うようにすればよい(例えば、特開2005−346348号公報参照)。
拡散画像高解像度化部209は、アルベド高解像度化部207が合成した高解像度アルベド画像から高解像度な拡散画像を合成する。この処理を説明する。
前述のように、アルベド画像は、拡散成分画像を光源ベクトルと被写体の法線方向ベクトルの内積で除算したものである。そのため、アルベド画像に、光源情報推定部203によって推定された光源方向ベクトルと、後述するパラメータ高解像度化部によって求めた被写体の高密度法線方向ベクトルとの内積を乗算することによって、高解像度の拡散画像を合成する。光源情報推定部203により、複数の光源が推定された場合、それぞれの光源に対して高解像度な拡散画像をおのおの合成し、その画像を足し合わせることで、一枚の高解像度拡散画像を合成する。
また、アルベド画像ではなく擬似アルベド画像を利用している場合、擬似アルベド画像に、光源情報推定部203によって推定された光源方向ベクトルと、形状情報高密度化部211によって求められた被写体の高密度法線方向ベクトルとの内積を乗算し、さらに正規化を行うために利用した鏡面反射画像の最大輝度値isf_maxを乗算することによって、高解像度拡散反射画像を合成する。正規化で利用した鏡面反射画像の最大輝度値isf_maxは、アルベド推定部206によってメモリに蓄積されているため、この情報を読み出せばよい。もちろん、拡散反射画像の最大輝度値や入力画像の最大輝度値を利用して正規化を行っている場合、鏡面反射画像の最大輝度値isf_maxを乗算するのではなく、正規化に利用した拡散反射画像の最大輝度値や入力画像の最大輝度値を乗算する。
以上の処理により、高解像度化された拡散画像を合成することができる。ここで、高解像度化処理はアルベド画像を利用して行ったが、アルベド画像ではなく、拡散画像を直接、高解像度化するようにしても構わない。この場合、学習処理は拡散画像を用いて行えばよい。
次に、鏡面反射画像の高解像度化処理について説明する。ここでは、画像をパラメータに分解し、パラメータごとに高密度化する。この処理を順に説明する。
パラメータ推定部210は、形状情報取得部204によって取得された被写体の法線情報、拡散反射・鏡面反射分離部202によって分離された拡散反射画像と鏡面反射画像を利用して、その被写体を表現するパラメータを推定する。ここでは、Computer−Graphicsの分野で広く使われているCook−Torranceモデルを利用する方法を説明する。
Cook−Torranceモデルでは、鏡面反射画像を次式のようにモデル化する。
ここで、Eiは入射照度、ρs,λは波長λにおける鏡面反射成分の双方向反射率、nは被写体の法線方向ベクトル、Vは視線ベクトル、Lは光源方向ベクトル、Hは視線ベクトルと照明方向ベクトルの中間ベクトル、βは中間ベクトルHと法線方向ベクトルnの角度を表す。また、Fλはフレネル方程式から求められる誘電体表面からの反射光の比であるフレネル係数、Dはマイクロファセット分布関数、Gは物体表面の凸凹による遮光の影響を表す幾何減衰率である。さらに、nλは被写体の屈折率、mは被写体表面の粗さを示す係数、Ijは入射光の放射輝度である。また、ksは鏡面反射成分の係数である。
さらに、(式25)のランバーシャンモデルを利用すると、(式12)は以下のように展開される。
ただし、
ここで、ρ
dは拡散反射成分の反射率(アルベド)、dpx、dpyは撮像装置の1画素のx方向、y方向の長さ、rは撮像装置の観察点Oからの距離を示している。また、k
dは以下の関係式を満たす係数である。
Srは拡散反射成分と鏡面反射成分の輝度値の違いを表現するための定数であり、拡散反射成分が被写体からすべての方向へエネルギーを反射することを示している。図44はこの定数Srを説明するための模式図である。図44において、観察点Oで反射された拡散反射成分エネルギーは、半球状に広がっていく。ここで、撮像装置1001が観察点Oからrだけ離れているので、撮像装置の1撮像素子に届くエネルギーと、観察点Oで反射した総エネルギーの比S
rは、(式48)で表される。
以上のことから、パラメータ推定部210は、(式37)〜(式45)(式46)(式47)、(式48)からパラメータを推定する。
以上の関係式をまとめると、パラメータ推定を行なうための既知パラメータと、推定すべきパラメータは以下のようになる。
(既知パラメータ)
○環境光成分Ia
○拡散反射成分Id
○鏡面反射成分Is
○被写体の法線方向ベクトルn
○光源方向ベクトルL
○視線ベクトルV
○中間ベクトルH
○中間ベクトルHと法線方向ベクトルnの角度β
○撮像装置1001の1画素のx方向、y方向の長さdpx, dpy
○撮像装置1001と観察点Oとの距離r
(推定すべきパラメータ)
○入射照度Ei
○鏡面反射成分の係数ks
○被写体表面の粗さm
○被写体の屈折率ηλ
ここで、拡散反射成分の係数kd、および拡散反射成分の反射率(アルベド)ρdも未知パラメータであるが、鏡面反射成分のパラメータのみを推定するため、ここでは推定処理を行なわない。
図45はパラメータ推定部210の処理の流れを示す図である。処理は、以下の2段階からなる。
まず、光源情報を使用して、入射照度E
iを求める(ステップS351)。ここでは、光源情報推定部203によって取得した光源の位置情報、形状情報取得部204で求めた撮像装置と被写体との距離情報、さらには光源情報取得部203で求めた光源照度を用いる。これは、次式から求まる。
ここで、I
iは撮像装置1001に設置された照度計1018によって測定された光源1007の入射照度、R
1は撮像装置1001と光源1007との距離、R
2は光源1007と観察点Oとの距離、θ
1は観察点Oにおける法線1019と光源方向1010Cとのなす角度、θ
2は撮像装置1001における光軸方向1005と光源方向1010Aとのなす角度を示している(図46参照)。ここで、被写体の大きさが、光源1007と観察点Oとの距離R
2に比べ十分に大きいと考えられる場合、距離R
2は被写体上の全ての観察点Oで等しくなる。そのため、(式50)において、(R
1/R
2)は定数となり、実際に計測する必要はなくなる。
次に、シンプレックス法を利用して、未知パラメータm、η
λ、k
sを推定する(ステップS352)。シンプレックス法は、シンプレックスと呼ぶ図形の頂点に変数を割り付け、シンプレックスの大きさと形を変えて関数の最適化を行なう方法である(大田登,“色再現光学の基礎”,pp.90-92,コロナ社)。シンプレックスは、n次元空間の(n+1)個の点の集合である。ただし、nは推定する未知数の数であり、ここでは「3」である。そのため、シンプレックスは四面体である。シンプレックスの頂点をベクトルx
iで表し、新しいベクトルを次のように定める。
ただし、
はそれぞれ関数f(x
i)を最大、最小にするx
iを示している。
さらに、この方法で用いる3種類の操作を以下のように定める。
1.鏡像:
2.拡張:
3.収縮:
ここで、α(>0)、β(>1)、γ(1>γ>0)は係数である。
シンプレックス法は、シンプレックスの頂点の中で関数値の最も大きなものを選ぶことで、その鏡像における関数値は小さくなるという期待に基づいている。この期待が正しければ、同じプロセスの繰り返しで関数の最小値が求められる。つまり、初期値で与えたパラメータを3種類の操作で更新しながら、評価関数が示すターゲットとの誤差が閾値未満になるまでパラメータの更新を繰り返す。ここでは、パラメータとしてm、η
λ、k
s、評価関数として(式56)で表される、(式37)から算出される鏡面反射成分画像と拡散反射・鏡面反射分離部202で求められた鏡面反射成分画像との差ΔI
sを利用した。
ただし、i
s(i,j)’, i
s(i,j)はそれぞれ、計算された鏡面反射画像の推定値I
s’と拡散反射・鏡面反射分離部202で求められた鏡面反射成分画像I
sの画素(i,j)の輝度値、M
s(i,j)は、画素(i,j)が鏡面反射成分を持つ場合に1、そうでない場合0をとる関数である。
この処理について詳しく説明する。図47はこの処理の流れを説明するためのフローチャートである。
まず、繰り返し演算の更新回数を記憶するカウンターnとkに0を代入し、初期化する(ステップS361)。ここで、カウンターnは初期値を何回変更したかを記憶するカウンターであり、kはある初期値に対してシンプレックスによる候補パラメータの更新を何回行ったかを記憶するカウンターである。
次に、乱数を利用し、推定パラメータの候補パラメータm’、η
λ’、k
s’の初期値を決定する(ステップS362)。このとき、各パラメータの物理的な拘束条件から、初期値の発生範囲は以下のように決定した。
次に、こうして求めた候補パラメータを(式37)へ代入し、鏡面反射画像の推定値Is’を求める(ステップS363)。さらに、計算された鏡面反射画像の推定値Is’と拡散反射・鏡面反射分離部202で求められた鏡面反射成分画像との差ΔIsを(式56)より求め、これをシンプレックス法の評価関数とする(ステップS364)。こうして求めたΔIsが十分小さい場合(ステップS365でYes)、パラメータ推定は成功したとして、推定パラメータm、ηλ、ksとして候補パラメータm’、ηλ’、ks’を選択し、処理を終了する。一方、ΔIsが大きい場合(ステップS365でNo)、シンプレックス法により候補パラメータの更新を行う。
候補パラメータの更新を行う前に、更新回数の評価を行う。まず、更新回数を記憶しているカウンターkに1を足し(ステップS366)、カウンターkの大きさを判断する(ステップS367)。カウンターkが十分に大きい場合(ステップS367でNo)、繰り返し演算は十分に行なわれているが、ローカルミニマムに落ちているため、このまま更新を繰り返しても最適値には達しないと判断し、初期値を変更して、ローカルミニマムからの脱却を図る。そのため、カウンターnに1を足し、カウンターkに0を入れる(ステップS371)。ここで、カウンターnの値が閾値より高いかどうかを判定し、処理をこのまま続けるか、処理不能として処理を終了させるかを決定する(ステップS372)。ここで、nが閾値より大きい場合(ステップS372でNo)、この画像は推定不能として処理を終了する。一方、nが閾値より小さい場合(ステップS372でYes)、再度、初期値を(式57)の範囲内で乱数から選択しなおし(ステップS362)、処理を繰り返す。このようなkに対する閾値は、例えば、100などを選択すればよい。
一方、ステップS367において、カウンターkが閾値以下の場合(ステップS367でYes)、候補パラメータを(式53)〜(式55)を利用して変更する(ステップS368)。この処理については後述する。
次に、こうして変形された候補パラメータが、解として意味のあるものであるかを判定する(ステップS369)。すなわち、シンプレックス法を繰り返すことで、変形されたパラメータが物理的に意味のない値(例えば、粗さパラメータmが負の値など)におちいる可能性があるため、これを除去する。これは、例えば、以下のような条件を与え、この条件を満たす場合には意味のあるパラメータ、満たさない場合には意味のないパラメータと判定すればよい。
これらの値は、被写体より求めることができる。例えば、屈折率η
λであれば、被写体の材質によって決定される値である。例えば、プラスチックであれば1.5〜1.7、ガラスであれば1.5〜1.9であることが知られているため、これらの値を利用すればよい。つまり、被写体がプラスチックである場合、屈折率η
λは1.5〜1.7とすればよい。
変形したパラメータが(式58)を満たす場合(ステップS369でYes)、その候補パラメータは意味のある値であると考えられるため、新しい候補パラメータとして設定し(ステップS370)、更新処理を繰り返す(ステップS363)。一方、変形したパラメータが(式58)を満たさない場合(ステップS369でNo)、その初期値に対する更新処理を打ち切り、新しい初期値により更新を行う(ステップS371)。
ここで、ステップS368の変形処理について詳述する。図48はこの処理の流れを示したフローチャートである。ここでは、候補パラメータm’、η
λ’、k
s’をベクトル表現し、これをパラメータxとする。すなわち、
まず、(式51)(式52)(式53)を利用して、鏡像操作を行ったパラメータxrを計算し、(式56)によってxrでの鏡面反射成分画像との差ΔIs(xr)を計算する(ステップS381)。次に、こうして求められたΔIs(xr)と、2番目に評価関数が悪かったΔIs(xs)を比較する(ステップS382)。ここでΔIs(xr)がΔIs(xs)より小さかった場合(ステップS382でYes)、鏡像操作を行った評価値ΔIs(xr)と現在、最も評価値のよいΔIs(xl)を比較する(ステップS383)。ここで、ΔIs(xr)のほうが大きかった場合(ステップS383でNo)、最も評価値の低かったxhをxrへ変更し(ステップS384)、処理を終了する。
一方、ΔIs(xr)がΔIs(xl)より小さかった場合(ステップS383でYes)、(式54)を利用して拡張処理を行ない、パラメータxeと、xeでの鏡面反射成分画像との差ΔIs(xe)を計算する(ステップS385)。次に、こうして求められたΔIs(xe)と、鏡像操作によるΔIs(xr)を比較する(ステップS386)。ここでΔIs(xe)がΔIs(xr)より小さかった場合(ステップS386でYes)、最も評価値の悪かったxhをxeへ変更し(ステップS387)、処理を終了する。
一方、ΔIs(xe)がΔIs(xr)より大きかった場合(ステップS386でNo)、最も評価値の悪かったxhをxrへ変更し(ステップS387)、処理を終了する。
また、ステップS382において、ΔIs(xr)がΔIs(xs)より大きかった場合(ステップS382でNo)、鏡像操作を行った評価値ΔIs(xr)と現在、最も評価値の悪いΔIs(xh)を比較する(ステップS388)。ここでΔIs(xr)がΔIs(xh)より小さかった場合(ステップS388でYes)、最も評価値の悪かったxhをxrへ変更し(ステップS389)、(式55)を利用して、収縮操作を行ったパラメータxcと、xcでの鏡面反射成分画像との差ΔIs(xc)を計算する(ステップS390)。一方、ΔIs(xr)がΔIs(xh)より大きかった場合(ステップS388でNo)、xhを変更することなく、収縮操作を行ったパラメータxcと、xcでの鏡面反射成分画像との差ΔIs(xc)を計算する(ステップS390)。
次に、こうして求められたΔIs(xc)と、最も評価値の悪いΔIs(xh)を比較する(ステップS391)。ここでΔIs(xc)がΔIs(xh)より小さかった場合(ステップS391でYes)、最も評価値の悪かったxhをxcへ変更し(ステップS392)、処理を終了する。
一方、ΔI
s(x
c)がΔI
s(x
h)より大きかった場合(ステップS391でNo)、すべての候補パラメータx
i(i=1,2,3,4)を以下の式により変更し、処理を終了する。
以上の処理を繰り返すことにより、鏡面反射画像における未知パラメータであるm、ηλ、ksを推定する。
以上の処理により、すべての未知パラメータを推定することができる。
なお、パラメータ推定に用いるモデルは、Cook−Torranceモデルである必要はなく、例えば、Torrance−SparrowモデルやPhongモデル、簡易Torrance-Sparrowモデル(例えば、「K. Ikeuchi and K. Sato, “Determining reflectance properties of an object using range and brightness images”, IEEE Transactions on Pattern Analysis and Machine Intelligence, vol.13, no.11, pp.1139-1153, 1991」)であっても構わない。
また、パラメータ推定方法は、シンプレックス法である必要はなく、例えば、勾配法や最小自乗法などのような一般的なパラメータ推定手法を利用しても構わない。
また、以上の処理は、画素毎に行ってもかまわないし、領域分割を行い、領域ごとに等しいパラメータ組を推定するようにしてもかまわない。画素毎に処理を行う場合、光源や撮像装置、または被写体を動かすことにより、被写体の法線方向ベクトルnや光源方向ベクトルL、または視線ベクトルVといった既知パラメータが変動したサンプルを取得するようにすることが望ましい。また、処理を領域ごとに行う場合、領域ごとに求まったパラメータのばらつきが小さくなるように領域分割を変更することで、最適なパラメータ推定を行うようにすることが望ましい。
法線情報高密化部211は、形状情報取得部204で取得した表面の法線情報を高密度化する。これは、以下のように実現される。
まず、形状情報取得部204によって取得した表面の法線情報を、画像撮像部201によって取得された画像へ投影し、画像内の各画素に対応する法線方向を求める。このような処理は、従来のカメラキャリブレーション処理(例えば、「運天 弘樹, 池内 克史, “実物体の仮想化のための3次元幾何モデルのテクスチャリング手法”, CVIM-149-34, pp.301-316, 2005」)を行うことで実現できる。
この際、法線ベクトルnpは極座標で表現し、その値をθp、φpとする(図49参照)。以上の処理により、法線成分であるθ、φの画像を作製する。こうして求めたθ画像とφ画像を、上述のアルベド高解像度化部207と同様の手法によって高解像度化することによって、高密度の法線情報を推定する。この際、高密度度化処理を行う前に学習処理を行い、法線のθ、φ成分に対するクラスタCと学習された変換行列CMatを法線DB212に蓄積する。
また、以上の処理は、影除去部205において、影として除去されなかった領域のみに対して行うことが望ましい。これは、影の存在により、パラメータ推定処理に誤差が生じてしまうことを防止するためである。
また、パラメータ推定部210において、撮像装置近傍に設置された制御可能な光源を利用してもかまわない。この光源は、デジタルカメラのフラッシュであってもよい。この場合、フラッシュを照射して撮像したフラッシュ画像と、フラッシュを照射しないで撮像した非フラッシュ画像を時間的に連続的に撮像し、その差分画像を利用してパラメータ推定を行なえばよい。撮像装置と光源であるフラッシュの位置関係は既知であり、また、フラッシュの光源情報である3次元位置や色、強度も事前に測定しておくことが可能である。また、撮像装置とフラッシュは非常に近い場所に設置されているため、影が少ない画像を撮像することができる。そのため、画像内のほとんどの画素において、パラメータを推定することができる。
さらに、パラメータ高密度化部213は、パラメータ推定部210によって求めたパラメータを高密度化する。ここでは、単純な線形補間を行い、すべてのパラメータを高密度化する。もちろん、上述のアルベド高解像度化部207のような学習を利用した高密度化手法を利用してもかまわない。
また、パラメータごとに高密化方法を切り替えるようにしても構わない。例えば、推定パラメータである被写体の屈折率ηλは、高密度化しても値が変化しないと考えられる。そのため、被写体の屈折率ηλは単純補間により高密度化を行い、拡散反射成分の係数kd、鏡面反射成分の係数ks、さらには拡散反射成分の反射率(アルベド)ρdに関しては学習を利用した高密度化処理を行うようにしてもかまわない。
鏡面反射画像高解像度化部214は、法線情報高密度化部211によって推定された高密度法線情報と、パラメータ高解像度化部214によって高密度化されたパラメータを利用し、高解像度な鏡面反射画像を合成する。高解像度な鏡面反射画像は、(式37)〜(式45)に高密度化したパラメータを代入することによって、合成する。
ここで、実際の鏡面反射画像よりも輝度値が高くなるように、例えば入射照度Eiのみ推定された値に係数l(例えば、l=2)を乗算するようにしてもかまわない。これは、鏡面反射画像の輝度値を上げることによって、被写体の質感を上げるためである。同じように、被写体表面の粗さmを推定値よりも大きな値として、実際よりもてかりが強い鏡面反射画像を合成してもかまわない。
影生成部215は、拡散反射画像高解像度化部209と鏡面反射画像高解像度化部214によって生成された高解像度拡散反射画像と高解像度化鏡面反射画像に重畳する、影画像を合成する。これは、影除去部205において利用したレイトレーシングを利用すればよい。
ここで、画像高解像度化部217は、撮影対象となっている被写体の3次元形状に関する知識を有するものとする。影生成部215は、被写体の3次元形状データを取得し、撮影画像における被写体の見え(appearance)から、被写体の3次元姿勢及び3次元位置を推定する。被写体が人間の目の角膜である場合の、見えから3次元位置及び3次元姿勢を推定する例が、「K.Nishino and S.K.Nayar, "The World in an Eye", in Proc. of Computer Vision and Pattern Recognition CVPR '04, vol.I, pp444-451, Jul., 2004.」に開示されている。見えから3次元位置及び3次元姿勢を推定できる被写体は限られるが、そのような被写体であれば、上記文献の手法を適用することが可能である。
被写体の3次元姿勢及び3次元位置が推定されれば、被写体上の任意の位置において、被写体表面の法線情報が算出できる。以上の処理を、撮影画像において繰り返し、被写体表面の法線情報を算出する。さらに、法線情報高密度化部211で推定された高密度法線情報を利用して被写体の法線情報を高密度化することによって、被写体の3次元形状を高密化することが可能である。こうして求めた高密度3次元形状と、パラメータ高解像度化部213によって高密度化されたパラメータを利用してレイトレーシングを行うことにより、高解像度な影画像の推定を行なう。
レンダリング部216は、拡散反射画像高解像度化部209が合成した高解像度拡散反射画像、鏡面反射画像高解像度化部214が合成した高解像度鏡面反射画像、さらには、影生成部215が合成した影画像を合成し、高解像度の出力画像を合成する。
以上のように、上述した光源推定方法を利用して、高解像度なデジタルズーム処理を行う。すなわち、画像の高解像度化において、光源情報は、影除去部205、アルベド推定部206、拡散反射画像高解像度化部209、パラメータ推定部210、鏡面反射画像高解像度化部214、影生成部215に必要な情報であり、非常に重要である。このため、光源情報を正確に取得することができる本発明の光源推定方法は、画像の高解像度化において非常に重要な処理である。
また、上記説明では、鏡面反射画像のみパラメータ推定を利用して高解像度化を行ったが、拡散反射画像においてもパラメータ推定を行ない、高解像度化するようにしてもかまわない。
この処理を説明する。拡散反射画像の未知パラメータは、上述のとおり、以下の2つである。
○拡散反射成分の係数kd
○拡散反射成分の反射率(アルベド)ρd
そこで、これらのパラメータを推定する。図50は拡散反射画像のパラメータ推定処理の流れを示した図である。処理は、図45で示した鏡面反射画像のパラメータ推定部210の処理後、さらに以下の2段階の処理を行なう。
まず、(式49)と鏡面反射画像のパラメータ推定で求まったk
sを利用して、次式よりk
dを推定する(ステップS353)。
さらに、(式47)を利用して、拡散反射画像の反射率(アルベド)ρ
dを次式より推定する(ステップS354)。
以上の処理により、すべての未知パラメータを推定することができる。こうして求まったパラメータをパラメータ高密度化部213と同様の手法により高密化することによって、拡散反射画像を高解像度化すればよい。
なお、本発明の光源推定方法は、画像処理だけではなく、例えば画像の撮像に関しても有効である。例えば、偏光フィルタを利用する場合に、これを最適な角度で設置することができる。この処理を説明する。
水面やウインドガラスなどの鏡面反射光を除去するために、PLフィルタと呼ばれる偏光フィルタが利用されている。しかし、偏光フィルタによる効果は、偏光フィルタの偏光軸と入射面(被写体への入射光線と反射光線を含む平面)により大きく異なる。そのため、図28のように、回転機構により偏光フィルタ1016Aを回転させながら撮像する場合、その回転角により、撮像される画像が大きく異なる。例えば、最も効果が大きくなる場合は、偏光軸が入射面と平行になる場合である。本発明における光源推定方法を利用することによって、光源の位置が既知となるため、被写体の入射面を特定することができる。そのため、推定された入射面に対して偏光フィルタが平行になるように、回転機構を制御するようにすればよい。
以上のように、本発明の光源推定方法を利用することによって、高解像度なデジタルズーム処理などの画像処理や効果的な画像撮像を行うことができる。