模糊处理(上)--均值模糊和中值模糊(opencv学习记录--3)

本文介绍了图像处理中的模糊概念,通过近视眼观察世界和失焦照片来直观理解。接着讲解了两种模糊方法:均值模糊和中值模糊。均值模糊通过计算像素邻域的平均值来模糊图像,而中值模糊则使用邻域像素的中值,特别适合消除椒盐噪声。文中提供了OpenCV库中相应函数的使用示例,并建议读者可以通过调整参数观察模糊效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.前言

图像模糊,原理上利用了数学上的卷积。虽然但是,我觉得就我学到的四个模糊方式,暂且不需要用卷积来解释。但是也是可以先去了解一下用卷积来解释的模糊处理。多学点东西准没坏处吖。(其实我也没完全弄懂这玩意,而且一起写起来可能会很冗长,等我慢慢搞明白再写一篇吧)

但是说起模糊处理,我们先来理解啥是模糊吧。

1.什么是模糊?

模糊,我觉得近视特别是像我这种有高度近视的同学应该很熟悉,当你摘下眼镜之后,你会觉得世界都变成了一片,此时我们无法察觉物体的各个细节以及不同物体之间的边界。或者没有近视的同学,可以用自己手机拍一张失焦的照片。也可以参考下面这个图

img

那么反应在计算机里面,什么是模糊呢?

我们知道图片是由像素构成的,也就是像素的多少和像素值来取决于图片呈现给我们观感。

我们在不改变像素的多少的前提下,通过知道相邻的像素值相差的更多的时候,我们便会觉得这个图片显示的更为分明,也就是说,

如果把相邻的像素点的值变得更为相近,那么是不是我们就会对应的丢失更多细节和边缘?也就会达到了模糊的效果。

然后我们看opencv提供的几种模糊的实现

2.均值模糊

1.原理

假设我们现在有一个图片是6*6的像素,然后我们把每一个点的像素值改为他周围的像素值和他本身的像素值的均值,最后的出来的便是经过均值模糊生成的图片。而我们确定的每一次处理的大小便是一个3*3的像素矩阵。

在这里插入图片描述

用矩阵来表示:
在这里插入图片描述

其实最后均值模糊的意思就是:

你先确定一个size(像素矩阵的大小),然后把图像的每一个像素都按照这个size去取自己和周围像素的均值然后赋给自己。size越大,也就是越大范围内的像素点的值都会更加相似,也就是说图像更加的模糊。(当然函数决定也可以不赋给自己)

ps:在均值滤波中所乘的全为1的矩阵如果用卷积来理解,便被称为卷积核。只是这个矩阵倒过来后仍然为原矩阵,高斯滤波所乘的高斯函数倒过来其实应该也是他自己,所有没用用卷积来解释,反而感觉会更加迷茫,不明白为什么模糊一定要用到卷积。

我觉得更好的说法是,模糊可以用卷积去解释,而图像处理其他很多也可以用卷积去解释

2.API

blur(Mat src, Mat dst, Size(xradius, yradius), Point(-1,-1));

src是你要处理的图像

dst是你处理完后的图像

Size()就是每一次处理的像素矩阵的大小

Point(-1,-1)就是默认将最后的平均值赋给中间像素

3.案例

这里通过滑轨调节size的大小你可以看一下这个效果(ps:size的x,y值不能拖到0!!!!)

int main(int argc, char** argv)
{
	string path = "elment/xjj.jpg";
	Mat img = imread(path);
	Mat img2 = Mat::zeros(img.size(),img.type());
	Size size(7, 7);
	imshow("img", img);
	int x = 1, y = 1;
	namedWindow("Trackbars", (640, 200));//新建了一个窗口--轨迹栏
	createTrackbar("x", "Trackbars", &x, 200);
	createTrackbar("y", "Trackbars", &y, 200);
	while (1)
	{
		size.height = x;
		size.width = y;
		GaussianBlur(img,img2,size,0,0);
		imshow("img", img2);
		waitKey(10); 
	}
	return 0;
}

2.中值模糊

1.原理

如果你理解了均值函数的定义,那这个你可以直接从字面意思去理解

就是将size()的那个矩阵里面的所有像素的中值赋值给中间像素

2.API

medianBlur(Mat src, Mat dest, ksize)

注意一下ksize,这是一个int,也就是x和y要相等,并且ksize必须是奇数

3.作用

可以用来消除椒盐噪声

椒盐噪声就是在图像上随机出现黑色白色的像素。

参考:(1条消息) 椒盐噪声_MingChao_Sun-CSDN博客_椒盐噪声

原理:因为椒盐噪声即黑色或者白色的像素点的值是很大的,所以他本身肯定不会是中值,然后被中值替代

3.水了,就这样~

饿了,先去吃饭,之后再总结一下高斯模糊和双边模糊。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值