58_二维离散小波变换matlab代码图像的离散小波变换 基于matlab2018a及以上版本实现。 其他版本不保证运行。 图像的离散小波变换是把其分解为近似系数、水平细节系数、垂直细节系数以及对角细节系数。 再次分解时是对这一次分解的近似系数进行分解其他系数不处理。 主要输入参数有:分解层数小波类型rgb值展示参数。 并绘图显示近似系数和各个细节系数。 仍以lena图像为例展示分解后图像。 附带一份数据可以查看数据格式来调整你的数据最后使用代码运行。咱们直接上硬货。二维离散小波变换DWT在图像处理中就像把照片拆成不同精度的副本今天手把手教你在MATLAB里实现这个操作。准备好你的MATLAB 2018a老版本可能扑街。先看核心代码骨架img imread(lena.jpg); img im2double(rgb2gray(img)); % 转灰度图 level 3; % 分解3层 wname db1; % 小波基 [c,s] wavedec2(img, level, wname);这段代码里wavedec2是关键返回的c是系数向量s记录各层结构。有个坑要注意彩色图需要分通道处理咱们这里用灰度图演示更直观。58_二维离散小波变换matlab代码图像的离散小波变换 基于matlab2018a及以上版本实现。 其他版本不保证运行。 图像的离散小波变换是把其分解为近似系数、水平细节系数、垂直细节系数以及对角细节系数。 再次分解时是对这一次分解的近似系数进行分解其他系数不处理。 主要输入参数有:分解层数小波类型rgb值展示参数。 并绘图显示近似系数和各个细节系数。 仍以lena图像为例展示分解后图像。 附带一份数据可以查看数据格式来调整你的数据最后使用代码运行。分解后的系数提取要按层级来A3 appcoef2(c, s, wname, 3); % 第3层近似系数 [H3,V3,D3] detcoef2(all,c,s,3); % 第3层细节系数 A2 appcoef2(c, s, wname, 2); % 第2层近似系数 [H2,V2,D2] detcoef2(all,c,s,2);这里有个冷知识——每往下一层图像尺寸会缩小一半。比如原始512x512第三层系数就变成64x64了。所以显示时需要上采样A3_up imresize(A3, size(img)); % 缩放至原图尺寸 imshow(A3_up, Colormap, gray); % 显示近似系数完整的可视化代码应该长这样figure(Position, [100 100 1200 800]) subplot(2,2,1) imshow(A3_up, []) title(近似系数第三层) subplot(2,2,2) imshow(imresize(H3, size(img)), []) title(水平细节) subplot(2,2,3) imshow(imresize(V3, size(img)), []) title(垂直细节) subplot(2,2,4) imshow(imresize(D3, size(img)), []) title(对角细节)跑出来的效果应该能看到类似这样的结构近似系数保留主体轮廓三个细节系数分别对应横向、纵向和对角线方向的边缘信息。重点提醒小波基类型影响巨大把db1换成bior3.7试试边缘检测效果立竿见影。数据格式方面你的输入矩阵必须是double类型0-1范围。如果遇到维度错误检查s矩阵的结构——它记录了每层分解后的尺寸变化。举个栗子512x512的原图分解3层后s矩阵结构应该是[64 64; 64 64; 128 128; 256 256; 512 512]最后奉劝一句别在低版本MATLAB上死磕wavedec2的参数顺序在不同版本有差异。遇到报错先检查函数文档别头铁硬调参数。代码跑通后建议保存系数矩阵后续做图像压缩或去噪可以直接调用这些系数操作。