在实时图像采集中,不可避免的会引入噪声,尤其是干扰噪声和椒盐噪声,噪声的存在严重影响边缘检测的效果,中值滤波是一种基于排序统计理论的非线性平滑计数,能有效平滑噪声,且能有效保护图像的边缘信息,所以被广泛用于数字图像处理的边缘提取,其基本原理是把数字图像或数字序列中的一点的值用该点邻域内所有的点排序后的中值来代替。

中值滤波对椒盐噪声有良好的滤除作用,特别是在滤除噪声的同时,能够保护信号的边缘,使之不被模糊。这些优良特性是线性滤波方法所不具有的。而且,中值滤波的算法比较简单,也易于用硬件实现。这篇我们先用MATLAB来实现中值滤波。

中值滤波方法是,对待处理的当前像素,选择一个模板3x3、5x5或其他,这里选择3x3矩阵,该模板为其邻近的若干个像素组成,对模板的像素由小到大进行排序,再用模板的中值来替代原像素的值的方法。

排序算法示意图

当我们使用3x3窗口后获取领域中的9个像素,就需要对9个像素值进行排序,为了提高排序效率,排序算法思想如图所示。

(1)对窗内的每行像素按降序排序,得到最大值、中间值和最小值。

(2)把三行的最小值即第三列相比较,取其中的最大值。

(3)把三行的最大值即第一列相比较,取其中的最小值。

(4)把三行的中间值即第二列相比较,再取一次中间值。

(5)把前面的到的三个值再做一次排序,获得的中值即该窗口的中值。

sort排序函数

sort(A)若A可以使矩阵或行列向量,默认都是对A进行升序排列。

sort(A)是默认的升序,而sort(A,'descend')是降序排序。sort(A)若A是矩阵,默认对A的各列进行升序排列sort(A,dim)dim=1时相当于sort(A)

dim=2时表示对矩阵A中的各行元素升序排列

