scipy.ndimage.filters.gaussian_filter()

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: 标量或标量序列。就是高斯函数里面的\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均值滤波的掩摸 

然后在原始图像上进行卷积操作。同理对于高斯模糊也一样,也需要一个掩摸,即高斯掩摸,如何得到高斯掩摸呢,其中就涉及到了高斯函数了。所以就叫高斯模糊(可能)。具体就直接看上面知乎的链接吧。

发布了102 篇原创文章 · 获赞 117 · 访问量 33万+

猜你喜欢

转载自blog.csdn.net/pursuit_zhangyu/article/details/94138048