编码器图像质量调优指南
前言
本文档主要介绍芯片编码模块有关PQ图像质量调优算法的参数意义和使用方法。对低码率应用中常见的问题,特别是低码率场景的参数调节方法做了专题介绍。
与本文档相对应的产品版本如下。
编码PQ算法参数的意义和使用方法
IntraRefresh算法参数说明及使用方法
IntraRefresh算法功能是主要是为了应对带宽冲击来平滑码率的,将原有的I帧分若干行或若干列以划分为Islice/I宏块的形式在P帧分段刷新。
IntraRefresh算法参数说明如表1所示。
表 1 IntraRefresh算法属性
刷新行数或者列数,可以通过这个变量控制刷新的速度及码流的平稳程度。
|
|
注意事项:
- 场景适用性:IntraRefresh适用于对码率平稳性要求较高的场景,例如监控场景、无人机航拍等场景;
-
request_i_qp:默认值为max_qp。由于该值不是由码控通过统计计算出来的,是客户通过接口设置时,要注意当前的编码压力,若设置过低会导致I帧的码率过大。
Fg_Protect算法参数说明及使用方法
通过相关参数检测前景区域,并通过宏块级码控参数对前景进行qp的调节,进而影响前景的图像质量。客户可以根据对前景质量的重视程度进一步调节前景区域的QP,一般该算法用牺牲前景质量来节约部分码率提升背景质量,改善呼吸效应。
Fg_Protect算法参数如表1所示。
表 1 Fg_Protect属性
|
默认值均为8:值调节越大,前景检测精度越高,面积可能更精确,但同时可能减少;值调节越小,前景检测面积可能更大,但精度降低,容易导致误检。 |
|
注意事项:
- 该算法是可以叠加过mad宏块级码控调节,因此要注意调节QP的范围,避免带来QP调节力度过大,带来图像质量副作用。
-
前景检测相关参数:gain、offset,这两个值共同作用控制前景检测的准确性及面积大小,但具体参数需要根据场景设置,如果设置过小,会带来一定的误检。具体检测见图1。

图1左侧所示参数设置gain = 8/offset = 8,右侧所示参数设置gain = 4/offset = 4,从粉红色区域所示gain、offset设置越小,检测前景面积相对更多,但同时背景扰动也被错误识别到了。
CU倾向性参数说明及使用方法
通过调节每一层CU级的Intra、inter cost来影响RDO的模式判决,进而可影响Intra、inter的比例。例如一些运动DV、车载场景,适当增多inter模式有助于改善图像质量。例如一些摄像头固定的监控场景,适当增加Intra模式有助于改善运动过后拖尾问题。如果有边缘等图像区域,倾向性选择CU块小的模式。
CU倾向性参数如表1所示。
表 1 CU倾向性参数属性
|
|
|
通过调节cost的大小来影响RDO的模式判决。默认值设置为0,表示不调整。
|
|
注意事项:
图1红框所示的背景墙ring现象,通过调整CU级的rdo_cost,如图2所示。令边缘区域倾向性选择CU小块,可优化ring现象,但在调整的同时需要注重力度,会产生其他副作用。


左侧黄框在背景墙缝边缘区域倾向性选择更多CU8,而右侧更多选择CU32,优化结果见图3所示。

Skip倾向性算法参数说明及使用方法
Skip倾向性算法适用于摄像头固定场景。根据前景检测区分背景及前景,分别对背景和前景进行skip倾向性的调整。该算法通常应用在背景区域增加skip模式的倾向判决,来进一步节省码率。
Skip倾向性算法参数如表1所示。
表 1 Skip倾向性算法属性
注意事项:
副作用:若skip倾向性过大,会导致前景缺块、运动拖尾或者类似花屏等问题,如图1所示,上面为原图,下面副作用示例。

去呼吸效应算法参数说明及使用方法
去呼吸效应算法是为了改善安防类场景的呼吸效应问题。算法核心是在编码器内部进行图像质量相关的信息统计,通过两次编码及相关参数的调节来改善呼吸效应。本算法目前只适用于监控场景。
去呼吸效应算法参数如表1所示。
表 1 去呼吸效应算法属性
注意事项:
strength0/ strength1:会影响I帧编码的码率大小,如果设置过小,会导致后续P帧的码率不足,产生副作用。建议值:6/6。
Deblur/adv_deblur算法参数说明及使用方法
Deblur算法是为了解决运动过后产生的模糊、色彩残留等问题,核心是根据编码器内部的一些检测算法识别运动过后的区域,进而进行QP的调整。Adv_deblur是在deblur接口的基础上,将一些参数开放出来供客户进行精细调节。适用安防类场景。
表 1 deblur算法属性
表 2 adv_deblur算法属性
|
具体请参考表3所示。 |
|
|
具体请参考表4所示。 |
表 3 near_bg算法属性
表 4 far_bg算法属性
注意事项:
- gain/offset: 在实际使用时需要注意平衡检测区域的面积,若检测面积过多,在该区域倾向分配的码率会变多,会引起后续帧级码率的分配,导致整体帧级起始QP上升,引起其他图像副作用;建议值分别设置为8/8。
- qp_delta: qp的调节也会影响码率的分配,因此不适合设置过大,建议设置在[0, 3]范围内。


Quality_balance算法参数说明及使用方法
该算法采用了重复编码,利用第一次编码的统计信息结果指导第二次编码,来平衡一帧图像的编码效果。算法的核心是重新分配码率,使第一次编码较差的区域得到图像质量提升。注意,该算法会影响性能,且适合摄像头固定的场景(Hi3516CV610、Hi3511CV100不支持)。
quality_balance参数如表1所示。
表 1 quality_balance算法控制参数
|
通过quality_switch确定下标分前后两段,每一段的值都是递增, 实际质量均衡值减去。target_ratio,正数时选择前一段,负数选择后一段。 |
|
注意事项:
target_ratio:需要控制幅度,如果需要较好的质量,可以将该参数调大,但会影响码控平稳性,建议设置为45。
JPEG_dblk/JPEG_dering算法参数及使用说明
- JPEG_dblk算法是为了解决qpfactor < 60时编码出现block现象,对比没有开启去块效应码率会有2%左右的增加。
- JPEG_dering算法是为了优化强边缘的ring副作用。但会损失清晰度,影响后端智能检测结果。
JPEG_dblk算法参数如表1所示,JPEG_dering算法参数如表2所示。
表 1 JPEG_dblk算法参数
表 2 JPEG_dering算法参数
安防场景常见主观问题及主要的调优目标
常见的主观问题
安防场景下有以下常见主观问题,如图1所示。
- 块效应问题
- 运动模糊问题
- Ring问题
- 色彩残留
- 背景模糊及呼吸问题

编码过程中,出现各种主观问题的根源在于给场景分配的目标码率不足以承载当前场景所携带的信息量,达到一个好的画质。主要原因是编码过程中使用的QP过大导致的。在典型的定码率下,可能画面简单静止时没有问题,但在画面运动时(时域参考性差),就会出现显著的主观问题。
调优目标
安防场景在低码率调优的目标,在保证目标码率不变的情况下,提升总体的编码图像质量。在码率不足或严重不足的情况下,做到整个画面尽可能的质量“均衡 ”。所谓质量“均衡”是指编码结果的画面中没有特别明显的质量短板,在用户观看视频的过程中,同样也不会被某一类问题影响用户观看体验,以下为几个质量不均衡的例子。
- 例1:虽然背景的清晰度很好,但是物体运动过后,会引入严重的拖尾问题;
- 例2:在编码结果中,复杂纹理处细节清楚、但是简单纹理处,已经完全出现了模糊;
- 例3:在编码结果中,重点保持前景的清晰度,但是背景出现了明显的模糊以及较强呼吸效应等。
IPC低码率场景优化算法
优化框架
在实际使用中,一个编码器包含如下几个部分:各种码控算法(帧级、行级、块级码控),选择使用何种GOP类型,GOP的长短,还有各种编码底层的算法。从下一节开始,将具体介绍每一个算法的调优策略。
表 1 低码率场景优化框架
码控算法
Hi3516CV610、Hi3511CV100编码器提供了多种码控策略,面向不同场景需要选择不同的码控算法,表1总结对比了不同码控算法的特点。
表 1 码控算法对比
质量稳定,可以在一个较长时间范围内,从简单场景节省码率,分配给复杂场景使用以提升质量,使整体质量波动较CBR,ABR更小。 |
对瞬时码率稳定性要求较低,而且在一个时间范围内存在场景简单与复杂变化的场景,例如室内办公场景(白天复杂,夜晚简单)比如:“行业类存储应用”。 |
如图1所示,相对于CBR比较:
- AVBR的特点在于在场景静止时,尽量的降低码率;
- ABR的特点在于码率有一定的波动,以换取更好的质量;
- CVBR的特点在于场景静止时节省码率,并将节省的码率用于运动场景,从而在总码率不变的情况下,让运动场景分配更多的码率。

GOP类型的选择
在安防低码率场景下,主要建议使用低延迟单P与SmartP的GOP类型。在使用低延迟单P时,I帧间隔建议设为2秒或以上,更长的I帧间隔对于极低码率下提升图像质量至关重要。I帧提供了接入的随机性,但是耗费了大量的bit,在可以接受的范围内,建议I帧间隔越大越好。
NormalP与SmartP的GOP类型的具体特点如表1所示。
表 1 NormalP和SmartP的特点对比
|
|||
|
I帧间隔越大越好,一般建议不小于10秒,比较容易看出SmartP的显著收益。如果间隔在40秒以上,针对监控场景,SmartP与NormalP相比,可以节省30%的码率。 |
I帧大小的控制
在安防场景中,建议在较静止的场景中,使用更高质量(更小QP)的I帧,以提升场景的整体质量;在运动面积较大的场景中,使用较低(但优于P帧)质量的I帧,以避免运动区域质量过低。
控制I帧大小的主要手段以及建议如表1所示。
表 1 调优方法
编码内核主观PQ的改进算法
这里具体的调优算法有:deblur、debreath、Fg_protect、pvc(Hi3516CV610、Hi3511CV100不支持),详细用法见编码PQ算法参数的意义和使用方法。
Hi3516CV610 云台转动场景优化方案
这主要针对4G相机低码率下的云台转动、缩放场景进行了图像质量的调优。可调用的接口ss_mpi_venc_set_scene_mode(参考《MPP 媒体处理软件 V6.0 开发参考》“视频编码”章节),将当前的场景模式设置为OT_VENC_SCENE_3。
- 优势:在转动时某些时间段前景会稍微清晰,平均QP略小,收敛速度稍快,整体上效果更好。
- 劣势:ring/pattern 问题稍重。


云台场景优化模式使用FAQ:
- 转动的瞬间产生的码率波动,会导致在传输时卡顿、花屏问题:可采用降帧、降分辨率、强制skip帧、或者在转动时刻自适应的调节前端ISP细节。
- 云台转动新增的场景模式仅对之前的IPC模式转动时刻有一部分改善,但对于编码压力较大的场景也无法优化。
Hi3516CV610 FastMode 场景调优说明
客户可调用FastMode接口来提升编码性能,但开启该接口 ss_mpi_venc_set_fast_enc_param(详细内容请参考《MPP 媒体处理软件 V6.0 开发参考》“视频编码”章节)后,同等码率下主观图像会有较大程度的劣化。
行车场景
开启FastMode接口后,主观图像质量损失如图1和图2所示,左侧为FastMode关闭,右侧为FastMode开启。


说明:
如要达到和FastMode关闭时图像质量相当,通过测试:
- H.265 需要提升至少15%的码率;
- H.264需要提升至少50%的码率。 由于缺少相关的编码tools,pattern的问题提升多少码率都是无法避免的。

