2017-12-13 28 views
0

matlab を使用して画像をシャープにする方法はいくつかあります。 im = imsharpen(old_image、 'Radius'、2、 'Amount'、1); im = imfilter(old_image、fspecial( 'unsharp')); imshow(im) この操作(シャープネス)を取り消して元の画像を返すことはできますか?matlabを使用してイメージのシャープニング操作を元に戻すにはどうすればよいですか?

+0

これらのアプローチを完全に逆転させることができるかどうかは疑わしいので、オリジナルをどこかに保つ方が良い。 – sascha

答えて

2

フィルタの効果を元に戻すことはできません。フィルタリングは、フィルタをシャープにしても近傍の値を結合して情報を削減します。

リニアフィルタのうち、周波数をゼロにしないものについては、ある程度逆の動作が可能です。これは、クリッピングが発生しないことを必要とする。つまり、フィルタの結果はuint8などではなく浮動小数点値として保存されました。次に、動作を逆にすることは、周波数領域でフィルタの点逆数を掛けることを含む。線形フィルタカーネルhは、画像fと畳み込まれており、周波数ドメインで約g = ifftn(fftn(f).*fftn(h))が乗算されていることを示しています。その後、f = ifftn(fftn(g)./fftn(h))

これは、上記のように、hのサイズをfにする必要があるためです。

fftn(h)が0の場合、元の値fではなく、NaN(0/0を使用しているため)で除算されます。これにより、元に戻すことができるフィルタのクラスに強い制限が設けられます。さらに、フィルタされた画像にノイズが追加されている場合(純粋に理論的な場合を除いてそうである可能性が高い)、フィルタは小さな値を有する周波数に対してノイズが増幅される。基本的に、少量のノイズでもこのプロセスは失敗します。

Wiener filterは、ノイズとほぼゼロのフィルタ値があなたの答えを吹き飛ばす原因とならないように、regularizaciónで上記を行います。不都合な逆変換のためのより複雑な反復ソルバーがありますが、それは大きなトピックです。ウィーナーで検索を開始すると、最終的にそれらも発見されます。

一方、逆スムージングを行うフィルタを探している場合は、たとえばimgaussfiltを探します。

関連する問題