【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];
  }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值