本文来自ICME2021论文《Angular Weighted Prediction for Next-Generation Video Coding Standard》

加权预测是视频编码的重要技术,但是传统的固定权重无法满足两个物体斜边的处理。现存的方法计算逐像素的权重需要大量计算,它要为每个像素计算它到分界线的距离。本文利用角度预测生产每个像素的权重,复用了帧内预测的逻辑来简化计算。

在视频编码中帧间预测时通常会有矩形块划分,但是当两个物体的边界不是水平或垂直方向时则需要多个矩形划分才能将斜边划到不同部分。为了解决这个问题,最近的编码标准提出了非矩形划分。AV1提出了复合楔形预测(compound wedge prediction  ,CWP)。利用预定义的3个表生成CWP块的掩膜,如Fig.1对不同尺寸块生产16种掩膜。

2019年,VVC提出了三角划分模式(triangular partition mode  ,TPM),每个块使用对角线或副对角线作为划分边界,每个像素计算其到划分边界的距离来得到它的权重。

后来VVC又提出了几何划分模式(geometric partition mode  ,GPM)来替代TPM,GPM对每个块有64种划分边界,这对于计算像素级权重复杂度非常高。如Fig.2所示,GPM也需要计算像素到划分边界的距离来得到它的权重,计算方法如下:

本文提出角度加权预测(angular weighted prediction ,AWP)来处理这种非矩形物体的帧间预测。它包括两部分,AWP权重的生成和AWP预测块的生成。

AWP权重生成

AWP权重生成过程中用到了角度预测,首先计算出有效的参考权重位置的数量,然后将有效的权重位置填充合适的权重,最后当前块的每个像素位置从参考权重位置获得权值。

有效的参考权重位置的数量

和帧内预测中的角度模式类似,AWP的参考权值需要通过角度参数和块尺寸计算。

如Fig.3所示,有效的参考权值位置数量可以按下面方式计算:

L是有效的参考权值位置的数量,w和h分别是块的宽和高,m是角度参数,k是角度的斜率。

如Fig.4所示,AWP共有8种角度。每种角度定义如表1。

其中X、Y分别表示水平和垂直角度。在这两种情况下,X和Y应该足够大从而消除其他方向对公式(4)的影响。

AWP参考权值的精度是半像素,所以公式(4)需要修改,

为了限制有效参考权值位置的最大数量,对于前4个角度使用左边一列而不是上面一行来作为参考权值位置。当对这些角度计算有效参考权值位置的数量时使用公式(7)代替公式(6),

参考权值的生成

当有效参考权值位置的数量确定之后,就需要为每个参考位置生成参考权值。

如Fig.6所示,AWP对每个角度有7组参考权值集,均匀分布在所有有效的参考权重位置。所以AWP一共有56种模式(8x7=56),比GPM少8种。图6中红色方块中的不同颜色代表0到8间的不同值。7组参考权值集可以通过公式(8)计算得到,

Rw[x]表示有效参考位置x处的权值,d是AWP参考权值参数,可由L计算得到。

set_idx表示当前块选择的参考权值集。

像素级权值生成

如Fig.5所示,参考权值生成后,块内每个像素位置处的权值可通过AWP角度模式获得,

可以看见,在计算像素的权值时不需要计算该像素到分界线的距离。

当角度等于2和6时公式(10)可以简化,

AWP预测块生成

为了和传统的B帧加权预测保持一致,每个块生成两个单向MV。为了获得两个单向MV需要基于1个时域块和6个空域块构建MV列表。

MV候选项生成

构建MV列表用到了1个时域块和6个空域块,如Fig.7所示。相邻块MV加入MV列表的顺序为T、A、B、C、D、E、F。

如果相邻块是双向预测,则其MV需要剪切处理来获得单向MV候选项。双向预测的哪个MV要加入MV列表取决于块索引的奇偶性,其中T的索引是0,A的索引是1,依次类推。如果块索引是偶数则双向预测中list0中的MV会加入候选项,否则list1中的MV加入候选项。通过这种方式块索引的奇偶性和相邻块绑定在一起,这样所有相邻块的MV就可以并行处理无论其是单向MV还是双向MV。

MV候选项剪枝

剪枝过程是为AWP模式获得更高效的单向MV列表。和传统的检查候选项的参考列表和参考帧索引不同,本文检查的是参考帧的POC。这样即使两个候选MV的参考列表不同也可能被视为相同的候选项,这样可以避免候选项潜在的冗余,尤其是对LDB配置。

为了减小剪枝的复杂度,如表2所示,对两个参考列表的每个参考帧只计算一次POC,并构建一个lookup table,在检查候选MV时只需通过其参考列表和参考索引来查表获得POC。

MV候选项修正

在构建完单向MV候选列表之后,需要从中选择两个MV用于AWP模式。选中的MV需要通过增加MVD的方式进一步修正,修正方法类似于VVC或AVS3中的MMVD。MVD由步长和方向决定,一共定义了5个步长(1/4像素,1/2像素,1像素,2像素,4像素)和4个方向(上、下、左、右),下式用来生成MVD,

其中offset就是5个预定义的步长。

最终预测块生成

通过选择的两个候选MV按下式生成预测块,

其中Fp(i,j)是(i,j)处最终的预测值,M(i,j)是第一个MV指向的预测值,N(i,j)是第二个MV指向的预测值。Bd是位深。

实验结果

测试条件

测试序列包括3类:4k、1080p和720p,都来自于AVS3。具体配置如下:

  • anchor是HPM9.0不开启AWP模式。

  • 实验使用4个QP{27,32,38,45}计算BD-rate。

  • 实验采用RA配置和LDB配置。

