跳转至

编码器图像质量调优指南

前言

概述

本文档主要介绍芯片编码模块有关PQ图像质量调优算法的参数意义和使用方法。对低码率应用中常见的问题,特别是低码率场景的参数调节方法做了专题介绍。

产品版本

与本文档相对应的产品版本如下。

产品名称

产品版本

Hi3516C

V608

Hi3516C

V610

Hi3511C

V100

修改记录

文档版本

发布日期

修改说明

00B01

2026-06-30

第1次临时版本发布。

编码PQ算法参数的意义和使用方法

IntraRefresh算法参数说明及使用方法

IntraRefresh算法功能是主要是为了应对带宽冲击来平滑码率的,将原有的I帧分若干行或若干列以划分为Islice/I宏块的形式在P帧分段刷新。

IntraRefresh算法参数说明如表1所示。

表 1 IntraRefresh算法属性

参数

参数释义

enable

使能信号。

mode

I宏块刷新模式:按行或者按列刷新。

refresh_num

刷新行数或者列数,可以通过这个变量控制刷新的速度及码流的平稳程度。

  • 刷新的行数或者列数越多,刷新的速度越快,但是码流平稳度越差;
  • 刷新的行数或者列数越少,刷新的速度越慢,但是码流平稳度越好。

request_i_qp

请求插入I帧的QP值。

设置I帧QP用于控制插入的IDR帧的质量,质量越好IDR帧大小越大;质量越差IDR帧大小越小。

注意事项:

  • 场景适用性:IntraRefresh适用于对码率平稳性要求较高的场景,例如监控场景、无人机航拍等场景;
  • request_i_qp:默认值为max_qp。由于该值不是由码控通过统计计算出来的,是客户通过接口设置时,要注意当前的编码压力,若设置过低会导致I帧的码率过大。

    • IntraRefresh按行刷新如图1所示。

      图 1 IntraRefresh按行刷新

    • IntraRefresh按列刷新如图2所示。

      图 2 IntraRefresh按列刷新

Fg_Protect算法参数说明及使用方法

通过相关参数检测前景区域,并通过宏块级码控参数对前景进行qp的调节,进而影响前景的图像质量。客户可以根据对前景质量的重视程度进一步调节前景区域的QP,一般该算法用牺牲前景质量来节约部分码率提升背景质量,改善呼吸效应。

Fg_Protect算法参数如表1所示。

表 1 Fg_Protect属性

参数

参数释义

enable

开启或关闭前景宏块级码控制。默认关闭。

direction

控制qp加减方向的阈值。

可根据当前的编码压力调节,往大调节,相对减qp级别增加,反之,相对减qp级别减小。

gain

offset

检测前景参数阈值。

默认值均为8:值调节越大,前景检测精度越高,面积可能更精确,但同时可能减少;值调节越小,前景检测面积可能更大,但精度降低,容易导致误检。

threshold_i

I帧中前景区域分级调控阈值。

threshold_p

P帧中前景区域分级调控阈值。

threshold_b

B帧中前景区域分级调控阈值。

注意事项:

  • 该算法是可以叠加过mad宏块级码控调节,因此要注意调节QP的范围,避免带来QP调节力度过大,带来图像质量副作用。
  • 前景检测相关参数:gain、offset,这两个值共同作用控制前景检测的准确性及面积大小,但具体参数需要根据场景设置,如果设置过小,会带来一定的误检。具体检测见图1。

    图 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倾向性参数属性

参数

参数释义

pred_mode

倾向性选择模式。

  • 自动模式:内部驱动自适应配置倾向参数
  • 手动模式:用户可配置倾向性

intra32_cost

Intra32倾向性调节,H.264无效。

通过调节cost的大小来影响RDO的模式判决。默认值设置为0,表示不调整。

  • 设置值在[1, 7]区间,值越小,选择该模式的倾向性越小;
  • 设置值在[8, 15]区间,值越大,选择该模式的倾向性越小;

说明:[8, 15]比[1, 7]区间模式的倾向性影响力度更大。

intra16_cost

