未经许可,禁止转载

简介

为了增加帧内预测的精度,VVC改进了HEVC的帧内预测方法,将预测角度从33种扩展到65种,角度预测的插值滤波器改用4抽头的高斯插值滤波器。同时,由于QTMTT划分结构使得CU的不在局限于正方形,各种矩形尺寸的CU被广泛采用,因此VVC扩展了HEVC中角度预测的预测范围,引入了广角预测模式。

除了改进HEVC中的帧内编码技术,VVC还使用了新的高效预测技术,具体有跨分量线性预测(Corss-Component Linear Mode, CCLM)、位置自适应帧内联合预测(Position dependent intra prediciton Combination, PDPC)、帧内多行预测(Multiple reference line intra prediction, MRL)、帧内逐块预测(Intra sub-Partition prediction, ISP)等。

1. 扩展角度帧内模式

传统帧内预测包括方向角度预测和平滑预测(DC和Planar)两类,VVC为提高预测精度,将HEVC帧内的33种角度预测模式扩展到65种,如图所示,67种角度预测可用于亮度和色度的预测。

在原HEVC中的35个角度模式的基础上,每两个方向之间插入一个新预测方向,共33+32=65个预测方向。

1.1 MPM构建和模式编码

为了降低建立MPM列表的复杂度,VTM通过两个相邻的CU预测模式生成6个MPM,MPM列表中的模式包含以下三类:默认模式

相邻CU模式

计算推导的模式

VTM参考两个相邻PU(左(A)、上(B))的帧内模式生成MPM列表。默认的初始化MPM列表如下 6 MPM modes = {A, Planar (0) or DC (1), Vertical (50), HOR (18), VER - 4 (46), VER + 4 (54)} 之后MPM列表根据两个相邻的PU帧内模式进行更新。更新方式如下: - 如果A=B且A>1,6个模式为三个默认模式(A, Planar, DC)和三个推导模式,由A偏移得到。 - 如果A与B不等,则6个模式前两个为A和B,剩余四个由默认模式和相邻模式推导得到。

生成MPM列表时,要进行去重操作,以保证6个模式都是不同的。在编码帧内模式时,61个非MPM模式,采用截断二进制编码(TBC)。

1.2 帧内广角预测(WAIP)

HEVC采用四叉树划分结构,对于每个正方形N×N的CU帧内角度预测模式的范围为45°— -135°,其左、上参考样点数目都是2N+1。但是VVC采用了QTMTT划分结构,CU尺寸不局限于正方形,还有矩形尺寸。对于一个尺寸为W×H的CU,为满足45度~-135度的角度预测范围,左、上分别需要W+H+1个参考样点,这种角度预测范围虽然兼容了HEVC相关技术,但是并没有考虑到VVC中QTMTT的特点,例如:(1)当W>H时,待预测像素距离上方的参考像素更近;(2)当W

这种矩形尺寸的CU并不是沿斜对角线对称的,这就造成对于某些预测角度,其预测值使用的是很远的参考像素而不会用邻近的参考像素,如下图所示。

左侧示例,待预测像素A距离上方参考像素T更近,但是由于预测角度限制,最终使用左侧像素L预测。对于右侧示例,待预测像素A距离左侧参考像素L更近,但是由于预测角度限制,最终使用上方像素T进行预测。

为解决此问题,对于非方形的编码块,VTM提出了帧内广角预测技术,为了不增加帧内预测模式数量,广角预测将依据CU的长宽比,自适应替换原始的角度预测模式,被替换的模式按照原始的索引进行传输,在解码端载替换为相应的广角预测。广角预测模式下,尺寸为W×H的CU上方参考像素点个数为2W+1,左侧参考样点个数为2H+1。如下图所示。

