openCV学习笔记-模糊图像之blur

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mango_haoming/article/details/62416789

图像模糊是对图像进行平滑处理。模糊函数blur是一个线性的滤波操作,也称为均值滤波。

滤波

滤波是将信号中特定波段去除的操作,是防止和抑制干扰的一种措施。从而可以提取有用的信号。

均值滤波

均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。

应用场景

滤波可以讲图片中比较尖锐的部分(也就是变化比较急剧突兀)进行平滑处理,通过blur函数一般来去除噪声,可以在图像边缘提取、特征提取之前对图像进行大小为3x3的模糊以此来达到去掉干扰和噪声目的

blur 函数原型:

CV_EXPORTS_W void blur( InputArray src, OutputArray dst,
                        Size ksize, Point anchor=Point(-1,-1),
                        int borderType=BORDER_DEFAULT );

参数解释:

src:输入的原图,Mat类对象。该对象可以使任意通道的

dst:输出的图像

Size():图像处理卷积核的大小,可以理解为模糊处理的深度,数值越大模糊程度越大

point:卷积核参考点,默认值(-1,-1)

Type:处理的类型,表示对边缘的处理方法,一般默认4表示默认处理方法

示例代码:

#include<iostream>
#include <opencv2/opencv.hpp> 
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;


int main()
{
	
	Mat srcImage = imread("haoming.jpg");
	if (srcImage.empty())
	{
		return -1;//检查是否加载成功
	}
	imshow("srcImage",srcImage);
	waitKey(0);
	Mat resImage_blur;

	blur(srcImage, resImage_blur,Size(10,10),Point(-1,-1),4);
	imshow("resIamge-blur",resImage_blur);
	waitKey(0);

	return 0;
}

测试效果:





改变Size(x,y)参数还可以实现单方向的模糊处理

x方向模糊:

blur(srcImage, resImage_blur,Size(40,1),Point(-1,-1),4);


Y方向的模糊

blur(srcImage, resImage_blur,Size(1,40),Point(-1,-1),4);

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页