GitHub代码地址:点击这里


1. 矩阵的定义

矩阵,英文称为”Matrix”,是数学中一个非常重要的概念。从形式上看,矩阵可以用一个m行n列的数组成的表格表示。如下图可表示一个4行4列的方形矩阵:

在实际应用中,矩阵可以在多个技术领域发挥重要作用,如音视频压缩编码、机器学习、人工智能等领域。

2. 矩阵的运算

矩阵必须在计算中才能与其他数据进行交互。在《线性代数》中我们已经清楚地知道,矩阵可以进行求和、数乘和与矩阵相乘等运算。其中矩阵的求和与数乘运算十分简单:

  • 矩阵求和:同型矩阵可以求和,即将对应元素求和组成新的矩阵;
  • 矩阵数乘:任何矩阵都可与实数相乘,即将每个元素与该数字相乘组成新的矩阵;

而相比之下,矩阵与矩阵相乘会略显复杂,需要满足必要条件,即矩阵1的宽必须等于矩阵2的高方可相乘。乘积矩阵的高和宽分别为矩阵1的高和矩阵2的宽,如下图表示: 

其中,乘积矩阵的元素的计算方法为: 

通常,我们将只有一行或一列的矩阵称之为向量。根据排列的不同,按行或列排列的向量分别称之为行向量和列向量。

3. 向量和矩阵的线性变换

向量的线性变换定义为:向量y的每一个元素都是向量x中元素的线性组合,则y是x的线性变换。假设有向量[x1, x2, x3]和向量[y1, y2, y3],两个向量满足以下关系:

  • y1 = a11 * x1 + a12 * x2 + a13 * x3
  • y2 = a21 * x1 + a22 * x2 + a23 * x3
  • y3 = a31 * x1 + a32 * x2 + a33 * x3

那么我们称向量[y1, y2, y3]可以被向量[x1, x2, x3]线性表示,以公式形式则表示为y=A·x。其含义可表示为矩阵与向量相乘:

矩阵A即为该线性变换的矩阵。

将向量的变换推广,矩阵可以视为由向量构成,因此线性线性变换同样适用于矩阵的变换:

4. 向量的正交性、正交矩阵和正交变换

要了解向量的正交性,首先应了解向量的内积的概念。在“不严格”的条件下,我们暂且可以将向量的内积理解为数量积,即两个相同长度向量对应元素乘积的总和。用公式表示为:

而向量的正交,等价于两个向量的内积为0。即:

在二维和三维空间内直观地表示,两个正交向量相互垂直: 

由于矩阵可视为由多个列向量构成,那么多个两两正交的向量可以构成正交矩阵。一个矩阵是正交矩阵需要满足的条件有:

  • 行数和列数相等,即正交矩阵都为方阵;
  • 每一个列向量均为单位向量,即长度均为1;
  • 各列向量两两正交;

前面提到,每一个矩阵都可以与一个线性变换对应。那么如果一个线性变换对应的变换矩阵是正交矩阵,那么该变换就是一个正交变换。正交变换的显著特点之一是,向量经过正交变换后长度不会发生变化。


5. 离散余弦变换

离散余弦变换 (Discrete Cosine Transform, DCT)类似于一种实数类型的离散傅里叶变换(DFT),其定义有多种形式(可参考维基百科:离散余弦变换)。常用场合中使用的离散余弦变换是一个正交变换,其正变换和逆变换的计算方法如:

由于DCT具有类似于DFT的特性,DCT也可以实现如信息能量集中的功能。对于图像数据,DCT可以有效将大部分的能量集中与直流和低频部分,这也成为视频压缩中变换编码的理论基础之一。实际上,DCT长期应用与多种图像和视频的压缩编码标准中:

  • 视频:MPEG-1/MPEG-2;
  • 图像:JPEG

在H.264及更新的视频压缩标准中,采用的是DCT的优化改进版——整数变换。相对于浮点类型的离散余弦变换,整数变换有效降低了变换操作的运算复杂度,提升了编解码器的运行效率。

