H.266/VVC相关技术学习笔记:传统帧内预测模式的MPM列表的构造
在以前的VTM3.0中,由于引入了MRL,使得MPM的列表增加了很多的分支,如下所示的VTM3.0中MPM列表的构造流程:
然后在后来的VTM4.0中又加入了ISP技术,使得MPM列表的构造就更加复杂,ISP算法仅对MPM列表的帧内模式进行测试。 因此,如果块使用ISP,则MPM flag将被推断为1。 此外,如果ISP用于某个块,则将修改MPM列表以排除DC模式并根据水平或垂直ISP划分优先考虑水平或垂直划分。如下图所示:
在N次会议上,华为的一篇提案——N0185 A unified MPM list for intra mode coding
总结出了VTM4.0中MPM列表构造的不统一:
①A 6-MPM list for intra blocks with MRL mode enabled, where planar and DC mode are excluded
②A 6-MPM list for intra blocks with ISP mode enabled, where DC mode is excluded
③A 6-MPM list for normal intra block, where planar and DC are always included.
以及如此复杂的构造方法所带来的问题:
使用不同的6-MPM构造,使得MPM列表构造变得复杂。 复杂的MPM列表构造可能损害解码器的吞吐量,特别是对于诸如4×4样本的小块。
因此针对这些问题提出统一的6MPM列表构造如下:
如果左和上都是非角度:
MPM list -> {Planar, DC, V, H, V-4, V+4}
如果左和上中一个为角度,一个为非角度,设max为其中大的角度:
MPM list -> {Planar, Max, DC, Max -1, Max +1, Max -2}
如果左和上都为角度且不同,设max为其中大的角度:
如果左和上差值在2到66之间:
MPM list -> {Planar, Left, Above, DC, Max -1, Max +1}
否则:
MPM list -> {Planar, Left, Above, DC, Max -2, Max +2}
如果左和上是相同的角度:
MPM list -> {Planar, Left, Left -1, Left +1, DC, Left -2}
这次对MPM列表的同统一后的性能如下所示:
对MPM列表的熵编码部分改动如下: