方框滤波(Box filtering) 您所在的位置:网站首页 均值为0的高斯噪声适合用什么滤波器 方框滤波(Box filtering)

方框滤波(Box filtering)

2023-11-14 02:19| 来源: 网络整理| 查看: 265

1.基本原理

 与均值滤波不同的是,方框滤波不会计算像素的均值。在均值滤波中,滤波结果的像素值是任意一个点的邻域平均值,等于各邻域像素值之和除以邻域面积。而在方框滤波中,可以自由选择是否对均值滤波的结果进行归一化,即可以自由选择滤波结果是邻域像素值之和的平均值,还是邻域像素值之和。  以5×5的邻域为例,在进行方框滤波时,如果计算的是邻域像素值的均值,则滤波关系如图1-1所示;如果计算的是邻域像素值之和,则滤波关系如图1-2所示。 在这里插入图片描述 图1-1  方框滤波关系示例–计算邻域像素值均值 在这里插入图片描述 图1-2  方框滤波关系示例–计算邻域像素值之和 根据上述关系,如果计算的是领域像素值的均值,则使用的卷积核如图1-3所示 在这里插入图片描述 图1-3  计算邻域像素值均值所用的卷积核示例 如果计算的是邻域像素值之和,则使用的卷积核如图1-4所示: 在这里插入图片描述 图1-4  计算邻域像素值之和所用的卷积核示例

2.函数语法

在OpenCV中,实现方框滤波的函数是cv2.boxFilter(),其语法格式为:dst = cv2.boxFilter( src, ddepth, ksize, anchor, normalize, borderType ) 参数解析: dst:返回值,表示经过方框滤波处理后的结果。 src:需要被处理的图像,即原始图像。它能够有任意数量的通道,并能对各个通道独立处理。图像深度可以是 CV_8U、CV_16U、CV_16S、CV_32F 或者 CV_64F 中的一种。 ddepth:处理后结果图像的深度,一般使用-1表示与原始图像使用相同的图像深度。 ksize:滤波核的大小。滤波核大小是指在滤波处理过程中所选择的邻域图像的高度和宽度。例如,滤波核的值可以为(3,3),表示以3×3大小的邻域均值作为图像均值滤波处理的结果,如下图2-1所示。 在这里插入图片描述 图2-1  3×3大小的滤波核 anchor:锚点,默认值为(-1, -1),表示当前计算均值的点位于核的中心点位置。该值使用默认值即可,在特殊情况下可以指定不同的点作为锚点。 normalize:表示在滤波时是否进行归一化(这里指将计算结果规范化为当前像素值范围内的值)处理,该参数是一个逻辑值,可能为真(值为 1)或假(值为 0)   当参数normalize=0时,表示不需要进行归一化处理,直接使用邻域像素值的和。   当参数normalize=1时,表示要进行归一化处理,要用邻域像素值的和除以面积。 通常情况下,针对方框滤波,卷积核可以如下图2-2表示: 在这里插入图片描述 图2-2  方框滤波卷积核示意图 上述对应关系如图2-3所示: 在这里插入图片描述 图2-3  卷积核中的对应关系 例如,针对5×5邻域,当参数normalize=1时,要进行归一化处理,此时计算的就是均值滤波。这种情况下,函数 cv2.boxFilter()和函数 cv2.blur()的作用是一样的。此时,对应的卷积核如图2-4所示: 在这里插入图片描述 图2-4  参数 normalize=1时的卷积核 同样针对5×5邻域,当参数normalize=0时,不进行归一化处理,此时滤波计算的是邻域像素值之和,使用的卷积核如图2-5所示: 在这里插入图片描述 图2-5  参数normalize=0时的卷积核 当 normalize=0时,由于不进行归一化处理,因此滤波得到的值很可能超过当前像素值范围的最大值,从而被截断为最大值。 通常情况下,在使用方框滤波函数时,对于参数 anchor、normalize 和 borderType,直接采用其默认值即可。因此,函数 cv2.boxFilter()的常用形式为:dst = cv2.boxFilter( src, ddepth, ksize )

3.程序示例

针对一幅噪声图像,使用方框滤波函数 cv2.boxFilter()内将参数 normalize 的值分别设置为0和1,分别显示其滤波处理结果。

import cv2 Gn=cv2.imread("Gaussian_noise.jpg") Bf0=cv2.boxFilter(Gn,-1,(2,2),normalize=0) Bf1=cv2.boxFilter(Gn,-1,(2,2),normalize=1) cv2.imshow("噪声图像",Gn) cv2.imshow("不进行归一化处理",Bf0) cv2.imshow("进行归一化处理",Bf1) cv2.waitKey() cv2.destroyAllWindows()

在这里插入图片描述 图3-1  噪声图像 在这里插入图片描述 图3-2  不进行归一化处理的结果图像 在这里插入图片描述 图3-3  进行归一化处理的结果图像 从图3-3可以看出,设置参数normalize为1时(默认值) 时,滤波结果与函数均值滤波cv2.blur()的结果是完全相同的。 从图3-2是将参数normalize设置为0的滤波处理结果,即没有对图像进行归一化处理。所以在进行滤波时,计算的是 2×2 邻域的像素值之和,图像的像素值基本都会超过当前像素值的最大值 255。因此,最后得到的图像接近纯白色,部分点处有颜色。部分点有颜色是因为这些点周边邻域的像素值均较小,邻域像素值在相加后仍然小于255。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有