H.266代码学习:变换部分总结

本文总结了H.266编码中变换部分的学习,包括变换的上层入口、帧内与帧间预测的区别,以及主变换、多核变换、KLT变换的细节。变换的主要目的是通过减小空间冗余,对残差信息进行编码。代码分析涵盖了前向变换的关键函数,如xIntraCodingTUBlock、transformNxN、xTrMxN等功能,探讨了JEM中多核变换和KLT变换的选择策略。

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

最近看了一段时间的JEM的变换部分了,先来总结一些,一来梳理一下思路,加深理解,二来列个提纲,方便大家阅读。

变换是指对当前块减去帧内/帧间预测生成的预测块得到的残差进行变换编码,使能量更多的集中于左上角,从而来降低空间冗余。变换之后会进行量化,而后会进行熵编码。

变换的上层入口

变换的对象是残差信息,残差是当前块减预测块得到的。预测分为帧内/帧间两种。由于JEM引入了KLT变换技术,根据是否使用KLT变换,帧内变换的上层入口被分成了xIntraCodingTUBlock(多核变换/原HEVC变换)和xIntraCodingTUBlockTM(KLT变换),两者是竞争关系,选最优者做最后结果。帧间则直接将KLT变换的入口增加在了xEstimateInterResidualQT中,会遍历两次分别做多核变换/原HEVC变换和KLT变换,两者竞争选最优。不过JEM中KLT复杂度太高,默认是关闭的。

xIntraCodingTUBlock代码分析详见H.266代码学习:xIntraCodingTUBlock函数

代码框架图及主要函数分析

这里将详细讲一下前向变换的主要函数,反变换部分代码量小很多,而且是前向变换的逆过程,不做介绍了。

前向变换代码框架图(点击看大图):

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值