基于PCA的图像压缩实现

基于PCA的图像压缩实现

注:该内容为校内课程实验,仅供参考,请勿抄袭!
源码:PPCA-for-Image-Compession

摘要
  随着计算机互联网的发展和数据的日益增长,如何高效的处理和传输海量数据成为大数据处理的瓶颈问题,尤其对于图像类数据,通常其占有空间大,包含信息量丰富,如何对图像数据进行压缩吸引广大研究者们的注意。本文通过调研PCA图像压缩的相关工作,认为当前方法依赖于整个数据集,压缩效率低、占据内存量大的问题,本文提出一种分片PCA(P-PCA)图像压缩算法,旨在通过对图像进行分片,并在每个分片上单独进行压缩。该方法既可以单独对一张图像进行压缩,且在较低的压缩率下依然保持很好的恢复效果。在NWPU VHR-10数据集上实验表明,我们的方法相比基线模型在压缩率、MSE、PSNR和SSIM指标上均达到最好效果。

PCA降维理论
  主成成分分析用于对大规模数据进行降维的方法,其核心思路是考察样本或属性之间的相关性并进行空间变换,其秉持基本原则是最小化压缩率(或最小化MSE、最小化矩阵的秩),且保证压缩后的每个样本或属性至今线性不相关。直观理解则是选择方差较大的维度,因为方差越大包含的分布信息越明显,而方差越小,所有样本几乎聚集在一块,所以包含的分布信息很少。PCA理论则建立在上述描述的基础上,通过拉格朗日乘法推导而成,给出计算方法:
  给定矩阵 X ∈ R m × n X\in\mathbb{R}^{m\times n} XRm×n ,其中 m m m n n n 分别表示矩阵的行列数。定义一个矩阵 X ˉ ∈ R m × n \bar{X}\in\mathbb{R}^{m\times n} XˉRm×n 表示的均值:
在这里插入图片描述
则可以得到中心化矩阵 X − X ˉ X-\bar{X} XXˉ。根据协方差定义,可以得出该矩阵的协方差矩阵,记做:
在这里插入图片描述
其中:
在这里插入图片描述
因为 C X C^{X} CX 是实值方阵,因此存在 m m m 个特征向量和特征值,即:
在这里插入图片描述
因此可以得到由特征向量组成的特征矩阵,记做 V = [ v 1 , v 2 , . . . , v m ] T ∈ R m × n V=[v_1, v_2, ..., v_m]^{\mathbb{T}}\in\mathbb{R}^{m\times n} V=[v1,v2,...,vm]TRm×n

  特征矩阵的功能则是空间变换,即给定一个输入矩阵或向量,通过该特征矩阵可以变换到另一个特征空间,因此我们需要使用对输入矩阵进行变换,即:
在这里插入图片描述
  在PCA中,首先根据特征值降序对特征向量排序,并挑选前 k k k 个特征向量,此时 k k k 可以满足 ∑ i = 1 k λ t 2 / ∑ i = 1 m λ t 2 ≥ θ 0 \sum_{i=1}^{k}\lambda^{2}_{t}/\sum_{i=1}^{m}\lambda^{2}_{t}\geq\theta_0 i=1kλt2/i=1mλt2θ0。则组成的特征矩阵变为:
在这里插入图片描述
则有:
在这里插入图片描述
  因此我们可以得到压缩后的可保存数据 X ˉ \bar{X} Xˉ Y k Y_k Yk V k V_k Vk。这三个矩阵可以通过(6)式恢复原始矩阵。因为 X X X X ^ \hat{X} X^不完全一样,因此称PCA是一种有损压缩。

