Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2010-07-08
年龄: 45
帖子: 2
声望力: 0 ![]() |
![]()
这个程序为什么压缩后的图像出不来?其中的压缩比和图像的像素怎么算的,每次改了压缩比应该出来新图形的!请高手帮一下,必要的话,把你载入的图发给我,我在做一下,研究一下!!
%装入原始图像 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); |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2008-05-13
年龄: 44
帖子: 232
声望力: 21 ![]() |
![]()
你这个程序注释有问题,首先你要了解一个概念,什么是压缩比?压缩比是指原始数据量与压缩后数据量的比值,程序里的rate只不过是个阈值,不同的rate下DCT系数保留部分不同,如果要压缩的话,还需要对DCT系数进行编码。你这个程序在不同rate下给出的图像只不过是质量有些变化。
__________________
工科'985'博士,(图像处理、分析及理解;模式识别;运动估计;数据分析等)定做程序、算法实现--qq:752105755 |
![]() |
![]() |