自适应中值滤波RAMF

一、回顾一下传统的中值滤波


    中值滤波就是选择一定形式的窗口,使其在图像的各点上移动,用窗内像素灰度值的中值代替窗中心点处的像素灰度值。它对于消除孤立点和线段的干扰十分有用,能减弱或消除傅里叶空间的高频分量,但也影响低频分量。高频分量往往是图像中区域边缘灰度值急剧变化的部分,该滤波可将这些分量消除,从而使图像得到平滑的效果。对于一些细节较多的复杂图像,还可以多次使用不同的中值滤波。传统中值滤波算法的具体实现过程如下:


(1)选择一个(2n+1)×(2n+1)的窗口(通常为3×3或5×5),并用该窗口沿图像数据进行行或列方向的移位滑动;

(2)每次移动后,对窗内的诸像素灰度值进行排序;

(3)用排序所得中值替代窗口中心位置的原始像素灰度值。

 

二、自适应中值滤波

 

     首先,采用3×3的×字形窗口进行计算,计算图像的中值滤波值Zmed、最大值滤波值Zmax和最小值滤波值Zmin,并判断噪声敏感度,即:如果Zmec,不在Zmax和Zmin之间就自动增加×字形窗口的大小,然后重复以上的过程;对于Zmed在Zmax和Zmin之间的点先用原像素值与最大滤波值和最小滤波值进行判断,如果在其间,原值不做修改,反之就用Zmed取代原值。这一过程有如下的作用:

 

(1)使得未受脉冲噪声污染的点不用修改,很好地保护了图像的点、线等细节及边界信息;

(2)当检测到的噪声很强时,自动增大窗口,提高了去噪能力;

(3)当检测到的噪声不是很强时,就不用增加窗口的大小,既体现出自适应性,又减少了时间开销,提高了速度。

                                   

下面上传一个原图,一个中值滤波图,一个自适应中值滤波图,lena的眼神告诉你效果0.0


                   

 

  • 9
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自适应中值滤波是一种常用的像处理方法,用于去除图像中的椒盐噪声。下面是一个简单的MATLAB示例,实现了自适应中值滤波: ```matlab function output_image = adaptive_median_filter(input_image, window_size, max_window_size) [rows, cols] = size(input_image); output_image = zeros(rows, cols); for i = 1:rows for j = 1:cols window = input_image(max(i-floor(window_size/2),1):min(i+floor(window_size/2),rows), ... max(j-floor(window_size/2),1):min(j+floor(window_size/2),cols)); window_vector = window(:); window_median = median(window_vector); window_min = min(window_vector); window_max = max(window_vector); current_pixel = input_image(i, j); if (window_min < window_median) && (window_median < window_max) if (window_min < current_pixel) && (current_pixel < window_max) output_image(i, j) = current_pixel; else output_image(i, j) = window_median; end else window_size = window_size + 2; if window_size > max_window_size output_image(i, j) = current_pixel; end end end end end ``` 使用方法: ```matlab input_image = imread('input_image.jpg'); % 读取输入图像 window_size = 3; % 初始窗口大小 max_window_size = 7; % 最大窗口大小 output_image = adaptive_median_filter(input_image, window_size, max_window_size); % 调用自适应中值滤波函数 imshow(input_image); % 显示原始图像 title('Original Image'); figure; imshow(output_image); % 显示滤波后的图像 title('Filtered Image'); ``` 请注意,这只是一个简单的示例代码,实际应用中可能需要根据具体情况进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值