【图像预处理】高斯滤波 + 代码注释

含义:高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其它像素值经过加权平均后得到。

作用:高斯滤波是一种线性平滑滤波,适用于消除高斯噪声,广泛应用于图像处理的减噪过程。

高斯噪声:首先,噪声在图像当中常表现为引起较强视觉效果的孤立像素点或像素块。简单来说,噪声的出现会给图像带来干扰,让图像变得不清楚。高斯噪声就是它的概率密度函数服从高斯分布(即正态分布)的一类噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯白噪声的二阶矩不相关,一阶矩为常数,是指先后信号在时间上的相关性。
在这里插入图片描述
注:σ的大小决定了高斯函数的宽度。

高斯核计算

理论上,高斯分布在所有定义域上都有非负值,这就需要一个无限大的卷积核。实际上,仅需要取均值周围3倍标准差内[]的值,以外部份直接去掉即可。高斯滤波的重要两步就是先找到高斯模板然后再进行卷积,高斯模板(mask)在有的地方也称作掩膜或者是高斯核。具体案例如下:

假定中心点的坐标是(0,0),那么取距离它最近的8个点坐标,为了计算,需要设定σ的值。假定σ=1.5,则模糊半径为1( size = 3 * 3 )的高斯模板就算如下:
在这里插入图片描述
这个时候我们还要确保这9个点加起来为1,这个是高斯模板的特性,这9个点的权重总和等于0.4787147,因此上面9个值还要分别除以0.4787147,得到最终的高斯模板。
在这里插入图片描述
高斯滤波计算

假设现有9个像素点,灰度值(0-255)的高斯滤波计算如下:
在这里插入图片描述
将这9个值加起来,就是中心点的高斯滤波的值。对所有点重复这个过程,就得到了高斯模糊后的图像。

代码注释:

#高斯函数
void GaussianBlur(InputArray src,      //输入图像
            OutputArray dst,    //输出图像
            Size ksize,       //内核的大小
            double sigmaX,     //高斯核函数在X方向的标准偏差  
            double sigmaY=0,    //高斯核函数在Y方向的标准偏差
            intborderType=BORDER_DEFAULT )   

#include <opencv2/opencv.hpp>
using namespace cv; 
int main(int argc,char** argv) {
    //载入原图
    Mat image = imread("Gaussian.jpg");
    //创建窗口
    namedWindow("高斯滤波【原图】");
    namedWindow("高斯滤波【效果图】");
    //进行滤波操作
    Mat out;
    GaussianBlur(image,out,Size(3,3),0,0);
    //显示
    imshow("高斯滤波【原图】", image);
    imshow("高斯滤波【效果图】", out);
    waitKey(0);
    return(0);
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值