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

【图像处理基石】PCA图像压缩与还原:基于OpenCV的Lena图实验

在这里插入图片描述

算法原理介绍

PCA(主成分分析)是一种常用的降维技术,其核心思想是通过线性变换将高维数据映射到低维空间,同时保留数据中最主要的信息。在图像压缩中,PCA的工作原理如下:

  1. 数据表示:将图像视为像素值矩阵,对于灰度图可表示为二维矩阵,彩色图则为三维张量
  2. 中心化:对图像数据进行中心化处理(减去均值)
  3. 协方差矩阵:计算数据的协方差矩阵,反映像素间的相关性
  4. 特征值分解:对协方差矩阵进行特征值分解,得到特征值和特征向量
  5. 主成分选择:选择特征值最大的前k个特征向量作为主成分
  6. 降维映射:将原始数据投影到选定的主成分上,得到低维表示(压缩)
  7. 重构还原:使用低维表示和主成分重构原始数据(还原)

压缩率取决于选择的主成分数量k,k越小压缩率越高,但图像质量可能下降。

代码实现与解释

下面是使用PCA对Lena图像进行压缩与还原的完整代码:

import cv2
import numpy as np
import matplotlib.pyplot as pltdef pca_compress(image, k):"""使用PCA压缩图像:param image: 输入灰度图像 (H, W):param k: 保留的主成分数量:return: 压缩后的图像、投影矩阵、均值"""# 获取图像尺寸h, w = image.shape# 将图像转换为浮点型并展平image_flat = image.astype(np.float32).reshape(h, w)# 计算均值并中心化mean = np.mean(image_flat, axis=0)image_centered = image_flat - mean# 计算协方差矩阵cov_matrix = np.cov(image_centered, rowvar=False)# 计算特征值和特征向量eigenvalues, eigenvectors = np.linalg.eigh(cov_matrix)# 按特征值降序排序sorted_indices = np.argsort(eigenvalues)[::-1]sorted_eigenvectors = eigenvectors[:, sorted_indices]
http://www.dtcms.com/a/325303.html

相关文章:

  • 02Vue3
  • 想冲华为AI认证,怎么选方向?
  • 大模型落地:AI 技术重构工作与行业的底层逻辑
  • Selenium元素定位不到原因以及怎么办?
  • 编译Android版本可用的高版本iproute2
  • AI 健康管家:重构健康管理的未来图景
  • 大模型落地实践:从技术重构到行业变革的双重突破
  • AI生成代码时代的商业模式重构:从“软件即产品”到“价值即服务”
  • 亚马逊广告底层逻辑重构:从流量博弈到价值创造的战略升维
  • uView Pro 正式开源!70+ Vue3 组件重构完成,uni-app 组件库,你会选择它吗?
  • 数据库基本操作
  • 自动化备份全网服务器数据平台项目
  • 掘金数据富矿,永洪科技为山东黄金定制“数智掘金”实战营
  • k8s 部署mysql主从集群
  • kafka 中的Broker 是什么?它在集群中起什么作用?
  • 类银河恶魔城 P20-1 Slime enemy
  • Flutter学习笔记(六)---状态管理、事件、路由、动画
  • 达梦自定义存储过程实现获取表完整的ddl语句
  • Python FastAPI + React + Nginx 阿里云WINDOWS ECS部署实战:从标准流程到踩坑解决全记录
  • 爬虫与数据分析结和
  • NEON性能优化总结
  • Spring MVC 注解参数接收详解:@RequestBody、@PathVariable 等区别与使用场景
  • EXISTS 替代 IN 的性能优化技巧
  • 大数据量下分页查询性能优化实践(SpringBoot+MyBatis-Plus)
  • 基于Spring Data Elasticsearch的分布式全文检索与集群性能优化实践指南
  • Rust:anyhow 高效错误处理库核心用法详解
  • Rust 实战五 | 配置 Tauri 应用图标及解决 exe 被识别为威胁的问题
  • 新人该如何将不同的HTML、CSS、Javascript等文件转化为Vue3文件架构
  • 零基础学习jQuery第三天
  • 探秘华为:松山湖的科技与浪漫之旅