使用python应用Wiener滤波器消除噪声

时间:2018-12-21 11:06:37

标签: python-3.x opencv image-processing scikit-image

This is the what my input image looks like

And this is what my wiener filtered output should look like

第一张图片是我的输入图片。第二张图像是经过维纳滤波的图像,这是我的输出。

以下是在我的图像上使用维纳滤镜的代码。输入图像为“ img5”,输出图像为“ Wiener_filtered”。

psf = np.ones((5,5)) / 25
img6 = convolve2d(img5,psf,'same')
img6 += 0.1 * img6.std() * np.random.standard_normal(img6.shape)
Wiener_filtered = restoration.wiener(img6,psf,1100) 

下面我附上了输入图像“ img5”以及结果“ img6”和“ Wiener_filtered”

Input image img5

输入图像“ img5”

img6

“ img6”的结果

Wiener_filtered

最终的维纳滤波图像

我需要帮助找出我哪里出了问题。我是图像处理的新手。有人可以告诉我正确的方法吗?

2 个答案:

答案 0 :(得分:0)

您可能想在SOF上检查类似的问题,以便对使用该算法有更好的实际了解,例如:

Wiener Filter for image deblur

为提高您对降噪的基本理解,有一些有用的教程可用于scipy和scikit-image,例如:

http://www.scipy-lectures.org/advanced/image_processing/#denoising

答案 1 :(得分:0)

尝试使用:img_as_float中的skimage.util。我认为应该可以:

from skimage.util import img_as_float

img5 = img_as_float(img5)
psf = np.ones((5,5)) / 25
img6 = convolve2d(img5,psf,'same')
img6 += 0.1 * img6.std() * np.random.standard_normal(img6.shape)
Wiener_filtered = restoration.wiener(img6,psf,1100)