【VTM10.0】帧内之DM技术

本文介绍了色度预测中涉及的8种候选模式及其确定过程,包括如何通过冗余性检验避免重复模式,以及如何选择最终的色度角度预测模式。此外,还详细解析了DM模式的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

色度只有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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值