宽角度帧内预测模式 WAIP
- 在 HEVC 中,由于帧内预测块都是正方形的所以各个角度预测模式使用的概率是相等的。而在 VVC 中,帧内预测块可能是矩形块,对于水平类的块(宽大于高)上边的参考像素使用概率大于左边参考像素的使用概率,对于垂直类的块(高大于宽)上边的参考像素使用概率小于左边参考像素的使用概率。所以 VVC 中提出了 WAIP(Wide-angle intra prediction),在对非正方形块进行帧内角度预测时用宽角度方向替换原始的方向。
- 传统的帧内预测方向是按顺时针从 45 度到-135 度,在 VVC 中需要将非正方形块的某些角度自适应的替换为宽角度,替换后的模式还是按照原始模式的索引在码流中传输,在解码端该索引可以映射到替换后的模式。所有总共的帧内预测模式数还是 67 个,预测模式编码方法没有改变。
- 为了支持这些宽角度的预测方向,上方需要 2W+1 个像素,左侧需要 2H+1 个像素。
- 在 WAIP 中需要被替换的模式由该块的宽高比决定,如下表所示,可能每个版本提案有所差异,下表按照最终提案。
宽高比 | 被替换的帧内模式 | 替换为 |
---|---|---|
W/H=16 | Modes 2、3、4、5、6、7、8、9、10、11、12、13、14、15 | Mode+65 |
W/H=8 | Modes 2、3、4、5、6、7、8、9、10、11、12、13 | Mode+65 |
W/H=4 | Modes 2、3、4、5、6、7、8、9、10、11 | Mode+65 |
W/H=2 | Modes 2、3、4、5、6、7 | Mode+65 |
W/H=1 | none | |
W/H=1/2 | Modes 61、62、63、64、65、66 | Mode-67 |
W/H=1/4 | Modes 57、58、59、60、61、62、63、64、65、66 | Mode-67 |
W/H=1/8 | Modes 55、56、57、58、59、60、61、62、63、64、65、66 | Mode-67 |
W/H=1/16 | Modes 53、54、55、56、57、58、59、60、61、62、63、64、65、66 | Mode-67 |
- 帧内预测中带有宽角度模式示意图:
- 如图 4 所示,在宽角度帧内模式中有时垂直相邻的两个像素其参考像素却不连续。随着角度α增大影响更大,为了降低其影响要对参考像素进行低通滤波和平滑处理。当在宽角度模式中有 8 种 non-fractional 角度,即 [−14, −12, −10, −6, 72, 76, 78, 80];如果一个块由这几种模式预测,参考像素不经过插值直接使用,这样需要平滑滤波的参考像素数目大大减少。
- 在 VVenC 编码器中关于宽角度帧内预测模式获取的函数定义如下:在 IntraPrediction.cpp 文件中定义。
int IntraPrediction::getWideAngle( int width, int height, int predMode )
{
if ( predMode > DC_IDX && predMode <= VDIA_IDX )
{
int modeShift[] = { 0, 6, 10, 12, 14, 15 };
int deltaSize = abs(Log2(width) - Log2(height));
if (width > height && predMode < 2 + modeShift[deltaSize])
{
predMode += (VDIA_IDX - 1);
}
else if (height > width && predMode > VDIA_IDX - modeShift[deltaSize])
{
predMode -= (VDIA_IDX - 1);
}
}
return predMode;
}
标签:预测,predMode,H266,模式,像素,int,角度,WAIP,VVC
From: https://blog.csdn.net/yanceyxin/article/details/145008624