攻克视频技术
李江
声网 Agora 视频专家
7494 人已学习
新⼈⾸单¥59
登录后,你可以任选3讲全文学习
课程目录
已完结/共 19 讲
攻克视频技术
15
15
1.0x
00:00/00:00
登录|注册

08|变换量化:如何减少视觉冗余?

你好,我是李江。
在前面几节课里面我们对视频编码的原理帧内编码帧间编码都做了详细的介绍。我们知道,通过帧内编码可以去除空间冗余,通过帧间编码可以去除时间冗余,而为了分离图像块的高频和低频信息从而去除视觉冗余,我们需要做 DCT 变换和量化。
为了让你更透彻地了解视频编码中的 DCT 变换和量化的原理,在这节课里面,我们会对 DCT 变换和量化的过程做一个深入的探讨。通过下图你可以很清楚地看到视频编码的过程,并且能够更直观地感受 DCT 变换和量化在整个视频编码过程中的重要性。
由于 DCT 变换和量化过程是一个跟数学比较相关的过程,且大多数是数学计算。因此今天的课程中数学公式和计算过程相对会多一些。但是总体来说难度不是很大。
下面我们就先来讨论一下常规的视频编码中的 DCT 变换和量化,看看它是怎么去除一部分高频信息来达到去除视觉冗余的。并且,由于 H264 中用到的 DCT 变换和量化跟常规的 DCT 变换和量化有一些区别,其主要在于 H264 使用整数变换代替常规的 DCT 变换,并将 DCT 变换中的一部分计算整合到量化中,从而减少浮点运算漂移问题。因此,我们还会对 H264 中的 DCT 变换和量化做一下介绍,最后对比一下 H264 中的变换和量化与常规的变换和量化的区别。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

视频编码中的DCT变换和量化是为了减少视觉冗余,通过DCT变换将图像块转换到频域,并通过量化去除一部分高频信息来达到压缩的目的。H264标准中采用整数变换代替DCT变换,将浮点运算和量化过程合并,以减少误差。Hadamard变换也可用于快速转换残差块到频域。文章还介绍了H264中各模式块的DCT变换和量化过程。整数变换和量化的结果与常规DCT变换和量化相同,只是实现方式不同。文章还提到了Hadamard变换在率失真优化中的应用。通过了解这些内容,读者可以深入了解视频编码的原理和技术特点。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《攻克视频技术》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • tony
    如果hadamard能达到同样的效果且运算简便,为什么还要使用dct变换?

    作者回复: hadamard变换不能达到和dct一样的效果。只是在率失真优化的时候为了速度快一般不会真的做一次dct变换量化和熵编码整个流程,因为每个模式都做一遍这个流程太费时间了。所以可以使用计算量更小速度更快的SATD代替,SATD里面使用了hadamard变换。不能说hadamard变换能代替dct。

    2022-01-03
    2
  • 方杰
    猜测是Hadamard变换相对DCT变换运算简单,且估计值和实际值相差不大。有个地方不太明白,对于DC块做Hadamard变换,再进行总体量化,这个过程是指将经过Hadamard变换后的DC块的值再映射到16个4*4的小块位置上吗?

    作者回复: 1、对DC系数再做一次hadamard变换是因为有的时候DC系数相关性比较高,可以进一步变换一下,提高压缩性能。 2、是的,是映射到原来的位置做量化。

    2021-12-15
    2
  • louie
    第一张图中输入YUV图形不对吧,输入的应该是原始图像BMP 输出的应该是YUV 吧

    作者回复: 视频不会用BMP,都是YUV

    2023-08-07归属地:北京
  • 晓龙
    亮度块和色度块中的DC块比AC块多了一次hadamard变换,为什么?第一步整数变换,不是已经将所有的块从空域变换到频域了么?这里对DC块在做一次hadamard变换,相当于对已经转换到频域的块,在做一次频域转换?这里不太理解,请老师解答下
    2021-12-09
    2
    1
  • Geek_9c9938
    老师好 文中 '通过帧内编码可以去除空间冗余,通过帧间编码可以去除时间冗余' 意思是说帧内编码只去除了空间冗余,没有去除时间冗余,帧间编码只去除了时间冗余,没有去除空间冗余?
    2023-11-15归属地:北京
  • !null
    矩阵推导第三行是不是写错了,应该有两个正1/2
    2023-06-28归属地:北京
  • Geek_00d0ef
    大佬,我又算了一遍,是我算错了
    2022-05-05
  • Geek_00d0ef
    hadamard变换后,QP很大,而那个Qstep是怎么得到的?
    2022-05-04
  • Geek_00d0ef
    楼主,我用matlab计算的DCT变换后和你的矩阵有出入。(标*) 【-9.75 *14.08 20.75 -5.02 *-4.85 8.24 *11.00 -3.18 0.25 -1.17 -2.25 -0.86 -0.42 -0.59 -0.49 -0.43】
    2022-05-04
  • Geek_f694f0
    高频信息幅值比较小,这个是个什么原理?
    2022-05-01
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部