H264基本原理

 

前言

H264摄像压缩算法现在如实是有所视频压缩技术中运用最广泛,最流行的。随着
x264/openh264以及ffmpeg等开源库的生产,大部分使用者无需再对H264的细节做过多的商量,那大下跌了大千世界选用H264的资产。

但为了用好H264,大家依旧要对H264的基本原理弄通晓才行。今天大家就来看望H264的基本原理。

图片 1

H264概述

H264压缩技术主要使用了以下两种方法对视频数据开展削减。包涵:

  • 帧内预测压缩,解决的是空手数据冗余难题。
  • 帧间预测压缩(运动猜想与增补),解决的是时域数据冗徐难点。
  • 平头离散余弦变换(DCT),将空间上的相关性变为频域上非亲非故的多寡然后开展量化。
  • CABAC压缩。

经过压缩后的帧分为:I帧,P帧和B帧:

  • I帧:关键帧,选取帧内压缩技术。
  • P帧:向前参考帧,在减小时,只参考前面早已处理的帧。采纳帧音压缩技术。
  • B帧:双向参考帧,在裁减时,它即参考前而的帧,又参考它背后的帧。采纳帧间压缩技术。

除却I/P/B帧外,还有图像种类GOP。

  • GOP:多个I帧之间是一个图像种类,在一个图像系列中唯有一个I帧。如下图所示:

下边大家就来详细描述一下H264压缩技术。

    4月18号

H264压缩技术

H264的基本原理其实万分简单,下大家就简单的描述一下H264压缩数量的长河。通过视频头采集到的摄像帧(按每秒
30 帧算),被送到 H264
编码器的缓冲区中。编码器先要为每一幅图片划分宏块。

以上面那张图为例:

 去斯科普里的中途,有成片的油菜花,即使不多但都很整齐,蒙蒙的细雨给持有的山山水水都披上了一层薄纱,若隐若现,多条要时时刻刻的隧道阻挡了太多的景象,可众多要过的高架桥又让自己见状了俯瞰的扩展,每一回出游,为了节省时间我都会拔取夜间行进的车,可黑暗的夜幕让自己错过了沿途众多的美景

细分宏块

H264默许是运用 16X16 大小的区域作为一个宏块,也得以划分成 8X8 大小。

分割好宏块后,总括宏块的象素值。

以此类推,总结一幅图像中种种宏块的像素值,所有宏块都处理完后如下边的指南。

    4月19号

划分子块

H264对比较坦荡的图像使用 16X16 大小的宏块。但为了更高的压缩率,仍可以在
16X16 的宏块上更划分出更小的子块。子块的高低可以是 8X16、 16X8、 8X8、 4X8、
8X4、 4X4极度的灵敏。

上幅图中,红框内的 16X16
宏块中大多数是红色背景,而多只鹰的片段图像被划在了该宏块内,为了更好的处理三只鹰的一对图像,H264就在
16X16 的宏块内又细分出了几个子块。

诸如此类再通过帧内压缩,可以获取更便捷的多少。下图是各自使用mpeg-2和H264对上边宏块进行削减后的结果。其中左半局地为MPEG-2子块分割后回落的结果,右半部分为H264的子块划压缩后的结果,可以看出H264的剪切方法更具优势。

宏块划分好后,就足以对H264编码器缓存中的所有图片展开分组了。

 
在自我的印象里,塞内加尔达喀尔当做东北的一片段,是相比较粗旷干旱的,因为中学地理里的黄土高原多少个字实在是太深远人心了,如果不是路线安插第一站是马赛最合适我是不会来那边的,我也从没想过要到博洛尼亚来,因为我心惊肉跳一刮风如同金斯敦那样满天的灰尘,在坐火车来的路上我并未见到那一个所谓的土地荒漠化,一座座山上和岭上都被草木覆盖着,正值青春,一切都呈现那么有生命力,有种在身在西北的错觉。
   
不知是万幸仍旧不幸,我在的那两日毕尔巴鄂都在下雨,下下停停,立夏让那些古镇的整个都突显那么青春,没有高温,没有风沙,有点湿润,舒服极了。那座都市让自身最感叹的是他的绿化面积,我一向觉得临汾的城市绿化面积就够大了,可那里,让自家真的的观看了什么样是大面积的绿化带,在我看来,这座城池可以毫不被称作西南干旱地区了,布里Stowe的景气,同样也未尝让自己想开,南梁天鹅绒之路的起源,果真是不容小觑.

帧分组

对于录像数据主要有两类数据冗余,一类是光阴上的多寡冗余,另一类是空中上的数据冗余。其中时间上的数据冗余是最大的。下边我们就先来说说视频数据时间上的冗余难点。

怎么说时间上的冗余是最大的啊?要是视频头每秒抓取30帧,这30帧的数目半数以上动静下都是相关联的。也有可能不止30帧的的数码,可能几十帧,上百帧的数额都是关系更加仔细的。

对于这个涉嫌越发细心的帧,其实大家只必要保留一帧的数码,其余帧都可以经过这一帧再按某种规则预测出来,所以说摄像数据在时光上的冗余是最多的。

