一、图像去噪及滤波简介

1 图像去噪
1.1 图像噪声定义
噪声是干扰图像视觉效果的重要因素,图像去噪是指减少图像中噪声的过程。噪声分类有三种:加性噪声,乘性噪声和量化噪声。我们用f(x,y)表示图像,g(x,y)表示图像信号,n(x,y)表示噪声。
图像去噪是指减少数字图像中噪声的过程。现实中的数字图像在数字化和传输过程中常受到成像设备与外部环境噪声干扰等影响,称为含噪图像或噪声图像。去噪是图像处理研究中的一个重点内容。在图像的获取、传输、发送、接收、复制、输出等过程中,往往都会产生噪声,其中的椒盐噪声是比较常见的一种噪声,它属于加性噪声。

1.2 图像噪声来源
(1)图像获取过程中
图像传感器CCD和CMOS采集图像过程中受传感器材料属性、工作环境、电子元器件和电路结构等影响,会引入各种噪声。
(2)图像信号传输过程中
传输介质和记录设备等的不完善,数字图像在其传输记录过程中往往会受到多种噪声的污染。

1.3 噪声分类
噪声按照不同的分类标准可以有不同的分类形式:
基于产生原因:内部噪声,外部噪声。
基于噪声与信号的关系:
加性噪声:加性噪声和图像信号强度是不相关的,这类带有噪声的图像g可看成为理想无噪声图像f与噪声n之和:
g = f + n;
乘性嗓声:乘性噪声和图像信号是相关的,往往随图像信号的变化而变化,载送每一个象素信息的载体的变化而产生的噪声受信息本身调制。在某些情况下,如信号变化很小,噪声也不大。为了分析处理方便,常常将乘性噪声近似认为是加性噪声,而且总是假定信号和噪声是互相统计独立。
g = f + f*n
按照基于统计后的概率密度函数:
是比较重要的,主要因为引入数学模型这就有助于运用数学手段去除噪声。在不同场景下噪声的施加方式都不同,由于在外界的某种条件下,噪声下图像-原图像(没有噪声时)的概率密度函数(统计结果)服从某种分布函数,那么就把它归类为相应的噪声。下面将具体说明基于统计后的概率密度函数的噪声分类及其消除方式。

1.4 图像去噪算法的分类
(1)空间域滤波
空域滤波是在原图像上直接进行数据运算,对像素的灰度值进行处理。常见的空间域图像去噪算法有邻域平均法、中值滤波、低通滤波等。
(2)变换域滤波
图像变换域去噪方法是对图像进行某种变换,将图像从空间域转换到变换域,再对变换域中的变换系数进行处理,再进行反变换将图像从变换域转换到空间域来达到去除图像嗓声的目的。将图像从空间域转换到变换域的变换方法很多,如傅立叶变换、沃尔什-哈达玛变换、余弦变换、K-L变换以及小波变换等。而傅立叶变换和小波变换则是常见的用于图像去噪的变换方法。
(3)偏微分方程
偏微分方程是近年来兴起的一种图像处理方法,主要针对低层图像处理并取得了很好的效果。偏微分方程具有各向异性的特点,应用在图像去噪中,可以在去除噪声的同时,很好的保持边缘。偏微分方程的应用主要可以分为两类:一种是基本的迭代格式,通过随时间变化的更新,使得图像向所要得到的效果逐渐逼近,这种算法的代表为Perona和Malik的方程,以及对其改进后的后续工作。该方法在确定扩散系数时有很大的选择空间,在前向扩散的同时具有后向扩散的功能,所以,具有平滑图像和将边缘尖锐化的能力。偏微分方程在低噪声密度的图像处理中取得了较好的效果,但是在处理高噪声密度图像时去噪效果不好,而且处理时间明显高出许多。
(4)变分法
另一种利用数学进行图像去噪方法是基于变分法的思想,确定图像的能量函数,通过对能量函数的最小化工作,使得图像达到平滑状态,现在得到广泛应用的全变分TV模型就是这一类。这类方法的关键是找到合适的能量方程,保证演化的稳定性,获得理想的结果。
形态学噪声滤除器将开与闭结合可用来滤除噪声,首先对有噪声图像进行开运算,可选择结构要素矩阵比噪声尺寸大,因而开运算的结果是将背景噪声去除;再对前一步得到的图像进行闭运算,将图像上的噪声去掉。据此可知,此方法适用的图像类型是图像中的对象尺寸都比较大,且没有微小细节,对这类图像除噪效果会较好。

2 基于邻域的小波阈值
(1) Bayes Shrink阈值
假设信号为{fj,i,j=1,…,N},N是2的幂,它被一加性随机噪声污染,记为:

其中aj是独立同分布(iid independence identical distribution) 的均值为零的正态分布, 并且独立于fy。去噪的目标是得到fy的估计值f^, 使均方误差(MSE Mean Square Error) 最小。

