当前位置: 首页 > news >正文

Matlab基于主成分分析的图像压缩和重建 主成分分析是统计学中的主成分分析方法

Matlab基于主成分分析的图像压缩和重建 主成分分析是统计学中的主成分分析方法。 主成分分析方法从矩阵角度讲也称K-L变换。 使用PCA方法对图像进行压缩和重建的大致过程:PCA图像压缩和PCA图像重建 代码可正常运行

下午三点半的实验室总有点犯困,突然想起去年用Matlab折腾图像压缩的经历。当时被PCA(主成分分析)这个数学工具惊艳到了——这玩意儿居然能用线性代数玩转图像压缩?今天咱就抛开教科书里复杂的公式推导,直接上手代码看看怎么把一张照片"榨汁"再还原。

先找张测试图片,我习惯用Matlab自带的cameraman:

img = imread('cameraman.tif'); img = im2double(img); imshow(img), title('原图');

这个戴礼帽的老哥分辨率256x256,刚好够咱们折腾。接下来才是重头戏——把二维图像转成数据矩阵。注意这里有个骚操作:把图像切分成小块再展平。不过对于全局PCA,直接按列拉平更简单:

[m, n] = size(img); X = img - mean(img(:)); % 数据中心化 covariance = X' * X / (m-1); % 计算协方差矩阵

这里为什么要减去均值?就像拍照时找基准线,去中心化后才能准确捕捉数据波动方向。计算协方差矩阵时用了(m-1)做无偏估计,学过统计的应该都懂这个梗。

Matlab基于主成分分析的图像压缩和重建 主成分分析是统计学中的主成分分析方法。 主成分分析方法从矩阵角度讲也称K-L变换。 使用PCA方法对图像进行压缩和重建的大致过程:PCA图像压缩和PCA图像重建 代码可正常运行

特征分解才是PCA的灵魂所在:

[V, D] = eig(covariance); [~, idx] = sort(diag(D), 'descend'); V = V(:, idx); % 特征向量按特征值降序排列

注意eig函数返回的特征值默认是升序排列的,咱们需要手动倒排。这里的V矩阵每列都代表一个主成分方向,就像给数据找到了新的坐标系。

压缩的关键在于选择前k个主成分。假设我们保留95%的能量:

total_energy = sum(diag(D)); cum_energy = cumsum(diag(D(end:-1:1)))/total_energy; k = find(cum_energy >= 0.95, 1); V_reduce = V(:,1:k); % 取前k个特征向量

不过实际压缩时更直接——比如指定保留50个主成分:

k = 50; % 试试这个参数,效果立竿见影 V_reduce = V(:,1:k);

投影到低维空间这一步最带感:

Z = X * V_reduce; % 压缩后的数据

原本256维的数据被压成了50维,压缩率超过80%!但怎么变回图片呢?重建公式其实是对投影的逆操作:

X_approx = Z * V_reduce'; img_approx = X_approx + mean(img(:)); % 恢复中心化

把重建后的数据和原图放一起对比:

subplot(1,2,1), imshow(img), title('原图'); subplot(1,2,2), imshow(img_approx), title(['k=' num2str(k)]);

当k=50时,礼帽边缘会出现轻微马赛克,但整体轮廓依然清晰。把k调到100,噪点基本消失,压缩率仍有60%。这种在信息损失和压缩效率之间的权衡,正是PCA的魅力所在。

有同学问为什么不直接用JPEG?其实PCA压缩更适合特定场景——比如需要保留数据主要特征时。在人脸识别中,特征脸方法就是PCA的经典应用。下次遇到高维数据时,不妨先试试PCA这柄瑞士军刀,说不定能切开问题的另一面。

http://www.jsqmd.com/news/449990/

相关文章:

  • 2026年出口企业单证备案软件管理厂商靠谱推荐,服务区域覆盖全国 - 工业推荐榜
  • 基于SSM+VUE的校园跑腿小程序[java]-计算机毕业设计源码+LW文档
  • Matlab代码:蚁群算法在旅行商问题(TSP)优化中的应用——路径规划、物流配送与路径优化解决方案
  • 深度测评一键生成论文工具 千笔·专业论文写作工具 VS 知文AI
  • 2026年市场观察:国内水墨印刷机优质生产商探析,市面上水墨印刷机公司推荐榜技术实力与市场口碑领航者 - 品牌推荐师
  • 压力容器法兰采购必看:注重售前售后服务的生产商一览,法兰/非标法兰/不锈钢法兰/双相钢法兰,压力容器法兰厂商推荐 - 品牌推荐师
  • 多部门协作怎么做私有化项目管理?8款国内系统对比与选型要点
  • Maven Gradle SBT Mill Ivy Grape Leiningen Buildr构建工具
  • .NET PDB文件到底是什么?
  • Jimmy Zhang
  • 文件漏洞解析
  • 2026京东e卡回收技巧:快速、安全的变现方式大揭秘 - 团团收购物卡回收
  • 聊聊Anime-XCodec2-44.1kHz音频压缩新突破[特殊字符]
  • 异步编程:线程概述及使用
  • 黄岩异宠医生推荐,2026年2月靠谱之选!狗狗绝育/宠物腹腔镜绝育/24小时宠物医院/猫咪绝育,异宠医生找哪家 - 品牌推荐师
  • 怎么看待移动互联网时代
  • python+uniapp校园活动预约匹配系统 学习打卡交流小程序
  • 从开发者角度看Android 和 IOS的前景
  • 分享2026年高性价比抛丸机厂家,价格多少钱 - 工业品网
  • 浅谈SQL Server中的三种物理连接操作
  • 亲测好用!自考必备降AIGC工具 —— 千笔·降AI率助手
  • 探讨上海地区静音房设计定制公司选购要点及推荐排名 - 工业品牌热点
  • git寻根——^和~的区别
  • 电动汽车充电站优化配置方法研究与实现:以matlab为工具,集成cplex和gurobi求解器...
  • 2026年常州口碑好的文旅园区排名,了解纸飞机艺术岛研发能力 - mypinpai
  • 能源企业智能巡检如何用HTML5保障无人机视频文件夹分片上传的校验?
  • 我设计的网站的分布式架构
  • HTTP协议之状态码详解
  • 瀚海拾贝(一)HTTP协议/IIS 原理及ASP.NET运行机制浅析【图解】
  • 基于VS Fakes框架的TDD实战——接口模拟