我正在尝试使用高斯滤镜(来自日记的图像)复制以下图像平滑:
在论文中说,为了从左图像到右图像,我必须应用高斯拟合器,其值为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()
由于某种原因,获得的结果与右图中的图片不相似。 有人可以指出我在程序中需要修改什么才能从左图像到右图像?
谢谢。
答案 0 :(得分:2)
我想在这里猜一下:
因为他们提到他们的x和y值在0到100之间,所以他们可能会应用" sigma = 14 unit blur"而不是" sigma = 14 像素模糊"。
sigma
中的scipy.ndimage.gaussian_filter
参数以像素为单位。如果我对作者的意图是正确的,那么您需要缩放传入的sigma参数。
如果作者指定x
和y
的范围均为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)