HEVC Intra流程

HEVC标准中CU和TU采用的是四叉树的划分方式,HM的代码中采用的是4叉树的深度遍历,如下图所示

trace HM8.0的代码可以得到下面的图,每一层前面两个-

TEncCu::xCompressCU
-- TEncCu::xCompressCU
---- TEncCu::xCompressCU
------ TEncCu::xCompressCU
------ TEncCu::xCompressCU
------ TEncCu::xCompressCU
------ TEncCu::xCompressCU
---- TEncCu::xCompressCU
------ TEncCu::xCompressCU
------ TEncCu::xCompressCU
------ TEncCu::xCompressCU
------ TEncCu::xCompressCU
---- TEncCu::xCompressCU
------ TEncCu::xCompressCU
------ TEncCu::xCompressCU
------ TEncCu::xCompressCU
------ TEncCu::xCompressCU


所以一个64x64的CU,如果进行深度为四的划分的话,一共会形成一颗4^0+4^1+4^2+4^3=85个CU,深度遍历四叉树的每个节点,计算出四叉树上每个节点的权重,即当前CU的RDCost。如果当前CU的所有划分的RDCost之和要小于不划分的RDCost,则当前CU在编码的时候不做划分。通过这个算法,计算出使整个64x64的RDCost最小的划分路径,用于编码。

对于TU也采用和CU类似的四叉树递归。


每一个CU的Intra预测都使用35中预测方式,但是在HM中使用了MPM快速算法,对所有35中预测进行HAD估算出代价以后,选出几种可能的预测进行RDO,然后选择一个最佳的预测算法,这样大大减少了RDO的次数。

你可能感兴趣的:(HEVC Intra流程)