资源描述:
《matlab_图像编码+答案》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验四图像编码一、实验目的了解图像压缩编码的分类与评价指标;掌握常用的熵编码方法以及matlab编程;掌握基于FFT的图像压缩技术以及matlab编程;掌握基于DCT的图像压缩技术以及matlab编程;熟悉JPEG图像压缩编码过程;掌握imwrite函数实现可变quality的JPEG压缩;二、实验内容(1)对给定的图像tu.bmp,进行哈夫曼编码,并解码输出,观察workspace下各个矩阵数据。h=imread('tu.bmp');[m,n]=size(h);subplot(1,2,1);imshow(h);title('yuantu');h=h(:);s
2、=0:255;fori=0:255p(i+1)=length(find(h==i))/(m*n);enddict=huffmandict(s,p);enco=huffmanenco(h,dict);deco=huffmandeco(enco,dict);deco=col2im(deco,[m,n],[m,n],'distinct');subplot(1,2,2);imshow(uint8(deco));title('huffman');(2)阅读jpeg压缩编码的有关资料,使用imwrite函数对lena图像进行jpeg压缩,对比显示原图与不同质量参数下解码后
3、的图像,并显示均方根误差、压缩比、图像大小x=imread('lena.bmp');imwrite(x,'c:/lena1.jpg','quality',20);imwrite(x,'c:/lena2.jpg','quality',60);imwrite(x,'c:/lena3.jpg','quality',80);x1=imread('c:/lena1.jpg');k1=imfinfo('c:/lena1.jpg');s1=k1.FileSize/1024;e1=x(:)-x1(:);[m1,n1]=size(e1);erms1=sqrt(sum(e1(:)
4、).^2/(m1*n1));i_size1=k1.Width*k1.Height*k1.BitDepth/8;i_compress1=k1.FileSize;ratio1=i_size1/i_compress1;subplot(221);imshow(x1);title('质量因子:20均方根误差:722.793压缩比:14.448图像大小:4536');x2=imread('c:/lena2.jpg');k2=imfinfo('c:/lena2.jpg');s2=k2.FileSize/1024;e2=x(:)-x2(:);[m2,n2]=size(e2);
5、erms2=sqrt(sum(e2(:)).^2/(m2*n2));i_size2=k2.Width*k2.Height*k2.BitDepth/8;i_compress2=k2.FileSize;ratio2=i_size2/i_compress2;subplot(222);imshow(x2);title('质量因子:60均方根误差:454.8008压缩比:7.416图像大小:8837');x3=imread('c:/lena3.jpg');k3=imfinfo('c:/lena3.jpg');s3=k3.FileSize/1024;e3=x(:)-x3(
6、:);[m3,n3]=size(e3);erms3=sqrt(sum(e3(:)).^2/(m3*n3));i_size3=k3.Width*k3.Height*k3.BitDepth/8;i_compress3=k3.FileSize;ratio3=i_size3/i_compress3;subplot(223);imshow(x2);title('质量因子:80均方根误差:343.2344压缩比:5.0451图像大小:12990');(3)读取lena图像,编写一个程序,实现下列算法:首先将图像分成许多8X8的子图像,对每个子图像进行DCT,对每个子图像的
7、64个系数,按照每个系数的大小来排序后,舍去小的变换系数,只保留16个系数,实现图像4:1的压缩%读取lena图像,编写一个程序,实现下列算法:首先将图像分成许多8X8的子图像,对每个子图像进行DCT,%对每个子图像的64个系数,按照每个系数的大小来排序后,舍去小的变换系数,只保留16个系数,实现图像4:1的压缩cr=0.25;i=imread('lena.bmp');i1=double(i)/255;subplot(121);imshow(i1);t=dctmtx(8);dctcoe=blkproc(i1,[88],'P1*x*P2',t,t');coeva
8、r=im2col(dctcoe,[88