OpenCV学习之旅三:图像处理平滑操作

平滑(模糊)操作: 为了较少图片的噪音和伪影,平滑图像与图像模糊处理是相同的含义,平滑处理即是通过操作后,使得图像的像素值与邻域内其他像素值的的变化程度减小。在一张图像上,边缘的像素值是变化程度最剧烈的地方,而其他相对平缓。因此,平滑图像最直观的表现是图像的上物体的边缘轮廓变得模糊。

有五种不同的平滑操作:

1.简单模糊和方框性滤波器   blur

2.中值滤波器  medianblur

3.高斯滤波器 (首选) gaussianblur

4.双边滤波器 bilateralfilter

5.scharr滤波器

 

以高斯滤波器来学习。

高斯滤波

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

实质上是一种信号的滤波器,其用途为信号的平滑处理,数字图像用于后期应用,其噪声是最大的问题,因为误差会累计传递等原因,大多图像处理教材会在很早的时候介绍Gauss滤波器,用于得到信噪比SNR较高的图像(反应真实信号)。高斯平滑滤波器对于抑制服从正态分布的噪声非常有效。

src:源图像
dst:目标图像
borderType:边缘像素的平滑方式
ksize:滤波器的宽度核高度
sigmax:高斯核在x方向的sigma值(最大值的半宽)
sigmay:在y方向的sigma值


gaussianblur(src,dst,ksize,sigmax,sigmay,bordertype)

 

生成高斯滤波器

 

cv::getGaussianKernal()

代码实现

#include<iostream>
#include<opencv2\highgui\highgui.hpp>
#include<opencv2\core\core.hpp>
#include <opencv2\imgproc\imgproc.hpp>
 
using namespace std;
using namespace cv;
 
int main()
{
	Mat img, imgGray,result,dst;
	img = imread("C:\\Users\\shawn\\Pictures\\Saved Pictures\\1.JPG");
	if (!img.data) {
		cout << "Please input image path" << endl;
		return 0;
	}
	imshow("原图", img);
	/*cvtColor(img, imgGray, CV_BGR2GRAY);
	imshow("灰度图", imgGray);
	threshold(imgGray, result, 100, 255, CV_THRESH_BINARY);
	imshow("二值化图", result);//二值化*/
	GaussianBlur(img, dst, Size(7, 7), 0, 0);//平滑操作
	//显示效果图
	imshow("高斯滤波【效果图】", dst);
	waitKey();
	destroyAllWindows();
 
    return 0;
}

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值