ISP及其在VTM中的优化实现
Posted Dillon2015
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,
以上是关于ISP及其在VTM中的优化实现的主要内容,如果未能解决你的问题,请参考以下文章