实验分析

表3是AWP的编码性能结果,在RA和LDB配置下BD-rate增益分别为0.9%和2.0%,编码时间增加13%。可以发现720p的增益超过其他类别,且LDB配置的增益超过RA。表4是不加MV修正的实验结果。

Fig.8是AWP和GPM的比较,可以看见HPM9.0中的不带MV修正的AWP性能已经超过了VTM10.0的GPM,加上MV修正后性能更高。其中vidyo3序列的增益最大,达到4.6%,如Fig.9所示。

感兴趣的请关注微信公众号Video Coding

ICME2021:基于VVC的角度加权预测相关推荐

  1. H.266/VVC帧间预测技术学习:CU级双向加权预测(Bi-prediction with CU-level weight)

    CU级双向加权预测(Bi-prediction with CU-level weight ,BCW) 在HEVC中,通过对从两个不同参考图片获得的两个预测信号求平均和/或使用两个不同运动矢量来生成双向 ...

  2. 使用基于时间的关系加权标准来改善社交网络中的链接预测

    使用基于时间的关系加权标准来改善社交网络中的链接预测 关键词:链接预测,社交网络,加权图. 摘要:近年来,对复杂网络中链路预测(LP)问题的研究引起了相当多的关注.此问题试图预测网络中两个未互连节点之 ...

  3. ICASSP2020:VVC基于线性模型的帧内预测模式

    本文来自ICASSP2020论文<LINEAR MODEL-BASED INTRA PREDICTION IN VVC TEST MODEL> 论文使用含3个参数的线性模型进行帧内预测 L ...

  4. 计算机与科学唐家琪,基于网络分析的蛋白质功能预测方法研究

    摘要: 蛋白质是执行生物体内各种重要生物活动的大分子,认识其功能对推动生命科学.农业.医疗等领域的发展意义重大.传统的生物实验测定蛋白质的功能需要消耗大量的人力.物力.财力,并且效率低下,已无法满足数 ...

  5. 【十六】 H.266/VVC | VVC中帧间预测技术详细总结 | 所有帧间预测技术代码汇总

    前言 ​ 帧间预测是影响视频编码性能的关键环节之一,H.266/VVC帧间预测在传统只能应对简单的平移运动的基础上,采用了仿射运动模型,可以描述更加复杂的缩放.旋转等运动.为了更好的发挥合并模式(Me ...

  6. 使用OpenCV与sklearn实现基于词袋模型的图像分类预测与搜索

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 基于OpenCV实现SIFT特征提取与BOW(Bag of Wor ...

  7. 风电功率预测matlab,一种基于二十四节气的风电功率预测方法与流程

    本发明属于风电场技术领域,尤其涉及一种基于二十四节气的风电功率预测方法. 背景技术: 风能的随机波动性对电网产生的较大冲击给风电产业的发展带来了巨大挑战.目前风电功率预测误差较大,数值天气预报精度.训 ...

  8. 基于机器学习的时序数据预测方法

    预测模型建模 时序数据的预测通常建模为利用历史数据值预测未来的数据走势. 简单的数学表示: x => S => x^' 其中: x = {x_1,x_2,-,x_t} 表示历史数据, S ...

  9. 基于XGBoost的用户流失预测

    基于XGBoost的用户流失预测 小P:小H,我怎么能知道哪些用户有可能会流失呢?我这里有一份数据,你帮忙看看哪些字段更有助于寻找流失用户 小H:我只需要告诉你哪些特征更重要是吗? 小P:对对- 小H ...

最新文章

  1. 带有中文的字符串各个字符的获取c++程序
  2. ILSpy可以反编译c语言,ILSpy反编译工具的使用
  3. 加载SD卡中的SO库
  4. 使用 AngularJS 和 ReactJS 的经验
  5. 分布式环境下的session共享
  6. Error:unsupported class file version 52.0问题的解决
  7. C/C++编译器教程之如何安装vs,看了的人应该都会装,只要不手残
  8. 简单51单片机c语言编程流水灯,51单片机如何实现流水灯?51单片机实现流水灯的三种方法详细分析...
  9. hypermesh安装包百度云_HYPERMESH11.0 64bt软件
  10. shared memory realm does not exist解决办法
  11. [转载] 七龙珠第一部——第114话 悟空的愿望 卡林大人好为难
  12. BZOJ 3812 主旋律 (状压DP+容斥) + NOIP模拟赛 巨神兵(obelisk)(状压DP)
  13. WINDOWS备份与恢复
  14. 番茄ToDo帮助文档
  15. 苹果开发者账号和邓白氏编码申请总结
  16. smartUpload上传图片的用法
  17. 当代女性修身养性的箴言书——《读史做女人》
  18. k8s---存储之Volumes配置管理
  19. python安装lap_AP 升级到 LAP,或 LAP 降到 AP 的方法
  20. tcp/ip网络编程--accept()函数返回的套接字

热门文章

  1. 转载百度百科 python
  2. 线性代数复习CH1:行列式
  3. ubuntu18.04的Android环境配置
  4. 教程:群体遗传学方法分析玉米的驯化与改良
  5. office365打开服务器文件出错,新安装的Office 365,打开Excel文件时出错,停止工作...
  6. EtherCAT SDO分段下载/上传说明
  7. pycuda安装报错(已解决)
  8. SqlServer_select-多次sum查询结果合并;
  9. 最详细的整套模具设计思路与流程 !
  10. 【Redis系列】Redis布隆过滤之8亿大数据集实战