当前位置:   article > 正文

Opencv(十九)高斯滤波_opencv 高斯滤波

opencv 高斯滤波

高斯噪声是一种常见的噪声,图像采集的众多过程中都容易引入高斯噪声,因此针对高斯噪声的高斯滤波也广泛应用于图像去噪领域。高斯滤波器考虑了像素离滤波器中心距离的影响,以滤波器中心位置为高斯分布的均值,根据高斯分布公式和每个像素离中心位置的距离计算出滤波器内每个位置的数值,从而形成一个形如图所示的高斯滤波器。

1、使用GaussianBlur()函数来对图像进行高斯滤波

  1. void cv::GaussianBlur(InputArray src,
  2. OutputArray dst,
  3. Size ksize,
  4. double sigmaX,
  5. double sigmaY = 0,
  6. int borderType = BORDER_DEFAULT
  7. )
  8. src:待高斯滤波图像,图像可以具有任意的通道数目,但是数据类型必须为CV_8U,CV_16U,CV_16S,CV_32F或CV_64F
  9. dst:输出图像,与输入图像src具有相同的尺寸、通道数和数据类型
  10. ksize:高斯滤波器的尺寸,滤波器可以不为正方形,但是必须是正奇数。如果尺寸为0,则由标准偏差计算尺寸
  11. sigmaX:X方向的高斯滤波器标准偏差
  12. sigmaY:Y方向的高斯滤波器标准偏差; 如果输入量为0,则将其设置为等于sigmaX,如果两个轴的标准差均为0,则根据输入的高斯滤波器尺寸计算标准偏差
  13. borderType:像素外推法选择标志,取值范围在表3-5中给出,默认参数为BORDER_DEFAULT,表示不包含边界值倒序填充

 该函数第三个参数是高斯滤波器的尺寸,与前面函数不同的是,该函数除了必须是正奇数以外,还允许输入尺寸为0,当输入的尺寸为0时,会根据输入的标准偏差计算滤波器的尺寸。函数第四个和第五个参数为X方向和Y方向的标准偏差,当Y方向参数为0时表示Y方向的标准偏差与X方向相同,当两个参数都为0时,则根据输入的滤波器尺寸计算两个方向的标准偏差数值。

2、代码

  1. #include <opencv2\opencv.hpp>
  2. #include <iostream>
  3. using namespace cv;
  4. using namespace std;
  5. int main()
  6. {
  7. Mat equalLena = imread("equalLena.png", IMREAD_ANYDEPTH);
  8. Mat equalLena_gauss = imread("equalLena_gauss.png", IMREAD_ANYDEPTH);
  9. Mat equalLena_salt = imread("equalLena_salt.png", IMREAD_ANYDEPTH);
  10. if (equalLena.empty()||equalLena_gauss.empty()||equalLena_salt.empty())
  11. {
  12. cout << "请确认图像文件名称是否正确" << endl;
  13. return -1;
  14. }
  15. Mat result_5, result_9; //存放不含噪声滤波结果,后面数字代表滤波器尺寸
  16. Mat result_5gauss, result_9gauss; //存放含有高斯噪声滤波结果,后面数字代表滤波器尺寸
  17. Mat result_5salt, result_9salt; 存放含有椒盐噪声滤波结果,后面数字代表滤波器尺寸
  18. //调用高斯滤波函数GaussianBlur()进行滤波
  19. GaussianBlur(equalLena, result_5, Size(5, 5), 10, 20);
  20. GaussianBlur(equalLena, result_9, Size(9, 9), 10, 20);
  21. GaussianBlur(equalLena_gauss, result_5gauss, Size(5, 5), 10, 20);
  22. GaussianBlur(equalLena_gauss, result_9gauss, Size(9, 9), 10, 20);
  23. GaussianBlur(equalLena_salt, result_5salt, Size(5, 5), 10, 20);
  24. GaussianBlur(equalLena_salt, result_9salt, Size(9, 9), 10, 20);
  25. //显示不含噪声图像
  26. imshow("equalLena ", equalLena);
  27. imshow("result_5", result_5);
  28. imshow("result_9", result_9);
  29. //显示含有高斯噪声图像
  30. imshow("equalLena_gauss", equalLena_gauss);
  31. imshow("result_5gauss", result_5gauss);
  32. imshow("result_9gauss", result_9gauss);
  33. //显示含有椒盐噪声图像
  34. imshow("equalLena_salt", equalLena_salt);
  35. imshow("result_5salt", result_5salt);
  36. imshow("result_9salt", result_9salt);
  37. waitKey(0);
  38. return 0;
  39. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/963998
推荐阅读
相关标签
  

闽ICP备14008679号