点広がり関数と画像復元

点広がり関数とは?

スマホにしてもデジカメにしても、ある画像を撮影すればなんらかの「ボケ」の要素が入ってしまうことが往々にあります。
それはピンボケによるものであったり、手ブレによるものであったりですね。

ここではこのような「ボケ」というものを、ある「フィルタ」であるとみなします。
つまり、ある画像がボケるのは元の画像に対して何らかの「ボケフィルタ」を通したために起こった、と考えるのです。

たたみ込みの理論によれば、インパルス関数に対する応答が分かればそのフィルタの全応答が分かります。
したがって、インパルス関数、つまり原点の1画素だけに値を持つような画像がどのような変化をするかを調べればいいわけですね。
このようにインパルス関数をボケさせてできる平面上の関数を点広がり関数といいます。

逆フィルタによる画像復元

元の画像f(x,y)のフーリエ変換をF(k,l)、点広がり関数h(x,y)のフーリエ変換をH(k,l)としますと、ノイズなどが全くない状況では出力画像g(x,y)のフーリエ変換G(k,l)
 G(k,l)=F(k,l)H(k,l)
となります。ここで、両辺H(k,l)で除算すると
 \frac{G(k,l)}{H(k,l)}=F(k,l)
なので、 G(k,l)/H(k,l) を逆フーリエ変換してやれば元の画像に復元できることが分かります。

ここで逆フィルタH_{inv}を点広がり関数の逆数、つまり
 H_{inv}(k,l)=\frac{1}{H(k,l)}
と定義すれば、ボケた画像から元の画像を抽出するには次のように逆フィルタを掛ければよいことが分かる。
 F(k,l)=H_{inv}G(k,l)

ウィーナーフィルタによる画像復元

上の逆フィルタは考え方は非常に簡単で分かりやすいですが、ノイズN(k,l)のことを何も考えてないという問題があります。
上図のようなボケのプロセスを考えると
 G(k,l)=F(k,l)H(k,l)+N(k,l)
となりますね。ここで復元する関数を求める問題っていうのは
 \tilde{F}(k,l)=M(k,l)G(k,l)
において、
 \tilde{F}(k,l)\simeq F(k,l)
となるようなM(k,l)を求められれば良いわけです。

計算過程は省略しましたが、そのM(k,l)というのは次の式で表されます。
 M(k,l)=\frac{1}{H(k,l)}\frac{|H(k,l)|^2}{|H(k,l)|^2+\Gamma}
ここで\Gammaは未知のパラメータになります。このようなフィルタをウィーナフィルタと言います。

javascript plugin Error : このプラグインで利用できない命令または文字列が入っています。
最終更新:2012年11月12日 22:51
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。
添付ファイル