PCA图像压缩
  为了改进传统PCA图像压缩方法的缺陷,本文提出一种分片PCA图像压缩算法,旨在对单独对图像进行压缩,从而使得图像压缩过程中不依赖于其他图像,且适用于任意灰度或彩色图像。下面给出具体的实现细节

  为了使得算法可以同时对灰度与彩色图像进行处理,首先进行图像标准化。考虑到不同图像可能拥有不同的尺寸,因此首先对图像的尺寸进行标准化,规范到相同尺寸,形成统一格式的图像数据集,记做 I = { I 1 , I 2 , . . . , I N } ∈ R N × m × n × d I=\{I_1,I_2,...,I_N\}\in\mathbb{R}^{N\times m\times n\times d} I={I1,I2,...,IN}RN×m×n×d ,其中 N , m , n , d N,m,n,d N,m,n,d 分别表示图像的数量、宽、高和通道数, d ∈ { 1 , 3 } d\in\{1, 3\} d{1,3}。考虑对于一张图像 I t I_t It,将其按照通道数展开为 d d d m × n m\times n m×n 矩阵,并按列拼接为一个 m × ( n d ) m\times(nd) m×(nd) 的矩阵,记做 X X X

  对于一张图像,由于不同区域内的信息之间会有一定的相关性,如图1和2所示。图1是原始的彩色图像,其来自卫星拍摄的机场俯视图,我们发现对于局部的区域的像素之间往往存在一定的相关性。例如如果对图像按照行进行划分,可以划分为多个分片,而每个分片由于区域缩小,可以形成局部区域的相关性。图2展示了原始图像的一个分片(蓝色区域),在这个分片内有诸多像素之间存在相关性,例如两个红色的平行四边形对应的分别是跑到和草坪,其所处的像素通常相关性很高,因此如果对局部的分片进行压缩。相比之前的2DPCA等直接对图像整体进行压缩的方法,分片后可以使得PCA仅需要关注该分片内的信息,而不会受到其他分片信息的干扰,从而可以有效的降低压缩率。

在这里插入图片描述
  本文提出一种PCA算法,旨在实现对图像进行分段,算法流程图如下所示:
在这里插入图片描述
评价指标
(1)MSE:
在这里插入图片描述
(2)PSNR

在这里插入图片描述
(3)SSIM

在这里插入图片描述

(4)压缩率
在这里插入图片描述

实验结果
(1)不同算法在不同阈值条件下压缩效果比较
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)P-PCA算法下不同压缩率对应的某一张图像还原图像比较

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/353182.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

基于深度学习的图像压缩

近年来,深度学习在计算机视觉领域已经占据主导地位,不论是在图像识别还是超分辨重现上,深度学习已成为图片研究的重要技术,但它们的能力并不仅限于这些任务;现在深度学习技术已进入图片压缩领域。下面就说说神经网络在…

图像压缩算法

这里说​十种常用的图像压缩算法 数据压缩是保留相同或绝大部分数据前提下减小文件大小的过程。它的原理是消除不必要的数据或以更高效的格式重新组织数据。在进行数据压缩时,你可以选择使用有损方法或无损方法。有损方法会永久性地擦除掉一些数据,而无…

C#图像压缩相关方法总结

前往我的主页以获得更好的阅读体验C#图像压缩相关方法总结 - DearXuan的主页https://blog.dearxuan.com/2022/02/07/C-%E5%9B%BE%E5%83%8F%E5%8E%8B%E7%BC%A9%E7%9B%B8%E5%85%B3%E6%96%B9%E6%B3%95%E6%80%BB%E7%BB%93/ 前言 本文所描述的所有内容和算法,均未使用任…

Matlab实现图像压缩

