H264编码原理详解

前 言

  • 在日常生活中我们知道,电脑中的视频文件先要通过视频采集设备对物体进行采集,然后通过编码核心部件得到mp4,rmvb等格式进行保存。有没有可能不经过上述核心编码部件采集之后直接进行显示呢?
    答案是可以的。
    那为什么还要进行编码呢?答案是原始采集到的视频数据为YUV格式,这种格式不经过处理的话特别大,对于网络传输和永久保存非常不利,为了解决这个问题,就需要对原原始的视频数据进行压缩处理。而H264则是目前一种流传广泛,成熟的视频压缩算法。
  • 先来看一个例子
    在学习H.264编码之前,我们先了解一下在手机相机拍摄视频的过程,如果Camera采集的YUV图像不做任何处理进行传输,那么每秒钟需要传输的数据量是多少?Camera采集的YUV图像通常为YUV420,根据YUV420的采样结构,YUV图像中的一个像素中Y、U、V分量所占比例为1:1/4:1/4,而一个Y分量占1个字节,也就是说对于YUV图像,它的一个像素的大小为(1+1/4+1/4)Y=3/2个字节。如果直播时的帧率设置为30fps,当分辨率为1280x720,那么每秒需要传输的数据量为1280720(像素)30(帧)3/2(字节)=39.5MB;当分辨率为1920x720,那么每秒需要传输的数据量接近60MB,这对于手机的存储空间有很大考验,因此,我们就必须在拍摄形成视频文件保存在本地之前对采集的视频数据进行压缩编码。

H26X简介

H261

  • 目前国际上制定视频编解码技术的组织有两个,一个是“国际电联(ITU-T)”,它制定的标准有H.261、H.263、H.263+等,另一个是“国际标准化组织(ISO)”它制定的标准有MPEG-1、MPEG-2、MPEG-4等。
  • H.261是1990年ITU-T制定的一个视频编码标准,属于视频编解码器。设计的目的是能够在带宽为64kbps的倍数的综合业务数字网(ISDN for Integrated Services Digital Network)上质量可接受的视频信号。编码程序设计的码率是能够在40kbps到2Mbps之间工作,能够对CIF和QCIF分辨率的视频进行编码,即亮度分辨率分别是352x288和176x144,色度采用4:2:0采样,分辨率分别是176x144和88x72。在1994年的时候,H.261使用向后兼容的技巧加入了一个能够发送分辨率为704x576的静止图像的技术。
  • H.261是第一个实用的数字视频编码标准。H.261的设计相当成功,之后的视频编码国际标准基本上都是基于H.261相同的设计框架,包括MPEG-1, MPEG-2/H.262, H.263, 甚至 H.264。同样,H.261开发委员会的基本的运作方式也被之后的视频编码标准开发组织所继承。H.261使用了混合编码框架,包括了基于运动补偿的帧间预测,基于离散余弦变换的空域变换编码,量化,zig-zag扫描和熵编码。
  • H.261编码时基本的操作单位称为宏块。H.261使用YCbCr颜色空间,并采用4:2:0色度抽样,每个宏块包括16x16的亮度抽样值和两个相应的8x8的色度抽样值。 H.261使用帧间预测来消除空域冗余,并使用了运动矢量来进行运动补偿。变换编码部分使用了一个8x8的离散余弦变换来消除空域的冗余,然后对变换后的系数进行阶梯量化(这一步是有损压缩),之后对量化后的变换系数进行Zig-zag扫描,并进行熵编码(使用Run-Level变长编码)来消除统计冗余。
  • 实际上H.261标准仅仅规定了如何进行视频的解码(后继的各个视频编码标准也继承了这种做法)。这样的话,实际上开发者在编码器的设计上拥有相当的自由来设计编码算法,只要他们的编码器产生的码流能够被所有按照H.261规范制造的解码器解码就可以了。编码器可以按照自己的需要对输入的视频进行任何预处理,解码器也有自由对输出的视频在显示之前进行任何后处理。去块效应滤波器是一个有效的后处理技术,它能明显的减轻因为使用分块运动补偿编码造成的块效应(马赛克)--在观看低码率视频(例如网站上的视频新闻)的时候我们都会注意到这种讨厌的效应。因此,在之后的视频编码标准如H.264中就把去块效应滤波器加为标准的一部分(即使在使用H.264的时候,再完成解码后再增加一个标准外的去块效应滤波器也能提高主观视频质量)。
  • 后来的视频编码标准都可以说是在H.261的基础上进行逐步改进,引入新功能得到的。现在的视频编码标准比起H.261来在各性能方面都有了很大的提高,这使得H.261成为了过时的标准,除了在一些视频会议系统和网络视频中为了向后兼容还支持H.261,已经基本上看不到使用H.261的产品了。但是这并不妨碍H.261成为视频编码领域一个重要的里程碑式的标准。

