![]() |
求助
这个程序为什么压缩后的图像出不来?其中的压缩比和图像的像素怎么算的,每次改了压缩比应该出来新图形的!请高手帮一下,必要的话,把你载入的图发给我,我在做一下,研究一下!!
%装入原始图像 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); |
回复: 求助
你这个程序注释有问题,首先你要了解一个概念,什么是压缩比?压缩比是指原始数据量与压缩后数据量的比值,程序里的rate只不过是个阈值,不同的rate下DCT系数保留部分不同,如果要压缩的话,还需要对DCT系数进行编码。你这个程序在不同rate下给出的图像只不过是质量有些变化。
|
所有时间均为北京时间。现在的时间是 11:21。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.