中值滤波器 median filter

中值滤波

中值滤波器(median filter)是将每个像素替换为围绕这个像素的矩形领域内的中值,或”中值像素"。 通过平均的简单模糊对噪声图像,由其是有较大孤立的异常值非常敏感。少量具有较大偏差的点也会严重影响到均值滤波。中值滤波可以采用取中间点的方式来消除异常值。

中值滤波是非线性滤波。

1. 方法

中值滤波会取当前像素点及其周围临近像素点(一共有奇数个像素点)的像素值,将这些像素值排序,然后将位于中间位置的像素值作为当前像素点的像素值。

在这里插入图片描述
将其邻域设置为3×3大小,对其3×3邻域内像素点的像素值进行排序(升序降序均可),按升序排序后得到序列值为:[66,78,90,91,93,94,95,97,101]。在该序列中,处于中心位置(也叫中心点或中值点)的值是“93”,因此用该值替换原来的像素值78,作为当前点的新像素值,处理结果如下图所示。

在这里插入图片描述

2. OPENCV使用方法

cv::medianBlur(inputImage_, outputImage_, kenel_size_);
  • inputImage_ 是需要处理的图像,即源图像。它能够有任意数量的通道,并能对各个通道独立处理。图像深度应该是CV_8U、CV_16U、CV_16S、CV_32F或者CV_64F中的一种。
  • outputImage_是返回值,表示进行中值滤波后得到的处理结果。
  • kenel_size_是滤波核的大小。滤波核大小是指在滤波处理过程中其邻域图像的高度和宽度。需要注意,核大小必须是比1大的奇数,比如3、5、7等。

3. 效果展示

请添加图片描述

Reference

  1. https://baike.baidu.com/item/%E5%9B%BE%E5%83%8F%E5%99%AA%E5%A3%B0/4116468?fr=aladdin
  2. https://www.jianshu.com/p/857e82b21f42
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我可以帮您回答这个问题。不过需要说明的是,我是一个自然语言处理AI,无法直接运行 MATLAB 代码。我可以给您提供一些思路,帮助您完成这个问题。 首先,您需要编写 MATLAB 代码,实现自适应中值滤波、传统中值滤波和标准中值滤波。这些滤波的实现方式可以参考 MATLAB 自带的 medfilt2 函数。其中,自适应中值滤波需要根据图像的局部方差动态调整滤波的大小。 然后,您需要加载一张图片,并对其进行滤波处理。可以使用 MATLAB 自带的 imread 函数读入图片,使用您编写的滤波对图片进行处理,然后使用 imwrite 函数将处理后的图片保存到本地。 最后,您需要使用 PSNR 和 SSIM 两个度量函数分别计算滤波前后的图像质量,并将结果输出到命令窗口。 以下是一个简单的示例代码,仅供参考: ``` img = imread('lena.png'); % 读入图片 filter_size = 3; % 滤波大小 % 自适应中值滤波 img_adaptive = adaptive_median_filter(img, filter_size); % 传统中值滤波 img_median = median_filter(img, filter_size); % 标准中值滤波 img_standard = standard_median_filter(img, filter_size); % 计算 PSNR 和 SSIM psnr_adaptive = psnr(img, img_adaptive); ssim_adaptive = ssim(img, img_adaptive); psnr_median = psnr(img, img_median); ssim_median = ssim(img, img_median); psnr_standard = psnr(img, img_standard); ssim_standard = ssim(img, img_standard); % 输出结果 fprintf('自适应中值滤波 PSNR: %.2f, SSIM: %.2f\n', psnr_adaptive, ssim_adaptive); fprintf('传统中值滤波 PSNR: %.2f, SSIM: %.2f\n', psnr_median, ssim_median); fprintf('标准中值滤波 PSNR: %.2f, SSIM: %.2f\n', psnr_standard, ssim_standard); % 保存结果图像 imwrite(img_adaptive, 'lena_adaptive.png'); imwrite(img_median, 'lena_median.png'); imwrite(img_standard, 'lena_standard.png'); ``` 其中,adaptive_median_filtermedian_filter 和 standard_median_filter 分别表示自适应中值滤波、传统中值滤波和标准中值滤波的实现函数。psnr 和 ssim 分别表示计算 PSNR 和 SSIM 的函数。您需要根据自己的实现方式进行相应修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值