数字图像处理_第1页
数字图像处理_第2页
数字图像处理_第3页
数字图像处理_第4页
数字图像处理_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1.对自己的头像进行操作,分别比较保留10,20,40个DCT变换系数重构的图像与原始图像进行操作。clear all; I=rgb2gray(imread(.jpg);J=im2double(I);T=dctmtx(8);K=blkproc(J, 8 8, P1*x*P2, T, T); mask1= 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;K1=blkproc(K, 8 8,

2、 P1.*x, mask1);L1=blkproc(K1, 8 8, P1*x*P2, T, T);figure;subplot(221);imshow(J);subplot(222);imshow(L1); mask2= 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ;K2=blkproc(K, 8 8, P1.*x, mask2);L2=blkproc(K2, 8 8, P1*x*P

3、2, T, T);subplot(223);imshow(L2); mask2= 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 ;K3=blkproc(K, 8 8, P1.*x, mask2);L3=blkproc(K3, 8 8, P1*x*P2, T, T);subplot(224);imshow(L3);2.1I=rgb2gray(imread(.jpg);I=im2double

4、(I)*255;height,width=size(I); %求图像的大小HWmatrix=zeros(height,width);Mat=zeros(height,width); %建立大小与原图像大小相同的矩阵HWmatrix和Mat,矩阵元素为0。HWmatrix(1,1)=I(1,1); %图像第一个像素值I(1,1)传给HWmatrix(1,1)for i=2:height %以下将图像像素值传递给矩阵Mat Mat(i,1)=I(i-1,1);endfor j=2:width Mat(1,j)=I(1,j-1);endfor i=2:height for j=2:width Mat

5、(i,j)=I(i,j-1)/2+I(i-1,j)/2; endendMat=floor(Mat);HWmatrix=I-Mat;SymPro=zeros(2,1); SymNum=1; SymPro(1,1)=HWmatrix(1,1); SymExist=0;for i=1:height for j=1:width SymExist=0; for k=1:SymNum if SymPro(1,k)=HWmatrix(i,j) SymPro(2,k)=SymPro(2,k)+1; SymExist=1; break; end end if SymExist=0 SymNum=SymNum+1

6、; SymPro(1,SymNum)=HWmatrix(i,j); SymPro(2,SymNum)=1; end endendfor i=1:SymNum SymPro(3,i)=SymPro(2,i)/(height*width);endsymbols=SymPro(1,:);p=SymPro(3,:);dict,avglen = huffmandict(symbols,p); %产生霍夫曼编码词典,返回编码词典dict和平均码长avglenactualsig=reshape(HWmatrix,1,);compress=huffmanenco(actualsig,dict); %利用dic

7、t对actuals来编码,其结果存放在compress中UnitNum=ceil(size(compress,2)/8); Compressed=zeros(1,UnitNum,uint8);for i=1:UnitNum for j=1:8 if (i-1)*8+j)=size(compress,2) Compressed(i)=bitset(Compressed(i),j,compress(i-1)*8+j); end endendNewHeight=ceil(UnitNum/512);Compressed(width*NewHeight)=0;ReshapeCompressed=resh

8、ape(Compressed,NewHeight,width);imwrite(ReshapeCompressed,Compressed Image.bmp,bmp);Restore=zeros(1,size(compress,2);for i=1:UnitNum for j=1:8 if (i-1)*8+j)=size(compress,2) Restore(i-1)*8+j)=bitget(Compressed(i),j); end endenddecompress=huffmandeco(Restore,dict); RestoredImage=reshape(decompress,51

9、2,512);RestoredImageGrayScale=uint8(RestoredImage+Mat);imwrite(RestoredImageGrayScale,Restored Image.bmp,bmp);figure;subplot(1,3,1);imshow(I,0,255); %显示原图subplot(1,3,2);imshow(ReshapeCompressed); %显示压缩后的图像subplot(1,3,3);imshow(Restored Image.bmp); %解压后的图像2.2J=rgb2gray(imread(.jpg); X=im2double(J);Y=

10、LPCencode(X);XX=LPCdecode(Y);figure(1),subplot(121);imshow(J);subplot(122),imshow(mat2gray(255-Y); %为方便显示,对预测误差图取反后再作显示e=double(X)-double(XX);m,n=size(e);erm=sqrt(sum(e(:).2)/(m*n); figure(2);h,x=hist(X(:);%得到原图直方图subplot(121);bar(x,h,k);%显示原图像的直方图h,x=hist(Y(:);%得到预测误差的直方图subplot(122);bar(x,h,k);%显示

11、预测误差的直方图%LPCdecode是解码程序,与编码程序用的是同一个预测器function x=LPCdecode(y,f)error(nargchk(1,2,nargin);if nargin2 f=1;endf=f(end:-1:1);m,n=size(y);order=length(f);f=repmat(f,m,1);x=zeros(m,n+order);for j=1:n jj=j+order; x(:,jj)=y(:,j)+round(sum(f(:,order:-1:1).*x(:,(jj-1):-1:(jj-order),2);endx=x(:,order+1:end);%LPCencode 函数用一维预测编码压缩图像x,f为预测系数,如果f去默认值,则默认f=1,就是前值预测function y=LPCencode(x,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论