Intra16倾向性调节。

解释与intra32_cost相同。

intra8_cost

Intra8倾向性调节。

解释与intra32_cost相同。

intra4_cost

Intra4倾向性调节。

解释与intra32_cost相同。

inter64_cost

Inter64倾向性调节。

H.264无效。

解释与intra32_cost相同。

inter32_cost

Inter32倾向性调节,H.264无效。

解释与intra32_cost相同。

inter16_cost

Inter16倾向性调节。

解释与intra32_cost相同。

inter8_cost

Inter8倾向性调节。

解释与intra32_cost相同。

注意事项:

图1红框所示的背景墙ring现象,通过调整CU级的rdo_cost,如图2所示。令边缘区域倾向性选择CU小块,可优化ring现象,但在调整的同时需要注重力度,会产生其他副作用。

图 1 ring的副作用现象

图 2 调整CU级rdo_cost

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

图 3 优化后图像对比

Skip倾向性算法参数说明及使用方法

Skip倾向性算法适用于摄像头固定场景。根据前景检测区分背景及前景,分别对背景和前景进行skip倾向性的调整。该算法通常应用在背景区域增加skip模式的倾向判决,来进一步节省码率。

Skip倾向性算法参数如表1所示。

表 1 Skip倾向性算法属性

参数

参数释义

enable

使能开关。

gain

前景检测参数。

默认值为8,值越小检测出的前景面积越多。

offset

前景检测参数。

默认值为8,值越小检测出的前景面积越多。

bg_cost

背景区域skip倾向性调节参数。

skip倾向性大小。默认不调节倾向性,即cost值为0;强制性skip,cost设置为8。

fg_cost

前景区域skip倾向性调节参数

skip倾向性大小。默认不调节倾向性,即cost值为0;强制性skip,cost设置为8

注意事项:

副作用:若skip倾向性过大,会导致前景缺块、运动拖尾或者类似花屏等问题,如图1所示,上面为原图,下面副作用示例。

图 1 副作用对比图

去呼吸效应算法参数说明及使用方法

去呼吸效应算法是为了改善安防类场景的呼吸效应问题。算法核心是在编码器内部进行图像质量相关的信息统计,通过两次编码及相关参数的调节来改善呼吸效应。本算法目前只适用于监控场景。

去呼吸效应算法参数如表1所示。

表 1 去呼吸效应算法属性

参数

参数释义

enable

去除呼吸效应使能控制。

strength0

设置去除呼吸效应强度调节参数。

与去除呼吸效应强度相关,该值越大,改善呼吸效应能力越弱,呼吸效应越明显。

strength1

设置去除呼吸效应强度调节参数。

控制I帧qp大小。其值越大,I帧会越小,其值越小,I帧会越大。

注意事项:

strength0/ strength1:会影响I帧编码的码率大小,如果设置过小,会导致后续P帧的码率不足,产生副作用。建议值:6/6。

Deblur/adv_deblur算法参数说明及使用方法

Deblur算法是为了解决运动过后产生的模糊、色彩残留等问题,核心是根据编码器内部的一些检测算法识别运动过后的区域,进而进行QP的调整。Adv_deblur是在deblur接口的基础上,将一些参数开放出来供客户进行精细调节。适用安防类场景。

deblur算法参数如表1和表2所示。

表 1 deblur算法属性

参数

参数释义

deblur_en

使能开关。

deblur_adaptive_en

自适应使能开关。使用时deblur_en必须使能。

表 2 adv_deblur算法属性

参数

参数释义

near_bg_en

离运动物体较近的拖尾与残留区域的检测使能信号。

far_bg_en

离运动物体较远的拖尾与残留区域的检测使能信号。

near_bg

近区域调控参数。

具体请参考表3所示。

far_bg

远区域调控参数。

具体请参考表4所示。

表 3 near_bg算法属性

参数

参数释义

gain

近区域调控参数。

默认值为8:值调节越大,检测面积越小,反之,检测面积越大。

offset

近区域调控参数。

默认值为8:值调节越大,检测面积越小,反之,检测面积越大。