为了完毕相关帧通过预测的措施来减弱数量,就要求将视频帧举办分组。那么如何判定某些帧关系密切,能够划为一组呢?我们来看一下例子,下边是捕获的一组运动的弹子的视频帧,台球从右上角滚到了左下角。

H264编码器会按顺序,每一遍取出两幅相邻的帧举办宏块相比,统计两帧的相似度。如下图:

经过宏块扫描与宏块搜索可以发现那多个帧的关联度是非常高的。进而发现这一组帧的关联度都是分外高的。因而,下边这几帧就足以划分为一组。其算法是:在邻近几幅图像画面中,一般有距离的像素唯有10%之内的点,亮度差值变化不当先2%,而色度差值的生成唯有1%之内,大家觉得这么的图可以分到一组。

在那样一组帧中,经过编码后,我们只保留第一帖的共同体数据,其余帧都通过参考上一帧总结出来。大家称第一帧为IDR/I帧,别的帧我们称为P/B帧,那样编码后的多少帧组大家称为GOP

(在去兵马俑景区的公交车上,有一个女性坐在老幼病残的椅子上,上来一个老太太就站在他的身边,可他像没事人一样坐在那里没有让座,那些坐在座位上的常青女孩子始终无动于中,面不改色,我瞧不起的看了她一些眼,可她我行我素神仙般的坐在那里,而不行老太太直到有位长辈下车他才坐上,我随便那几个年轻妇女是怎么理由坐在那里,她的那种表现给斯科普里公民抹黑了,更把中国人的素质给拉低了
!)

运动推测与互补

在H264编码器元帅帧分组后,就要总计帧组内物体的移位矢量了。还以下面运动的台球视频帧为例,大家来看一下它是何许总括运动矢量的。

H264编码器首先按顺序从缓冲区头顶取出两帧摄像数据,然后举行宏块扫描。当发现内部一幅图片中有实体时,就在另一幅图的接近地方(搜索窗口中)举行搜索。如若那时在另一幅图中找到该物体,那么就能够计算出物体的活动矢量了。下边那幅图就是寻找后的弹子移动的地点。

透过上图中台球地方距离,就可以测算出台图运行的主旋律和离开。H264依次把每一帧中球移动的相距和动向都记录下来就成了上面的规范。

活动矢量总括出来后,将一律部分(也就是灰色部分)减去,就取得了补充数额。大家最终只须求将增补数额开展削减保存,未来在解码时就可以回复原图了。压缩补偿后的数额只需求记录很少的某些数目。如下所示:

俺们把运动矢量与互补称为帧间收缩技术,它解决的是视频帧在岁月上的数据冗余。除了帧间回落,帧内也要开展数据压缩,帧内数据压缩解决的是空间上的数量冗余。上面大家就来介绍一下帧内压缩技术。

 
到了兵马俑博物馆买票,学生半价75元,那地方很大,要走一会才到遗址,那一路上的景色是丰富美的,有过一场雨的润泽后让任何显示更美了,兵马俑一号坑是面积最大的,可看出实物才认为这样多年本人都是被教科书和电视机给骗了,我向来没看出来有如何气势磅礴,很多陶俑都已碎掉,是新兴一点点粘上的,而那个木制的马车和兵器木把早已腐朽的找不到痕迹,参观完兵马俑和秦始帝皇陵真是让我长见识了,讲解员说他不是一位暴君,而是一位伟人的暴君!当时的社会气象必须求用强硬的一手来治理,他联合六国后所面临的难点是那几个多的,而这几个难题也急需些至极手段,他联合六国,统一文字,统一货币,这个都为当今的中华奠定了根深蒂固的基本功,很心痛他只活到50多岁,他就此要为自己建造庞大的不合规皇陵是因为她以为与世长辞不是终点,而是一个进程,他要在不合法继续享福,有本事打下一个朝代,那享受也是理所当然的,说他暴政,其实也不然,他如若实在没有人性,那么大家后天看来的就不是伫立在那的一个个陶俑,而是一堆堆的残骸,就算他死后也有妃子和民工为其陪葬,但自己现在总的来说,那所有并可是分,当之无愧的千古一帝。

帧内预测

人眼对图象都有一个识别度,对低频的亮度很灵巧,对屡次的亮度不太灵敏。所以依照一些商量,可以将一幅图像中人眼不敏感的数目去除掉。那样就提议了帧内预测技术。

H264的帧内压缩与JPEG很相像。一幅图像被剪切好宏块后,对种种宏块可以举行 9
种情势的揣测。找出与原图最相近的一种预测格局。

上面这幅图是对整幅图中的每个宏块举办展望的进度。

帧内预测后的图像与原本图像的自查自纠如下:

下一场,将本来图像与帧内预测后的图像相减得残差值。

再将大家事先获得的展望方式音信一起保存起来,那样大家就足以在解码时回涨原图了。效果如下:

