基于PCA的图像压缩Matlab代码

  • i2_313577
    了解作者
  • matlab
    开发工具
  • 196.5KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-02-22 11:08
    上传日期
基于PCA的图像压缩Matlab代码,包含经典的Lena图像。被压缩图像必须是正方形的BMP格式图像。
基于PCA的图像压缩Matlab代码
  • PCA_IMGCPS
  • lena.bmp
    257.1KB
  • Img_compress.m
    1.9KB
内容介绍
clear all; K=8;%图像被分成K*K的小块 value_num=5;%主元数目 image= imread('lena.bmp'); % 读取图像 %image=image(:,:,1); [x,y] = size(image); if( x ~= y ) % 图像不是方形的 error('图像不是方形的'); end if( mod(x,K) ~= 0 ) % 图像不能整分 error('图像不能整分'); end % 将K*K的小块图像存到IMG中 M = x/K; IMG = cell(M,M); for i = 1:M for j = 1:M IMG{i,j} = double(image(K*(i-1)+1:K*i,K*(j-1)+1:K*j)); end end % 求平均值 ave_IMG = zeros(K,K); for i = 1:M for j = 1:M ave_IMG = IMG{i,j} + ave_IMG; end end ave_IMG = ave_IMG/(M*M); %去均值 for i = 1:M for j = 1:M IMG{i,j} = IMG{i,j} - ave_IMG; end end % 求协方差矩阵 R = zeros(K*K,K*K); IMG_Block_Vec=zeros(K*K,M*M); for i = 1:M*M temp=[]; for j = 1:K temp=[temp',IMG{floor((i-1)/M)+1,mod(i-1,M)+1}(:,j)']'; end IMG_Block_Vec(:,i)=temp; R=R+temp*temp'; end R=R/(M*M); [vector,value] = eig(R); % 取value_num个主特征向量用于重构图像 if( value_num == K*K ) V = vector(:,1:K*K); % 全取 else V = vector(:,K*K-value_num+1:K*K); %取value_num个 end %投影 Image_Code=zeros(M*M,value_num); for i = 1:M*M for j = 1:value_num Image_Code(i,j)= IMG_Block_Vec(:,i)'*V(:,j); end end % ???? NewIMG_Vec = zeros(K*K,M*M); for i = 1:M*M for j = 1:value_num NewIMG_Vec(:,i) = NewIMG_Vec(:,i) + Image_Code(i,j)*V(:,j); end end for i=1:M for j=1:M IMG{i,j} = reshape( NewIMG_Vec(:,(i-1)*M+j),K,K ) + ave_IMG; end end for i=1:M for j=1:M compressing_image(K*(i-1)+1:K*i,K*(j-1)+1:K*j) = uint8(IMG{i,j}); end end % ???????? imshow(compressing_image); % imwrite(compressing_image,'image.bmp')
评论
    相关推荐
    • Matlab合集
      冈萨雷斯数字图像处理MATLAB版.中文版+数字图像处理第二版中文版(冈萨雷斯)+MATLAB-R2014a完全自学一本通+MATLAB R2016a完全自学一本通 素材文件+[模式识别与智能计算:MATLAB技术实现(第2版)].杨淑莹.扫描版
    • Matlab教程
      MatlaB经典ppt,主要讲解了MatlaB的入门知识,图形编程以及仿真。
    • matlab 课件
      matlab 功能很强大,本课件详细的介绍了matlab在科学计算中的应用。
    • matlab编译器
      matlab编译为exe文件所需要的文件; 使用时解压,将解压后文件拖入至matlab命令行即可
    • matlab
      matlab的基础知识进行介绍
    • MatLab
      “#MatLab
    • MATLAB编译器
      基于MATLAB 2018b版本介绍MATLAB编译器。介绍如何利用编译器将MATLAB代码编译为独立应用程序或组件,并在没有安装MATLAB的计算机上进行部署。
    • matlab入门
      matlab的入门教程,很值得仔细看看,对提高matlab能力有帮助
    • matlab
      matlab经典课堂讲义
    • matlab
      matlab