均值滤波(Mean filtering)

这篇具有很好参考价值的文章主要介绍了均值滤波(Mean filtering)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.概念介绍

 均值滤波是典型的 线性滤波算法,是指用当前像素点周围nxn个像素值的均值来代替当前像素值。使用该方法遍历处理图像内的每一个像素点,可完成整幅图像的均值滤波。

2.基本原理

 如图2-1,我们对第5行第5列的像素点进行均值滤波时,首先需要考虑需要对周围多少个像素点去取平均值。通常情况下,我们会以该当前像素为中心,对行数和列数相等的一块区域内的所有像素点的像素取平均值
 例如,我们可以以当前像素点的像素周围3x3区域内所有像素点的像素取平均值,也可以对周围5x5区域内所有像素点的像素值取平均值。
均值滤波(Mean filtering)
图2-1  一幅图像的像素值示例

 当前像素点的位置为第5行第5列时,我们对其周围5*5区域内的像素值取平均,计算方法如下:
像素点新值=
[(197+25+106+156+159)
(149+40+107+5+71)+
(163+198+226+223+156) +
(222+37+68+193+157)+
(42+72+250+41+75)]/25 = 126

计算得到新值以后,我们将新值作为当前像素点均值滤波后的像素值。我们针对图2-1的每一个像素点计算其周围5x5区域内的像素值均值,并将其作为当前像素点的新值,即可得到当前图像的均值滤波结果。

然而图像的边界并不存在5x5的领域区域。如图2-1的左上角第1行第1列上的像素点,其像素值为23。如果以其为中心点取周围5x5领域,则5x5领域的部分区域位于图像外部。但是图像外部是没有像素点和像素值的,显然是无法计算该点的领域均值的。

因此,针对边缘的像素点,可以只取图像内存在的周围领域点的像素值均值。如图2-2所示,计算左上角的均值滤波结果时,仅取图中灰色背景的33领域内的像素值的平均值。计算方法如下:
像素点新值=
[(23+158+140)+
(238+0+67)+
(199+197+25)]/9
=116
均值滤波(Mean filtering)
图2-2  边界点的处理

 除此之外,我们还可以扩展当前图像的周围像素点。例如,可以将当前9
7大小的图像扩展为13*11大小的图像,如图2-3所示。
均值滤波(Mean filtering)
图2-3  扩展边缘

 在完成图像边缘拓展后,我们可以在新增的行列内填充不同的像素值。在此基础上,再针对9x7的原始图像计算其5x5领域内像素点的像素值均值。OpenCV提供了多种边界处理方式,我们可以根据实际需要选用不同的边界处理模式。

 针对第5行第5列的像素点,其运算过程相当于一个额内部值是1/25的55矩阵进行相乘运算,从而得到均值滤波的结果为126。如图2-4所示。
均值滤波(Mean filtering)
图2-4  针对第 5 行第 5 列像素点均值滤波的运算示意图

根据上述运算,针对每一个像素点,都是与一个内部值均为1/25的5
5举证相乘,得到均值滤波的计算结果。示意图如图2-4所示
均值滤波(Mean filtering)
图1-4  针对每一个像素点均值滤波的运算示意图

将使用到的5x5矩阵一般化,可以得到如下图2-5的结果。
均值滤波(Mean filtering)
图2-5  将矩阵一般化

在Opencv中,将图1-5右侧的矩阵称为卷积核,其一般形式如下图2-6所示。其中M和N分别对应高度和宽度,一般情况下M和N的值是相等的,常用的3x3、5x5和7x7。如果M和N的值越大,参与运算的值就越大,参与运算的像素点的数量就越多,图像失真就越严重
均值滤波(Mean filtering)
图2-6  卷积核

3.函数语法

