中值滤波及其改进版介绍

一、原始中值滤波       

1.1定义与原理

        中值滤波器是一种非线性信号处理滤波器,主要用于图像降噪和细节保留。其核心思想是:用窗口内像素值的中值替代当前像素值。具体步骤如下:

  1. 定义窗口:在图像中选取以当前像素为中心的矩形窗口(如 3×3、5×5 等)。
  2. 排序像素值:将窗口内所有像素的灰度值按大小排序。
  3. 取中值替换:用排序后的中值替换当前像素的值。
1.2 优势
  • 对 *椒盐噪声(脉冲噪声) 有极佳的降噪效果,优于均值滤波器。
  • 能有效保留图像边缘和细节,避免均值滤波可能导致的模糊。
1.3实例

        

        在上述示例中,中值滤波器选择值 104,因为它上方有四个值,下方有四个值。中值滤波操作通过滑动窗口概念在图像上执行(见图1 ),这与卷积操作类似。需要注意的是,使用这种技术时,外侧的 [(N + 1)/2] –1 行和列不会被替换。在实际应用中,这通常不是问题,因为图像比掩模大得多,这些 “多余” 的行和列通常用零填充(或从图像中裁剪掉)。例如,使用 3×3 掩模时,会丢失一个外侧行和列;使用 5×5 掩模时,会丢失两个行和列 —— 对于典型的 640×480 或更大的图像来说,这通常并不显著。使用中值滤波器处理椒盐(脉冲)噪声的结果如图 2 所示。需要注意的是,对于 RGB 三波段彩色图像,每个颜色波段需单独处理。

图1 窗口平滑过程
图2 中值滤波
(a) 添加了椒盐噪声的图像,盐噪声概率 = 胡椒噪声概率 = 0.08,
(b) 经 3×3 窗口中值滤波后,噪声未完全去除,
(c) 经 5×5 窗口中值滤波后,噪声完全去除,但图像出现模糊并呈现 “涂抹” 效果。

 二、原始中值滤波改进版  

        自适应中值滤波(Adaptive Median Filter)是一种针对椒盐噪声(Salt-and-Pepper Noise)设计的图像滤波算法,属于非线性滤波技术。与传统固定窗口的中值滤波相比,其核心优势在于动态调整窗口大小,在有效去除噪声的同时,尽可能保留图像细节(如边缘、纹理等),避免标准中值滤波可能导致的图像模糊或小结构失真。

2.1、基本概念
  1. 目标

    • 去除椒盐噪声(高 / 低极值噪声点)。
    • 保留图像细节(如边缘、小尺寸物体),减少传统中值滤波的模糊效应。
  2. 核心思想

    • 通过可变窗口大小(从小到大逐步扩展),根据局部区域的噪声分布动态调整滤波范围。
    • 当窗口内包含噪声点时,用中值替代;当窗口内无噪声时,直接保留原像素值。
2.2、关键定义与符号

设当前处理的像素为 f(x,y),窗口记为 Sxy​(初始大小为 3×3,最大可扩展至 Smax​×Smax​)。定义以下参数:

  • zmin​:窗口内像素的最小值(代表 “胡椒” 噪声)。
  • zmax​:窗口内像素的最大值(代表 “盐” 噪声)。
  • zmed​:窗口内像素的中值。
  • zxy​:当前像素值 f(x,y)。
2.3、算法步骤

自适应中值滤波分为两个阶段(阶段 A阶段 B),通过双重条件判断确定输出值:

阶段 A:判断当前窗口是否包含噪声

计算以下两个条件:

  • 条件 1:zmin​<zmed​<zmax​
    • 若成立,说明窗口内同时存在非噪声的中间值,进入阶段 B
    • 若不成立,说明窗口内全为噪声或极值(如窗口内全为盐 / 胡椒噪声),需扩大窗口大小。
阶段 B:判断当前像素是否为噪声

计算以下两个条件:

  • 条件 2:zmin​<zxy​<zmax​
    • 若成立,说明当前像素 zxy​ 非噪声,输出 zxy​。
    • 若不成立,说明当前像素 zxy​ 是噪声(盐或胡椒),输出 zmed​(用中值替代噪声点)。
窗口扩展规则
  • 若阶段 A 的条件 1 不成立,且当前窗口未达到最大尺寸 Smax​,则将窗口大小扩大(如从 3×3 增至 5×5),重新执行阶段 A 和阶段 B。
  • 若窗口已达最大尺寸仍不满足条件 1,则输出 zmed​(强制用中值替代,避免过度扩展窗口)。
2.4 伪代码
初始化窗口大小 S = 3×3(最小窗口)
循环:
  计算当前窗口内的 z_min, z_max, z_med
  阶段A:
    if z_min < z_med < z_max:
      进入阶段B
    else:
      if S < S_max:
        S = S + 2(扩大窗口,如从3×3到5×5)
        重新计算当前窗口参数
      else:
        输出 z_med
        结束循环
  阶段B:
    if z_min < z_xy < z_max:
      输出 z_xy(非噪声,保留原值)
    else:
      输出 z_med(噪声点,用中值替代)
    结束循环
2.5示例

        给定两幅加了椒盐噪声的图像:

image1:\begin{bmatrix} 10 &9 &11 \\ 11&255 &10 \\ 12&13 &9 \end{bmatrix}  image2:\begin{bmatrix} 255 &9 &255 \\ 11&255 &10 \\ 255&13 &255 \end{bmatrix}

对图像1排序有:[255 13 12 11 11 10 10 9 9]

Level1:zmin​<zmed​=11<zmax​为真,转到Level2

Level2:zmin​<zxy=255​<zmax​​为假,输出11

此时我们消除了椒盐噪声。

对图像2排序有:[255 255 255 255 255  13 11 10 9]

Level1:zmin​<zmed​=255<zmax​为假,需要扩大窗口:

\begin{bmatrix} 11 &12 &11 &10 &10 \\ 9&255 &9 &255 &10 \\ 255&11 &255 &10 &11 \\ 12&255 &13 &255 &13 \\ 13&13 &12 &11 &13 \end{bmatrix}

此时的中值在最大值和最小值之间,所以转到Level2并输出中值。

自适应中值滤波器与标准中值滤波器对比。自适应中值滤波器在去除噪声的同时,比标准中值滤波器更能有效保留图像细节。这一点在 5×5 窗口处理的树木叶片区域(如红色圆圈所示)尤为明显。

  对ISP图像处理感兴趣的小伙伴,欢迎加入我的星球共通学习探讨:https://t.zsxq.com/DHkB7 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值