qp_delta

近区域调控qp:检测区域内qp向下调节力度。

min_qp

近区域调控最小钳位qp。

max_qp

近区域调控最大钳位qp。

表 4 far_bg算法属性

参数

参数释义

gain

远区域调控参数。

默认值为8:值调节越大,检测面积越小,反之,检测面积越大。

offset

远区域调控参数。

默认值为8:值调节越大,检测面积越小,反之,检测面积越大。

qp_delta

远区域调控qp。

检测区域内qp向下调节力度。

min_qp

远区域调控最小钳位qp。

max_qp

远区域调控最大钳位qp。

注意事项:

  • gain/offset: 在实际使用时需要注意平衡检测区域的面积,若检测面积过多,在该区域倾向分配的码率会变多,会引起后续帧级码率的分配,导致整体帧级起始QP上升,引起其他图像副作用;建议值分别设置为8/8。
  • qp_delta: qp的调节也会影响码率的分配,因此不适合设置过大,建议设置在[0, 3]范围内。

图 1 优化前图

图 2 优化后图

Quality_balance算法参数说明及使用方法

该算法采用了重复编码,利用第一次编码的统计信息结果指导第二次编码,来平衡一帧图像的编码效果。算法的核心是重新分配码率,使第一次编码较差的区域得到图像质量提升。注意,该算法会影响性能,且适合摄像头固定的场景(Hi3516CV610、Hi3511CV100不支持)。

quality_balance参数如表1所示。

表 1 quality_balance算法控制参数

参数

参数释义

enable

使能开关

level_adaptive_en

qp_level自适应使能。默认关闭。

自适应使能开关打开后,手动设置的qp_level会根据当前场景的编码压力,自适应调节。

interval

两次编码的帧间隔,默认值为5。

间隔越大,可参考的继承性越差,会影响编码预测的准确性。

target_ratio

编码前后频域能量丢失百分比,超过这个预设值才会进行质量均衡调节。该值越大,图像效果越差。

ratio_offset_i

当level_adaptive_en使能时生效:自适应模式下I帧target_ratio的偏移量。

在码控平稳情况下,值越小,I帧图像质量越好。

ratio_offset_p

当level_adaptive_en使能时生效:自适应模式下P帧target_ratio的偏移量。

在码控平稳情况下,值越小,P帧图像质量越好。

quality_switch

控制qp加减方向的阈值。

小于该阈值减qp,大于该阈值加qp。

threshold[OT_VENC_MAX_QUALITY_BALANCE_NUM]

质量均衡分级调控阈值。

通过quality_switch确定下标分前后两段,每一段的值都是递增, 实际质量均衡值减去。target_ratio,正数时选择前一段,负数选择后一段。

level[OT_VENC_MAX_QUALITY_BALANCE_NUM]

qp调节力度。

注意事项:

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算法参数

参数

参数释义

enable

使能开关

表 2 JPEG_dering算法参数

参数

参数释义

dering_en

使能开关。

在相同量化表和qpfactor的情况下能减少Ring现象并且减小图片文件大小,但也会损失一些图片清晰度和细节。

dering_level

强边缘dering强度。

Level值越大,dering效果越明显,但同时损失的细节越多。

安防场景常见主观问题及主要的调优目标

常见的主观问题

安防场景下有以下常见主观问题,如图1所示。

  • 块效应问题
  • 运动模糊问题
  • Ring问题
  • 色彩残留
  • 背景模糊及呼吸问题

图 1 安防场景的主要图像质量问题

编码过程中,出现各种主观问题的根源在于给场景分配的目标码率不足以承载当前场景所携带的信息量,达到一个好的画质。主要原因是编码过程中使用的QP过大导致的。在典型的定码率下,可能画面简单静止时没有问题,但在画面运动时(时域参考性差),就会出现显著的主观问题。

调优目标

