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

[AV1] Paeth Intra Prediction

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

返回AV1专栏目录

Paeth Intra Prediction是AV1引入的一种新的预测模式,这个Paeth是一个人的名字(初次看到的时候我傻傻地去查词典),他是一位计算机科学家,名为Alan W. Paeth,此人在开发PNG时候提出了Paeth 预测技术

Paeth 帧内预测

在AV1的标准文档中,并没有出现Paeth prediction 这个词,取而代之的是basic intra prediction,详情见 7.11.2.2,这两个术语其实是指的同一个东西。

在AV1中,其Paeth Prediction mode的序号等于 12

intra_frame_y_mode

Name of intra_frame_y_mode

12

PAETH_PRED

在Paeth帧内预测中,需要比较三个像素值,分别是与当前块纵坐标相同的左边pixel,与当前块横坐标相同的上方pixel,以及左上角的pixel。对这三个pixel进行某种计算,哪个pixel的梯度(gradient)最低,就复制那个pixel的值作为当前pixel的预测值。

如下图所示:

Paeth Prediction 计算方式

paeth prediction的宗旨就是判断当前pixel的参考像素中存在的边界(edge)。从计算层面来说,就是比较从上方和左边(abs(A-C), abs(L-C), abs (A+L-2C))寻找edge,把非edge方的值视为当前pixel的预测值。

例如

我们经过计算可用得知abs(L-C)的值比abs(A-C)大,则判断上方是存在边界的,所以把左边的值180作为p(1,1)的预测值更好。

下一个例子:

在这个例子中,我们经过计算可用得知abs(L-C)的值比abs(A-C)小,则判断左边是存在边界的,所以把上方的值180作为p(1,1)的预测值更好。

具体在源码中的实现示意如下

代码语言:javascript
复制
base = AboveRow[j] + LeftCol[i] – AboveRow[-1]
pLeft = Abs(base – LeftCol[i])           // abs(A-C)
pTop = Abs(base – AboveRow[j])     // abs(L-C)
pTopLeft = Abs(base – AboveRow[-1])    // abs(A+L-2*C)

if (pLeft <= pTop && pLeft <= pTopLeft)
    pred[i][j] = LeftCol[i]                   // 使用左边参考像素值
else if(pTop <= pTopLeft)
    pred[i][j] = AboveRow[j]             // 使用上方参考像素值
else
    pred[i][j] = AboveRow[-1]           // 若上方与左边均判断为不存在边界的情况,则使用左上方的值
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/12/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Paeth 帧内预测
  • Paeth Prediction 计算方式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档