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编码器缓存中的所有图片展开分组了。

 
在自个儿的印象里,罗利作为西南的一局地,是相比较粗旷干旱的,因为中学地理里的黄土高原七个字实在是太深切人心了,假设不是路径部署第一站是斯科普里最合适我是不会来那边的,我也从未想过要到博洛尼亚来,因为本人恐惧一刮风就像圣克鲁斯那样满天的尘土,在坐火车来的旅途我尚未阅览这些所谓的土地荒漠化,一座座山头和岭上都被草木覆盖着,正值青春,一切都来得那么有精力,有种在身在西北的错觉。
   
不知是万幸照旧不幸,我在的那两日Charlotte都在降水,下下停停,秋分让那么些古镇的成套都来得那么年轻,没有高温,没有风沙,有点湿润,舒服极了。那座城池让自个儿最奇怪的是她的绿化面积,我一贯认为毕节的城市绿化面积就够大了,可那里,让自个儿实在的看看了什么样是大面积的绿化带,在我眼里,那座城市可以毫无被叫做西南干旱地区了,埃德蒙顿的景气,同样也尚无让自家想到,南梁化学纤维之路的源点,果真是不容小觑.

帧分组

对此视频数据主要有两类数据冗余,一类是岁月上的多少冗余,另一类是空中上的多寡冗余。其中时间上的多寡冗余是最大的。上面大家就先来说说视频数据时间上的冗余难题。

为啥说时间上的冗余是最大的啊?假诺摄像头每秒抓取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 进行无损压缩。

 
 在布里Stowe的回民街,我吃到了正宗的肉夹馍和羊肉泡馍,可自我认为最可口的是在秦始帝王陵买个卓殊烤地瓜,黄土地里生长出来的事物,味道真是没的说!
   
 都说钟楼是古科长沙最合适的地标,可看完之后真的没什么好的,让自身触动的是里面钟鼓乐的表演,中国文化的满腹经纶从此间演绎的淋漓,钟楼的曙色还不易,晕黄的灯光在浮现着另一种美,钟楼所作为咸阳市的主旨地方,她所对应的四条道路分外宽阔,也要命繁忙,所要经过的车子匆匆忙忙,而由此的那一个人却是悠然自得,他们走走停停,在他们感兴趣的地点驻足,而让自家停留下来的,是背靠钟楼,面向开元商城的八个青年,一个打手鼓,一个弹着吉他唱着歌,他们在演出,我不觉得是卖唱,尽管她们面前摆着琴盒,即便有人往里面“扔”钱,可自我依旧把它看作是演唱会,多少个怀抱音乐梦想的青少年,在向外人诉说着他们的期待,而她们的歌声,根本不亚于那一个所谓的歌唱家,他们是人群中最亮的蝇头,梦想的光环在炫耀着他们。本来我是想往他们琴盒里“放”一元的,可我所听的第三首歌竟是郝云的《活着》
,让本来要挪步离开的自我又停下来,那是我相当欣赏的一首歌,固然他们的曲调和郝云唱的有点不雷同,可在她们的音响里,我就像我听见了越多的东西,他们是在用此外一种当时向大家演绎着所谓的梦想和现实,他们是让自家羡慕的,因为我也渴望能有一天和他们一如既往,弹着吉他唱着歌,不为其余,只为感受那种美好,离开的时候,我往他们的琴盒里放了五元钱,看演唱会总是要取票的,何况是如此美丽的上演,他们在做着自家想做却又没做的事,多谢那多个青少年

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元,量就那么一些,而且店里的餐巾纸是收费的!奸商!现在自家正坐在这家店里写着日志!

                                           二〇一五年十一月于纽伦堡

                                                 我是sl姚想以后

图片 2