紧急求助:在MTLAB下实现用小波变换对图像进行压缩处理的一个实例。包括完整的程序。 30
2个回答
展开全部
I=imread('cameraman.tif');
xd=im2double(I) ;
[m,n]=size(I); % 求出规范化矩阵x的行列数
%xd=double(x); % 将矩阵x的数据格式转换为适合数值处理的double格式
for i=1:2
[dLL,dHL,dLH,dHH]=dwt2(xd,'db1'); % 矩阵小波分解
tmp=[dLL,dHL;dLH,dHH]; % 将分解系数存入缓存矩阵
xd=dLL; % 将缓存矩阵左上角部分的子矩阵作为下一层分解的源矩阵
[row,col]=size(tmp); % 求出缓存矩阵的行列数
y(1:row,1:col)=tmp; % 将缓存矩阵存入输出矩阵的相应行列
end
yd=uint8(y); % 将输出矩阵的数据格式转换为适合显示图像的uint8格式
for i=1:2 % 对矩阵 yd 进行分界线处理,画出分解图像的分界线
m=m-mod(m,2);
n=n-mod(n,2);
yd(m/2,1:n)=255;
yd(1:m,n/2)=255;
m=m/2;n=n/2;
end
wname='db1'
n=2;
[c,s] = wavedec2(I,n,wname);
alpha = 1.5; m = 2.7*prod(s(1,:));
[thr,nkeep] = wdcbm2(c,s,alpha,m)
% Compression
[xd,cxd,sxd,perf0,perfl2] = wdencmp('lvd',c,s,wname,n,thr,'h');
%使用第二个axes
I2 = uint8(xd)
%axes(handles.axes2);
subplot(1,2,1);
imshow(I);
title('原始图像');
subplot(1,2,2)
imshow(I2);
title('压缩图像');
xd=im2double(I) ;
[m,n]=size(I); % 求出规范化矩阵x的行列数
%xd=double(x); % 将矩阵x的数据格式转换为适合数值处理的double格式
for i=1:2
[dLL,dHL,dLH,dHH]=dwt2(xd,'db1'); % 矩阵小波分解
tmp=[dLL,dHL;dLH,dHH]; % 将分解系数存入缓存矩阵
xd=dLL; % 将缓存矩阵左上角部分的子矩阵作为下一层分解的源矩阵
[row,col]=size(tmp); % 求出缓存矩阵的行列数
y(1:row,1:col)=tmp; % 将缓存矩阵存入输出矩阵的相应行列
end
yd=uint8(y); % 将输出矩阵的数据格式转换为适合显示图像的uint8格式
for i=1:2 % 对矩阵 yd 进行分界线处理,画出分解图像的分界线
m=m-mod(m,2);
n=n-mod(n,2);
yd(m/2,1:n)=255;
yd(1:m,n/2)=255;
m=m/2;n=n/2;
end
wname='db1'
n=2;
[c,s] = wavedec2(I,n,wname);
alpha = 1.5; m = 2.7*prod(s(1,:));
[thr,nkeep] = wdcbm2(c,s,alpha,m)
% Compression
[xd,cxd,sxd,perf0,perfl2] = wdencmp('lvd',c,s,wname,n,thr,'h');
%使用第二个axes
I2 = uint8(xd)
%axes(handles.axes2);
subplot(1,2,1);
imshow(I);
title('原始图像');
subplot(1,2,2)
imshow(I2);
title('压缩图像');
2012-03-19
展开全部
e
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询