sort(A,dim,'descend’)则对矩阵的每行进行降序排列

MATLABMedianFilter代码实现

1%RGB_YCbCr2clc;3clearall;4closeall;56RGB_data=imread(‘lena.jpg’);%78R_data=RGB_data(:,:,1);9G_data=RGB_data(:,:,2);

10B_data=RGB_data(:,:,3);1112%imshow(RGB_data);1314[ROW,COL,DIM]=size(RGB_data);1516Y_data=zeros(ROW,COL);

17Cb_data=zeros(ROW,COL);18Cr_data=zeros(ROW,COL);19Gray_data=RGB_data;2021forr=1:ROW22forc=1:COL23

Y_data(r,c)=0.299*R_data(r,c)+0.587*G_data(r,c)+0.114*B_data(r,c);24

Cb_data(r,c)=-0.172*R_data(r,c)-0.339*G_data(r,c)+0.511*B_data(r,c)+128;25

Cr_data(r,c)=0.511*R_data(r,c)-0.428*G_data(r,c)-0.083*B_data(r,c)+128;26

end27end2829Gray_data(:,:,1)=Y_data;30Gray_data(:,:,2)=Y_data;31Gray_data(:,:,3)=Y_data;3233figure;

34imshow(Gray_data);

3536%MedianFilter37imgn=imnoise(Gray_data,‘salt&pepper’,0.02);

3839figure;40imshow(imgn);414243forr=2:ROW-144

forc=2:COL-145

median3x3=[imgn(r-1,c-1)imgn(r-1,c)imgn(r-1,c+1)46

imgn(r,c-1)imgn(r,c)imgn(r,c+1)47

imgn(r+1,c-1)imgn(r+1,c)imgn(r+1,c+1)];48

sort1=sort(median3x3,2,‘descend’);49

sort2=sort([sort1(1),sort1(4),sort1(7)],‘descend’);50

sort3=sort([sort1(2),sort1(5),sort1(8)],‘descend’);51

sort4=sort([sort1(3),sort1(6),sort1(9)],‘descend’);52

mid_num=sort([sort2(3),sort3(2),sort4(1)],‘descend’);53

Median_Img(r,c)=mid_num(2);54end55end5657figure;58imshow(Median_Img);

处理前后比较

Graylena

加入椒盐噪声后的lena

对加入椒盐噪声后进行中值滤波的lena

可以看出,中值滤波对椒盐噪声的滤除效果真是非常的好。光看我处理后图图片可能看不出太明显对比,有兴趣的朋友可以自己尝试下。这里MTALAB的排序部分基本是是按照排序算法一步步来的,完全符合FPGA实现的思路,所以说掌握算法的基础原理和Verilog自己就可以尝试用FPGA实现了。

这里需要强调的一下是这样的滤波对图像的边缘没有进行处理,这是因为我们在求取均值或中值时,生成的3x3矩阵,第一行的像素并没有处理,同样的图像最外层边缘的像素都没有处理,不过这个对整体影响不大,所以后面再弄,下一篇来实现Sobel边缘检测。

matlab怎样实现滤波,如何用MATLAB来实现中值滤波相关推荐

  1. python中值滤波算法_Python扩展库scipy中值滤波算法的应用

    中值滤波是数字信号处理.数字图像处理中常用的预处理技术,特点是将信号中每个值都替换为其邻域内的中值,即邻域内所有值排序后中间位置上的值.下面的代码演示了scipy库中signal模块的中值滤波算法的用 ...

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

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

  3. 中值滤波matlab

    摘  要 中值滤波技术是一种在去除噪声的同时能较好保护图像边缘细节的非线性技术,在图像增强和恢复等领域中得到了广泛的应用.文章阐述了中值滤波的原理和特点,并使用软件工具MATLAB实现了图像的中值滤波 ...

  4. 第七周作业:matlab分别对图片加入高斯噪音和椒盐噪音,然而利用均值滤波和中值滤波分别对上述两种噪音进行去噪。

    文章目录 题目 原图 1.添加椒盐噪声 2.添加高斯噪声 3.均值滤波处理椒盐噪声 4.中值滤波处理椒盐噪声 5.均值滤波处理高斯噪声 6.中值滤波处理高斯噪声 题目 利用MATLAB编程,制作一张照 ...

  5. 【FPGA教程案例44】图像案例4——基于FPGA的图像中值滤波verilog实现,通过MATLAB进行辅助验证

    FPGA教程目录 MATLAB教程目录 -------------------------------------------------------------------------------- ...

  6. 中值滤波+Matlab仿真+频域响应分析

    中值滤波 文章目录 中值滤波 理解中值滤波的过程 Matlab 实现 实际应用 频域分析 中值滤波是一种滤波算法,其目的是去除信号中的噪声,而不会对信号本身造成太大的影响.它的原理非常简单:对于一个给 ...

  7. 噪点检测matlab,基于噪点检测的中值滤波图像去噪方法

    摘  要: 图像去噪是图像处理中一个非常重要的环节.针对传统中值滤波方法存在的不足,提出一种新的基于噪点检测的自适应中值滤波图像去噪方法.该方法通过自适应地改变滤波窗口的大小,局部检测并判断极值点是否 ...

  8. 3 3中值滤波 matlab,MATLAB中值滤波在灰度图像处理中的应用研究和仿真(3)

    MATLAB中值滤波在灰度图像处理中的应用研究和仿真(3) 时间:2016-11-30 21:28来源:毕业论文 3.2 中值滤波的仿真 3.2.1 中值滤波仿真函数介绍 MATLAB能够支持多种图像 ...

  9. FPGA中值滤波实现并Modelsim仿真,与MATLAB中值滤波进行对比

    文章目录 一.中值滤波算法 二.FPGA实现中值滤波 2.1 3*3窗口的生成 2.2 排序模块 2.3中值滤波模块 2.4 整体RTL图 三.modeslim仿真 四.matlab中值滤波 五.效果 ...

最新文章

  1. codeforces 547B【单调栈】
  2. 数据库视频总结一(概述)
  3. Java的代理模式之静态代理和动态代理
  4. Unity 2018.3.1 SyncVar没有同步服务器变量
  5. v210 启动脚本分析
  6. siwper vue 上下滑动分页_支持移动端的vue滑动轮播图插件vueswiper
  7. 如何使用定时器产生两路频率可调的PWM波
  8. 关于徒手脱壳的几种方法
  9. mysql connector/c++ 存储过程的调用_MySQL Connector C++ 调用存储过程
  10. 人工势场法--路径规划--原理--matlab代码
  11. 电视助手 Android,无屏助手TV版|无屏助手电视版 V4.0.3 安卓版 下载_当下软件园_软件下载...
  12. QTTabBar 「资源管理器」让你的文件夹拥有浏览器标签页般的体验
  13. 信号与系统(六)z变换
  14. [Shader2D]浮雕效果
  15. Syntax Error: Error: No ESLint configuration found Syntax Error: TypeError: eslint.CLIEngine i
  16. 下拉列表—DropDownMenu的使用解析
  17. 面试过程中如何回答面试官的问题,才能让你顺利拿到Offer?冰河想以经典的事务问题对你说这些!!(建议收藏)
  18. prosper loan data EDA分析(特征字典)
  19. BeagleBoard-x15烧录emmc
  20. 从软件工程师到IT猎头:我的一点经历和感触

热门文章

  1. 电子科技大学考研复试内容
  2. web程序在线更新实现
  3. HTML学习之路-03HTML表格、table布局
  4. git提交大文件报错解决方案
  5. 从IDC数据库安全报告,看OceanBase安全能力
  6. HTNL5智能表单(新的表单类型、属性、虚拟键盘适配)
  7. Helm Values.yaml
  8. hive insert values 方式
  9. Openjtag与Openocd
  10. 【Java基础】基本类型和包装类的区别