VTM10.0帧内之DM技术
Posted 神遁克里苏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VTM10.0帧内之DM技术相关的知识,希望对你有一定的参考价值。
色度只有8种候选模式:
横轴是色度块所对应的亮度块的预测方向,纵轴是当前色度块的候选预测模式。
冗余性检验: 如列表前面出现过DM的模式,则用66取代列表前面的重复模式
以免在RDcost的时候和DM模式重复,最后选取RDcost最小的一种角度模式,即可最终确定色度角度预测模式。
DM模式:
找到当前色度CU位置对应的亮度CU位置,将其中心块的预测模式作为DM候选模式。
uint32_t PU::getFinalIntraMode( const PredictionUnit &pu, const ChannelType &chType )
{
//uiIntraMode赋值为当前pu的帧内模式
uint32_t uiIntraMode = pu.intraDir[chType];
if( uiIntraMode == DM_CHROMA_IDX && !isLuma( chType ) )
{//如果当前不是亮度 且 是DM模式,则获得他中心点的亮度模式
uiIntraMode = getCoLocatedIntraLumaMode(pu);//函数解析见下方
}
if( pu.chromaFormat == CHROMA_422 && !isLuma( chType ) && uiIntraMode < NUM_LUMA_MODE ) // map directional, planar and dc
{//如果是422模式并且当前不是亮度,并且目前uiIntraMode的值小于NUM_LUMA_MODE,则进行帧内422角度的映射
uiIntraMode = g_chroma422IntraAngleMappingTable[uiIntraMode];
}
return uiIntraMode;
}
uint32_t PU::getCoLocatedIntraLumaMode(const PredictionUnit &pu)
{//找当前色度块对应的亮度中间的位置的PU传进去
return PU::getIntraDirLuma(PU::getCoLocatedLumaPU(pu));
}
uint32_t PU::getIntraDirLuma( const PredictionUnit &pu )
{
if (isMIP(pu))
{//如果是MIP模式,那么就返回planar
return PLANAR_IDX;
}
else
{//否则返回当前的亮度模式
return pu.intraDir[CHANNEL_TYPE_LUMA];
}
}
以上是关于VTM10.0帧内之DM技术的主要内容,如果未能解决你的问题,请参考以下文章