MATLAB 图像分解与重构:以 woman 图像为例详解 dwt2、idwt2、wavedec2 和 waverec2 命令的应用


👨‍🎓 博主简介:博士研究生

🔬 超级学长:超级学长@实验室(提供各种程序开发、实验复现与论文指导)

📧 个人邮箱:easy_optics@126.com

💬 个人微信:easy_optics

🐧 个人企鹅:754357517



摘要

本文详细分析了MATLAB中用于图像分解与重构的dwt2、idwt2、wavedec2和waverec2命令,并通过对woman图像进行实际操作演示了这些命令的应用。

一、MATLAB 中的图像分解与重构:dwt2、idwt2、wavedec2 和 waverec2 命令详解

MATLAB中实现图像分解和重构的主要命令主要有dwt2(idwt2)和wavedec2(waverec2)。其中,进行一层小波分解的命令为dwt2,对应的小波重构命令为idwt2;进行多层分解的命令为wavedec2,对应的重构命令为waverec2。

本博文主要介绍的是图像的分解与重构,一维信号的小波分解与重构可见博主的另一篇博文:

一维信号的低频与高频成分的小波多维分解与重构实例-附Matlab源代码

       (1) 一层小波分解与重构

       [CA, CH, CV, CD] = dwt2(X, ‘wname’);

其中,dwt2表示离散小波变换;X为输入参数,是图像;'wname’是小波名字;输出变量CA为低低频分解信息,刻画原始图像的逼近信息;CH为低高频分解信息,刻画原始图像的横向细节;CV为高低频分解信息,刻画原始图像的垂直细节;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’或者’sp1’(边界保持导数一致进行延拓),常数延拓’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, Lo_D, Hi_D,‘mode’,MODE);

       (2) 多层小波分解与重构

       [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] = detcoef2(‘all’,C,S,N);

       小波的多层重构命令为完全重构命令waverec2和部分重构命令wrcoef2,具体为:

       X = waverec2(C, S, N, ‘wname’);

       X = waverec2(C, S, N, Lo_D, Hi_D);

       X = wrcoef2(‘type’,C,S,‘wname’,N);

       X = wrcoef2(‘type’,C,S,Lo_R,Hi_R,N);

       X = wrcoef2(‘type’,C,S,‘wname’);

       X = wrcoef2(‘type’,C,S,Lo_R,Hi_R);

       wrcoef2用于实现为由二维小波分解提取出的不同频段的信息重构图像。

       'type’为a, h, v, d分别对应的是低频信息、水平高频、垂直高频和对角高频信息。

二、MATLAB 的图像小波分解与重构实例分析

本文以woman图像为例进行小波分解与重构演示,原始图像如图1所示:

在这里插入图片描述

图1 原始woman图像

用MATLAB的dwt2命令对图1所示的woman图像进行分解重构,得到分解的低频和高频4个通道的图像,如图2所示。

在这里插入图片描述

图2 小波分解的4个通道图像

用wavedec2命令、detcoef2命令和appcoef2命令得到分解的各个层次的低频和高频图像,第二层分解的各通道图像如图3所示:

在这里插入图片描述

图3 第二层小波分解的各个通道图像

第一第二层分解的各通道图像如图4所示:

在这里插入图片描述

图4 第一和第二两层分解后的通道信息

各分解图像拼接图和原图的对比如图5所示。

在这里插入图片描述

图5 原始图像和所有系数拼接后的图像

用idwt2对分解图像进行重构,第一层分解的各个频率通道图像进行重构,如图6所示。

在这里插入图片描述

图6 原始图像和由第一层各个频率通道重构的图像

用waverec2命令进行多层图像重构,由第二层各个频率通道图像进行重构的结果如图7所示。

在这里插入图片描述

图7 由第二层各个频率通道重构的图像

与信号分解重构类似,可以看出图像只由高层低通信号重构的结果为信号的概貌,而细节信息可由各层次的高频信息进行重构,从而实现信号的分层次分解和重构。

三、程序获取

上述演示实例源程序:MATLAB 图像分解与重构:以 woman 图像为例详解 dwt2、idwt2、wavedec2 和 waverec2 命令的应用

更深入的研究,可私信博主。


博主简介:擅长智能优化算法信号处理图像处理机器视觉深度学习神经网络等领域Matlab仿真以及实验数据分析等,matlab代码问题、商业合作、课题选题与科研指导等均可私信交流


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超级学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值