使用 PIL 读取图像后,我通常使用 scipy.ndimage 执行高斯滤波器,如下所示
import PIL
from scipy import ndimage
PIL_image = PIL.Image.open(filename)
data = PIL_image.getdata()
array = np.array(list(data)).reshape(data.size[::-1]+(-1,))
img = array.astype(float)
fimg = ndimage.gaussian_filter(img, sigma=sigma, mode='mirror', order=0)
PIL 中有如下高斯模糊函数(来自这个答案),但我不知道它是如何工作的或者它使用什么内核:
from PIL import ImageFilter
fimgPIL = PIL_image.filter(ImageFilter.GaussianBlur(radius=r)
关于的问题PIL.ImageFilter.GaussianBlur
:
radius 参数到底是什么;它等于标准差σ吗?
对于给定的半径,它计算内核的距离是多少?2σ? 3σ? 6σ?
这条关于高斯模糊答案的评论- 标准偏差,半径和内核大小如下所述,但我还没有找到 PIL 的信息。
OpenCV使用内核半径,
(sigma * 3)
而scipy.ndimage.gaussian_filter使用内核半径 int(4 * sigma + 0.5)
临摹微笑
慕少森
相关分类