Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2010-07-08, 17:06   #1
blood
初级会员
 
注册日期: 2010-07-08
年龄: 45
帖子: 2
声望力: 0
blood 正向着好的方向发展
默认 求助

这个程序为什么压缩后的图像出不来?其中的压缩比和图像的像素怎么算的,每次改了压缩比应该出来新图形的!请高手帮一下,必要的话,把你载入的图发给我,我在做一下,研究一下!!

%装入原始图像
Sig=imread('G:\untitled.tif');
%设置压缩比
rat=4;
Sig=im2double(Sig);
%显示原始图像
figure(1);
imshow(Sig);
%计算离散余弦变换
%分块处理
T=dctmtx(8);
%DCTcoe=blkproc(Sig,[8 8],'P1*x*P2',T,T');
DCTcoe=blkproc(Sig(:,:,1),[8 8],'P1*x*P2',T,T');
%T和T转置是DCT函数P1*X*P2的参数
%得到DCT系数矩阵
coeVar=im2col(DCTcoe,[8,8],'distinct');
coe=coeVar;
[Y,Ind]=sort(coeVar);
%求出DCT系数排列矩阵Y的大小
[m n]=size(coeVar);
%按照压缩比保留系数
Snum=64-64/rat;
for i=1:n
coe(Ind(1:Snum),i)=0;
end
%重新排列系数块
B2=col2im(coe,[8,8],[m,n],'distinct');
%进行余弦反变换
I2=blkproc(B2,[8 8],'P1*x*P2',T',T);
%显示压缩后的图像
figure(4);
imshow(I2);
blood 当前离线   回复时引用此帖
旧 2010-07-08, 19:26   #2
yhcode
高级会员
 
注册日期: 2008-05-13
年龄: 44
帖子: 232
声望力: 21
yhcode 正向着好的方向发展
默认 回复: 求助

你这个程序注释有问题,首先你要了解一个概念,什么是压缩比?压缩比是指原始数据量与压缩后数据量的比值,程序里的rate只不过是个阈值,不同的rate下DCT系数保留部分不同,如果要压缩的话,还需要对DCT系数进行编码。你这个程序在不同rate下给出的图像只不过是质量有些变化。
__________________
工科'985'博士,(图像处理、分析及理解;模式识别;运动估计;数据分析等)定做程序、算法实现--qq:752105755
yhcode 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 09:06


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.