分别用区域编码和阈值编码方法实现图像压缩-用8×8DCT变换-保留50%的系数

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

作业8实验:1、分别用区域编码和阈值编码方法实现图像压缩,用8×8DCT变换,保留50%的系数(区域编码保留前50%个系数,阈值编码保留50%的大系数),并对解码图像进行比较。(要求:DCT要自己实现,不能用matlab中的DCT函数)(1)、区域编码程序代码如下:clear;A=imread('picture1.jpg');I=double(rgb2gray(A));figure(1);imshow(uint8(I));title('原图');g=zeros(8,8);[m,n]=size(g);a=0;fori=1:mforj=1:mifi==1a=sqrt(1/m);elsea=sqrt(2/m);endq=((2*(j-1)+1)*(i-1)*pi)/(2*m);g(i,j)=a*cos(q);endendI1=blkproc(I,[88],'P1*x*P2',g,g');figure(2);imshow(uint8(I1));title('DCT变换');a=[];a0=ones(1,8);a1=zeros(1,8);fori=1:8ifi=4a(i,:)=a0;elsea(i,:)=a1;endend;I2=blkproc(I1,[88],'P1.*x',a);figure(3);imshow(uint8(I1));title('对DCT区域编码');I3=blkproc(I2,[88],'P1*x*P2',g',g);figure(4);imshow(uint8(I3));title('对DCT区域编码后反DCT变换');得到的图像如下:(2)、阈值编码程序代码如下:clear;A=imread('picture1.jpg');I=double(rgb2gray(A));figure(1);imshow(uint8(I));title('原图');g=zeros(8,8);[m,n]=size(g);a=0;fori=1:mforj=1:mifi==1a=sqrt(1/m);elsea=sqrt(2/m);endq=((2*(j-1)+1)*(i-1)*pi)/(2*m);g(i,j)=a*cos(q);endendI1=blkproc(I,[88],'P1*x*P2',g,g');figure(2);imshow(uint8(I1));title('DCT变换');a=ones(8,8);b=reshape(g,1,64);c=median(b);fori=1:8forj=1:8if(abs(g(i,j))c)a(i,j)=0;end;end;end;I2=blkproc(I1,[88],'P1.*x',a);figure(3);imshow(uint8(I2));title('对DCT阈值编码');I3=blkproc(I2,[88],'P1*x*P2',g',g);figure(4);imshow(uint8(I3));title('对DCT阈值编码后反DCT变换');得到的图像如下:

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功