MIT线性代数笔记-第32讲-基变换,图像压缩

目录

  • 32.基变换,图像压缩
      • 图像压缩
      • 小波
      • 基变换
    • 打赏

32.基变换,图像压缩

图像压缩

  1. 图像储存

    考虑一个灰度图像,假设它的分辨率为 512 ∗ 512 512 * 512 512512像素,其中每一个像素记录了所处位置的灰度值( 0 ∼ 255 0 \sim 255 0255 0 0 0为黑, 255 255 255为白,占用 1 1 1个字节),这样整个图像可以被视为一个 512 512 512阶方阵,或者是一个 512 ∗ 512 512 * 512 512512维的向量。如果图像是彩色的,那么采用 R G B RGB RGB储存,大小会变为灰度图像的 3 3 3

  2. 图像压缩

    图像常常会占据大量的储存空间,若不进行压缩则会影响系统加载和网络传输效率,一种标准的有损图像压缩方式是 J P E G JPEG JPEG,它的文件拓展名为 . j p g .jpg .jpg . j p e g .jpeg .jpeg

    压缩前的图像是以标准正交基为坐标系的向量,而压缩图像相当于改变基,并且压缩图像的有许多种思路(以下以灰度图片举例):

    • 对相邻多个相同或相近的灰度值进行优化,把 [ 1 1 ⋮ 1 ] \begin{bmatrix} 1 \\ 1 \\ \vdots \\ 1 \end{bmatrix} 111 作为基的一个元素(电气工程师把这个向量称作 D C DC DC向量)
    • 对交替出现的灰度值进行优化(就像一个国际象棋棋盘),把 [ 1 − 1 1 ⋮ 1 ] \begin{bmatrix} 1 \\ -1 \\ 1 \\ \vdots \\ 1 \end{bmatrix} 1111 作为基的一个元素
    • 对各占一半的灰度值进行优化,把 [ 1 1 ⋮ − 1 − 1 ] \begin{bmatrix} 1 \\ 1 \\ \vdots \\ -1 \\ -1 \end{bmatrix} 1111 作为基的一个元素

    以上三种思路都用一个值表示某一段的颜色从而达到了压缩的目的

    不同的行业选择不同的基对图像进行压缩,比如电影行业基于信号扫描选择基

  3. J P E G JPEG JPEG压缩

    J P E G JPEG JPEG选择了傅里叶基,傅里叶基即由傅里叶矩阵的列向量(准确来说应该是乘上了 n n n之后的)组成的一组基,即: [ 1 1 1 ⋮ 1 ] , [ 1 w w 2 ⋮ w n − 1 ] , ⋯ , [ 1 w n − 1 w 2 ( n − 1 ) ⋮ w ( n − 1 ) 2 ] \begin{bmatrix} 1 \\ 1 \\ 1 \\ \vdots \\ 1 \end{bmatrix} , \begin{bmatrix} 1 \\ w \\ w^2 \\ \vdots \\ w^{n - 1} \end{bmatrix} , \cdots , \begin{bmatrix} 1 \\ w^{n - 1} \\ w^{2(n - 1)} \\ \vdots \\ w^{(n - 1)^2} \end{bmatrix} 1111 , 1ww2wn1 ,, 1wn1w2(n1)w(n1)2

    J P E G JPEG JPEG的做法是把一个图像分成多个 8 ∗ 8 8 * 8 88的小块单独处理,首先把小块的基变换为 64 64 64维傅里叶基,这将带来基向量系数的改变,即坐标的改变,这一步是无损操作;接着是有损操作,先设定阈值,阈值的选择取决于肉眼是否可以分辨出区别,再通过阈值去掉一些基向量,即把它们的系数定为 0 0 0,然后储存那些非零数值,这样就完成了压缩

    压缩后的块可能只有 3 3 3个系数,相较于刚开始的 64 64 64个,压缩比大概为为 21 : 1 21:1 21:1

  4. 视频压缩

    可以把视频视为大量静态图像,挨个储存所有图像将会占用很多空间,这明显不是一个合适的方法,考虑到相邻的图像实际上会十分相似,所以只需要把相邻的图像认为是同一个图像,然后加以修正,这样只需要储存修正所用的数据并对这些数据进行压缩即可


小波

