利用OpenCV的函数GaussianBlur()对图像进行高斯滤波

高斯滤波是常见的滤波处理方法。

高斯滤波器本质上是一个低通滤波器,所以对图像进行高斯滤波运算后,图像的高频分量会被滤除,体现出来的效果是图像被模糊化处理了。

OpenCV提供了函数GaussianBlur()对图像进行高斯滤波处理。其函数原型如下:

void cv::GaussianBlur	(	InputArray 	src,
							OutputArray dst,
							Size 	ksize,
							double 	sigmaX,
							double 	sigmaY = 0,
							int 	borderType = BORDER_DEFAULT 
						)	

其参数意义如下:

src---待高斯滤波图像,图像可以具有任意的通道数目,每个通道会被独立滤波,每个通道的数据类型必须为CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。

dst---输出图像,与输入图像src具有相同的尺寸、通道数和数据类型。

ksize---高斯滤波器高斯核的尺寸,滤波器的长和宽可以不一样,但是必须都是正奇数。如果尺寸填为0,则由下面的标准差参数自动计算尺寸。

sigmaX---高斯核在X方向上的标准差。

sigmaY---高斯核在Y方向上的标准差,如果这个参数的值为0,那么sigmaY=sigmaX。如果sigmaY=sigmaX=0,则根据高斯核的尺寸来自动计算两个方向上的标准差。为了更好地控制这个滤波过程,建议大家对参数ksize、sigmaX、sigmaY都进行填写。

borderType---边界扩展处理方式。有关图像边界扩展方式可以参考我写的另一篇博文,链接 https://blog.csdn.net/wenhao_ir/article/details/12417798

据说高斯滤波器对服从高斯分布的噪声滤除效果还不错,所以本文的示例代码就用高斯滤波器来对按高斯分布产生的随机噪声图像进行滤波处理。

代码如下:

//博主微信/QQ 2487872782
//有问题可以联系博主交流
//有图像处理需求也可联系博主
//图像处理技术交流QQ群 271891601

//OpenCV版本:3.0
//VS版本:2012

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include<opencv2/imgcodecs/imgcodecs.hpp>
#include <opencv2/imgproc/imgproc.hpp>


#include <time.h>  
#include <iostream>
 
using namespace cv;
using namespace std;
 
int main()
{
        //生成按高斯分布的噪声图像
		Mat image_gaussian_noise( cv::Size(400,300), CV_8UC3, cv::Scalar(0,0,0) );
        RNG rng(time(NULL));
        rng.fill(image_gaussian_noise, RNG::NORMAL, 0, 30);  /*用高斯分布随机数填充图像*/
 
        imshow("原噪声图像", image_gaussian_noise);
 
        Mat dst;
        GaussianBlur(image_gaussian_noise, dst, Size(3, 3),0, 0);
        imshow("3*3高斯核滤波后的图像", dst);
		GaussianBlur(image_gaussian_noise, dst, Size(5, 5),0, 0);
		imshow("5*5高斯核滤波后的图像", dst);
		GaussianBlur(image_gaussian_noise, dst, Size(9, 9),0, 0);
		imshow("9*9高斯核滤波后的图像", dst);
 
        waitKey(0);
        return EXIT_SUCCESS;
}

运行结果如下图所示:

可见,滤波效果还是不错的,大家在使用中可根据实际的图像去调整相应的参数以达到最优效果。不过要注意的是,由于高斯噪声的频谱几乎是均匀分布的,详情参考我的另一篇博文:https://blog.csdn.net/wenhao_ir/article/details/124566310  所以要想完全滤除高斯噪声也是不现实的。

上面代码中用到了类RNG来产生高斯噪声,它的用法可以参考我的另一篇博文,链接:https://blog.csdn.net/wenhao_ir/article/details/51698089

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值