H262

  • H.262 是ITU-T的一个数字视频编码标准,属于视频编解码器。H.262在技术内容上和ISO/IEC的MPEG-2视频标准(正式名称是ISO/IEC 13818-2)一致。H.262是由ITU-T的VCEG组织和ISO/IEC的MPEG组织联合制定的,所以制定完成后分别成为了两个组织的标准,正式名称是"ITU-T建议H.262"和"ISO/IEC 13818-2"。这两个标准在所有的文字叙述上都是相同的(也许除了封面和标价之外)。

H263

  • H.263是由ITU-T制定的视频会议用的低码率视频编码标准,属于视频编解码器。H.263最初设计为基于H.324的系统进行传输(即基于公共交换电话网和其它基于电路交换的网络进行视频会议和视频电话)。后来发现H.263也可以成功的应用与H.323(基于RTP/IP网络的视频会议系统),H.320(基于综合业务数字网的视频会议系统),RTSP(流式媒体传输系统)和SIP(基于因特网的视频会议)。
    基于之前的视频编码国际标准(H.261,MPEG-1和H.262/MPEG-2),H.263的性能有了革命性的提高。它的第一版于1995年完成,在所有码率下都优于之前的H.261。之后还有在1998年增加了新的功能的第二版H.263+,或者叫H.263v2,以及在2000年完成的第三版H.263++,即H.263v3。
  • H.263v2 (通常也叫做H.263+或者1998年版H.263)是ITU-T H.263 视频编码标准第二版的非正式名称。 它保持了原先版本H.263的所有技术,但是通过增加了几个附录显着的提高了编码效率并提供了其它的一些能力,例如增强了抵抗传输通道的数据丢失的能力(Robustness)。

MPEGX系列标准

  • MPEG-1标准视频编码部分的基本方法法与H.261/ H.263相似,也采用运动补偿的帧间预测、二维DCT、VLC游程编码等措施。此外还引入了帧内帧(I)、预测帧(P)、双向预测帧(B)和直流帧(D)等概念,进一步提高了编码效率。在MPEG-1的基础上,MPEG-2标准在提高图像分辨率、兼容数字电视等方面做了一些改进,例如它的运动适量的精度为半像素;在编码运算中(如运动估计和DCT)区分“帧”和“场”;引入了编码的可分级性技术,如空间可分级性、时间可分级性和信噪比可分级性等。近年推出的MPEG-4标准引入了基于视听对象(AVO:Audio-Visual Object)的编码,大大提高了视频通信的交互能力和编码效率。MPEG-4中还采用了一些新的技术,如形状编码、自适应DCT、任意开头视频对象编码等。但是MPEG-4的基本视频编码器还属于和3相似的一类混合编码器。

