H264帧内预测模式编号的编码过程

1 本文词汇约定

  宏块:H264编码基本单元,16x16像素(或采样)构成

  块:   由8x8像素(或采样)构成的单位

  子块:   由4x4像素(或采样)构成的单位

  

2 帧内亮度预测模式

  H264规范中,宏块有4种帧内亮度预测模式,模式编号为0,1,2,3;块与子块分别有9种帧内亮度预测模式,模式编号从0至9,即0,1,2,.......,8。具体不细说了,可查H264标准。下文以子块为例说明其亮度预测模式如何编码进码流中的。

  

3 子块亮度预测模式编码的句法元素

  prev_intra4x4_pred_mode_flag:是否使用该子块的上左子块亮度预测模式编号的最小值,在计算出该子块的最佳亮度预测模式后,若基编号与该子块上左子块亮度预测模式编号的最小值相等,prev_intra4x4_pred_mode_flag为1,否则为0。

  rem_intra4x4_pred_mode:prev_intra4x4_pred_mode_flag为0时,指示计算出的该子块的最佳亮度预测模式编号或该子块的最佳亮度预测模式编号减1。

4 子块亮度预测模式编码的句法元素赋值的伪代码过程

  

  for( luma4x4BlkIdx=0; luma4x4BlkIdx<16; luma4x4BlkIdx++ ) {

    MinModeBetwennLeftAndUpSubBlock[luma4x4BlkIdx] = (如果左边子块或上边子块不可用,比如跨片片界或为非帧内编码模式) ? 2 : Min(MinModeOfLeftSubBlock,MinModeOfUpSubBlock);
    BestMode[luma4x4BlkIdx] = 计算子块的最佳亮度预测模式();
    if(BestMode[luma4x4BlkIdx]  == MinModeBetwennLeftAndUpSubBlock[luma4x4BlkIdx]) 
    {
      prev_intra4x4_pred_mode_flag[ luma4x4BlkIdx ] = 1;
    }  
    else
    {
      prev_intra4x4_pred_mode_flag[ luma4x4BlkIdx ] = 0;
    }

    if(!prev_intra4x4_pred_mode_flag[ luma4x4BlkIdx ])
    {
      if(BestMode[luma4x4BlkIdx]  < MinModeBetwennLeftAndUpSubBlock[luma4x4BlkIdx])
      {
        rem_intra4x4_pred_mode[ luma4x4BlkIdx ] = BestMode[luma4x4BlkIdx];
      }
      else
      {
        rem_intra4x4_pred_mode[ luma4x4BlkIdx ] = BestMode[luma4x4BlkIdx] - 1;//标注4
      }
    }
  }

5 为什么要计算MinModeBetwennLeftAndUpSubBlock

  每个4×4 块帧内亮度预测模式编号必须编码传给解码器以便解码。该信息可能需大量比特表示,但邻
  的帧内模式通常是相关的。例如,A、B 、E 分别为左边、上边和当前块,如果 A 和B 预测模式
  式1 ,E 的最佳预测模式很可能也为模式 1 。所以通常利用这种关联性编码 4×4 帧内亮度预测模式编号。

6 体会H264之博大精深  

  帧内亮度预测模式有9种,其编号为0,1,......,8,其范围上界(8)用2进制数表示需要4位,通过标注4可将rem_intra4x4_pred_mode的值的范围的上界限定为7,从而3位即可表达。少了一位,H264就是通过这样的巧妙设计达到提升编码效率的目的的。

  

  

时间: 2024-10-16 04:39:51

H264帧内预测模式编号的编码过程的相关文章

x264 亮度信号8x8帧内预测模式

1 该模式的8个预测方向与4x4帧内预测模式一样. 2 该模式只有High profile及更高的Profile的才有可能使用,Baseline.Main Profile.Preset为ultrafast时不支持,命令行参数为--8x8dct与--no-8x8dct控制是否使用,x264内部参数结构x264_param_t的成员b_transform_8x8的值控制是否使用. 1 x264_param_default函数中将b_transform_8x8设为1,即默认为使用亮度信号8x8帧内预测

HEVC算法和体系结构:预测编码之帧内预测

预测编码之帧内预测(Intra-Picture Prediction) 预测编码(Prediction Coding)是视频编码的核心技术之一,指利用已编码的一个或几个样本值,根据某种模型或方法,对当前的样本值进行预测,并对样本真实值和预测值之间的差值进行编码.视频编码器对预测后的残差而不是原始像素值进行变换.量化.熵编码,由此大幅度提高编码效率. 对于视频信号来说,一帧图像内临近像素之间有着较强的空间相关性,即空域冗余:相邻图像之间也有很强的相关性,即时域冗余.去除空域冗余和时域冗余的技术分别

