音视频开发之旅(58) -H.264 帧内预测

目录

  1. 编码流程和数据格式回顾
  2. 4 × 4亮度块的9中预测模式
  3. 16 × 16亮度块的4种预测模式
  4. 8 × 8 色度块的4种预测模式
  5. JM代码
  6. 资料
  7. 收获

一、编码流程和数据格式回顾

我们先看下下图来回顾下编码流程


一个编码图像通常划分一个或多个片,每个片又可以划分成若干宏块组成,一个宏块由一个 16×16 亮度像素、一个 8×8 Cb以及一个 8×8 Cr 彩色像素块组成,即常见的420采样格式,如下图:


我们通过H264visa码流分析工具看下H264数据的第一帧数据,可以看到它是I帧,由一个个宏块组成,在帧内采用帧内预测的方式进行编码。



也看到上面宏块的type有16x16也有4x4,这是什么意思?
再通过Elecard StreamEye 来查看发现更多信息。包括pmode、ipred Intra_4x4、 ipred chroma 都代表什么意思以及里面的值有什么什么意思呐?


在帧内预测模式中,预测块 P 是基于已编码重建块和当前块形成的。对亮度像素而言,P 块用于 4×4 子块或者 16×16 宏块的相关操作。
4×4 亮度子块有 9 种可选预测模式,独立预测每一个 4×4亮度子块,适用于带有大量细节的图像编码;
16×16 亮度块有 4 种预测模式,预测整个 16×16 亮度块,适用于平坦区域图像编码;
色度块也有 4 种预测模式,类似于 16×16 亮度块预测模式。编码器
通常选择使 P 块和编码块之间差异最小的预测模式。

下面我们来看下其预测模式

二、4 × 4亮度块的9种预测模式

4x4预测块的像素使用小写字母a-p标示,预测块左侧和上方的参考像素使用大写字母A-M标示:


4x4亮度块有9中预测模式,分别如下

其中预测模式2 的所有样本预测值都等于A-D以及I-L的平均值。
其他8中模式的8歌方向的预测示意图如下所示:


9种预测模式说明如下:
模式 说明
Mode0 (Vertical): 由上方的A、B、C、D进行垂直推算

Mode1 (Horizontal) : 由左侧的I、J、K、L进行水平推算

Mode2 (DC) : P中的所有样本预测值都等于AD及IL的平均值

Mode3 (Diagonal Down-Left): 由45度角方向的左下和右上的样本内插得出

Mode4 (Diagonal Down-Right): 以45度角往右下的方向进行推算

Mode5 (Vertical-Right) : 以垂直向下方向右偏大约26.6度角(即width/height = 1/2)的方向推行推算。

Mode6 (Horizontal-Down): 以水平向右方向下偏大约26.6度角的方向进行推算。

Mode7 (Vertical-Left): 以垂直向下方向左偏大约26.6度角的方向推行推算。

Mode8 (Horizontal-Up): 以水平向右方向上偏大约26.6度角的方向进行推算。

需要注意的是:

Mode 2的规则可以根据A-M中样本的可用情况进行修改,因为它求的是根据参考样本求的平均值,其他的模式可能在所有需求的参考样本都可用的时候才能采用。然后需要注意的是如果样本E、F、G和H是不可用的,样本D的值可以拷贝到这些位置从而标记这些样本为可用的。
对于Mode 3-8,预测样本的值是参考样本A-M的加权平均。假设选择了Mode 4,d的预测值 = round(B/4 + C/2 + D/4)。
引用自:https://www.jianshu.com/p/4d8692d53d8c?utm_campaign=hugo&utm_medium=reader_share&utm_content=note&utm_source=weixin-friends

图片来自:《新一代视频压缩码标准-H.264_AVC(第二版).毕厚杰,王健编著》

三、16 × 16亮度块的4种预测模式

模式 说明
Mode0 (vertical): 由上方的样本(H)垂直推算
Mode1 (horizontal) 由左侧的样本(V)水平推算
Mode2 (DC): 上方的样本(H)和左侧的样本(V)的平均值
Mode3 (Plane): 根据上方的样本(H)和左边的样本(V)通过一个plane函数得出,在亮度平滑变化的区域工作得很好。

下面看下《新一代视频压缩码标准-H.264_AVC(第二版).毕厚杰,王健编著》中举的一个例子:


四、8 × 8 色度块的4种预测模式

色度的Cr和Cb分量的预测模式选择是一样的。
色度预测模式与16x16亮度预测模式的描述类似,除了模式的编号不一样。
DC (mode 0), horizontal (mode 1), vertical (mode 2), plane (mode 3).

看到这里我想对于文章开头我们通过码流分析工具H264visa以及Elecard StreamEye 查看宏块的一些问题应该有自己的答案了。

五、JM代码

这一小节我们结合JM源码来简单分析下帧内预测的实现
JM包括JM encoder和JM decoder, JM encoder是H.264标准的一个具体实现, JM decoder是对应的解码器.
JM encoder和 x264一样,都是H.264标准的实现, 但它严格按照H264的协议来进行实现,而x264 简化了JM的代价计算方法,去掉了一些代码,进行了估算等优化,编码速度上JM会很慢,不适用于生产环境,
查看其源码对于了解H264协议时很有帮助。
JM的源码下载地址:http://iphome.hhi.de/suehring/tml/download/old_jm/,可以选择一个版本进行下载查看

这个源码还没真正的看,先做个记录吧,根据需要进行学习。
具体可以参考雷神的文章 : 雷神-H.264官方软件JM源代码简单分析-编码器lencod

六、资料

  1. 图书:《新一代视频压缩码标准-H.264_AVC(第二版).毕厚杰,王健编著》- 第 6 章 H.264/AVC 编码器原理
  2. H.264 帧内预测
  3. 雷神-H.264官方软件JM源代码简单分析-编码器lencod
  4. JM源码下载
  5. [JM官方文档]

七、收获

通过本篇的学习实践

  1. 了解了帧内编码的方式以及在整个编码过程中起的作用
  2. 了解4x4亮度块的9种预测模式、16x16亮度块以及8x8色度块的预测方式
  3. 通过码流分析工具查看宏块信息,加深理解。

感谢你的阅读
下一篇我们学习H.264 帧间预测,欢迎关注公众号“音视频开发之旅”,一起学习成长。
欢迎交流

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容