基于Matlab的小波分解、去噪与重构
基于MATLAB的小波分析应用(第二版)(周伟)5-13章 (2)

第6章 小波变换与图像处理
2. 图像的小波分解实例 下面通过两个例子说明如何对图像进行单尺度分解和多 尺度分解,并提取多尺度分解的小波系数。 【例6-1】 对图像进行单尺度分解。 在本例中说明如何对图像进行单尺度分解。程序中调用 函数dwt2对图像进行分解,并画出图像分解的低频分量和水 平、垂直和斜线方向的三个高频分量,可以看出低频分量表 现了图像的轮廓,而高频分量表现了图像的细节。 程序代码如下:
第6章 小波变换与图像处理 subplot(231);image(wcodemat(chd2,nbc)); title('尺度2水平方向的高频系数'); subplot(232);image(wcodemat(cvd2,nbc)); title('尺度2垂直方向的高频系数'); subplot(233);image(wcodemat(cdd2,nbc)); title('尺度2斜线方向的高频系数');
第6章 小波变换与图像处理
2. 图像的平稳小波变换实例 下面举例说明函数swt2的用法。 程序代码如下:
%加载图像 load tire; nbc = size(map,1); colormap(pink(nbc)); cod_X = wcodemat(X,nbc); subplot(221)
第6章 小波变换与图像处理
第6章 小波变换与图像处理
C = [ A(N) | H(N) | V(N) | D(N) | ... H(N-1) | V(N-1) | D(N-1) | ... | H(1) | V(1) | D(1) ]
式中,A为低频系数;H为水平高频系数;V为垂直高频系 数;D为斜线高频系数;所有向量均以列向量存储在矩阵C中。
基于MATLAB的小波去噪方法研究

基于MATLAB 的小波去噪方法研究谢建林,杜 娟,袁小平(中国矿业大学信电学院,江苏徐州221008)[摘 要] 通过对小波阈值化去噪的原理介绍,运用MATLAB 中的小波工具箱,对一个含噪信号进行阈值去噪,通过实例验证理论的实际效果,证实了理论的可靠性。
[关键词] MATLAB;小波变换;阈值去噪[中图分类号] TP802+.6 [文献标识码] B [文章编号] 167229943(2004)022*******1 小波阈值化去噪原理普通信号去噪工作原理是利用噪声和信号在频域上分布的不同进行的。
在传统的基于付氏变换的信号去噪方法中,总是使得信号和噪声的频带重叠部分尽可能较小,这样在频域通过时不变滤波,就将信号和噪声区分开。
但如果两者重叠区域很大时,就无法实现去噪的效果了[1,2]。
将含白色高斯噪声的信号进行小波变换,由小波变换的特性可知,高斯噪声的小波变换仍然是高斯分布的,它均匀分布在频率尺度空间的各部分,而信号由于其带限性,它的小波系数仅仅集中在频率尺度空间上的有限部分。
1.1 阈值化在小波域上,噪声的能量分布在所有的小波系数上,而信号的能量分布在一小部分的小波系数上,所以把小波系数分成两类:第一类是重要的、规则的小波系数;第二类是非重要的或者受噪声干扰较大的小波系数。
给定一个阈值δ,所有绝对值小于某个阈值δ的小波系数被看成“噪声”,它们的值用零代替;而超过阈值的小波系数的数值用阈值δ缩减后再重新取值。
根据信号小波分界的这个特点,对信号的小波系数设置一个阈值,大于它的认为属于第二类系数,可以简单保留或进行后续操作;而小于阈值的则去掉。
这样达到了降低噪声的目的,同时保留了大部分信号的小波系数,因此可以较好的保持信号细节。
“软阈值化”和“硬阈值化”是对超过阈值δ的小波系数进行缩减的两种主要方法,如图1、2所示。
横坐标代表信号原始小波系数,纵坐标代表阈值化后小波系数[1]。
图1表示的是“软阈值化”,用数学式表示为:W δ=sgn (W )(|W |2δ),|W |≥δ0, |W |<δ图2表示的是“硬阈值化”,用数学式表示为:W δ=W , |W |≥δ0, |W |<δ112 阈值δ的选取阈值化处理的关键问题是选择合适的阈值δ。
小波变换图像去噪MATLAB实现

