HEVC中CU和TU的划分的过程

来源:互联网 发布:js 循环引用 编辑:程序博客网 时间:2024/04/28 22:26

在HEVC中,不仅要在当前CU中确定最佳的预测模式,还要判决当前CU的划分方式是不是最佳的划分方式。具体的实现过程是,我们先在当前CU里求出最佳的三个候选预测模式,所涉及函数是predIntraLumaAng和m_pcEdCost->calcHAD,xModeBitsIntra以及xUpdateCandList,然后再模式预测算法再选出三个候选模式添加到刚刚的候选模式列表中,当然,如果有些模式重合,则合并。利用这个最终的候选模式列表,我们进行最终的预测模式的确定,首先进行DCT变换,然后进行量化编码,然后进行RDCost的计算,然后和之前的预测模式的RDCost进行比较,来判决当前的预测模式是不是最佳,所涉及函数xRecurIntraCodingQT顶层函数,和xIntraCodingLumaBlk,其中这个底层函数又包括predIntraLumaAng预测函数,m_pcTrQuant->transformNxN变换和量化函数,m_pcRdCost->getDistPart失真求和计算函数,从xIntraCodingLumaBlk函数出来后,又会经过m_pcRdCost->calcRdCost率失真计算函数。最后和其他预测模式比较,选择最优的RDCost所对应的预测模式。注意这都是再当前CU中完成,程序的目的也仅仅是选择最佳的预测模式,不涉及CU模式的判决。

经过上面所述,当前的CU的最佳预测模式已经确定,同时最佳预测模式下对应的重建图像的数据和残差数据也已经存入到对应的对象中。下一步就是对CU进行递归了,每递归一次,程序就会经过上面所述的过程一次。对CU的递归其实也就是对TU的递归以及对PU的递归。再HM中,一个CU是不向下划分成PU进行预测的,而是把整个CU当成一个PU进行预测;同样,再对候选模式进行最佳模式判决的时候,也有预测的过程,而且预测的过程是以TU为单位的,除了64x64要划分成4个TU分别进行预测之外,其他情况下,也是把CU当作一个TU来进行预测的。另外,CU递归的详细过程在http://blog.csdn.net/buyi_shizi/article/details/49246323已经介绍过。

0 0
原创粉丝点击