文章和代码以及样例图片等相关资源,已经归档至【Github仓库:digital-image-processing-matlab】或者公众号【AIShareLab】回复 数字图像处理 也可获取。 文章目录 目的原理图像压缩原理离散余弦变换(DCT)图像压缩原理行程编码(RLE&#xff09…

图像压缩相关内容简介

历史 图像压缩的研究起源于20世纪40年代。1948年香农的经典论文《通信的数学原理》中首次提到信息率深圳函数的概念,1959年他又建立了率失真理论,从而奠定了信源编码的理论基础。随后伯杰等人有对其进行了深入的研究,并取得了一定的进步&…

移动端做安全测试的重要性

安全性测试的目的是发现危害手机中数据的安全和完整性的错误和缺陷。发现安全错误通常是比较困难的,软件通常功能运行正常但却不安全。 一、软件权限 APP软件权限包括:网络通信、信息发送、自动启动、 媒体录制、读取用户信息、写入用户数据等权限,因关系到用户个人信息和隐私…

cad 打开硬件加速卡_CAD如何根据已知条件设计图形

1、打开CAD,在左下角把极轴追踪打开(鼠标右键点击,选择90度打√)、把对象捕捉打开(鼠标右键点击,选择中点)。 2、然后在操作界面画线,如图我们已知直角边885和750,方法是按长8852、高750来绘制三点定圆弧。先画8852177…

C#ObjectArx Cad将图形范围缩放至指定实体

先上代码&#xff08;亲测可用&#xff09;&#xff1a; /// <summary>/// 定位缩放值指定实体/// </summary>/// <param name"oid"></param>public static void Orientate(ObjectId oid){try{Entity current_entity GetEntity(oid);curren…

CAD图层设置

一、图层介绍 我们可以把图层想象为一张没有厚度的透明纸&#xff0c;各层之间完全对齐&#xff0c;一层上的某一基准点准确地对准其他各层上的同一基准点。用户可以给每一图层指定所用的线型、颜色&#xff0c;并将具有相同线型和颜色的对象放在统一图层&#xff0c;这些图层…

cad打印本计算机未配置,CAD打印的基本设置详细教程

CAD打印的基本设置详细教程 开始画图之前我们就考虑到打印的需要&#xff0c;要用多大纸张&#xff0c;打印比例应该设置成多少&#xff0c;打印后的字高、线宽、颜色应该设置成多少&#xff0c;在绘制图形的时候&#xff0c;这些为打印而做的准备工作必须做好。要想正确地打印…

CAD打印图形、输出图形

打印图形 指定打印范围、打印比例、图纸大小、打印样式、页边距等参数&#xff0c;打印图纸。 1.单击常用工具栏的“打印图形”按钮。 2.在命令行中输入Plot&#xff0c;按回车键。 打印界面如下 &#xff1a; 界面信息 &#xff08;1&#xff09;选择打印机&#xff1a;默…

CAD梦想画图中如何设置图层

图层介绍 我们可以把CAD对象想象成一张没有厚度的透明纸&#xff0c;各层之间完全对齐&#xff0c;一层上的某一基准点准确的对准其它各层上的同一基准点。用户可以给每一图层指定所用的线型、颜色与线宽&#xff0c;并将其相同线型和颜色的对象放在同一图层&#xff0c;这些图…

AUTOCAD——图形单位与图形边界

图形单位 控制长度与角度的显示精度与格式。 1.执行方式 命令行&#xff1a;DDUNITS 菜单栏&#xff1a;格式→单位 “图形单位操作命令位置”界面 执行以上命令后&#xff0c;系统会弹出如下图所示的“图形单位”对话框。 2.选项说明 &#xff08;1&#xff09;长度与角…

OSSIM进行主机漏洞扫描(03)

OSSIM进行主机漏洞扫描方式 按照如图选择&#xff0c;ENVIRONMENT–SCAN JOBS–NEW SCAN JOB进入新增页面 其中各选项含义如下 Job Name:扫描任务名称。 Select Sensor:扫描的嗅探器。 Profile:扫描的类型&#xff0c;包括Deep- Non destructive Full and Slow scan(深入)、D…

Spring Boot 系统初始化器详解

Spring Boot 3.x系列文章 Spring Boot 2.7.8 中文参考指南(一)Spring Boot 2.7.8 中文参考指南(二)-WebSpring Boot 源码阅读初始化环境搭建Spring Boot 框架整体启动流程详解Spring Boot 系统初始化器详解 自定义系统初始化器 Spring Boot 有多种加载自定义初始化器的方法&am…

网络故障管理

网络故障管理是以最快的方式查找、隔离和排除网络故障的过程。故障管理是网络管理的重要组成部分&#xff0c;它通过快速解决故障来最大限度地减少停机时间并防止设备故障&#xff0c;从而确保最佳的网络可用性并防止业务损失。 网络故障监控是故障管理的第一步&#xff0c;因…

NLP+VS︱深度学习数据集标注工具、图像语料数据库、实验室搜索ing....

from: https://blog.csdn.net/sinat_26917383/article/details/54908389 一、NLP标注工具 来源&#xff1a;《构想&#xff1a;中文文本标注工具&#xff08;附开源文本标注工具列表&#xff09;》 Chinese-Annotator 来源&#xff1a;https://github.com/crownpku/Chinese-…

wince集锦

为什么80%的码农都做不了架构师&#xff1f;>>> WinCE驱动开发问题精华集锦在mediaplayer全屏播放的时候&#xff0c;我可以用键盘上的某一个键调节声音大小&#xff0c;现在我想在屏幕上显示调节的结果就跟我们看电视一样能出来一些标记。当声音变大在屏幕上就增多…

k8s技术预研8--深入掌握Kubernetes Service

本文内容已经基于k8s v1.8.8进行了验证测试。 k8s的Service定义了一个服务的访问入口地址&#xff0c;前端的应用通过这个入口地址访问其背后的一组由Pod副本组成的集群实例&#xff0c;来自外部的访问请求被负载均衡到后端的各个容器应用上。Service与其后端Pod副本集群之间则…

spring boot 与 iview 前后端分离架构之开发环境基于docker的部署的实现(三十六)

spring boot 与 iview 前后端分离架构之开发环境基于docker的后端的部署的实现&#xff08;三十六&#xff09; 公众号基于docker的后端的部署安装mysql数据库创建数据库 安装redis安装docker创建基础镜像编写后台管理系统的DockerFile文件pom.xml的配置新增application-prod.y…