H.266 JEM7.0 变换之三(信号依赖的变换 SDT)

介绍了一种依赖于信号的变换(SDT)技术,利用帧内和帧间的相似性提高编码效率。通过找到与当前块最相似的参考块,并基于这些块训练Karhunen-Loève变换(KLT),实现能量的有效集中。

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

Signal dependent transform, SDT
考虑到帧内和帧之间存在许多类似的块,依赖于信号的变换探索这样的相关性发现可以通过KLT增强编码性能。这种训练的KLT扮演一种变换的角色,其目的是更有效地集中能量。
这里写图片描述
对当前编码块C而言,首先,获取包含重构左上模板tb和编码块的预测块p的参考块R。然后,参考块被用来在重构区域中找N个最相似块。最后,计算基于这些块的一维KLT(Karhunen-Loéve transform)和预测块。编码块在解码端的相似候选块中是未知的。预测块和重构模板被用来指导寻找相邻块的操作,而不是使用原始块。这个工具支持4×4, 8×8, 16×16以及32×32的块大小。
KLT为集中能量的最佳变换。通过在重构区域中进行搜索,得到N个与参考块最相相似的块xi,i=1,2,Nxi,i=1,2,……N。此处,xi=(xi1,xi2xiD)Txi=(xi1,xi2……xiD)T,D表示向量维度,是变化块大小。如,4x4的编码块,D为16(原提案中写的是N为16,个人觉得是D)。块的预测pp减去并获得残差块,为ui,i=1,2,Nui=(xip)/Nui=(xi−p)/N。这些残差块被用为KLT求导零均值的训练样本。这些N个训练样本可以表示为:U=(u1,u2uN)U=(u1,u2……uN),是一个DxN的矩阵。考虑协方差矩阵ΣΣ为:Σ=UUTΣ=UUT。协方差矩阵的维度为DxD。KLT的基是该协方差矩阵的特征向量。对于自然图像/视频内容,候选数N选为100就可获取足够好的性能。
这个特征值分解的计算复杂度为O(D3)O(D3)。对于D=16的4x4的块而言,复杂度达到O(163)O(163),在可接受范围内。然而对于大块而言,复杂度很高。32x32的块D为1024,时间复杂度将达4x4块的262144倍。基于此,采用一个大块的快速算法。ΣΣ的维度为DxD。然而UTUUTU维度更低,为NxN。计算Σ=UTUΣ′=UTU的特征向量,其满足:

UTUϕ=ϕΛUTUϕ=ϕΛ

其中ϕϕ是特征矩阵,ΛΛ表示特征值是对角线元素的对角阵。对上公示左右均乘UU

(UUT)(Uϕ)=(Uϕ)Λ

从上式可知,Uϕ的列向量是UUTUUT的特征向量,其对应特征值是矩阵ΛΛ的对角元素。令φ=Uϕφ=Uϕ。表明高维度协方差矩阵UUTUUT的特征向量可以通过乘有特征向量ϕϕUU获得,特征向量是通过低维度协方差矩阵UTU获得的。φφΛΛ的维度均为DxN。所有UUTUUT其余(DN)(D−N)特征值都是零特征向量。可采用施密特正交化来填补(DN)(D−N)个特征向量来得到DxD的特征矩阵。
为了降低矩阵乘法的计算复杂度,可以用获取的N个特征向量进行KLT变化,将其余(DN)(D−N)个变换系数视为零。此操作不会削弱性能,因为第一个N投影可以覆盖大部分信号能量,而基是从与编码块高度相关的样本训练的。
上述的KLT加入块级别的编码过程。为了对图像/视频内容有更高的适应性,支持4x4,8x8,16x16,32x32的编码块的所提KLT。JEM编码端,率失真优化被用来决定使用SDT和AMT中的变换模式。

代码实现

  1. 帧内:帧内KLT主要通过函数xRecurIntraCodingLumaQT()调用的TEncSearch::xIntraCodingTUBlockTM()实现。该函数的主要步骤为:
    a. 通过函数getTargetTemplate()获取上方及左侧模板;
    b. 通过candidateSearchIntra()查找亮度块的最佳匹配块 ,主要通过函数searchCandidateFromOnePicIntra()实现,首先在块所在LCU内进行搜索,之后在LCU外搜索;
    c. 通过函数generateTMPrediction()获取模板匹配的预测块
    d. 通过函数calcKLTIntra()中调用的deriveKLT()完成协方差矩阵的计算,得到特征向量矩阵。
    e. 得到残差,进行变换量化及后续操作。变换中若useKLT = true,则会调用xKLTr()函数进行KLT变换。
  2. 帧间:帧间KLT主要通过函数TEncSearch::xEstimateInterResidualQT()实现。函数中,若采用CrossComponent模式,选择该模式下的变换;否则,若使用KLT,通过函数getTargetPatch()``candidateSearch()``candidateTrain()进行KLT的相关操作。最后进行变换及量化。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值