我有一张图像,我将高斯模糊应用于cv2.GaussianBlur
和skimage.gaussian_filter
库,但是得到的结果却截然不同。我很好奇为什么,如何使skimage
看起来更像cv2
。我知道skimage.gaussian_filter
是scipy.scipy.ndimage.filters.gaussian_filter
的包装。为了清楚地说明问题,为什么这两个功能不同?如何使它们更相似?
这是我的测试图像:
这是cv2
版本(显示为模糊):
这是skimage
/scipy
版本(显示得更清晰):
细节:skimage_response = skimage.filters.gaussian_filter(im, 2, multichannel=True, mode='reflect')
cv2_response = cv2.GaussianBlur(im, (33, 33), 2)
因此sigma = 2且过滤器的大小足够大,以至于不会产生影响。 Imagemagick covnert -gaussian-blur 0x2
在视觉上与cv2
一致。
版本:cv2
= 2.4.10,skimage
= 0.11.3,scipy
= 0.13.3
最佳答案
如果有人对如何使skimage.gaussian_filter()与Matlab的等效imgaussfilt()相匹配(我找到此问题的原因)感到好奇,请将参数'truncate = 2'传递给skimage.gaussian_filter()。 skimage和Matlab都将内核大小作为sigma的函数进行计算。 Matlab的默认值为2。Skimage的默认值为4,默认情况下会导致内核大得多。
关于python - 为什么高斯滤波器在cv2和skimage之间有所不同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36263738/