赞
踩
MATLAB中实现图像分解和重构的命令主要有dwt2(idwt2)和 wavedec2( waverec2)。其中,进行一层小波分解的命令为dwt2,对应的小波重构命令为idwt2;进行多层分解的命令为wavedec2,对应的重构命令为 wavered2。
[CA,CH,CV,CD] = dwt2(X,‘wname’);
其中,dwt2表示离散小波变换;X为输入参数,是图像;wname是小波名字;输出变量CA为低低频分解信息,刻画原始图像的逼近信息;CH为低高频分解信息,刻画原始图像的横向细节;CⅤ为高低频分解信息,刻画原始图像的垂直细节;CD为高高频分解信息,刻画原始图像的对角线上的细节。
[CA,CH,CV,CD] = dwt2(X,Lo_D,Hi_D);
为另一种离散小波变换,输入参数为分解的低通滤波器和高通滤波器。
[CA,CH,CV,CD] = dwt2(X,Lo_D,Hi_D, 'mode, MODE);
为不同形式边界延拓的离散小波变换,其中,MODE表示不同的延拓方式,具体有对称延拓’sym’或者’symh’(半点对称),‘symw’ (全点对称),反对称延拓’asym’或者 ‘asymh’(半点反对称), ‘asymw’(全点反对称),零延拓’zpd’,一阶光滑延拓’spd’或者’spl’(边界保持导数一致进行延拓),常数延拓’sp0’,周期延拓’ppd’或者’per’。
对应的小波重构实现:
X = idwt2(CA,CH,CV,CD, ‘wname’);
X = idwt2(CA,CH,CV,CD, Lo_D,Hi_D);
X = idwt2(CA,CH,CV,CD, 'mode, MODE);
[C,S] = wavedec2(X, N, ‘wname’);
其中, Wavedec2为多层小波分解函数;X为输入参数,是图像;N为分解层数; 'wname’是小波名字;输出变量C为所有分解信息的组合,具体为C=[A(N)|H(N)V(N)D(N)|…H(N-1)V(N-1)|D(N-1)…|H(1)V(1)D(1)],C为行向量;S为分解后各个频段图像的尺寸大小。
[C,S] = wavedec2(X, N, Lo_D,Hi_D);
为另一种离散小波变换。其中,输入参数N为分解层数;Lo_D和Hi_D分别为分解的低通滤波器和高通滤波器。由于C表达的是行向量,函数 appcoef2和 detcoef2分别能够返回二维表达的逼近图像的系数和高频各通道的图像系数,具体形式为
A=appcoef2(C,S, ‘wname’,N);
D= detcoef2(O,C,S,N);
O可以取’h’, ‘v’,‘d’, ‘all’,返回分解的水平高频,垂直高频和对角高频图像系数。
当O参数选all时,返回值是三个高通图像系数,即
[H,V,D]= detcoef(‘all’,C,S,N);
小波的多层重构命令为完全重构命令 waverec2和部分重构命令wrcoef2,具体为:
wrcoef2用于实现由二维小波分解提取出的不同频段的信息重构图像。
'type’为a,h,v,d分别对应的是低频信息、水平高频、垂直高频和对角高频信息
用 MATLAB的dwt2命令对图像Lena进行分解重构,得到分解的低频和高频4个通道的图像,如图1所示。
用idwt2对分解图像进行重构,第一层分解的各个频率通道图像进行重构,如图2所示。
用 wavedec2命令、 detcoef2命令和 appcoe2f命令得到分解的各个层次的低频和高频图像,第二层分解的各通道图像如图3所示,第一第二层分解的各通道图像如图4所示。各分解图像拼接图和原图的对比如图5所示。
用 wavered2命令进行多层图像重构,由第二层各个频率通道图像进行重构的结果如图6所示。可以看出图像只由高层低通信号重构的结果为信号的概貌,而细节信息可由各层次的高频信息进行重构,从而实现信号的分层次分解和重构。
演示实例可从以下链接处获取:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。