我正在尝试使用高斯滤波器(来自期刊的图像)复制图像的以下平滑处理:
论文中说,为了从左图像到右图像,我必须应用值 x,y = 1,...,100 和 sigma = 14 的高斯滤波器以获得“最佳结果” "
我在 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()
由于某些原因得到的结果与右图不相似。 有人可以指出我必须在程序中修改什么才能从左图像到右图像吗?
谢谢。
最佳答案
我来猜一猜:
因为他们提到他们的 x 和 y 值范围从 0-100,所以他们可能应用“sigma = 14 unit 模糊”而不是“sigma = 14 pixel 模糊”。
scipy.ndimage.gaussian_filter
中的sigma
参数是以像素为单位的。如果我对作者意图的理解是正确的,那么您需要缩放传入的 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)
关于python - 使用 python 将高斯模糊应用于图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29236249/