由上图可以看到,可被替换的角度预测模式与CU的宽高比有关,现在总结如下, |宽高比| 被替换的角度模式 | |--|--| |W / H == 16 |12, 13,14,15 | | W / H == 8|12, 13 | | W / H == 4 |2,3,4,5,6,7,8,9,10,11 | |W / H == 2 | 2,3,4,5,6,7| |W / H == 1 | 无 | |W / H == 1/2 |61,62,63,64,65,66 | |W / H == 1/4 |57,58,59,60,61,62,63,64,65,66 | |W / H == 1/8 |55, 56 | |W / H == 1/16 | 53, 54, 55, 56 |

在此,需要注意的是,在广角预测下,相邻像素的参考像素可能并不相邻,如下所示

因此,在广角模式下,为了降低非相邻参考样点对预测的影响,需要对参考值进行低通滤波,即参考样点的平滑。 加入广角预测模式之后,VTM所支持的预测角度如下图所示

1.3 基于模式的参考样本平滑(MDIS)

VTM采用4抽头的插值滤波器用于生成角度预测参考像素,以提高角度预测的预测精度。在HEVC中,角度预测参考像素通过2抽头的线性插值滤波器计算得到,而VTM使用了更精确的6bit 4抽头高斯插值滤波器。VTM中以下五种模式不进行四抽头滤波:2, HOR_IDX, DIA_IDX, VER_IDX和66;其余所有角度模式都要进行滤波。

根据帧内预测的模式,参考样本的平滑遵循以下原则(JVET-L0628):帧内角度预测模式将被分为如下三类:A: 水平、垂直模式(HOR_IDX, VER_IDX);B: 对角线模式(2, DIA_IDX, VDIA_IDX);C: 其他角度模式。

对于A类模式,不需要对参考样点进行滤波。

对于B类模式,参考样点有可能会使用抽头系数为[1,2,1]的参考样本滤波器进行平滑,然后直接生成帧内预测值,不需要进行插值预测。此可能性根据MDIS的条件判断。

对于C类模式,对参考像素使用帧内插值滤波器生成预测样本,不需要对参考像素进行平滑滤波。

2. 跨分量线性模型预测(CCLM)

为降低颜色分量间的冗余,VTM采用了跨分量线性模型的色度预测模式,即色度值可根据已重建亮度像素线性变换得到,变换函数为pred_C (i,j)=α•rec_L'(i,j)+β,其中pred_C为预测的色度值,rec_L'(i,j)表示已重建的亮度下采样后的值。参数α和β通过相邻CU的亮度和色度计算得到,计算公式为 $α = \frac{Y_a - Y_b}{X_a - X_b}$,$β = Y_b - α \times X_b$。其中,$Y_a$ 是相邻亮度像素下采样后最大亮度像素的亮度值,$X_a 是Y_a$对应的色度值。 $Y_b$ 是相邻亮度像素下采样后最大亮度像素的亮度值,$X_b 是Y_b$对应的色度值。下图给出一个CCLM预测的例子

VTM中计算α的除法操作通过查表获得,以降低计算复杂度。为了减少表的存储空间,最大最小的差值 diff 和 α 以指数形式存储和计算。例如,diff近似为4位有效位和一个指数量级。因此,1/diff 的表格元素可减少为16 个,如下 $DivTable [ ] = { 0, 7, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1, 1, 0 }$ 总之,这种计算方式不仅减少了计算复杂度还减少了存储空间。

除了亮度所有的上方参考像素和左侧参考像素联合计算线性模型的参数外,模型参数还有另外两种计算方式,即CCLM还有两位两种模式,称之为LM_A和LM_L模式。LM_A模式仅使用已重建亮度像素的上方元素作为参考像素计算线性模型参数,为了获取足够参考像素,上方亮度参考像素扩展为W+H个

LM_L模式仅使用已重建像素左侧元素计算线性模型参数,同样,左侧参考像素扩展为H+W个

对于4:2:0色度采样的序列,需要对对亮度信息进行下采样,VTM支持两种2:1采样方式。采样滤波器的选择由SPS指出,分表标识为“type-0”和“type-2”,如下

线性模型参数的计算过程不仅在编码端进行,解码端同样进行相同的操作,因此参数alpha和belta不用记录在码流中。

