从下象棋的角度来类比浅析H.264中的像素残差和运动矢量残差
来源:互联网 发布:洛奇英雄传捏脸数据 编辑:程序博客网 时间:2024/04/30 01:54
我酷爱下象棋,经常沉迷其中,不好啊,最近下定决心,尽量少下象棋. 现从下象棋的角度来类比浅析H.264中的像素残差和运动矢量残差.
第一帧: 双方把象棋摆放好,准备开始下,这个画面就是第一帧; (对应IDR帧)
第二帧: 红方走“炮二平五”,那么这个画面为第二帧; (对应P帧)
编码端:两个象棋高手(比如洪智和许银川)在某五星级酒店下象棋,解说员就是编码器,要对这个比赛进行现场报道;
解码端:广大棋迷(比如本人)就是解码器,要理解解说员说到了哪一步.
先抛开H.264的具体情况不管,我们来玩象棋.
解说员:各位棋迷朋友,大家准备好了,象棋比赛开始,请各位棋迷朋友把象棋恢复到最原始状态.
棋迷: 在自己家里拿一副象棋,把象棋摆好,成最原始状态.
那么,第一帧就由编码端传到了解码端,显然是成功的.
解说员:洪智走了一步“炮二平五”.
棋迷 :把二路的炮移到了五路.
那么,第二帧就编码端传到了解码端,显然是成功的. 仔细想一下,解说员并没说第二帧的状态啊,他只说“炮二平五”啊,这个“炮二平五”实际上就相当于运动矢量,在用运动矢量进行补偿后,可以认为第二帧减去第一帧的结果为0,也就是说,第二帧和第一帧没有设么区别,就隔一个运动矢量.解说员不需要麻烦地说每个棋子的位置,只需要说第二帧与第一帧的变化在什么地方就可以了,编码端和解码端都省时省力,何乐而不为呢?这就实现所所谓的去冗余,从而压缩了所需要传输的数据量.
在象棋这个例子中,第二帧减去第一帧(此处指运动矢量补偿后的第一帧)的结果为0,那么这个结果实际上就是对应的就是H.264中的像素残差,这个“炮二平五”对应H.264中的运动矢量.
回到H.264中有:
原始像素 - 预测像素(运动矢量补偿得到预测像素) = 像素残差
那么什么是运动矢量残差呢?运动矢量残差就是两个运动矢量相减后得到的矢量(运动矢量残差),这个运动矢量残差最终会写进码流,至于为什么要引入运动矢量残差,这个很简单,就不多废话了, 具体可以H.264相关资料(下面仅仅给出示意的公式)
运动矢量残差(mvd) = 运动矢量(mv) - 预测的运动矢量(mvp)
啰嗦一句:万万不可混淆像素残差和运动矢量残差. 少下象棋,多干正事, 最后附上王阳明大哲人的著名诗句,以此自勉:
- 从下象棋的角度来类比浅析H.264中的像素残差和运动矢量残差
- 从下象棋的角度来类比浅析H.264中的像素残差和运动矢量残差
- H.264中最优运动矢量残差的输出
- 一段小小的C++代码(从保存H.264运动矢量过程中想到的)
- H.264句法和语法总结(十三)残差句法
- H.264句法和语法总结(十四)CAVLC 残差句法
- H.264句法和语法总结(十三)残差句法
- H.264句法和语法总结(十四)CAVLC 残差句法
- H.264句法和语法总结(十三)残差句法
- H.264句法和语法总结(十四)CAVLC 残差句法
- H.264句法和语法总结(十三)残差句法
- H.264句法和语法总结(十四)CAVLC 残差句法
- H.264句法和语法总结(十三)残差句法
- H.264句法和语法总结(十四)CAVLC 残差句法
- 深度残差网络(ResNet)浅析
- 深度残差网络(ResNet)浅析
- 从类比现实生活的角度看待编码
- 残差
- 你是我的风景
- 创建一个程序来输出杨辉三角
- 爱情的味道变了,是时间还是欲望
- 今生我是一只狗丶来世我愿做个人
- iOS开发如何提高__优秀博客地址
- 从下象棋的角度来类比浅析H.264中的像素残差和运动矢量残差
- 父亲的泪
- 谁的琴声,乱我流年
- “窝囊”的父亲
- ContentResolver(通信录操作)
- 奔跑的小狮子
- 谈谈自己对编程语言和程序员职业方向的看法
- 一生中应该珍惜的十种人
- 鲜花插在牛粪上