使用 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)
Run Code Online (Sandbox Code Playgroud)
PIL 中有如下高斯模糊函数(来自这个答案),但我不知道它究竟是如何工作的,也不知道它使用的是什么内核:
from PIL import ImageFilter
fimgPIL = PIL_image.filter(ImageFilter.GaussianBlur(radius=r)
Run Code Online (Sandbox Code Playgroud)
关于的问题PIL.ImageFilter.GaussianBlur:
对Gaussian Blur - 标准偏差、半径和内核大小的回答的评论如下,但我还没有找到 PIL 的信息。
OpenCV使用内核半径,
(sigma * 3)而scipy.ndimage.gaussian_filter使用内核半径 int(4 * sigma + 0.5)