3 H.264标准

  • H.264则是由两个组织联合组建的联合视频组(JVT)共同制定的新数字视频编码标准,所以它既是ITU-T的H.264,又是ISO/IEC的MPEG-4高级视频编码(Advanced Video Coding,AVC),而且它将成为MPEG-4标准的第10部分。因此,不论是MPEG-4 AVC、MPEG-4 Part 10,还是ISO/IEC 14496-10,都是指H.264。
    从视频标准的发展来看,H.264作为国际两大标准组织确定的共同标准,全面覆盖了视频通信、广播、存储等各方面的应用,采用H264的视频标准协议的会议电视系统是是合理的选择。采用H264编码协议的优势:
  • 不同大小和形状的宏块分割:H.264支持7种模式。最小可达4×4的小块模式的运动补偿为运动详细信息的处理提高了性能,减少了方块效应,提高了图像的质量。
  • 高精度的亚像素运动补偿:在H.263中采用的是半像素精度的运动估计,而在H.264中可以采用1/4或者1/8像素精度的运动估值。运动估计后的残差小。
  • 多帧预测:H.264提供可选的多帧预测功能,在帧间编码时,可选5个不同的参考帧,提供了更好的纠错性能,这样更可以改善视频图像质量。
  • 去块滤波器:H.264定义了自适应去除块效应的滤波器,这可以处理预测环路中的水平和垂直块边缘,大大减少了方块效应。
  • 4×4块的整数变换:由于用二变换块的尺寸缩小,运动物体的划分更精确,这样,不但变换计算量比较小,而且在运动物体边缘处的衔接误疾差也大为减小;
  • 先进的量化方法:与H.263等的固定常数量化步长不同,H.264步长是以12.5%的复合率递进的,并对色度系数采用了较小量化步长。这些措施提高了码率控制的能力,并加强了彩色的逼真性。
    以下是各种算法的比较:


    H264编码原理详解_第1张图片
    image.png
  • 可以看出,在图像编解码效率上,H.264算法最为领先,MPEG-4和H.263算法基本相同,MPEG-2算法效率最低,但是当图像质量要求达到了一定的程度时,对带宽的要求趋向归一化,即在高带宽(6M和以上)时,各种编码算法提供的图像质量趋同。

H.264算法的局限性

  • 随着近年来传统的标清视频向720P、1080P的高清视频全面升级。在高清视频快速发展下,H.264技术逐渐暴露了一些局限性。
  • 首先,由于分辨率的大大增加,单个宏块所表示的图像内容信息大大减少,H.264所采用的4×4或8×8宏块经过整数变换后,低频系数相似程度也大大提高,出现大量冗余,导致H.264编码对高清视频的压缩效率明显降低;
  • 其次,H264算法宏块个数的爆发式增长,会导致每个编码宏块的预测模式、运动矢量、参考帧索引和量化级等宏块级参数信息占用更多码流资源,在有限带宽中,分配给真正描述图像内容的残差系数信息的可用带宽明显减少了;由于分辨率的提高,表示同一个运动的运动矢量幅值也将大大增加,H.264中采用基于空间域的运动矢量预测方式,对运动矢量差编码使用的是哥伦布指数编码,该编码方式的特点是数值越大使用的比特数越多,因此,随着运动矢量幅值的大幅增加,H264中用来对运动矢量进行预测以及编码的压缩率也将逐渐降低;
  • 最后,H.264的一些关键算法都要求串行编码,并行度比较低,针对GPU/DSP/FPGA/ASIC等并行化程度非常高的CPU,H.264的这种串行化处理越来越成为制约运算性能的瓶颈。