H.264学习笔记2——帧内预测

帧内预测:根据经过反量化和反变换(没有进行去块效应)之后的同一条带内的块进行预测. A.4x4亮度块预测: 用到的像素和预测方向如图: a~f是4x4块中要预测的像素值,A~Q是临块中解码后的参考值.0~8是4x4的亮度块的9个预测方向(模式).当E~H不可得时,用D代替. A~Q在下面情况下不可用: >不在当前图像或条带:在该4x4块之前还没有被编码:位于帧间编码宏块,且constrained_intra_pred为1: 对于9个预测模式,简述如下: >模式0:垂直模式,条件:A~D可用.

【HEVC】2、HM-16.7编码一个CU(帧内部分) 2.帧内预测各种模式实现

HEVC中一共定义了35中帧内编码预测模式,编号分别以0-34定义.其中模式0定义为平面模式(INTRA_PLANAR),模式1定义为均值模式(INTRA_DC),模式2~34定义为角度预测模式(INTRA_ANGULAR2~INTRA_ANGULAR34),分别代表了不同的角度. 最简单的Intra_DC模式,DC模式适用于大面积平摊区域,当前预测值可由其左侧和上方(不包含左上角,左下方和右上方)参考像素的平均值得到.该模式同角度预测模式实现在同一个函数Void TComPrediction:

x265,帧内预测代码分析

1 void Analysis::compressIntraCU(const CUData& parentCTU, const CUGeom& cuGeom, uint32_t& zOrder) 2 { 3 uint32_t depth = cuGeom.depth;//geometric CU几何结构 4 ModeDepth& md = m_modeDepth[depth]; 5 md.bestMode = NULL; 6 7 bool mightSplit = !(cu

FFmpeg的H.264解码器源代码简单分析:宏块解码(Decode)部分-帧内宏块(Intra)

本文分析FFmpeg的H.264解码器的宏块解码(Decode)部分的源代码.FFmpeg的H.264解码器调用decode_slice()函数完成了解码工作.这些解码工作可以大体上分为3个步骤:熵解码,宏块解码以及环路滤波.本文分析这3个步骤中的第2个步骤.由于宏块解码部分的内容比较多,因此将本部分内容拆分成两篇文章:一篇文章记录帧内预测宏块(Intra)的宏块解码,另一篇文章记录帧间预测宏块(Inter)的宏块解码. 函数调用关系图 宏块解码(Decode)部分的源代码在整个H.264解码器

HEVC算法和体系结构:预测编码之帧间预测

预测编码之帧间预测(Inter-Picture Prediction) 帧间预测是指利用视频时间域相关性,使用临近已编码图像像素预测当前图像的像素,以达到有效去除视频时域冗余的目的.由于视频序列通常包括较强的时域相关性,因此预测残差值接近于0,将残差信号作为后续模块的输入进行变换.量化.扫描及熵编码,可实现对视频信号的高效压缩. 一.帧间预测编码原理 目前主要的视频编码标准帧间预测部分都采用了基于块的运动补偿技术,如下图所示,其基本原理为:当前图像的每个像素块在之前已编码图像中寻找一个最佳匹配块

x264源代码简单分析:宏块分析(Analysis)部分-帧内宏块(Intra)

本文记录x264的 x264_slice_write()函数中调用的x264_macroblock_analyse()的源代码.x264_macroblock_analyse()对应着x264中的分析模块.分析模块主要完成了下面2个方面的功能: (1)对于帧内宏块,分析帧内预测模式(2)对于帧间宏块,进行运动估计,分析帧间预测模式 由于分析模块比较复杂,因此分成两篇文章记录其中的源代码:本文记录帧内宏块预测模式的分析,下一篇文章记录帧间宏块预测模式的分析. 函数调用关系图 宏块分析(Analys

【HEVC帧间预测论文】P1.1 基于运动特征的HEVC快速帧间预测算法

基于运动特征的 HEVC 快速帧间预测算法/Fast Inter-Frame Prediction Algorithm for HEVC Based on Motion Features <HEVC标准介绍.HEVC帧间预测论文笔记>系列博客,目录见:http://www.cnblogs.com/DwyaneTalk/p/5711333.html 上海大学学报(自然科学版)第19卷第3期. 利用当前深度CU与时域对应位置已编码CU的亮度像素值的差值平方和均值来判断当前CU的运动特征.属于A类算