基于ERP特性的自适应QP
来源:互联网 发布:web api 数据库 编辑:程序博客网 时间:2024/06/10 18:30
在之前对投影格式的分析中已经反复提到了,ERP存在与纬度相关的横向拉伸,越向两极拉伸越严重。基于这个特性,可以对编码进行相关的优化。在JEVT F会议提案中出现了自适应QP的方法,获得了不错的效果。
JVET F会议中出现了三种基于ERP特性的自适应QP,提案号分别为F0038、F0049和F0072,其中F0038和F0049相似,而且效果要远优于F0072,下面就两者进行简单介绍。
F0038和F0049基本思想相同,都是根据纬度来调整QP,高纬度使用大QP,向赤道QP变小。两者采用了相同的公式对QP进行调整:
其中w与纬度相关。两篇提案的区别就在于w的计算方法不同。
1. F0038
F0038使用
这里
基本QP为27时,其效果如下图:
提案中没有对一个CTU的y值做介绍,猜想可能使用的是CTU中心像素的y值。
编码结果RA下平均编码增益为4.3%,DrivingInCountry序列增益最大为9.0%。而全I帧1帧下的平均增益为2.9%,性能提升是很可观的。
2. F0049
F0049直接使用的是基于WS-PSNR的权重的w。
WS-PSNR的权重为:
F0049对WS-PSNR的权重进行了归一化。
其中Total_weight是整幅图所有高度的WS-PSNR权重和。
归一化后
因为要在CTU级别上做,每个CTU使用同一个QP,F0049使用的是CTU中所有高度对应的
其效果与F0038相似,RA下平均编码增益为4.3%,DrivingInCountry序列增益最大为9.0%。
3. 两者区别
两者的区别就在于w的计算和取值范围。
F0038使用
F0049使用的是归一化的WS-PSNR权重,范围为0~1.570795,当w小于1时,
4. 实现
下面以JVET-0049为例介绍HM中的实现。
1.开启deltaQP
默认情况下,编码器熵编码中会直接使用帧层的QP。要对每个CTU使用不同的QP,就需要开启deltaQP。
查语法可知,deltaQP是由cu_qp_delta_enabled_flag控制的,找到PPS中cu_qp_delta_enabled_flag:
WRITE_FLAG( pcPPS->getUseDQP() ? 1 : 0, "cu_qp_delta_enabled_flag" );
可以确定getUseDQP对应的m_useDQP,就是cu_qp_delta_enabled_flag。
Bool getUseDQP() const { return m_useDQP; }
因此需要开启m_useDQP。在xInitPPS函数中直接设置m_useDQP为true。
pps.setUseDQP(true);
2.CTU级别的QP
在compressSlice中会调用compressCtu对每一个CTU进行编码,在这之前计算每一个CTU的QP,记作ctuQp,计算过程简单,不再多说了。
实际QP起作用的地方是在xCompressCU中,在分块划分之前会确定iMinQP和iMaxQP,然后尝试iMinQP到iMaxQP中的所有QP,进行划分。默认情况下,iMinQP和iMaxQP相等,这样,我们只需要令iMinQP和iMaxQP都等于ctuQp即可。
3.修改lambda
在尝试实现时,发现只修改QP,性能要比JVET0049差了一半多,其实JVET0049并非只修改了QP,还根据QP修改了lambda,在提案中并没有提到,因此其性能的提升其实有很大一部分是来自修改lambda。
lambda的修改很容易,HM中已经有现成的函数根据QP来更新lambda了,只需要在compressCtu前调用即可。
updateLambda(pcSlice, (Double)ctuQP);
- 基于ERP特性的自适应QP
- QP
- qp 中文乱码的设置
- ERP与SOA相结合:基于SOA的ERP体系架构
- ERP与SOA结合:基于SOA的ERP体系架构
- 基于视窗的自适应网站
- 一种H.264高清视频的无参考视频质量评价算法(基于QP和跳过宏块数)
- Epicor推出基于SOA的新一代ERP
- 基于J2EE体系的新一代ERP系统
- 基于SOA体系结构的ERP应用研究
- 基于Ofbiz的ERP Opentaps 1.5 安装
- 基于Ofbiz的ERP Opentaps 1.5 安装
- QP量子编程的学习总结
- QP问题的解法(拉格朗日乘子法)
- JEM亮度QP和lambda的计算
- HEVC有关量化参数Qp的计算
- 基本信息在ERP软件的特性和功能
- 基于CSS3的自适应布局技术
- 仿射变换
- 我们很快就会有解码和操纵人脑的力量
- pandas 索引列、过滤、分组、求和
- HashMap类型数据读写文件
- (二十八)Amchart 界面图标显示
- 基于ERP特性的自适应QP
- 学哪种编程语言更有“钱”赚?
- 自定义view画圆
- 困扰许久的dataguard问题:error 12514 received logging on to the standby
- MySQL和Oracle的区别总结
- win10无法访问共享文件夹,登录失败,未授予用户在此计算机上的请求登录类型
- python中函数默认参数的陷阱(《改善python程序的91个建议》)
- Java-solr搜索
- CSS小结