VTM色度共有8种预测模式,包括5种亮度分量的帧内模式和三种CCLM模式(CCLM、LM_A、LM_L)。色度模式的传输和获取过程如下表所示

帧内色度模式的编码依赖于相应的亮度块,因为VTM中I帧的亮度和色度分量可能会有不同的划分结构,一个色度块可能对应多个亮度块。因此,对于色度的DM模式,使用当前色度块中心像素对应的亮度块的帧内预测模式。

3. 位置自适应帧内联合预测(PDPC)

在VTM中,帧内某些模式的预测结果将通过位置自适应帧内联合预测模式进行修正。简单来说,PDPC模式就是通过未滤波和已滤波的参考像素的预测值加权作为最终的预测值。VTM中的以下模式将默认进行PDPC:Planar, DC, horizontal, vertical, bottom-left angular mode and its eight adjacent angular modes, and top-right angular mode and its eight adjacent angular modes.

最终预测值pred(x,y) 为(传统帧内模式预测值)与(参考像素直接计算的修正值)的和,计算公式如下: $pred(x,y) = [ wL×R_{-1,y} + wT×R_{x,-1} – wTL ×R_{-1,-1} + (64 – wL – wT+wTL) × pred(x,y) + 32 ]>>6$ 其中$R_{x,-1}$和$R_{-1,y}$当前像素(x,y)上方和左侧的相邻参考像素,$R_{-1,-1}$表示当前块左上角的参考像素。

类似于HEVC中DC模式的边界滤波器和水平/垂直模式的边缘滤波器,当PDPC作用于DC、Planar、水平和垂直预测模式时,不需要额外的边界滤波器。

下图列出不同预测模式的PDPC的预测方式和相应参考像素,其中pred (x’, y’)是预测像素位于当前预测块的(x’, y’)。对于对角线模式,参考像素$R_{x,-1}$的横坐标x计算方式为x = x’ + y’ + 1,纵坐标y计算方式为y = x’ + y’ + 1。对于别的方向模式,参考像素可能会处于分数像素位置,此时,使用最邻近的整数像素值进行替代。

PDPC的权重依赖于帧内预测模式,具体如下 |预测模式 | wT |wL | wTL |

|--|--|--|--| | 右上对角线模式 |16 >> ( ( y’<<1 ) >> shift) | 16 >> ( ( x’<<1 ) >> shift) | 0 |

|下左对角线模式 | 16 >> ( ( y’<<1 ) >> shift ) | 16 >> ( ( x’<<1 ) >> shift ) | 0|

| 右上对角线模式相邻角度 | 32 >> ( ( y’<<1 ) >> shift ) | 0 |0 |

| 下左对角线模式相邻角度 | 0 | 32 >> ( ( x’<<1 ) >> shift ) | 0 |

4. 多行预测模式(MRL)

多行帧内预测模式即使用多个参考行的帧内预测,如下图所示

传统帧内预测(如HEVC等)使用reference line 0进行帧内预测,VTM增加了两个参考行reference line 1和reference line 3。需要注意的是,Segment A和Segment F并不是相邻的已重建像素,而是由临近的Segment B和Segment E填充得到。

多行预测的参考行索引(mrl_idx)需要传输到解码端以生成相应的帧内参考像素,即帧内多行编解码模式信息为 “预测模式+ 参考行索引” 。VTM为了降低码率,同时平衡编码端复杂度,对于不使用reference line 0的多行预测,其额外的参考行模式将包含在MPM列表中,因此只需要传输MPM的索引即可。码流中,参考行的索引在帧内预测模式之前传输,DC和Planar模式不使用多行预测。

需要额外注意,为了避免使用CTU外扩展使用参考样本,多行预测模式对CTU最上第一行CU默认关闭。此外,PDPC默认对扩展参考行关闭。

5. 帧内逐块预测(ISP)

