点広がり関数とは?
スマホにしてもデジカメにしても、ある画像を撮影すればなんらかの「ボケ」の要素が入ってしまうことが往々にあります。
それはピンボケによるものであったり、手ブレによるものであったりですね。
ここではこのような「ボケ」というものを、ある「フィルタ」であるとみなします。
つまり、ある画像がボケるのは元の画像に対して何らかの「ボケフィルタ」を通したために起こった、と考えるのです。
たたみ込みの理論によれば、インパルス関数に対する応答が分かればそのフィルタの全応答が分かります。
したがって、インパルス関数、つまり原点の1画素だけに値を持つような画像がどのような変化をするかを調べればいいわけですね。
このようにインパルス関数をボケさせてできる平面上の関数を点広がり関数といいます。
逆フィルタによる画像復元
元の画像
![f(x,y)](http://chart.apis.google.com/chart?cht=tx&chf=bg,s,ffffff00&chco=000000ff&chs=25&chl=f%28x%2Cy%29)
のフーリエ変換を
![F(k,l)](http://chart.apis.google.com/chart?cht=tx&chf=bg,s,ffffff00&chco=000000ff&chs=25&chl=F%28k%2Cl%29)
、点広がり関数
![h(x,y)](http://chart.apis.google.com/chart?cht=tx&chf=bg,s,ffffff00&chco=000000ff&chs=25&chl=h%28x%2Cy%29)
のフーリエ変換を
![H(k,l)](http://chart.apis.google.com/chart?cht=tx&chf=bg,s,ffffff00&chco=000000ff&chs=25&chl=H%28k%2Cl%29)
としますと、ノイズなどが全くない状況では出力画像
![g(x,y)](http://chart.apis.google.com/chart?cht=tx&chf=bg,s,ffffff00&chco=000000ff&chs=25&chl=g%28x%2Cy%29)
のフーリエ変換
![G(k,l)](http://chart.apis.google.com/chart?cht=tx&chf=bg,s,ffffff00&chco=000000ff&chs=25&chl=G%28k%2Cl%29)
は
となります。ここで、両辺
![H(k,l)](http://chart.apis.google.com/chart?cht=tx&chf=bg,s,ffffff00&chco=000000ff&chs=25&chl=H%28k%2Cl%29)
で除算すると
なので、
![G(k,l)/H(k,l)](http://chart.apis.google.com/chart?cht=tx&chf=bg,s,ffffff00&chco=000000ff&chs=25&chl=G%28k%2Cl%29%2FH%28k%2Cl%29)
を逆フーリエ変換してやれば元の画像に復元できることが分かります。
ここで
逆フィルタ![H_{inv}](http://chart.apis.google.com/chart?cht=tx&chf=bg,s,ffffff00&chco=000000ff&chs=25&chl=H_%7Binv%7D)
を点広がり関数の逆数、つまり
と定義すれば、ボケた画像から元の画像を抽出するには次のように逆フィルタを掛ければよいことが分かる。
ウィーナーフィルタによる画像復元
上の逆フィルタは考え方は非常に簡単で分かりやすいですが、ノイズ
![N(k,l)](http://chart.apis.google.com/chart?cht=tx&chf=bg,s,ffffff00&chco=000000ff&chs=25&chl=N%28k%2Cl%29)
のことを何も考えてないという問題があります。
上図のようなボケのプロセスを考えると
となりますね。ここで復元する関数を求める問題っていうのは
において、
となるような
![M(k,l)](http://chart.apis.google.com/chart?cht=tx&chf=bg,s,ffffff00&chco=000000ff&chs=25&chl=M%28k%2Cl%29)
を求められれば良いわけです。
計算過程は省略しましたが、その
![M(k,l)](http://chart.apis.google.com/chart?cht=tx&chf=bg,s,ffffff00&chco=000000ff&chs=25&chl=M%28k%2Cl%29)
というのは次の式で表されます。
ここで
![\Gamma](http://chart.apis.google.com/chart?cht=tx&chf=bg,s,ffffff00&chco=000000ff&chs=25&chl=%5CGamma)
は未知のパラメータになります。このようなフィルタを
ウィーナフィルタと言います。
javascript plugin Error : このプラグインで利用できない命令または文字列が入っています。
最終更新:2012年11月12日 22:51