OpenCV4.0进阶(2)图像均值模糊与高斯模糊

知识点:

图像均值与高斯模糊:

均值模糊,是卷积核的系数完全一致。上一节我们便实现了自定义版本的均值模糊与API版本的均值模糊;

高斯模糊,考虑了中心像素距离的影响,对距离中心像素使用高斯分布公式生成不同的权重系数给卷积核,然后用此卷积核完成图像卷积得到输出结果就是图像高斯模糊之后的输出。

相关API:

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

- src:输入图像,Mat类型,图像深度为CV_8U、CV_16U、CV_16S、CV_32F、CV_64F;

- dst:输出图像,与输入图像有相同的类型和尺寸;

- ksize:卷积核的大小,ksize.width 和 ksize.height 可以不相同但是这两个值必须为正奇数,如果这两个值为0,他们的值将由sigma计算;

- sigmaX:高斯核函数在X方向上的标准偏差;

- sigmaY:高斯核函数在Y方向上的标准偏差,如果 sigmaY 是0,则函数会自动将 sigmaY 的值设置为与 sigmaX 相同的值,如果 sigmaX 和 sigmaY 都是0,这两个值将由 ksize.width 和 ksize.height 计算。通常将ksize、sigmaX和sigmaY都指定出来;

- borderType:图像边界处理方式,通常默认即可。

注意:

ksize越大,图像模糊程度越厉害;sigma越大,图像模糊程度越厉害。

高斯模糊的源码分析,可以参考这篇博客:OpenCV源码分析(三):高斯模糊

 

代码演示:

#ifndef DAY22
#define DAY22

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

void day22() {

	Mat src = imread("G:/opencvTest/girl.jpg");
	if (src.empty()) {
		printf("could not load image...\n");
		return;
	}
	namedWindow("input", WINDOW_AUTOSIZE);
	imshow("input", src);

	Mat dst1, dst2, dst3;
	blur(src, dst1, Size(5, 5), Point(-1, -1), 4);
	GaussianBlur(src, dst2, Size(5, 5), 15, 0, 4);
	GaussianBlur(src, dst3, Size(0, 0), 15, 0, 4);
	//GaussianBlur(src, dst2, Size(0, 0), 30, 0, 4);

	imshow("blur", dst1);
	imshow("gaussian blur ksize = 5", dst2);
	imshow("gaussian blur sigmaX = 15", dst3);

	waitKey();
}


#endif // !DAY22

 

结果展示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Apple_Coco

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值