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

06|帧内预测:如何减少空间冗余?

你好,我是李江。
前面几节课我们一起讨论了视频编码的原理以及编码码流结构,从今天开始我们一起来聊一聊具体的编码模式。
我们知道在视频编码时主要需要减少 4 个冗余,包括:空间冗余、时间冗余、视觉冗余和信息熵冗余。其中空间冗余就是通过帧内预测的方式来实现的。那帧内预测到底是怎么做到减少空间冗余的呢?
其实一般来说,一幅图像中相邻像素的亮度和色度信息是比较接近的,并且亮度和色度信息也是逐渐变化的,不太会出现突变。也就是说,图像具有空间相关性。帧内预测就是利用这个特点来进行的。即帧内预测通过利用已经编码的相邻像素的值来预测待编码的像素值,最后达到减少空间冗余的目的
这里需要注意的一个点就是,我们是通过已经编码了的像素值去预测待编码的像素值。你可能会问,已经编码了的像素值变成码流了,不再是一个个像素了,怎么去预测待编码的像素呢?其实已经编码了的像素是会重建成重建像素,用来做之后待编码块的参考像素的。你可以认为是已经编码的块会解码成像素用来做参考像素
好了,我们已经知道了帧内预测是怎么减少空间冗余的,那我们还有一个最重要的问题要解答。既然帧内预测是通过相邻像素来预测待编码像素的,那它到底是怎么预测的呢?下面我们就以 H264 标准来讲解每种帧内预测模式是怎么做预测的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

视频编码中的帧内预测是一项重要的空间冗余减少技术。该技术利用图像中相邻像素的相关性,通过已编码的相邻像素值来预测待编码的像素值,从而减少空间冗余。H264标准中的帧内预测根据块的大小分为不同的预测模式,包括4 x 4亮度块的9种预测模式、16 x 16亮度块的4种预测模式以及8 x 8色度块的4种预测模式。这些预测模式涵盖了不同的方向和插值方式,通过这些预测模式可以实现对图像块的精细预测。帧内预测的实现可以帮助读者更好地理解视频编码中的空间冗余减少技术,为进一步深入学习提供了基础。在选择最优预测模式时,可以通过计算残差块的绝对值之和、Hadamard变换后的绝对值之和或者进行率失真优化等方法来得到最佳预测模式。这些方法为读者提供了选择最佳预测模式的思路。文章还提出了一个思考题,即在H264标准中,视频的第一帧的第一个块应该如何选择预测模式,鼓励读者留下自己的答案并进行探讨交流。整体而言,本文通过详细介绍帧内预测的原理和选择方法,为读者提供了深入了解视频编码中的空间冗余减少技术的基础知识。

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

全部留言(25)

  • 最新
  • 精选
  • paradise
    在 H264 标准里面,视频的第一帧的第一个块的左和上都是空,没法预测,所以设置成了一个约定值128,方便编码。这边找个几个264的码流,第一个I帧的第一个4*4 子块的yuv 预测值全都是128,大家也可以找个264的码流确认一下

    作者回复: 回答的非常棒

    2021-12-03
    2
    11
  • 我有一条鱼
    想问一个问题: 4x4、16x16不同大小的块为什么会有不同的预测模式。 我理解预测模式只是参考不同方向已经编码过的块找出差异最小的,最容易变出更多0的方式。这样想的话是不是4x4的9种预测模式都是可以使用在16x16上的?还是说已经验证16x16上效果一定会很差?

    作者回复: 单纯从编码压缩性能来说是模式当然是越多越好。但是我们还要兼顾编码速度的。16 x 16的块一般用在相对平坦的区域,也就是细节相对少一些的区域,模式少一点对编码速度会好一些。而对于细节多的地方,我们需要更精细化编码,所以块也更小、模式也更多。

    2021-12-23
    9
  • chao
    是每个块都要做帧内预测模式选择吗? 如果是的话,感觉计算量很大,假如都是4*4的块,每个块都要计算9遍然后选出一个最优的。

    作者回复: 所以一般会有多种编码速度供你选择,在快速档会有一些快速算法根据块和周边块的像素特点提前判断编码模式,得到的就不一定是最优解。在慢速档就可能会每种模式都遍历得到的就是最优解。这也是我在第一节课说的,不是码率高就清晰度高。

    2022-01-11
    2
  • tony
    帧内预测模式选择16x16或者4x4时,要综合考虑cost,编码速度,是否平坦等等,编码速度以及是否平坦是如何衡量的?

    作者回复: 1、模式的选择其实最后是看cost的,其实在选择的时候并不会看平不平坦,因为一个16x16的块如果划分的话,要划分成16个4x4的块,每一个块都需要带模式等额外的信息也需要消耗码率,所以如果图像区域确实是平坦的,在模式选择的时候16x16的块计算出来的cost会比16个4x4总cost要小。所以我们一般会说平坦区域更适合16x16的大小,但实际上最后还是通过cost大小来判断的。 2、编码速度可以通过编码器的参数设置,比如x264可以通过preset来设置。设置速度快的话编码器内部会把一些编码工具关闭不使用它们。这样速度就快了,但是编码效果就差一些。

    2021-12-25
    2
  • 余健辉
    老师,想请问下后面的计算公式中为什么几个像素值加上后还要加上4或者2或者1再去做除法呢,对这一点有点疑惑

    作者回复: 四舍五入

    2022-01-26
    1
  • Digitalization
    算平均值偏要写成移位操作,不容易看懂啊

    作者回复: 因为编码器代码一般都是用移位操作的,养成这个习惯吧。

    2021-12-27
    2
    1
  • 为了维护世界和平
    参考帧是如何选择的?

    作者回复: 如果只有一个参考帧,那么就没有选择的余地。如果是多个参考帧的话,那么就会遍历所有的参考帧,选择cost最小的

    2022-11-14归属地:浙江
  • ilio
    请教一下老师,一帧里边每个宏块的预测模式都是不一样的吗

    作者回复: 是不一样的

    2022-03-09
  • T------T
    老师好,我看到4X4 模式下有9中预测模式。但是参考方向只有左、左上、上、右上。 实际编码过程中是否是: 从左上角开始,按行从左至右逐个计算每个宏块的像素值?

    作者回复: 是的,因为其他方向对应的位置的块是没有编码,因此不能用来做参考

    2022-01-27
  • 易水南风
    老师,每个宏块的预测中的参考像素都是非预测的么?还是也可以是预测的?

    作者回复: 预测使用的参考像素都是已经编码好了的像素,就是编码模式已经定了的。这些参考像素在编码的时候也是预测编码得到的。

    2022-01-04
收起评论
显示
设置
留言
25
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部