由此帧内与帧间的削减后,即使数额有大幅回落,但还有优化的空间。

 
 我所观察的那几个城市的欠缺,那就是晚上的路灯,实在是太暗,而且有过多是不亮的,我不知底设计者是或不是就为了那种朦朦胧胧的感觉到,所以才会这么,但自己依旧觉得照旧亮点好,要不然夜景真没什么赏心悦目的。上午七点多,在青旅打了会台球,实在没意思,于是就打算出去坐公交看看夜景,306路双层巴士,坐在上层靠窗的职责,居高临下,看那一个匆匆忙忙赶路的车和人,从起源坐到终点,看着外面的风光,听着外面的响动,尽情的感受着那座城池的魅力,从巅峰坐到起源,仍旧坐在上层靠窗的职分,戴上动铁耳机,来点慢节奏的音乐,把声音调大一部分,大到听不到除音乐以外的声响,看着窗外匆匆而过的成套,什么都不想,只沉浸在音乐中,那样何尝不是一种浪漫?!

对残差数据做DCT

可以将残差数据做整数离散余弦变换,去掉数据的相关性,进一步缩减数量。如下图所示,左边为原数据的宏块,左侧为总结出的残差数据的宏块。

将残差数据宏块数字化后如下图所示:

将残差数据宏块进行 DCT 转换。

去掉相关联的数码后,我们可以看到数据被进一步压缩了。

做完 DCT 后,还不够,还要举办 CABAC 举行无损压缩。

 
 在沈阳的回民街,我吃到了正宗的肉夹馍和羊肉泡馍,可我觉得最鲜美的是在秦始皇陵买个尤其烤地瓜,黄土地里生长出来的事物,味道真是没的说!
   
 都说鼓楼是古镇埃德蒙顿最合适的地标,可看完将来真的没什么好的,让自身打动的是里面钟鼓乐的演艺,中国文化的博雅从那里演绎的淋漓,钟楼的夜景还不易,晕黄的灯光在体现着另一种美,钟楼所作为商洛市的中坚位置,她所对应的四条道路非常宽阔,也非凡繁忙,所要经过的车辆匆匆忙忙,而经过的那多少人却是悠然自得,他们走走停停,在他们感兴趣的地点驻足,而让我停留下来的,是背靠钟楼,面向开元商城的多个小青年,一个打手鼓,一个弹着吉他唱着歌,他们在表演,我不认为是卖唱,即使他们后边摆着琴盒,就算有人往里面“扔”钱,可自我依旧把它作为是演唱会,七个怀抱音乐梦想的年轻人,在向陌生人诉说着他们的指望,而他们的歌声,根本不亚于那一个所谓的歌唱家,他们是人流中最亮的点滴,梦想的光环在炫耀着她们。本来我是想往他们琴盒里“放”一元的,可我所听的第三首歌竟是郝云的《活着》
,让本来要挪步离开的自我又停下来,这是自己卓殊欣赏的一首歌,就算她们的曲调和郝云唱的有些不一致,可在他们的响声里,我如同我听到了越来越多的事物,他们是在用别的一种当时向大家演绎着所谓的指望和求实,他们是让自身羡慕的,因为自身也期盼能有一天和他们一致,弹着吉他唱着歌,不为其余,只为感受那种美好,离开的时候,我往他们的琴盒里放了五元钱,看演唱会总是要领票的,何况是如此美丽的上演,他们在做着自我想做却又没做的事,感谢那四个小青年

CABAC

下面的帧内压缩是属于有损压缩技术。也就是说图像被缩减后,无法完全复苏。而CABAC属于无损压缩技术。

无损压缩技术我们最熟习的或许就是哈夫曼编码了,给高频的词一个短码,给低频词一个长码从而落成数据压缩的目的。MPEG-2中动用的VLC就是那种算法,大家以
A-Z 作为例子,A属于高频数据,Z属于低频数据。看看它是怎么着做的。

CABAC也是给高频数据短码,给低频数据长码。同时还会按照上下文相关性举办压缩,那种方法又比VLC高效很多。其意义如下:

近日将 A-Z 换成视频帧,它就成了上面的指南。

从地点那张图中明确可以见到选取 CACBA 的无损压缩方案要比 VLC 高效的多。

     4月20号

小结

迄今为止,大家就将H264的编码原理讲完了。本篇文章紧要讲了以下以点内容:

  1. 简音介绍了H264中的一些基本概念。如I/P/B帧, GOP。
  2. 详尽讲解了H264编码的基本原理,包涵:
  • 宏块的细分
  • 图像分组
  • 帧内压缩技术原理
  • 帧间缩减技术原理。
  • DCT
  • CABAC压缩原理。

期望以上内容能对你拥有协理。谢谢!

 
 这几天就住在城墙边的私塾青年饭馆里,一家这一个棒的青旅。晚上九点多就醒了,明日从未有过布署,因为12点事先要退房,想再睡一觉到11点再起来,可睡不着,刷了一时辰的和讯,11点起床洗漱收拾东西,办理完退房手续,买了些明信片,然后坐在3号庭院的沙发上挨到一点多,可肚子在对抗,背着包走吧,走了一站路到达钟楼附近,进了家面馆,味千炒面,我要了最有利的,还要25元,量就那么一些,而且店里的餐巾纸是收费的!奸商!现在自我正坐在这家店里写着日志!

                                           二〇一五年2月于西安

                                                 我是sl姚想未来

图片 2