如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
分别用区域编码和阈值编码方法实现图像压缩,用8×8DCT变换,保留50%的大系数,并对解码图像进行比较。要求:DCT要自己实现,不能用matlab中的DCT函数区域编码程序代码:clear;I=imread('d:\3.jpg');I=double(rgb2gray(I));figure(1);imshow(uint8(I));title('原图像');Y=zeros(8,8);fori=1:8forj=1:8ifi==1Y(i,j)=sqrt(1/8);elseY(i,j)=sqrt(2/8)*cos((pi*(2*(j-1)+1)*(i-1))/16);endendends=blkproc(I,[88],'P1*x*P2',Y,Y');figure(2);imshow(uint8(s));forj=1:8fori=1:8ifj<=8-i+1a(i,j)=1;elsea(i,j)=0;end;end;end;s=blkproc(s,[88],'P1.*x',a);figure(3);imshow(uint8(s));s=blkproc(s,[88],'P1*x*P2',Y',Y);figure(4);imshow(uint8(s));title('经过压缩处理的图像')运行结果:阈值编码程序代码clear;I=imread('d:\3.jpg');I=rgb2gray(I);imshow(uint8(I));title('原图像');I=double(I);fori=1:8forj=1:8if(i==1)Y(i,j)=sqrt(1/8);elseY(i,j)=sqrt(2/8)*cos((i-1)*(2*j-1)*pi/(2*8));end;end;end;s=blkproc(I,[88],'P1*x*P2',Y,Y');a=ones(8,8);b=reshape(Y,1,64);midvalue=median(b);fori=1:8forj=1:8if(abs(Y(i,j))<midvalue)a(i,j)=0;end;end;end;s=blkproc(s,[88],'P1.*x',a);s=blkproc(s,[88],'P1*x*P2',Y',Y);figure(2);imshow(uint8(s));title('被与之编码方式压缩的图像');运行结果:心得体会:由于第八章内容上课听的不是很明白,所以作业题拿到之后不知道怎么做,重新把第八章看了一遍,可是很多地方看了好久好多次还是不明白其原理,就像这次所涉及的DCT(虽然会做作业,但是实在是不理解),区域编码,门限编码,都是不明白什么意思!后来网上搜罗资料,看了颇久,请教了同学,才慢慢知道是什么一回事,做这题目的时候,遇到过不知道怎么分块的问题,后来也是同学告诉有个blkproc的函数可以用,才使到程序精简化。还有门限编码的时候很多同学都是使用冒泡法,但是我记得前几次实验有用到一个median的函数可以取中值,就使用了,显示出来的图片没有什么不妥,但是不知道这么取法会不会有什么弊端。