以一个 8 8 8维空间的小波基为例: [ 1 1 1 1 1 1 1 1 ] , [ 1 1 1 1 − 1 − 1 − 1 − 1 ] , [ 1 1 − 1 − 1 0 0 0 0 ] , [ 0 0 0 0 1 1 − 1 − 1 ] , [ 1 − 1 0 0 0 0 0 0 ] , [ 0 0 1 − 1 0 0 0 0 ] , [ 0 0 0 0 1 − 1 0 0 ] , [ 0 0 0 0 0 0 1 − 1 ] \begin{bmatrix} 1 \\ 1 \\ 1 \\ 1 \\ 1 \\ 1 \\ 1 \\ 1 \end{bmatrix} , \begin{bmatrix} 1 \\ 1 \\ 1 \\ 1 \\ -1 \\ -1 \\ -1 \\ -1 \end{bmatrix} , \begin{bmatrix} 1 \\ 1 \\ -1 \\ -1 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} , \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 1 \\ 1 \\ -1 \\ -1 \end{bmatrix} , \begin{bmatrix} 1 \\ -1 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} , \begin{bmatrix} 0 \\ 0 \\ 1 \\ -1 \\ 0 \\ 0 \\ 0 \\ 0 \end{bmatrix} , \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 1 \\ -1 \\ 0 \\ 0 \end{bmatrix} , \begin{bmatrix} 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ 1 \\ -1 \end{bmatrix} 11111111 , 11111111 , 11110000 , 00001111 , 11000000 , 00110000 , 00001100 , 00000011 ,其中的每个基向量都可以被称为小波,记作 w ⃗ \vec{w} w ,而且小波中有很多从 1 1 1 − 1 -1 1的跳跃

这只是一个比较简单的小波选择,还有很多更精细的选择,在更精细的选择中,变化不会这么剧烈,即跳跃较少

变换基即求出变换后基向量的系数,设变换前向量为 p ⃗ \vec{p} p ,变换后向量为 c ⃗ \vec{c} c ,有 p ⃗ = c 1 w ⃗ 1 + ⋯ + c n w ⃗ n \vec{p} = c_1 \vec{w}_1 + \cdots + c_n \vec{w}_n p =c1w 1++cnw n,把以小波为列向量的矩阵称作小波矩阵,记作 W W W,则有 p ⃗ = W c ⃗ \vec{p} = W \vec{c} p =Wc ,所以 c ⃗ = W − 1 p ⃗ \vec{c} = W^{-1} \vec{p} c =W1p

怎样说明用作变换的基性质很好呢?一般需要满足两个条件,首先是计算迅速,即用对应矩阵及其逆左乘向量均非常迅速,对于傅里叶基,有快速傅里叶变换,对于小波基,其实也有快速小波变换( F W T FWT FWT);其次是丢弃某些基向量不会对图像产生过大影响,比如刚才那个 8 8 8维空间的小波基如果丢去了 w ⃗ 5 \vec{w}_5 w 5,不会对图像产生过多影响


基变换

设两组不同基下同一向量分别表示为 p ⃗ , c ⃗ \vec{p} , \vec{c} p ,c ,并且这两组基对应矩阵分别为 V , W V , W V,W,有 V p ⃗ = W c ⃗ V \vec{p} = W \vec{c} Vp =Wc ,则 p ⃗ = V − 1 W c ⃗ \vec{p} = V^{-1} W \vec{c} p =V1Wc ,令 M = V − 1 W M = V^{-1} W M=V1W,则 M − 1 = W − 1 V M^{-1} = W^{-1} V M1=W1V

对于一个 T : R n → R n T:R^n \to R^n T:RnRn,设在两组不同基下对应的矩阵分别为 A , B A , B A,B,用两组基表示同一向量分别得到 p ⃗ , c ⃗ \vec{p} , \vec{c} p ,c ,令 p ⃗ = M c ⃗ \vec{p} = M \vec{c} p =Mc ,有 A p ⃗ = M B c ⃗ = M B M − 1 p ⃗ A \vec{p} = M B \vec{c} = M B M^{-1} \vec{p} Ap =MBc =MBM1p ,所以 A = M B M − 1 A = M B M^{-1} A=MBM1,因而在基不同的情况下描述同一不变换维度的线性变换使用的矩阵互为相似矩阵

因为正交矩阵满足 Q − 1 = Q T Q^{-1} = Q^T Q1=QT,所以用正交矩阵左乘一个由单位矩阵各列组成的基下的向量可视为将那个向量的基变换为由 Q T Q^T QT的各列组成,考虑这种变换的相对性,即考虑基不变,那么该变换可视为向量的旋转,所以正交矩阵可视为旋转矩阵


