中值滤波(median filter)为常用图像滤波算法,用于处理椒盐噪声且能够保持边界,由于是非线性操作,传统的做法即对局部区域进行排序取中值的方法,较为耗时。

一种快速的计算法,即使用直方图取中位数代替排序,且利用相邻元素的直方图变动较少更新直方图,这样迭代获得滤波结果, 如下:

Matlab源码如下:

clc;
clear all;
close all;image=imread('lena.jpg');
image=rgb2gray(image);
image=double(image);
[ih,iw]=size(image);%中值滤波器尺寸
fw=5;
fh=5;
hfw=floor(fw/2);
hfh=floor(fh/2);%1.image pad,边界拓展
src=zeros(ih+fh-1,iw+fw-1);
for i=1-hfh:1:ih+hfhrow=i;if(i<1)row=1;elseif(i>ih)row=ih;endfor j=1-hfw:1:iw+hfwcol=j;if(j<1)col=1;elseif(j>iw)col=iw;endsrc(i+hfh,j+hfw)=image(row,col);end
end%2.滤波操作
th=(fw*fh)/2+1;%中值位置
dst=zeros(ih,iw);%输出
for row=1:ih%2.1当前行先初始化直方图imHist=zeros(256,1);num=0;for i=row:fh+row-1for j=1:fwimHist(src(i,j)+1)=imHist(src(i,j)+1)+1;%图像取值范围0~255endendfor i=0:255num=imHist(i+1)+num;if(num>th)index=i;break;endend%2.2当前行第1个元素赋值dst(row,1)=index;%2.3当前行其他元素计算for col=2:iw%2.3.1更新直方图for i=row:fh+row-1imHist(src(i,col-1)+1)=imHist(src(i,col-1)+1)-1;%待输出统计元素imHist(src(i,fw+col-1)+1)=imHist(src(i,fw+col-1)+1)+1;%待增加统计的元素if(src(i,col-1)<=index)num=num-1;endif(src(i,fw+col-1)<=index)num=num+1;endend%2.3.2寻找中值滤波结果while(num>th)num=num-imHist(index+1);index=index-1;endwhile(num<th)index=index+1;num=num+imHist(index+1);enddst(row,col)=index;end
endfigure,imshow(image,[]),title('src image');
figure,imshow(src,[]),title('pad image');
figure,imshow(dst,[]),title('filter image');

Reference

1.【图像处理】高效的中值滤波(bug 已修复)

2.中值滤波的快速算法

中值滤波的一种快速计算方法相关推荐

  1. 高效快速中值滤波算法c语言,快速中值滤波及c语言实现.docx

    . .. 快速中值滤波及c语言实现 学生姓名: 刘 勇 学 号: 6100410218 专业班级: 数媒101 [摘要]本文讨论了用c语言在微机上实现中值滤波及快速算法,在程序设计的过程中充分考虑到程 ...

  2. 【OpenCV 例程200篇】58. 非线性滤波—中值滤波

    [OpenCV 例程200篇]58. 非线性滤波-中值滤波 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 图像滤波是 ...

  3. matlab中基于十字形窗口的滤波算法,#215;字形滤波窗口在Matlab自适应中值滤波算法中的应用 - 21ic中国电子网...

    由于种种原因,图像在生成.传输.变换等过程中往往会受到各种噪声的污染,从而导致图像质量退化.噪声信号的滤波是图像处理的基本任务之一,主要有线性滤波和非线性滤波两种方法.线性滤波方法一般具有低通特性,而 ...

  4. 滑动窗口滤波 c语言,关于中值滤波算法,以及C语言实现(转)

    1.什么是中值滤波? 中值滤波是对一个滑动窗口内的诸像素灰度值排序,用其中值代替窗口中心象素的原来灰度值,它是一种非线性的图像平滑法,它对脉冲干扰级椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护 ...

  5. OpenCV 中值滤波

    中值滤波是一种典型的非线性滤波技术,基本思想是用像素点邻域灰度值的中值来代替该像素点的灰度值. 中值滤波对椒盐噪声来说尤其有用,因为它不依赖于邻域内那些与典型值差别很大的值. 中值滤波用途:去除椒盐噪 ...

  6. matlab的knn均值滤波,中值滤波与均值滤波介绍.ppt

    第五章 图像的噪声抑制 图像噪声的概念 所谓的图像噪声,是图像在摄取时或是传输时所受到的随机干扰信号. 常见的有椒盐噪声和高斯噪声. 图像噪声的概念 椒盐噪声的特征: 出现位置是随机的,但噪声的幅值是 ...

  7. 图像平滑处理-中值滤波

    图像平滑处理-中值滤波 1.什么是滤波? 2.平滑处理的目的 3.平滑处理的应用 4.中值滤波的处理方法 5.中值滤波的示意图 椒盐噪声 6.椒盐处理和中值滤波的效果展示 7.代码(面向过程) 8.程 ...

  8. 中值滤波Median filtering

    背景简述 在概率论中,中值将概率分布的高半部分与低半部分分开,对一个随机变量x 而言,x < M 的概率为0.5.对于有限实数集,其排序后中间的数值即为它的中值.集合的大小通常取奇数,以保证中值 ...

  9. Matlab中值滤波

        'medfilt2' 是 MATLAB 中的一个函数,用于对二维图像进行中值滤波.中值滤波是一种非线性滤波方法,它将每个像素的值替换为该像素周围邻域内像素的中值. 该函数语法如下: B = m ...

最新文章

  1. 3GPP组织和协议概述
  2. Puppy Linux 8.0 发布,代号 BionicPup
  3. UVa1377 Ruler(dfs或者bfs)
  4. SSM项目使用GoEasy 实现web消息推送服务
  5. 容器互联(linking)
  6. mybatis入门(四)----输入映射和输出映射
  7. 学会使用ant design封装一个锚点组件
  8. 设计模式之二抽象工厂设计模式
  9. Ibatis中的大于、小于、like等符号写法
  10. C语言标准库<limits.h>
  11. linux面试题与参考答案(转)
  12. Python多级菜单
  13. vue 移动端使用日期插件datepicker.js
  14. socket编程—UDP套接字
  15. 用易康对遥感影像进行面向对象分类
  16. 什么是Apple Music 杜比全景声?如何设置开启?
  17. 小技巧--获取当前前台显示Activity
  18. Codeforces Round #222 (Div. 2)
  19. DP4301— 国产 SUB-1G 高集成度无线收发芯片
  20. kubectl describe pod Error from server (NotFound):pods not found

热门文章

  1. 微信小程序0 校园任务跑腿接单平台 Android hbuilderx App毕业设计.
  2. CentOS下载及安装
  3. 哈尔滨市建筑物矢量数据(Shp格式+带高度)
  4. 【UNITY】记录——导入透明视频
  5. 10个值得推荐的学习网站,超良心,抓紧时间提升自己
  6. A星寻路与二叉堆优化(2D)
  7. 全国计算机二级第一套ppt,全国计算机二级共基础第一章.ppt
  8. 【Linux operation 29】Linux系统通过手机USB共享网络
  9. Python语音识别API总结
  10. 人才缺口72万,三成岗位薪资过万!