一种基于HEVC视频编码的TU树状结构抉择算法
技术领域
本发明涉及视频编码领域,具体涉及一种基于HEVC视频编码的TU树状结构抉择算法。
背景技术
HEVC视频编码中,TU树状结构是HEVC视频标准新提出的一种提高编码效率的编码工具,TU大小有4x4,8x8,16x16,32x32,对于提高编码效率有很大作用,但其抉择算法要求极高的计算复杂度,使得硬件的开销较大,增加了硬件成本。
比如,HM是JCTVC组织的HEVC参考编码器与算法实现。其采用的TU抉择过程如下:
对所有可能的TU块(64个4x4块, 16个8x8块, 4个16x16块, 1个32x32块),做如下运算过程:
1. 变换(Transform)->量化(Quant) ->反量化(Dequant)->反变换(InverseTransform) ->重构(Reconstruct).
2. 计算该TU块的失真,Distortion = SUM(原始像素– 重构像素)^2
3. 对量化后的系数做简化的CABAC,然后算出较为准确的残差编码的比特数Bits
4. 该TU的Rdcost = Distortion + Lambda * Bits, (Lambda是基于qp和帧类型而定的常数)。
5. 对所有的TU块的Rdcost做遍历比较,选出最小的TU_Rdcost组合,得到TU树结构。
上述算法中,反变换(Inverse Transform) 和重构(Reconstruct)的计算复杂度较高,导致硬件的开销较大,硬件Pipeline的级数较多,因此,硬件的整体性能不高。
发明内容
本发明的目的在于提供一种基于HEVC视频编码的TU树状结构抉择算法,解决目前的TU树状结构抉择算法的计算复杂度很高,导致硬件成本增加以及硬件性能不高的问题。
本发明为实现上述目的,采用以下技术方案实现:
一种基于HEVC视频编码的TU树状结构抉择算法,包括以下步骤:
(a)对TU的残差residual进行变换,得到量化前的系数C0;
(b)对步骤(a)中得到的C0进行量化,得到系数C1;
(c)采用固定的二进制 Bin与bits的压缩比,得到比特数估计值bits_estimate;
(d)对步骤(b)中得到的C1进行反量化,得到系数C2;
(e)计算该TU的失真值distortion:distortion=Sum(C2-C0)^2;
(f)计算该TU残差编码后的率失真代价rdcost= distortion+Lambda*bits_estimate,其中,Lambda是根据qp与帧类型而定的常数;
(g)计算该TU残差在全部不编码的情况下的率失真代价rdcost_zero:rdcost_zero= Sum(residual)^2;
(h)将步骤(g)得到的rdcost_zero与步骤(f)得到的rdcost进行比较,数值较小的作为该TU的最优代价TU_cost:TU_cost=MIN(rdcost_zero, rdcost)。
进一步地,作为优选技术方案,所述步骤(c)的具体过程为:
(c1)按照HEVC残差CABAC的二进制化过程,得到该TU残差二进制化过后的BIN的总数;
(c2)将BIN/(1.2~1.4)作为该TU残差部分的比特数估计值bits_estimate。
进一步地,作为优选技术方案,所述步骤(c2)中,将BIN/1.3作为该TU残差部分的比特数估计值bits_estimate。
进一步地,作为优选技术方案,所述步骤(h)的具体过程为:
(h1)当TU块为8x8块时,比较TU_cost_8x8和4个TU_cost_4x4的和,决定该8x8块是否分割.
如果TU_cost_8x8较小,则该8x8块不分割,否则,该8x8块分割;
该8x8块的最终最优代价TU_best_cost_8x8 = MIN(TU_cost_8x8, sum(TU_cost_4x4)),其中,TU_cost_8x8表示8x8块的最优代价,TU_cost_4x4表示4x4块的最优代价;
(h2)当TU块为16x16块时,比较TU_cost_16x16和4个TU_best_cost_8x8的和,决定该16x16块是否分割;
如果TU_cost_16x16较小,则该16x16块不分割,否则,该16x16块分割;
该16x16块的最终最优代价 TU_best_cost_16x16 =MIN(TU_cost_16x16, sum(TU_best_cost_8x8)),其中TU_cost_16x16表示16x16块的最优代价,TU_best_cost_8x8表示8x8块的最终最优代价;
(h3)当TU块为32x32块时,比较TU_cost_32x32和4个TU_best_cost_16x16的和,决定该32x32块是否分割.
如果TU_cost_32x32较小,则该32x32块不分割,否则,该32x32块分割;
该32x32块的最终最优代价 TU_best_cost_32x32 =MIN(TU_cost_32x32, sum(TU_best_cost_16x16)),其中,TU_best_cost_32x32表示32x32块的最优代价,TU_best_cost_16x16表示16x16块的最终最优代价。
本发明与现有技术相比,具有以下优点及有益效果:
(1)本发明相较于现有技术,巧妙地省去了反变换(Inverse Transform)和重构(Reconstruct)过程,降低了计算的复杂程度,减少了硬件开销,同时也减少了硬件Pipeline的级数,同时提高了硬件的性能。
(2)本发明采用固定的二进制Bin与bits 的压缩比估计比特数,去除了CABAC(编码、解码)的计算需求,极大降低了实现的复杂度,提高了硬件实现的性能。
(3)本发明相较于现有的复杂TU算法,只有0.5 BD-R的损失,即在相同视频编码质量下,只增加了0.5% 的码率。
附图说明
图1为本发明的TU块的率失真计算过程;
图2为本发明的TU树状结构抉择过程;
图3为本发明的TU树状结构结果示例。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例:
HEVC视频编码中,TU树型结构是HEVC视频标准新提出的一种提高编码效率的编码工具,TU大小有4x4、8x8、16x16、32x32,在对TU树状结构抉择时,是对所有的TU块做rdcost(率失真)计算,TU块包括64个4x4块, 16个8x8块, 4个16x16块, 1个32x32块,总共85个块。
如图1所示,本实施例所述的一种基于HEVC视频编码的TU树状结构抉择算法,包括以下步骤:
(a)对TU的残差residual进行变换,得到量化前的系数C0;
(b)对步骤(a)中得到的C0进行量化,得到系数C1;
(c)采用固定的二进制 Bin与bits的压缩比,得到比特数估计值bits_estimate;
(d)对步骤(b)中得到的C1进行反量化,得到系数C2;
(e)计算该TU的失真值distortion:distortion=Sum(C2-C0)^2;
(f)计算该TU残差编码后的率失真代价rdcost= distortion+Lambda*bits_estimate,其中,Lambda是根据qp与帧类型而定的常数;
(g)计算该TU残差在全部不编码的情况下的率失真代价rdcost_zero:rdcost_zero= Sum(residual)^2;
(h)将步骤(g)得到的rdcost_zero与步骤(f)得到的rdcost进行比较,数值较小的作为该TU的最优代价TU_cost:TU_cost=MIN(rdcost_zero, rdcost)。
通过上述步骤可知,本实施例并未像现有技术那样进行反变换(InverseTransform)和重构(Reconstruct),省去了这两个步骤,通过基于量化前和反量化后的频域空间的系数差异,来估计时域的失真,得到的实际仿真差异并不大,但是这样做大大简化了计算的复杂程度。另外采用固定的二进制 Bin与bits的压缩比,得到比特数估计值bits_estimate,不用对BIN做基于上下文的二进制算术编码过程,极大降低了实现的复杂度,提高了硬件实现的性能。
本实施例可对步骤(c)进行如下细分:
(c1)按照HEVC残差CABAC的二进制化过程,得到该TU残差二进制化过后的BIN的总数;
(c2)将BIN/(1.2~1.4)作为该TU残差部分的比特数估计值bits_estimate。
优选的,步骤(c2)中,将BIN/1.3作为该TU残差部分的比特数估计值bits_estimate。
本实施例可采用如下的方式对TU树状结构进行抉择:
(h1)当TU块为8x8块时,比较TU_cost_8x8和4个TU_cost_4x4的和,决定该8x8块是否分割.
如果TU_cost_8x8较小,则该8x8块不分割,否则,该8x8块分割;
该8x8块的最终最优代价TU_best_cost_8x8 = MIN(TU_cost_8x8, sum(TU_cost_4x4)),其中,TU_cost_8x8表示8x8块的最优代价,TU_cost_4x4表示4x4块的最优代价;
(h2)当TU块为16x16块时,比较TU_cost_16x16和4个TU_best_cost_8x8的和,决定该16x16块是否分割;
如果TU_cost_16x16较小,则该16x16块不分割,否则,该16x16块分割;
该16x16块的最终最优代价 TU_best_cost_16x16 =MIN(TU_cost_16x16, sum(TU_best_cost_8x8)),其中TU_cost_16x16表示16x16块的最优代价,TU_best_cost_8x8表示8x8块的最终最优代价;
(h3)当TU块为32x32块时,比较TU_cost_32x32和4个TU_best_cost_16x16的和,决定该32x32块是否分割.
如果TU_cost_32x32较小,则该32x32块不分割,否则,该32x32块分割;
该32x32块的最终最优代价 TU_best_cost_32x32 =MIN(TU_cost_32x32, sum(TU_best_cost_16x16)),其中,TU_best_cost_32x32表示32x32块的最优代价,TU_best_cost_16x16表示16x16块的最终最优代价。
以上所述,仅是本发明的较佳实施例,并非对本发明做任何形式上的限制,凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化,均落入本发明的保护范围之内。