运动估计

编解码里面我觉得最核心的就运动估计这块了,一般JM代码会提供全搜索、快速搜索,以及非对称十字型多层六边形格点搜索算法(简称UMHS)是清华几个牛人搞出来的,比起全搜索节省90%的运算量,由于物体的运动千变万化,很难用一种简单的模型去描述,也很难用一种单一的算法来搜索最佳运动矢量,因此实际上大多采用多种搜索算法相组合的方法来提高预测的有效性。



UMHS运动估计步骤:
1. 搜索过程的起始搜索点搜索,一般开始是(0,0)
2. 非对称的十字交叉搜索。 原因:由于自然界物体运动水平方向要比垂直方向剧烈一些。
3. 5*5小矩形全搜索。
4. 扩展的多层次大六边形搜索
5. 菱形搜索。





UMHS关键代码:
void UMHexagonSOnePt( umhs_img *img, int iMvX, int iMvY, umhs_stat *p_state )
{
	clipMv( &iMvX, &iMvY, img );

	// should be in the search window
	if( abs(iMvX - p_state->iCentX) <= p_state->iRange && abs(iMvY - p_state->iCentY) <= p_state->iRange ) 
	{
		// check if already searched
		if ( img->m_pcSearch->m_ppiMcostState [iMvY - p_state->iCentY + p_state->iRange][iMvX - p_state->iCentX + p_state->iRange] == 0 )
		{
			// axis of the pixel of the current MB.
			int   pix_x_t = (img->m_iMBX << LOG2_MB_SIZE) + IMG_PAD_SIZE;
			int   pix_y_t = (img->m_iMBY << LOG2_MB_SIZE) + IMG_PAD_SIZE;
			int   iCost   = 0;

			Pel  *src     = img->m_cPic[1].m_pPixY + pix_x_t        +  pix_y_t         * img->m_cPic[1].m_iStrideY;
			Pel  *dst     = img->m_cPic[0].m_pPixY + pix_x_t + iMvX + (pix_y_t + iMvY) * img->m_cPic[0].m_iStrideY;

			// cost = SAD + lambda*bits
			iCost  = GetSAD  ( src, dst, img->m_cPic[1].m_iStrideY, img->m_cPic[0].m_iStrideY, 1 << LOG2_MB_SIZE, 1 << LOG2_MB_SIZE, p_state->iMinCost);
			iCost += MV_COST ( img->m_dLambdaMotion, iMvY - p_state->iCentY, iMvX - p_state->iCentX );

			if( iCost < p_state->iMinCost )
			{
				p_state->iMinCost       = iCost;
				p_state->iBestX         = iMvX;
				p_state->iBestY         = iMvY;
			}
			img->m_pcSearch->m_ppiMcostState [iMvY - p_state->iCentY + p_state->iRange][iMvX - p_state->iCentX + p_state->iRange] = 1;
		}
	}
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值