帧内逐块预测技术依据CU的亮度分量尺寸,将其沿水平或垂直方向划分成2个或者4个尺寸相同的子块,然后逐个子块进行预测重建。进行帧内ISP的最小CU尺寸为48或84(即最少需要32个像素),48或84的CU会被分成2个子块,其他尺寸则被分成4个子块,即每个子块最要需要有16个像素。下图给出了一个例子,上方为4*8CU的ISP划分方式,下方为划分为4个子块的情况。

对于每个子块,重建信号为预测信号与残差信号的和,残差信号通过熵解码、反量化和反变换得到。(每个子块独立预测变换量化) 换句话说,每个子块的重建信号可以用来进行下一个子块的预测,CU中每个子块的重建、预测依次进行。位于当前CU左上角的第一个子块首先压缩,然后向下(水平划分)或者向右(垂直划分)依次编码, 每个子块公用相同的帧内预测模式。

5.1 ISP预测模式和其他工具的关系总结如下:多行预测: 如果CU使用多行预测(参考行索引大于0),则ISP默认关闭。

熵编码系数长度:所有情况下,子块熵编码以一组16个像素进行,按照子块尺寸的不同,其尺寸略有差异,具体如下:

|子块尺寸| 熵编码系数组尺寸 | |--|--| | $1 \times N, N\geq 16$ | $1 \times 16$ | | $N \times 1, N\geq 16$ | $16 \times 1$ | | $2 \times N, N\geq 8$ | $2 \times 8$ | | $N \times 2, N\geq 8$ | $8 \times 2$ | | $M \times N$ | $4 \times 4$ |CBF编码: 使用ISP帧内预测,默认至少有一个子块的CBF不为0,因此如果有N个子块,前N-1个子块的CBF都为0,则最优一个默认为1.

MPM列表:ISP只对MPM列表中的模式进行。如果采用ISP模式,需要传输一个MPM索引,标注何种预测模式。DC模式不加入MPM列表,水平划分时,MPM中水平预测模式优先,垂直划分垂直预测模式优先。

变换核尺寸:尺寸16使用DCTII变换核

PDPC:ISP默认关闭PDPC。

MTS:...

5.2 针对ISP预测的编码端优化

平衡性能和复杂度,对编码端做出如下优化分别对ISP水平划分(ISP_H)和垂直划分(ISP_V)建立不同候选模式列表。

使用传统帧内预测(非ISP)RMD候选列表初始化ISP候选列表。

依据ISP划分类型,去除2中RMD非ISP的MPM模式。

在RD全搜索中,进行如下操作 (1) 传统帧内预测结束后,将未量化的DCT-II系数划分为三个区域:右上区域、左下区域和对角线(对角线包含DC系数) (2) 分别计算三个区域的变换系数的绝对值和(topRight, blowLeft, diag) (3) 计算两个比率:r1=topRight/belowLeft 和r2=diag/(topRight + belowLeft) (4) 保存最优帧内模式的r1和r2

如果r1大于预先设定的阈值,则跳过所有ISP_H的模式选择;如果r1小于预先设定的阈值,则跳过所有ISP_V的模式选择。

如果r2大于预先设定的阈值,跳过ISP_H和ISP_V。

对剩余的ISP_H和ISP_V候选列表中的模式进行RD全搜索。

