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

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.水了,就这样~

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

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告: 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,OpenCV,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。 我将带领大家一起来学习OpenCV4的图像处理原理和编程知识,并动手操练58案例代码。具体内容包括: 一、小白入门与初体验:禁果尝鲜二、图像基本操作:懵懵懂懂学图像三、图像统计操作:七七八八有收获四、图像卷积:不入虎穴焉得虎子五、磨皮美颜:柳暗花明又一村六、二值图像:阴阳合一法自然七、图像形态学:登高望远天地阔 音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? 因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。 梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。     

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值