ISP及其在VTM中的优化实现

本文来自论文《Design of the Intra Subpartition mode in VVC and its optimized encoder search in VTM

ISP是VTM新增的工具,它将亮度帧内预测块按照一个维度划分为2个或4个子块,其中所有子块共享同一种帧内预测模式。

子块划分方式

ISP只针对采用帧内预测的亮度块,给定一个WxH的块,ISP将其沿水平或垂直方向划分为2个或4个子块,如Fig.1所示。对应的色度块不划分。

其中4x8和8x4的块只能划分为2个子块,以确保每个子块至少包含16个像素。4x4块不能进行子块划分。宽或高大于最大变换块尺寸的块也不进行子块划分。其他尺寸块都划分为4个子块。

注意,运行划分的子块为1xH、2xH、Wx1、Wx2。例如对16x8的块可以按水平方向划分为4个16x2的子块,4x32的块可以按垂直方向划分为4个1x32的子块。

子块的处理

子块按顺序逐个处理,最先处理左上角块,然后向下(水平划分)或向右(垂直划分)处理。每个子块和普通帧内预测块一样分别进行帧内预测、变换、量化等处理。其中,每个子块的重建信号用于生成下一个子块的预测信号。每个子块重复这个过程直至所有子块处理完毕,如Fig.2所示。

窄垂直子块的处理限制

当子块宽度小于4时处理过程和上面描述不同。典型的硬件架构都是按扫描顺序分配像素,像素按照4x1一组的形式访问,所以对于1xH或2xH像素的存储和读取都会引起问题。因此,对于预测块PB要求的最小宽度是4,这对一些情况的垂直划分会有影响:

  • 4x8块:整个块利用原始块相邻的参考像素预测得到残差块,然后4x8的残差块划分为2个2x8的子块并行进行后续处理。

  • 4xH块(H>8):整个块利用原始块相邻的参考像素预测得到残差块,然后4xH的残差块划分为4个1xH的子块并行进行后续处理。

  • 8xH块(H>4):整个块划分为2个4xH的子块PB进行预测,第一个子块P1利用原始块相邻的参考像素进行预测,得到的4xH的残差块划分为2个TB(B1和B2)并行处理。第二个子块P2同样处理,得到的4xH的残差块划分为2个TB(B3和B4)并行处理。其中P1的重建像素被用于P2的预测。

相关过程如Fig.3所示,

模式传输

ISP的所有子块都使用同一种模式,所以整个块只需要传输一次模式。ISP可以使用所有传统的帧内预测模式,Planar、DC、角度预测等,不能使用MRL、MIP等。ISP可以使用宽角度帧内预测WAIP,但是其中使用的宽高比是指原始块的宽高比而不是子块的。这避免了根据ISP的使用情况来修改帧内模式的含义,同时避免了奇怪的宽高比如64/1。仅当宽和高大于等于4时ISP的子块才能使用PDPC。

变换选择

VVC的变换里新增了MTS和LFNST,ISP使用的是隐式MTS,根据子块的宽w和高h选择变换核:

  • 水平变换:如果4<=w<=16,则使用DST-VII变换核,否则使用DCT-II。

  • 垂直变换:如果4<=h<=16,则使用DST-VII变换核,否则使用DCT-II。

如果未开启MTS,则都使用DCT-II变换核。

变换系数编码

为了利用ISP的特性,ISP子块变换系数编码有以下特性:

  • 对于一维的子块,在传输最后一个非零变换系数的坐标时只需要传输一个坐标轴的值。

  • 每个子块的CBF标志位的上下文为前一个子块的CBF,第一个子块使用0作为上下文。

  • ISP至少有一个子块的CBF非零,如果前面子块的CBF都为0则最后一个子块的CBF默认为1。禁止ISP所有子块CBF都为0,因为这会导致预测结果和不使用ISP相近。

编码器模式搜索

编码器要选择最优模式使得RD cost最小,如果遍历所有模式的组合复杂度将会非常高,VTM中有一些快速搜索算法。

亮度块帧内预测模式搜索

亮度帧内预测块最优模式搜索过程如下:

步骤1:基于STAD构建含有N个候选项的候选列表La:

(a)加入常见的帧内模式

(b)加入MPM中的模式

(c)加入MRL模式

(d)加入MIP模式

步骤2:计算La中各个候选项的RD cost(不考虑ISP、MTS和LFNST)。

步骤3:为ISP模式构建候选列表Lb,并计算各候选项的RD cost(考虑ISP和LFNST的配合)。

步骤4:考虑MTS和LFNST模式计算La的RD cost(不考虑ISP)。

步骤5:选择上面RD cost最小的作为最优模式。

ISP模式搜索

步骤3中需要计算ISP模式下的最优模式,在VTM中采取的策略如下:

  • Before the ISP tests:

    (1)根据non-ISP结果决定是否跳过所有ISP测试。

    (2)根据相邻块结果决定是否跳过ISP测试。

  • The ISP tests:

    (1)根据non-ISP结果构建Lb列表。

    (2)对于不可能是最优的ISP测试,在计算完成前提前终止。

    (3)根据前面ISP测试结果跳过ISP测试。

  • After the ISP tests:

    (1)根据ISP测试结果跳过不带ISP的MTS和LFNST。

注意,一次ISP测试是计算(m,s,l)组合模式的RD cost,m代表帧内预测模式,s代表划分类型(水平、垂直),l代表LNFST索引(0,1,2)。

Before the ISP tests

在创建Lb列表前,VTM可以根据下面两个条件决定是否放弃所有ISP模式:

  • J_non-isp是步骤2得到的最优non-ISP模式的RD cost,C_p是父CU的最优cost,C_c是当前CU同一划分深度CU的累积cost。如果J_non-isp远大于(C_p-C_c)则当前块跳过ISP测试,因为当前块很大概率不是最优划分模式。

  • 由于CTU的划分方式,一个块可能会在不同划分方式中被多次计算。即使它们的编码结果可能不完全相同,但是选择的最优模式经常一致。VTM可以利用这些信息:如果当前块和相关块在步骤2后的最优cost和最优模式相似,则:

    (1)如果相关块中ISP不是最优模式,则当前块跳过ISP。

    (2)如果ISP在相关块中是最优的,则当前块只计算最优模式的(m,s,l)组合。

The ISP tests

进行ISP测试,包括下面步骤:

步骤A:l=0

步骤B:构建Lb

步骤C:计算列表中候选项的RD cost决定后续测试是否跳过。

步骤D:停止测试Lb

步骤E:如果l=0,根据RD cost对Lb中的模式排序。

步骤F:如果l<2,l++,转到步骤C。

步骤G:结束。

构建Lb列表可以利用步骤2中的La列表的结果:

1、Planar模式

2、La中RD cost最优的角度帧内模式(如果存在)

3、剩余的角度模式根据RD cost排序(如果存在)

4、DC模式(如果存在)

5、额外的测试

额外测试的模式包括在步骤1(b)中被选择的模式,但是在(c)和(d)中又被剔除的模式。

ISP的流程图如Fig.4,

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值