基于小波图像去噪的MATLAB 实现一、 论文背景数字图像处理(Digital Image Processing ,DIP)是指用计算机辅助技术对图像信号进行处理的过程。
数字图像处理最早出现于 20世纪50年代,随着过去几十年来计算机、网络技术和通信的快速发展,为信号处理这个学科领域的发展奠定了基础,使得DIP 技术成为信息技术中最重要的学科分支之一。
在现实生活中,DIP 应用十分广泛,医疗、艺术、军事、航天等图像处理影响着人类生活和工作的各个方面。
然而,在图像的采集、获取、编码和传输的过程中,都存在不同程度被各种噪声所“污染”的现象。
如果图像被污染得比较严重,噪声会变成可见的颗粒形状,导致图像质量的严重下降。
根据研究表明,当一张图像信噪比(SNR)低于14.2dB 时,图像分割的误检率就高于0.5%,而参数估计的误差高于0.6%。
通过一些卓有成效的噪声处理技术后,尽可能地去除图像噪声,我们在从图像中获取信息时就更容易,有利于进一步的对图像进行如特征提取、信号检测和图像压缩等处理。
小波变换处理应用于图像去噪外,在其他图像处理领域都有着十分广泛的应用。
本论文以小波变换作为分析工具处理图像噪声,研究数字图像的滤波去噪问题,以提高图像质量。
二、 课题原理1.小波基本原理在数学上,小波定义为对给定函数局部化的新领域,小波可由一个定义在有限区域的函数()x ψ来构造,()x ψ称为母小波,(mother wavelet )或者叫做基本小波。
一组小波基函数,()}{,x b a ψ,可以通过缩放和平移基本小波 来生成:())(1,ab x a x b a -ψ=ψ (1) 其中,a 为进行缩放的缩放参数,反映特定基函数的宽度,b 为进行平移的平移参数,指定沿x 轴平移的位置。
当a=2j 和b=ia 的情况下,一维小波基函数序列定义为:()()1222,-ψ=ψ--x x j j j i (2) 其中,i 为平移参数,j 为缩放因子,函数f (x )以小波()x ψ为基的连续小波变换定义为函数f (x )和()x b a ,ψ的内积:()dx ab x a x f f x W b a b a )(1)(,,,-ψ=ψ=⎰+∞∞- (3) 与时域函数对应,在频域上则有: ())(,ωωa e a x j b a ψ=ψ- (4)可以看出,当|a|减小时,时域宽度减小,而频域宽度增大,而且()x b a ,ψ的窗口中心向|ω|增大方向移动。
小波图像去噪及matlab分析

小波图像去噪及matlab实例图像去噪图像去噪是信号处理的一个经典问题,传统的去噪方法多采用平均或线性方法进行,常用的是维纳滤波,但是去噪效果不太好(维纳滤波在图像复原中的作用)。
小波去噪随着小波理论的日益完善,其以自身良好的时频特性在图像去噪领域受到越来越多的关注,开辟了用非线性方法去噪的先河。
具体来说,小波能够去噪主要得益于小波变换有如下特点:(1)低熵性。
小波系数的稀疏分布,使图像变换后的熵降低。
意思是对信号(即图像)进行分解后,有更多小波基系数趋于0(噪声),而信号主要部分多集中于某些小波基,采用阈值去噪可以更好的保留原始信号。
(2)多分辨率特性。
由于采用了多分辨方法,所以可以非常好地刻画信号的非平稳性,如突变和断点等(例如0-1突变是傅里叶变化无法合理表示的),可以在不同分辨率下根据信号和噪声的分布来消除噪声。
(3)去相关性。
小波变换可对信号去相关,且噪声在变换后有白化趋势,所以小波域比时域更利于去噪。
(4)基函数选择灵活。
小波变换可灵活选择基函数,也可根据信号特点和去噪要求选择多带小波和小波包等(小波包对高频信号再次分解,可提高时频分辨率),对不同场合,选择不同小波基函数。
根据基于小波系数处理方式的不同,常见去噪方法可分为三类:(1)基于小波变换模极大值去噪(信号与噪声模极大值在小波变换下会呈现不同变化趋势)(2)基于相邻尺度小波系数相关性去噪(噪声在小波变换的各尺度间无明显相关性,信号则相反)(3)基于小波变换阈值去噪小波阈值去噪是一种简单而实用的方法,应用广泛,因此重点介绍。
阈值函数选择阈值处理函数分为软阈值和硬阈值,设w是小波系数的大小,wλ是施加阈值后小波系数大小,λ为阈值。
(1)硬阈值当小波系数的绝对值小于给定阈值时,令其为0,而大于阈值时,保持其不变,即:(2)软阈值当小波系数的绝对值小于给定阈值时,令其为0,大于阈值时,令其都减去阈值,即:如下图,分别是原始信号,硬阈值处理结果,软阈值处理结果。
matlab小波变换信号去噪

MATLAB小波变换信号去噪引言小波变换是一种多尺度分析方法,广泛应用于信号处理领域。
由于小波变换具有良好的时频局部性质,可以将信号分解为不同频率和时间分辨率的成分,因此被广泛应用于信号去噪领域。
本文将介绍如何使用MATLAB进行小波变换信号去噪的方法。
MATLAB中的小波变换在MATLAB中,可以使用Wavelet Toolbox中的wavedec函数进行小波分解,使用wrcoef函数进行重构。
具体步骤如下:1.导入待处理的信号数据。
2.选择适当的小波基函数和分解层数。
3.使用wavedec函数对信号进行小波分解,得到分解系数。
4.根据阈值方法对分解系数进行去噪处理。
5.使用wrcoef函数对去噪后的分解系数进行重构,得到去噪后的信号。
6.分析去噪效果并进行评估。
下面将逐步详细介绍这些步骤。
选择小波基函数和分解层数小波基函数的选择在小波分析中非常重要,不同的小波基函数适用于不同类型的信号。
常用的小波基函数有Daubechies小波、Haar小波、db2小波等。
根据信号的特点和分析需求,选择合适的小波基函数是非常重要的。
在MATLAB中,可以使用wname函数查看支持的小波基函数。
可以通过比较不同小波基函数的性能指标来选择合适的小波基函数。
常见的性能指标包括频率局部化、时频局部化和误差能量。
选择分解层数时,需要根据信号的特点和噪声的程度来决定。
一般而言,分解层数越高,分解的细节系数越多,信号的时间分辨率越高,但运算量也会增加。
小波分解使用wavedec函数对信号进行小波分解。
函数的输入参数包括待分解的信号、小波基函数名称和分解层数。
函数输出包括近似系数和细节系数。
[C, L] = wavedec(x, level, wname);其中,x是待分解的信号,level是分解层数,wname是小波基函数名称。
C是包含近似系数和细节系数的向量,L是分解的长度信息。
根据分解层数,可以将分解系数划分为不同频带的系数。
图像小波变换去噪——MATLAB实现

图像⼩波变换去噪——MATLAB实现clear;[A,map]=imread('C:\Users\wangd\Documents\MATLAB\1.jpg');X=rgb2gray(A);%画出原始图像subplot(2,2,1);imshow(X);title('原始图像');%产⽣含噪图像x=imnoise(X ,'gaussian',0,0.003);%画出含噪图像subplot(2,2,2);imshow(x);title('含噪声图像');%下⾯进⾏图像的去噪处理%⽤⼩波函数sym4对x进⾏2层⼩波分解[c,s]=wavedec2(x,2,'sym4');%提取⼩波分解中第⼀层的低频图像,即实现了低通滤波去噪a1=wrcoef2('a',c,s,'sym4'); % a1为double型数据;%画出去噪后的图像subplot(2,2,3); imshow(uint8(a1)); % 注意 imshow()和image()显⽰图像有区别,imshow()不能显⽰double型数据,必须进⾏转换 uint8(a1);title('第⼀次去噪图像'); % 并且image() 显⽰图像有坐标;%提取⼩波分解中第⼆层的低频图像,即实现了低通滤波去噪%相当于把第⼀层的低频图像经过再⼀次的低频滤波处理a2=wrcoef2('a',c,s,'sym4',2);%画出去噪后的图像subplot(2,2,4); imshow(uint8(a2)); %image(a2);title('第⼆次去噪图像');%保存图像imwrite(x,'C:\Users\wangd\Desktop\2.jpg');imwrite(uint8(a1),'C:\Users\wangd\Desktop\3.jpg'); %imwrite()保存图像,也需要将数据类型转化为uint8imwrite(uint8(a2),'C:\Users\wangd\Desktop\4.jpg');。
matlab小波函数

Matlab小波函数一、Matlab小波去噪基本原理1、带噪声的信号一般是由含有噪声的高频信号和原始信号所在的低频信号。
利用多层小波,将高频噪声信号从混合信号中分解出来。
2、选择合适的阈值对图像的高频信号进行量化处理3、重构小波图像:依据图像小波分解的低频信号与处理之后的高频信号来重构图像的信息。
二、第二代小波变换1、构造方法特点:(1)继承了第一代小波的多分辨率的特性。
(2)不依赖fourior变换,直接在时域完成小波变换。
(3)变换之后的系数可以是整数。
(4)图像恢复质量与变换是边界采用何种延拓方式无关。
2、优点:算法简单,速度快,适合并行处理。
对存需求量小,便于DSP芯片实现、可用于本位操作运算。
3、提升原理:构造紧支集双正交小波(1)步骤:分裂—预测—更新(2)分解与重构三、matlab小波函数库1、matlab小波通用函数:(1)wavemngr函数【小波管理器(用于小波管理,添加、删除、储存、读取小波)】wavemngr(‘add’,FN,FSN,WT,NUMS,FILE)wavemngr(‘add’,FN,FSN,WT,NUMS,FILE,B)% 添加小波函数,FN为family name,FSN为family short name WT为小波类型:WT=1表示正交小波,=2表示非正交小波,=3表示带尺度函数的小波,=4表示无尺度函数的小波,=5表示无尺度函数的复小波。
小波族只有一个小波,则NUMS=“,否则NUMS表示小波参数的字符串FILE表示文件名B=[lb ub]指定小波有效支撑的上下界wavemngr(‘del’,N) %删除小波wavemngr(‘restore’)/ wavemngr(‘restore’,IN2) %保存原始小波OUT1= wavemngr(‘read’) %返回小波族的名称OUT1= wavemngr(‘read’,IN2) %返回所有小波的名称OUT1= wavemngr(‘read_asc’)%读取wavelets.asc文件并返回小波信息(2)scal2frq函数【尺度转换频率】F=scal2frq(A,’wname’,DELTA)%返回由尺度A,小波函数“wname”和采样周期DELTA决定的准频率。
基于MATLAB环境下的小波图像去噪

ZHANG n u n, ANG n - u Lt a XI Fe g h a
【 bt c】 I g enin as rb ni a poes gT et dt n eo igue h vrg rier A s at mae -o igi a l ipol mis n rcsi . h a ioa dn in sdteaeae na r d s s c sc e gl n r il s ol
( )Xx3 f) ( (d )
’
1 小波变换
1 1 基本 原理 .
与 时域 函数 对应 , 在频 域上则 有 :
( )=√a 一 (Z ) e O O () 4
在数学上 , 小波定义卫 队给定函数局部化的新 领域 , 波可 由一个 定义 在 有 限 区域 的 函数 ( 小 ) 来构造 , ( 称为母小波( o e w vl ) ) m t r ae t 或者叫 h e 做基本 小波。 一组小波基 函数 , { ( } 可以通 ) , 过缩 放 和平移基 本小 波 ( 来 生成 : )
,
J
( )= 2 ( 一 — 2 )
() 2
其 中, 为平移参数 , i 为缩放 因子, 函数 厂 ( ) 以小 波 ( )为 基 的 连 续 小 波 变 换 定 义 为 函 数 厂 ) ( 和 ( )的内积 :
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《现代信号处理》大作业基于Matlab的小波分解、去噪与重构目录一作业内容及要求 (3)1.1 作业内容 (3)1.2 作业要求 (3)二系统原理 (3)2.1 小波变换原理 (3)2.2 阈值去噪原理 (3)三系统分析及设计 (5)3.1 图像分解 (5)3.2 高频去噪 (5)3.3 图像重构 (6)四程序编写 (7)4.1 main函数 (7)4.2 分解函数 (9)4.2.1 二维分解函数 (9)4.2.2 一维分解函数 (10)4.3 卷积函数 (10)4.4 采样函数 (11)4.4.1 下采样函数 (11)4.4.2 上采样函数 (11)4.5 重构函数 (12)4.5.1 二维重构函数 (12)4.5.2 一维重构函数 (13)五结果分析及检验 (14)5.1 结果分析 (14)5.2 结果检验 (16)六心得体会 (18)参考文献 (19)一作业内容及要求1.1 作业内容用小波对图像进行滤波分解、去噪,然后重构。
1.2 作业要求用小波对图像进行滤波分解、去噪,然后重构。
具体要求:(1) 被处理图像可选择:woman, wbarb, wgatlin, detfingr, tire.;(2) 可以选择db等正交小波、或双正交小波(或用几种小波);(3) 用选用小波的分解滤波器通过定义的卷积函数conv_my( )对图像二维数组进行小波分解,并进行下采样,获取CA、CV、CD、CH等分解子图;(4) 对高频信号子图进行去噪处理,可以采用软阈值、硬阈值等方法;(5) 用选用小波的综合滤波器对去噪的子图进行图像重构。
二系统原理2.1 小波变换原理小波变换的一级分解过程是,先将信号与低通滤波器卷积再下采样可以得到低频部分的小波分解系数再将信号与高通滤波器卷积后下采样得到高频部分的小波分解系数;而多级分解则是对上一级分解得到的低频系数再进行小波分解,是一个递归过程。
二维小波分解重构可以用一系列的一维小波分解重构来实现。
重构则是分解的逆过程,对低频系数、高频系数分别进行上抽样和低通、高通滤波处理。
要注意重构时同一级的低频、高频系数的个数必须相等。
2.2 阈值去噪原理图像去噪的方法是:(1)图像的小波分解。
选择合适的小波函数以及合适的分解层数对图像进行分解。
(2)对分解后的高频系数进行阈值处理。
对分解的每一层,选择合适的阈值对该层的水平、垂直和对角三个方向的高频系数进行阈值处理。
(3)重构图像。
根据小波分解的低频系数和经阈值量化处理后的高频系数进行图像重构。
本设计采用软阈值去噪,其原理为:当小波系数的绝对值小于给定的阈值时,令其为0,大于阈值时,令其都减去阈值,即:λλλλ<>-=||,0| |),|)](|([{ww wwwsign小波阈值λ在去噪过程中起到决定性的作用。
如果λ太小,那么施加阈值以后的小波系数中将包含过多的噪声分量,达不到去噪的目的;反之,如果λ太大,那么将去除一部分信号的分量,从而使由小波系数重建后的信号产生过大的失真。
MATLAB中实现阈值获取的函数有ddenmp、thselect、wbmpen和wdcbm,本次设计中采用ddenmp函数进行阈值获取。
调用格式为[THR,SORH,KEEPAPP]=ddencmp('den','wv',X),函数ddencmp用于获取信号在消噪或压缩过程中的默认阈值。
输入参数X为一维或二维信号;'den'表示进行去噪;'wv'表示选择小波。
返回值THR是返回的阈值;SORH是软阈值或硬阈值选择参数;KEEPAPP表示保存低频信号。
三 系统分析及设计3.1 图像分解图像分解在程序中分为两部分:一维分解以及二维分解。
(1)一维分解先将信号与低通滤波器卷积再下采样可以得到低频部分的小波分解系数,再将信号与高通滤波器卷积后下采样得到高频部分的小波分解系数(2)对输入的信号,也就是前面load 图像之后得到的X 矩阵,先对每一行进行一维分解,在对分解后得到的矩阵的每一列进行一维分解,最后得到一个矩阵X2=[CA CH CV CD];可以将CA 、CH 、 CV 、 CD 依次输出得到分解后的低频、垂直、水平、对角分量。
原始信号分别进行低通、高通滤波,再分别对列进行二元下抽样,就得到低频、高频(也称为平均、细节)两部分系数;再对这两部分系数进行小波分解,步骤与第一级分解一致,最后得到cA :低频分量,cH :水平分量,cV :垂直分量,cD :对角线分量。
流程图如下图1所示。
图1 分解流程图 3.2 高频去噪本次设计采用软阈值去噪方法,将对分解出的cH 、cV 、cD 进行阈值去噪,选用ddencmp 函数获取去噪过程中的默认软阈值。
其调用格式为:[THR,SORH,KEEPAPP]=ddencmp(IN1,IN2,X)。
IN1='den',IN2='wv',X 为一维或二维矩阵信号。
在获取默认阈值后,对该阈值进行软阈值处理,调用到函数wthcoef2进行XLo_D Hi_D 2 2 Lo_DHi_D Hi_DLo_D2 2 2 2 CA CH CDCV 行卷积行卷积 列卷积 列卷积 列卷积列卷积处理,其调用过程中关键部分是tmp = (abs(x)-t);tmp = (tmp+abs(tmp))/2;y = sign(x).*tmp;其中t 代表前面获得的默认阈值,x 代表小波系数的大小。
得到的y 即为软阈值处理后的小波系数。
3.3 图像重构重构的过程与分解过程类似,同样分为两部分:一维重构和二维重构。
(1)一维重构:先对平均部分系数进行上采样,再与低通滤波器卷积。
然后对细节部分选取重构所需的细节部分,长度与本层平均部分系数相同,再对其上采样后进行高通滤波器卷积。
将两个得到的结果相加得到新的平均部分系数。
重复以上操作知道细节部分长度小于平均部分长度。
(2)二维重构:根据重构流程图可知,先对cA 和cH 进行重构,再对cV 和cD 重构,在该程序中所以在该程序中X2=[CA CH CV CD],所以先对行左右两半部分进行重构,重构后得到的矩阵在进行列上下两半部分进行重构,最终得到的重构图像。
具体步骤是先将去噪后的子图分别对行进行,再将低频分量和垂直分量进行二元上采样、低通滤波并合成;将水平分量和对角线分量进行二元上采样、高通滤波并合成,就得到低频、高频(也称为平均、细节)两部分系数;再对这两部分系数进行小波合成,步骤与第一级重构一致,最后通过wkeep 选取我们所需的原始图像的大小,得到原始图像。
该流程图如下图2所示。
图2 重构流程图2 Lo_R Hi_RHi_RLo_R 列卷积 列卷积列卷积 CA CH CD CV2 2 2 2 2 Lo_R Lo_R 行卷积行卷积 Wkeep X’列卷积四程序编写4.1 main函数clear all; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % db4小波分解成低通和高通滤波器% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% figure;[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters('db4');subplot(221);stem(Lo_D);grid on;title('分解低通滤波器');xlabel('系数');ylabel('Lo_D');subplot(222);stem(Hi_D);grid on;title('分解高通滤波器');xlabel('系数');ylabel('Hi_D');subplot(223);stem(Lo_R);grid on;title('综合低通滤波器');xlabel('系数');ylabel('Lo_R');subplot(224);stem(Hi_R);grid on;title('综合高通滤波器');xlabel('系数');ylabel('Hi_R'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 导入和显示原始图像% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% load woman;pho to=X; %X含有被装载的信号figure;colormap(map);%设置颜色映射到矩阵图image(pho to);axis off; %关闭原始信号的坐标轴title('原始信号'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% 用自定义的一维和二维函数分解图像% 得到低频部分(cA),水平部分(cH),垂直部分(cV),对角线部分(cD)子图%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [cA,cH,cV,cD,x1]=mydwt2(photo,Lo_D,Hi_D,map); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 显示经过行分解和下采样之后的图像% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% [n3,n4]=size(x1);L0=x1(1:n3,1:n4/2);H0=x1(1:n3,n4/2+1:n4);figure;colormap(map);image(L0);title('行分解后的低频分量');figure;colormap(map);image(H0);title('行分解后的高频分量');figure; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 对高频部分(cH,cV,cD)进行去噪处理% 得到新的高频子图(new_cH,new_cV,new_cD)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %用小波函数sym5对cH进行1层小波分解[C1,S1]=wavedec2(cH,1,'sym5'); %二维小波多层分解,这里取1,即为1层,输出C1为各层分解系数,S1为各层分解系数长度,下同L=size(x1);%求取信号去噪的默认阈值、软阈值、并保留低频部分[thr1,sorh1,keepapp1]=ddencmp('den','wv',cH);%对三个方向高频系数进行软阈值处理%wthcoef2的调用格式为NC =wthcoef2('type',C,S,N,T,SORH)%其中'type'分别取'h','v','d'代表三个方向%N为尺度向量,T为阈值向量,SORH取'h'和's'分别表示使用硬阈值或软阈值,下同nc1=wthcoef2('h',C1,S1,1,thr1,'s');nc1=wthcoef2('v',C1,S1,1,thr1,'s');nc1=wthcoef2('d',C1,S1,1,thr1,'s');new_cH=waverec2(nc1,S1,'sym5'); %对新的小波分解结构(nc,s)进行重构new_cHH=wkeep(new_cH,L,'c');%提取重构的图像,'c'代表中心部分,但因为L为完整长度,所以用'l'或'r'也可以,下同%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %用小波函数sym5对cV进行1层小波分解[C2,S2]=wavedec2(cV,1,'sym5');%求取信号去噪的默认阈值、软阈值、并保留低频部分[thr2,sorh2,keepapp2]=ddencmp('den','wv',cV);%对三个方向高频系数进行软阈值处理nc2=wthcoef2('h',C2,S2,1,thr2,'s');nc2=wthcoef2('v',C2,S2,1,thr2,'s');nc2=wthcoef2('d',C2,S2,1,thr2,'s');new_cV=waverec2(nc2,S2,'sym5'); %对新的小波分解结构(nc,s)进行重构new_cVV=wkeep(new_cV,L,'c');%提取重构的图像%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %用小波函数sym5对cD进行1层小波分解[C3,S3]=wavedec2(cD,1,'sym5');%求取信号去噪的默认阈值、软阈值、并保留低频部分[thr3,sorh3,keepapp3]=ddencmp('den','wv',cD);%对三个方向高频系数进行软阈值处理nc3=wthcoef2('h',C3,S3,1,thr3,'s');nc3=wthcoef2('v',C3,S3,1,thr3,'s');nc3=wthcoef2('d',C3,S3,1,thr3,'s');new_cD=waverec2(nc3,S3,'sym5'); %对新的小波分解结构(nc,s)进行重构new_cDD=wkeep(new_cD,L,'c');%提取重构的图像%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% subplot(221);colormap(map);image(new_cHH);title('去噪后的水平分量'); subplot(222);colormap(map);image(new_cVV);title('去噪后的垂直分量'); subplot(223);colormap(map);image(new_cDD);title('去噪后的对角线分量'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % cA和去噪后的子图(new_cH,new_cV,new_cD)进行重构% reconstruction为重构之后的图形%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%reconstruction = myidwt2(cA,new_cH,new_cV,new_cD,Lo_R,Hi_R,map); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%4.2 分解函数4.2.1 二维分解函数function [LL,HL,LH,HH,x1]=mydwt2(x,Lo_D,Hi_D,map)% 函数 MYDWT2() 对输入的r*c维矩阵 x 进行二维小波分解,输出四个分解系数子矩阵[LL,HL,LH,HH]% 输入参数:x ——输入矩阵,为r*c维矩阵。