【VVC】类和编码树了解

1. CodingStructure类

CodingStructure 类表示视频编码中的结构层次,用于存储编码单元(CU)、预测单元(PU)和变换单元(TU)等信息。

主要成员变量:

  • area: 表示当前编码单元的区域。
  • cus: 存储当前编码单元的列表。
  • pus: 存储当前预测单元的列表。
  • tus: 存储当前变换单元的列表。
  • sps, pps, slice: 存储序列参数集(SPS)、图像参数集(PPS)和切片(Slice)信息。
  • cost, dist, fracBits: 用于存储编码成本、失真度和编码比特。

主要成员函数:

  • init: 初始化编码结构。
  • clearCUs: 清除编码单元。
  • addCU, addPU, addTU: 添加编码单元、预测单元和变换单元。
  • getRecoBuf: 获取重建后的图像缓冲区。

2. Partitioner类

Partitioner 类用于管理图像划分的过程,包括划分编码单元(CU)、预测单元(PU)和变换单元(TU)。

主要成员变量:

  • modeType: 表示当前的模式类型(例如帧内模式或帧间模式)。
  • currArea: 表示当前划分区域。
  • chType: 表示当前处理的通道类型(亮度或色度)。

主要成员函数:

  • initCtu: 初始化编码树单元(CTU)。
  • splitCurrArea: 划分当前区域。
  • nextPart: 移动到下一个划分单元。

3. EncCu类

EncCu 类用于管理编码单元(CU)的编码过程。

主要成员变量:

  • m_CABACEstimator: CABAC编码器,用于熵编码。
  • m_CurrCtx: 当前上下文状态。
  • m_modeCtrl: 模式控制器,用于管理编码模式。

主要成员函数:

  • xCompressCU: 压缩编码单元。
  • xCheckRDCostIntra: 计算帧内模式的RD成本。
  • xCheckRDCostInter: 计算帧间模式的RD成本。

4. RdCost类

RdCost 类用于计算率失真成本(Rate-Distortion Cost)。

主要成员变量:

  • m_distParam: 失真参数。
  • m_costMode: 成本模式。

主要成员函数:

  • calcRdCost: 计算率失真成本。
  • getDistPart: 获取特定部分的失真度。

5. IntraSearch类

IntraSearch 类用于帧内预测的搜索和编码。

主要成员函数:

  • estIntraPredLumaQT: 估计亮度帧内预测的四叉树。
  • estIntraPredChromaQT: 估计色度帧内预测的四叉树。

6. InterSearch类

InterSearch 类用于帧间预测的搜索和编码。

主要成员函数:

  • motionCompensation: 运动补偿。
  • xEstimateMvPredAMVP: 估计运动矢量预测(AMVP)。

7. CABACEstimator类

CABACEstimator 类用于CABAC熵编码。

主要成员函数:

  • resetBits: 重置编码比特。
  • coding_unit: 编码单元。
  • getEstFracBits: 获取估计的比特数。

8. CA 视频编码中的树结构(编码树、SepTree、DualTree、Tree_D等)在视频压缩中起到了关键作用。它们是基于分层分割和预测策略,用于提高压缩效率和视频质量。以下是对这些概念的详细说明:

编码树(Coding Tree)

编码树是视频编码中用来表示和处理图像块的分层结构。编码树通常指的是编码树单元(CTU,Coding Tree Unit),是视频帧中最大的基本处理单元。

  • CTU(Coding Tree Unit):CTU是一种分层结构,通常大小为64x64像素,可以递归地划分成更小的编码单元(CU,Coding Unit)。
  • CU(Coding Unit):CTU可以划分成多个CU,CU是进行预测和变换的基本单元。CU的大小可以变化,通常是8x8到64x64的范围。

分割树(Partitioning Tree)

在编码过程中,CTU可以根据图像内容的复杂度进行分割,以提高压缩效率。分割树的概念包括QuadTree、SepTree、DualTree等。

QuadTree

四叉树(QuadTree)是一种数据结构,用于递归地将一个二维平面(如图像)划分为四个相等的子区域。四叉树在视频编码中非常重要,尤其是在高效视频编码(HEVC)和通用视频编码(VVC)标准中,用于编码单元(CU)的划分。

  • 四叉树划分:CTU可以递归地分割成四个子CU,直到达到最小CU大小。
SepTree

SepTree(Separate Tree)用于表示在不同的颜色分量上进行独立分割的树结构。在视频编码中,Y、Cb和Cr分量可以分别进行分割。

  • 分离树划分:Y、Cb、Cr分量分别进行QuadTree划分,这样可以更灵活地处理颜色信息。
DualTree

Separable Tree (SepTree) 是视频编码中一种用于灵活划分和处理编码单元(CU)的技术。它主要用于处理帧内(Intra)和帧间(Inter)预测时的不同需求,允许对亮度(Luma)和色度(Chroma)信号进行单独和独立的处理。

  • 独立划分:允许亮度(Luma)和色度(Chroma)信号独立划分和编码。
  • 灵活处理:可以对亮度和色度信号采用不同的预测模式和划分策略,提升编码效率和图像质量
  1. 帧内预测(Intra Prediction)

    • 在帧内预测中,亮度信号和色度信号可能有不同的纹理特征和需求。通过 Separable Tree,可以对亮度和色度信号分别进行最优的预测和编码。
  2. 帧间预测(Inter Prediction)

    • 在帧间预测中,运动补偿可能对亮度和色度信号有不同的影响。SepTree 可以独立处理亮度和色度信号的运动矢量,提高运动补偿的精度和效果。

Tree_D (多分辨率树)

Tree_D 或多分辨率树是一种用于更复杂视频编码场景的高级树结构。它允许在不同分辨率下进行自适应划分和编码。

  • 多分辨率划分:在不同分辨率下进行块划分,以更精细地捕捉视频内容的细节。
  • 应用场景:适用于高分辨率视频或复杂场景,需要更高的编码灵活性和效率。

相关推荐

  1. VVC编码

    2024-06-08 17:12:02       7 阅读
  2. 我们把 Prompt 函数更进一步

    2024-06-08 17:12:02       21 阅读
  3. 机器学习算法之分回归(CART)

    2024-06-08 17:12:02       29 阅读
  4. String 字符串编码 以及StringBuilder StringBuffer

    2024-06-08 17:12:02       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 17:12:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 17:12:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 17:12:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 17:12:02       20 阅读

热门阅读

  1. golang优雅代码【lock实现】

    2024-06-08 17:12:02       7 阅读
  2. 堆排序---C语言

    2024-06-08 17:12:02       10 阅读
  3. [AIGC] 自定义Spring Boot中BigDecimal的序列化方式

    2024-06-08 17:12:02       8 阅读
  4. Pinia的定义及使用

    2024-06-08 17:12:02       6 阅读
  5. 信奥之路(五)——顺序结构

    2024-06-08 17:12:02       6 阅读
  6. 【HarmonyOS】代码规范参考

    2024-06-08 17:12:02       8 阅读
  7. 力扣每日一题 6/5

    2024-06-08 17:12:02       9 阅读
  8. Ansible——setup模块

    2024-06-08 17:12:02       7 阅读
  9. 开关电源中电感设计

    2024-06-08 17:12:02       9 阅读