购物网站后台设计,站长如何做视频类网站,软件开发培训技术学校,自己怎么制作企业网站一、像素块预测
H.264/ AVC标准中的基本预测技术是基于块#xff0c;而不是基于对象的。它的编码器是利用混合的编码方案来提高编码效率#xff0c;这些方案包括高级的预测技术和有效熵编码技术。在运动预测中它使用不同的块的大小进行预测#xff0c;以树结构的方式来组织…一、像素块预测
H.264/ AVC标准中的基本预测技术是基于块而不是基于对象的。它的编码器是利用混合的编码方案来提高编码效率这些方案包括高级的预测技术和有效熵编码技术。在运动预测中它使用不同的块的大小进行预测以树结构的方式来组织预测模式。其主要的特点也包含在多参考帧预测方式和通用B帧的概念上。H.264像素块预测编码包括帧内块预测和帧间块预测而帧内块预测在H.264中占有极重要的地位。在图像信号压缩编码中由于亮度信号和色差信号是分别进行处理的因此预测又可分亮度信号预测和色差信号预测。下面就两种不同预测方式分别加以讨论。
1. 帧内预测
在H.264/AVC中采用的预测编码方法与在14496-2标准的MPEG-4视频编码规范不同帧内预测是在变换编码之前进行的。在 H.264/AVC标准的帧内预测中当前块的抽样值总是利用邻块的抽样值来获取。这样也许会因为在相邻的帧间编码的宏块的运动补偿误差而引起图像误差的扩散。因此在图像编码过程中还有一种限制帧内编码模式此时只允许相邻的帧内预测宏块为已知才可以作为其他当前宏块的参考宏块。
H.264根据相邻像素可能有相同的性质利用相邻像素的相关性采用了新的帧内Intra预测模式。通过当前像素块的左边和上边的像素已编码重建的像素进行预测。只对实际值和预测值的差值进行编码这样就能用较少的比特数来表达帧内编码的像素块信息。在H.264标准中亮度块可以有9种4×4块和4种16×16块的帧内预测模式而色度8×8块的4种模式与亮度的4种16×16块的模式相同。对于每个4×4块除了边缘块特别处置以外每个像素都可用17个最接近的先前已编码的像素的不同加权和有的权值可为0来预测即此像素所在块的左上角的17个像素。显然这种帧内预测不是在时间上而是在空间域上进行的预测编码算法可以除去相邻块之间的空间冗余度取得更为有效的压缩。如图1所示4×4方块中a、b、…、p 为16个待预测的像素点而A、B、…、P是已编码的像素。按照所选取的预测参考的点不同亮度共有9类不同的模式但色度的帧内预测只有1类模式。
4×4帧内预测方法用于对图像细节部分进行编码它的基本思路是从不同的方向计算、比较块中各个像素之间的亮度差值即梯度值。通过选择具有最小预测误差的方向作为最佳的预测方向。下面对其中的预测模式举例说明。如图1所示其中4×4块中16个抽样值ap是由先前解码邻近宏块抽样值AQ利用各种预测模式预测得来。这种预测模式共有8个方向加上各像素作平均计算共9种模式。
2. 4×4帧内预测模式编码过程
每个4×4块的帧内预测模式的选择一定会告知解码器这可能需要很多比特。然而附近的4×4块的帧内模式是非常相关的。举例来说如果图 2里的先前编码的4×4块A和B是使用模式2预测的块C当前块的最佳模式很有可能也是模式2。对于每个当前块C编码器和解码器计算最合适的模式 most_probable_mode。如果A和C都在4×4帧内模式中编码且都在当前的slice层中最合适的模式most_probable_mode是A和C预测模式的最小量否则most_probable_mode 被设定成模式2直流预测。
编码器为每个4×4块发送一个flag标志使用最合适的模式use_most_probable_mode。如果flag是“1”采用参数most_probable_mode。如果flag是“0”发送另外的一个参数remaining_mode_selector来指出模式变化。如果remaining_mode_selector比当前的most_probable_mode小那么预测模式被设定为 remaining_mode_selector否则预测模式被设定为 remaining_mode_selector1。这样remaining_mode_selector只需用8个数值0到7表示目前的帧内模式0到8。
3. 亮度信号16×16帧内预测
16×16预测方式是基于在16×16块的基础上用于对图像中的相对不变的部分进行编码。它只有四种预测方式分别为垂直预测方式、水平预测方式直流预测方式和平面预测方式。用一个4×4亮度分量的可选模式可预测一个宏块的整个16×16亮度分量有4种模式。
模式0垂直预测由上面的抽样值插补H
模式1水平预测由左边的抽样值插补V
模式2直流预测由上面的和左侧的抽样值平均数插补HV
模式4平面预测由上面的和左侧的抽样值插补。
线性“平面”可设置由上面和左侧的抽样值H和V插补 这在平滑的亮度区域效果较好。
4. 色度信号的帧内预测
一个宏块的每个8×8色度分量借助于上面的和左面的已被编码、重建的色度分量抽样值进行预测。由于色度在图像中是相对平坦的其预测方法与 16×16亮度信号帧内预测相似方式进行。因此也有四种帧内预测模式垂直预测模式0水平预测模式1直流预测模式2和平面预测模式 3。
5. 帧间预测
帧间预测是利用先前已编码帧的图像作为参考图像对当前图像进行预测的一种方式。它把参考图像的抽样点通过运动矢量的补偿作为当前图像抽样值的参考值。H.264/AVC标准中使用了从H.261标准以来主要标准中使用的块结构运动补偿。然而它与早期标准最大区别在于①支持多种块结构的预测②运算精度能精确到1/4像素。
在H.264/AVC标准中还使用了H.263标准中曾使用过的多帧预测的方法主要思想是增加运动矢量中时间轴的估计参考帧数。在宏块的级别上允许选择一个或几个前面视频帧作为参考帧。用于运动补偿的多帧预测方式在大多数情况下会明显改善预测增益。
下面我们就以在两种不同类型的片slice中使用的帧间预测方式进行讨论。在说明它们之前我们首先介绍树结构的运动补偿其中主要简述了宏块的分块。
帧间预测用于降低图像的时域相关性通过采用多帧参考和更小运动预测区域等方法对下一帧精确预测从而减少传输的数据量。每个亮度宏块被划分成形状不等的区域作为运动描述区域。如图4所示其划分方法有16×1616×88×168×8 共4种。当选用8×8方式时可以进一步划分成8×88×44×8和4×4共4个子区域。每个区域包含自己的运动向量每个运动向量和区域选取信息必须通过编码传输。因此当选用较大区域时用于表示运动向量和区域选取的数据量减少但运动补偿后的残差会增大当选用小区域时残差减少预测更精确但用于表示运动向量和区域选取的数据量增大。大区域适合反映帧间同质部分小区域适合表现帧间的细节部分。
在H.264中运动预测的精度也有所改进对QCIF144×176像素格式的图像使用1/4像素精度对CIF288× 352 像素格式的图像使用1/8 像素精度。其中1/4 像素插值是先使用一个6抽头滤波器进行水平和垂直滤波得到半像素插值点然后对其进行线性插值而1/8 像素插值是直接使用一个8抽头滤波器进行水平和垂直滤波。
在帧内编码模式下H.264 对空间系数进行双向预测而不是对变换后的系数进行预测见H.263的先进帧内预测模式。另外与H.263的附录N类似H.264支持参考帧可选模式即在编码后续图像时可以从编码缓存中选择使用前面的参考帧多于一帧进行运动估值。
H.264 除了支持I 帧、P 帧和B 帧外还提出了一种新的图像类型SP 帧SP帧也是预测编码帧根据需要可以改变用于该帧预测的图像。SP帧可用于信道速率的改变、视频比特流的切换和码流随机接入等操作在时变无线信道上的视频通信和流媒体传输中有广泛的应用前景。
二、运动补偿
1. 树结构的运动补偿
H.264采用了不同大小和形状的宏块分割与亚分割的方法。一个宏块的16×16亮度值可以按照16×16、16×8、8×16或8×8进行分割而如果选择了8×8分割还可以按照8×8、8×4、4×8或4×4进行亚分割如图5所示。这些宏块分割与亚分割的方法将会使得每个宏块中包含有许多不同大小块。利用各种大小的块进行运动补偿的方法我们将称为树结构的运动补偿tree structured motion compensation。宏块分割与亚分割所产生的每一个亮度块都有自己独立的运动矢量。对于宏块中色度值分割方法是和亮度一样的但是由于 4∶2∶0采样的关系色度分割块的大小是亮度分割块的一半而且当色度块在利用运动矢量时必须要将它各个分量除以2。其次H.264可以达到1/4 像素的运动精度这是通过利用整像素点的亮度值进行内插得到的。内插过程先是通过6抽头的滤波器来获得半像素精度然后用线性滤波器来获得1/4像素的精度。又由于4∶2∶0采样的关系色度的运动精度就达到1/8像素这也是通过线性滤波器插值得到的。由于运动矢量之间也有一定的相关性所以H.264 就利用已经编码块的运动矢量对当前未编码块的运动矢量进行预测最后只需要编码和传输实际运动矢量与预测值的差值即可。
再次H.264还可以采用多参考图像最多前向和后向各5帧来进行运动预测这样可以对周期性运动平移封闭运动和不断在两个场景间切换的视频流有效果非常好的运动预测。使用了多参考图像H.264不仅能够提高编码效率同时也能实现更好的码流误码恢复但需要增加额外的时延和存储容量。
最后H.264也在B图像中利用后向运动预测这和以前的标准是一致的但不同的是B图像通过加权也能作为其他图像的参考图像。
在H.264/AVC标准中获得运动补偿的块结构大小不再局限于在宏块的基础上可以从宏块的分块或子分块中获取运动矢量。
每个运动矢量都将会被编码、传送另外分块方式也必须被编码在数据流中。选择大的分块方式16×16、16×8或8×16也许只需要传送很少的比特用于说明运动矢量和分块方式但是运动补偿后抽样点差值也许将会比较大。选择小的分块方式8×4或4×4也许能得到很小运动补偿后抽样点差值但是要花费很多比特去传输运动矢量和分块方式。因此对于分块的选择将会对压缩效果有着重大的影响。通常大的分块方式用于帧内均匀的部分而小的分块方式将有利于图像中细节描述每个色度块将按照亮度的分块方式进行分块。由于宏块中色度分辨率是亮度分辨率的一半因此色度块的大小不管在水平还是垂直方向上都只是亮度块的一半。同时色度块上垂直运动向量和水平运动向量也只是亮度块的一半。
2. 在P类型片中的帧间预测
以往一般的视频压缩的最高运动估计精度为半像素half pixel比如在14496-2标准即MPEG-4视频编码部分中的基本补偿技术就是采用半像素精度采用的内插方法也是简单的双线性内插法其补偿的质量也是相对于较低的。与上述不同的是在H.264/AVC标准中的运动估计精度要求达到1/4quarter pixel精度。
在H.264/AVC标准中对于P类型的片编码时可以采用多帧运动补偿预测也就是超过一个先前编码帧可作为当前帧运动补偿的参考帧。
多帧预测需要解码器和编码器在缓冲中存贮多帧图像作为参考帧。解码器则利用比特流中参数设置信息内存管理控制操作memory management control operation去复制编码器相同的多帧缓冲。同时对于每个运动补偿的16×16、16×8、8×16或8×8块及其子块需传送参考索引参数用于确定该块或子块参考帧在缓存中的位置。P类型片预测方式是与宏块中块相对应的也即是与前面所介绍宏块中分块相对的。在P类型片中预测模式不仅仅只有表中所描述6种类型还可以包括帧内预测模式。另外对于P_8×8类型预测方式它是对应于8×8块的预测还可以有子分块上预测模式。
对于P帧中不同预测模式分类可见JM中函数interpret_mb_mode_P在其中它把当前宏块的分块方式及其模式存入到 currMB数据结构中以便在函数readMotionInfoFromNAL获取当前块的运动矢量在 readCBPandCoeffsFromNAL函数中获得预测差值。
3. 在B类型的片中帧间预测
与先前图像编码标准相比在H.264/AVC标准中B类型片的概念得到推广最大特点是由B类型片所组成B帧可以作为其他图像的参考帧。 B类型片与P类型片最本质的区别是在B类型片中宏块或其子块的预测值是通过两个不同运动补偿值加权平均后取得的。B类型片使用两组不同参考图像分别为 list0前向参考图像集和list1后向参考图像集。
在B类型片中四组不同的宏块预测方式将支持下面四种模式①直接方式direct mode这种方式不需要传送运动矢量等附加信息side information。②单向预测方式inter mode只需传送1个宏块预测信息。③多假设预测方式multihypothesis mode需传送两个宏块预测信息。④帧内预测方式intra mode。下面我们分别具体介绍直接预测方式和多假设预测方式。
1直接预测方式direct mode
直接方式使用双向预测方式传送预测差值。这种方式前向和后向运动矢量mv0mv1是通过随后的参考图像RL1上公共确定宏块co-located macroblock的运动矢量mvc计算得到的。使用直接预测方式的宏块与公共确定宏块应具有相同的分块。
其中MV0为前向运动矢量MV1为后向运动矢量MVC代表着随后帧间图像公共确定块运动矢量。对于先前B帧概念而言TDD为当前帧前一帧与后一帧相差的时间。TDB为当前B帧图像与前一帧的时差。当使用多帧预测后这种概念发生变化。TDB为当前帧与其前向参考帧RL0之间的时差而TDD为前向参考帧RL0与后向参考帧RL1之间的时差。在H.264/AVC标准中直接预测方式因对预测信号进行混合加权运算比先前标准中使用平均加权方式得到改善。这种技术最适合音乐电视和电影结尾的使用它们通常是场景慢慢衰弱的。特别是在电影的结尾场景逐渐衰弱成黑幕。在先前标准中没有好的压缩方式这种情况很难编码。如果把这种现象编码成PBBB模式由于平均加权将使得第一和第三个B帧相对于周围的帧内、帧间帧及第二个B帧有较大的图像恶化而基于帧间相对距离的混合加权方式却可以大大改善。
其中c为当前B帧中宏块或块中抽样值cp为前向参考图像预测宏块或块中抽样值cs为后向参考图像预测宏块或块中抽样值。
2多假设预测方式multihypothesis mode
多假设预测方式需要叠加由两个运动矢量所预测两个宏块预测值。我们把每个块预测值称为假设hypotheses。最后预测块通过两个假设的运动矢量得到的预测值平均后得到。多假设预测与双向预测方式不同。双向预测方式只允许前后向预测对线性组合而成。见图8。而多假设预测方式取消这种限制它可以一个方向上预测对来获取最终的预测值。可以前向前向或后向后向进行预测。
当第一个假设来源于先前参考图像而第二个假设来源于后向参考图像时多假设预测方式也可以成为双向预测方式。