在OpenCV中,实现均值滤波的函数是cv2.blur(),其语法格式为:dst = cv2.blur( src, ksize, anchor, borderType )
参数解析
dst:返回值,表示进行均值滤波后得到的处理结果。
src:需要处理的图像,即原始图像。它可以有任意数量的通道,并能对各个通道独立进行处理。图像深度应该是CV_8U、CV_16U、CV_16S、CV_32F 或者 CV_64F 中的一种。
ksize:滤波核的大小。滤波核的大小是指在均值处理的过程中,其领域图像的高度和宽度。例如,其值可以为(5,5),表示以5*5大小的领域均值作为图像均值滤波处理的结果。
anchor:锚点,默认值是(-1, -1),表示当前计算均值的点位于核的中心点位置。该值使用默认值即可,在特殊情况下可以指定不同的点作为锚点。
borderType:边界样式,该值决定了以何种方式处理边界,其值如下表所示。一般情况下不需要考虑该值的取值,直接采用默认值即可。

类型 说明
cv2.BORDER_CONSTANT iiiiii abcdefgh iiiiiii,特定值 i
cv2.BORDER_REPLICATE aaaaaa abcdefgh hhhhhhh
cv2.BORDER_REFLECT fedcba abcdefgh hgfedcb
cv2.BORDER_WRAP cdefgh abcdefgh abcdefg
cv2.BORDER_REFLECT_101 gfedcb abcdefgh gfedcba
cv2.BORDER_TRANSPARENT uvwxyz absdefgh ijklmno
cv2.BORDER_REFLECT101 与 BORDER_REFLECT_101 相同
cv2.BORDER_DEFAULT 与 BORDER_REFLECT_101 相同
cv2.BORDER_ISOLATED 不考虑 ROI(Region of Interest,感兴趣区域)以外的区域

通常情况下,使用均值滤波函数时,对于锚点 anchor 和边界样式 borderType,直接采用其
默认值即可。因此,函数 cv2.blur()的一般形式为:dst = cv2.blur( src, ksize)

4.程序示例

读取一幅噪声图像,使用函数 cv2.blur()对图像使用三种不同大小的卷积核进行均值滤波处理,得到去噪图像,并显示原始图像和去噪图像。

import cv2
Gn=cv2.imread("Gaussian_noise.jpg") 
Mf_a=cv2.blur(Gn,(2,2))
Mf_b=cv2.blur(Gn,(5,5))
Mf_c=cv2.blur(Gn,(10,10))
cv2.imshow("噪声图像",Gn)
cv2.imshow("使用2×2的卷积核进行均值滤波",Mf_a)
cv2.imshow("使用5×5的卷积核进行均值滤波",Mf_b)
cv2.imshow("使用10×10的卷积核进行均值滤波",Mf_c)
cv2.waitKey()
cv2.destroyAllWindows()

运行上述程序会分别显示噪声图像和使用不同卷积核进行均值滤波的去噪图像
均值滤波(Mean filtering)
图4-1  噪声图像

均值滤波(Mean filtering)
图4-2  使用2x2的卷积核进行均值滤波的图像

均值滤波(Mean filtering)
图4-3  使用5x5的卷积核进行均值滤波的图像

均值滤波(Mean filtering)
图4-4  使用10x10的卷积核进行均值滤波的图像

均值滤波(Mean filtering)
图4-5  不含噪声的原始图像

从使用不同大小的卷积核进行均值滤波处理图像可以发现:卷积核越大,图像的失真情况越明显

卷积核越大,参与到均值运算中的像素就会越多,即当前计算的算的是更多点的像素值的平均值,去噪效果越好,当然花费的计算时间也会越长,同时让图像失真越严重。因此在实际处理中,要在失真和去噪效果之间取得平衡,选取合适大小的卷积核文章来源地址https://www.toymoban.com/news/detail-444371.html

