先看问题:这是我在看“Block Partitioning Structure in the HEVC Standard”一文的时候遇到的一副图片,描述的是不同的编码单元CU以及划分深度对编码效率及图像失真情况的影响。
关于s64h4和s16h2的解释,就不多说了,见图上面的图片注解。
一开始我觉得里面的曲线有点不能理解~:
s64h4 分4层叶点划分,最小编码块是8*8,最大编码块为64*64;
s16h2 分2层叶点划分,最小编码快是8*8,最大编码块为16*16。
咋一看,s16h2 应该不输给s64h4吧...
大家觉得呢??
其实不然,下面就解释一下这幅图:
① 同一个
PSNR
下面,
s64h4
用的码率小,是因为采用了大块CU,更合理去分配了资源,哪里该大哪里该小,大
CU
的地方肯定相比
s16h2
更节省码率;
②
同一码率下面,对于
s64h4
,
CU
选择跨度大,平坦区域选择64*64、32*32等相对大的CU,可以节省码率,纹理复杂区域则大量使用最小
CU(8*8)
;而对于
s16h2
,最大的
CU
只能是
16*16
,平坦区域浪费了不少码率空间但是在这样的区域并没有获得比s64h4用大CU预测得更好的效果,反而浪费了码率。以致后来,
s16h2
只能约束成本获得得到与
s64h4
相同的码率,视频质量自然就下降了。。
②
这个问题,让我想到以前听来的一句话: 一幅图像全部用小块编码,其效果不见得比用大块小块混合编码的“效果”好(码率、
PSNR
、复杂度)。