100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 高斯滤波 高斯模糊

高斯滤波 高斯模糊

时间:2018-07-26 11:46:06

相关推荐

高斯滤波 高斯模糊

高斯滤波

高斯滤波在图像处理概念下,将图像频域处理和时域处理相联系,作为低通滤波器使用,可以将低频能量(比如噪声)滤去,起到图像平滑作用。

高斯滤波是一种线性平滑滤波, 适用于消除高斯噪声, 广泛应用于图像处理的减噪过程。通俗的讲, 高斯滤波就是对整幅图像进行加权平均的过程, 每一个像素点的值, 都由其本身和邻域内的其他像素值经过加权平均后得到。 高斯滤波的具体操作是:用一个模板(或称卷积、 掩模) 扫描图像中的每一个像素, 用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值用。高斯平滑滤波器对于抑制服从正态分布的噪声非常有效

我们常说的高斯模糊就是使用高斯滤波器完成的, 高斯模糊是低通滤波的一种也就是滤波函数是低通高斯函数, 但是高斯滤波是指用高斯函数作为滤波函数, 至于是不是模糊,要看是高斯低通还是高斯高通,低通就是模糊, 高通就是锐化

在图像处理中, 高斯滤波一般有两种实现方式,== 一是用离散化窗口滑窗卷积, 另一种通过傅里叶变换==。 最常见的就是第一种滑窗实现, 只有当离散化的窗口非常大, 用滑窗计算量常大(即使用可分离滤波器的实现) 的情况下, 可能会考虑基于傅里叶变化的实现方

法。

由于高斯函数可以写成可分离的形式, 因此可以采用可分离滤波器实现来加速。 所谓的可分离滤波器, 就是可以把多维的卷积化成多个一维卷积。 具体到二维的高斯滤波, 就是指先对行做一维卷积, 再对列做一维卷积。 这样就可以将计算复杂度从O(M* M* N* N)降到

O(2* M* M* N), M, N分别是图像和滤波器的窗口大小。

高斯模糊是一个非常典型的图像卷积例子, 本质上, 高斯模糊就是将(灰度)图像和一个高斯核进行卷积操作:

其中 * 表示卷积操作; Gσ 是标准差为σ 的二维高斯核,定义为:

这里补充以下卷积的知识:

卷积是分析数学中一种重要的运算。

设: f(x), g(x)是R1上的两个可积函数, 作积分

可以证明, 关于几乎所有的实数x, 上述积分是存在的。 这样, 随着x的不同取值, 这个积分就定义了一个新函数h(x), 称为函数f与g的卷积, 记为h(x)=(f*g)(x)。

卷积是一个单纯的定义, 本身没有什么意义可言, 但是其在各个领域的应用是十分广泛的, 在滤波中可以理解为一个加权平均过程, 每一个像素点的值, 都由其本身和邻域内的其他像素值经过加权平均后得到,而如何加权则是依据核函数高斯函数。

平均的过程:

对于图像来说, 进行平滑和模糊, 就是利用周边像素的平均值。

“中间点”取”周围点”的平均值, 就会变成1。 在数值上, 这是一种”平滑化”。 在图形上,就相当于产生”模糊”效果, ”中间点”失去细节。

显然, 计算平均值时, 取值范围越大, ”模糊效果”越强烈。

使用opencv2进行高斯滤波很方便, 参考下面代码:

import cv2#两个回调函数def GaussianBlurSize(GaussianBlur_size):global KSIZEKSIZE = GaussianBlur_size * 2 +3print KSIZE, SIGMAdst = cv2.GaussianBlur(scr, (KSIZE,KSIZE), SIGMA, KSIZE)cv2.imshow(window_name,dst)

对图片lena.png添加噪音作为输入图片, 进行高斯滤波后看看结果如何。 这个例子中

我们采用的核大小是3, 代码如下:

rom __future__ import print_functionimport osimport structimport numpy as npimport cv2KSIZE = 3SIGMA = 3image = cv2.imread("d:/ai/lena.png")print("image shape:",image.shape)dst = cv2.GaussianBlur(image, (KSIZE,KSIZE), SIGMA, KSIZE)cv2.imshow("img1",image)cv2.imshow("img2",dst)cv2.waitKey()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。