Opencv基础入门笔记08

Opencv基础入门笔记:图像模糊之均值模糊及高斯模糊

1.图像模糊的概念理解

我们都听说过图片的去模糊,但是图片的模糊又有什么用呢?
下面借两张图来说明。
下面两张图中,左边是原图,右边是模糊处理后的图片,可以明显的看到图上的噪声减少了很多,同时,一些小的,较小的白点也被去掉了。也就是说:作用1:去噪点,去除椒盐噪点
Opencv基础入门笔记08_第1张图片
当我们再把图片中像素二值化处理,合理设置最低阈值,最高阈值进行二值化处理,发现,被提取出来的特征白点,变得非常明显,这就是方便了我们进行一些目标的检测!所以,作用2:过滤较小目标,,做目标提取与分析

Opencv基础入门笔记08_第2张图片

2.图片模糊滤波种类

分均值滤波,双边滤波,中值滤波,最大最小值滤波等,这些都涉及了数学矩阵的叉乘点乘!!!
公式:
在这里插入图片描述
h(k,l)就是卷积核(特殊的卷积核我们又叫卷积算子),也叫权重系数,公式简化写为
在这里插入图片描述
图像表达:
Opencv基础入门笔记08_第3张图片
均值滤波(线性)(归一化滤波)——blur
正如其文字表达的那样,是采用了平均值。是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。

中值滤波(非线性)——medianblur
同上所述,只不过把平均值改为了中位数。

最大最小值滤波(线性)——max_min_Valueblur
最大最小值滤波是一种比较保守的图像处理手段,与中值滤波类似,首先要排序周围像素和
中心像素值,然后将中心像素值与最小和最大像素值比较,如果比最小值小,则替换中心像
素为最小值,如果中心像素比最大值大,则替换中心像素为最大值。

双边模糊滤波(非线性)——BilateralFilter
双边滤波是保留边缘的滤波方法,避免了边缘信息的丢失,保留了图像轮廓不变。双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。具有简单、非迭代、局部的特点 [1] 。双边滤波器的好处是可以做边缘保存

高斯模糊(线性)——GaussianBlur
根据高斯函数的形状来选择权值的线性滤波。 高斯平滑滤波对去除服从正态分布的噪声是很有效的。

3.代码演示(高斯滤波与均值滤波)

在vs2017上查看源码声明,边看,就知道参数的具体含义了,这也是我推荐学各种库的人要学会的

blur声明
Opencv基础入门笔记08_第4张图片
GaussianBlur声明
Opencv基础入门笔记08_第5张图片

// Opencv 文件.cpp :
#include "pch.h"
#include
#include 
using namespace cv;
using namespace std;
char output_blur[] = "blur";
char output_gassian[] = "gassian_blur";
int main()
{
	Mat src1 = imread("E:\\360downloads\\0.jpg");


	if (!src1.data) {//!src.data与src.empty()一样;
		printf("failure to load the image1 ");
		return -1;
	}
	//resize(src1, src1, Size(900, 840));
	imshow("src1", src1);
	Mat dst1 = Mat::zeros(src1.size(), src1.type());//创建一张同大小的图片
	blur(src1, dst1, Size(40, 5), Point(-1, -1));//均值模糊,卷积核可以不是奇数
	imshow(output_blur, dst1);
	Mat dst2 = Mat::zeros(src1.size(), src1.type());
	GaussianBlur(src1, dst2, Size(31, 11), 1, (0.0), 4);//高斯模糊,卷积核为31*11,必须为奇数
	imshow(output_gassian, dst2);


	waitKey(0);
	return 0;
}

这里,blur卷积核大小不同与GaussianBlur时效果:
Opencv基础入门笔记08_第6张图片
当修改GaussianBlur,与blur卷积核都是(31,11)时
Opencv基础入门笔记08_第7张图片
从图上可以明显看到:原图周围都是白色,扑克牌边缘也是白色,所以,用blur,是很难克服边缘像素丢失问题,GaussianBlur则不会有这个问题,而且,blur均值模糊滤波效果强—扑克牌都基本无法分辨,GaussianBlur细节保留完整,模糊效果仅是朦胧。
——(至于是否继续增大卷积核,请读者尝试)

ps:有些东西可能写错,希望各位读者见谅并热心指出!

你可能感兴趣的:(#,opencv基础笔记,opencv,卷积,计算机视觉)