matlab对图像进行均值滤波_数字图像处理之均值滤波

本文探讨了使用MATLAB对图像进行不同大小的均值滤波操作所花费的时间,分别展示了3*3窗口、11*11窗口和21*21窗口在滤波过程中的耗时,从17 ms到535.4 ms不等,揭示了滤波窗口大小对处理速度的影响。
摘要由CSDN通过智能技术生成
图像噪声,通常指图像中除了成像物体之外的其它信息,比如斑点和颗粒,这些额外的错误信息干扰了成像物体的显示,影响成像质量,所以往往需要通过图像滤波(也称为图像去噪)来消除这些噪点。常见的图像滤波算法有均值滤波、高斯滤波、中值滤波、双边滤波、非局部均值滤波,以及近几年火热的基于深度学习的图像滤波等。本章节将详细讲解均值滤波算法的原理,以及C++实现和优化。首先膜拜一下那些写Opencv代码的大佬们,他们写的代码不仅稳定性良好,运行效率也超级高,很多时候我们费尽心思写了一个相同的算法,发现性能与Opencv的接口函数相比还是差了许多,所以会有一丢丢的心理落差,但是抱着学习的态度,追赶大佬的脚步,精益求精,相信我们自己也是可以的!均值滤波,也就是计算每一个像素点周围像素点(包括该点)的平均值,作为该像素点滤波之后的值,通常取以该像素点为中心的矩形窗口内的所有像素点来计算平均值,矩形窗口的大小一般为3*3,5*5,9*9,...,(2n+1)* (2n+1)。窗口越大,滤波效果越好,但是图像也变得更加模糊,所以需要根据实际情况设置矩形窗口的大小。比如3*3窗口的均值滤波如下图所示,点(x,y)的滤波值由其周围9个点(包括其自身)计算平均值得到。

031931ad8af935166b47f201c08e36e1.png

上图中点(x,y)的滤波值用公式表示为:

2256eccbe11a826128e4f2131303d0b3.png

对于 (2n+1)* (2n+1)窗口,点(x,y)的平均滤波值可根据如下公式计算:

5c8fcd8dfb5e7a753af03f129c3cb2a9.png

为了解决图像边缘像素点取不到完整矩形窗口的问题,通常先把图像的上、下边界扩充n行,左右边界扩充n列,实际计算时,只计算图像原有像素点的窗口平均值。比如当矩形窗口为3*3,则n的值为1,这种情况下扩充边界的示意图如下图所示:

a4a8796f110e2f9dd09b5cc300228fc1.png

根据以上原理,基于Opencv和C++的均值滤波实现代码如下:
void blur_mean(Mat src, Mat &dst,
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值