MATLAB小波重构近似图像

来源:百度知道 编辑:UC知道 时间:2024/05/24 17:58:57
对图像数据Data,通过小波分解后,会得到不同的分解系数,现在只想把一层分解的近似系数对应重构回的图像显示出来,用MATLAB怎么做呢?
我看书上说明这么做的
load Data
figure(1);imshow(Data,[ ]);
[C,S]=wavedec2(Data,2,'db2');
Data=idwt2(C(1),C(2),C(3),C(4),'db2');
figure(2);imshow(Data,[ ]);
但是第二个图好像没有东西显示出来,我想是否重构出来只是系数呢?怎么样能得到类似原图像的近似图像呢?

这是我整理的一个小波分解重构的程序,你看下吧,应该会有帮助
close all;
clear all;
clc;
%采样频率
fs=1000;
%采样间隔
Ts=1/fs;
t=0:Ts:0.2;
%采样点数
N=length(t);
n=1/N;
a=sin(100*pi*t+pi/2);
b=0.4*exp(-200*(t-0.08)).*cos(1000*pi*t);
b(1:0.08*fs)=0;
xdata=a+b;

%信号时域波形
figure(1);
plot(1:N,xdata);

%使用db10小波进行尺度为5时的分解
[c,l]=wavedec(xdata,5,'db10');
%从小波分解结构[c,l]重构信号xdata
a0=waverec(c,l,'db10');

%检查重构效果
figure(2);
subplot(3,1,1);
plot(xdata);
title('原始信号')
subplot(3,1,2);
plot(a0);
title('重构信号')
subplot(3,1,3);
plot(xdata-a0);
title('误差信号')
err=max(abs(xdata-a0))

%重构第1~5层高频细节信号
d5=wrcoef('d',c,l,'db10',5);
d4=wrcoef('d',c,l,'db10',4);
d3=wrcoef('d',c,l,'db10',3);
d2=wrcoef('d',c,l,'db10',2);
d1=wrcoef('