HEVC中变换(Transform)过程中的scaling操作的理解

最近因为毕设需要,花了比较多的时间在研究HEVC的变换过程上,现将自己的一些理解记下来,以免自己忘了,也供大家指正批评~~~

首先,先让我们来看一下HEVC中变换模块的上下环境,即变换模块所在的位置:


可以看到,变换模块的输入是预测模块得到的残差,而输出则是变换系数(作为输入传送到量化模块)。这里要说的是,HEVC中的变换过程并不是无损的,出于对程序的复杂度和变换的精确性以及硬件实现的考虑,HEVC中的变换过程是有限精度的,也就是说,变换过程中有近似处理,所得到的结果有一定的误差。而变换过程中的近似处理就体现在scaling操作上。

1、DCT变换中有利于提高效率的7大性质

N点的一维DCT变换及变换核的系数:


我们称向量c_i(下标)是一个基础向量元,DCT变换过程中的7大有用性质如下:

(1) 所有的基础向量元之间是正交的:,这一性质可用于提高压缩效率(使得到的变换系数不相关,除去统计冗余)。

(2) 基础向量元有很好的能量束缚性,及可以将大多数能量集中在小部分系数上,也可以大大提高压缩效率。

(3) 基础向量元有相等的基:,这一性质可用于简化量化和反量化过程。

(4) 小块的变换核是大块变换核的子集,可由大块变换核得到。


(5) DCT变换核可以用有限的几个特定的数来形成。如:NxN的块的变换核可由N-1个特定的数构成。

(6) DCT变换核的第偶数个基础向量元是对称的,第奇数个基础向量元是反对称的,这一性质可用于减少算术运算的数量。

(7) DCT变换核中的系数具有确定的三角关系。


2、变换核的缩放

经过大量研究,权衡复杂度和压缩效率之后发现,HEVC的变换核应当满足如下条件:1.变换核中的系数都能用8bit表示(包括符号位);2.变换核的第一个基础向量元(第一个行向量)应当都等于64。基于以上两个前提,HEVC中对DCT变换核进行了缩放:对每个变换核中的系数左移 6+log2(N)/2 bit并取整,最后再对个别系数进行一定的调整之后(调整的原则在于:使得调整后的变换核满足上部分提到的原则4-6,并在原则1-3之间找到一个最好的平衡点),得到不同尺寸块的变换核。

这部分的缩放并没有体现在程序代码中,而是在研究计算之后,将之体现在了变换过程中用到的变换核里:

3、变换过程中的缩放

为了保证残差块经过变换和反变换之后基准相同,HEVC在变换模块中还增加了额外的缩放:S_T1  S_T2  S_IT1  S_IT2:


(图中的D就是上一部分提到的变换核)

为了保证变换过程中,所有的悉数都能用16bit的数(包括1bit的符号位)表示,需要对两次的一维DCT变换(HEVC中将二维的DCT变换拆成了两个一维DCT变换的叠加)分别进行缩放:(具体为什么请见我最后附上的英文文献,表示数学底子不够,没太看懂……)

S_T1:   2^(-(B+M-9))

S_T2: 2^(-(M+6))

 S_IT1: 2^(-6)

 S_IT2: 2^(-(21-B))

大概就学到了这么多,其中绝大多数内容都是从师姐推荐的一本英文书里看到的,我也将之上传了,大家有兴趣可以去下载(http://download.csdn.net/detail/ftlisdcr/9735128),书中对HEVC中的角角落落的细节基本都涉及到了,是本很不错的参考书~~~

PS:文中纯属个人理解,很多不对的地方还望高手指点……


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值