十四、H.264的变换编码(一)——矩阵运算与正交变换基本概念相关推荐

  1. 音视频开发(26)---H.264编码格式和视频编码的一些基本概念

    H.264编码格式和视频编码的一些基本概念 对于大多数人来说,对于视频的基本印象就是视频清晰度.体积大小.分辨率和视频格式.当然对于只对观看视频和下载视频的朋友们来说这些知识足够了.经常在VeryCD ...

  2. 优秀的 Verilog/FPGA开源项目介绍(十)- H.264和H.265

    H.264及H.265简介: 一.什么是H.265 H.265是ITU-TVCEG继H.264之后所制定的新的视频编码标准.H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术,同时对 ...

  3. 四. H.264视频编解码器(X264和JM)及参考软件JM的下载与编解码

    实H.264是一种视频压缩标准,其只规定了符合标准的码流的格式,以及码流中各个语法元素的解析方法. H.264标准并未规定编码器的实现或流程,产生了一些比较著名的开源H.264编解码器工程.其中H.2 ...

  4. Oracle入门(十四H)之良好的编程实践

    一.为什么要学习它 好的编程实践是技巧,可以按照创建最好的代码可能. 编程实践涵盖了一切从代码更多可以用更快的速度创建代码性能. 软件工程团队通常会遵循风格指导让团队中的每个人使用相同的技术. 这使它 ...

  5. 三. H.264简介

    一. H.264视频编码标准 H.264视频编码标准是ITU-T与MPEG合作产生的又一巨大成果,自颁布之日起就在业界产生了巨大影响.严格地讲,H.264标准是属于MPEG-4家族的一部分,即MPEG ...

  6. 【H.264/AVC视频编解码技术详解】三. H.264简介

    <H.264/AVC视频编解码技术详解>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战工程的形式对H.264的标准进行 ...

  7. 【视频编解码·学习笔记】2. H.264简介

    一.H.264视频编码标准 H.264视频编码标准是ITU-T与MPEG合作产生的又一巨大成果,自颁布之日起就在业界产生了巨大影响.严格地讲,H.264标准是属于MPEG-4家族的一部分,即MPEG- ...

  8. H.264协议CABAC熵编码学习(二)

    目录: H.264协议CABAC熵编码学习(一) H.264协议CABAC熵编码学习(二) H.264协议CABAC熵编码学习(三) H.264协议CABAC熵编码学习(四) H.264协议CABAC ...

  9. 对于H.264编解码的探索

    为什么需要视频编码 举个例子,如果摄像头输出分辨率为400*400的图像,那每一帧的大小就是400*400*8*3=3840000bit,折算下来一帧就需要468KB 一般情况下帧数都是30fps,那 ...

最新文章

  1. 数据库查询 sysobjects
  2. Center OS 5.5 下安装 和 配置 Tomcat 7
  3. android 看AP 国家代码,Android WiFi 获取国家码
  4. 区块链技术的发展趋势
  5. 小程序 | 微信小程序from报名表单提交至数据库(含js提交函数)
  6. STM32F103:三.(3)MPU6050
  7. 关于quick-cocos2d-x
  8. 【Codeforces Global Round 2】A-E题解 【Frets On Fire、Pavel and Triangles】
  9. lumion制作海上明月5.29
  10. 计算机中英文打字文章,中英文打字练习文章优美范文.doc
  11. win10怎么修改计算机桌面存储路径,win10桌面保存位置怎么修改_win10修改桌面存储位置教程...
  12. 苹果mac装双系统对电脑有影响吗?Mac电脑装双系统的利与弊
  13. PowerDesigner工具栏消失恢复
  14. 浅谈某定设计网站非会员去除水印
  15. Java 线程池设计思想及源码实现
  16. 使用Kettle 进行行Oracle数据迁移时处理编码转换处理US7ASCII 编码
  17. 随着人工智能发展的少儿编程教育
  18. springboot+mybatis 利用PageHelper插件分页,结果第二页的返回分页信息还是和第一页一样。
  19. python numpy读取数据_python机器学习(七)数据分析利器,NumPy,pandas与Matplotlib
  20. 位置式PID与增量式PID区别浅析(百度百科增量式PID讲解思路概念更明确清晰)

热门文章

  1. 别瞎学了!Docker已被K8S取代!
  2. 皮一皮:中文汉字真是博大精深...
  3. 如何使用Arthas定位线上 Dubbo 线程池满异常
  4. php函数多个参数_php中,用函数,如果有很多个参数,只使用最后一个参数,有什么优雅的写法?...
  5. 整合营销系统推荐乐云seo_做seo优化前需要考虑哪些
  6. nanodet学习笔记 tensorrt
  7. onnx:Resize in opset 11 to support Pytorch‘s behavior
  8. pytorch relu6
  9. pytorch nan问题
  10. assignment mismatch: 1 variable but uuid.NewV4 returns 2 values