令g={9mhj, f={f hj, e={a jhj, 又令Y=Wg, X=Wf, V=We, 其中W表示二进正交小波算子。于是可得:Y=X+V(3)
文献[1] 中, 在贝叶斯估计理论框架下, 假设小波系数服从广义高斯分布(GGD) , 即:

其中,

二、部分源代码

%基于邻域的小波去噪,窗口选择分别为3*3和5*5
%----------------------------------------------------------
%(1)基于邻域的小波去噪,窗口选择为3*3时
%----------------------------------------------------------
clear;
f=imread('graylena.bmp');
%f=imread('cameraman.tif');
%f=imread('liftingbody.png');
%f=imread('rice.png');
fnoisy=imnoise(f,'gaussian',0,0.01);%填加高斯白噪声
figure,subplot(121),imshow(f,[]),title('原图像')
subplot(122),imshow(fnoisy,[]),title('加噪图像')%对图像进行三层小波分解
[c,s]=wavedec2(fnoisy,3,'db8');[cH2,cV2,cD2]=detcoef2('all',c,s,2);
[cH1,cV1,cD1]=detcoef2('all',c,s,1);
delta=median(abs(cD1(:)))/0.6745;
n=size(f,1);
thr=delta*sqrt(2*log(n^2));%阈值
%对各级的H,V,D分量进行处理
%mov_win是滑窗函数,根据邻域窗口内小波系数的平方和大小来决定窗口中心的系数是收缩还是置零
cH3=mov_win(cH3,3,thr);
cH2=mov_win(cH2,3,thr);
cH1=mov_win(cH1,3,thr);
cV3=mov_win(cV3,3,thr);
cV2=mov_win(cV2,3,thr);
cV1=mov_win(cV1,3,thr);
cD3=mov_win(cD3,3,thr);
cD2=mov_win(cD2,3,thr);
cD1=mov_win(cD1,3,thr);m1=size(cA3,1);m2=size(cA3,2);
m=m1*m2;
dnc0(1:m)=cA3(:);m1=size(cH3,1);m2=size(cH3,2);
m=m1*m2;
dnc1(1:m)=cH3(:);m1=size(cH2,1);m2=size(cH2,2);
m=m1*m2;
dnc2(1:m)=cH2(:);m1=size(cH1,1);m2=size(cH1,2);
m=m1*m2;
dnc3(1:m)=cH1(:);m1=size(cV3,1);m2=size(cV3,2);
m=m1*m2;
dnc4(1:m)=cV3(:);m1=size(cV2,1);m2=size(cV2,2);
m=m1*m2;
dnc5(1:m)=cV2(:);m1=size(cV1,1);m2=size(cV1,2);
m=m1*m2;
dnc6(1:m)=cV1(:);m1=size(cD3,1);m2=size(cD3,2);
m=m1*m2;
dnc7(1:m)=cD3(:);m1=size(cD2,1);m2=size(cD2,2);
m=m1*m2;
dnc8(1:m)=cD2(:);m1=size(cD1,1);m2=size(cD1,2);
m=m1*m2;
dnc9(1:m)=cD1(:);dnc10=[dnc0 dnc1 dnc4 dnc7 dnc2 dnc5 dnc8 dnc3 dnc6 dnc9];
dnc=waverec2(dnc10,s,'db8');%重构
dnc=uint8(dnc);
figure,subplot(121),imshow(dnc,[]),title('3*3邻域去噪后图像')f=imread('graylena.bmp');
%f=imread('cameraman.tif');
%f=imread('liftingbody.png');
%f=imread('rice.png');
f=double(f);
dnc=double(dnc);
psnr3=cacupsnr(f,dnc)%----------------------------------------------------------
%(2)基于邻域的小波去噪,窗口选择为5*5
%----------------------------------------------------------
f=imread('graylena.bmp');
%f=imread('cameraman.tif');
%f=imread('liftingbody.png');
%f=imread('rice.png');
fnoisy=imnoise(f,'gaussian',0,0.01);%填加高斯白噪声%对图像进行三层小波分解
[c,s]=wavedec2(fnoisy,3,'db8');
cA3=appcoef2(c,s,'db8',3);%低频分量thr=delta*sqrt(2*log(n^2));%阈值
%对各级的H,V,D分量进行处理
%mov_win是滑窗函数,根据邻域窗口内小波系数的平方和大小来决定窗口中心的系数是收缩还是置零
cH3=mov_win(cH3,5,thr);
cH2=mov_win(cH2,5,thr);
cH1=mov_win(cH1,5,thr);
cV3=mov_win(cV3,5,thr);
cV2=mov_win(cV2,5,thr);
cV1=mov_win(cV1,5,thr);
cD3=mov_win(cD3,5,thr);
cD2=mov_win(cD2,5,thr);
cD1=mov_win(cD1,5,thr);m1=size(cA3,1);m2=size(cA3,2);
m=m1*m2;
dnc0(1:m)=cA3(:);m1=size(cH3,1);m2=size(cH3,2);
m=m1*m2;
dnc1(1:m)=cH3(:);m1=size(cH2,1);m2=size(cH2,2);
m=m1*m2;
dnc2(1:m)=cH2(:);m1=size(cH1,1);m2=size(cH1,2);
m=m1*m2;
dnc3(1:m)=cH1(:);m1=size(cV3,1);m2=size(cV3,2);
m=m1*m2;
dnc4(1:m)=cV3(:);m1=size(cV2,1);m2=size(cV2,2);
m=m1*m2;
dnc5(1:m)=cV2(:);m1=size(cV1,1);m2=size(cV1,2);
m=m1*m2;
dnc6(1:m)=cV1(:);m1=size(cD3,1);m2=size(cD3,2);
m=m1*m2;
dnc7(1:m)=cD3(:);m1=size(cD2,1);m2=size(cD2,2);
m=m1*m2;
dnc8(1:m)=cD2(:);dnc10=[dnc0 dnc1 dnc4 dnc7 dnc2 dnc5 dnc8 dnc3 dnc6 dnc9];
dnc=waverec2(dnc10,s,'db8');%重构
dnc=uint8(dnc);
subplot(122),imshow(dnc,[]),title('5*5邻域去噪后图像')function y=cacupsnr(f,g)   %计算PSNR
m=size(f,1);n=size(f,2);
d=f-g;
d=d.^2;r=g.^2;
mse=sum(d(:))/m/n;psnr=10*log10(255^2/mse);
snr=10*log10(sum(r(:))/m/n/mse);
y.MSE=mse;y.RMSE=rmse;
y.PSNR=psnr;y.SNR=snr;

三、运行结果



四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.

【图像去噪】基于matlab邻域的自适应小波阈值图像去噪【含Matlab源码 1188期】相关推荐

  1. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  2. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  3. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  4. 【Matlab车牌识别】停车计费系统【含GUI源码 735期】

    一.代码运行视频(哔哩哔哩) [Matlab车牌识别]停车计费系统[含GUI源码 735期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MATLA ...

  5. 【Matlab水果识别】自助水果超市【含GUI源码 594期】

    一.代码运行视频(哔哩哔哩) [Matlab水果识别]自助水果超市[含GUI源码 594期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]倪云峰,叶健,樊娇娇 ...

  6. 【通信仿真】基于matlab空时自适应处理降维仿真【含Matlab源码 1957期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[通信仿真]基于matlab空时自适应处理降维仿真[含Matlab源码 1957期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式 ...

  7. 【Matlab语音处理】汉宁窗FIR陷波滤波器语音信号加噪去噪【含GUI源码 1711期】

    一.代码运行视频(哔哩哔哩) [Matlab语音处理]汉宁窗FIR陷波滤波器语音信号加噪去噪[含GUI源码 1711期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  8. 基于JAVA学习自律养成小程序前台.mp4计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA学习自律养成小程序前台.mp4计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA学习自律养成小程序前台.mp4计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: ...

  9. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

  10. 【Matlab水果蔬菜识别】形态学水果蔬菜识别【含GUI源码 919期】

    一.代码运行视频(哔哩哔哩) [Matlab水果蔬菜识别]形态学水果蔬菜识别[含GUI源码 919期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅. ...

最新文章

  1. lua学习笔记之数据文件及序列化
  2. C++ MFC界面读写USB HID设备数据程序
  3. 022_Jedis的事物
  4. rbf神经网络_基于RBF神经网络的监督控制(09)
  5. MONGODB 集群架构 调整,增加延迟备份节点服务器,删除仲裁节点
  6. 服务器cpu位置,服务器CPU满载,谁之过?
  7. left join嵌套selelct语句格式_SQL Formatting Rule 格式化行业规范
  8. linux+模块与设备关系,linux内核设计与实现读书笔记——设备和模块
  9. 二、CSS基础(1)
  10. 常用邮箱后缀总结,常用邮箱域名信息汇总
  11. 毕向东Mysql教程_传智播客_毕姥爷_2012年毕向东Java基础教程_毕向东老师
  12. <零售数据分析-Pandas> 通过环比销售和库存对产品进行分类
  13. NOIP模拟 位运算(trie树+按位贪心)
  14. 正确编译差分包签名(MTK系统)
  15. Ceph 网络模块(1) - 网络模块基本结构
  16. 访存模式分析实验思路(毕设笔记9)
  17. 简单区分单射、满射与双射
  18. 世界顶级机器学习科学家黄恒加入京东,出任京东大数据首席科学家
  19. 实验指南:BGP路由汇聚(下)
  20. python根据表格数据生成折线图_python生成折线图

热门文章

  1. SQL语句group by 与order by 执行顺序引发的一场“内斗”
  2. C++操作符operator的另一种用法
  3. Daily Scrum 12.13
  4. 【转】Nutch源代码研究 网页抓取 数据结构
  5. (转)让页面自动滚动到刷新页面之前的控件处,减少页面刷新带来的不便。
  6. 20200115每日一句
  7. atitit.抽奖活动插件组件设计--结构设计and 抽奖流程建模
  8. atitit. orm mapping cfg 映射配置(3)-------hbnt one2maney cfg
  9. atitit.信息安全的控制总结o7
  10. paip.配置ef_unified_filter() failed ext_filter_module mod_ext_filter.so apache 错误解决