安防场景在低码率调优的目标,在保证目标码率不变的情况下,提升总体的编码图像质量。在码率不足或严重不足的情况下,做到整个画面尽可能的质量“均衡 ”。所谓质量“均衡”是指编码结果的画面中没有特别明显的质量短板,在用户观看视频的过程中,同样也不会被某一类问题影响用户观看体验,以下为几个质量不均衡的例子。

  • 例1:虽然背景的清晰度很好,但是物体运动过后,会引入严重的拖尾问题;
  • 例2:在编码结果中,复杂纹理处细节清楚、但是简单纹理处,已经完全出现了模糊;
  • 例3:在编码结果中,重点保持前景的清晰度,但是背景出现了明显的模糊以及较强呼吸效应等。

IPC低码率场景优化算法

优化框架

在实际使用中,一个编码器包含如下几个部分:各种码控算法(帧级、行级、块级码控),选择使用何种GOP类型,GOP的长短,还有各种编码底层的算法。从下一节开始,将具体介绍每一个算法的调优策略。

表 1 低码率场景优化框架

码控

CBR/ABR/CVBR/AVBR

GOP类型

NormalP

大P帧/小P帧

smartP

底层优化算法

Deblur算法

Debreathing算法

前背景码率分配

PVC算法

I帧大小控制

改善运动拖尾。

可根据当前编码压力,自适应的配置Deblur调节力度。

改善呼吸效应。

滤波参数自适应。

改善背景及清晰度。

基于不同编码压力实现不同前景背景的码率分配。

改善弱纹理清晰度。

通过部分帧重编来提升弱纹理区域的图像效果。

改善背景清晰度。

引入绝对的I帧控制,可以在满足I帧最大限制下,尽可能提升I帧质量。

码控算法

Hi3516CV610、Hi3511CV100编码器提供了多种码控策略,面向不同场景需要选择不同的码控算法,表1总结对比了不同码控算法的特点。

表 1 码控算法对比

码控算法

说明

优点

缺点

适用场景

CBR

在任何时刻,统计窗内的瞬时码率趋近于目标码率。

码率稳定。

场景复杂度变化时图像质量有较大波动:简单场景质量较好;复杂场景质量较差。

有固定带宽的码流传输场景,“各种应用场景”。

ABR

在每一个统计窗内的瞬时码率有较CBR有波动,在一个小范围时间(例如60秒)内,平均码率趋近于目标码率。

质量稳定,可以在一个小范围时间内给复杂场景提供更多码率以提升质量,使整体质量波动较CBR更小。

瞬时码率波动较CBR更大。

对瞬时码率稳定性要求较低的场景,例如存储应用,比如:“行业类存储应用”。

AVBR

通过运动检测调整目标码率:在静止场景时调低目标码率,达到降低总体码率的目的。

在静止场景中可以大幅度降低码率。

降低码率的同时会带来图像质量的下降。

“尽可能降低码率和带宽”。比如:“渠道或消费类网传或存储”。

CVBR

在一个较长的时间内,使平均码率保持在一个指定范围内,保证存储要求;并限制最大瞬时码率,保证传输/写入码率要求。

质量稳定,可以在一个较长时间范围内,从简单场景节省码率,分配给复杂场景使用以提升质量,使整体质量波动较CBR,ABR更小。

瞬时码率波动较CBR更大。

对瞬时码率稳定性要求较低,而且在一个时间范围内存在场景简单与复杂变化的场景,例如室内办公场景(白天复杂,夜晚简单)比如:“行业类存储应用”。

如图1所示,相对于CBR比较:

  • AVBR的特点在于在场景静止时,尽量的降低码率;
  • ABR的特点在于码率有一定的波动,以换取更好的质量;
  • CVBR的特点在于场景静止时节省码率,并将节省的码率用于运动场景,从而在总码率不变的情况下,让运动场景分配更多的码率。

图 1 码控算法的码率和质量对比示意图

GOP类型的选择

在安防低码率场景下,主要建议使用低延迟单P与SmartP的GOP类型。在使用低延迟单P时,I帧间隔建议设为2秒或以上,更长的I帧间隔对于极低码率下提升图像质量至关重要。I帧提供了接入的随机性,但是耗费了大量的bit,在可以接受的范围内,建议I帧间隔越大越好。

