《区域编码阀值编码.doc》由会员分享,可在线阅读,更多相关《区域编码阀值编码.doc(15页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date区域编码阀值编码第八章作业:实验作业7第八章作业:实验作业7分别用区域编码和阈值编码方法实现图像压缩,用88DCT变换,保留50的系数(区域编码保留前50%个系数,阈值编码保留50%的大系数),并对解码图像进行比较。要求:DCT要自己实现,不能用matlab中的DCT函数(1)区域编码I=imread(E:大三下数字图像处理MATLAB图像处理1.jpg);I=dou
2、ble(rgb2gray(I);figureimshow(uint8(I);title(原图);g=zeros(8,8);m,n=size(g);a=0;for i=1:m for j=1:m if i=1 a=sqrt(1/m); else a=sqrt(2/m); end q=(2*(j-1)+1)*(i-1)*pi)/(2*m); g(i,j)=a*cos(q); endendI1=blkproc(I,8 8,P1*x*P2,g,g);figureimshow(uint8(I1);title(DCT变换);a=;a0=ones(1,8);a1=zeros(1,8);for i=1:8 i
3、f i=4 a(i,:)=a0; else a(i,:)=a1; endend;I2=blkproc(I1,8 8,P1.*x,a);figureimshow(uint8(I1);title(对DCT区域编码);I3=blkproc(I2,8 8,P1*x*P2,g,g);figureimshow(uint8(I3);title(对DCT区域编码后反DCT变换的图);(2)阀值编码I=imread(E:大三下数字图像处理MATLAB图像处理1.jpg);I=double(rgb2gray(I);figureimshow(uint8(I);title(原图);g=zeros(8,8);m,n=s
4、ize(g);a=0;for i=1:m for j=1:m if i=1 a=sqrt(1/m); else a=sqrt(2/m); end q=(2*(j-1)+1)*(i-1)*pi)/(2*m); g(i,j)=a*cos(q); endendI1=blkproc(I,8 8,P1*x*P2,g,g);figureimshow(uint8(I1);title(DCT变换);a=ones(8,8);b=reshape(g,1,64);c=median(b);for i=1:8 for j=1:8 if(abs(g(i,j)c) a(i,j)=0; end; end;end;I2=blkproc(I1,8 8,P1.*x,a);figureimshow(uint8(I2);title(对DCT阀值编码);I3=blkproc(I2,8 8,P1*x*P2,g,g);figureimshow(uint8(I3);title(对DCT阀值编码后反DCT变换的图);心得体会:无论区域编码还是阀值编码,对两种编码进行解码后,效果都比较好,视觉上看和原图没什么差异。刚开始没弄懂区域编码和阀值编码是怎么一回事,看书?书上讲得太粗糙,最后自己上网查阅。在弄懂了区域编码和阀值编码后,加上之前掌握的关于DCT变换的知识,再来做就先得不是那么棘手了。-