I=imread('lena64.bmp');
I=double(I);
[ca,ch,cv,cd]=dwt2(I,'haar');
[ca1,ch1,cv1,cd1]=dwt2(ca,'haar');
I5=[ca1,ch1;cv1,cd1];
X=[I5,ch;cv,cd];
X0=X;
Y0=max(X);
Y1=max(Y0);
threshold=2^fix(log2(Y1));
[aa,bb]=size(X0);
sublist=[];%空矩阵 存放重要系数
[xx,yy]=size(X);
global N %定义一个全局的N
A=mapping(xx);%用迂回扫描构造矩阵A 1-64...
[m,n]=size(A);
k=1; N=[];%定义一个64*2的矩阵 存放扫描顺序
for k=1:m*n;%1-64个循环
flag=0;
for i=1:m;
if flag==1;
break;
end
for j=1:n;
if A(i,j)==k;
N=[N;i,j];%构造N[]
flag=1;
break;
end
end
end
end
%R=zeros(8);
order=1;
threshold0=threshold;
while threshold ~= threshold0/2^5,
threshold;
[D,X,sublist] = dominantpass(X,threshold,sublist);
DD{order}=D; %扫描出来的放在DD矩阵里
threshold=threshold/2;%阈值/2
if threshold ==threshold0/2^5,
break;
end
S = subordinatepass(sublist,threshold);
SS{order}=S;
order=order+1;
end
global N;
[m,n]=size(N);
XX=zeros(aa);
threshold=threshold0;
sublist=[];
for k=1:5;
RR=zeros(aa);
[a,b]=size(DD{k});
i=1; j=1;
while i<=m;
if j>b;
break;
end
if RR(N(i,1),N(i,2))==1;
i=i+1;
else
if XX(N(i,1),N(i,2))==0
if DD{k}(j)=='p';
XX(N(i,1),N(i,2))=threshold*1.5;
RR(N(i,1),N(i,2))=1;
sublist=[sublist;N(i,1),N(i,2)];
end
if DD{k}(j)=='n';
XX(N(i,1),N(i,2))=-threshold*1.5;
RR(N(i,1),N(i,2))=1;
sublist=[sublist;N(i,1),N(i,2)];
end
if DD{k}(j)=='z';
RR(N(i,1),N(i,2))=1;
end
if DD{k}(j)=='t';
RR(N(i,1),N(i,2))=1;
if i>0&i<=4
RR=checkchildren(i,RR);
else
if i>4&i<=m/4;
RR=checkchildren2(i,RR);
else
if i>m/4;
RR=checkchildren3(i,RR);
end
end
end
end
i=i+1;
j=j+1;
else
i=i+1;
end
end
end
[xx,yy]=size(sublist);
threshold=threshold/2;
for i=1:xx;
if k==5 | threshold==threshold0/2^6;
break;
end
if SS{k}(i)==1;
if XX(sublist(i,1),sublist(i,2))>0;
XX(sublist(i,1),sublist(i,2))= XX(sublist(i,1),sublist(i,2))+threshold/2;
else
XX(sublist(i,1),sublist(i,2))= XX(sublist(i,1),sublist(i,2))-threshold/2;
end
else
if SS{k}(i)==0
if XX(sublist(i,1),sublist(i,2))>0;
XX(sublist(i,1),sublist(i,2))= XX(sublist(i,1),sublist(i,2))- threshold/2;
else
XX(sublist(i,1),sublist(i,2))= XX(sublist(i,1),sublist(i,2))+threshold/2;
end
end
end
end
T=threshold*2
k
XX
end
Z1=idwt2(XX(1:16,1:16),XX(1:16,17:32),XX(17:32,1:16),XX(17:32,17:32),'haar');
Z2=idwt2(Z1,XX(1:32,33:64),XX(33:64,1:32),XX(33:64,33:64),'haar');
Z2=uint8(Z2);
imshow('lena64.bmp')
title('原始图像')
figure;
imshow(Z2)
title('压缩后的图像')
my_EZW_haar.rar_EZW 压缩_haar transform_site:en.pudn.com_小波 解压缩_小波
版权申诉
57 浏览量
2022-07-15
02:50:33
上传
评论
收藏 9KB RAR 举报
alvarocfc
- 粉丝: 109
- 资源: 1万+
最新资源
- 测试aaaaaaabbbbb
- VID20240521070643.mp4
- Android系统原理与开发学习要点详解-培训课件.zip
- 部署yolov8的tensorrt模型支持检测分割姿态估计的C++源码+部署步骤.zip
- 以简单、易用、高性能为目标、开源的时序数据库,支持Linux及Windows, Time Series Database.zip
- python-leetcode面试题解之第198题打家劫舍-题解.zip
- python-leetcode面试题解之第191题位1的个数-题解.zip
- python-leetcode面试题解之第186题反转字符串中的单词II-题解.zip
- 一个基于python的web后端高性能开发框架,下载可用
- python-leetcode面试题解之第179题最大数-题解.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