使用python将高斯模糊应用于图像

时间:2015-03-24 15:13:26

标签: python matplotlib

我正在尝试使用高斯滤镜(来自日记的图像)复制以下图像平滑: enter image description here

在论文中说,为了从左图像到右图像,我必须应用高斯拟合器,其值为x,y = 1,...,100和sigma = 14,以获得&#34最好的结果"

我在python中开发了以下程序来尝试实现这种平滑:

import scipy.ndimage as ndimage
import matplotlib.pyplot as plt

img = ndimage.imread('left2.png')
img = ndimage.gaussian_filter(img, sigma=(14), order=0)
plt.imshow(img)
plt.show()

由于某种原因,获得的结果与右图中的图片不相似。 有人可以指出我在程序中需要修改什么才能从左图像到右图像?

谢谢。

1 个答案:

答案 0 :(得分:2)

我想在这里猜一下:

因为他们提到他们的x和y值在0到100之间,所以他们可能会应用" sigma = 14 unit blur"而不是" sigma = 14 像素模糊"。

sigma中的scipy.ndimage.gaussian_filter参数以像素为单位。如果我对作者的意图是正确的,那么您需要缩放传入的sigma参数。

如果作者指定xy的范围均为0-100,则x和y方向的sigma将不同,因为您的输入数据显示的行数不同于列(即它不是完全正方形的图像)。

也许尝试类似的东西?

nrows, ncols = img.shape
sigma = (14 * nrows / 100.0, 14 * ncols / 100.0)
img = ndimage.gaussian_filter(img, sigma=sigma)