到了这里,关于均值滤波(Mean filtering)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MATLAB知识点:mean : 计算平均值(mean/average value)

    ​讲解视频:可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili 节选自第3章 3.4.1节 假设向量 ,即向量y有n个元素,那么它的平均值等于. 在MATLAB中,mean函数可以用来计算

    2024年04月09日
    浏览(75)
  • 使用R语言的apply函数和mean函数计算矩阵每列数据的均值

    使用R语言的apply函数和mean函数计算矩阵每列数据的均值 在R语言中,apply函数是一个非常有用的函数,它可以对矩阵或数据框的行或列进行操作。而mean函数则是用来计算向量或矩阵的均值。结合这两个函数,我们可以很方便地计算矩阵每列数据的均值。 下面我们来演示一下如

    2024年02月01日
    浏览(48)
  • 图像处理中调用matlab自带均值滤波、高斯滤波和中值滤波函数的案例以及自编均值滤波的案例。

    @[TOC](利用matlab自带均值滤波器的代码,分别对一幅图像实现3*3,5*5,7*7,9*9的均值滤波,并对实验结果进行分析。) @[TOC](分别给干净图像添加高斯和椒盐噪声,然后进行均值滤波、高斯滤波和中值滤波,并对实现结果进行分析。) @[TOC](自编均值滤波器对一幅图像实现填充后,

    2024年02月11日
    浏览(39)
  • Opencv-图像噪声(均值滤波、高斯滤波、中值滤波)

    图像噪声是图像处理中常见的问题,它是由于各种原因引入的不希望的随机变化或干扰,导致图像质量下降。噪声可以出现在图像的亮度、颜色和纹理等方面,对图像分析、计算机视觉和图像处理任务造成困难。为了减少或消除图像中的噪声,常常使用不同类型的滤波技术。

    2024年02月04日
    浏览(60)
  • 【halcon】--图像平滑--均值滤波、中值滤波

    图像平滑的主要目的是减小图像噪声 经常使用的有高斯滤波,均值滤波,中值滤波; 均值滤波:就是将一个窗口区域中的像素计算平均值,然后将窗口中计算得到的均值设置为锚点上的像素值。对高斯噪声有较好的处理效果,但是模糊效果比较明显,会丢失一些细节。 中值

    2024年02月05日
    浏览(40)
  • OpenCV-21方盒滤波和均值滤波

    使用API --- boxFiter(src, ddepth, ksize[,dst[,anchor[, normalize[, borderType]]]])方盒滤波 方盒滤波的卷积核如下所示: --- normalize = Ture时, a = 1 / (W*H)滤波器的宽高 --- normalize = False时, a = 1   相当于什么都没做 一般情况使用normalize = Ture的情况,这时方盒滤波等价于均值滤波。 使用AP

    2024年01月16日
    浏览(31)
  • OpenCV(二十二):均值滤波、方框滤波和高斯滤波

    目录 1.均值滤波 2.方框滤波 3.高斯滤波 1.均值滤波        OpenCV中的均值滤波(Mean Filter)是一种简单的滤波技术,用于平滑图像并减少噪声。它的原理非常简单:对于每个像素,将其与其周围邻域内像素的平均值作为新的像素值。 具体的均值滤波原理如下: 定义滤波器大小

    2024年02月09日
    浏览(35)
  • matlab 点云滤波(中值、均值、高斯滤波)代码

    介绍一下滤波函数  Method-平滑处理方法 \\\"movmean\\\"(默认)|\\\'movmedian\\\'|\\\'gaussian\\\'|\\\'lowess\\\'|\\\'loess\\\'|\\\'rlowess\\\'|\\\'rloess\\\'|\\\'sgolay\\\' \\\'movmean\\\'   -A的每个窗口内的移动平均值,此方法对于减少数据中的周期性趋势很有用。 \\\'movmedian\\\'  -A的每个窗口的移动中位数。当存在离群值时,此方法对于减少数据中的

    2024年02月01日
    浏览(47)
  • OpenCV 入门教程:均值滤波和高斯滤波

    在图像处理和计算机视觉领域,滤波是一项常见的图像处理操作,用于平滑图像、去除噪声等。 OpenCV 提供了多种滤波方法,其中包括均值滤波和高斯滤波。本文将以均值滤波和高斯滤波为中心,为你介绍使用 OpenCV 进行滤波操作的基本步骤和实例。 Ƕ

    2024年02月13日
    浏览(36)
  • ZYNQ图像处理(6)——均值滤波和中值滤波

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

    2024年02月08日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包