NormalP与SmartP的GOP类型的具体特点如表1所示。

表 1 NormalP和SmartP的特点对比

GOP类型

优点

缺点

建议配置

NormalP

  • 内存使用最少
  • 最快随机接入
  • I帧丢失时恢复速度最快

I帧消耗掉大量码率

I帧间隔建议为2秒或以上

SmartP

由于减少了I帧数量,可显著降低码率或者同等码率下提升质量

  • 需要额外一帧的内存储存参考帧
  • 随机接入稍慢
  • I帧丢失时恢复速度较慢
  • 需要支持长期参考帧的解码器播放码流

I帧间隔越大越好,一般建议不小于10秒,比较容易看出SmartP的显著收益。如果间隔在40秒以上,针对监控场景,SmartP与NormalP相比,可以节省30%的码率。

I帧大小的控制

在安防场景中,建议在较静止的场景中,使用更高质量(更小QP)的I帧,以提升场景的整体质量;在运动面积较大的场景中,使用较低(但优于P帧)质量的I帧,以避免运动区域质量过低。

控制I帧大小的主要手段以及建议如表1所示。

表 1 调优方法

调节方式

方式一

方式二

方式三(推荐方式)

参数

ip_qp_delta

max_i_proportion

min_i_proportion

ot_venc_super_frame_strategy

调节方式

  • I帧相对P帧的QP差值;
  • 调小该值时,可以使I帧分配的码率更小。
  • 最小IP比例和最大IP比例;
  • 当调小max_i_proportion值时,可以使I帧分配的码率更小。
  • 超大帧重编策略针对不同的帧类型来分别设置绝对目标bits数上限值;
  • 重编算法优化可明显减少重编次数。

用途&效果

  • 可以用于I帧平滑;
  • 降低I帧的大小。
  • 可以控制I/P的大小比例;
  • 可以用于I帧平滑,但并不绝对控制I帧的大小;
  • 通过重编来实现。
  • 直接(准确)控制I或P帧的绝对大小(bits)上限-用户自定义;并且保证不超过目标bits[差距在<5%以内];
  • 通过码率预测及重编实现。

问题&优势

  • I帧的大小不可控;
  • 较小I帧会显著影响背景清晰度,降低编码效率,该值越小,I帧越小。
  • 在max_i_proportion设置偏小时,比如20,会频繁引入重编,影响性能;
  • 无法控制I帧的准确大小,经常会影响背景的清晰度。
  • 用户需基于目标码率来设定目标bit(建议值:目标bit=目标码率 * 2)。
  • 客户根据实际网络带宽的限制,在不引起网络阻塞前提下,提高I帧质量,实现更好的压缩率。

编码内核主观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 问题稍重。

图像质量优化对比如图1和图2所示。

图 1 优化前

图 2 优化后

云台场景优化模式使用FAQ:

  • 转动的瞬间产生的码率波动,会导致在传输时卡顿、花屏问题:可采用降帧、降分辨率、强制skip帧、或者在转动时刻自适应的调节前端ISP细节。
  • 云台转动新增的场景模式仅对之前的IPC模式转动时刻有一部分改善,但对于编码压力较大的场景也无法优化。

Hi3516CV610 FastMode 场景调优说明

客户可调用FastMode接口来提升编码性能,但开启该接口 ss_mpi_venc_set_fast_enc_param(详细内容请参考《MPP 媒体处理软件 V6.0 开发参考》“视频编码”章节)后,同等码率下主观图像会有较大程度的劣化。

行车场景

开启FastMode接口后,主观图像质量损失如图1和图2所示,左侧为FastMode关闭,右侧为FastMode开启。

图 1 H.265 主观图像质量损失

图 2 H.264 主观图像质量损失

说明:

如要达到和FastMode关闭时图像质量相当,通过测试:

  • H.265 需要提升至少15%的码率;
  • H.264需要提升至少50%的码率。 由于缺少相关的编码tools,pattern的问题提升多少码率都是无法避免的。