hevc角度预测_VVC帧内预测工具详解相关推荐

  1. 【HEVC代码阅读】帧内预测

    HEVC的帧内预测的架构分为三个步骤: ①构建参考像素数组:②生成预测像素:③后处理操作. HEVC标准将这三个步骤进行了精密设计,以求达到较高的编码效率,同时降低编码和解码端的运算要求.HEVC标准 ...

  2. 从HEVC到VVC:帧内预测技术的演进(2) – 多划分及多参考行帧内预测

    当前主流的视频编码标准(如H.264/AVC,VP9,AVS1,HEVC等)均使用当前预测单元最邻近的已重构像素对当前预测单元进行帧内预测.因为当前预测单元与其临近的像素之间有很强的相关性,该帧内预测 ...

  3. Overview of HEVC之4 帧内预测

    帧内预测是根据传输块的尺寸进行操作的,并且空间上相邻传输块的先前解码的边界像素被用来形成预测信号,对4*4到32*32的传输块定义了33种不同的方向预测.图6显示了可能的预测方向.另外也用到了平面预测 ...

  4. HEVC学习-帧内预测-亮度分量预测主函数

    QP的详解:https://blog.csdn.net/liangjiubujiu/article/details/80569391 代码部分:https://blog.csdn.net/HEVC_C ...

  5. VVC 帧内预测代码 xPredIntraAng()函数

    帧内预测中的initPredIntraParams()函数 (负参考方向处在跑代码时再看一遍)_青椒鸡汤的博客-CSDN博客 H.266/VVC-VTM代码学习-帧内预测05-Angular模式下计算 ...

  6. VVC帧内预测(一)

    1.帧内预测模式 为了适应更多的预测方向,VVC的帧内角度预测模式增加为65个,加上DC模式和planar模式,VVC的帧内预测模式有67个.下图中红色的线是VVC比HEVC增加的预测方向. 在HEV ...

  7. H.266/VVC帧内预测总结

    一.帧内预测基本原理 帧内预测技术是利用同一帧中相邻像素的相关性,利用当前块相邻区域的重建像素预测当前块中像素的技术,如下图所示,当前CU可以利用相邻A.B.C.D和E位置处的重建像素来预测当前CU中 ...

  8. 关于帧内预测模式的视频隐写代码介绍

    关于帧内预测模式的视频隐写代码介绍 前言 一.H.265/HEVC的帧内预测过程 二.论文[1]的介绍以及如何复现 前言 在早期的基于帧内预测模式(IPM)的H.265/HEVC视频中,大多是基于自定 ...

  9. H.264系列文章(三)——帧内预测

    H.264 White Paper学习笔记(二)帧内预测 为什么要有帧内预测?因为一般来说,对于一幅图像,相邻的两个像素的亮度和色度值之间经常是比较接近的,也就是颜色是逐渐变化的,不会一下子突变成完全 ...

最新文章

  1. SQL 中字母大小写转换
  2. 枚举可以被子类化以添加新元素吗?
  3. 云无边界,阿里云混合云数据同步发布
  4. 新時代的開端:DELPHI.NET- 語言篇
  5. Html5元素及基本语法
  6. JavaScript面试题目集锦
  7. 10 进制转 2 进制、16 进制
  8. 街舞中的rolling机器人_REMEMBER街舞培训中心2020年元旦汇演
  9. 面试题:ConcurrentHashMap 和 Hashtable 的区别
  10. zabbix 如何监控tcp的SYN,establised?
  11. PHP 链接手机短信接口
  12. 周期性行业是什么意思_周期性股票是什么意思 周期性股票的特征有哪些
  13. python 实时监控日志文件_Python动态监控日志的内容
  14. 童年记忆中的优良环境
  15. java基础零散知识
  16. 程序员遇到人生低谷期怎么做?
  17. GUI图形化界面(后篇)
  18. 专业术语-外文首字母组词的原词组
  19. Pycharm 开发 PyQt5 GUI 插件安装使用
  20. Scrapy爬取饿了么周围商家信息

热门文章

  1. AI进阶 | 多重学习资料免费大放送
  2. c语言open函数出错,C语言 open函数
  3. 锋利的js之验证身份证号
  4. 三国风云辅助工具——乌鸦的机器人
  5. 苹果6可以分屏吗_苹果醋加蜂蜜的功效,苹果醋可以放蜂蜜一起喝吗?
  6. python爬虫课程笔记-续
  7. android恢复出厂设置的源码解析
  8. 时钟恢复matlab,关于时钟恢复基础知识的分享和应用
  9. 临潼智慧城市监督指挥中心国庆亮相 护航黄金周旅游
  10. 网易云音乐Linux绿色免安装版For CentOS