美文网首页
H264视频压缩

H264视频压缩

作者: 吕建雄 | 来源:发表于2019-05-14 15:20 被阅读0次

    关键点:

    1.划分宏块

    2.对所有图片进行分组

    3.帧内预测压缩

    4.帧间预测压缩

    5.DCT 数据离散余弦变换

    6.CABAC(无损压缩)

    一:帧间压缩(解决的是时间上的数据冗余)

    通过摄像头获取到视频帧(按每秒30帧),将视频帧传递到H264编码器的缓存区,然后将帧划分宏块,H264一般是将16*16的区域划分为一个宏。划分好宏后,计算宏块的像素值,(为提高效率,宏块继续可以划分为几个子块),再经过帧内压缩可以得到更高效的数据。

    对于视频数据主要有两类数据冗余。一类是时间上的数据冗余,一类是空间上的数据冗余;(时间上的数据冗余是最大的)

    宏划分好之后,可以对H264编码器缓冲中的所有图片进行分组了。

    对于关系特别密切的帧,其实只要保存第一帧的数据,其他帧的数据可以根据某种规律预测出来;为了预测需要将视频帧分组;

    算法:在相邻的几幅图像中,一般有差别的像素在10%以内,亮度差值在2%之内,色度差值在1%以内的,可以划分为一组。

    只保留第一帧数据(第一帧为IDR/I帧,其他为P/B帧,这样编码后的数据帧称为GoP)

    经过压缩后的帧分为:I帧,B帧,P帧 (两个I帧之间是一个GOP,每个GOP只包含一个I帧  如:I/B/B/B/P/B/B/B/P/B/B/B/ = GOP  )

    分组后计算帧组内物体的运动矢量了

    运动矢量(方向/数值),计算出运动矢量得到补偿数据;将补偿数据进行压缩保存,以后解码时就能恢复原图了

    二:帧内压缩

    人眼对低频的亮度比较敏感,对高频的亮度不敏感,所以可将一副图中的人眼不敏感的数据进去除掉

    H264帧内压缩与JPEG压缩很相似,一幅图划分好宏后,对每个宏进行9种预测,找到与原图最接近的一种预测模式。将原图与预测图进行相减,得到残差值。将预测图与残差值保存起来。以后解码的时候就能恢复原图了

    三:对残差值进行DCT

    对残差值进行数据离散余玹转化,去除数据相关性,进一步压缩数据

    四:CABAC

    给高频的数据短码,给低频的数据长码。同时还会根据数据的相关性进行压缩

    相关文章

      网友评论

          本文标题:H264视频压缩

          本文链接:https://www.haomeiwen.com/subject/rlvsaqtx.html