PU 的划分规则是HEVC 能够精细地描述物体运动,从而提升帧间预测效率的关键所在。

与 CU 和 TU 的四叉树划分不同,PU 的划分方式更加多样,但规则也更固定,其划分方式完全取决于 CU 的预测模式(Intra/Inter)和尺寸

PU 划分的核心思想

  • 目的:为预测(特别是帧间运动预测)提供灵活的形状和大小,以最小的代价(码率)最精确地匹配图像内容的运动或纹理。
  • 基本原则
    • 一个PU只能划分一次,不能递归划分
    • 在一个确定的叶子 CU 内部,所有 PU 共享同一种预测模式(要么全是 Intra, 要么全是 Inter)。根据这个模式,CU 会被划分为一个或多个 PU。

2N与N

在 HEVC 的标准和文档中,当讨论一个具体 CU 的划分时,用 2N 来指代这个 CU 的边长。

  • 2N = 当前 CU 的边长
  • N = 当前 CU 边长的一半

2N代表对这个CU不进行划分,N代表对CU进行一次划分。

帧间预测的PU划分

帧间预测是 PU 划分最复杂、最灵活的部分,因为它需要精确地描述现实世界中各种物体的运动。编码器会通过率失真优化(RDO)来尝试所有允许的划分方式,选择最优的一种。

对于一个尺寸为 2Nx2N 的 CU,帧间预测模式下有 8 种可能的划分方式:

对称划分

  1. 2Nx2N
    • 整个 CU 作为一个 PU。适用于运动平缓或静止的大区域。
  2. 2NxN
    • 水平划分为两个大小为 2NxN 的 PU。适用于物体水平运动边界或上下两部分有不同运动的情况。
  3. Nx2N
    • 垂直划分为两个大小为 Nx2N 的 PU。适用于物体垂直运动边界或左右两部分有不同运动的情况。
  4. NxN
    • 划分为四个大小为 NxN 的 PU。适用于包含多个小物体的复杂运动区域。
    • 约束:这种划分方式仅当 CU 尺寸为 2Nx2N 时才允许,并且 2N 不能小于 16(即 CU 尺寸最小为 16x16)。换言之,NxN 划分后的 PU 尺寸最小为 8x8。对于 8x8 的 CU,不允许再进行 NxN 划分(因为那会产生 4x4 的 PU,这在帧间预测中是不允许的)。

非对称运动划分

AMP 模式是为了更精细地拟合物体边界的运动而设计的,可以节省大量码率。

约束:AMP 模式仅在 CU 尺寸大于等于 16x16 时才允许,且 8x8 的 CU 不支持 AMP

  1. 2NxnU & 2NxnD (Up & Down)
    • 水平非对称划分,一个 PU 是 2N x N/2,另一个是 2N x 3N/2U 表示小的部分在上,D 表示小的部分在下。
  2. nLx2N & nRx2N (Left & Right)
    • 垂直非对称划分,一个 PU 是 N/2 x 2N,另一个是 3N/2 x 2NL 表示小的部分在左,R 表示小的部分在右。

帧内预测的PU划分

帧内预测的目的是利用当前帧内已重建的邻近像素来预测当前块,它不涉及运动,因此 PU 的划分规则非常简单。

对于一个尺寸为 2Nx2N 的 CU,帧内预测模式下只有 2 种可能的划分方式:

  1. 2Nx2N
    • 整个 CU 作为一个 PU。这是最常见的情况。对于 64x64, 32x32, 16x16 的 CU,这是唯一的划分方式。
  2. NxN
    • 划分为四个大小为 NxN 的 PU,每个 PU 都有自己的帧内预测模式。这允许在一个小区域内对不同的纹理方向进行更精确的预测。
    • 约束:这种划分方式仅当 CU 为最小 CU 尺寸时才允许。例如,如果 SPS 中设置的最小 CU 尺寸是 8x8,那么只有 8x8 的 CU 在使用帧内预测时,才可以选择是作为一个 8x8 的 PU,还是分裂成 4 个 4x4 的 PU。