(信号処理装置の構成)
以下、本発明の実施の形態に係る信号処理装置を、図を参照しながら説明する。なお、この信号処理装置は、民生用のカメラとしているが、監視用カメラ、テレビ用カメラ、ハンディタイプのビデオカメラ、内視鏡カメラ、等他の用途のカメラとしたり、顕微鏡、双眼鏡、さらにはNMR撮影等の画像診断装置、画像を印刷するプリンタ、画像を読み込むスキャナ等、カメラ以外の機器にも適用できる。
図1には信号処理装置1の構成の概要を示している。信号処理装置1は、人物等の画像を撮影する撮影部2と、その撮影部2を駆動する制御系部3と、撮影部2で撮影された画像を処理する処理部4と、を有している。また、この実施の形態に係る信号処理装置1は、さらに処理部4で処理された画像を記録する記録部5と、画像劣化等を生じさせる変化要因情報のデータを保存する要因情報保存部7を有する。
撮影部2は、レンズを有する撮影光学系やレンズを通過した光を電気信号に変換するCCDやC−MOS等の撮影素子を備える部分である。制御系部3は、撮影部2,処理部4,記録部5,および要因情報保存部7等、信号処理装置内の各部を制御するものである。
処理部4は、画像処理プロセサで構成されており、ASIC(Application Specific Integrated Circuit)のようなハードウェアで構成されている。そして、処理部4は、後述する変化要因情報のデータの生成法に係る処理および画像の復元処理を実行する。たとえば処理部4は、変化要因情報のデータを生成する過程で原信号を小さくする縮小処理を行う。
また、この処理部4には、後述する比較用データを生成する際の元となる画像のデータが保管されることもある。さらに処理部4は、ASICのようなハードウェアとして構成されるのではなく、ソフトウェアで処理する構成としても良い。記録部5は、半導体メモリで構成されているが、ハードディスクドライブ等の磁気記録手段、またはDVD等を使用する光記録手段等を採用しても良い。
要因情報保存部7は、本発明の実施の形態に係る変化要因情報のデータの生成法によって生成される変化要因情報のデータまたはそのデータを加工したデータを保存しておく記録部である。そして要因情報保存部7は、そのデータの中枢をなすブレの軌跡(履歴)と、その軌跡上の各点にとどまっていた時間(重み)を記憶する。要因情報保存部7で記録されたデータは、撮影された原画像(劣化等の変化が生じた画像)から元画像(変化する前の画像もしくは本来撮影されるべきであった画像またはそれらの近似画像)への復元処理の際に、処理部4で用いられる。よって、処理部4と要因情報保存部7との間では、相互にデータの受け渡しが可能となっている。
(変化要因情報のデータの生成)
図2に、処理部4が行う本発明の実施の形態に係る変化要因情報のデータの生成法の一例のフローチャートを示す。
まず、処理部4は、最初の変化要因情報のデータ(PSF)の任意の初期値(P0)を設定する(ステップS101)。ここでは、その初期値を強度分布がガウス分布のデータであるガウシアンディスクとして設定する。
次に、処理部4は、ステップS101の処理と併行してまたはその処理の前若しくは後に、撮影した原画像のデータ(原信号のデータ)Img’を1/4に縮小する。すなわち、原信号のデータImg’のデータを間引いて25%の容量値とする縮小処理(加工)を行う(ステップS102)。この縮小処理を経たデータである縮小データをSImg’と記す。
次に、処理部4は、その縮小データSImg’と同一容量の任意の信号データとしてI0を用い、I0とP0とを重畳積分して比較用のブレたデータI0’を得る(ステップS103)。なお、任意の信号データI0としては、縮小された原画像のデータSImg’が好ましい。
次に、処理部4は、SImg’とI0’とを比較し、その差分のデータΔを得る(ステップS104)。その差分のデータΔが所定値以内かを判定し(ステップS105)、所定値以内であればステップS120へ移行し、所定値以内でなければステップS106へ移行する。ステップS106では、その差分のデータΔに係数k(変化要因情報(PSF)に基づいた係数)を乗じたものをI0に配分して、最初の復元データI0+n(今回はI0+1)を得る。ステップS106において、I0に配分する際には、その配分値(更新量)の妥当性を判断する処理を行う(ステップS107)。そして、その妥当性に応じてI0+nを修正する処理を行う(ステップS108)。次に、ステップS109に移行し、この処理が所定回数に達したか否かを判断し、所定回数(たとえば10回)に達したらステップS120へ移行し、所定回数に達していないときはステップS110へ移行する。
そして処理部4は、I0+1をI0の代わりに用いて(ステップS110)ステップS103の処理を行い、ステップS103、ステップS104、ステップS105、ステップS106、ステップS107、ステップS108、ステップS109およびステップS110の処理を所定回数(今回は10回)繰り返す。その所定回数に達したか否かの判断をステップS109にて行う。
ステップS106の処理は、縮小した原画像のデータSImg’および復元データI0+nを構成する画素のデータの一部または全部を移動(配分)させる処理である。なお、ステップS107およびステップS108の詳細については後述する。
次に、ステップS109にて所定回数に達したと判断された場合は、処理部4は、PSFを算出する処理を行う(ステップS120)。その処理は、得られた復元データI0+nと縮小された原画像のデータSImg’から新たなPSF(=P)を得る処理である。その処理の具体例は、得られた復元データI0+nと原画像の縮小データSImg’をそれぞれフーリエ変換し、周波数空間での割り算によってPSFの周波数特性を算出し、その周波数特性をフーリエ逆変換することによってPSF(=P)を得る。
次に、処理部4は、Pのデータの中枢をなすブレの軌跡の部分(骨格部)のデータの値を2倍にして、骨格部を強調する処理を行う(ステップS121)。図3(A)は、現段階の時点で推定されるPSFをX−Y平面上に示したものである。このX−Y平面は、後述する図6に示す信号処理装置1のブレが生じやすいX−Y平面に相当する。PSFは、そのデータの中枢をなすブレの軌跡に相当する部分(骨格部)Aと、その周辺のデータ値の小さな部分B(ボケ等の部分)とからなる。この小さな値となる部分Bは、ボケの部分と考えられる。図3(B)は、Aの部分を強調する処理(ステップS121)を行った後のPSFの状態を示している。Aの骨格部分が若干強調されていることがわかる。この処理に当っては、細線化処理が採用されているが、他の強調方法を採用してもよい。この処理の結果、ステップS120で得られたPのデータは、P’のデータとなる。その後、ステップS106における配分のための移動エネルギーが最小となるようにP’の原点を設定する処理(詳細は後述する)を行う(ステップS122)。
次に、処理部4は、P’が妥当なPSFか否かを判断する。具体的には、処理部4は、ステップS120からS122までの処理を3回繰り返したか否かを判断する(ステップS123)。繰り返しの回数、すなわちPSFの算出回数が3回を満たしていなければ(N)、P’のデータをP0の代わりに用いて(ステップS124)、ステップS103からS110までの処理を繰り返し、その後再度ステップS120〜S122を実行する。
そして、ステップS123の判断において、PSF算出の回数、すなわち繰り返しの回数が3回を満たしていれば(Y)、処理部4は、得られたP’のデータおよびI0+nのデータを同じ比率で拡大処理する(ステップS125)。この実施の形態では、最後に得られたP’とI0+nを4/3倍する。その拡大処理が予め定められていた縮小率、すなわち、原画像に対する縮小の程度に至ったか否かを判断する(ステップS126)。所定の縮小率に至っていないと判断すると、拡大処理したI0+nのデータをI0のデータの代わりに用い(ステップS127)、拡大処理したP’のデータをP0の代わりに用いる(ステップS124)。一方、原画像のデータを1/3に縮小した新たな縮小画像SImg’を得る。この1/3に縮小した画像は先に4/3倍したデータとは同じサイズの画像となる。そして、処理部4は、新たな各データを用い、ステップS103からS110までの処理を繰り返し、また、ステップS120からS124までの処理を繰り返す。この繰り返しは、ステップS126で所定の縮小率、たとえば原画像データに対して1/3の縮小率に達していると判定されたときは、ステップS128へ移行する。なお、ステップS125では、得られたP’のデータおよびI0+nのデータを同じ比率で拡大処理しているが、拡大処理するのはP’のデータのみとし、拡大処理したI0+nのデータの代わりに任意の信号データを用い、ステップS125を実行しても良い。その任意の信号データは、たとえばSImg’のデータ等である。但し、ステップS125では、本実施の形態のように得られたP’のデータおよびI0+nのデータを同じ比率で拡大処理した方が、復元処理を経たI0+nのデータを用いるため、良質なPSFを生成できる場合がある。
なお、ステップS125におけるP’のデータの拡大処理は、処理部4が、隣接する信号要素の間にその隣接する信号要素の値の平均値の新たな信号要素のデータを挿入することにより行う。また、I0+nのデータの拡大処理は、処理部4が、隣り合う画素の間に新たな画素を挿入することにより行う。その新たな画素の画素値は、隣り合う画素の画素値を平均した値とする。この拡大処理によって所定の縮小率に達したか否かの判断は、処理部4がステップS126で行う。拡大処理によって所定の縮小率に達したら(Y)、処理部4は、現段階で得られているP’を実寸大に拡大する(ステップS128)。すなわち、現段階で得られているP’は、実寸の1/3のものであるから、処理部4は、現段階で得られているP’を3倍に拡大する。この拡大処理も、処理部4が隣り合う画素の間に新たな画素を挿入することにより行う。その新たな画素の画素値は、隣り合う画素の画素値を平均した値とする。なお、ステップS105,S128の各拡大処理に当っては、上述の補間法以外に、処理部4が、隣り合う画素の間にその隣り合う画素の一の画素の画素値の画素を挿入することにより行う補間法を採用してもよい。
以上の処理によって、本発明の実施の形態に係る変化要因情報のデータの生成法が終了し(ステップS129)、PSFが生成される。このPSFは、処理部4によって要因情報保存部7に記憶され、信号の復元処理の際に用いられる。以上の過程を経て得られたPSFを「G」と表す。
(配分値の妥当性を判断する処理)
上述のステップS107で行う、配分値の妥当性を判断する処理について図を用いて説明する。
図4および図5は、図2におけるステップS107およびS108の処理の詳細を説明するための図である。この処理の基本的な考え方は、次の通りである。この処理は、復元データI0+nに対し一括して行うものではなく、復元データI0+nを構成する信号要素毎に行うものである。この点はステップS103,S105およびS106の信号(画像)全体の処理とは大きく異なる。まず、P0によって一つの信号要素となる一つの画素が影響を受ける範囲の複数の画素のうち、更新によって画素値の変化が大きくなるものがある場合は、その複数の画素の範囲にエッジとなる部分が存すると考える。そのエッジとなる部分は、対応する部分の差分のデータΔに基づく更新量が適切な量となり難い。なぜならば、エッジ部分を跨ぐ2つの画素の画素値は、その違いが大きすぎるため、一方の画素から他方の画素へとエッジ部分を越えて画素値を配分しても、その配分は適切なものとはなりにくいためである。そこで、更新によって画素値の変化が周囲に比べ不自然に大きくなる画素については、更新量の絶対値を小さくすることで、エッジ近傍への更新量を適切なものに近づける。
そのためには、まず、所定の差分のデータΔからある画素の更新量(Dc)を算出する(ステップS201)。そして、変化要因情報Gによって一つの画素が影響を及ぼす範囲の複数の画素(一部の信号要素)およびその一つの画素との集合を参照し、その参照する各々の画素の更新前の画素値(=Ib)の最小値(=Min)、最大値(=Max)および平均値(=Av)を算出する(ステップS202)。なお、この一部の画素(参照する画素)は、単純に隣接する複数の画素、あるいは所定の画素を中心としてそこから所定の距離に含まれる複数の画素としても良い。その所定の距離は、たとえば変化要因情報のデータGを利用して決定される。
次に、参照する画素のうちの一つの画素(=一つの信号要素)の更新後の画素値となるデータ(=Ia)を算出する(ステップS203)。この更新後の画素値Iaは、ある画素に対応した差分のデータδから算出した各画素毎の更新量(Dc)を用いて更新した場合の各画素毎の画素値であり、次の(1)式によって導かれる。
Ia=Ib+Dc ……(1)
次に、修正前の更新量(Dc)の妥当性を判断する。まず、復元データを構成する信号要素のデータとなる更新後の画素値Iaが最小値Min以上であり最大値Max以下である場合には(ステップS204の判断が「Y」(=Yes))、その画素は、周囲の画素との画素値のバランスが自然であり、更新量Dcは、修正せずにそのまま修正後の更新量(Dp)とし、修正値Ia’を得る(ステップS205,S214)。なおステップS214は、修正後の更新量Dpによって修正値Ia’を得るステップである。図5の(A)に示す矢印は、ステップS205およびステップS214の処理を経た状態を概略的に表しており、矢印の黒丸は画素の更新前の画素値Ibを示し、三角の矢示はDpによって更新した後の修正値Ia'を示し、矢印の長さは更新量(Dc=Dp)を示している。左側の矢印は、修正前の更新量Dcの値が正の値の場合、右側の矢印は、修正前の更新量Dcの値が負の値の場合についての一例を示している。
そして、ステップS204の判断が「N」(=No)の場合は、ステップS206へと進む。ここでは、更新後の画素値Iaが最大値Maxを超えてしまっている場合であって更新前の画素値Ibが平均値Av以下である場合には(ステップS206の判断が「Y」(=Yes))、その画素は、周囲の画素との画素値のバランスが不自然であると判断する。そして、更新量Dcは、最大値Maxから更新前の画素値Ibを差し引いた値Dpへと変更される(ステップS207)。この結果、修正値Ia’の画素値は、最大値Maxと等しくなる。図5の(B)に示す矢印は、ステップS207およびステップS214を経た状態を、図5(A)と同様に概略的に表している。左側の矢印は、Dcによって更新した場合のIa、右側の矢印は、Dpによって更新した場合の修正値Ia’を示している。
そして、ステップS206の判断が「N」(=No)の場合は、ステップS208へと進む。ここでは、更新後の画素値Iaが最大値Maxを超えてしまっている場合であって更新前の画素値Ibが平均値Avを越える場合には(ステップS208の判断が「Y」(=Yes))、その画素は、周囲の画素との画素値のバランスが不自然であると判断する。その場合、更新量Dcは、以下の(2)式から得られる値Dpへと変更される(ステップS209)。この結果、修正値Ia’の画素値は、更新後の画素値Iaが最大値Maxをプラス側に超えた分の1/4を最大値Maxに加えた値となる。図5の(C)に示す矢印は、ステップS209およびステップS214を経た状態を、図5(B)と同様に概略的に表している。
Dp=0.25(Ia−Max)+(Max−Ib) …(2)
そして、ステップS208の判断が「N」(=No)の場合は、ステップS210へと進む。ここでは、更新後の画素値Iaが最小値Min未満であって更新前の画素値Ibが平均値Av以下である場合には(ステップS210の判断が「Y」(=Yes))、その画素は、周囲の画素との画素値のバランスが不自然であると判断する。そして、更新量Dcは、以下の(3)式から得られる値Dpへと変更される(ステップS211)。この結果、修正値Ia’の画素値は、更新後の画素値Iaが最小値Minをマイナス側に超えた分の1/4を最小値Minから引いた値となる。図5の(D)に示す矢印は、ステップS211およびステップS214を経た状態を、図5(B)と同様に概略的に表している。
Dp=−(Ib−Min)−0.25(Min−Ia) …(3)
そして、ステップS210の判断が「N」(=No)の場合は、更新後の画素値Iaが最小値Min未満であって更新前の画素値Ibが平均値Avを超えている場合となる(ステップS212)。その場合には、その画素は、周囲の画素との画素値のバランスが不自然である。そして、更新量Dcは、最小値Minから更新前の画素値Ibを差し引いた値Dpへと変更される(ステップS213)。この結果、修正値Ia’の画素値は、最小値Minと等しくなる。図5の(E)に示す矢印は、ステップS213およびステップS214を経た状態を、図5(B)と同様に概略的に表している。
以上のステップS204,S206,S208,S210に示す判断の処理は、所定の基準を満たすか否かを判定する処理となる。なお、このステップS204,S206,S208,S210の判断、およびステップS212の条件を満足するか否かを判断基準としたものの判断の順序は、適宜変更できる。その変更を行ったときも、実際に判断するのは最初から4つめまでである。その4つに該当しなかった場合は、必ず残りの条件に当てはまることとなるため、残りの条件に該当するか否かは、図4におけるステップS212と同様に所定の基準を満たすか否かを判定する処理とはならない。
このように、得られたDpを修正した更新量とし、修正値Ia’が得られることとなる(ステップS214)。この結果、ある画素が更新される(ステップS215)。そして、全ての画素が更新されたか否かの判断を行う(ステップS216)。その判断が「N」(=No)の場合は、参照する画素を変更して(ステップS217)、変更後の参照する画素(他の一部の信号要素)から所定の基準を求めるためおよび次の画素の修正値Ia’を得るためにステップS202に戻り、ステップS202〜217の処理を繰り返す。この処理では、一つの画素の更新量を修正したら、参照する画素を変更して別の一つの画素の更新量を変更している。そして、ステップS216の判断が「Y」(=Yes)の場合は、全ての画素の修正値Ia’を用いて復元データI0+nを修正する(ステップS218)。以上で図2におけるステップS107,108が終了する。
(P’の原点を設定する処理)
上述の図2におけるステップS122で行う、P’の原点を設定する処理について図を用いて説明する。
要因情報保存部7には、上述の図2におけるステップS122の段階のデータが保存される。すなわち、図6に示す信号処理装置1のブレと推定できるデータが要因情報保存部7に保存される。この図6には、図1に示す信号処理装置1の外観が示されている。この信号処理装置1の図に示すXYZの各方向軸を中心とした回転がブレとなるが、特に現れやすいのはXとYの方向軸回りである。図7に示すブレに関するデータは、図6におけるX−Y平面上における座標データの経時変化のデータである。そのデータは、図7に示すX−Y平面で表されるようなブレの軌跡の情報およびその軌跡上の各位置にどの程度の期間とどまっていたかの情報を含む。図7に示すX−Y平面の始点A(X1,Y1)は、撮影開始位置であり、軌跡の終点B(XN,YN)は、撮影終了位置である。
ブレによる画像の劣化は、光エネルギーが1点に集中せずに、光エネルギーが図7に示す軌跡A−B上に分散する現象である。よって分散した光エネルギーを1点に集中させることが、原画像を元画像へと復元することとなる。その光エネルギーを集中させる1点は、自由に決定できる。たとえば図4におけるA点、B点、A−Bの軌跡上またはA−Bの軌跡を外れた点に決定できる。
ここで、分散した光エネルギーを集中させる点を「原点位置」と言うこととし、原点位置は、図7に示すX−Y平面上の点0座標(0x,0y)で表すこととする。また、上述したステップS120で算出したPSFの骨格部をステップS121の処理で強調したデータ(P’)をG(Xn,Yn)で表すこととする。これは、各位置(Xn,Yn)においてどの程度の期間とどまっていたかの情報である「重さ」を示し、(4)式を満たす。(4)式は、光エネルギーを1と正規化して取り扱うことを示す。なお、(Xn,Yn)は、図7に示すX−Y平面上の座標である。
・・・(4)
また、分散した光エネルギーを原点位置である点0へ集中させる移動エネルギーをE(0x,0y)で表すこととする。すると分散したエネルギーを原点位置(0x、0y)に集中させる移動エネルギーは、移動距離と重さの関数で表現することができ、たとえば以下の式(5)(n=1,2,・・・N:Nは分散して広がった領域数)で表わすことができる。
・・・(5)
そして、移動エネルギーE(0x,0y)を最小値とする原点位置(0x,0y)を設定する。この設定は、処理部4で行われる。また、処理部4は、新たに原点位置が設定されたデータを、その設定の前に要因情報保存部7に保存されていたデータに代えて保存する。
また、より移動距離に重きを置く場合は、以下の式(6)を用いることもできる。この(6)式の方が平方根の計算が無く、計算が楽になる利点がある。
・・・(6)
さらに、より計算を楽にするためには、以下の式(7)を用いることもできる。
・・・(7)
(信号復元処理)
次に、以上のように構成された本実施の形態に係る信号処理装置1の処理部4の画像復元処理方法(復元手段)の概要を、図8および図9に基づいて説明する。なお、画像復元処理方法は先に説明したステップS102,S103,S104,S105,S106,S107,S108,S110の処理とほぼ同様であり、繰り返し処理となっている。
ここで、原画像の元画像への復元処理を実行する時期は、撮影用の電源がオフされている時、処理部4が稼働していない時、処理部4の稼働率が低い時等、原画像を撮影した時期から遅らせた時期とすることができる。その場合には、記録部5に保存された原画像データおよび、要因情報保存部7に保存された、その原画像についての伝達関数等の変化要因情報が、それぞれが関連づけられた状態で長期間に渡り保存される。このように、原画像の復元処理を実行する時期を、原画像を撮影した時期から遅らせる利点は、種々の処理を伴う撮影時の処理部4の負担を軽減できることである。
図8中、「I0」は、任意の初期画像であって、処理部4の記録部に予め保存されている画像のデータである。「I0’」は、その初期画像のデータのI0の劣化画像のデータを示し、比較のための比較用データである。「G」は、図2に示す処理で推定された変化要因情報(=劣化要因情報(伝達関数))のデータで、要因情報保存部7に保存されていたものを処理部4が抽出し、処理部4の記録部に保存されるものである。「Img’」は、原画像のデータである。
「δ」は、原画像データImg’と、比較用データI0’との差分のデータである。「k」は、変化要因情報のデータに基づく配分比である。「I0+n」は、初期画像のデータI0に、差分のデータδを変化要因情報のデータGに基づいて配分して新たに生成した復元画像のデータ(復元データ)である。「Img」は、元画像のデータである。ここで、ImgとImg’の関係は、次の(8)式で表されるものとする。
Img’=Img*G ……(8)
ここで、「*」は、重畳積分を表す演算子である。
なお、差分のデータδは、対応する画素の単純な差分でも良い場合もあるが、一般的には、変化要因情報のデータGにより異なり、次の(9)式で表される。
δ=f(Img’,Img,G) …(9)
処理部4の処理ルーチンは、まず、分散した光エネルギーを集中させる原点位置を決定する(ステップS300)。この決定は、既に図2に示すステップS122で行っている。よって、この処理の詳細な説明は省略する。そして、任意の画像データI0を用意する(ステップS301)。この初期画像のデータI0としては、劣化している原画像のデータImg’を用いても良く、また、黒ベタ、白ベタ、灰色ベタ、市松模様等どのような画像のデータを用いても良い。ステップS302で、(8)式のImgの代わりに初期画像となる任意の画像のデータI0を入れ、劣化画像である比較用データI0’を求める。次に、原画像データImg’と比較用データI0’とを比較し、差分のデータδを算出する(ステップS303)。
そして、差分のデータδの各々の絶対値が所定値未満であるか否かを判断する(ステップS304)。ステップS304で差分のデータδが所定値以上であれば、ステップS305で新たな復元画像のデータ(=復元データ)を生成する処理を行う。すなわち、個々の信号要素が得られた個々の差分のデータδを変化要因情報のデータGに基づいて、任意の画像データI0に配分し、新たな復元データI0+nを生成する。
そして、復元データI0+nを生成する際に用いる更新量(配分値)の妥当性を判断し(ステップS306)、復元データI0+nを修正する(ステップS307)。このステップS306およびステップS307の処理は、上述した図2に示すステップS106、S107で行う、配分値の妥当性を判断し修正する処理と同様に行う。よって、この処理の詳細な説明は省略する。
その後、図8のステップS302〜S307を繰り返す。この繰り返しの最中の復元データI0+nは、処理が行われた途中段階の復元データとなる。ステップS304において、各画素の差分のデータδの各々の絶対値が所定値未満となったら、繰り返し処理を終了する。そして、繰り返し処理を終了した時点での復元データI0+nを元画像のデータImgと推定する。すなわち、各画素の差分のデータδの各々の絶対値の最高値または平均値が所定値より小さくなった場合、比較用データI0+n’の元となった復元データI0+nは元画像のデータImgと非常に近似したものとなることから、その復元データI0+nを元画像のデータImgと推定するのである。なお、記録部5には、初期画像のデータI0、変化要因情報のデータG、を記録しておき、必要により処理部4に渡すようにしても良い。
上述した繰り返し処理方法(復元手段)の考え方をまとめると以下のようになる。すなわち、この処理方法においては、処理の解を逆問題としては解かず、合理的な解を求める最適化問題として解くのである。逆問題として解く場合、理論上は可能であるが、現実問題としては困難である。
最適化問題として解く場合において、本実施の形態では、次のような条件を前提としている。
すなわち、
(1)入力に対する出力は、一意に決まる。
(2)出力が同じであれば、入力は同じである。
(3)出力が同じになるように、入力を更新し、その更新量を妥当な値に修正しながら反復処理することにより、解を収束させていく。
このことを換言すれば、図9(A)(B)に示すように、原画像のデータImg’と近似である比較用データI0’(I0+n’)を生成できれば、その生成の元データとなる初期画像のデータI0または復元データI0+nは、元画像のデータImgに近似したものとなる。
なお、この実施の形態では、差分のデータδの判定基準となる値は、各データを8ビット(0〜255)で表した場合に、この実施の形態では「6」としている。すなわち、6より小さい、つまり5以下の時は、処理を終了している。
次に、図8に示す手ブレの復元処理方法(ステップS302,S303,S304,S305,S306,S307の反復処理(復元手段))の詳細を、図10,図11,図12,図13,図14,図15,図16および図17に基づいて説明する。
(手ブレの復元アルゴリズム)
手ブレが無いとき、所定の画素に対応する光エネルギーは、露光時間中、その画素に集中する。また、手ブレがある場合、光エネルギーは、露光時間中にブレた画素に分散する。さらに、露光時間中のブレがわかれば、露光時間中のエネルギーの分散の仕方がわかるため、ブレた画像からブレの無い画像を作ることが可能となる。
以下、簡単のため、横一次元で説明する。画素を左から順にS−1,S,S+1,S+2,S+3,・・・,とし、ある画素Sに注目する。ブレが無いとき、露光時間中のエネルギーは、その画素に集中するため、エネルギーの集中度は「1.0」である。この状態を図10に示す。このときの撮影結果を、図11の表に示す。図11に示すものが、劣化しなかった場合の正しい画像データImgとなる。なお、各データは、8ビット(0〜255)のデータで表している。
露光時間中にブレがあり、露光時間中の50%の時間はS番目の画素に、30%の時間はS+1番目の画素に、20%の時間はS+2番目の画素にそれぞれブレていたとする。エネルギーの分散の仕方は、図12に示す表のとおりとなる。これが変化要因情報のデータGとなる。
露光時間中にブレがあり、露光時間中の50%の時間はS番目の画素に、30%の時間はS+1番目の画素に、20%の時間はS+2番目の画素にそれぞれブレていたとする。エネルギーの分散の仕方は、図12に示す表のとおりとなる。これが変化要因情報のデータGとなる。上述の式(5)における「N」の値は「3」となり、「重み」としての50%、30%、および20%の総和が「1」となる。よって、この変化要因情報G(ここでは、横一次元で考えるため、G(Xn)となる)は、上述の式(4)を満たす。
この図12および式(5)に基づいて、移動エネルギーE(0x,0y)を算出する。ここでは、横一次元で考えるため、移動エネルギーは、E(0x)となる。また、移動距離は、画素一つ分の移動距離を「1」として計算する。すると、分散した光エネルギーを画素「S」に集中させる場合の移動エネルギーは、E(0x)は、以下のように計算され、求められる。
(1×0)+(0×0.5)+(1×0.3)+(2×0.2)=0.7
同様に、分散した光エネルギーを画素「S+1」に集中させる場合の移動エネルギーは、E(0x)は、以下のように計算され、求められる。
(1×0.5)+(0×0.3)+(1×0.2)=0.7
同様に、分散した光エネルギーを画素「S+2」に集中させる場合の移動エネルギーは、E(0x)は、以下のように計算され、求められる。
(2×0.5)+(1×0.3)+(0×0.2)=1.3
以上の結果から、図12の場合は、分散した光エネルギーを画素「S」または「S1」に集中させることで、移動エネルギーを最小値の「0.7」とすることができる。また、図12の代わりに「S=0.45」「S+1=0.3」「S+2=0.25」の場合は、画素「S+1」への移動エネルギーの総和が最も小さくなる。すなわち、画素「S」への移動は「0.8」となり画素「S+1」への移動は「0.7」となり、画素「S+2」への移動が「1.2」となるためである。以下、分散した光エネルギーを移動エネルギーが最も小さい位置、すなわち上述の図12の例で画素「S」へと、集中させる場合の繰り返し処理の詳細について説明する。
ブレは、全ての画素で一様であり、線形問題として把握される。そして、上ブレ(縦ブレ)が無いとすると、ブレの状況は、図13に示す表のとおりとなる。図13中の「ブレ画像」として示されるデータが、劣化している原画像のデータImg’となる。具体的には、たとえば「S−3」の画素の「120」は、ブレ情報である変化要因情報のデータGの「0.5」「0.3」「0.2」の配分比に従い、「S−3」の画素に「60」、「S−2]の画素に「36」、「S−1」の画素に「24」というように分散する。同様に、「S−2」の画素データである「60」は、「S−2」に「30」、「S−1」に「18」、「S」に「12」として分散する。この劣化している原画像データImg’と、図12に示す変化要因情報のデータGから元画像データImgを算出することとなる。
ステップS301に示す任意の画像データI0としては、どのようなものでも採用できるが、この説明に当たっては、原画像データImg’を用いる。すなわち、I0=Img’として処理を開始する。図14の表中に「入力」とされたものが初期画像のデータI0に相当する。このデータI0すなわちImg’と、ステップS302で変化要因情報のデータGとを重畳積分する。すなわち、たとえば、初期画像のデータI0の「S−3」の画素の「60」は、S−3の画素に「30」が、「S−2」の画素に「18」が、「S−1」の画素に「12」がそれぞれ割り振られる。他の画素についても同様に配分され、「出力I0’」として示される比較用データI0’が生成される。このため、ステップS303の差分のデータδは、図14の最下欄に示すようになる。この差分のデータδの絶対値の最高値が所定値、たとえば10未満となるか判断する(ステップS304)、この例では「S−3」の画素の差分のデータδが30であり、ステップS304でNo(=N)となり、ステップS305へ移行する。
差分のデータδの配分は、図15に示すように、たとえば「S−3」の画素データ「30」に、自分の所(=「S−3」の画素)の配分比である0.5をかけた「15」を「S−3」の画素に配分し、また「S−2」の画素のデータ「15」にその「S−2」の画素にきているはずの配分比である0.3をかけた「4.5」を配分し、さらに、「S−1」の画素のデータ「9.2」に、その「S−1」の画素にきているはずの配分比である0.2をかけた「1.84」を配分する。「S−3」の画素に配分された総量(各画素毎の更新量Dc)は、「21.34」となり、この値を図4における初期画像のデータI0である、図4におけるIb(ここでは原画像データImg’を使用)にプラスして、図8における復元データI0+1である、図4における更新後の画素値Iaが算出される。この例では、図15に示すように更新後の画素値Iaは「81.34」となる。このように、差分のデータδを変化要因情報のデータGを使用して、任意の画像のデータI0に配分して、図15中の「次回入力」として示される復元データI0+nを生成する。この場合、第1回目であるため、図15では、I0+1と表している。
この後、図8におけるステップS306にて更新量の妥当性を判断する。具体的には、この復元データI0+1を修正するために、画素毎の更新後の画素値(=Ia)を算出する。この算出は、上述の通り(1)式による。そこで、差分のデータδを各画素に配分する。そして、図15に示すように、各画素ごとに、参照する各々の画素の更新前の画素値(=Ib)の最小値(=Min)、最大値(=Max)および平均値(=Av)を算出する(図4におけるステップS202)。たとえば画素「S−3」は、画素「S−3」、画素「S−2」および画素「S−1」を参照している。よって、図15に示すように、画素「S−3」、画素「S−2」および画素「S−1」の最小値(=Min)、最大値(=Max)および平均値(=Av)を算出する。図に示す例では、画素「S−3」に関しては、最大値が画素「S−1」に「82.00」で、最小値が画素「S−3」の「66.00」となり、平均値は、画素「S−3」「S−2」「S−1」の各値の合計を3で割った値で「69.33」となる。画素「S−2」〜「S+4」についても同様の算出を行う。
そして、IaおよびIbが図4におけるステップS204,S206,S208,S210およびS212のいずれかの条件を満足するのかを判定する。たとえば画素「S−3」のIaは、「Min(60.00)≦Ia(81.34)≦Max(82.00)」の条件を満足するため、図4におけるステップS204の条件を満足する。よって、図15に示すようにステップS205の処理を行い、Dcである更新量「21.34」をそのまま修正後の更新量Dpとして用い、修正値Ia’は、修正前のIaと等しい「81.34」となる。「S−2」〜「S」、「S+2」および「S+3」の更新後の画素値Iaについても同様の修正を行う。この修正値Ia’が復元データI0+nの修正値となる。
たとえば画素「S+1」では、ステップS204、S206の条件を満足せず、ステップS208に移行する。そして、「Ib(121.00)>Av(113.33)」であり、「Ia(130.11)>Max(121.00)」の条件を満足するため、図4におけるステップS208の条件を満足することになる。よって、図15に示すようにステップS209の処理を行い、「2.28」を修正後の更新量Dpとして用い、修正値Ia’は「123.28」となる。画素「S+4」のIaについても同様の修正を行う。このIa’が復元データI0+nの修正値となる。
図16に示すように、この修正された復元データI0+1(Ia')がステップS302の新たな入力画像のデータ(=初期画像のデータI0に代わるもの)になり、ステップS302が実行され、ステップS303へと移行し、新しい差分のデータδを得る。その差分のデータδの大きさをステップS304で判断し、所定値より大きい場合、ステップS305で新しい差分のデータδを前回の修正された復元データI0+1に配分し、新しい復元データI0+2を生成することとなるが、その際に、図15の説明と同様にして新しい復元データI0+2を修正する(図17参照)。たとえば、画素「S−3」、「S」および「S+3」の更新後の画素値Iaについては、上述の図15における画素「S−3」と同様の修正を行う。すなわち、更新後の画素値Iaがそのまま修正値Ia’となる。
また、たとえば画素「S+1」では、ステップS204,S206の条件を、満足せず、ステップS208に移行する。そして「Ib(121.00)>Av(116.15)」であり、「Ia(125.43)>Max(121.00)」の条件を満足するため、図4におけるステップS208の条件を満足することとなる。よって、図17に示すようにステップS209の処理を行い、上述の(2)式による値「1.106」を修正後の更新量Dpとして用い、修正値Ia’は「122.11」となる。画素「S+4」の更新後の画素値Iaについても同様の修正を行う。この修正値Ia’が復元データI0+nの修正値となる。
また、たとえば画素「S−2」では、ステップS204,S206,S208の条件を、満足せず、ステップS210に移行する。そして「Ib(77.30)≦Av(87.67)」であり、「Ia(76.97)<Min(77.30)」の条件を満足するため、図4におけるステップS210の条件を満足することとなる。よって、図17に示すようにステップS211の処理を行い、上述の(3)式による値「−0.082」を修正後の更新量Dpとして用い、修正値Ia’は「77.22」となる。画素「S−1」および「S+2」の更新後の画素値Iaについても同様の修正を行う。この修正値Ia’が復元データI0+nの修正値となる。
その後、修正された復元データI0+2を用いてステップS302を遂行することにより、修正された復元データI0+2から新しい比較用データI0+2 ’が生成される。このように、ステップS302,S303が実行された後、ステップS304へ行き、そこでの判断によりステップS305へ移行する。このような処理を繰り返す。
(本実施の形態によって得られる主な効果)
本実施の形態に係る変化要因情報の生成法の処理(図2)を実行することによって、変化要因情報のデータ(PSF)が未知であっても妥当なPSFを生成でき、実用的な信号復元が可能となる。よって、ブレ等を機械的に測定する速度センサまたは加速度センサをカメラ等の信号処理装置1の構成要素から省略することができる。また、この処理の際に、処理部4が、縮小処理(ステップS102)をすることによって、変化の大きさも縮小されることから、PSFを推定し易くなり、妥当なPSFが生成される。また、この処理の際に、処理部4が、拡大処理(ステップS125)を拡大率を徐々に大きくして繰り返し行うことによって、縮小処理を行って得た良質なPSFに基づいて大きなPSFの推定をすることができる。また、この処理の際に、処理部4が、配分値の妥当性を判断し修正する処理(ステップS107、S108)をすることによって、配分による極端なデータの値の変化を抑制でき、より妥当なPSFが生成される。また、この処理の際に、処理部4が、P’の原点を再設定する処理をすることによって、配分による極端なデータの値の変化を抑制でき、より妥当なPSFが生成される。また、この処理の際に、処理部4が、縮小処理(ステップS102)を実行することによって、変化の大きさも縮小されることから、PSFを推定し易くなり、より妥当なPSFが生成される。
また、この処理の際に、処理部4が、PSFの骨格部の強調をする処理(ステップS121)を行うことによって、ブレに相当する変化の推定に重きを置くPSFを生成できる。また、この処理の際に、処理部4が、PSF初期値をガウシアンディスクに設定することで(ステップS101)、変化がどのようなブレまたはボケを含んでいても、良好なPSFの推定をすることができる。
本実施の形態に係る信号処理装置1は、PSFが未知であっても妥当なPSFを生成でき、実用的な信号復元が可能である。よって、ブレ等を機械的に測定する速度センサまたは加速度センサをカメラ等は、信号処理装置1の構成要素から省略することができる。また、変化要因情報の生成処理の際に、縮小処理(ステップS102)をすることによって、変化の大きさも縮小されることから、PSFを推定し易くなり、妥当なPSFに基づいた実用的な信号復元ができる。また、変化要因情報の生成処理の際に、処理部4が、拡大処理(ステップS125)を拡大率を徐々に大きくして繰り返し行うことによって、縮小処理を行って得た良質なPSFに基づいて大きなPSFの推定をすることができ、そのPSFに基づいた実用的な信号復元ができる。
また、信号処理装置1は、図8に示すステップS302〜ステップS307を繰り返すことで、差分のデータδが徐々に小さくなっていき、所定値より小さくなると、ブレていない元画像データImgが得られる。また、このとき、修正処理(図4,図5)を行っているため、得られる元画像データImgと推定される画像データは、リンギングの発生が軽減され、画像の復元状態が良好なものとなる。また、修正処理(図4,図5)によって、復元データを構成する信号要素のデータのうち、不自然と思われるものを修正し、画素値の大きな変化を抑制しているため、仮に図2に示す処理によって推定される変化要因情報のデータGが信頼性の低いものであったとしても、妥当な画像の復元が可能となる。
(他の形態)
以上、本実施の形態における変化要因情報の生成法および信号処理装置1について説明したが、本発明の要旨を逸脱しない限り種々変更実施可能である。たとえば、変化要因情報の生成法においては、処理部4が、図2に示すステップS103からS108の処理を2回以上繰り返しているが、1回のみとすることができる。さらに、処理部4が、配分値の妥当性を判断し修正する処理(ステップS107、S108)、P’の原点を再設定する処理(ステップS122)、拡大処理(ステップS125)、最終的に初期の画像データ用のPSFのデータと同じ大きさのデータとする拡大処理(ステップS128)およびPSFの骨格部の強調をする処理(ステップS121)の全部または一部は、省略できる。さらに、PSFの初期値は、ガウシアンディスクに設定(ステップS101)せず、任意の値を設定できる。
また、たとえば信号処理装置1における信号復元処理には、図8に示す処理を採用しているが、他の処理、たとえばウィナーフィルターを用いる処理等を採用できる。また、図8に示す処理を採用する場合でも、原点位置を設定する処理(ステップS300)および更新量の妥当性を判断し修正する処理(ステップS306、S307)の双方または一方は、省略することができる。さらに更新量の妥当性を判断し修正する処理(ステップS306、S307)を採用する場合でも、復元データI0+nを修正する方法は、図4および図5に示す方法に限定されない。特に図4に示すステップS204,S206,S208,S210およびS212における場合分け、ステップS205,S207,S209,S211およびS213における差分のデータδを修正する方法は、それぞれ適宜変更することができる。
また、処理部4が、図2に示すステップS103からS108の処理を10回繰り返すこととしており、また、ステップS123において、ステップS103からS122までを繰り返すこととしているが、処理部4の処理速度の状況等によってそれらの回数を増減できる。また、信号処理装置1のユーザがそれらの回数を任意に設定できることとしても良い。さらに、縮小処理(ステップS102)および拡大処理(ステップS125)の画像の大きさの比率、拡大処理(ステップS125)の画像の大きさの比率の変更回数は、復元画像の画質等によってそれらの回数を増減できる。
また、縮小処理(ステップS102)および拡大処理(ステップS125)における縮小・拡大の仕方は、画素の間引き・隣り合う画素の画素値を平均した値の新たな画素の挿入によって行っている。しかし、他の手段、たとえば隣接する複数の画素の平均画素値の画素をその複数の画素の代わりに用いる縮小処理、隣り合う画素の画素値をそのまま新たな画素の画素値としてその新たな画素を挿入することによって拡大処理を行っても良い。さらに、PSFの骨格部の強調をする処理(ステップS121)において、骨格部のデータの値を2倍にしているが、1.5倍、3倍、4倍、または5倍等としても良い。
また、処理部4は、最終的に初期画像用のPSFのデータと同じ大きさのデータとする拡大処理(ステップS128)を行っている。しかしこの処理によって初期画像用のPSFのデータと同じ大きさのデータとする必要はなく、初期画像用のPSFのデータと異なる大きさのデータへと拡大処理することができる。
また、処理部4は、PSFを算出する処理を行い(ステップS120)、その処理は、得られた復元データI0+nと原画像のデータImg’をそれぞれフーリエ変換し、周波数空間での割り算によってPSFの周波数特性を算出し、その周波数特性をフーリエ逆変換することによってPSF(=P)を得るものである。しかし、他の手段によって、得られる復元データI0+nと原画像のデータImg’から新たなPSF(=P)を得る処理を採用できる。
更新量の妥当性を判断し修正する処理(ステップS306、S307)においては、たとえば、参照する画素としては、影響を及ぼす範囲(影響範囲)のもの以外に、その影響範囲を囲む画素一つ分大きくした範囲としたり、修正しようとする画素を中心として所定の距離の範囲としても良い。また、所定の基準としては、参照する画素の最大値、最小値、平均値を利用してのものではなく、最大値と最小値のみを利用し、修正値を最大・最小を超えた分の1/4や1/3の値を最大値や最小値に付加するようにしても良い。また、上限を最大値の1.2倍、下限を最小値の0.8倍とし、その範囲に入れば、修正しないようにしても良い。すなわち、最大値のX倍、最小値のY倍の範囲に更新後の画素値Iaが入れば修正しないようにしても良い。
本実施の形態に係る繰り返し処理では、処理部4は、図2におけるステップS105や図8におけるステップS304の一旦得た画像を再度処理するかの判断では、画像を構成する複数の各画素毎の差分のデータΔ、δの絶対値が全て所定値未満または絶対値の平均値が所定値未満であるか否かを判断し、画像全体の処理を行うか判断している。しかし、所定値との比較の対象を、画像を構成する複数の各画素毎の差分のデータとし、各画素毎に繰り返し処理を停止するか否かを判断するようにしたりしても良い。また、所定値との比較対象を、各画素の差分のデータδの総和、もしくは各画素の差分のデータΔ、δの絶対値の総和、または以上の4つのうちの2つ以上とすることができる。たとえば、各画素毎の差分のデータΔ、δの中で零から最も離れた値と、各画素毎の差分のデータδの総和の値とが、別々の基準を共に満たすか否かを判断するようにしても良い。このように、所定値と比較する値を適宜選択することで、原画像の種類、変化の状態または復元処理の状況に応じて、適切な処理を行うことができる。
上述の実施の形態では、復元対象を画像データとしている。しかし、これらの復元処理の考え方および手法は、あらゆるデジタルデータの復元処理に適用できる。たとえば、デジタルの音声データの復元等への適用が可能である。その適用の結果、リンギングのように一部に不正確な音声データ等が発生することを効率よく抑制でき、また変化要因情報のデータが不正確であっても、妥当な結果が得られる復元処理が可能となる。
また、上述の実施の形態では、信号処理装置1を民生用のカメラとしているが、信号処理装置1は、デジタルカメラ等で撮影した画像のデータを図2、図4、図8および図9等に示す処理の一つまたは複数を実行した上で印刷するプリンタ機器としても良い。また、信号処理装置1は、プリンタ機器に対して図2、図4、図8および図9等に示す処理の一つまたは複数を実行させつつ操作するソフトウェアがインストールされたコンピュータ、さらには図2、図4、図8および図9等に示す処理の一つまたは複数を実行するソフトウェアがインストールされたコンピュータ等としても良い。
また、上述した各処理方法は、プログラム化されても良い。また、プログラム化されたものが記憶媒体、たとえばCD、DVD、USBメモリに入れられ、コンピュータによって読みとり可能とされても良い。この場合、信号処理装置1は、その記憶媒体内のプログラム化されたものが信号処理装置1の外部サーバに入れられ、必要によりダウンロードされ、使用されるようにしても良い。この場合、信号処理装置1は、その記憶媒体内のプログラムをダウンロードする通信手段を持つこととなる。
図2、図4、図8等に示す復元処理方法においては、処理部4で行った処理をソフトウェアで構成しているが、それぞれ、一部の処理を分担して行うようにした部品からなるハードウェアで構成しても良い。また、変化要因情報のデータGとしては、劣化要因情報のデータのみではなく、単に画像を変化させる情報や、劣化とは逆に、画像を良くする情報を含むものとする。
また、処理の反復回数(ステップS109,ステップS123,ステップS304)が信号処理装置1側で自動的にまたは固定的に設定されている場合、その設定された回数をPSFの値(P,P’)や変化要因情報のデータGによって変更するようにしても良い。たとえば、ある画素のデータがブレにより多数の画素に分散している場合は、反復回数を多くし、分散が少ない場合は反復回数を少なくするようにしても良い。
さらに、反復処理中に、差分のデータΔ、δが発散してきたり、エネルギーが移動した後の画像データのエネルギーが小さくならず大きくなってきたら、処理を中止させるようにしても良い。発散しているか否かは、たとえば差分のデータΔ、δの平均値を見てその平均値が前回より大きくなったら発散していると判断する方法を採用できる。また、反復処理中に、入力を異常な値に変更しようとしたときには、処理を中止させるようにしても良い。たとえば8ビットの場合、変更されようとする値が255を超える値であるときには、処理を中止させる。また、反復処理中、新たなデータである入力を異常な値に変更しようとしたとき、その値を使用せず、正常な値とするようにしても良い。たとえば、8ビットの0〜255の中で、255を超える値を入力データとしようとした際は、マックスの値である255として処理するようにする。
また、出力画像となる復元データを生成する際、PSFの値(P,P’)や変化要因情報のデータGによっては、復元させようとする画像の領域外へ出てしまうようなデータが発生する場合がある。このような場合、領域外へはみ出るデータは反対側へ入れる。また、領域外から入ってくるべきデータがある場合は、そのデータは反対側から持ってくるようにするのが好ましい。