前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[AV1] Recursive Intra Prediction

[AV1] Recursive Intra Prediction

作者头像
轻舞飞扬SR
发布2021-02-24 11:07:10
4200
发布2021-02-24 11:07:10
举报
文章被收录于专栏:Visual CodexVisual Codex

返回AV1专栏目录

Recursive Intra Prediction是AV1新引入的预测技术。

下面的图展示了这种预测模式的一个块的划分的情况。

如上图我们可以看到,一个8x4的块,会划分为了4个部分,每个部分分别为4x2的大小,预测的方式是这样的,先利用左上的带有序号的reference pixels去预测蓝色块,当蓝色块的predictor生成后,然后预测绿色块,而绿色块使用的左边的reference是蓝色块的生成预测值,所以有这么曾层级依赖关系的存在,recursive prediction 因此而得名。

在实际的使用中,该模式受到的一定的限制,首先仅针对luma 块使用,且 YMode必须为DC_PRED,还需块的syntax:use_filter_intra 值为1时才开启recursive 模式。开启了recursive 模式后,针对周边的第0到第6号像素,需要赋予不同的权重值来体现预测的多方向性。所以recursive 模式根据周边像素的权重值的不同又细分了以下五种模式:

filter_intra_mode

Name of filter_intra_mode

0

FILTER_DC_PRED

1

FILTER_V_PRED

2

FILTER_H_PRED

3

FILTER_D157_PRED

4

FILTER_PAETH_PRED

权重值在标准中以名为Intra_Filter_Taps的 5x8x7的三维数组存储(其中第一维的5为INTRA_FILTER_MODES),参见标准419页。

代码语言:javascript
复制
Intra_Filter_Taps[ INTRA_FILTER_MODES ][ 8 ][ 7 ] = { { { -6, 10, 0, 0, 0, 12, 0 },
{ -5, 2, 10, 0, 0, 9, 0 },
{ -3, 1, 1, 10, 0, 7, 0 },
{ -3, 1, 1, 2, 10, 5, 0 },
{ -4, 6, 0, 0, 0, 2, 12 },
{ -3, 2, 6, 0, 0, 2, 9 },
{ -3, 2, 2, 6, 0, 2, 7 },
{ -3, 1, 2, 2, 6, 3, 5 },
},
{ { -10, 16, 0, 0, 0, 10, 0 },
{ -6, 0, 16, 0, 0, 6, 0 },
{ -4, 0, 0, 16, 0, 4, 0 },
{ -2, 0, 0, 0, 16, 2, 0 },
{ -10, 16, 0, 0, 0, 0, 10 },
{ -6, 0, 16, 0, 0, 0, 6 },
{ -4, 0, 0, 16, 0, 0, 4 },
{ -2, 0, 0, 0, 16, 0, 2 },
},
{ { -8, 8, 0, 0, 0, 16, 0 },
{ -8, 0, 8, 0, 0, 16, 0 },
{ -8, 0, 0, 8, 0, 16, 0 },
{ -8, 0, 0, 0, 8, 16, 0 },
{ -4, 4, 0, 0, 0, 0, 16 },
{ -4, 0, 4, 0, 0, 0, 16 },
{ -4, 0, 0, 4, 0, 0, 16 },
{ -4, 0, 0, 0, 4, 0, 16 },
},
{ { -2, 8, 0, 0, 0, 10, 0 },
{ -1, 3, 8, 0, 0, 6, 0 },
{ -1, 2, 3, 8, 0, 4, 0 },
{ 0, 1, 2, 3, 8, 2, 0 },
{ -1, 4, 0, 0, 0, 3, 10 },
{ -1, 3, 4, 0, 0, 4, 6 },
{ -1, 2, 3, 4, 0, 4, 4 },
{ -1, 2, 2, 3, 4, 3, 3 },
},
{ { -12, 14, 0, 0, 0, 14, 0 },
{ -10, 0, 14, 0, 0, 12, 0 },
{ -9, 0, 0, 14, 0, 11, 0 },
{ -8, 0, 0, 0, 14, 10, 0 },
{ -10, 12, 0, 0, 0, 0, 14 },
{ -9, 1, 12, 0, 0, 0, 12 },
{ -8, 0, 0, 12, 0, 1, 11 },
{ -7, 0, 0, 1, 12, 1, 9 },
}
}

具体软件的实现上可能根据优化情况会略有不同,比如Libaom AV1中,其定义为5x8x8维,其中最后第三维的最后一列全为0。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档