以下、図を参照して本発明の実施の形態について説明する。
図3は、本発明を適用した学習装置1の一実施の形態の構成を示すブロック図である。
図3の予測係数演算装置としての学習装置1は、ぼけ付加部11、ノイズ付加部12、ノイズ付加部13、タップ構築部14、タップ構築部15、クラス分類部16、タップ構築部17、予測係数演算部18、および係数メモリ19により構成され、ぼけのある画像であるぼけ画像から、それと同一のサイズの、ぼけを修正した画像であるぼけ修正画像をクラス分類適応処理により予測する予測処理を行うときに用いられる予測係数を学習する。
ぼけ付加部11には、図示せぬ装置から、予測処理後のぼけ修正画像に相当する親画像の各画素の画素値である親画像データが入力される。ぼけ付加部11は、ユーザにより指定されたぼけパラメータPを取得し、ノイズ付加部12から供給されるノイズ付加後の奥行きデータzに基づいて、ぼけパラメータPに従った特性で、親画像データにぼけを付加する。
奥行きデータzは、画像に対応する実世界オブジェクトの3次元位置データであり、複数カメラにより撮像された複数の画像によるステレオ視やレーザ計測等により算出される。例えば、親画像データが図示せぬカメラにより取得されたときの、そのカメラから被写体までの画素毎の距離のデータである。各画素に対応する画素毎の距離のデータは、例えば、特開2005-70014号公報に開示された方法で得ることができる。
ぼけ付加部11は、ぼけ付加後の親画像データを、予測処理前のぼけ画像に相当する生徒画像の各画素の画素値である生徒画像データとして、ノイズ付加部13に供給する。
ノイズ付加部12には、図示せぬ装置から奥行きデータzが入力される。また、ノイズ付加部12は、ユーザにより指定された奥行きデータzに付加するノイズのパラメータであるノイズパラメータNzを取得し、ノイズパラメータNzに従った特性で、奥行きデータzにノイズを付加する。そして、ノイズ付加部12は、ノイズ付加後の奥行きデータzをぼけ付加部11とタップ構築部15に供給する。
ノイズ付加部13は、ユーザにより指定された、生徒画像データに付加するノイズのパラメータであるノイズパラメータNiを取得する。ノイズ付加部13は、ノイズパラメータNiに従った特性で、ぼけ付加部11から供給される生徒画像データにノイズを付加する。そして、ノイズ付加部13は、ノイズ付加後の生徒画像データをタップ構築部14とタップ構築部17に供給する。
なお、ノイズ付加部12とノイズ付加部13は、それらを設けることで、ぼけ画像のノイズの除去を考慮した予測係数を求めることができるが、その考慮をしない場合には省略することができる。
タップ構築部14は、親画像を構成する画素を、順次、注目画素とし、その注目画素をクラスに分類するために用いる、生徒画像を構成する画素値の幾つかを抽出することで、画像クラスタップを生徒画像データから構築する。タップ構築部14は、画像クラスタップをクラス分類部16に供給する。
タップ構築部15は、注目画素をクラスに分類するために用いる、幾つかの画素の奥行きデータzを抽出することで、奥行きクラスタップを奥行きデータzから構築する。タップ構築部15は、奥行きクラスタップをクラス分類部16に供給する。
クラス分類部16は、タップ構築部14から供給される画像クラスタップと、タップ構築部15から供給される奥行きクラスタップとに基づいて、注目画素をクラスに分類する。
クラス分類は、クラスタップを構成する複数のデータから算出される特徴量を分類コードとすることにより実現される。
ここで、クラスに分類する方法としては、例えば、ADRC(Adaptive Dynamic Range Coding)等を採用することができる。ADRC以外にも様々なデータ圧縮処理などを用いることができる。
ADRCを用いる方法では、画像クラスタップを構成する画素値と、奥行きクラスタップを構成する奥行きデータzそれぞれが、ADRC処理され、その結果得られる2つのADRCコードに従って、注目画素のクラスが決定される。
なお、KビットADRCにおいては、例えば、画像クラスタップを構成する画素値の最大値MAXと最小値MINが検出され、DR=MAX-MINを、画像クラスタップとしての複数の画素値の集合の局所的なダイナミックレンジとし、このダイナミックレンジDRに基づいて、画像クラスタップとしての複数の画素値それぞれがKビットに再量子化される。すなわち、画像クラスタップとしての各画素値から、最小値MINが減算され、その減算値がDR/2Kで除算(量子化)される。そして、以上のようにして得られる、画像クラスタップとしてのKビットの各画素値を、所定の順番で並べたビット列が、ADRCコードとされる。
従って、画像クラスタップが、例えば、1ビットADRC処理される場合には、その画像クラスタップとしての各画素値は、最小値MINが減算された後に、最大値MAXと最小値MINとの差の1/2で除算され(小数点以下切り捨て)、これにより、各画素値が1ビットとされる(2値化される)。そして、その1ビットの画素値を所定の順番で並べたビット列が、ADRCコードとされる。また、奥行きクラスタップについても同様に、奥行きクラスタップとしてのKビットの各画素の奥行きデータzを、所定の順番で並べたビット列が、ADRCコードとされる。
なお、画像クラスタップに基づいて分類する方法と、奥行きクラスタップに基づいて分類する方法は、異なっていてもよい。例えば、画像クラスタップに基づいて分類する方法としては、上述したADRCを採用し、奥行きクラスタップに基づいて分類する方法としては、ADRCではなく、奥行きクラスタップを構成する奥行きデータzを平滑化してクラスに分類する方法、奥行きクラスタップを構成する奥行きデータzに対応する画素におけるエッジによりクラスに分類する方法等を採用してもよい。
奥行きデータzを平滑化してクラスに分類する方法では、奥行きクラスタップを構成するすべての奥行きデータzを積算したものを、奥行きクラスタップを構成する奥行きデータzに対応する画素の数で除算し、所定の定数を乗算した値がクラスコードとされ、そのクラスコードに従って、クラスが決定される。
また、奥行きデータzに対応する画素におけるエッジによりクラスに分類する方法では、奥行きクラスタップを構成する奥行きデータzから隣接画素同士の奥行きデータzの差分が算出され、その差分に基づいてエッジの位置が認識される。そして、そのエッジの位置を示すテンプレートが、予め用意されたテンプレートから選択され、そのテンプレートの番号がクラスコードとされ、そのクラスコードに従って、クラスが決定される。
クラス分類部16は、注目画素が分類されたクラスを予測係数演算部18に供給する。
以上のように、クラス分類部16は、画像クラスタップだけでなく、奥行きクラスタップにも基づいて、注目画素のクラスを分類するので、ぼけている画像とぼけていない画像が同じクラスに分類されることを抑制することができる。
タップ構築部17は、注目画素の画素値を予測するために用いる、生徒画像を構成する画素値の幾つかを抽出することで、画像予測タップを生徒画像データから構築する。タップ構築部17は、画像予測タップを予測係数演算部18に供給する。
なお、画像予測タップ、画像クラスタップ、または奥行きクラスタップとしては、任意の画素値が選択可能であるが、注目画素および/または注目画素の周辺の所定の画素の画素値を選択することができる。
予測係数演算部18は、ユーザにより指定された、ノイズ付加部12に供給されるノイズパラメータNz、ノイズ付加部13に供給されるノイズパラメータNi、およびぼけ付加部11に供給されるぼけパラメータPを取得する。予測係数演算部18は、図示せぬ装置から供給される親画像データとタップ構築部17から供給される画像予測タップに基づいて、クラス分類部16から供給されるクラス、並びにノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータP毎に、予測係数を演算し、係数メモリ19に供給して、記憶させる。
ここで、予測係数演算部18による予測係数の演算について説明する。
例えば、いま、予測処理として、ぼけ画像から画像予測タップを抽出し、その画像予測タップと予測係数を用いて、ぼけ修正画像の画素値を、所定の予測演算によって求める(予測する)ことを考える。
所定の予測演算として、例えば、線形1次予測演算を採用することとすると、ぼけ修正画像の画素(以下、適宜、ぼけ修正画素という)の画素値yは、次の線形1次式によって求められることになる。
但し、式(1)において、xnは、ぼけ修正画素yについての画像予測タップを構成する、n番目のぼけ画像の画素(以下、適宜、ぼけ画素という)の画素値を表し、wnは、n番目のぼけ画素の画素値と乗算されるn番目の予測係数を表す。なお、式(1)では、画像予測タップが、複数であるN個のぼけ画素の画素値x1,x2,・・・,xNで構成されるものとしてある。この場合、予測係数は、1クラスにつき、N個存在する。
ぼけ修正画素の画素値yは、式(1)に示した線形1次式ではなく、2次以上の高次の式によって求めるようにすることも可能である。すなわち、推定式としては、線形関数、非線形関数に拘わらず、任意の関数を用いることができる。
いま、第kサンプルのぼけ修正画素の画素値の真値をykと表すとともに、式(1)によって得られるその真値ykの予測値をyk'と表すと、その予測誤差ekは、次式で表される。
いま、式(2)の予測値yk'は、式(1)に従って求められるため、式(2)のyk'を、式(1)に従って置き換えると、次式が得られる。
但し、式(3)において、xn,kは、第kサンプルのぼけ修正画素についての画像予測タップを構成するn番目のぼけ画素の画素値を表す。
式(3)(または式(2))の予測誤差ekを0とするタップ係数wnが、ぼけ修正画素の画素値を予測するのに最適なものとなるが、すべてのぼけ修正画素について、そのような予測係数wnを求めることは、一般には困難である。
そこで、予測係数wnが最適なものであることを表す規範として、例えば、最小自乗法を採用することとすると、最適な予測係数wnは、次式で表される自乗誤差の総和Eを最小にすることで求めることができる。
但し、式(4)において、Kは、ぼけ修正画素の画素値ykと、そのぼけ修正画素についての画像予測タップを構成するぼけ画素の画素値x1,k,x2,k,・・・,xN,kとのセットのサンプル数(学習用のサンプルの数)を表す。すなわち、親画像の画素の画素値と、生徒画像の画素の画素値とのセットのサンプル数を表す。
式(4)の自乗誤差の総和Eの最小値(極小値)は、式(5)に示すように、総和Eを予測係数wnで偏微分したものを0とするwnによって与えられる。
一方、上述の式(3)を予測係数wnで偏微分すると、次式が得られる。
式(5)と式(6)から、次式が得られる。
式(7)のekに、式(3)を代入することにより、式(7)は、式(8)に示す正規方程式で表すことができる。
式(8)の正規方程式は、例えば、掃き出し法(Gauss-Jordanの消去法)などを用いることにより、予測係数wnについて解くことができる。
予測係数演算部18は、式(8)の正規方程式を、クラス、ノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータP毎にたてて解くことにより、最適な予測係数(ここでは、自乗誤差の総和Eを最小にする予測係数)wnを、クラス、ノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータP毎に求めることができる。
また、予測処理によれば、以上のようにして求められるクラス、ノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータP毎の予測係数wnを用いて、式(1)の演算を行うことにより、ぼけ画像が、ぼけ修正画像に変換される。
係数メモリ19は、予測係数演算部18から供給される予測係数wnを記憶する。
以上のように、図3の学習装置1では、ぼけている画像とぼけていない画像が同じクラスに分類されることを抑制することができるので、図9を参照して後述する予測装置81において、分類されたクラス毎に学習された予測係数wnを用いて予測処理を行うことにより、ぼけ画像のぼけを正確に修正し、高品質なぼけ修正画像に変換することできる。
次に、図4乃至図6を参照して、図3のぼけ付加部11による、親画像データへのぼけの付加について説明する。
まず最初に、図4と図5を参照して、ぼけの付加の特性として、ぼけの拡がりの大きさσを求める式について説明する。
図4に示すように、物体51からの光がレンズ52を介してセンサ53に入射される場合、レンズの結合公式は、以下の式(9)で表される。
1/f=1/v+1/L
・・・(9)
なお、式(9)において、fは、レンズ52の焦点距離を表し、vはレンズ52とセンサ53の距離を表し、Lは、物体51とレンズ52の距離を表す。
また、オブジェクトを撮像する撮像系の構造や方式を考慮することにより定式化される、ぼけのないオブジェクト画像にぼけを付加するモデルである画像のぼけモデルとして、単位体積を持つ2次元のガウス関数を用いると、ぼけの拡がりの大きさσは以下の式(10)で表されることが知られている。
σ=rv(1/f-1/v-1/L)
・・・(10)
図5に示すように、ぼけが生じないとき、すなわち合焦するときの距離Lを奥行きデータz0とし、ぼけが生じるとき、すなわち合焦しないときの距離Lを奥行きデータz1とすると、ぼけが生じるときの大きさσ1と、ぼけが生じないときの大きさσ0の差分は、以下の式(11)で表される。
σ1-σ0=(fv/F)×(z1-z0)/(z1×z0)
・・・(11)
なお、式(11)において、Fは、Fナンバー、すなわちf/rを表す。
式(11)において、ぼけが生じないときの大きさσ0を0とすると、物体51が合焦位置から、距離d離れた位置に物体51がある場合の大きさσdは、以下の式(12)で表される。
σd=(fv/F)×(z1-z0)/(z1×z0)
・・・(12)
ここで、fv/Fをkとおくと、式(12)は以下の式(13)で表される。
σd=k×(z1-z0)/(z1×z0)
・・・(13)
さらに、d=z1-z0とおくと、式(13)は以下の式(14)で表される。
σd=(k/z0)×d/(d+z0)
・・・(14)
式(14)によれば、大きさσdは、距離dの関数となっており、その関数をf(d)とおくと、関数f(d)は、ぼけの付加の特性を表す関数であり、以下の式(15)で表される。
f(d)=(k/z0)×d/(d+z0)
・・・(15)
式(15)によれば、関数f(d)は、距離dが大きくなるにつれて定数k/z0に収束していく。
なお、ぼけの付加の特性を表す関数として、関数f(d)だけでなく、大きさσを直線で近似した関数g(d)や、大きさσを平方根で近似した関数h(d)を用いることもできる。関数g(d)と関数h(d)は以下の式(16)と式(17)で表される。
なお、式(16)におけるaと、式(17)におけるbは、予め設定された定数を表す。
図6は、関数f(d)、関数g(d)、および関数h(d)を示すグラフである。図6に示すように、関数f(d)は、距離dが大きくなるにつれて、ある値に収束していく。また、関数g(d)は、直線で表され、関数h(d)は、平方根を示す曲線で表される。
なお、図6では、関数f(d)において、kが1.0となっており、関数g(d)においてaが0.05となっている。また、関数h(d)において、bが0.05となっている。
ぼけ付加部11は、ユーザにより指定された、ぼけの付加の特性を表す関数を選択するためのパラメータであるぼけパラメータPに従って、関数f(d)、関数g(d)、および関数h(d)のうちのいずれか1つを選択し、その選択した関数が表す特性で、親画像データにぼけを付加し、生徒画像データを生成する。
具体的には、ぼけ付加部11は、以下の式(18)に従って、生徒画像データを画素毎に生成する。
なお、式(18)において、Y(x,y)は、生徒画像を構成する画素のうち、x座標がxで、y座標がyの位置の画素の画素値を表しており、X(x+k,y+l)は、親画像を構成する画素のうち、x座標がx+kで、y座標がy+lの位置(注目画素の位置(x,y)から座標(k,l)だけ離れた位置)の画素の画素値を表している。また、式(18)において、WT(k,l)は、ぼけの点広がり関数(ガウスPSF(Point Spread Function))であり、以下の式(19)で表される。
なお、式(19)において、S(x+k,y+l)は、距離dが、x座標がx+kで、y座標がy+lの位置の画素の奥行きデータzから、奥行きデータz0を減算した値である場合の、関数f(d)、関数g(d)、および関数h(d)のうちの選択された関数を表している。
式(18)と式(19)によれば、x座標がx+kで、y座標がy+lの位置にある画素から、x座標がxで、y座標がyの位置にある注目画素に拡散される画素値を積算することにより、ぼけ付加後の注目画素の画素値が求められる。
次に、図7Aと図7Bを参照して、図3のノイズ付加部13によるノイズの付加の方法について説明する。
ノイズを付加する方法としては、例えば、ノイズパラメータNiに従って振幅レベルを段階的に変化させたノイズを付加する第1の方法、ノイズパラメータNiに従った割合でノイズを付加したものと付加しないものを生成する第2の方法などがある。
まず最初に、図7Aを参照して第1の方法について説明する。
なお、図7Aでは、ノイズパラメータNiが0からjまでの値であるものとする。このことは、後述する図7Bにおいても同様である。なお、ここにおけるノイズパラメータNiは、ノイズの振幅レベルを指定するパラメータである。
図7Aに示すように、第1の方法では、ノイズパラメータNiの値が大きくなるにつれて、生徒画像に付加するノイズの振幅レベルが大きくなるように、段階的に変化された振幅レベルのノイズが付加される。すなわち、図7Aに示すように、第1の方法では、ノイズパラメータNiの値が0である場合、生徒画像にノイズが付加されず、ノイズパラメータNiの値が大きくなるにつれて生徒画像に付加されるノイズの振幅レベルが大きくなり、ノイズパラメータNiの値がjである場合、振幅レベルが最大のノイズが生徒画像に付加される。
この場合、例えば後述する式(23)に示されるように、係数Rと、疑似乱数を発生する関数mseq[m]との積で表されるRΣmseq[m]の式でノイズを規定するようにし、係数RをノイズパラメータNiの値に応じて制御することで、ノイズパラメータNiの値に応じてノイズの振幅レベルが大きくなるように制御することができる。
次に、図7Bを参照して第2の方法について説明する。
なお、図7Bの例では、1枚の生徒画像に対して100枚のノイズ付加後の生徒画像を生成するものとする。
図7Bに示すように、第2の方法では、ノイズパラメータNiに従った割合で、ノイズが付加されない生徒画像と、所定の振幅レベルのノイズが付加された生徒画像とが、ノイズ付加後の生徒画像として合計100枚生成される。すなわち、図7Bに示すように、ノイズパラメータNiの値が0である場合、ノイズが付加されない100枚の生徒画像が100枚のノイズ付加後の生徒画像として生成され、ノイズパラメータNiの値が1である場合、ノイズが付加されない99枚の生徒画像とノイズが付加された1枚の生徒画像とが100枚のノイズ付加後の生徒画像として生成される。なお、ここにおけるノイズパラメータNiは、ノイズの混入割合を指定するパラメータである。
以下も同様にして、ノイズパラメータNiの値が大きくなるにつれて、100枚のノイズ付加後の生徒画像を構成する、ノイズが付加されない生徒画像の枚数が減少して、ノイズが付加された生徒画像の枚数が増加し、ノイズパラメータNiの値がjである場合、ノイズが付加されない30枚の生徒画像と、ノイズが付加された70枚の生徒画像とが、100枚のノイズ付加後の生徒画像として生成される。
この場合、図3の予測係数演算部18は、1枚の親画像と、100枚の生徒画像を1サンプルとして用いて、式(8)に従って予測係数の演算を行う。すなわち、予測係数演算部18は、以下の式(20)の正規方程式を、クラス、ノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータP毎にたてて解くことにより、最適な予測係数wnを、クラス、ノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータP毎に求める。
なお、式(20)において、xn,qkは、第kサンプルのぼけ修正画像の画素についての画像予測タップを構成する、q枚目の生徒画像のn番目の画素の画素値を表す。また、Qは、1つのサンプルに対する生徒画像の枚数であり、図7Bの例では100である。
ノイズ付加部13は、上述した第1の方法または第2の方法で、生徒画像にノイズを付加する。なお、説明は省略するが、ノイズ付加部12におけるノイズの付加も同様に行われる。この場合、例えば、撮像装置に起因するランダムノイズ、外来光の影響、物体表面の反射率の相違、測定誤差等によるランダムノイズが、奥行きデータzに付加される。
なお、図7Aと図7Bで説明したノイズの付加の方法は一例であり、その他の方法であってもよい。例えば、ノイズ付加部12は、反射による錯乱の影響、測定精度による平滑化等によって生じる錯乱ノイズを、ぼけの付加の特性を表す関数と同様の関数を用いて、奥行きデータzに付加するようにしてもよい。
次に、図8を参照して、図3の学習装置1が予測係数wnを学習する学習処理について説明する。この学習処理は、例えば、図3の学習装置1に親画像データと奥行きデータzが入力されたとき、開始される。
ステップS1において、ノイズ付加部12は、ユーザにより指定されたノイズパラメータNzを取得する。ステップS2において、ノイズ付加部12は、図7で説明した第1の方法、第2の方法などにより、ノイズパラメータNzに従った特性で、奥行きデータzにノイズを付加する。
ステップS3において、ぼけ付加部11は、ユーザにより指定されたぼけパラメータPを取得する。ステップS4において、ぼけ付加部11は、ノイズ付加部12から供給されるノイズ付加後の奥行きデータzに基づいて、ぼけパラメータPに従った特性で、図示せぬ装置から入力される親画像データにぼけを付加する。
具体的には、ぼけ付加部11は、ぼけパラメータPに従って関数f(d)、関数g(d)、または関数h(d)を選択する。次に、ぼけ付加部11は、選択した関数をSに適用した式(18)と式(19)に従って、奥行きデータzに基づいて注目画素の画素値Y(x,y)、すなわち生徒画像を構成する画素の画素値を求める。そして、ぼけ付加部11は、生徒画像を構成する各画素の画素値を、生徒画像データとしてノイズ付加部13に供給する。
ステップS5において、ノイズ付加部13は、ユーザにより指定されたノイズパラメータNiを取得する。ステップS6において、ノイズ付加部13は、図7で説明した第1の方法、第2の方法などにより、ノイズパラメータNiに従った特性で、ぼけ付加部11から供給される生徒画像データにノイズを付加し、ノイズ付加後の生徒画像データをタップ構築部14とタップ構築部17に供給する。
ステップS7において、タップ構築部14は、生徒画像データから所定のものを抽出することで画像クラスタップを構築し、その画像クラスタップをクラス分類部16に供給する。ステップS8において、タップ構築部15は、奥行きデータzから所定のものを抽出することで奥行きクラスタップを構築し、その奥行きクラスタップをクラス分類部16に供給する。
ステップS9において、クラス分類部16は、タップ構築部14から供給される画像クラスタップと、タップ構築部15から供給される奥行きクラスタップとに基づいて、注目画素をクラスに分類する。ステップS10において、タップ構築部17は、生徒画像データから所定のものを抽出することで画像予測タップを構築し、その画像予測タップを予測係数演算部18に供給する。
ステップS11において、予測係数演算部18は、図示せぬ装置から供給される親画像データと、タップ構築部17から供給される画像予測タップとに基づいて、クラス分類部16から供給されるクラス、並びにノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータP毎に、上述した式(8)または式(20)に従って予測係数wnを演算し、係数メモリ19に供給する。
ステップS12において、係数メモリ19は、予測係数演算部18から供給される予測係数wnを記憶し、処理は終了する。
図9は、図3の学習装置1で学習された予測係数wnを用いて予測処理を行う予測係数演算装置としての予測装置81の構成を示すブロック図である。
図9の予測装置81は、タップ構築部91、タップ構築部92、クラス分類部93、係数メモリ94、タップ構築部95、および予測演算部96により構成される。
図9の予測装置81には、図示せぬ装置から、ぼけ画像を構成する各画素の画素値であるぼけ画像データと、それに対応する奥行きデータzが入力される。このぼけ画像データは、タップ構築部91とタップ構築部95に供給され、奥行きデータzは、タップ構築部92に供給される。
タップ構築部91は、図3のタップ構築部14と同様に、ぼけ修正画像を構成する画素を、順次、注目画素とし、その注目画素をクラスに分類するために用いる、ぼけ画像を構成する画素値の幾つかを抽出することで、画像クラスタップを、ぼけ画像データから構築する。タップ構築部91は、画像クラスタップをクラス分類部93に供給する。
タップ構築部92は、タップ構築部15と同様に、注目画素をクラスに分類するために用いる、幾つかの奥行きデータzを抽出することで、奥行きクラスタップを、奥行きデータzから構築する。タップ構築部92は、奥行きクラスタップをクラス分類部93に供給する。
クラス分類部93は、クラス分類部16と同様に、タップ構築部91から供給される画像クラスタップと、タップ構築部92から供給される奥行きクラスタップとに基づいて、注目画素をクラスに分類し、そのクラスを係数メモリ94に供給する。
係数メモリ94には、図3の係数メモリ19に記憶された、クラス、ノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータP毎の予測係数wnが記憶されている。係数メモリ94は、ユーザにより指定されたノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータPを取得する。
係数メモリ94は、クラス分類部93から供給されるクラス、並びに、ユーザにより指定されたノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータPに基づいて、そのクラス、ノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータPに対応する予測係数wnを、既に記憶している予測係数wnの中から読み出し、その予測係数wnを予測演算部96に提供する。
タップ構築部95は、タップ構築部17と同様に、注目画素の画素値を予測するために用いる、ぼけ画像を構成する画素値の幾つかを抽出することで、画像予測タップをぼけ画像データから構築する。タップ構築部95は、画像予測タップを予測演算部96に供給する。
予測演算部96は、タップ構築部95から供給される画像予測タップと、係数メモリ94から提供される予測係数wnとを用いて、注目画素の画素値の予測値を求める予測演算を行う。具体的には、予測演算部96は、上述した式(1)の線形一次式の演算である予測演算を行う。これにより、予測演算部96は、注目画素の画素値の予測値、すなわち、ぼけ修正画像を構成する画素の画素値を求める。そして、予測演算部96は、ぼけ修正画像を構成する各画素の画素値を、ぼけ修正画像データとして出力する。
次に、図10を参照して、図9の予測装置81がぼけ修正画像データを予測する予測処理について説明する。この予測処理は、例えば、予測装置81にぼけ画像データと奥行きデータzが入力されたとき、開始される。
ステップS31において、タップ構築部91は、ぼけ画像データから画像クラスタップを構築し、その画像クラスタップをクラス分類部93に供給する。ステップS32において、タップ構築部92は、奥行きデータzから奥行きクラスタップを構築し、その奥行きクラスタップをクラス分類部93に供給する。
ステップS33において、クラス分類部93は、タップ構築部91から供給される画像クラスタップと、タップ構築部92から供給される奥行きクラスタップとに基づいて、注目画素をクラスに分類し、そのクラスを係数メモリ94に供給する。ステップS34において、係数メモリ94は、ユーザにより指定されたノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータPを取得する。
ステップS35において、係数メモリ94は、クラス分類部93から供給されるクラス、並びに、ユーザにより指定されたノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータPに基づいて、そのクラス、ノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータPに対応する予測係数wnを、既に記憶している予測係数wnの中から読み出し、その予測係数wnを予測演算部96に提供する。
ステップS36において、タップ構築部95は、ぼけ画像データから画像予測タップを構築し、その画像予測タップを予測演算部96に供給する。
ステップS37において、予測演算部96は、タップ構築部95から供給される画像予測タップと、係数メモリ94から供給される予測係数wnとを用いて、上述した式(1)の線形一次式の演算である予測演算を行い、ぼけ修正画像を構成する各画素の画素値を求め、ぼけ修正画像データとして出力する。そして、処理は終了する。
図11は、学習装置1の他の実施の形態の構成を示すブロック図である。
図11の学習装置1は、ぼけ付加部11、ノイズ付加部12、ノイズ付加部13、タップ構築部14、タップ構築部15、クラス分類部16、タップ構築部17、係数メモリ19、ダウンスケーリング部101、および予測係数演算部102により構成され、図示せぬ装置から入力される奥行きデータzに対応する親画像のサイズが、それとともに入力される親画像データに対応する親画像のサイズに比べて大きい場合においても、入力される親画像データに対応する親画像と同一のサイズのぼけ画像と、対応する奥行きデータzとを用いて、ぼけ画像から、それと同一のサイズのぼけ修正画像を予測する予測処理を行うときに用いられる予測係数wnを学習する。
なお、図11において、図3の学習装置1と同一のものには同一の符号を付してある。
すなわち、図11の学習装置1は、図3の学習装置1にダウンスケーリング部101がさらに設けられ、予測係数演算部18の代わりに予測係数演算部102が設けられたものである。
ダウンスケーリング部101には、図示せぬ装置から奥行きデータzが入力される。ダウンスケーリング部101は、ユーザにより指定された、ダウンスケーリング後の奥行きデータzに対応する親画像の水平方向のサイズを表す水平スケーリングパラメータHと、垂直方向のサイズを表す垂直スケーリングパラメータVとから構成されるスケーリングパラメータ(H,V)を取得する。
ダウンスケーリング部101は、スケーリングパラメータ(H,V)に基づいて、例えば、奥行きデータzに対応する親画像のサイズが、ぼけ付加部11に入力される親画像データに対応する親画像のサイズと同一となるように、奥行きデータzをダウンスケーリングし、ダウンスケーリングした奥行きデータzをノイズ付加部12に供給する。
予測係数演算部102は、ユーザにより指定されたノイズパラメータNz、ノイズパラメータNi、ぼけパラメータP、およびスケーリングパラメータ(H,V)を取得する。予測係数演算部102は、図示せぬ装置から供給される親画像データと、タップ構築部17から供給される画像予測タップとに基づいて、画像クラスタップと、ダウンスケーリング後の奥行きデータzから構築された奥行きクラスタップとに基づいて分類されたクラス、並びにノイズパラメータNz、ノイズパラメータNi、ぼけパラメータP、およびスケーリングパラメータ(H,V)毎に、予測係数wnを演算し、係数メモリ19に供給する。
以上のように、図11の学習装置1は、入力される奥行きデータzをダウンスケーリングするので、ダウンスケーリング部101に入力される奥行きデータzに対応する親画像のサイズが、それとともにぼけ付加部11に入力される親画像データに対応する親画像のサイズに比べて大きい場合においても、ダウンスケーリング後の奥行きデータzを用いて、ぼけ付加部11に入力される親画像データに対応する親画像と同一のサイズのぼけ画像と、対応する奥行きデータzとを用いた予測処理を行うときに用いられる予測係数wnを学習することができる。
即ち、例えば、図11の学習装置1は、標準より大きいサイズの撮像画像を縮小した画像を親画像として用いて、標準のサイズのぼけ画像からぼけ修正画像を予測する予測処理に用いられる予測係数wnを学習することができる。
次に、図12を参照して、図11の学習装置1が予測係数wnを学習する学習処理について説明する。この学習処理は、例えば、図11の学習装置に親画像データと奥行きデータzが入力されたとき、開始される。
ステップS61において、ダウンスケーリング部101は、スケーリングパラメータ(H,V)を取得する。ステップS62において、ダウンスケーリング部101は、ぼけ付加部11に入力される親画像データに対応する親画像のサイズと一致するように、スケーリングパラメータ(H,V)に基づいて、奥行きデータzをダウンスケーリングし、ダウンスケーリングした奥行きデータzをノイズ付加部12に供給する。
ステップS63乃至ステップS72の処理は、図8のステップS1乃至ステップS10の処理と同様であるので、その説明は省略する。
ステップS73において、予測係数演算部102は、図示せぬ装置から供給される親画像データ、タップ構築部17から供給される画像予測タップに基づいて、クラス分類部16から供給されるクラス、並びにノイズパラメータNz、ノイズパラメータNi、ぼけパラメータP、およびスケーリングパラメータ(H,V)毎に、予測係数wnを演算し、係数メモリ19に供給する。
ステップS74において、係数メモリ19は、ステップS12と同様に、予測係数演算部102から供給される予測係数wnを記憶し、処理は終了する。
図13は、図11の学習装置1で学習された予測係数wnを用いて予測処理を行う予測装置81の構成を示すブロック図である。
図13の予測装置81は、タップ構築部91、タップ構築部92、クラス分類部93、タップ構築部95、予測演算部96、および係数メモリ111により構成される。
なお、図13において、図9の予測装置81と同一のものには、同一の符号を付してある。すなわち、図13の予測装置81には、図9の予測装置81の係数メモリ94の代わりに、係数メモリ111が設けられている。
係数メモリ111には、図11の係数メモリ19に記憶された、クラス、ノイズパラメータNz、ノイズパラメータNi、ぼけパラメータP、およびスケーリングパラメータ(H,V)毎の予測係数wnが記憶されている。係数メモリ111は、ユーザにより指定されたノイズパラメータNz、ノイズパラメータNi、ぼけパラメータP、およびスケーリングパラメータ(H,V)を取得する。
係数メモリ111は、クラス分類部93から供給されるクラス、並びに、ユーザにより指定されたノイズパラメータNz、ノイズパラメータNi、ぼけパラメータP、およびスケーリングパラメータ(H,V)に基づいて、そのクラス、ノイズパラメータNz、ノイズパラメータNi、ぼけパラメータP、およびスケーリングパラメータ(H,V)に対応する予測係数wnを、既に記憶している予測係数wnの中から読み出し、その予測係数wnを予測演算部96に提供する。
なお、図13の予測装置81は、図10の予測処理と同様の予測処理を行うので、その説明は省略する。但し、この場合、図10のステップS35では、係数メモリ111は、クラス分類部93から供給されるクラス、並びに、ユーザにより指定されたノイズパラメータNz、ノイズパラメータNi、ぼけパラメータP、およびスケーリングパラメータ(H,V)に基づいて、そのクラス、ノイズパラメータNz、ノイズパラメータNi、ぼけパラメータP、およびスケーリングパラメータ(H,V)に対応する予測係数wnを、既に記憶している予測係数wnの中から読み出し、その予測係数wnを予測演算部96に提供する。
図14は、学習装置1のさらに他の実施の形態の構成を示すブロック図である。
図14の学習装置1は、ぼけ付加部11、ノイズ付加部12、ノイズ付加部13、タップ構築部14、タップ構築部15、クラス分類部16、タップ構築部17、係数メモリ19、ダウンスケーリング部101、予測係数演算部102、およびダウンスケーリング部121により構成され、ぼけ画像から、ぼけ画像に比べて高解像度のぼけ修正画像をクラス分類適応処理により予測する予測処理を行うときに用いられる予測係数wnを学習する。
なお、図14において、図11の学習装置1と同一のものには同一の符号を付してある。すなわち、図14の学習装置1は、図11の学習装置1にダウンスケーリング部121がさらに設けられたものである。
ダウンスケーリング部121は、ユーザにより指定されたスケーリングパラメータ(H,V)に基づいて、例えば、生徒画像のサイズが、予測処理対象のぼけ画像のサイズと同一となるように、ぼけ付加部11から供給される生徒画像データをダウンスケーリングし、ダウンスケーリングした生徒画像データをノイズ付加部13に供給する。
図14のダウンスケーリング部101では、ダウンスケーリング部101は、スケーリングパラメータ(H,V)に基づいて、例えば、奥行きデータzに対応する、ぼけ画像に比べて高解像度のぼけ修正画像に相当する親画像のサイズが、ぼけ画像のサイズと同一となるように、奥行きデータzをダウンスケーリングする。
また、予測係数演算部102は、図示せぬ装置から供給される親画像データと、タップ構築部17から供給されるダウンスケーリング後の生徒画像データから構築された画像予測タップとに基づいて、ダウンスケーリング後の生徒画像データから構築されたクラスタップと、ダウンスケーリング後の奥行きデータzから構築された奥行きクラスタップとに基づいて分類されたクラス、並びにノイズパラメータNz、ノイズパラメータNi、ぼけパラメータP、およびスケーリングパラメータ(H,V)毎に、予測係数wnを演算し、係数メモリ19に供給する。
以上のように、図14の学習装置1は、生徒画像データと奥行きデータzに対してダウンスケーリングを行うので、生徒画像と、奥行きデータzに対応する親画像の解像度を、図14の学習装置1に入力される親画像データに対応する親画像に対して低解像度に変換することができる。その結果、図14の学習装置1は、変換後の生徒画像と奥行きデータz、並びに親画像データを用いることにより、ぼけ画像から、ぼけ画像に比べて高解像度のぼけ修正画像を予測する予測処理に用いられる予測係数wnを学習することができる。
即ち、例えば、図14の学習装置1は、SD(Standard Definition)画像であるぼけ画像から、HD(High Definition)画像であるぼけ修正画像を予測する予測処理に用いられる予測係数wnを学習することができる。
次に、図15を参照して、図14の学習装置1が予測係数wnを学習する学習処理について説明する。この学習処理は、例えば、図14の学習装置1に親画像データと奥行きデータzが入力されたとき、開始される。
ステップS101乃至ステップS106の処理は、図12のステップS61乃至ステップS66の処理と同様であるので、その説明は省略する。
ステップS107において、ダウンスケーリング部121は、スケーリングパラメータ(H,V)を取得する。ステップS108において、ダウンスケーリング部121は、スケーリングパラメータ(H,V)に基づいて、ぼけ付加部11から供給される生徒画像データをダウンスケーリングし、ダウンスケーリングされた生徒画像データをノイズ付加部13に供給する。
ステップS109乃至ステップS116の処理は、ステップS67乃至ステップS74の処理と同様であるので、その説明は省略する。
なお、図14の学習装置1で学習された予測係数wnを用いて予測処理を行う予測装置81は、図13の予測装置81と同一であるので、その説明は省略する。
また、予測係数wnの演算には、画素だけでなく、画素以外のデータも用いることができる。予測係数wnの演算に、ぼけ画素だけでなく、奥行きデータzも用いる場合の学習装置1の構成を、図16に示す。
図16の学習装置1は、ぼけ付加部11、ノイズ付加部12、ノイズ付加部13、タップ構築部14、タップ構築部15、クラス分類部16、タップ構築部17、係数メモリ19、タップ構築部131、および予測係数演算部132により構成され、親画像データと生徒画像データのほかに、奥行きデータzも用いて、ぼけ画像と、対応する奥行きデータzとから、同一のサイズのぼけ修正画像をクラス分類適応処理により予測する予測処理を行うときに用いられる予測係数wnを学習する。
なお、図16において、図3の学習装置1と同一のものには同一の符号を付してある。
すなわち、図16の学習装置1は、図3の学習装置1に、さらに、タップ構築部131が設けられ、予測係数演算部18の代わりに、予測係数演算部132が設けられたものである。
タップ構築部131には、ノイズ付加部12からノイズ付加後の奥行きデータzが供給される。タップ構築部131は、その奥行きデータzから、注目画素の画素値を予測するために用いる奥行きデータzの幾つかを抽出することで、奥行き予測タップを構築する。
タップ構築部131は、奥行き予測タップを予測係数演算部132に供給する。
予測係数演算部132は、予測係数演算部18と同様に、ユーザにより指定されたノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータPを取得する。また、予測係数演算部132は、図示せぬ装置から供給される親画像データ、タップ構築部17から供給される画像予測タップ、および、タップ構築部131から供給される奥行き予測タップに基づいて、クラス分類部16から供給されるクラス、並びにノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータP毎に、予測係数wnを演算する。
具体的には、予測係数演算部132は、クラス、ノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータP毎にたてられる上述した式(8)の正規方程式のxn,kとして、第kサンプルのぼけ画素だけでなく、奥行き予測タップを構成する奥行きデータzも用いることにより、クラス、ノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータP毎に、画像予測タップと奥行き予測タップに対応する画素の数分の予測係数wnを演算する。予測係数演算部132は、演算の結果得られる、クラス、ノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータP毎の予測係数wnを、係数メモリ19に供給して記憶させる。
以上のように、図16の学習装置1は、奥行きデータzから構築された奥行き予測タップも用いて、奥行きデータzを考慮した、画像予測タップと奥行き予測タップに対応する画素の数分の予測係数wnを演算するので、この予測係数wnを用いることにより、後述する図18の予測装置81は、より正確にぼけ修正画像を予測することができる。
次に、図17を参照して、図16の学習装置1が予測係数wnを学習する学習処理について説明する。この学習処理は、例えば、図16の学習装置1に親画像データと奥行きデータzが入力されたとき、開始される。
ステップS121乃至ステップS130の処理は、図8のステップS1乃至ステップS10の処理と同様であるので、その説明は省略する。
ステップS131において、タップ構築部131は、ノイズ付加部12から供給されるノイズ付加後の奥行きデータzから所定のものを抽出することで奥行き予測タップを構築し、その奥行き予測タップを予測係数演算部132に供給する。
ステップS132において、予測係数演算部132は、図示せぬ装置から供給される親画像データ、タップ構築部17から供給される画像予測タップ、および、タップ構築部131から供給される奥行き予測タップに基づいて、クラス分類部16から供給されるクラス、並びにノイズパラメータNz、ノイズパラメータNi、およびぼけパラメータP毎に、予測係数wnを演算し、係数メモリ19に供給する。
ステップS133において、係数メモリ19は、図8のステップS12と同様に、予測係数演算部132から供給される予測係数wnを記憶し、処理は終了する。
図18は、図16の学習装置1で学習された予測係数wnを用いて予測処理を行う予測装置81の構成を示すブロック図である。
図18の予測装置81は、タップ構築部91、タップ構築部92、クラス分類部93、係数メモリ94、タップ構築部95、タップ構築部141、および予測演算部142により構成される。
なお、図18において、図9の予測装置81と同一のものには、同一の符号を付してある。すなわち、図18の予測装置81には、タップ構築部141が新たに設けられ、図9の予測装置81の予測演算部96の代わりに、予測演算部142が設けられている。
タップ構築部141は、図16のタップ構築部131と同様に、注目画素の画素値を予測するために用いる、奥行きデータzの幾つかを抽出することで、奥行き予測タップを奥行きデータzから構築する。タップ構築部141は、奥行き予測タップを予測演算部142に供給する。
予測演算部142は、タップ構築部95から供給される画像予測タップ、タップ構築部141から供給される奥行き予測タップ、および係数メモリ94から提供される予測係数wnを用いて、注目画素の画素値の予測値を求める予測演算を行う。
具体的には、予測演算部142は、上述した式(1)の線形一次式のxnとして、画像予測タップを構成するぼけ画素だけでなく、奥行き予測タップを構成する奥行きデータzも適用し、wnとして、図16の学習装置1により学習された画像予測タップと奥行き予測タップに対応する画素の数分の予測係数を適用することにより、ぼけ修正画像を構成する画素の画素値を求める。
予測演算部142は、ぼけ修正画像を構成する各画素の画素値を、ぼけ修正画像データとして出力する。
次に、図19を参照して、図18の予測装置81がぼけ修正画像データを予測する予測処理について説明する。この予測処理は、例えば、予測装置81にぼけ画像データと奥行きデータzが入力されたとき、開始される。
ステップS141乃至ステップS146の処理は、図10のステップS31乃至ステップS36の処理と同様であるので、その説明は省略する。
ステップS147において、タップ構築部141は、奥行きデータzから奥行き予測タップを構築し、その奥行き予測タップを予測演算部142に供給する。ステップS148において、予測演算部142は、タップ構築部95から供給される画像予測タップ、タップ構築部141から供給される奥行き予測タップ、および係数メモリ94から提供される予測係数wnを用いて、注目画素の画素値の予測値を求める予測演算を行い、ぼけ修正画像を構成する各画素の画素値を求め、ぼけ修正画像データとして出力する。そして、処理は終了する。
以上に説明したノイズは、パラメータに付加される揺らぎを含めて考えることができる。ここで揺らぎとは、エネルギー、密度、電圧などの、広がりまたは強度を持つ量の空間的または時間的な平均値からの変動を含む。揺らぎを与える関数は任意であるが、パワーが周波数fに反比例する1/f揺らぎとすることで、より自然に変化するエフェクトを付加した画像を生成することができる。
1/f揺らぎは、ノイズSWNをフーリエ変換し、周波数領域でパワースペクトラムを1/fに加工し、逆フーリエ変換することで生成することができる。パラメータに付加するノイズ振幅の時間方向の変動に関するパワースペクトラムを1/fにし、各画素のパラメータごとに個別の1/f揺らぎを付加する。フレームに関しても、時間方向の変動に関するパワースペクトラムを1/fにする。
次に、このような意味での揺らぎとしてのノイズを付加した画像を生成する処理について説明する。本発明の実施の形態においては、予め設定されたぼけモデルのぼけデータにノイズを与えることで、ノイズを付加した画像が生成される。
図20はノイズを付加した画像の画像データを生成する画像生成装置の一実施の形態の構成を示すブロック図である。この画像生成装置301の基本的な構成は図3の学習装置1と同様であり、ぼけ付加部311、ノイズ付加部312、ノイズ付加部313、タップ構築部314、タップ構築部315、クラス分類部316、タップ構築部317、予測係数演算部318、および係数メモリ319は、図3のぼけ付加部11、ノイズ付加部12、ノイズ付加部13、タップ構築部14、タップ構築部15、クラス分類部16、タップ構築部17、予測係数演算部18、および係数メモリ19と同様の機能を有している。従って、その説明は省略する。
ただし、この実施の形態においては、ノイズ付加部312に奥行きデータzだけでなく、動き情報と親画像データが供給されている他、ノイズパラメータNzに代えて、ノイズパラメータNが供給されている。また予測係数演算部318にはノイズパラメータNiとぼけパラメータPの他、ノイズパラメータNと動き情報が供給されている。
この画像生成装置301は、ノイズを付加した画像の画像データを生成する機能を有する他、ノイズが付加された画像からノイズを修正する処理を行う場合の予測係数を学習する機能を有する。すなわち画像生成装置301は、画像データ生成装置としての機能と、予測係数演算装置としての機能を有する。このため、ノイズ付加部313で生成された画像データは、ノイズが付加された画像の画像データとして他の装置に出力される他、生徒画像データとしてタップ構築部314とタップ構築部317に供給される。
ノイズを付加した画像は、画像の合焦状態または動きにノイズ成分を付加することで、ぼけ画像として生成される。
なお、ノイズを付加した画像の画像データを生成する画像生成装置は、図14に示した学習装置に対応した構成も考えられる。この場合の実施の形態が図21に示されている。この画像生成装置400の基本的な構成は図14の学習装置1と同様である。すなわち、図21のぼけ付加部311、ノイズ付加部312、ノイズ付加部313、タップ構築部314、タップ構築部315、クラス分類部316、タップ構築部317、予測係数演算部402、係数メモリ319、ダウンスケーリング部401、予測係数演算部402、およびダウンスケーリング部421は、図14のぼけ付加部11、ノイズ付加部12、ノイズ付加部13、タップ構築部14、タップ構築部15、クラス分類部16、タップ構築部17、係数メモリ19、ダウンスケーリング部101、予測係数演算部102、およびダウンスケーリング部121と同様の機能を有している。従って、その説明は省略する。
ただし、ダウンスケーリング部401には奥行きデータzとスケーリングパラメータ(H,V)の他、動き情報と親画像データが供給されている。ノイズ付加部312にはノイズパラメータNzに代えて、ノイズパラメータNが供給されている。また予測係数演算部402にはノイズパラメータNi、ぼけパラメータP、スケーリングパラメータ(H,V)に加えて、動き情報が供給されているとともに、ノイズパラメータNzに代えてノイズパラメータNが供給されている。
合焦状態のノイズ(ピントぼけノイズ)の付加は、距離情報、ぼけのガウス関数の偏差σ、ぼけのガウス関数の位相、もしくはぼけのガウス関数の先鋭度にノイズを付加するか、またはそれらのうちの所定のものの複合により行われる。
距離情報に基づいて合焦状態にノイズを与える場合、ぼけデータとしての奥行きデータzにノイズが付加される。すなわち、ノイズ付加後の奥行きデータをZswnとし、付加するノイズをSWNdとした場合、次式に示すように、ノイズ付加前の奥行きデータzに対してノイズSWNdを加算することでノイズ付加後の奥行きデータZswnが演算される。
Zswn=z+SWNd (21)
ノイズSWNdは、次式に示されるように、フレーム単位で変化される成分SWNd(frame)と、画素単位で変化される成分SWNd(pixel)の和で表される。
SWNd =SWNd(frame)+SWNd(pixel) (22)
そして、ノイズSWNdは、例えば次式で表すことができる。この関数mseqは、疑似乱数を発生する。
RΣmseq[m] (23)
m=0,1,2,・・・n
それぞれのフレーム単位で変化する成分をRΣmseq[m](frame)、画素単位で変化する成分をRΣmseq[m](pixel)とすると、ノイズSWNdは次式で表される。なお、次式の右辺の添字のdは、係数Rや関数mseqが、距離に関するものであることを表わす。
SWNd=RdΣmseqd[m](frame)+RdΣmseqd[m](pixel) (24)
そしてノイズSWNdを決定するパラメータとしての係数RdがノイズパラメータNに対応して設定される。
ノイズ付加部312は、以上の処理を実行するために図22に示されるように、設定部331、取得部332、決定部333、および演算部334の機能的構成を有している。
設定部331はユーザの指示に基づいて処理領域を設定する。取得部332はノイズパラメータNと動き情報を取得する。決定部333はノイズの式の係数を決定する。演算部334はノイズを含む各種の演算を行う。
また、ぼけ付加部311は、図23に示されるように、取得部351、選択部352、および演算部353の機能的構成を有している。
取得部351はぼけパラメータPを取得する。選択部352は重みwiを選択する。演算部353は各種の演算を行う。
距離情報に基づいてピントぼけノイズの画像を生成する処理について、図24のフローチャートを参照して説明する。
ステップS201において、設定部331はユーザの指示に基づいて、処理領域を設定する。この場合、ユーザは、画像の一部、若しくは全部を処理領域として設定することができる。常に画像の全体を処理する場合には、この処理を省略することもできる。ステップS202において、取得部332はユーザにより指定されたノイズパラメータNを取得する。ステップS203において、決定部333は、ノイズパラメータNに対応して、式(24)のノイズSWNdの係数Rdを決定する。
ステップS204において、演算部334はノイズSWNdを演算する。すなわち、式(24)に従って、ノイズSWNdが演算される。
ステップS205において、演算部334は設定された処理領域に関し、ノイズSWNdを付加した奥行きデータを演算する。具体的には、式(21)に従って、取得された奥行きデータzに対して、ステップS204で演算されたノイズSWNdが加算されて、ノイズSWNd付加後の奥行きデータZswnが演算される。このノイズSWNdが付加された奥行きデータZswnはぼけモデルにノイズを与えるパラメータとしてボケ付加部311に出力される。
ステップS206において、ボケ付加部311の演算部353はノイズを付加した画素データを演算する。すなわち、ぼけ付加部311では上述したように、ぼけモデルとしての式(19)のぼけの点広がり関数WT(k,l)が、ノイズが付加された奥行きデータZswnに基づいて演算され、式(18)に基づいて親画像データにぼけが付加され、合焦状態が揺らいだ静止画が生成される。このノイズはフレーム毎に異なり、また画素毎に異なっている。
従って、1枚の静止画に対して、フレーム単位かつ画素単位のノイズ成分を変化させて複数枚のフレームの画像を生成すると、1枚の画像が揺れて見える一種の動画を生成することができる。これにより、例えば、人が空気中の物を遠くから見たような場合に観察されるような、比較的詳細な元の状態をそのまま確認することができる画像であって、周囲の空気の温度、湿度の変化などに起因して自然に揺らぐエフェクトを有する画像を生成することができる。
すなわち、以上の処理を行うことで、例えば図25に示されるように、1枚の静止画を、それぞれ異なるノイズSWNdi(i=1,2,3)を付加した奥行きデータZswn1、Zswn2、Zswn3に基づいて処理することで、元の静止画と若干異なるフレーム1乃至フレーム3の画像を生成することができる。
ぼけ関数としてのガウス関数の偏差σに基づいて合焦状態のノイズを与えることもできる。この場合、ぼけモデルとしての式(19)のうちのぼけデータとしての偏差σに対応する関数S(x+k,y+l)の、x方向の成分Sx(x+k,y+l)とy方向の成分Sy(x+k,y+l)を独立とすることで、式(19)は次式のように書き換えられる。
このぼけデータとしての関数Sx(x+k,y+l)、Sy(x+k,y+l)に独立にノイズが与えられる。すなわち、ノイズSWNsのx成分とy成分をそれぞれSWNsx、SWNsyとして、ノイズ付加後の関数Sxswn(x+k,y+l)、Syswn(x+k,y+l)は、次式で演算される。
Sxswn(x+k,y+l)=Sx(x+k,y+l)+SWNsx
Syswn(x+k,y+l)=Sy(x+k,y+l)+SWNsy (26)
関数Sx(x+k,y+l)、Sy(x+k,y+l)が独立しているということは、図26に示されるように両関数を図示した場合、関数の一方を他方の関数の軸に沿うように回転した場合、両関数の形状が一致しないことを意味する。
この場合においても、フレーム単位で変化されるx成分とy成分をSWNsx (frame)、SWNsy (frame)、画素単位で変化されるx成分とy成分をSWNsx (pixel)、SWNsy (pixel)とすると、ノイズSWNsのx成分SWNsxとy成分SWNsyは次式で表される。
SWNsx=SWNsx (frame)+SWNsx (pixel)
SWNsy=SWNsy (frame)+SWNsy (pixel)
(27)
そして、式(25)の関数Sx(x+k,y+l)、Sy(x+k,y+l)を、それにノイズSWNsのx成分SWNsxとy成分SWNsyを付加した関数Sxswn(x+k,y+l)、Syswn(x+k,y+l)で置き換えた次の式によってぼけの点広がり関数WT(k,l)swnが演算され、このぼけの点広がり関数WT(k,l)swnを用いて、式(18)に従って画像データY(x,y)が演算される。
例えば、ノイズSWNsを上述した式(23)で表すとする。そして、それぞれのフレーム単位で変化する成分をRΣmseq[m](frame)、画素単位で変化する成分をRΣmseq[m](pixel)とすると、ノイズSWNsのx成分SWNsxとy成分SWNsyは次式で表される。
SWNsx=RSxΣmseqSx[m](frame)+RSxΣmseqSx[m](pixel)
SWNsy=RSyΣmseqSy[m](frame)+RSyΣmseqSy[m](pixel)
(29)
そして係数RSx,RSyをノイズパラメータNに応じて決定することで、ノイズSWNsx、SWNsyの値が決定される。ノイズSWNsx、SWNsyが付加された関数Sxswn(x+k,y+l)、Syswn(x+k,y+l)が、ぼけモデルでノイズを与えるパラメータとしてぼけ付加部311に供給される。
偏差によるピントぼけノイズの画像生成処理の手順を、図27のフローチャートを参照して説明する。
ステップS231において、設定部331はユーザの指示に基づいて処理領域を設定する。この場合、ユーザは画像の一部、若しくは全部を処理領域として設定することができる。常に画像の全体を処理する場合には、この処理を省略することもできる。ステップS232において、取得部332はユーザにより指定されたノイズパラメータNを取得する。ステップS233において、決定部333はノイズパラメータNに基づいて式(29)の係数RSx,RSyを決定する。
ステップS234において、演算部334はノイズSWNsx、SWNsyを演算する。すなわち、ステップS232において取得されたノイズパラメータNに対応する係数RSx,RSyに基づいて、式(29)からノイズSWNsx、SWNsyが演算される。
ステップS235において、演算部334はノイズSWNsx、SWNsyを付加したぼけの点広がり関数WT(k,l)swnを演算する。すなわち、ステップS234で演算されたノイズSWNsx、SWNsyが付加されたぼけの点広がり関数WT(k,l)swnが、式(28)に従って演算される。このノイズSWNsx、SWNsyが付加されたぼけの点広がり関数WT(k,l)swnは、ぼけモデルにノイズを与えるパラメータとしてぼけ付加部311に出力される。
ステップS236において、ぼけ付加部311の演算部353は設定された処理領域に関し、ノイズSWNsx、SWNsyを付加した画素データを演算する。具体的には、親画像データX(x+k,y+l)が取得され、取得された親画像データX(x+k,y+l)に対して、ステップS235で演算されたノイズSWNsx、SWNsyが付加されたぼけの点広がり関数WT(k,l)swnを用いて画素データY(x,y)が、式(18)に従って演算される。
このようにして生成された画像データの画像の各画素には、フレーム毎に異なり、また画素毎に異なるノイズ成分が付加されている。従って、1枚の静止画に対して、フレーム単位かつ画素単位のノイズ成分を変化させて複数枚のフレームの画像を生成すると、1枚の画像が揺れて見える一種の動画を生成することができる。
すなわち、この場合においても、上述した場合と同様に、人が空気中の物を遠くから見たような場合に観察されるような、比較的詳細な元の状態をそのまま確認することができる画像であって、周囲の空気の温度、湿度の変化などに起因して自然に揺らぐエフェクトを有する画像を生成することができる。
ぼけモデルを規定するぼけの点広がり関数WT(k,l)の位相にノイズを付加することで、画像に合焦状態のノイズを付加することができる。この場合、ぼけの点広がり関数WT(k,l)のぼけデータとしてのx成分kとy成分lにノイズSWNk(x,y)、SWNl(x,y)が付加され、ノイズ付加後のx成分kswnとy成分lswnは、次式で示すようになる。
kswn=k+SWNk(x,y)
lswn=l+SWNl(x,y)
(30)
式(30)を代入することで式(19)が次式のように書き換えられる。
ノイズSWNk(x,y)、SWNl(x,y)も、次式で表されるように、フレーム単位でのノイズ成分SWNk(x,y) (frame)、SWNl (frame)と、画素単位でのノイズ成分SWNk(x,y) (pixel)、SWNl (pixel)の和で構成される。
SWNk(x,y)=SWNk(x,y) (frame)+SWNk(x,y) (pixel)
SWNl(x,y)=SWNl(x,y) (frame)+SWNl(x,y) (pixel)
(32)
ノイズSWNk(x,y)、SWNl(x,y)を上述した式(23)で表すものとする。そして、それぞれのフレーム単位で変化される成分をRkΣmseqk[m](frame)、RlΣmseql[m](frame)、画素単位で変化される成分をRkΣmseqk[m](pixel)、RlΣmseql[m](pixel)とすると、ノイズSWNk(x,y)、SWNl(x,y)は次式で表される。
SWNk(x,y)=RkΣmseqk[m](frame)+RkΣmseqk[m](pixel)
SWNl(x,y)=RlΣmseql[m](frame)+RlΣmseql[m](pixel)
(33)
そしてノイズSWNk(x,y)、SWNl(x,y)の係数Rk、RlがノイズパラメータNに対応して決定される。
位相によるピントぼけノイズの画像生成処理の手順を、図28のフローチャートを参照して説明する。
ステップS261において、設定部331はユーザの指示に基づいて処理領域を設定する。この場合、ユーザは画像の一部、若しくは全部を処理領域として設定することができる。常に画像の全体を処理する場合には、この処理を省略することもできる。ステップS262において、取得部332はユーザにより指定されたノイズパラメータNを取得する。ステップS263において、決定部333はノイズパラメータNに基づいて、式(33)のノイズSWNk(x,y)、SWNl(x,y)の係数Rk、Rlを決定する。
ステップS264において、演算部334はノイズSWNk(x,y)、SWNl(x,y)を演算する。すなわち、ステップS262において取得されたノイズパラメータNに対応する係数Rk、Rlに基づいて、式(33)からノイズSWNk(x,y)、SWNl(x,y)が演算される。
ステップS265において、演算部334はノイズSWNk(x,y)、SWNl(x,y)を付加したぼけの点広がり関数WT(k,l)swnを演算する。すなわち、ステップS264で演算されたノイズSWNk(x,y)、SWNl(x,y)が付加されたぼけの点広がり関数WT(k,l)swnが、式(31)に従って演算される。このノイズSWNk(x,y)、SWNl(x,y)が付加されたぼけの点広がり関数WT(k,l)swnは、ぼけモデルでノイズを与えるパラメータとして、ぼけ付加部311に出力される。
ステップS266において、ぼけ付加部311の演算部353は設定された処理領域に関し、ノイズSWNk(x,y)、SWNl(x,y)を付加した画素データを演算する。具体的には、入力された親画像データX(x+k,y+l)から、ステップS265で演算されたノイズSWNk(x,y)、SWNl(x,y)が付加されたぼけの点広がり関数WT(k,l)swnを用いて式(18)に従って、画素データY(x,y)が演算される。
以上のように位相にノイズを与えることは、図29に示されるように、例えばx座標で表されるぼけの点広がり関数WT1のピーク値を与えるx座標の値がμ1である場合、そのピーク値を与えるx座標がμ2またはμ3である位相の関数WT2、WT3にシフトすることを意味する。
このようにした場合においても、上述した場合と同様に、自然に揺らぐエフェクトを有する画像を生成することができる。
ぼけモデルとしてのぼけの点広がり関数WT(k,l)の先鋭度にノイズを付加することで、画像に合焦状態のノイズを付加することができる。図30には最も先鋭度が高い関数WT11、中程度の関数WT12、最も低い関数WT13が示されている。式(19)のサンプリングポイントの間隔を密にすることで先鋭度を低くし、粗にすることで高くすることができる。
係数値の合計が1.0にならない場合、各係数値を係数の総和で除算することで、正規化が行われる。
すなわち、異なる偏差σで算出した複数の正規分布を結合して、レベルを正規化することで、先鋭度を変えた特性(すなわち式)を得ることができる。注目画素に対して異なる偏差σの足し込み特性を算出し、それらを積分後、レベル正規化が行われる。先鋭度が変化する状態は、1画素内で、奥行き方向(すなわち距離方向)にノイズが生じている状態(すなわち、1画素の積分時間内に前後に動きが生じた状態)と等価と考えることができる。この場合、ぼけの点広がり関数は、次の混合正規分布の式で表される。
上記式のぼけデータとしての係数Kpを、ノイズを与えた係数Kpswnに変更すると、上記式は次のように書き換えられる。
ノイズをSWNpとすると、ノイズを与えた係数Kpswnは次式で表される。
ノイズSWNpを式(23)で表すとし、それぞれのフレーム単位で変化される成分をRpΣmseqp[m](frame)、画素単位で変化される成分をRpΣmseqp[m](pixel)とすると、ノイズSWNp(x,y)は次式で表される。
SWNp(x,y)=RpΣmseqp[m](frame)+RpΣmseqp[m](pixel)
(38)
そしてノイズSWNp(x,y)の係数RpがノイズパラメータNに対応して設定される。
尖鋭度によるピントぼけノイズの画像生成処理の手順を、図31のフローチャートを参照して説明する。
ステップS271において、設定部331はユーザの指示に基づいて処理領域を設定する。この場合、ユーザは画像の一部、若しくは全部を処理領域として設定することができる。常に画像の全体を処理する場合には、この処理を省略することもできる。ステップS272において、取得部332はユーザにより指定されたノイズパラメータNを取得する。ステップS273において、決定部333はノイズパラメータNに基づいて、式(38)のノイズSWNp(x,y)の係数Rpを決定する。
ステップS274において、演算部334はノイズSWNp(x,y)を演算する。すなわち、ステップS272において取得されたノイズパラメータNに対応する係数Rpに基づいて、式(38)からノイズSWNp(x,y)が演算される。
ステップS275において、演算部334はノイズSWNp(x,y)を付加したぼけの点広がり関数WT(k,l)swnを演算する。すなわち、ステップS274で演算されたノイズSWNp(x,y)が付加されたぼけの点広がり関数WT(k,l)swnが、式(35)に従って演算される。このノイズSWNp(x,y)が付加されたぼけの点広がり関数WT(k,l)swnは、ぼけモデルでノイズを与えるパラメータとして、ぼけ付加部311に出力される。
ステップS276において、ぼけ付加部311の演算部353は設定された処理領域に関し、ノイズSWNp(x,y)を付加した画素データを演算する。具体的には、入力された親画像データX(x+k,y+l)から、ステップS275で演算されたノイズSWNp(x,y)が付加されたぼけの点広がり関数WT(k,l)swnを用いて式(18)に従って、画素データY(x,y)が演算される。
以上のように尖鋭度にノイズを与えた場合においても、上述した場合と同様に、自然に揺らぐエフェクトを有する画像を生成することができる。
さらに図32に示されるように、ぼけモデルとしての式(19)のぼけの点広がり関数WT(k,l)を、ガウス関数WT21から歪ませた関数WT22、WT23と変化させることでも画像に合焦状態のノイズを付加することができる。
次に動きぼけのノイズを付加した画像を生成する場合について説明する。
静止した状態の背景の前を所定の物体の前景が移動する場合、これをセンサにより撮像すると、背景のみを撮像する画素、前景のみを撮像する画素、そして前景と背景を混合して撮像する画素が出現する。以下このことを詳述する。
図33は、センサによる撮像を説明する図である。センサ391は、例えば、固体撮像素子であるCCD(Charge-Coupled Device)エリアセンサを備えたCCDビデオカメラなどで構成される。現実世界における、前景に対応するオブジェクトは、現実世界における、背景に対応するオブジェクトと、センサ391との間を、例えば、図中の左側から右側に水平に移動する。
例えばビデオカメラなどにより構成されるセンサ391は、前景に対応するオブジェクトを、背景に対応するオブジェクトと共に撮像する。センサ391は、撮像した画像を1フレーム単位で出力する。例えば、センサ391は、1秒間に30フレームから成る画像を出力する。センサ391の露光時間は、1/30秒とすることができる。露光時間は、センサ391が入力された光の電荷への変換を開始してから、入力された光の電荷への変換を終了するまでの期間である。以下、露光時間をシャッタ時間とも称する。
図34は、画素の配置を説明する図である。図34において、A乃至Iは、個々の画素を示す。画素は、画像に対応する平面上に配置されている。1つの画素に対応する1つの検出素子は、センサ391上に配置されている。センサ391が画像を撮像するとき、1つの検出素子は、画像を構成する1つの画素に対応する画素値を出力する。例えば、検出素子のX方向の位置は、画像上の横方向の位置に対応し、検出素子のY方向の位置は、画像上の縦方向の位置に対応する。
図35に示すように、例えば、CCDである検出素子は、シャッタ時間に対応する期間、入力された光を電荷に変換して、変換された電荷を蓄積する。電荷の量は、入力された光の強さと、光が入力されている時間にほぼ比例する。検出素子は、シャッタ時間に対応する期間において、入力された光から変換された電荷を、既に蓄積されている電荷に加えていく。すなわち、検出素子は、シャッタ時間に対応する期間、入力される光を積分して、積分された光に対応する量の電荷を蓄積する。検出素子は、時間に対して、積分効果があるとも言える。
検出素子に蓄積された電荷は、図示せぬ回路により、電圧値に変換され、電圧値は更にデジタルデータなどの画素値に変換されて出力される。従って、センサ391から出力される個々の画素値は、前景または背景に対応するオブジェクトの空間的に広がりを有するある部分を、シャッタ時間について積分した結果である、1次元の空間に射影された値を有する。
図36は、静止している前景に対応するオブジェクトおよび静止している背景に対応するオブジェクトを撮像した画像における、隣接して1列に並んでいる画素の画素値を時間方向に展開したモデル図である。例えば、隣接して1列に並んでいる画素として、画面の1つのライン上に並んでいる画素を選択することができる。
図36に示すF01乃至F04の画素値は、静止している前景のオブジェクトに対応する画素の画素値である。図36に示すB01乃至B04の画素値は、静止している背景のオブジェクトに対応する画素の画素値である。
図36における縦方向は、図中の上から下に向かって時間が経過する。図36中の矩形の上辺の位置は、センサ391が入力された光の電荷への変換を開始する時刻に対応し、図36中の矩形の下辺の位置は、センサ391が入力された光の電荷への変換を終了する時刻に対応する。すなわち、図36中の矩形の上辺から下辺までの距離は、シャッタ時間に対応する。
以下において、シャッタ時間とフレーム間隔とが同一である場合を例に説明する。
図36における横方向は、空間方向Xに対応する。より具体的には、図36に示す例において、図36中の”F01”と記載された矩形の左辺から”B04”と記載された矩形の右辺までの距離は、画素のピッチの8倍、すなわち、連続している8つの画素の間隔に対応する。
前景のオブジェクトおよび背景のオブジェクトが静止している場合、シャッタ時間に対応する期間において、センサ391に入力される光は変化しない。
ここで、シャッタ時間に対応する期間を2つ以上の同じ長さの期間に分割する。例えば、仮想分割数を4とすると、図36に示すモデル図は、図37に示すモデルとして表すことができる。仮想分割数は、前景に対応するオブジェクトのシャッタ時間内での動き量vなどに対応して設定される。例えば、4である動き量vに対応して、仮想分割数は、4とされ、シャッタ時間に対応する期間は4つに分割される。
図中の最も上の行は、シャッタが開いて最初の、分割された期間に対応する。図中の上から2番目の行は、シャッタが開いて2番目の、分割された期間に対応する。図中の上から3番目の行は、シャッタが開いて3番目の、分割された期間に対応する。図中の上から4番目の行は、シャッタが開いて4番目の、分割された期間に対応する。
以下、動き量vに対応して分割されたシャッタ時間をシャッタ時間/vとも称する。
前景に対応するオブジェクトが静止しているとき、センサ391に入力される光は変化しないので、前景の成分F01/vは、画素値F01を仮想分割数で除した値に等しい。同様に、前景に対応するオブジェクトが静止しているとき、前景の成分F02/vは、画素値F02を仮想分割数で除した値に等しく、前景の成分F03/vは、画素値F03を仮想分割数で除した値に等しく、前景の成分F04/vは、画素値F04を仮想分割数で除した値に等しい。
背景に対応するオブジェクトが静止しているとき、センサ391に入力される光は変化しないので、背景の成分B01/vは、画素値B01を仮想分割数で除した値に等しい。同様に、背景に対応するオブジェクトが静止しているとき、背景の成分B02/vは、画素値B02を仮想分割数で除した値に等しく、B03/vは、画素値B03を仮想分割数で除した値に等しく、B04/vは、画素値B04を仮想分割数で除した値に等しい。
すなわち、前景に対応するオブジェクトが静止している場合、シャッタ時間に対応する期間において、センサ391に入力される前景のオブジェクトに対応する光が変化しないので、シャッタが開いて最初の、シャッタ時間/vに対応する前景の成分F01/vと、シャッタが開いて2番目の、シャッタ時間/vに対応する前景の成分F01/vと、シャッタが開いて3番目の、シャッタ時間/vに対応する前景の成分F01/vと、シャッタが開いて4番目の、シャッタ時間/vに対応する前景の成分F01/vとは、同じ値となる。F02/v乃至F04/vも、F01/vと同様の関係を有する。
背景に対応するオブジェクトが静止している場合、シャッタ時間に対応する期間において、センサ391に入力される背景のオブジェクトに対応する光は変化しないので、シャッタが開いて最初の、シャッタ時間/vに対応する背景の成分B01/vと、シャッタが開いて2番目の、シャッタ時間/vに対応する背景の成分B01/vと、シャッタが開いて3番目の、シャッタ時間/vに対応する背景の成分B01/vと、シャッタが開いて4番目の、シャッタ時間/vに対応する背景の成分B01/vとは、同じ値となる。B02/v乃至B04/vも、同様の関係を有する。
次に、前景に対応するオブジェクトが移動し、背景に対応するオブジェクトが静止している場合について説明する。
図38は、前景に対応するオブジェクトが図中の右側に向かって移動する場合の、カバードバックグラウンド領域(前景領域に対して、前景のオブジェクトの進行方向の前端部に対応する位置の、前景成分と背景成分の混合領域であり、時間の経過に対応して背景成分が前景に覆い隠される領域)を含む、1つのライン上の画素の画素値を時間方向に展開したモデル図である。図38において、前景の動き量vは、4である。1フレームは短い時間なので、前景に対応するオブジェクトが剛体であり、等速で移動していると仮定することができる。図38において、前景に対応するオブジェクトの画像は、あるフレームを基準として次のフレームにおいて4画素分右側に表示されるように移動する。
図38において、最も左側の画素乃至左から4番目の画素は、前景領域に属する。図38において、左から5番目乃至左から7番目の画素は、カバードバックグラウンド領域である混合領域に属する。図38において、最も右側の画素は、背景領域に属する。
前景に対応するオブジェクトが時間の経過と共に背景に対応するオブジェクトを覆い隠すように移動しているので、カバードバックグラウンド領域に属する画素の画素値に含まれる成分は、シャッタ時間に対応する期間のある時点で、背景の成分から、前景の成分に替わる。
例えば、図38中に太線枠を付した画素値Mは、式(39)で表される。
M=B02/v+B02/v+F07/v+F06/v (39)
例えば、左から5番目の画素は、1つのシャッタ時間/vに対応する背景の成分を含み、3つのシャッタ時間/vに対応する前景の成分を含むので、左から5番目の画素の混合比α(前景成分と背景成分の和である1画素の値において前景成分が占める割合)は、1/4である。左から6番目の画素は、2つのシャッタ時間/vに対応する背景の成分を含み、2つのシャッタ時間/vに対応する前景の成分を含むので、左から6番目の画素の混合比αは、1/2である。左から7番目の画素は、3つのシャッタ時間/vに対応する背景の成分を含み、1つのシャッタ時間/vに対応する前景の成分を含むので、左から7番目の画素の混合比αは、3/4である。
前景に対応するオブジェクトが、剛体であり、前景の画像が次のフレームにおいて4画素右側に表示されるように等速で移動すると仮定できるので、例えば、図38中の左から4番目の画素の、シャッタが開いて最初の、シャッタ時間/vの前景の成分F07/vは、図38中の左から5番目の画素の、シャッタが開いて2番目のシャッタ時間/vに対応する前景の成分に等しい。同様に、前景の成分F07/vは、図38中の左から6番目の画素の、シャッタが開いて3番目のシャッタ時間/vに対応する前景の成分と、図38中の左から7番目の画素の、シャッタが開いて4番目のシャッタ時間/vに対応する前景の成分とに、それぞれ等しい。
前景に対応するオブジェクトが、剛体であり、前景の画像が次のフレームにおいて4画素右側に表示されるように等速で移動すると仮定できるので、例えば、図38中の左から3番目の画素の、シャッタが開いて最初のシャッタ時間/vの前景の成分F06/vは、図38中の左から4番目の画素の、シャッタが開いて2番目のシャッタ時間/vに対応する前景の成分に等しい。同様に、前景の成分F06/vは図38中の左から5番目の画素の、シャッタが開いて3番目のシャッタ時間/vに対応する前景の成分と、図38中の左から6番目の画素の、シャッタが開いて4番目のシャッタ時間/vに対応する前景の成分とに、それぞれ等しい。
前景に対応するオブジェクトが、剛体であり、前景の画像が次のフレームにおいて4画素右側に表示されるように等速で移動すると仮定できるので、例えば、図38中の左から2番目の画素の、シャッタが開いて最初のシャッタ時間/vの前景の成分F05/vは、図38中の左から3番目の画素の、シャッタが開いて2番目のシャッタ時間/vのに対応する前景の成分に等しい。同様に、前景の成分F05/vは、図38中の左から4番目の画素の、シャッタが開いて3番目のシャッタ時間/vに対応する前景の成分と、図38中の左から5番目の画素の、シャッタが開いて4番目のシャッタ時間/vに対応する前景の成分とに、それぞれ等しい。
前景に対応するオブジェクトが、剛体であり、前景の画像が次のフレームにおいて4画素右側に表示されるように等速で移動すると仮定できるので、例えば、図38中の最も左側の画素の、シャッタが開いて最初のシャッタ時間/vの前景の成分F04/vは、図38中の左から2番目の画素の、シャッタが開いて2番目のシャッタ時間/vに対応する前景の成分に等しい。同様に、前景の成分F04/vは、図38中の左から3番目の画素の、シャッタが開いて3番目のシャッタ時間/vに対応する前景の成分と、図38中の左から4番目の画素の、シャッタが開いて4番目のシャッタ時間/vに対応する前景の成分とに、それぞれ等しい。
動いているオブジェクトに対応する前景の領域は、このように動きぼけを含むので、歪み領域とも言える。
図39は、前景が図中の右側に向かって移動する場合の、アンカバードバックグラウンド領域(前景に対して、前景のオブジェクトの進行方向の後端部に対応する位置の、前景成分と背景成分の混合領域であり、時間の経過に対応して背景成分が現れる領域)を含む、1つのライン上の画素の画素値を時間方向に展開したモデル図である。図39において、前景の動き量vは、4である。1フレームは短い時間なので、前景に対応するオブジェクトが剛体であり、等速で移動していると仮定することができる。図39において、前景に対応するオブジェクトの画像は、あるフレームを基準として次のフレームにおいて4画素分右側に移動する。
図39において、最も左側の画素乃至左から4番目の画素は、背景領域に属する。図39において、左から5番目乃至左から7番目の画素は、アンカバードバックグラウンドである混合領域に属する。図39において、最も右側の画素は、前景領域に属する。
背景に対応するオブジェクトを覆っていた前景に対応するオブジェクトが時間の経過と共に背景に対応するオブジェクトの前から取り除かれるように移動しているので、アンカバードバックグラウンド領域に属する画素の画素値に含まれる成分は、シャッタ時間に対応する期間のある時点で、前景の成分から、背景の成分に替わる。
例えば、図39中に太線枠を付した画素値M'は、式(40)で表される。
M'=F02/v+F01/v+B26/v+B26/v (40)
例えば、左から5番目の画素は、3つのシャッタ時間/vに対応する背景の成分を含み、1つのシャッタ時間/vに対応する前景の成分を含むので、左から5番目の画素の混合比αは、3/4である。左から6番目の画素は、2つのシャッタ時間/vに対応する背景の成分を含み、2つのシャッタ時間/vに対応する前景の成分を含むので、左から6番目の画素の混合比αは、1/2である。左から7番目の画素は、1つのシャッタ時間/vに対応する背景の成分を含み、3つのシャッタ時間/vに対応する前景の成分を含むので、左から7番目の画素の混合比αは、1/4である。
式(39)および式(40)をより一般化すると、画素値Mは、式(41)で表される。
ここで、αは、混合比である。Bは、背景の画素値であり、Fi/vは、前景の成分である。
前景に対応するオブジェクトが剛体であり、等速で動くと仮定でき、かつ、動き量vが4であるので、例えば、図39中の左から5番目の画素の、シャッタが開いて最初の、シャッタ時間/vの前景の成分F01/vは、図39中の左から6番目の画素の、シャッタが開いて2番目のシャッタ時間/vに対応する前景の成分に等しい。同様に、F01/vは、図39中の左から7番目の画素の、シャッタが開いて3番目のシャッタ時間/vに対応する前景の成分と、図39中の左から8番目の画素の、シャッタが開いて4番目のシャッタ時間/vに対応する前景の成分とに、それぞれ等しい。
前景に対応するオブジェクトが剛体であり、等速で動くと仮定でき、かつ、仮想分割数が4であるので、例えば、図39中の左から6番目の画素の、シャッタが開いて最初の、シャッタ時間/vの前景の成分F02/vは、図39中の左から7番目の画素の、シャッタが開いて2番目のシャッタ時間/vに対応する前景の成分に等しい。同様に、前景の成分F02/vは、図39中の左から8番目の画素の、シャッタが開いて3番目のシャッタ時間/vに対応する前景の成分に等しい。
前景に対応するオブジェクトが剛体であり、等速で動くと仮定でき、かつ、動き量vが4であるので、例えば、図39中の左から7番目の画素の、シャッタが開いて最初の、シャッタ時間/vの前景の成分F03/vは、図39中の左から8番目の画素の、シャッタが開いて2番目のシャッタ時間/vに対応する前景の成分に等しい。
図37乃至図39の説明において、仮想分割数は、4であるとして説明したが、仮想分割数は、動き量vに対応する。動き量vは、一般に、前景に対応するオブジェクトの移動速度に対応する。例えば、前景に対応するオブジェクトが、あるフレームを基準として次のフレームにおいて4画素分右側に表示されるように移動しているとき、動き量vは、4とされる。動き量vに対応し、仮想分割数は、4とされる。同様に、例えば、前景に対応するオブジェクトが、あるフレームを基準として次のフレームにおいて6画素分左側に表示されるように移動しているとき、動き量vは、6とされ、仮想分割数は、6とされる。
動きぼけのノイズを付加した画像を生成する場合、以上に説明した式(41)の動き量vにノイズを付加することができる。すなわちノイズSWNvを付加した動き量vswnは、次の式で表される。
vswn=v+SWNv (42)
そして、式(41)は次のように書き換えられ、各画素値Mは、次式に基づいて演算される。
ここでもノイズSWNVは、次式で表されるように、フレーム単位で変化する成分SWNV(frame)と、画素単位で変化する成分SWNV(pixel)との和とされる。
SWNV=SWNV(frame)+SWNV(pixel) (44)
ノイズSWNvを上述した式(23)で表すものとする。そして、それぞれのフレーム単位で変化される成分をRVΣmseqV [m](frame)、画素単位で変化される成分をRVΣmseqV[m](pixel)とすると、ノイズSWNVは次式で表される。
SWNV=RVΣmseqV[m](frame)+RVΣmseqV[m](pixel) (45)
そして式(45)の係数RVがノイズパラメータNに応じて決定される。
動き量の動きぼけノイズの画像生成処理の手順は、図40のフローチャートに示されるようになる。
ステップS291において、設定部331はユーザにより指定された領域を処理領域として設定する。この場合、画像の一部、若しくは全部を処理領域として設定することができる。常に画像の全体を処理する場合には、この処理を省略することもできる。ステップS292において、取得部332はステップS291で設定された処理領域の各画素の動き情報を取得する。この動き情報には動き量vが含まれている。
ステップS293において、取得部332はユーザにより指定されたノイズパラメータNを取得する。ステップS294において、決定部333は取得されたノイズパラメータNに基づいて、式(45)の係数Rvを決定する。ステップS295において、演算部334はノイズSWNVを演算する。すなわち、ステップS294において決定された係数Rvに基づいて、式(45)に従って、ノイズSWNVが演算される。
ステップS296において、演算部334はノイズSWNVを付加した動き量vswnを演算する。すなわち、ステップS295で演算されたノイズSWNVが付加された動き量vswnが、式(42)に従って演算される。このノイズSWNVが付加された動き量vswnは、ぼけモデルでノイズを与えるパラメータとして、ぼけ付加部311に出力される。
ステップS297において、ぼけ付加部311の演算部353は設定された処理領域において、ノイズSWNVを付加した画素データを演算する。具体的には、親画像データとともに供給された混合比α、背景の画素値B、および前景の画素値Fi、並びに演算されたノイズSWNVが付加された動き量vswnを用いて、式(43)に基づき画素値Mswnが演算される。
このようにした場合においても、上述した場合と同様に、自然に揺らぐエフェクトを有する画像を生成することができる。
次に、動きの方向(すなわち角度)にノイズを付加して、画像を生成する場合について説明する。
図41Aに示されるように、動きの方向が水平方向である場合、対象とされる注目画素が位置するライン上の処理領域WA内の他の画素の画素値に所定の係数で重み付けして積和された値がぼけ成分として注目画素の画素値に加算される。動きの方向が垂直方向である場合、対象とされる注目画素が位置する垂直方向のライン上の処理領域WA内の他の画素の画素値に所定の係数で重み付けして積和された値がぼけ成分として注目画素の画素値に加算される。
図41Bに示されるように、動きの方向が斜め方向である場合、対象とされる注目画素が位置するその動きの方向のラインLを中心として所定の幅の範囲が処理領域WAとされる。そして、斜めのラインL上に、画素の水平および垂直方向のピッチと同じ距離だけ離れた位置の補間画素が演算される。
図42は補間画素の演算の原理を表している。同図に示されるように、補間位置Pwaの画素値DPwaは、位置Pwaに最も近い周囲の4個の位置Pw1乃至Pw4の画素値DPw1乃至DPw4から、次式に基づいて演算される。
DPwa={(1−βh)(1−βv)/v}DPw1
+{(βh)(1−βv)/v}DPw2
+{(1−βh)(βv)/v}DPw3
+{(βh)(βv)/v}DPw4
(46)
式(46)において、θを動きの方向のラインLのx軸に対する角度とするとき、βhはcosθ、βvはsinθを、それぞれ表している。
ぼけデータとしての角度θ(動きの方向)に対するノイズは、βh、βvに対して分解して付加される。すなわち、ぼけデータとしてのβh、βvに対するノイズをそれぞれSWNβh、SWNβvとすると、ノイズ付加後のβh、βvであるβhswn、βvswnは、それぞれ次式で表される。
βhswn =βh+SWNβh
βvswn =βv+SWNβv
(47)
ノイズSWNβh、SWNβvを上述した式(23)で表すものとする。そして、それぞれのフレーム単位で変化される成分をRβhΣmseqβh[m](frame)、RβvΣmseqβv[m](frame)、画素単位で変化される成分をRβhΣmseqβh[m](pixel)、RβvΣmseqβv[m](pixel)とすると、ノイズSWNβh、SWNβvは次式で表される。
SWNβh=RβhΣmseqβh[m](frame)+RβhΣmseqβh[m](pixel)
SWNβv=RβvΣmseqβv[m](frame)+RβvΣmseqβv[m](pixel)
(48)
従って、ノイズSWNβh、SWNβvを付加した補間位置Pwaの画素値DPwaswnは、次式で表される。この式は、補間位置Pwaの画素値DPwaを演算する場合の補間画素の位置にノイズを付加することを意味する。
DPwaswn={(1−βhswn)(1−βvswn)/v}DPw1
+{(βhswn)(1−βvswn)/v}DPw2
+{(1−βhswn)(βvswn)/v}DPw3
+{(βhswn)(βvswn)/v}DPw4
(49)
注目画素の画素値DPw1にノイズを付加した注目画素の画素値DPwswnは、次式で演算される。wiは各補間画素の重み付け係数であり、ぼけパラメータPに基づいて選択、決定される。
次に、図43のフローチャートを参照して、動きの方向、すなわち角度による動きぼけノイズの画像生成処理について説明する。
ステップS361において、設定部331はユーザからの指示に基づいて処理領域を設定する。この場合、画像の一部、若しくは全部を処理領域として設定することができる。常に画像の全体を処理する場合には、この処理を省略することもできる。ステップS362において、取得部332は処理領域の各画素の動き情報を取得する。この動き情報には、動き量vの他、動きの方向を表す情報が含まれている。
ステップS363において、演算部334は動きの方向に沿った補間画素を演算する。すなわち、式(46)に基づいて、画素値DPwaが演算される。ステップS364において、取得部332はユーザからの入力に基づいてノイズパラメータNを取得する。ステップS365において、決定部333は式(48)のノイズSWNβh、SWNβvの係数Rβh,Rβvを決定する。
ステップS366において、演算部334はノイズSWNβh、SWNβvを式(48)に基づいて演算する。ステップS367において、演算部334はノイズSWNβh、SWNβvを付加した角度成分βhswn、βvswnを式(47)に基づいて演算する。このノイズSWNβh、SWNβvを付加した角度成分βhswn、βvswnは、ぼけモデルでノイズを与えるパラメータとして、ぼけ付加部311に出力される。
ステップS368において、ぼけ付加部311の取得部351はユーザからの入力に基づいてぼけパラメータPを取得する。ステップS369において、選択部352は取得されたぼけパラメータPに基づいて、予め記憶されている重みwiの中から対応する重みwiを選択する。ステップS370において、演算部353はノイズSWNβh、SWNβvを付加した角度成分βhswn、βvswnに基づいて画素データを演算する。すなわち、式(50)に基づいて、画素値DPwswnが演算される。
このようにした場合においても、上述した場合と同様に、自然に揺らぐエフェクトを有する画像を生成することができる。
なお、ぼけの画像を生成する場合、上記した複数の方法のうちの2個以上を適宜組み合わせることもできる。
また、上記した各ノイズSWN(ノイズSWNd、SWNsx、SWNsy、SWNk(x,y)、SWNl(x,y)、SWNp、SWNv、SWNβh、SWNβv)は、式(23)の他、次の式で表すこともできる。
SWN=a+b・rand (51)
−1.0≦rand≦1.0
aはオフセット、bはゲインである。randは疑似乱数を発生する関数である。
またはノイズSWNは、次の式で表すこともできる。
SWN=a(d)+b(d)・rand (52)
この式は、式(51)のオフセットaとゲインbを、dの関数としたものである。
ぼけ付加部311でノイズが付加された画像データは、ノイズ付加部313で必要に応じてさらにノイズが付加された後、エフェクトを付加した画像データとして図示せぬ装置に供給される。
この画像データはタップ構築部314に供給され、学習処理に用いられる。また、ノイズ付加部312からタップ構築部315にも学習に必要な情報(ぼけ付加部311に供給される情報と同じ情報)が供給される。
ぼけ付加部311とノイズ付加部312,313に供給された情報のうち必要な情報は、予測係数演算部318にも供給される。すなわち、予測係数演算部318には、ノイズパラメータN、ノイズパラメータNi、ぼけパラメータP、および動き情報(動き量と方向)が供給される。
図20の画像生成装置301や図21の画像生成措置400で行われる学習処理は、図3の学習装置1や図14の学習装置1における場合と同様であり、その説明は繰り返しになるので省略するが、これにより、揺れが付加された画像から、揺れを修正した画像を生成するための予測係数が求められる。
予測係数を演算するに当たり、使用するクラスは任意であるが、例えば、ぼけパラメータPに対応するクラスDを次式に基づいて決定することができる。
D=(a+A)×Nmax+(n+N) ・・・(53)
上記式(53)におけるaは、指定された領域における動きベクトルのx座標成分を表し、nは、y座標成分を表す。また、Aは、ユーザより入力されたオフセット値のx座標成分を表し、Nは、y座標成分を表す。Nmaxは、y座標成分のクラス総数を意味する。画像データに対応して保存されているぼけパラメータは、式(53)における((a+A),(n+N))の値である。従って、このぼけパラメータ((a+A),(n+N))の値を上記式(53)に適用して、クラスDを演算することができる。
そこで、最終的なクラスtotal_classを、例えば波形パターンのクラスWとぼけパラメータのクラスDとを総合して、クラス分類部316により、次式で表されるように決定することができる。なお、size_wはclassWのクラス数を表す。
total_class=classW + classD×size_w ・・・ (54)
動き量vや動きの方向(角度θ)に基づいてクラス分類することもできる。その場合、動き量と角度の大きさに応じて画像からクラスタップを抽出し、それを1ビットADRCすることでクラス分類したり、動き量と角度そのものに基づいて、クラス分類することもできる。
また、例えば、動き量vの整数をそのまま用いたクラスclassVcと、注目画素とその周囲の隣接する8個の画素との差分値を、正、負、同値の3クラスに分類したクラスclassVdiffとを、次式で示されるように統合することができる。なお、iは各隣接画素に対応する。
total_class=classVc + classVdiff×size_Vc
classVdiff=Σi{classVdiff_i×3i}
(55)
1動きから30動きを対象とする場合、式(55)のsize_Vcは30となる。
図44は、図20の画像生成装置301の学習により生成された予測係数を用いて、ぼけが含まれる画像を修正する予測装置の一実施の形態の構成を示すブロック図である。この予測装置681は図9の予測装置81と基本的に同様の構成とされている。
すなわち、図44の予測装置681が有するタップ構築部691、タップ構築部692、クラス分類部693、係数メモリ694、タップ構築部695、および予測演算部696は、図9の予測装置81が有するタップ構築部91、タップ構築部92、クラス分類部93、係数メモリ94、タップ構築部95、および予測演算部96と基本的に同様の機能を有している。
ただし、タップ構築部692には奥行きデータzだけでなく、動き情報が入力されている。係数メモリ694にも、ノイズパラメータNi、ぼけパラメータP以外に、動き情報が入力されている。またノイズパラメータNzに代えて、ノイズパラメータNが入力されている。
この予測装置681の予測処理は、処理に使用される情報が異なるだけで、図10に示した場合と同様であり、その説明は省略する。但し、この場合、図10のステップS32では、タップ構築部692において奥行きデータzまたは動き情報からクラスタップが構築される。
ステップS35では、係数メモリ701は、クラス分類部693から供給されるクラス、並びに、動き情報、ユーザにより指定されたノイズパラメータN、ノイズパラメータNi、およびぼけパラメータPに基づいて、そのクラス、動き情報、ノイズパラメータN、ノイズパラメータNi、およびぼけパラメータPに対応する予測係数wnを、既に記憶している予測係数wnの中から読み出し、その予測係数wnを予測演算部696に提供する。
図45は、図21の画像生成装置400の学習により生成された予測係数を用いて、ぼけが含まれる画像を修正する予測装置の一実施の形態の構成を示すブロック図である。この予測装置681は図13の予測装置81と基本的に同様の構成とされている。
すなわち、図45の予測装置681が有するタップ構築部691、タップ構築部692、クラス分類部693、係数メモリ701、タップ構築部695、および予測演算部696は、図13の予測装置81が有するタップ構築部91、タップ構築部92、クラス分類部93、係数メモリ111、タップ構築部95、および予測演算部96と基本的に同様の機能を有している。
ただし、タップ構築部692には奥行きデータzだけでなく、動き情報が入力されている。係数メモリ701にも、ノイズパラメータNi、ぼけパラメータP、およびスケーリングパラメータ(H,V)以外に、動き情報が入力されている。またノイズパラメータNzに代えて、ノイズパラメータNが入力されている。
この予測装置681の予測処理は、処理に使用される情報が異なるだけで、図10に示した場合と同様であり、その説明は省略する。但し、この場合、図10のステップS32では、タップ構築部692において奥行きデータzまたは動き情報からクラスタップが構築される。
ステップS35では、係数メモリ701は、クラス分類部693から供給されるクラス、並びに、動き情報、ユーザにより指定されたノイズパラメータN、ノイズパラメータNi、ぼけパラメータP、およびスケーリングパラメータ(H,V)に基づいて、そのクラス、動き情報、ノイズパラメータN、ノイズパラメータNi、ぼけパラメータP、およびスケーリングパラメータ(H,V)に対応する予測係数wnを、既に記憶している予測係数wnの中から読み出し、その予測係数wnを予測演算部696に提供する。
図46は、上述した一連の処理をプログラムにより実行するパーソナルコンピュータの構成の例を示すブロック図である。CPU(Central Processing Unit)521は、ROM(Read Only Memory)522、または記憶部528に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)523には、CPU521が実行するプログラムやデータなどが適宜記憶される。これらのCPU521、ROM522、およびRAM523は、バス524により相互に接続されている。
CPU521にはまた、バス524を介して入出力インターフェース525が接続されている。入出力インターフェース525には、キーボード、マウス、マイクロホンなどよりなる入力部526、ディスプレイ、スピーカなどよりなる出力部527が接続されている。CPU521は、入力部526から入力される指令に対応して各種の処理を実行する。そして、CPU521は、処理の結果を出力部527に出力する。
入出力インターフェース525に接続されている記憶部528は、例えばハードディスクからなり、CPU521が実行するプログラムや各種のデータを記憶する。通信部529は、インターネットやローカルエリアネットワークなどのネットワークを介して外部の装置と通信する。また、通信部529は、プログラムを取得し、記憶部528に記憶させるようにしてもよい。
入出力インターフェース525に接続されているドライブ530は、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア531が装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記憶部528に転送され、記憶される。
なお、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
1 学習装置, 11 ぼけ付加部, 12,13 ノイズ付加部, 14,15 タップ構築部, 16 クラス分類部, 17 タップ構築部, 18 予測係数演算部, 19 係数メモリ, 81 予測装置, 91,92 タップ構築部, 93 クラス分類部, 94 係数メモリ, 95 タップ構築部, 96 予測演算部, 101 ダウンスケーリング部, 102 予測係数演算部, 111 係数メモリ, 121 ダウンスケーリング部, 131 タップ構築部, 132 予測係数演算部, 141 タップ構築部, 142 予測演算部, 301 画像生成装置, 311 ぼけ付加部, 312,313 ノイズ付加部, 314,315 タップ構築部, 316 クラス分類部, 317 タップ構築部, 318 予測係数演算部, 319 係数メモリ