scipy.ndimage.filters.gaussian_filter()
多维高斯滤波器
scipy.ndimage.filters.gaussian_filter(input, sigma, order=0, output=None, mode='reflect', cval=0.0, truncate=4.0)
Parameters:
input:输入到函数的是矩阵
sigma: 标量或标量序列。就是高斯函数里面的,具体看下面的高斯滤波的解释
mode:参数确定如何处理数组边界,其中cval是mode等于选择'constant'时的值。因为在卷积的时候会出现数组边界无法计算。
order:{0,1,2,3}或来自同一组的序列,可选。沿每个轴的滤波器的顺序作为整数序列给出,或作为单个数字给出。 0的顺序对应于具有高斯核的卷积。 1,2或3的阶数对应于与高斯的第一,第二或第三导数的卷积。高阶导数未实现
truncate:具体不知道有什么用,确定kernel的大小的吧(瞎猜)。
Return:
返回值是和输入形状一样的矩阵。
补充点
这里面的参数没有包括滤波器的大小啊,主要滤波器的宽度由 sigma 和 truncate的值隐式确定的
w = 2 * int( truncate * sigma + 0.5)+ 1
代码
sigma越大图像越模糊,代码
#coding=utf-8
from PIL import Image
import numpy as np
from scipy.ndimage import filters
import matplotlib.pyplot as plt
im = np.array(Image.open('20140702104508726.png'))
index = 141 #画1行四列的图,与 1,4,1 同
plt.subplot(index)
plt.imshow(im)
for sigma in (2, 5, 10):
im_blur = np.zeros(im.shape, dtype=np.uint8)
for i in range(3): #对图像的每一个通道都应用高斯滤波
im_blur[:,:,i] = filters.gaussian_filter(im[:,:,i], sigma)
index += 1
plt.subplot(index)
plt.imshow(im_blur)
plt.show()
高斯滤波,知乎解释,我觉得第一个比较好理解,mpcv的解释
高斯模糊的原理是什么,怎样在界面中实现?,
高斯滤波和高斯模糊是一个概念。首先简单介绍一下,均值模糊,首先得知道均值的掩摸(卷积,kernel),何为掩摸假如是3x3均值滤波的掩摸
然后在原始图像上进行卷积操作。同理对于高斯模糊也一样,也需要一个掩摸,即高斯掩摸,如何得到高斯掩摸呢,其中就涉及到了高斯函数了。所以就叫高斯模糊(可能)。具体就直接看上面知乎的链接吧。