打赏

制作不易,若有帮助,欢迎打赏!
赞赏码

支付宝付款码

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度解析高防产品---游戏盾

游戏盾是针对游戏行业所推出的高度可定制的网络安全解决方案,游戏盾是高防产品系列中针对游戏行业的安全解决方案。游戏盾专为游戏行业定制,针对性解决游戏行业中复杂的DDoS攻击、游戏CC攻击等问题。游戏盾通过分布式的抗D节点,可以防御TB级大…

变分贝叶斯近似

马尔可夫链蒙特卡洛方法(MCMC)是一个非常有用和重要的工具,但在用于估计大型数据集的复杂后验分布或模型时可能会遇到困难。变分近似(variational approximations)或变分推断(variational inference&#x…

扫雷(c语言)

先开一个test.c文件用来游戏的逻辑测试,在分别开一个game.c文件和game.h头文件用来实现游戏的逻辑 主要步骤: 游戏规则: 输入1(0)开始(结束)游戏,输入一个坐标,如果该坐…

下载安装克魔助手

摘要 本文介绍了如何下载安装克魔助手工具,以及注册和登录流程。通过简单的步骤,用户可以轻松获取并使用该工具,为后续的手机应用管理操作做好准备。 引言 克魔助手是一款免费的手机管理工具,通过该工具用户可以方便地在电脑上…

利用 PEB_LDR_DATA 结构枚举进程模块信息

1. 引言 我们常常通过很多方法来获取进程的模块信息,例如 EnumProcessModules 函数、CreateToolhelp32Snapshot 函数、WTSEnumerateProcesses 函数、ZwQuerySystemInformation 函数等。但是调用这些接口进行模块枚举的原理是什么我们并不知道。通过学习 PEB 中 PEB…

GrayLog日志平台的基本使用-ssh之Email报警

1、首先编辑并添加邮件配置到server.conf(注意:是添加) vim /etc/graylog/server/server.conf # Email transport transport_email_enabled true transport_email_hostname smtp.qq.com transport_email_port 465 transport_email_use_a…

基于CNN和双向gru的心跳分类系统

CNN and Bidirectional GRU-Based Heartbeat Sound Classification Architecture for Elderly People是发布在2023 MDPI Mathematics上的论文,提出了基于卷积神经网络和双向门控循环单元(CNN BiGRU)注意力的心跳声分类,论文不仅显示了模型还构建了完整的…

财务咨询公司为何要搭建自己的线上课程平台,而非入驻其他公域流量平台

明理信息科技线上课程平台 财务咨询公司为何要搭建自己的线上课程平台,而非入驻其他公域流量平台 随着数字化时代的到来,线上教育和学习已经成为越来越多人的选择。对于财务咨询公司来说,搭建自己的线上课程平台不仅可以更好地满足客户需求…

git 常用基本命令, reset 回退撤销commit,解决gitignore无效,忽略记录或未记录远程仓库的文件,删除远程仓库文件

git 基本命令 reset 撤销commit https://blog.csdn.net/a704397849/article/details/135220091 idea 中 rest 撤销commit过程如下: Git -> Rest Head… 在To Commit中的HEAD后面加上^,点击Reset即可撤回最近一次的尚未push的commit Reset Type 有三…

盘点 | 飞凌嵌入式这5款100%全国产核心板值得推荐

近期,飞凌嵌入式有5款核心板产品通过了中国赛宝实验室的权威认证,实现了100%的电子元器件国产化率,本篇文章小编就带大家盘点一下这5款产品。 一、FET3568-C系列核心板 FET3568-C和FET3568J-C核心板基于Rockchip RK3568系列处理器开发设计&am…

C++初阶(十七)模板进阶

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、非类型模板参数二、模板的特化1、概念2、函数模板特化3、类模板特化1、全特化2、偏特化 三…

Hadoop之Yarn 详细教程

1、yarn 的基本介绍和产生背景 YARN 是 Hadoop2 引入的通用的资源管理和任务调度的平台,可以在 YARN 上运行 MapReduce、Tez、Spark 等多种计算框架,只要计算框架实现了 YARN 所定义的 接口,都可以运行在这套通用的 Hadoop 资源管理和任务调…