H.265的特点

  • 基于上述原因,由MPEG和VCEG组成的国际数字视频压缩标准组织JVT在2005年已经启动了下一代数字视频压缩标准H.265的规划,经过这几年的发展,已经取得了阶段性的成果和技术提升。
  • 更大的宏块和变换块。相对于H.264的4×4、8×8、16×16宏块类型,H.265引入了32×32、64×64甚至于128×128 的宏块,目的在于减少高清数字视频的宏块个数,减少用于描述宏块内容的参数信息,同时整形变换块大小也相应扩大,用于减少H.264中变换相邻块问的相似系数。
  • 使用新的MV(运动矢量)预测方式。区别于H.264基于空间域的运动矢量预测方式,H.265扩充更加多的方向进行帧内预测,同时将预测块的集合由原来的空间域扩展到时间域及空时混合域,通过率失真准则计算后选择最佳的预测块。使用该方法,在基本模式下测试,在与H.264相同质量的情况下,得到平均为6.1%的压缩增益,复杂图像的压缩增益甚至能提高到20%。
  • 更多的考虑并行化设计。当前芯片架构已经从单核性能逐渐往多核并行方向发展,H.265引入了Entropy slice、WPP 等并行运算思路,使用并行度更高的编码算法,更有利于H.265在GPU/DSP/FPGA/ASIC等并行化程度非常高的CPU中快速高效的实现产业化。
  • 反复的质量比较测试已经表明,在相同的图象质量下,相比于H.264,通过H.265编码的视频大小将减少大约39-44%。由于质量控制的测定方法不同,这个数据也会有相应的变化。
  • 通过主观视觉测试得出的数据显示,在码率减少51-74%的情况下,H.265编码视频的质量还能与H.264编码视频近似甚至更好,其本质上说是比预期的信噪比(PSNR)要好。
  • H.265标准也同时支持4K(4096×2160)和8K(8192×4320)超高清视频。可以说,H.265标准让网络视频跟上了显示屏“高分辨率化”的脚步。在对网络的适应性方面H.265可很好运行在Internet等复杂网络条件下。 同样的内容,H.265可以减少70-80%的带宽消耗。这就可以在现有带宽条件下轻松支持全高清1080p广播。从长远角度看,H.265标准将会成为超高清电视(UHDTV)的4K和8K分辨率的选择。

YUV数据介绍

  • YUV 是一种彩色编码系统,主要用在视频、图形处理流水线中(pipeline)。相对于 RGB 颜色空间,设计 YUV 的目的就是为了编码、传输的方便,减少带宽占用和信息出错。
  • YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间。其中的Y,U,V几个字母不是英文单词的组合词,Y代表亮度,uv代表色差,u和v是构成彩色的两个分量。在现代彩色电视系统中,通常采用三管彩色摄影机或彩色CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y(即U)、B-Y(即V),最后发送端将亮度和色差三个信号分别进行编码,用同一信道发送出去。这种色彩的表示方法就是所谓的YUV色彩空间表示。采用YUV色彩空间的重要性是它的亮度信号Y和色度信号U、V是分离的。如果只有 Y信号分量而没有U、V信号分量,那么这样表示的图像就是黑白灰度图像。彩色电视采用YUV空间正是为了用亮度信号Y解决彩色电视机与黑白电视机的相容问题,使黑白电视机也能接收彩色电视信号
  • Y’UV、YUV、YCbCr、YPbPr 几个概念其实是一回事儿。由于历史关系,Y’UV、YUV 主要是用在彩色电视中,用于模拟信号表示。YCbCr 是用在数字视频、图像的压缩和传输,如 MPEG、JPEG。今天大家所讲的 YUV 其实就是指 YCbCr。Y 表示亮度(luma),CbCr 表示色度(chroma)。

YUV采样简介

  • 我们常用的采样比率分为三种。分别是4:4:4(YUV444)、4:2:2(YUV422)、4:2:0(YUV420)
  • 4:2:0格式是色度水平和垂直方向都是亮度的一半。


    H264编码原理详解_第2张图片
    image.png
  • 4:4:4格式是色度和亮度在水平和垂直方向都是一样的。


    H264编码原理详解_第3张图片
    4:4:4

    4:2:2格式是色度水平方向上是亮度的一半,垂直方向相同。


    H264编码原理详解_第4张图片
    4:2:2

YUV存储方式

你可能感兴趣的:(H264编码原理详解)