7.1 均值滤波

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

7.1.1 基本原理

例如,希望对图 7-7 中位于第5 行第5 列的像素点进行均值滤波

e0ad6a9dccbad4646aa7471c5fb1ec8.jpg

在进行均值滤波时,首先要考虑需要对周围多少个像素点取平均值。通常情况下,我们会以当前像素点为中心,对行数和列数相等的一块区域内的所有像素点的像素值求平均。例如在图 7-7中,可以以当前像素点为中心,对周围 3×3 区域内所有像素点的像素值求平均,也可以对周围 5×5 区域内所有像素点的像素值求平均

当前像素点的位置为第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

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

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

针对边缘像素点,可以只取图像内存在的周围邻域点的像素值均值,如图7-8 所示,计算左上角的均值滤波结果时,仅取图中灰色背景的 3x3 邻域内的像素值的平均值。


05f6eca395aa0de46004424486d4096.jpg

在图 7-8中,对于左上角(第1 行第1列)的像素点,我们取第 1-3 列与第 1-3行交汇处所包含的 3×3 邻域内的像素点的像素值均值。因此,当前像素点的均值滤波计算方法为
新值 =[(23+158+140)+
(238+0+67)
(199+197+25)]/9 =116

计算完成后得到 116 将该值作为该点的滤波结果即可
除此以外,还可以扩晨当前图像的周围像素点。例如,将当前 9×7 大小的图像扩展为13x11大小的图像,如图 79 所示

699f541874d21e21478704366bb8e2a.jpg

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

针对图像中第5 行第5 列的像素点,其运算过程相当于与个内部值都是 1/25的5×5矩阵进行相乘计算,从而得到均值滤波的结果 126,其对应的关系如图 7-10 所示

微信图片_20190708223619.jpg

根据上述运算,针对每一个像素点,都是与一个内部值均为 1/25的 5×5 矩阵相乘,得到均值滤波的计算结果,如图 7-11 所示


微信图片_20190708223712.jpg

将使用的 5×5 矩阵一般化,可以得到如图 7-12 所示的结果

微信图片_20190708223757.jpg

在 OpenCV 中,图 7-12 右侧的矩降被称为卷积核,其一股形式为

式中,M和N 分别对应高度和宽度,一般况下,M和N 是相等的,例如比较用的 3×3,5×5,7x7等,如果M和N 的值越大,参与运算的像置点数量就越多,图像失真越严重

7.1.2 函数语法

在 Opencv中,实现均值滤波的函数是 cv2.blur(),其语法格式为:

dst = cv2.blur(src,ksize,anchhor,borderType)

式中
1.dst 是返回值,表示进行均值滤波后得到的处理结果,
2.src 是需要处理的图像,即原始图像。它可以有任意数量的通道,并能对各个通道独立
处理,图像深度应该是 CV_8U,CV_16U、CV_16S、CV_32F 或者 CV_64F 中的一种

3.ksize是滤波核的大小,滤波核大小是指在均值处理过程中,其邻域图像的高度和宽度
例如,其值可以为(5,5,表示以 5×5 大小的邻域均值作为图像均值滤波处理的结果

如下式所示

4b5a165375c746ec0c0310dd725cee6.jpg

4.anchor 是锚点,其默认值是(-1,-1),表示当前计算均值的点位于核的中心点位置,该值使用默认值因可,在特殊情况下可以指定不同的点作为锚点。
5.borderType 是边界样式,该值决定了以何种方式处理边界,其值如表 7-1 所示。一般情况下不需要考虑该值的取值,直接采用默认值即可

微信图片_20190708231513.jpg

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

dst = cv2.blur(src,ksize)

【例 7.1]读取一幅噪声图像,使用函数 cv2.blur() 对图像进行均值滤波处理,得到去嗓图像

并显示原始图像和去噪图像

根据题目要求,编写代码如下



import cv2
o=cv2.imread("C:\\Users\\Administrator\\Desktop\\opencv\\lenaNoise.png")
r=cv2.blur(o,(5,5))
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()


1562599185(1).png

【例 7.2】针对噪声图像,使用不同大小的卷积核对其进行均值滤波,并显示均值滤波的情况

根据题目要求,调整设置函数 cv2.blur()中的 ksize参数,分别将卷积核设置为 5x5 大小和30×30 大小,对比均值滤波的结果。

所编写的代码为


import cv2
o=cv2.imread("C:\\Users\\Administrator\\Desktop\\opencv\\lenaNoise.png")
r5=cv2.blur(o,(5,5))      
r30=cv2.blur(o,(30,30))      
cv2.imshow("original",o)
cv2.imshow("result5",r5)
cv2.imshow("result30",r30)
cv2.waitKey()
cv2.destroyAllWindows()

运行上述程序,分别显示原始图像(图(a)、使用 5×5 卷积核进行均值滤波处理结果图像(图(b),使用 30×30 卷积核进行均值滤波处理结果图像(图(),如图 7.14 所示

从图中可以看出,使用 5x5 的卷积核进行滤波处理时,图像的失真不明显:而使用 30×30的卷积核进行滤波处理时,图像的失真情况较明显

卷积核越大,参与到均值运算中的像素就会越多,即当前点计算的是更多点的像素值的平均值。因此,着积核越大,去噪效果越好,当然花费的计算时间也会越长,同时让图像失真越严重,在实际处理中,要在失真和去噪效果之间取得平衡,选取合适大小的卷积核

1562599510(1).png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354