最新实验七小波变换精品版.docx
《最新实验七小波变换精品版.docx》由会员分享,可在线阅读,更多相关《最新实验七小波变换精品版.docx(12页珍藏版)》请在冰豆网上搜索。
最新实验七小波变换精品版
2020年实验七小波变换精品版
实验七小波变换
一、实验目的
1、了解小波变换及其变换系数的分布。
2、了解小波变换在图像去噪处理中的应用。
二、小波变换及去噪应用
1、小波分解及系数分布
信号分析是为了获得时间和频率之间的相互关系。
傅立叶变换提供了有关频率域的信息,但有关时间的局部化信息却基本丢失。
与傅立叶变换不同,小波变换是通过缩放母小波(Mother wavelet)的宽度来获得信号的频率特征,通过平移母小波来获得信号的时间信息。
对母小波的缩放和平移操作是为了计算小波系数,这些小波系数反映了小波和局部信号之间的相关程度。
常用的母小波有:
Haar小波、dbN小波系、symN小波系等。
小波系数分布规律:
●随着分层数的增加,小波系数的范围越来越大,说明越往后层次的小波系数越重要。
●除LL外,其他子带方差和能量明显减少,充分说明低频系数在图像编码中的重要性。
●对同一方向子带,按从高层到低层(从低频到高频)子带,有:
HL3→HL2→HL1,LH3→LH2→LH1,HH3→HH2→HH1,大部分情况下其方差从大到小,有一定的变换规则。
2、小波在图像去噪中的应用
工程应用中,有用信号通常表现为低频信号或是一些比较平稳的信号,而噪声信号通常表现为高频信号。
所以基于小波变换的去噪过程可以分为以下几步进行:
(1)小波分解。
选择一个小波并确定一个小波分解的层数N,然后对图像进行N层小波分解。
(2)小波分解高频系数的阈值量化。
对第1层到第N层的每一层高频系数,选择一个阈值进行阈值量化处理。
(3)小波的重构。
根据小波分解的第N层的低频系数和经过量化处理后的第1层到第N层的高频系数,进行的小波重构。
处理的方法一般有三种:
(1)强制去噪处理。
该方法把小波分解结构中的高频系数全部变为0,即把高频部分全部去除掉,然后再对信号进行重构处理。
这种方法比较简单,重构后的消噪信号也比较平滑,但容易丢失信号的有用成分。
(2)默认阈值去噪处理。
该方法利用ddencmp函数产生信号的默认阈值,然后利用wdencmp函数进行消噪处理。
(3)给定软硬阈值进行去噪处理。
在实际的去噪处理过程中,阈值往往可以通过经验公式获得,而且这种阈值比默认阈值更具有可信度。
在进行阈值量化处理中可用wthresh函数进行。
3、matlab提供的相关函数
(1)dwt2
功能:
单尺度二维离散小波变换
语法:
[cA,cH,cV,cD]=dwt2(X,‘wname’)
[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)
该函数用于二维离散小波分解。
X为被分析的图像;wname为分解所用到
的小波函数;Lo_D,Hi_D为分解滤波器;cA和cH、cV、cD(水平、垂直、对角线)分别是返回的低频系数和高频系数向量。
二维小波分解是把尺度j的低频部分分解成四个部分:
尺度j+1的低频部分和三个方向(水平、垂直、斜线)的高频部分。
(2)idwt2
功能:
单尺度逆二维离散小波变换
语法:
X=idwt2(cA,cH,cV,cD,‘wname’)
X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)
X=idwt2(cA,cH,cV,cD,‘wname’,S)
X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S)
该函数用于单尺度二维离散小波变换的重构,它通常和dwt2配套使用。
返回向量X为单尺度重构后信号的低频系数。
(3)ddencmp
功能:
获取信号在消噪或压缩过程中的默认阈值
语法:
[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,IN2,X)
[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,'wp',X)
[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,'wv',X)
输入参数X为一维或二维信号;IN1取值为'den'或'cmp','den'表示进行去噪,'cmp'表示进行压缩;IN2取值为'wv'或'wp',wv表示选择小波,wp表示选择小波包。
返回值THR是返回的阈值;SORH是软阈值或硬阈值选择参数;KEEPAPP表示保存低频信号;CRIT是熵名(只在选择小波包时使用)。
(4)wdencmp
功能:
用于一维或二维信号的消噪或压缩
语法:
[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('gbl',X,'wname',N,THR,SORH,KEEPAPP);
[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',X,'wname',N,THR,SORH);
[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('lvd',C,L,'wname',N,THR,SORH);
‘wname’是所用的小波函数,gbl(global的缩写)表示每一层都采用同一个阈值进行处理,lvd表示每层采用不同的阈值进行处理,N表示小波分解的层数,THR为阈值向量,对于格式
(2)和(3)每层都要求有一个阈值,因此阈值向量THR的长度为N,SORH表示选择软阈值或硬阈值(分别取值为's'和'h'),参数KEEPAPP取值为1时,则低频系数不进行阈值量化,反之,低频系数要进行阈值量化。
XC是进行消噪或压缩后的信号,[CXC,LXC]是XC的小波分解结构,PERF0和PERFL2是恢复或压缩L^2的范数百分比。
(5)wthresh
功能:
返回X经过软阈值或硬阈值处理后的信号
语法:
Y=wthresh(X,SORH,T)
T是阈值。
SORH='s',进行软阈值处理,即把信号的绝对值与阈值进行比较,小于或等于阈值的点变为零,大于阈值的点为该点值与阈值的差值。
SORH='h',进行硬阈值处理,即把信号的绝对值和阈值进行比较,小于或等于阈值的点变为零,大于阈值的点保持不变。
一般来说,用硬阈值处理后的信号比用软阈值处理后的信号更粗糙。
三、实验内容及步骤
1、小波的分解与重构
例:
以下程序是对图像进行一级小波变换及重构
closeall
clear
I=imread('cameraman.tif');
[M,N]=size(I);
[A,H,V,D]=dwt2(I,'haar');%使用haar小波对二维图像进行一级小波分解
%A近似子带;H水平细节子带;V垂直细节子带;D对角细节子带
J=I;
%---------小波分解图像-----
J(1:
M/2,1:
N/2)=A;
J(1:
M/2,N/2+1:
N)=H;
J(M/2+1:
M,1:
N/2)=V;
J(M/2+1:
M,N/2+1:
N)=D;
%-----------重构图像----
II=idwt2(A,H,V,D,'haar');
figure
imshow(uint8(J)),title('haar小波一级分解')
figure
imshow(uint8(II)),title('haar小波重构')
思考题1:
使用haar小波对图像'Fig4.11(a).jpg'进行二级小波分解,结果类似下图。
并将其重构回原图。
写出命令及结果。
程序:
closeall
clear
I=imread('Fig4.11(a).jpg');
[M,N]=size(I);
[A,H,V,D]=dwt2(I,'haar');%使用haar小波对二维图像进行一级小波分解
%A近似子带;H水平细节子带;V垂直细节子带;D对角细节子带
J=I;
%---------小波一级分解图像-----
J(1:
M/2,1:
N/2)=A;
J(1:
M/2,N/2+1:
N)=H;
J(M/2+1:
M,1:
N/2)=V;
J(M/2+1:
M,N/2+1:
N)=D;
[X,Y]=size(A);
[cA,cH,cV,cD]=dwt2(A,'haar');
Z=J;
%---------小波二级分解图像-----
Z(1:
X/2,1:
Y/2)=cA;
Z(1:
X/2,Y/2+1:
Y)=cH;
Z(X/2+1:
X,1:
Y/2)=cV;
Z(X/2+1:
X,Y/2+1:
Y)=cD;
%-----------重构图像----
II=idwt2(cA,cH,cV,cD,'haar');
III=idwt2(II,H,V,D,'haar');
figure
imshow(uint8(Z)),title('haar小波二级分解')
figure
imshow(uint8(III)),title('haar小波重构')
程序结果
2、小波阈值去噪
阈值法是一种传统的图像分割方法。
是在一幅图像中,把目标从背景中分离出来,以便于进一步处理。
它是对图像进行视觉分析和模式识别的基本前提.同时它也是一个经典难题,到目前为止既不存在一种通用的图像分割方法,也不存在一种判断是否分割成功的客观标准。
例:
使用ddencmp函数获取图像的阈值。
clear,closeall
x=imread('cameraman.tif');
xn=imnoise(x,'gaussian');
%使用ddencmp函数来计算默认阈值和熵标准
%thr是阈值
[thr,sorh,keepapp]=ddencmp('den','wv',xn);
y=xn>thr;%大于阈值的像素点取值为“1”,显白色;
%小于阈值的像素点取值为“0”,显黑色;
figure
imshow(y),title('直接使用阈值判断')
z=wthresh(double(xn),sorh,thr);
figure
imshow(z),title('使用wthresh函数处理')
k=im2bw(xn);%将图像转为二值图像
figure
imshow(k),title('im2bw函数转为二值图像')
小波阈值去噪的具体处理过程为:
将含噪信号在各尺度上进行小波分解,设定一个阈值,幅值低于该阈值的小波系数置为0,高于该阈值的小波系数完全保留,或者做相应的“收缩(shrinkage)”处理。
最后将处理后获得的小波系数用小波反变换进行重构,得到去噪后的图像。
例:
根据ddencmp函数获取的阈值进行去噪处理。
clear,closeall
x=imread('cameraman.tif');
xn=imnoise(x,'gaussian');
%====================================
%使用ddencmp函数来计算消噪的默认阈值
%根据ddencmp函数计算的默认阈值,使用wdencmp函数来实现图像的去噪
[thr,sorh,keepapp]=ddencmp('den','wv',xn);
%使用sym5小波进行二级小波分解后,采用同一个阈值去噪,保留低频成分
[Xdenoise]=wdencmp('gbl',xn,'sym5',2,thr,sorh,keepapp);
%显示去噪后的图像
figure
subplot(121),imshow(xn)
subplot(122),imshow(uint8(Xdenoise));
title('wdencmp去噪后的图像');
思考题2:
采用强制去噪的处理方法,对加高斯噪声的图像进行二级小波分解,将其所有的高频子带全部清零,然后小波反变换进行重构。
与使用wdencmp函数阈值去噪的效果进行比较。
程序
closeall
clear
x=imread('cameraman.tif');
I=imnoise(x,'gaussian');%对图像添加高斯白噪声
[M,N]=size(I);
[A,H,V,D]=dwt2(I,'haar');%使用haar小波对二维图像进行一级小波分解
%A近似子带;H水平细节子带;V垂直细节子带;D对角细节子带
J=I;
%---------小波一级分解图像-----
J(1:
M/2,1:
N/2)=A;
J(1:
M/2,N/2+1:
N)=H;
J(M/2+1:
M,1:
N/2)=V;
J(M/2+1:
M,N/2+1:
N)=D;
H=zeros(M/2,N/2);
V=zeros(M/2,N/2);
D=zeros(M/2,N/2);
[X,Y]=size(A);
[cA,cH,cV,cD]=dwt2(A,'haar');
Z=J;
%---------小波二级分解图像-----
Z(1:
X/2,1:
Y/2)=cA;
Z(1:
X/2,Y/2+1:
Y)=cH;
Z(X/2+1:
X,1:
Y/2)=cV;
Z(X/2+1:
X,Y/2+1:
Y)=cD;
教师上课cH=zeros(X/2,Y/2);
欧洲西部教学反思cV=zeros(X/2,Y/2);
未来两年大学生活的计划cD=zeros(X/2,Y/2);
%-----------重构图像----
II=idwt2(cA,cH,cV,cD,'haar');
智慧树思辨与创新考试答案III=idwt2(II,H,V,D,'haar');
figure
教育调查报告小学imshow(I),title('原图')
武汉牛津英语figure
推进一带一路建设既要imshow(uint8(Z)),title('haar小波二级分解')
时间像小马车教学反思figure
imshow(uint8(III)),title('强制去噪')
日本语言学校学费
教师教育理念一句话与使用wdencmp函数阈值去噪的效果相比较,强制去噪后的图没有wdencmp函数阈值去噪后的图平滑,使用wdencmp函数阈值去噪的图还原效果更好。