clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
%****************************************************************************
%更多关于matlab和fpga的搜索“fpga和matlab”的CSDN博客:
%matlab/FPGA项目开发合作
%https://blog.csdn.net/ccsss22?type=blog
%****************************************************************************
Level = 2;
wavename ='db9';
mode ='sym';
[X,map] = imread('source\P256.jpg');
deccof = struct('cA',[],'cH',[],'cV',[],'cD',[]);
reccof = struct('RX',[]);
sX = size(X);
nbcol = size(map,1);
X = double(X);
%画出原始图像
figure;
subplot(121);
imshow(uint8(X));
title('原始图像');
DX=X;
deccof(1).cA=X;
for i=2:Level
%用小波函数进行分解
[deccof(i).cA,deccof(i).cH,deccof(i).cV,deccof(i).cD]=dwt2(DX,wavename,'mode',mode);
DX=deccof(i).cA;
end
reccof(i).RX=deccof(i).cA;
i=i+Level;
for j=Level:-1:2
%画出每级重构的图像
%利用分解系数进行直接重构
reccof(j-1).RX=idwt2(reccof(j).RX,deccof(j).cH,deccof(j).cV,deccof(j).cD,wavename,size(deccof(j-1).cA),'mode',mode) ;
i=i-1;
end
%检查重构精度
A0max1=max(max(abs(X-reccof(1).RX)));
A0max2=prod(size(find(abs((X-(reccof(1).RX)))~=0)));
subplot(122);
subplot(122);imshow(reccof(1).RX/255);
title('重构图像');
%压缩比为:
(size(DX,1)*size(DX,2))/(size(X,1)*size(X,2))