(第1の実施の形態)
以下、図面を参照しながら、第1の実施の形態による画像処理装置について説明する。図1は、第1の実施の形態による画像処理装置を含む撮像装置100の概略構成の一例を示すブロック図である。図1に示す撮像装置100は、被写体として補正用被写体20を撮影し、画像を補正するフィルタを算出するための装置である。図1に示すように、撮像装置100は、光学系1、撮像素子2、Analog Front End(AFE)3、画像処理部4、後処理部5、駆動制御装置6、制御装置7、画像メモリ8、表示部9、係数分析部10、及び補間部13を備える。
図1の例では、補正用被写体20には、チャート25が、中心と四隅に配置されている。チャート25は、楔形を放射状に配置した模様であり、シーメンスターと呼ばれる。例えば、光学系1は、レンズ11a、11b、11c、及び絞り12を含む。レンズ11a、11b、11c、及び絞り12は、補正用被写体20などの被写体からの光を撮像素子2の撮像面に集光させて被写体の像を結像する。駆動制御装置6は、レンズ11a、11b、11cの位置や絞り12の絞り度合い等を制御する装置である。なお、光学系1は一例であり、その構成は特定のものに限定されない。
撮像素子2は、光学系1によって集光された被写体からの光を電子信号(アナログ信号)に変換する。撮像素子2は、例えば、Charge−Coupled Device(CCD)/Complementary Metal−Oxide Semiconductor(CMOS)等の二次元撮像素子を含む。撮像素子2は、被写体の像を電子信号(画像信号)に変換してAFE3へ出力する。
AFE3は、撮像画像のアナログ信号をデジタル信号に変換する。AFE3は、例えばAnalog/Digital(A/D)コンバータ31及びタイミングジェネレータ32を含む。タイミングジェネレータ32は、制御装置7からの制御信号に基づいて、撮像素子2の駆動に用いられるタイミングパルスを生成し、撮像素子2及びA/Dコンバータ31へ出力する。A/Dコンバータ31は、タイミングパルスに応じて、アナログ信号をデジタル信号に変換する。
画像処理部4は、AFE3からのデジタル信号の画像を保存して画像処理を行う。画像処理部4は、RAWメモリ41を含む。RAWメモリ41は、例えばA/Dコンバータ31でデジタル信号に変換された画像(RAW画像)を記録する。画像処理部4は、RAW画像に対して、例えば圧縮処理等、所定の処理を施してもよい。所定の処理が施された画像は画像メモリ8に記録される。
後処理部5は、所定の処理を経た画像に対して更に、例えば色調を変化させるなど必要な処理を施して表示画像を生成する。後処理部5は、例えば、所定の処理が施された画像を画像メモリ8から読み出して、表示するための画像を生成する処理を行い、表示部9へ出力する。
画像メモリ8は、所定の処理後の画像を記憶する。表示部9は、例えば、画像を記録するVideo Random Access Memory(VRAM)、及びVRAMの画像を出力するディスプレイを含むことができる。なお、撮像装置100は、表示機能を必ずしも備えなくてもよく、表示部9の替わりに、表示用の画像を記録する記録部(例えば、VRAM等)が設けられてもよい。駆動制御装置6は、光学系1を制御する。制御装置7は、AFE3、及び後処理部5を制御する。
係数分析部10は、チャートが撮影された画像から、各画像位置での解像度を分析し、解像度の異方性を改善するための適切なフィルタデータを決定する。係数分析部10の詳細は後述する。補間部13は、係数分析部10で解析された結果に基づき、補正用被写体20による画像から算出されなかった画像上の点(例えば画素位置)に対応して、補間によりフィルタを算出する。補間により対応するフィルタが算出される点を補間位置ともいう。
フィルタデータは、例えば、デコンボリューションカーネルのように、画像補正のためのフィルタリングに必要なパラメータの集合とすることができる。デコンボリューションカーネルは、具体的には、Point Spread Function(PSF)に応じた円形又は楕円形の被写体の像の分布する領域と、領域における各画素の重みを表すデータで表すことができる。このようなデータをデコンボリューション分布と称する。
図2は、係数分析部10の構成の一例を示すブロック図である。図2に示すように、係数分析部10は、解像度算出部101、フィルタ算出部102、及びフィルタメモリ103を有している。解像度算出部101は、画像の位置に応じて、補正用被写体20におけるチャート25の解像度劣化を少なくとも撮像素子2方向で分析する。
例えば、解像度算出部101は、横軸に1ピクセルあたりのライン数、縦軸に振幅強度をとった場合の両者の関係により解像度の分析を行うようにしてもよい。解像度算出部101は、後述する解像度情報の角度、異方性度、解像度値を算出する。すなわち解像度算出部101は、補正用被写体20の各チャート25に対応する画像における輝度の振幅値について、ある一定閾値(最大振幅の半分程度)で等高線を作って楕円を求める。求められた楕円が解像度情報に対応している。以下、解像度情報に対応する楕円を、解像度情報の楕円ともいう。解像度情報において、角度は、求められた楕円の画像における向きを示す角度である。異方性度は、求められた楕円の楕円率である。解像度値は、楕円の大きさ(短軸または長軸の長さ)である。
なお、求められた解像度情報は、例えば解像度情報の楕円の中心の点に対応する解像度情報、などという。また、解像度情報の楕円の中心点に対応する例えば画素の位置を、解像度情報の算出位置ともいう。
解像度算出部101は、求めた楕円の長軸と短軸の比率として楕円率を算出できる。解像度算出部101は、画像におけるチャート25の位置に基づいて、例えば幾何学的に解像度情報の角度θ1を算出する。例えば、角度θ1は、画像の光軸中心に対応する画像上の点から解像度情報の算出位置の方向として角度θ1を算出する。また、解像度算出部101は、解像度情報の楕円の長軸、短軸から角度θ1を算出することもできる。長軸、短軸から角度θ1を算出した方が、実際のボケ具合に合わせて角度を算出することができる。
解像度算出部101は、解像度情報の角度として、例えば画像の縦方向と、楕円の半径方向との角度を算出すればよい。ここで角度の基準は、画像の縦方向に限定されない。光軸中心は、基本的には画像中心だが、レンズの位置ずれにより中心がずれる場合もある。解像度情報の角度、異方性度、楕円の大きさは、相対的な値でもよい。解像度算出部101は、算出された解像度情報を、算出位置と対応付けて、後述する解像度情報テーブルとして、例えばフィルタメモリ103に記憶させる。
フィルタ算出部102は、この算出された解像度情報からPSFを決定する。このときのPSFの楕円は、解像度情報の楕円とは90度回転した形状となる。フィルタ算出部102は、画像のPSFに応じたフィルタを算出する。フィルタ算出部102が算出するフィルタは、画像を補正するための逆フィルタであるが、以下、単にフィルタという。フィルタ算出部102は、算出されたフィルタを、算出された画像上の位置と関連付け、後述するフィルタテーブルとして例えばフィルタメモリ103に記憶させる。
図3は、補間部13の構成の一例を示すブロック図である。図3に示すように、補間部13は、補間位置特定部35、補間元特定部36、解像度情報補間部37を有している。補間位置特定部35は、解像度算出部101で解像度情報が算出された位置以外の画像上の位置を、補間によるフィルタ算出対象の算出位置(補間位置ともいう)として特定する。補間元特定部36は、補間位置特定部35で決定された補間位置におけるフィルタ算出を行うために利用する複数の補間元位置を特定する。このとき補間元位置は、解像度算出部101で解像度情報を求めたいずれかの算出位置とする。なお、補間位置特定部35、補間元特定部36は、それぞれの位置を特定するためにフィルタメモリ103に記憶された解像度情報を参照することが好ましい。
解像度情報補間部37は、解像度情報の角度、解像度値、異方性度を、補間により算出する。補間の方法には、例えば特許文献4に記載のような、ニアレストネイバ法、バイリニア法、バイキュービック法などの方法を用いることができる。このとき、角度は、画像の縦方向または横方向に対する角度とすることができる。補間部13は、補間された解像度情報を係数分析部10に出力する。係数分析部10は、補間された解像度情報から、上述した方法でフィルタ算出部102によりフィルタを算出し、フィルタメモリ103に記憶させる。
以上のようにして、撮像装置100により、画像上の複数の点におけるそれぞれのフィルタが算出される。算出されたフィルタは、算出位置、または補間位置と対応付けて、例えば係数分析部10に設けられたフィルタメモリ103のフィルタテーブルに保存されるようにしてもよい。
次に、上記のような撮像装置100における解像度劣化の一つの要因について、図4〜6を用いて説明する。図4は、光学系の一例を示す図である。図5は、画像位置に応じた開口の例を示す図である。図4に示す光学系を用いる場合、図5に示すように、光軸中心での開口は円形である。しかし、画角が大きい場合の開口はけられが生じ、画像位置によって楕円となる。開口が狭くなると解像度は劣化するため、開口の形状と、本実施の形態における解像度情報の楕円の形状とは対応している。
図6は、画像位置に応じたボケの方向の一例を示す図である。図4に示す光学系を用いる場合、図6に示すように、開口が狭くなると解像度が劣化するので、ボケは半径方向により劣化する傾向がある。半径方向とは、ここでは光軸中心から画像の端部に向かう方向である。図6において、楕円の中心からの距離の大きさがボケの大きさを示し、楕円の中心から楕円上の点への方向がボケの方向を示している。図6に示したように、光軸中心を中心とする同心円を描いたときに、半径方向のボケが大きい。なお、半径方向に直交する方向を円周方向という。ボケが大きいとは、解像度が相対的に低いことをいう。
次に、本実施の形態における解像度情報に関係する解像度の分析について説明する。上記のように、放射状にエッジが分布するチャート25のような模様の撮影により、解像度の劣化の傾向が詳細に分析できる。
図7は、チャートを用いる場合の解像度を説明するための図である。図7に示す例では、矢印26方向に解像度を計測するために、この方向と垂直な方向に複数データを取得する。図7に示すチャートを用いる場合、チャート25の端部から中心部に向かうほど、ライン幅が狭くなり、単位ピクセル当りのライン数は多くなる。チャート25の中心部は、高周波成分を表す。また、端部から中心部に向かうほど、輝度値の振幅(Intensity)は減少する。
図7に示すチャート25のように、放射状に広がる、例えば楔形形状の被写体を用いることで、方向による解像度(Modulation Transfer Function:MTF)を分析することが可能になる。なお、チャートはシーメンスターに限定されず、空間周波数に対する解像度の変化が計測可能であればよい。
図8は、チャート25で解像度を計測した結果を示す図である。図8は、図7の矢印26に示す方向で解像度を計測したグラフを示す。図8に示す縦軸は輝度値の振幅を示し、横軸は1ピクセル当りのライン数(Line Pair:LP)を示す。この分析では、振幅が中心部へ向かうほど小さくなり、高周波成分(横軸右方向)になるほど劣化していく様子(MTF)を分析できる。
図9は、撮影画像位置による解像度劣化の相違の一例を示す図である。図9に示す例では、チャートを複数枚並べて撮影すると、中央部に対する端部での解像度の劣化を分析できる。図9に示す例では、Dx方向は円周方向、Dy方向は半径方向を示す。Dx方向とDy方向の定義は、以降の図においても同様である。
図10は、チャート25における解像度の異方性を示す図である。図10に示すように、画像端部を含む周辺部では、単に解像度が劣化しているだけでなく、解像度に異方性があることがわかる。すなわち、チャート25では、半径方向のほうが、円周方向よりもボケが大きく、解像度が劣っている。
図11は、図10に示したチャートの解像度分析結果を示す図である。図11に示すように、半径方向の解像度が円周方向の解像度よりも劣化している。これにより、画像端部では、解像度に異方性があることが分かり、その解像度を定量的に測定することが可能である。
図12は、撮影画像中央部のチャートの解像度分析結果を示す図である。ここでのチャートは、例えば図9におけるチャート27である。図12に示すように、半径方向の解像度と、円周方向の解像度とは、それほどの違いはない。よって、画像中央部では、解像度の異方性は見られない。このように、チャート25、27の解像度を比較すると、中央部では、解像度の異方性が少ないが、端部では、異方性がより大きい。
上記のような解像度劣化を含むボケを補正するには、点広がり関数(PSF)を用いて補正する手法がある。PSFは、例えばボケの度合いを表す関数ともいえる。本実施の形態において、PSFは、解像度情報の楕円を90度回転させた楕円として表される。
図13は、PSFの算出方法を説明する図である。図13に示すように、チャート25において、図7に示した輝度値の振幅が同一の値を有する点を結ぶことにより、解像度情報の楕円51が得られる。この楕円51を90度回転させることにより、PSF53が得られる。
ここで、元画像をx、PSFをkとすると、ボケ画像yは、xとkを畳み込みした画像となり、下記の式1で表される。
実際にはノイズnが含まれるが、ここでは説明を簡単にするため省略する。
式1は、フーリエ変換されると、式2になる。
Y(ω)=K(ω)X(ω)・・・(式2)
ここで、ωは、空間周波数である。
次に、フィルタKinvは、単純に求めようとすると、Kの逆数で求められる。
Kinv(ω)=1/K(ω)・・・(式3)
これより、元画像のフーリエ変換X(ω)は、式4で求められ、これを逆フーリエ変換することにより元画像が算出される。
X(ω)=Kinv(ω)Y(ω)・・・(式4)
このようにPSFをフーリエ変換し、逆数によるフィルタ関数(逆フィルタ)を算出する際に、空間周波数での割り算を行うため、高周波領域でゼロ割が生じてしまう場合がある。ゼロ割とは、“0”又は“0”に近い値で割り算することである。高周波でK(ω)が“0”に近いと逆数が大きくなりすぎ、高周波のノイズが強調されてしまう。
図14は、PSFをフーリエ変換したときの特性例を示す図である。図14において、横軸は周波数ωであり、縦軸はK(ω)を示している。図14に示すように、K(ω)は、高周波では“0”に近くなる。このように、K(ω)が“0”に近くなると、Kinv(ω)では、高周波でのノイズが拡大されてしまう。そこで、この高周波でのノイズを低減するために、式5のように、分母に補正項を挿入して高周波での強調を防ぐ。
Kinv(ω)=1/(K(ω)+λ)・・・(式5)
フィルタは、複素数なので、共役複素数を用いて表す。
ここで、PSFが楕円の場合について考える。図15は、楕円のPSFの一例を示す図である。図15に示す例では、Dx方向よりもDy方向の方が、解像度が悪いことを示す。つまり、Dy方向の方が、Dx方向よりも解像度が劣化している。
楕円のPSFを、k(r,θ)で表す。ここで、rは半径を表し、θは方向を表す。このように、楕円のPSFは、半径rと方向θの関数として表される。楕円のPSFをフーリエ変換すると、K(ω,θ)=fk(r,θ)となる。fは、フーリエ変換を表す。例えば、フーリエ変換後のK(ω,θ)は、空間周波数ωと方向θの関数である。
図16は、楕円のPSFをフーリエ変換した図である。図16において、横軸は周波数ωであり、縦軸はK(ω,θ)を示している。図16に示すように、Dx方向と、Dy方向とでは、解像度の特性が異なることが分かる。
図17は、K(ω,θ)の逆数を示す図である。図17において、横軸は周波数ωであり、縦軸はKinv(ω,θ)を示している。Kinv(ω,θ)は、下記の式7で表される。Kinv(ω,θ)では、例えば高周波では分母が“0”に近いので高周波でのノイズが拡大されてしまう。
Kinv(ω,θ)=1/K(ω,θ)・・・(式7)
そこで、この高周波でのノイズを低減するために、分母に補正項を挿入して高周波での強調を防ぐ。式8は、高周波のノイズを低減するフィルタを表す。
図18は、式8で表されるような、一定値を分母に足した場合のフィルタの一例を示す図である。図19は、高周波ほどゲインを落とす場合のフィルタの一例を示す図である。本実施の形態では、図18や図19に示すように、周波数成分ごとに重みを加えてノイズを低減することが好ましい。
以上のように、例えば、撮像装置100は、補正用被写体20を撮影することにより、5つのチャート25、27等の中心の位置におけるフィルタを求める。図20は、チャートに基づきフィルタを算出した例を示す図である。図20に示すように、チャート25、28に対応してそれぞれフィルタ52、54が算出されている。
フィルタ52、54では、フィルタの強度を白黒で表しており、白いほうが強度が強く、黒いほうが強度が小さい。フィルタ52、54は、それぞれ半径方向と円周方向に関して異方性を有していることが、図の濃淡で示されている。すなわち、フィルタ52、54は、半径方向の強度差が大きくなっており、解像度劣化が大きい半径方向の解像度を改善するようなフィルタとなっている。また、フィルタ52、54は、楕円形状に相当した強度の形状となっている。すなわち、フィルタにはチャート測定により得られた解像度情報が反映されている。
図21は、9個のチャートから9個のフィルタを算出した例を示す図である。図21に示すように、補正用画像55は、9個のチャートを有している。上述したように、それぞれのチャートについてMTFを求めることにより、解像度情報が得られる。解像度情報例57は、解像度情報の楕円をチャートの位置に応じて示した例である。解像度情報例57は、それぞれのチャートに対応する解像度情報の楕円61、64、65などを示している。
フィルタ70は、解像度情報例57の楕円61、64などを90度回転させたPSFに基づき算出されたフィルタを示している。フィルタ70は、9個のチャートに対応する9個のフィルタ71−79を有している。
図21のフィルタ70においては、強度を白黒で表しており、白に近い方がフィルタ強度は強く、黒に近い方が強度は小さい。また、一つのフィルタでは、強度差が大きいほうが、大きな解像度劣化を改善するフィルタとなっている。また、フィルタの強度分布と解像度情報の楕円の形状とは互いに対応している。
フィルタ71−79は、それぞれの解像度が悪い方向を改善する方向に設計されている。一般的には半径方向の解像度劣化が大きいので、半径方向の解像度を改善するようなフィルタ特性となる。また、補正用画像55の周辺にいくほど振幅強度が強い傾向のフィルタとなっている。解像度情報の楕円が大きいほど、フィルタ強度は強い傾向である。
しかしながら、上記の方法では一つのチャートから算出されるフィルタは一つであるから、チャート数が少ない場合は、情報量が少ない。そこで、例えば、チャートから算出されたフィルタに基づき補間によりフィルタを算出する処理を行い、より多くのフィルタによって画像を補正する方法が考えられる。
図22は、フィルタの算出位置の配置例を示す図である。図22に示すように、フィルタ算出位置配置例59では、9個のフィルタ算出位置67、68などが示されている。フィルタ算出位置配置例80では、108個のフィルタ算出位置81、83等が示されている。このように、フィルタの算出位置を増加させる。
図23は、フィルタの補間処理の比較例を示す図である。フィルタ70は9個のフィルタの算出位置に対して算出されたフィルタ71−79を示している。フィルタ算出例85は、補間処理により、108個のフィルタの算出位置に対して算出されたフィルタを示している。なお、フィルタ71−79は、それぞれ有限個の要素から構成されている。フィルタ算出例85は、比較のため、フィルタ71とフィルタ74との有限個の要素同士を補間することにより算出した108個のフィルタの例を示している。
図24は、図23に示したフィルタ71とフィルタ74との間の位置のフィルタを補間により算出する比較例を示している。図24に示すように、フィルタ71とフィルタ74から、フィルタ86が生成される。フィルタ86は、フィルタ71とフィルタ74との有限個の要素同士を補間することにより算出されているとする。このとき、算出されたフィルタ86の算出位置に基づく半径方向は、矢印87の方向である。すなわち、フィルタ86に対応する算出位置では、矢印87の方向が、解像度の異方性を示す方向である。しかし、要素同士の補間により算出されたフィルタ86の異方性を示す方向は、矢印88の方向となっており、実際の異方性を示す方向とずれてしまっている。このように、フィルタ71がフィルタ74に比べて強度が大きいので、フィルタ74の解像度情報が欠落し、フィルタ71の解像度情報が優先して残ってしまう。
図25は、フィルタ71と、フィルタ75との間の位置のフィルタを補間により算出する比較例を示している。図25は、異方性の方向は同じだが、強度差が大きいフィルタ71とフィルタ75とを補間する例である。図25では、フィルタの形状として、それぞれフィルタに対応する解像度情報の楕円を表している。図25に示すように、異方性の方向が同じフィルタを用いて補間を行う場合、解像度情報の楕円の形状は、強度の大きいフィルタ71が優先されてしまい、フィルタ75の情報が欠落した形になってしまう。上記比較例の、フィルタの要素同士を補間する例のように補間の際にデータが欠落してしまうと、解像度の悪い方向を改善するという効果が低下してしまう。
図26は、要素同士の補間によるフィルタ算出の比較例をまとめた図である。図26に示すように、解像度情報の楕円61、64からそれぞれフィルタ71、74を算出し、要素同士を補間すると、フィルタ71の影響を強く受けたフィルタ86が算出されてしまう。
図27は、算出されたフィルタ86を回転することにより、フィルタの補間を行う比較例を示す図である。図27に示すように、フィルタ86は有限要素のフィルタであるため、情報の欠落が生ずると共に、解像度情報の楕円の異方性度を算出できない。
図28は、本実施の形態における補間を説明する図である。図28に示すように、本実施の形態においては、補間部13は、解像度情報の楕円61、楕円64の形状に基づき、異方性度、解像度値、角度を補間する。これにより、補間位置における解像度情報の楕円68が算出される。係数分析部10は、算出された解像度情報に基づきPSFを算出し、例えば、フィルタ91を求める。
このとき、解像度情報の楕円61、楕円64から楕円68を補間により算出する際には、例えば、解像度情報補間部37は、楕円61の長軸91、楕円64の長軸93の例えば、画像の水平方向に対する角度を算出する。そして解像度情報補間部37は、算出された角度と、それぞれの算出位置、及び楕円68の算出位置に基づき、楕円68の角度を補間するようにしてもよい。
図29は、本実施の形態によるフィルタの補間を説明する図である。図29に示すように、解像度情報例57は、補正用画像55に基づき算出された各位置での解像度情報の楕円61、62、64、65等を示している。
解像度情報補間例99は、解像度情報例57に基づき補間された、例えば楕円68で表されるような補間された解像度情報を示している。解像度情報補間例99には、一部分の楕円のみ表示しているが、全面に亘り同様に補間を行って楕円が算出される。フィルタ算出例109は、解像度情報補間例99における解像度情報に基づき算出されたフィルタの例を示している。ここでは、フィルタの値の大小は輝度で表されている。図29の例では、9個の解像度情報から、108個のフィルタが算出されている。
図30は、フィルタテーブルの一例を示す図である。図30に示すように、フィルタテーブル125は、フィルタ算出位置と、フィルタとが対応付けられたテーブルである。フィルタテーブル125には、補正用画像55に基づき算出されたフィルタを記憶させる。さらに、補正用画像55に基づき算出された解像度情報に基づき補間された解像度情報から算出されたフィルタを記憶させるようにしてもよい。なお、算出されたフィルタは、例えば、算出位置を含む領域の画像を補正するために用いる。算出位置を含む領域は、例えば、算出位置を中央部に含む長方形の領域などとすることができる。
図31は、解像度テーブルの一例を示す図である。解像度テーブル127は、解像度情報算出位置と、算出された解像度情報の解像度値η、異方性μ、角度θとを関連付けられたテーブルである。
図32は、フィルタ算出例の比較の一例を示す図である。図32において、フィルタ算出例85は、上述の図23〜図27のように、フィルタの要素同士を補間することにより算出した、本実施の形態の算出方法とは異なる比較例である。それに対して、フィルタ算出例109は、解像度情報を補間して、補間された解像度情報に基づきフィルタを算出した本実施の形態による算出例である。
図32に示すように、元の9個だけのフィルタからフィルタの要素の補間で算出したフィルタ算出例85では、元の9個だけのサンプリング位置での角度情報が残ってしまっており、精度が悪い。しかし、フィルタ算出例109のように、それぞれのフィルタの算出位置で解像度情報の角度を算出してフィルタ係数を算出することで、精度よく異方性の解像度劣化を補正できる。
このように、フィルタ算出例85では、それぞれのフィルタ算出位置での解像度情報に基づいていないので、精度よく解像度の劣化を補正できない。それに対して、フィルタ算出例109では、それぞれの算出位置において解像度情報を算出しているので、精度よく解像度の異方性を改善することができる。
以下、フローチャートを参照しながら、本実施の形態による画像処理方法についてさらに説明する。図33は、撮像装置100の全体的な処理を示すフローチャートである。以下の処理は、図1から図38に示した各機能が行うこととして説明する。
図33に示すように、係数分析部10の解像度算出部101は、後処理部5から例えば、補正用被写体20を撮影した画像を読み込む(S131)。解像度算出部101は、補正用画像55等から、例えばチャート25等のチャート部分を取り出す(S132)。解像度算出部101は、取り出したチャート部分の画像に基づき、解像度情報を算出し、例えばフィルタメモリ103の解像度テーブル127に記憶させる(S133)。
補間部13は、解像度算出部101で算出された解像度情報を解像度情報テーブル127から読み出し、補間処理を行う(S134)。補間処理の詳細については後述する。さらに、補間部13は、補間処理を行った解像度情報を係数分析部10に出力する。係数分析部10では、補間された解像度情報を解像度情報テーブル127に記憶させるようにしてもよい。係数分析部10では、フィルタ算出部102が、解像度情報テーブル127に記憶された解像度情報に基づきPSFを算出し、フィルタのフィルタデータを求める(S135)。
図34は、補間部13における補間処理を示すフローチャートである。図34に示すように、補間部13において補間位置特定部35は、補間によりフィルタデータを算出する補間位置となるフィルタ算出位置を特定する(S141)。補間元特定部36は、特定された補間位置に基づき、既に算出された解像度情報に対応する算出位置から補間に用いる解像度情報に対応する補間元位置を特定する(S142)。このとき補間元特定部36は、解像度情報テーブル127から、特定したい値に対応する解像度情報を読み出す。
解像度情報補間部37は、所定の方法により読み出した解像度情報に基づき特定された位置の解像度を算出する補間処理を行う(S143)。解像度情報補間部37は、算出された解像度情報を係数分析部10に出力する。
以上説明したように、第1の実施の形態による撮像装置100によれば、ある数のチャートを有する補正用被写体20を撮影した画像に基づき、ある数より多くの画像補正用のフィルタが補間により算出される。補間する場合には、実際に撮像装置100で撮影された画像のチャートの位置に対応する算出位置におけるボケの程度を表す解像度情報が用いられる。撮像装置100は、補間された解像度情報に基づき、補間による算出位置のフィルタを算出する。
以上のように第1の実施の形態による撮像装置100は、補正用被写体20におけるチャートの位置以外の算出位置におけるボケの度合いを示す解像度情報を、補間により算出する。これにより、元のチャートの数よりも多くの算出位置におけるフィルタデータが算出される。このとき、算出されるフィルタデータには、解像度の異方性を示す情報が反映される。本実施の形態においては、それぞれの算出位置において解像度情報を算出しているので、精度よく解像度の異方性を改善するフィルタが生成できる。よって、撮像装置100によれば、撮影画像において、精度よく異方性のある解像度劣化を補正できるフィルタを算出することができる。
このとき、解像度情報は、補正用被写体20を撮影した画像から算出されるので、例えば、画像の周縁部などの劣化を、光学系のレンズ面形状、厚さ、硝材などのデータを所定の形式で記述したレンズデータを基に算出する必要がない。さらに、実際の画像に基づいて補正用のフィルタを算出するので、レンズの製造誤差、撮影条件によって、実際に得られる周縁部の劣化がレンズデータから得られる結果とは異なる様な場合にも、精度よく補正を行うフィルタとすることができる。
本実施の形態では、撮像装置100で解像度を測定するために十分な大きさのチャートを撮影し、撮影された画像に基づき、元のチャート数より多くの算出位置でのフィルタを算出する。そのため、多くの位置でのフィルタを得るために多くのチャートを並べる必要がなく、画像から解像度を算出する際に、チャートが小さすぎて算出が困難という事態が回避される。また、大きなチャートを動かしながら撮影するなど、撮像装置以外の駆動機構などは必要としない。
補間によりフィルタ算出を行う際には、解像度情報を補間しているため、例えばブロック毎に同一のフィルタを用いる例などのように、ブロックの境界で段差が生じることはない。また、フィルタの要素同士を補間する場合に生じるような、より強度の強いほうのフィルタに影響され、解像度劣化の角度情報が適正に補間されないフィルタが算出されてしまうという問題も回避される。
このように、チャートを撮影した画像に基づきボケの状態を算出し、ボケの状態を示す解像度情報を補間した結果に基づき画像補正用のフィルタを算出するので、半径方向の解像度劣化が大きいという解像度の異方性を、精度よく改善することが可能になる。
(第1の実施の形態の変形例)
以下、第1の実施の形態による撮像装置100の変形例について説明する。本変形例において、第1の実施の形態と同様の構成及び動作には同一符号を付し、重複説明を省略する。
本変形例は、解像度情報の補間処理における変形例である。本変形例における撮像装置は、撮像装置100において、補間部13に変えて補間部14を有する。図35は、本変形例による補間部14の構成の一例を示すブロック図である。補間部14は、補間部13の解像度情報補間部37に代えて、楕円形状補間部38、角度算出部39を有している。楕円形状補間部38は、解像度情報のうちの、解像度値及び異方性度を補間する。角度算出部39が、解像度情報の楕円の角度を、補間ではなく幾何学的に求める点で、本変形例は、第1の実施の形態とは相違している。
図36、図37は、本変形例による角度算出方法を説明する図である。図36に示すように、画像96は、9つのチャートを有する画像である。画像96において、光軸の中心は、点98と対応しているとする。このとき、算出位置97における解像度情報の角度を算出する場合について説明する。算出位置97は、画像96の左上のチャートに対応する位置である。距離rは、点98と、算出位置97との距離を表している。また、画像96において、点98を原点とする算出位置97の座標(水平方向及び垂直方向の距離)を(dx、dy)と表している。このとき、算出位置97に対応する半径方向の角度θは、下記の式9で表される。
θ=tan−1(dx/dy)・・・(式9)
図37に示すように、例えば算出位置を全部で108個にする場合にも、例えば、算出位置111における解像度情報の角度θ1、算出位置113における角度θ2は、中心117について同心円を描いたときの半径方向に対応する角度とすることができる。よって、それぞれの算出点の座標を特定することにより、式9を用いて解像度情報の角度を幾何学的に算出することができる。
以上の処理により解像度情報の角度が算出される。係数分析部10は、上記のように算出された角度と第1の実施の形態において説明した補間により算出された解像度値と異方性度とを含む解像度情報に基づきPSFを算出し、PSFに基づきフィルタデータを算出する。
以上説明したように、第1の実施の形態の変形例によれば、解像度情報を補間により求める際に、算出された解像度情報における楕円の角度と算出位置の位置関係とから角度を補間するのではなく、画像における補間位置の座標から求めることができる。なお、解像度値は補間で求めてもよいし、中心からの距離に応じて求めてもよい。また、中心付近はフィルタの強度“0”(補正を行わない)としてもよい。
なお、上記第1の実施の形態及び変形例において、2個の解像度情報に基づき補間を行う例について説明したが、例えば4個など他の数の解像度情報を用いることもできる。また、後述するように、補正用のフィルタの算出を、撮像装置100とは別の、例えば標準的なコンピュータで実行することも可能である。
(第2の実施の形態)
次に、第2の実施の形態による撮像装置について説明する。本実施の形態において、第1の実施の形態またはその変形例と同様の構成及び動作には同一符号を付し、重複説明を省略する。第2の実施の形態は、例えば、第1の実施の形態またはその変形例により算出されるフィルタにより画像補正を行う場合の実施の形態である。
図38は、例えば、第1の実施の形態による撮像装置100を用いて生成されたフィルタを用いて画像を補正する撮像装置200の概略構成の一例を示すブロック図である。図38において、図1の撮像装置100と同様の構成は、同一符号を付し、重複説明を省略する。撮像装置200は、撮像装置100の画像処理部4に代えて画像処理部15を有している。
画像処理部15は、RAWメモリ41、フィルタ制御部43、及びフィルタ処理部45を備えている。フィルタ制御部43は、例えば、撮像装置100で作成されたフィルタテーブル125を保持する。フィルタ制御部43は、フィルタテーブル125を参照して、処理対象画像の位置に対応するフィルタを特定し、そのフィルタをフィルタ処理部45に出力する。つまり、フィルタ制御部43は、処理対象画像の各位置に対応する各フィルタをフィルタ処理部45に出力する。フィルタ処理部45は、フィルタ制御部43から取得したフィルタを用いて、対応する画像位置でフィルタリングを実行する。なお、算出されたフィルタは、例えば、算出位置を含む領域の画像を補正するために用いる。よって、対応する画像位置は、算出位置を含む領域における各画素位置となる。このように、撮像装置200は、例えば、撮像装置100で算出されたそれぞれの算出位置に応じて算出されたフィルタにより、算出位置を含む各領域を補正することにより、全体の画像を復元する。
上記のような構成により撮像装置200は、第1の実施の形態またはその変形例により生成されたフィルタにより画像を補正して出力することができる。これにより、画像の各位置で異なる解像度の異方性を改善しつつ画質を向上させることができる。よって、撮像装置200によれば、撮影画像において、精度よく異方性のある解像度劣化を補正することができる。
なお、撮像装置100は、例えば撮像装置200の較正を行なう際の機能とすることができる。また、撮像装置200において、例えば、フィルタ制御部43に、第1の実施の形態による係数分析部10及び補間部13の機能を持たせ、フィルタテーブル125を生成するような形態も可能である。
(第3の実施の形態)
次に、第3の実施の形態による撮像装置について説明する。本実施の形態において、第1の実施の形態と同様の構成及び動作には同一符号を付し、重複説明を省略する。第3の実施の形態は、第1の実施の形態及びその変形例の係数分析に関する別の形態である。
図39は、第3の実施の形態による係数分析部11の構成の一例を示すブロック図である。第3の実施の形態による撮像装置は、撮像装置100の係数分析部10に代えてこの係数分析部11を備えている。係数分析部11は、解像度算出部101、フィルタメモリ103、フィルタ算出部104を備えている。フィルタ算出部104は、調整部121、画像補正部122、係数決定部123を備えている。
解像度算出部101は、例えば、放射状の模様を有する被写体(補正用被写体20等)が撮像された画像の解像度劣化を少なくとも2方向で分析する。このとき解像度算出部101は、上述のように解像度情報を算出する。これにより、少なくとも撮像素子2方向の解像度異方性が分析される。フィルタ算出部104は、解像度算出部101で解析された解像度情報に基づき、フィルタデータを算出する。調整部121は、方向に依存しない重み係数εと、方向に依存する重み係数γを調整し、画像補正部122に出力する。画像補正部122は、調整部121で算出されたフィルタデータにより画像を補正する。画像補正部122は、補正後の画像を解像度算出部101に出力し、解像度算出部101では、補正後の画像について上述の処理を行う。
係数決定部123は、補正後の画像に対する解像度分析結果に基づいて、2つの方向の解像度劣化の差が小さくなるように重み係数を決定する。係数決定部123は、様々な重み係数により補正された画像の分析結果を保持し、例えば、所定の振幅強度において、空間周波数の値の差分が最小となるように、重み係数ε、γを決定する。
以下、係数分析部11で算出されるフィルタについて説明する。フィルタ算出部104では、解像度の異方性を改善するフィルタを算出する。以下、解像度の異方性を改善する、例えば、解像度の悪い方向の調整を行うフィルタの算出手順について説明する。
式1で示したように、元画像xとPSF:k、ボケ画像yを考える。この元画像xを求めるときに、逆問題として式10が最小となれば、元画像に近い画像が得られる。
通常は、逆問題を解くときに何らかの正則化項が施される。よって、正則化項を加算し、式11から逆問題を解く。
今回の問題では、方向性を必要とするから、画像の横(水平)方向(x方向)および縦(垂直)方向(y方向)の微分項を正則化項として追加する。
ε:重み係数
dm,dn:行列方向の微分フィルタ
式12が最小となるには、式12をxで偏微分した結果を“0”とすればよく、フーリエ変換して、X(ω)について解くと以下の式13が得られる。
X(ω)=K(ω)Y(ω)/(K(ω)2+ε{Dm(ω)2+Dn(ω)2})
・・・(式13)
X(ω)、Y(ω)、K(ω)、Dm(ω)、Dn(ω)は、それぞれx、y、k、dm、dnのフーリエ変換を表す。
周波数領域でのフィルタKinv(ω)は、式14を満たす。
X(ω)=Kinv(ω)Y(ω)・・・(式14)
よって、フィルタKinv(ω)は、次の式15を満たす。
Kinv(ω)=K(ω)/(K(ω)2+ε{Dm(ω)2+Dn(ω)2})
・・・(式15)
式15は、共役複素数を用いると式16となる。
本実施の形態においては、解像度の悪い方向を調整するため、回転行列を用いて角度θ方向に微分係数の軸を回転させる。
Dx(ω、θ)=Dm(ω)cosθ―Dn(ω)sinθ・・・(式17)
Dy(ω、θ)=Dm(ω)sinθ―Dn(ω)cosθ・・・(式18)
上記のように、回転行列を用いることで、方向性を持たせることができる。式17、式18によれば、Dn方向はθ回転されてDy方向となり、Dm方向は、θ回転されてDx方向となる。
ここで、楕円PSFをk(r,θ)、フーリエ変換後の楕円PSFをK(ω,θ)=fk(r,θ)とする。式16に、式17、式18及びK(ω,θ)を代入するとともに、方向による重みγを設定すると、式19が成り立つ。
γ:フィルタの方向による重み係数
ε:全体の重み係数
この式19により、各実施例で用いるフィルタの方向性の重み調整を施すことが可能となる。例えば、係数分析部11は、解像度の悪い方向(Dy方向)の重み係数γを調整する。例えば、重み係数γを小さくすることで、解像度の悪い半径方向の解像度を改善することができる。このように、解像度の異方性を、重み係数の調整により改善することができる。
以下、係数決定部123による処理についてさらに説明する。図40、図41は、重み係数の決定処理の一例を説明する図である。図40、図41において、横軸は解像度、縦軸は振幅強度を示す。図40に示すように、係数決定部123は、所定振幅強度(閾値1)において、空間周波数の差が小さくなるよう重み係数を決定する(決定処理1)。係数決定部123は、図41に示すように、所定の空間周波数において、振幅強度の差が最小となるように、重み係数εとγを決定してもよい(決定処理2)。
なお、閾値1、閾値2は、複数設定してもよく、係数決定部123は、各閾値での差分の二乗和が最小となるように重み係数を決定してもよい。なお、係数決定部123は、所定の差分が予め設定された閾値以下となるように重み係数を決定してもよい。この閾値は、事前の実験等により設定されればよい。
また、係数決定部123は、画像中心部での2方向の解像度の差分二乗和と、画像中心部とは異なる画像周辺部での2方向の解像度の差分二乗和との差が所定値以下となるように重み係数を決定してもよい。また、係数決定部123は、画像中心部と画像周辺部との解像度の差分二乗和が最小となるように重み係数を決定してもよい。これにより、解像度の異方性を低減する際、画像中央部の解像度と画像周辺部の解像度を同様にすることで、画像全体の解像度が同様になり、画質の向上が図れる。係数決定部123による最小化の判断は、最小化関数を用いて算出してもよい。最小化関数としては、例えば、シンプレックスサーチ法や、最急降下法、共役勾配法などがある。
上記のように、フィルタ算出部104は、重み係数を変更して調整し、調整後の重み係数で逆フィルタを求め、求めた逆フィルタで画像を補正し、補正後の画像の解像度分析結果に基づいて、最適な重み係数を決定する。最適な重み係数が決定されるまで、重み係数の調整、逆フィルタの算出、フィルタリングによる補正、解像度分析の処理が繰り返される。
図42、図43は、第3の実施の形態による画像補正後の解像度の分析結果を示す図である。図42、図43において、横軸は解像度、縦軸は振幅強度を示している。図42に示す例では、γ=1/300である。図42に示すように、Dx、Dy方向共に解像度が改善し、さらに、各方向の差が小さくなっている。よって、解像度の異方性を改善することができている。
図43は、γ=1とした場合の画像補正後の解像度の分析結果を示している。図43に示す分析結果は、重み係数により解像度の異方性を補正していないフィルタを用いた場合の結果である。図43に示すように、各方向で解像度は改善しているが、その差が大きくなっており、解像度の異方性は、図42の例ほど改善されていない。
以下、第3の実施の形態による撮像装置の動作について、フローチャートを参照しながら説明する。第3の実施の形態による撮像装置の全体的な動作は、図33を参照しながら説明した動作と同様である。
図44、図45は、第3の実施の形態によるフィルタ算出の処理を示すフローチャートである。以下の処理は、図39に示した各機能が行うこととして説明する。なお、フィルタ算出処理は、図1のS135の処理に相当する。
図44に示すように、フィルタ算出部104は、まず、重み係数ε、γの初期値を設定する(S151)。調整部121、画像補正部122は、フィルタデータの最適化を行う(S152)。係数決定部123は、フィルタデータを決定する(S153)。なお、決定されたフィルタデータは、フィルタメモリ103に記憶されることが好ましい。この処理は、上述のように、最適な重み係数が決定されるまで繰り返されることが好ましい。
図45に示すように、画像補正部122は、まず算出されたフィルタを調整部121から取得する(S161)。画像補正部122は、取得したフィルタにより画像を補正する(S162)。解像度算出部101は、補正された画像において、解像度情報を算出する(S163)。調整部121は、算出された解像度を、閾値と比較する(S164)。調整部121は、解像度が収束しているか否か判断する(S165)。
解像度が収束していると判断される場合には(S165:YES)、図44のS152に戻って処理を進める。収束していると判断されない場合には(S165:NO)、S161に戻って処理を繰り返す。なお、上記の処理は、1つの算出位置に関するフィルタ算出を説明したものであり、上記処理を全ての算出位置について繰り返すことにより、画像全体の複数のフィルタが算出される。
第3の実施の形態においては、上記のようにしてフィルタが算出されるが、解像度算出部101による解像度情報の算出は、第1の実施の形態及び変形例と同様に、解像度情報を補間する方法により行われる。角度の算出方法については、第1の実施の形態または変形例のいずれの方法も適用が可能である。
第3の実施の形態においては、フィルタ算出の際、それぞれの位置での角度以外の情報、例えば、解像度値、異方性度、重み係数等は、解像度情報を補間することで算出する。補間により差出された各値は、例えば幾何学的に算出された角度とともに、それぞれの位置でのフィルタ算出に用いられる。算出された全ての算出位置でのフィルタにより、画像の補正を行う。
以上説明したように、第3の実施の形態によれば、第1の実施の形態による画像処理による効果に加え、フィルタ算出のための重み係数を導入することにより、解像度の異方性をより改善することが可能となる。
(第4の実施の形態)
次に、第4の実施の形態による撮像装置について説明する。本実施の形態において、第1の実施の形態から第3の実施の形態と同様の構成及び動作には同一符号を付し、重複説明を省略する。第4の実施の形態は、第1から第3の実施の形態及び変形例の解像度情報算出に関する別の形態である。
第1から第3の実施の形態及び変形例の解像度情報算出においては、画像の中心と、解像度の異方性が最も少ない点とが一致している例について説明した。本実施の形態は、ボケの状態が画像の中心に対して非対称の場合の例である。
図46は、ボケが画像の中心に対して非対称の場合を示す図である。図46に示すように、画像170では、解像度情報を示す図形173、174、177、179は、画像の中心の図形175に対して対称ではない。ここでは、最もボケが小さい、ボケの中心座標となる点は、点172となっている。また、図46の左側の図形174、177の方が、右側の図形173、179よりも大きい。これは、画像170では、図の左側のほうがボケが大きいことを示している。このように、ボケの度合いが左右非対称な場合には、解像度情報における解像度値の逆比で中心を設定することもできる。
図47は、ボケが非対称な場合の角度算出方法の一例を示す図である。図47に示すように、ボケの中心座標が点172の場合、点172から解像度情報の算出位置に向かう方向を、解像度の悪い半径方向とする。図47の例では、点172と点181とを結ぶ方向が、点181で解像度が悪い方向となる。同様に、点172と点183とを結ぶ方向が、点183で解像度が悪い方向となる。これら解像度の悪い方向に基づき、解像度情報の角度θ1、θ2を算出する。
図48は、本実施の形態による解像度情報の算出方法の効果を示す図である。図48において、フィルタ算出例191は、補正用被写体20を撮影した画像に基づき算出されたフィルタである。フィルタ算出例193は、フィルタ算出例191に基づき、本実施の形態による解像度情報算出方法を用いて算出したフィルタである。
フィルタ算出例193のように、中心座標をずらして解像度情報の角度を算出することで、全体的に図の左側が強い強度のフィルタが算出される。なお、この場合、解像度情報の異方性度、解像度値は、補間により求めてもよいし、中心からの距離に応じて求めてもよい。
以上説明したように、ボケの度合いが非対称な撮像装置の場合にも、ボケの中心を解像度情報の角度を求める際の中心座標としてフィルタ算出をすることで、精度よく画像を補正することが可能となる。このとき、解像度情報の楕円の大きさの逆比で、中心座標を算出して設定するようにしてもよい。このように、中心座標をずらして角度を算出することにより、ボケの度合いが大きい側が強い強度のフィルタを算出できる。
さらに、レンズの製造誤差、撮影条件によって、実際に得られる周縁部の劣化の対称性がレンズデータから得られる結果とは異なり、レンズデータに基づく周縁部劣化の中心が撮影画像中心とは異なる場合でも、精度よく補正を行うことが可能である。
(第5の実施の形態)
次に、第5の実施の形態による撮像装置について説明する。本実施の形態において、第1から第4の実施の形態と同様の構成及び動作には同一符号を付し、重複説明を省略する。第5の実施の形態は、第1から第4実施の形態及び変形例の画像処理部15の構成の別の形態である。
第1から第4の実施の形態による画像処理装置において算出されるフィルタを実装する場合、メモリ及び計算量の観点から所定の要素数以下のフィルタを用いたいという要求がある。現状では、例えば5×5以下のフィルタを用いることが考えられている。しかしながら、フィルタの要素数を小さくすると、ボケを表すPSFの大きさが要素数よりも大きくなり、情報量が欠落して、画質が劣化する場合がある。
図49は、画像のボケを表すPSFと、要素数が5×5のフィルタ215との大きさの関係の一例を示す図である。図49に示すように、5×5のフィルタ215の大きさよりもPSFが大きいとする。なお、フィルタ1つの要素は、画像の1画素に相当している。図49に示す例では、PSFの大きさよりもフィルタ215の要素数の方が小さい。このため、このようなフィルタ215により画像補正をすると、PSFの情報が欠落するため、モアレの発生など、画像補正の品質低下の問題が生ずる。以下、このように要素数が小さい場合にも情報の欠落による画像補正の品質を低下させない方法について説明する。
下記の式20は、元画像yに対し、算出されたフィルタFを畳み込んで、元画像との差分処理が行われて補正画像xが生成される場合を示している。
別の例として、下記式21〜24は、元画像yに対し、算出されたフィルタF'を畳み込むことで、補正画像xが生成されることを示している。
まず、モアレの発生を防ぐ概要について説明する。上述したように、解像度に異方性を有するフィルタを有限化することにより、高周波情報の消失が方向によって異なるため、モアレが発生する。つまり、方向によって周波数の劣化の補正度合いが異なるため、モアレが発生する。
そこで、有限のハイパスフィルタを通すことで、急激に輝度が変化する部分を低減し、方向によって異なる高周波情報の補正度合いの違いを低減する。これにより、方向によって異なる周波数情報の劣化を原因とするモアレの発生を防ぐことができる。
なお、有限のハイパスフィルタは、要素の総和が0であり、かつ少なくとも2つの要素が非0である有限フィルタであればよい。以下では、有限フィルタとして、有限のハイパスフィルタを用いて説明する。また、算出されたフィルタを分割し、所定の要素数以下となる複数段のフィルタを生成することで、実装上の課題もクリアできる。
図51、図52は、複数段のフィルタの構成例を示す図である。図51に示すように、画像処理部210は、式20と対応している。画像処理部210は、元画像213をフィルタセット211により補正して、補正画像219を出力する。フィルタセット211は、式20のフィルタFを、複数段のフィルタ(5×5)215、217に分割した構成である。
図52に示すように、画像処理部220は、式21〜24と対応している。画像処理部220は、元画像213をフィルタセット211により補正して、補正画像227を出力する。フィルタセット221は、式24のフィルタF’を、複数段のフィルタ(5×5)223、225に分割した構成である。第5の実施の形態においては、フィルタの要素数よりも大きいPSFに対し、異方性のあるフィルタを複数で構成し、複数のフィルタを組み合わせることで異方性を改善する。
次に、本実施の形態による画像処理装置を含む撮像装置について説明する。ここでは、図52、図53を参照しながら、フィルタ制御部250、280、フィルタ処理部270、290について説明する。
図52は、フィルタ制御部250及びフィルタ処理部270の構成の一例を示すブロック図である。フィルタ制御部250、フィルタ処理部270は、図50の画像処理部220に対応する構成である。フィルタ制御部250は、フィルタ記憶部251、フィルタ取得部252、フィルタ算出部253、及びフィルタ生成部254を有する。
フィルタ記憶部251は、第1フィルタ261と、第2フィルタ262と、複数段フィルタ263とを少なくとも記憶する。各フィルタは、それぞれ異なる記憶領域に記憶されればよい。
第1フィルタ261は、例えば、異方性のある解像度情報に基づき算出された異方性を有するフィルタである。第1フィルタ261は、例えば、図30に示したフィルタテーブル125の各フィルタである。フィルタテーブル125のフィルタには、上述したように、補正用被写体20に基づき生成されたフィルタから補間により生成されたフィルタも含むことが好ましい。
第2フィルタ262は、フィルタ算出部253により算出されるフィルタである。第2フィルタは、例えば、第1フィルタ261にハイパスフィルタが畳み込まれたフィルタである。ハイパスフィルタについては後述する。複数段フィルタ263は、フィルタ生成部254により生成されるフィルタ群である。
フィルタ取得部252は、異方性のある解像度情報に基づき算出された、異方性を有する有限のフィルタを取得する。フィルタ取得部252は、例えば、フィルタ記憶部251から第1フィルタ211を取得する。フィルタ取得部252は、取得した第1フィルタ261をフィルタ算出部253に出力する。
フィルタ算出部253は、フィルタ取得部252から取得した第1フィルタ261に対し、要素の総和が0であり、かつ少なくとも2つの要素が非0である有限フィルタを畳み込むことで第2フィルタを算出する。
このとき、フィルタ算出部253は、ボケの大きさ(PSFの楕円の大きさ)よりも大きい要素数を有する第2フィルタを算出する。フィルタ算出部253は、判定部265を有し、判定部265は、例えばフィルタ記憶部251に記憶されたPSF(または解像度情報の楕円)の大きさからボケの大きさを判定する。なお、レンズ設計値からシミュレーションでPSFを取得できる場合は、取得したPSFからボケの大きさを判定してもよい。フィルタ算出部253は、例えば、画像のPSFよりも大きい要素数を有する第1フィルタに有限のハイパスフィルタを畳み込んで第2フィルタを算出する。
なお、フィルタ算出部253は、有限のハイパスフィルタを予め保持していることが好ましい。有限なハイパスフィルタは、例えば3×3のフィルタとすると、次の式25又は式26を用いればよい。
本実施の形態で扱う異方性は、任意の方向の角度に応じたフィルタであるため、式(26)に示すように、全ての要素に非0の係数がある方が好ましい。
フィルタ算出部253は、ハイパスフィルタを3×3とすると、フィルタKinvを7×7とすることで、その二つのフィルタを畳み込みして9×9のフィルタを算出する。このように、フィルタ算出部253は、ハイパスフィルタとフィルタを畳み込みして、所望の要素数になるように算出する。
ここで、7×7のフィルタをF7と表記し、ハイパスフィルタをLapと表記すると、フィルタ算出部253で算出された9×9のフィルタF9は、以下の式27で表される。
フィルタ算出部253は、上述した式27により算出した第2フィルタF9をフィルタ記憶部251に記憶する。なお、フィルタ算出部253は、別の装置に設けられ、フィルタ制御部250では、別の装置で求められた第2フィルタ262を記憶するようにしてもよい。
フィルタ生成部254は、フィルタ記憶部251から第2フィルタ262を取得し、この第2フィルタ262から、所定の要素数以下となる複数段のフィルタを生成する。複数段のフィルタの生成については後述する。フィルタ生成部254は、生成した複数段フィルタ263をフィルタ記憶部251に記憶する。
次に、フィルタ処理部270について説明する。フィルタ処理部270は、畳み込み演算部271と、減算部272とを有する。畳み込み演算部271は、例えば図38に示したRAWメモリ41から画像を取得し、その画像に対して複数段フィルタ263で畳み込むフィルタ処理を行う。
畳み込み演算部271は、複数段フィルタ263が、1つの畳み込み回路に対して複数回処理を行うことでフィルタ処理を行ってもよいし、複数の畳み込み回路を用意してフィルタ処理を行ってもよい。畳み込み演算部271は、フィルタ処理後の画像を減算部272に出力する。
減算部272は、RAWメモリ41から取得した画像から、フィルタ処理後の画像を減算し、補正後の画像を生成する。補正画像は、後処理部5や画像メモリ8に出力される。
次に、式21〜式24に対応するフィルタ制御部280、フィルタ処理部290について説明する。図53は、第5の実施の形態におけるフィルタ制御部280及びフィルタ処理部290の概略構成の一例を示すブロック図である。まず、フィルタ制御部280について説明する。フィルタ制御部280は、フィルタ記憶部284、フィルタ取得部202、フィルタ算出部282、及びフィルタ生成部283を有する。
フィルタ制御部280の構成で、図52に示す構成と同様のものは同じ符号を付す。フィルタ記憶部284は、フィルタ算出部282により算出された第3フィルタ285と、フィルタ生成部283により算出された複数段フィルタ286を記憶する。
フィルタ算出部282は、前述した画像同士の減算処理を不要にする第3フィルタ285を算出する。フィルタ算出部282は、式21〜式24を用いて式変形を行うことで、減算処理を不要とすることができる。この例では、9×9の第3フィルタ(F9')が生成されるとする。これにより、前述した処理と同じ結果が得られて、画像同士の減算処理を不要とする一つの有限フィルタ(F9')を生成することができる。フィルタ算出部282は、算出したフィルタF9'をフィルタ記憶部284に記憶させる。
フィルタ生成部283は、フィルタ記憶部284から第3フィルタ285を取得し、この第3フィルタ285から、所定の要素数以下となる複数段のフィルタを生成する。複数段のフィルタの生成については後述する。フィルタ生成部283は、生成した複数段フィルタ286をフィルタ記憶部284に記憶する。フィルタ処理部290は、畳み込み演算部291を有する。畳み込み演算部291は、複数段フィルタ286を畳み込む処理を行い、補正後の画像xを生成する。
次に、複数段のフィルタの生成について説明する。以下では、図53に示すフィルタ生成部283が、複数段のフィルタを生成する例について説明するが、図52に示すフィルタ生成部254でも同様にして生成することができる。また、この処理は、図2の係数分析部10で行うこともできる。
まず、フィルタ生成部283は、PSFよりも大きい要素数のフィルタから、所定の要素数以下のフィルタ群に分けるとき、1個のフィルタを仮定して、その仮定したフィルタに基づいて他のフィルタを最適化で求める。
例えば、第3フィルタF9'に対し、2つの5×5のフィルタ223(F5A’)、フィルタ225(F5B’)に分けるとする。このとき、フィルタ生成部283は、以下の式28を定義することができる。
eは、差分エラーである。以下、複数段のフィルタへの分割方法の一例について説明する。
フィルタの分割方法の一例として、フィルタ223を、第3フィルタF9'の中心部分の5×5の要素数を抽出したフィルタとする。この分割方法では、フィルタ生成部283は、フィルタ223を決定し、下記の式29で表される評価関数を最小化することで、フィルタ225を求めることができる。
ここで求められたフィルタを用いて、さらに以下の式30に基づき補正画像xが生成される。
このとき、差分エラーeは“0”とならない。そこで、複数段のフィルタに対してそれぞれゲインを設定することで、精度の向上を図ることができる。このとき、ゲインをG1、G2を用いて、補正画像xは、以下の式31で表される。
なお、ゲインG1、G2の決定は、以下のように行うことができる。例えば、まず、画像処理部15は、ゲインG1、G2の初期値を設定する。このゲインを用いて式31により画像補正を行い、解像度情報を取得する。これに基づき上記のようにフィルタを算出し、式29の値を算出する。上記を繰り返し、式29の値が最小となるゲインG1、G2を決定する。
図54、図55は、フィルタの分割の一例を示す図である。図54、図55では、フィルタの大きさが輝度値で表されている。図54は、フィルタ例231が、フィルタ例233とフィルタ例235に分割されることを示している。ここで、フィルタ例231は、9個の9×9のフィルタを有する。フィルタ例233、フィルタ例235は、それぞれ、9個の5×5フィルタを有している。
図55は、フィルタ例241が、フィルタ例243とフィルタ例245に分割されることを示している。ここで、フィルタ例241は、108個の9×9のフィルタを有する。フィルタ例243、フィルタ例245は、それぞれ、108個の5×5フィルタを有している。
以上説明したように、第5の実施の形態による画像処理方法によれば、フィルタを要素数の少ない複数のフィルタに分割することができる。よって、計算量の制限から要素数の少ないフィルタを用いる場合にも、フィルタの要素数がPSFの大きさより小さい場合に生ずる補正品質の低下を防止することが可能になる。さらに、分割したフィルタのそれぞれに対応するゲインを設定する。これにより、さらに精度の高い画像補正用フィルタを算出することができる。
このように、フィルタを複数段に分割する場合も、補正用被写体20を撮影した画像においてそれぞれのチャートに対応する算出位置でボケの度合いを表す解像度情報を算出し、フィルタを算出後、複数段のフィルタに分割する。
なお、フィルタを分割する方法については上記に限定されず、他の方法でもよい。分割後のフィルタの要素数や、係数、ゲインの求め方についても、上記の例は一例であり、記載例に限定されるものではない。
(チャート数の変形例)
以下、補正用被写体20におけるチャート数について説明する。図56から図59は、補正用被写体20におけるチャートの配置の一例を示す図である。上記第1から第5の実施の形態及び変形例において、チャート撮影には、解像度劣化の少ない基準となる中心付近のチャートと、劣化の大きい周辺部のチャートが必要となる。
図56に示すように、チャート配置例351では、中心と、四隅にチャートが配置されている。上記画像処理を行うには、このチャート配置例351のように配置された、少なくとも計5個のチャートがあることが好ましい。例えば、画像が点対称である場合には、中心と、四隅のうちの一つがあれば、チャート配置例351と実質的に同様な配置となる。
図57に示すように、チャート配置例353は、12個のチャートが縦横3×4に配置されている。チャート配置例353の場合は、基準となる中心に配置されたチャートはないが、中心付近の1個もしくは中心付近の複数個を基準とする。
図58に示すように、チャート配置例355は、5×5=25個のチャートを配置されている。チャート配置例としては、図58のような例でもよい。
図59は、12×9=108個のチャートを有するチャート配置例357を示している。例えば、第1の実施の形態では、図29を参照しながら、9つのチャートに基づき、全体として108個のフィルタを算出する例を説明した。チャート配置例357では、チャート自体が108個配置されているため、補間を使わずに108個のフィルタが得られる配置になっている。しかし、このように多い数だと、撮像装置の性能によっては解像度が計測できなくなり、限られた個数で測定せざるをえないことがある。
このように、補正用被写体20に配置するチャートの数は、様々な数が適用可能であるが、撮像装置の性質や性能に基づき決定されることが好ましい。
なお、上記第1から第5の実施の形態及び変形例におけるフィルタ算出は、標準的なコンピュータなど個別の情報処理装置で計算してもよい。また、補正用被写体20の撮影画像を、端末や撮像装置が通信ネットワークを介してサーバに転送し、サーバ内でフィルタ計算し、フィルタ計算結果を端末や撮像装置へ転送して画像補正処理を行うようにしてもよい。端末や撮像装置が、チャート撮影画像から算出した撮影個数のフィルタ情報をサーバに転送し、撮影個数よりも多いフィルタをサーバ内で算出してもよい。
ここで、上記第1から第5の実施の形態、及び各変形例による画像処理方法の動作をコンピュータに行わせるために共通に適用されるコンピュータの例について説明する。図60は、標準的なコンピュータのハードウエア構成の一例を示すブロック図である。図60に示すように、コンピュータ300は、Central Processing Unit(CPU)302、メモリ304、入力装置306、出力装置308、外部記憶装置312、媒体駆動装置314、ネットワーク接続装置等がバス310を介して接続されている。
CPU302は、コンピュータ300全体の動作を制御する演算処理装置である。メモリ304は、コンピュータ300の動作を制御するプログラムを予め記憶したり、プログラムを実行する際に必要に応じて作業領域として使用したりするための記憶部である。メモリ304は、例えばRandom Access Memory(RAM)、Read Only Memory(ROM)等である。入力装置306は、コンピュータの使用者により操作されると、その操作内容に対応付けられている使用者からの各種情報の入力を取得し、取得した入力情報をCPU302に送付する装置であり、例えばキーボード装置、マウス装置などである。出力装置308は、コンピュータ300による処理結果を出力する装置であり、表示装置などが含まれる。例えば表示装置は、CPU302により送付される表示データに応じてテキストや画像を表示する。
外部記憶装置312は、例えば、ハードディスクなどの記憶装置であり、CPU302により実行される各種制御プログラムや、取得したデータ等を記憶しておく装置である。媒体駆動装置314は、可搬記録媒体316に書き込みおよび読み出しを行うための装置である。CPU302は、可搬記録媒体316に記録されている所定の制御プログラムを、媒体駆動装置314を介して読み出して実行することによって、各種の制御処理を行うようにすることもできる。可搬記録媒体316は、例えばCompact Disc(CD)−ROM、Digital Versatile Disc(DVD)、Universal Serial Bus(USB)メモリ等である。ネットワーク接続装置318は、有線または無線により外部との間で行われる各種データの授受の管理を行うインタフェース装置である。バス310は、上記各装置等を互いに接続し、データのやり取りを行う通信経路である。
上記第1から第5の実施の形態による画像処理方法をコンピュータに実行させるプログラムは、例えば外部記憶装置312に記憶させる。CPU302は、外部記憶装置312からプログラムを読み出し、コンピュータ300に画像処理の動作を行なわせる。このとき、まず、画像処理の処理をCPU302に行わせるための制御プログラムを作成して外部記憶装置312に記憶させておく。そして、入力装置306から所定の指示をCPU302に与えて、この制御プログラムを外部記憶装置312から読み出させて実行させるようにする。また、このプログラムは、可搬記録媒体316に記憶するようにしてもよい。
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を採ることができる。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
画像上の少なくとも二点に対応する解像度の状況を示す解像度情報を、前記画像に基づきそれぞれ算出する解像度算出部と、
前記少なくとも二点以外の前記画像上の一点に対応する解像度情報を、前記少なくとも二点のそれぞれに対応する前記解像度情報と、前記少なくとも二点および前記一点の前記画像上の位置とに基づき算出する補間部と、
前記一点に対応する前記解像度情報に応じて、画像の前記一点を含む領域を補正するためのフィルタを算出するフィルタ算出部と、
を有することを特徴とする画像処理装置。
(付記2)
前記解像度情報は、前記画像の各点に対応する解像度に応じた解像度値、前記解像度の異方性を示す異方性度、および前記解像度の異方性に対応する角度を有し、
前記解像度値、前記異方性度、及び前記角度は、前記少なくとも2点のそれぞれに対して、少なくとも2つの方向のそれぞれにおいて間隔及び幅の異なる線を順次等距離の位置に備えた模様を含む被写体を撮影した画像における、前記模様に対応する輝度値の振幅が同一の点の分布が形成する楕円の大きさ、楕円率、前記画像における前記楕円の角度に対応することを特徴とする付記1に記載の画像処理装置。
(付記3)
前記補間部は、前記一点に対応する前記角度を、前記一点の画像上の位置に基づき幾何学的に算出することを特徴とする付記2に記載の画像処理装置。
(付記4)
前記角度は、前記画像上の前記異方性度が最も等方的になる点と、前記フィルタの算出位置とを結ぶ方向であることを特徴とする付記2または付記3のいずれかに記載の画像処理装置。
(付記5)
前記フィルタ算出部は、前記角度に応じた重み係数を決定することを特徴とする付記2から付記4のいずれかに記載の画像処理装置。
(付記6)
前記重み係数は、前記角度の方向と前記角度の方向に直交する方向との前記解像度の差が最小となるように決定されることを特徴とする付記3に記載の画像処理装置。
(付記7)
前記フィルタが、第1の有限個の要素を有し、前記楕円よりも前記要素の数に対応する範囲が大きい場合に、前記フィルタを、前記第1の有限個より少ない第2の有限個の要素を有する複数のフィルタに分割して画像に畳み込むことで補正を行うことを特徴とする付記2から付記6のいずれかに記載の画像処理装置。
(付記8)
画像上の少なくとも二点に対応する解像度の状況を示す解像度情報を、前記画像に基づきそれぞれ算出し、
前記少なくとも二点以外の前記画像上の一点に対応する解像度情報を、前記少なくとも二点のそれぞれに対応する前記解像度情報と、前記少なくとも二点および前記一点の前記画像上の位置とに基づき算出し、
前記解像度情報に応じて、画像の前記一点を含む領域を補正するためのフィルタを算出する、
ことを特徴とする画像処理方法。
(付記9)
前記解像度情報は、前記画像の各点における解像度に応じた解像度値、前記解像度の異方性を示す異方性度、および前記解像度の異方性に対応する角度を有し、
前記画像に基づき算出される前記解像度値、前記異方性度、及び前記角度は、前記少なくとも2点のそれぞれに対して、少なくとも2つの方向のそれぞれにおいて間隔及び幅の異なる線を順次等距離の位置に備えた模様を含む被写体を撮影した画像における、前記模様に対応する輝度値の振幅が同一の点の分布が形成する楕円の大きさ、楕円率、前記画像における前記楕円の角度に対応することを特徴とする付記8に記載の画像処理方法。
(付記10)
前記一点に対応する前記角度は、前記一点の画像上の位置に基づき幾何学的に算出されることを特徴とする付記9に記載の画像処理方法。
(付記11)
前記角度は、前記画像上の前記異方性度が最も等方的になる点と、前記フィルタの算出位置とを結ぶ方向であることを特徴とする付記9または付記10のいずれかに記載の画像処理方法。
(付記12)
前記フィルタは、前記角度に応じた重み係数を決定することにより算出されることを特徴とする付記9から付記11のいずれかに記載の画像処理方法。
(付記13)
前記重み係数は、前記角度の方向と前記角度の方向に直交する方向との前記解像度の差が最小となるように決定されることを特徴とする付記12に記載の画像処理方法。
(付記14)
前記フィルタが、第1の有限個の要素を有し、前記楕円よりも前記要素の数に対応する範囲が大きい場合に、前記フィルタを、前記第1の有限個より少ない第2の有限個の要素を有する複数のフィルタに分割して画像に畳み込むことで補正を行うことを特徴とする付記9から付記14のいずれかに記載の画像処理方法。
(付記15)
画像上の少なくとも二点に対応する解像度の状況を示す解像度情報を、前記画像に基づきそれぞれ算出し、
前記少なくとも二点以外の前記画像上の一点に対応する解像度情報を、前記少なくとも二点のそれぞれに対応する前記解像度情報と、前記少なくとも二点および前記一点の前記画像上の位置とに基づき算出し、
前記解像度情報に応じて、画像の前記一点を含む領域を補正するためのフィルタを算出する、
処理をコンピュータに実行させるプログラム。