跳转至

图像自适应 使用说明

前言

概述

自适应模块可以根据当前环境光线的明暗变化以及用户设置的码率来调节相关图像及编码参数,以优化图像显示效果。

产品版本

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

产品名称

产品版本

Hi3516C

V608

Hi3516C

V610

读者对象

本文档(本指南)主要适用于以下工程师:

  • 技术支持工程师
  • 软件开发工程师

修订记录

修订记录累积了每次文档更新的说明。最新版本的文档包含以前所有文档版本的更新内容。

文档版本

发布日期

修改说明

00B01

2026-06-30

第1次临时版本发布。

概述

摄像机在拍摄视频时会面对外界场景的变化。对于不同的场景,芯片内部的ISP模块会相应地使用不同的参数,以达到采集得到的图像效果对于当前场景最优。

自适应Sample总体介绍

模块介绍

之前的自适应sample面临着,当适配多款sensor时,由于要调节的参数类型和参数值不同,所以每个sensor都需要维护一套自适应代码,这样代码量较多,同时一款sensor上面添加的参数如果要配置到其他sensor,也要改其他的自适应代码,维护起来较为困难。

Hi35xxVxxx当前不同Sensor的参数赋值代码统一共用一套。主要通过模块的开关来保证不同Sensor的不同模式来配置ISP相关参数。如图1所示,其中0表示当前模块关闭,该参数不会配置到对应模块的接口中,反之为1时,表示当前模块开启。

图 1 Ini文件中模块开关示意图

模块框架图

图 1 SCENE Sample框架图

自适应Sample模块介绍

自适应Sample模块按功能可以分解为如下子模块:

自适应参数导入

图 1 自适应sample参数获取示意图

自适应调试参数是由PQ离线标定获取到的,在自适应模块运行过程当中,应确保自适应调试参数已经全部齐备。

PQ离线标定参数的存储方式可以分为两种,写在ini配置文件或写在源码当中。当参数写在ini配置文件中时,可以通过ini解析工具得到相应的参数,用此方式,在参数调试过程中,修改参数无需编译源码。而将参数写在源码中时,获取参数无需解析,但是缺点则是,调试时修改参数,需要重新编译代码。

说明:

  • 自适应调试参数中还有一种类型是由厂测时产线标定获取到的,如Mesh-Shading的table以及静态坏点的table。
  • 这种调试参数的存储方式只能是写在ini配置文件中,因为通过此方式,无需重新编译源码。

自适应主框架

自适应主框架是自适应模块对产品提供功能函数接口的子模块,包括自适应模块的初始化、去初始化,以及根据当前的媒体通路刷新自适应参数并启动自适应参数调节功能等。

该模块可以适用于多种产品形态,包括但不限于_录像机_、运动相机,对于不同的产品形态提供上述提到的基础功能。

图 1 自适应框架代码示意图

说明:

Component为预留部分,待后续补充自适应新增规格。

自适应调节模块

自适应参数可以按照静态和动态分成两个大类,静态参数是在参数生效过程中只需要配置一次,而动态参数配置则是随着当前场景的变化而变化,每个大类又根据ISP模块分成各个子类。

对于不同的产品形态,或者对于相同产品形态不同的sensor,需要调试的自适应参数root是有可能不同的。因此将自适应调试参数赋值单独剥离成一个模块,这样对于自适应整个大模块来说,面对参数调试多样性的需求,只有该子模块是变化的,降低代码维护复杂度。

图 1 自适应调节模块示意图

文件组织

自适应模块的文件组织结构如图1所示,主要分为ini解析组件configaccess和iniparser工具,其中iniparser工具当前位于source/common/include目录下,configaccess位于source/mpp/sample/common/目录下,各sensor不同的param、source和lib,以及整个模块的公共代码。

  • Tools内部基于iniparser封装的configaccess工具,用作ini文件的解析;
  • Src内部主要有core(自适应框架代码)和 sample:(自适应sample的支撑代码);
  • Include内部主要是自适应sample和自适应框架代码所需头文件。
  • param目录主要是放置N个Sensor参数ini文件。

图 1 SCENE模块文件组织

重要概念

下面以双pipe抓拍(当处于8M抓拍,前端sensor时序为4K30)为例,介绍本模块如何调节图像参数,并讲解一些API数据类型中的概念,方便用户配置。

单sensor预览抓拍通路,如Figure1所示。

图 1 单sensor预览抓拍通路示意图

如图1所示当前媒体通路中两个pipe的数据来源于同一个sensor,且pipe0中的ISP可以控制sensor,因此pipe0和pipe1的main_pipe_hdl都为0。

  • main_pipe_hdl指可以控制sensor的ISP所在的pipe数量和sensor的数量一致。当两个pipe的数据来源于同一个sensor,它们的main_pipe_hdl相同。
  • 单sensor预览抓拍通路中,需要调节图像质量,则需要配置位于pipe通路上的ISP、位于vpss上的3DNR、位于VENC上的编码属性。
  • pipe通路指以vcap pipe为起点,包括和其绑定的vpss以及后续的venc、vo。所以图1中有两条pipe通路。

    场景自适应模块将当前的媒体通路分解为一条或多条pipe通路,每条pipe通路配置一组自适应参数,每一组自适应参数由一个图像参数调节文件维护,请参考" 数据类型"。当前pipe通路需要配置的自适应参数由pipe_param_index来指定。pipe_param_index具体含义请参考ot_scene_pipe_attr。

开发指引

使用流程

使用概述

自适应模块相关API和参数说明可参考本文档下述部分。具体实现可参考自适应的SDK sample, 自适应使用流程如图1所示。

图 1 自适应模块使用流程图

运行对应Sensor ini文件

场景说明

在SDK sample中,不同的sensor分属于不同的文件夹且各自独立,每一个sensor维护自己的参数。

工作流程

运行过程如下:

  1. 在Sceneauto的目录下,执行Makefile生成对应sample_scene。
  2. 执行sample_scene以加载param目录下对应的sensor的ini文件。

注意事项

  • Sceneauto目录下的param文件中的参数配置说明参考本开发参考的后续章节。
  • Src/core目录下的source文件中的源码用于自适应参数的赋值。

获取和导入自适应和媒体通路参数

场景说明

启动场景自适应功能所需要的参数分为两部分,自适应调试参数和媒体通路参数。在Sensor的文件中,自适应调试参数的ini文件一般有多个,如启动自适应,媒体通路上每一个正在运行中的pipe都应当赋值一组自适应调试参数,各pipe上赋值的参数可以相同也可以不同。

在sample中,自适应调试参数和媒体通路参数都被存储在ini配置文件中,首先需要在运行过程中解析ini文件将参数写入到特定内存中的结构体,再导入到自适应模块当中。

工作流程

获取和导入模块所需参数的过程如下:

  1. Configaccess工具解析对应sensor路径下的config_cfgaccess_hd.ini。
  2. Configaccess工具分别解析自适应调试参数和媒体通路参数,并将这两类参数分别存储在一个数组当中。
  3. Sample调用自适应接口将自适应调试参数数组导入自适应模块中,并选取一种和当前媒体通路匹配的参数配置到模块中。

图 1 SCENE模块使用流程图

注意事项

  • 媒体通路参数在后续的数据结构详解中有详细说明,媒体通路参数主要是当前媒体通路的使能关系,指示各个使能的媒体pipe上该配置哪一套自适应调试参数。
  • 自适应调试参数的集合是一个数组,媒体通路参数中各pipe上要配置的自适应调试参数为该数组的下标,需提前指定。
  • 各个自适应调试参数在数组中的位置在config_cfgaccess_hd.ini中指定。

启动场景自适应

场景说明

场景自适应的启动主要分成两个步骤。配置各pipe上的静态参数,静态参数表示该参数只需要配置一次。之后再配置各pipe上的动态参数,动态参数表示该参数会随着当前的场景变化而变化。

说明:

当前版本动态参数跟随场景的变化而变化,主要取决于当前场景下的曝光量、ISO或者曝光比。

工作流程

启动场景自适应的过程如下:

  1. 调用自适应相应的接口,配置媒体通路参数,调用ot_scene_set_scene_mode ()。
  2. 自适应启动,并跟随当前场景动态调试某些参数。

切换自适应配置

场景说明

在场景自适应的过程中,会伴随着媒体通路变化这样的典型行为。当媒体通路发生变化时,如线性模式切换到WDR模式,运动DV多个分辨率之间的切换等,各个通路pipe上的要配置的自适应参数一般也会需要相应的发生变化,此时需要切换自适应的配置。

工作流程

切换自适应配置的过程如下:

  1. 首先将自适应Pause,调用ot_scene_pause (TD_TRUE)。
  2. 再切换媒体通路。
  3. 获取当前媒体通路下自适应模块针对此通路的配置参数。
  4. 启动自适应,调用ot_scene_set_scene_mode ()。
  5. 将自适应Resume,调用ot_scene_pause (TD_FALSE)。

注意事项

  • 当媒体通路关闭时,需要调用自适应接口ot_scene_pause(TD_TRUE), 来防止调用ISP接口。
  • 当媒体通路开启时,需要调用自适应接口ot_scene_pause(TD_FALSE),来使能调用ISP接口。

Ini解析工具介绍

当前自适应sample中,解析ini参数主要依赖于ini文件解析库iniparser,以及在此基础上封装的cfgaccess工具。

Iniparser主要功能就是将ini配置文件中的字符串解析成bool值、int值、long值等特定的数据类型,而cfgaccess工具是在此基础上做了一层封装,可以通过一个主ini配置文件对其余ini配置文件做到很好的管理,在自适应sample中,该主ini配置文件为各sensor下param文件中config_cfgaccess_hd.ini,如图1所示。

图 1 Cfgaccess工具所需要的ini配置管理文件

config_scenemode所对应的媒体参数配置ini文件虽然只有一个,但其中包含了多种媒体参数配置。而scene_param_n所对应的自适应配置参数有多个,每个ini配置文件对应一组参数。

通过该文件,ini解析工具可以一次解析多个ini配置文件,并且将ini配置文件生成的参数有序的存储。

同时通过cfgaccess工具,可以方便快捷的知道ini配置文件中是否有对应的项,具体的使用请参考sample代码。

自适应配置参数介绍

自适应配置参数包括动态和静态两大类,其中各大类还可以按模块细分成子类。典型的如静态AE、动态3DNR以及动态AE等,动态AE每种类型的ini配置如图1所示。

图 1 动态AE的ini配置文件

其中ae_exposure_cnt代表数组的大小,而后面的exp_ltoh_thresh以及exp_htol_thresh则表示曝光量的数组,auto_compensation以及auto_max_hist_offset分别和ISP中配置曝光量中的某项参数对应。

通过dynamic_ae这样的模块命名,可以知道这个模块是配置与AE相关的动态参数,同时通过exp_thresh可以知道动态配置AE参数是由当前环境的曝光量变化决定的,同时动态AE调整的值为compensation和max_hist_offset对应的ISP参数。

说明:

  • 一个自适应配置ini文件可以通过参数解析填充到自适应参数数组中,每个pipe中可以配置自适应参数数组中的一项。
  • Sample里一个sensor的自适应配置ini文件的数量有上限,注意不要超过上限导致数组越界

媒体通路配置参数介绍

媒体通路配置参数,需要作为一个入参传入到自适应框架代码的接口中,启动自适应。图1是一组媒体通路配置参数的典型赋值。

从通路配置参数中,可以知道当前的模式是线性还是WDR,所有pipe是开还是关,以及该pipe上应该配置哪一组自适应参数,通过pipe_param_index来指定。

说明:

  • ini配置中的pipe_param_index是指自适应配置参数数组的下标。
  • 自适应配置参数数组的排列是在如图1中的hd文件中指定,scene_mode_0对应数组下标0,scene_mode_1对应数组下标1,依次排列。

多组媒体通路配置存在于同一个ini配置文件中,在调用自适应函数接口时,只需要使用其中一种配置,在自适应过程中,可以动态切换配置。

图 1 媒体通路参数的ini配置文件

增加sensor,如何跑Sample

场景说明

自适应模块可以兼容多种sensor,sample提供了几种典型sensor。当用户需要添加一款sensor的时候,需要做如下的适配。

工作流程

适配Sensor的过程如下:

  1. 在sample主目录的param下新建一个文件夹,命名为sensor_xxx。
  2. 在sensor_xxx放置该sensor中要调节的参数。

    可以将其他sensor的参数文件夹下的文件拷贝至该文件下,增删其中的参数类型。

  3. 修改参数文件夹中的config_cfgaccess_hd.ini中各个path的路径名。

  4. 修改参数文件下各ini的参数。

    首先增加该sensor自适应配置参数,如图1所示中的config_product_scene_1080p25_2t1_wdr,建议按照分辨率帧率、线性WDR等来区分命名,其中的参数增删可参考"增删参数,如何跑Sample"章节。

    图 1 Sensor下param文件夹中的内容

    再根据sensor会使用的媒体通路的配置来修改config_scenemode里的内容。

    最后修改config_cfgaccess_hd.ini中的内容。

  5. 在主目录下make clean; make,生成自适应sample的可执行文件。

增删参数,如何跑Sample

场景说明

在PQ调试过程当中,需要经常修改参数和增删参数,最后达到一个图像效果的最优。本小结,主要描述当增删参数时,自适应模块应该如何去做一个适配。

下面的工作流程是讲解ini配置项中需要增加参数,该如何去做。

工作流程

增加参数的过程如下:

  1. 首先明确对应sensor该增加的参数是什么,对应的ISP的接口数据类型是哪一个。
  2. 在该sensor的param文件下的自适应配置参数ini文件中加上这个参数项,给出自己的命名。如static_ae中增加一个系统增益的最小值,增加前和增加后的对比如图1所示。

    图 1 自适应配置项中增加参数示意图

    在ini配置文件中的auto_sys_gain_min即对应于SDK接口中ot_isp_exposure_attr(详见《ISP 开发参考》)里的auto_attr.sys_gain_range.min,使用者需要清晰了解这种映射关系。

    同时该sensor下所有的自适应配置ini文件中都需要加个这个参数项。

  3. 在sample主目录下include文件下的ot_scene_setparam.h中的数据结构体ot_scene_static_ae中,增加一个参数,就是ini配置文件中auto_sys_gain_min所对应的参数。该参数命名由用户指定如图2所示。

    图 2 自适应赋参头文件中增加参数示意图

  4. 在该src/core文件下的ot_scene_setparam.c中,增加该参数赋参语句如下图3所示。

    图 3 自适应赋参源文件中增加参数示意图

  5. 在自适应主目录下的scene_loadparam.c中的scene_load_static_ae函数体内,增加如图4所示语句。

    图 4 自适应获取参数源文件中增加参数示意图

  6. 当需要减少调试参数,则只需要增加sensor的反方向操作,但是scene_loadparam.c中的代码无需修改,因为这是一份所有sensor共享的公共代码,可以做增量,不影响其他sensor的代码,但是如果做减量,就会影响其余sensor的代码实现。

典型通路配置方案

图像质量自适应调节的时候需要调用ot_scene_set_scene_mode。不同的媒体通路类型,该接口的入参不同。没有特别说明,则ISP模式为线性。下面以媒体业务的典型的四种媒体通路来依次介绍上述接口入参ot_scene_mode如何配置。

单sensor预览录像

现假定该pipe为pipe0,且此时工作模式为4K30录像。媒体通路中使能了一个pipe。同时该pipe中的ISP也是控制sensor的ISP。因此main_pipe_hdl数量为1,且和使能的vcap_pipe_hdl句柄一致。

单sensor预览录像通路,如Figure1所示。

图 1 单sensor预览录像通路示意图

当媒体通路如图1所示ot_scene_mode的参数应配置,如表1所示。

表 1 通路一ot_scene_mode参数配置表

参数类型

astpipeAttr[0]

astpipeAttr[1]

enable

1

0

vcap_pipe_hdl

0

default

main_pipe_hdl

0

default

pipe_param_index

0

default

pipe_type

VIDEO

default

其余值按通路实际状态配置。

单sensor预览抓拍

现假定预览通路pipe为pipe0,抓拍通路pipe为pipe1。且此时工作模式为8M抓拍。媒体通路中使能了两个pipe。同时两个pipe的数据都来源于一个sensor,sensor数量为1,因此main_pipe_hdl的个数为1。且控制sensor的isp所在的pipe在预览通路。

当媒体通路如图1所示,ot_scene_mode的参数应配置,如表1所示。

图 1 单sensor预览抓拍通路示意图

表 1 通路二ot_scene_mode 参数配置表

参数类型

astpipeAttr[0]

astpipeAttr[1]

enable

1

1

vcap_pipe_hdl

0

1

main_pipe_hdl

0

0

pipe_param_index

1

2

pipe_type

VIDEO

SNAP

其余值按通路实际状态配置。

多sensor预览录像

现假定预览通路pipe为pipe0和pipe1。且此时工作模式为4K30前后路预览录像。媒体通路中使能了两个pipe。同时两个pipe的数据都来源于两个sensor,sensor数量为2,因此main_pipe_hdl的个数为2。且控制sensor的isp所在的pipe在预览通路。

多sensor预览录像通路,如Figure1所示。

图 1 多sensor预览录像通路示意图

当媒体通路如Figure1所示,ot_scene_mode的参数应配置,如表1所示。

表 1 通路三ot_scene_mode参数配置表

参数类型

astpipeAttr[0]

astpipeAttr[1]

enable

1

1

vcap_pipe_hdl

0

1

main_pipe_hdl

0

1

pipe_param_index

0

0

pipe_type

VIDEO

VIDEO

其余值按通路实际状态配置。

单sensor WDR预览录像

WDR 2to1模式需要使能两个pipe,但是只使能一个ISP。因此对应场景自适应模式来说,当前的pipe通路只有一个。

现假定该pipe为pipe0,且此时工作模式为4K30录像。

媒体通路中使能了两个pipe。同时两个pipe的数据都来源于一个sensor,因此main_pipe_hdl的个数为1。且控制sensor的isp所在的pipe为Vcap pipe0。

单sensor WDR2to1预览录像通路,如Figure1所示。

图 1 单sensor WDR2to1预览录像通路示意图

当媒体通路如Figure1所示,ot_scene_mode的参数应配置,如表1所示。

表 1 通路四ot_scene_mode参数配置表

参数类型

astpipeAttr[0]

astpipeAttr[1]

enable

1

0

vcap_pipe_hdl

0

default

main_pipe_hdl

0

default

pipe_param_index

1

default

pipe_type

VIDEO

default

API参考

SCENE提供以下API:

ot_scene_init

【描述】

初始化SCENE模块,导入自适应配置参数。

【语法】

td_s32 ot_scene_init(const ot_scene_param* scene_param)

【参数】

参数名称

描述

输入/输出

scene_param

自适应配置参数总集。

输入

【返回值】

返回值

描述

0

成功。

非0

参见错误码。

【需求】

  • 头文件:ot_scene.h, ot_scene_autogenerate.h
  • 库文件:Null

【注意】

  • scene_param不能为空。
  • 最大支持10种自适应参数配置。

【举例】

参考scene_sample.c。

ot_scene_set_scene_mode

【描述】

配置自适应媒体参数,开启自适应。

【语法】

td_s32 ot_scene_set_scene_mode(const ot_scene_mode * scene_mode)

【参数】

参数名称

描述

输入/输出

scene_mode

符合当前媒体通路的自适应媒体配置

输入

【返回值】

返回值

描述

0

成功。

非0

参见错误码。

【需求】

  • 头文件:ot_scene.h
  • 库文件:Null

【注意】

  • scene_mode不能为空。
  • 不支持多线程调用。
  • 必须在自适应模块初始化之后调用。
  • 自适应媒体参数中的使能关系必须和当前媒体通路一致。

【举例】

参考scene_sample.c。

ot_scene_pause

【描述】

暂停或者恢复自适应。

【语法】

td_s32 ot_scene_pause(td_bool enable)

【参数】

参数名称

描述

输入/输出

enable

  • 当True的时候,暂停自适应。
  • 当False的时候,恢复自适应。

输入

【返回值】

返回值

描述

0

成功。

非0

参见错误码。

【需求】

  • 头文件:ot_scene.h
  • 库文件:Null

【注意】

  • 在外部媒体通路销毁之前,必须先暂停自适应。因为自适应会不停配置ISP属性,如果ISP因为通路销毁而stop,那么自适应配置ISP就会报错。
  • 在外部媒体通路使能之后,启动自适应的时候,需要恢复自适应。
  • 必须在自适应模块初始化之后调用。

【举例】

参考scene_sample.c。

ot_scene_get_scene_mode

【描述】

获取当前的自适应模式。

【语法】

td_s32 ot_scene_get_scene_mode(ot_scene_mode * scene_mode)

【参数】

参数名称

描述

输入/输出

scene_mode

当前使用的自适应模式。

输出

【返回值】

返回值

描述

0

成功。

非0

参见错误码。

【需求】

  • 头文件:ot_scene.h
  • 库文件:Null

【注意】

必须在自适应模块初始化之后调用。

【举例】

参考scene_sample.c。

ot_scene_deinit

【描述】

去初始化SCENE模块。

【语法】

td_s32 ot_scene_deinit(td_void)

【参数】

无。

【返回值】

返回值

描述

0

成功。

非0

参见错误码。

【需求】

  • 头文件:ot_scene.h
  • 库文件:Null

【注意】

必须在自适应模块初始化之后调用。

【举例】

参考scene_sample.c。

ot_scene_set_scene_fps

【描述】

动态设置自适应帧率控制。

【语法】

td_s32 ot_scene_set_scene_fps(const ot_scene_fps *scene_fps)

【参数】

参数名称

描述

输入/输出

scene_fps

自适应帧率控制配置。

输入

【返回值】

返回值

描述

0

成功。

非0

参见错误码。

【需求】

  • 头文件:ot_scene.h
  • 库文件:Null

【注意】

  • 必须在自适应模块初始化之后调用。
  • 无特殊帧率控制场景,可不调用此函数。
  • 不调用此接口时则按照ini中默认配置设置自适应帧率。

【举例】

无。

ot_scene_get_scene_fps

【描述】

获取自适应帧率控制配置。

【语法】

td_s32 ot_scene_get_scene_fps(ot_scene_fps *scene_fps)

【参数】

参数名称

描述

输入/输出

scene_fps

自适应帧率控制配置。

输出

【返回值】

返回值

描述

0

成功。

非0

参见错误码。

【需求】

  • 头文件:ot_scene.h
  • 库文件:Null

【注意】

必须在自适应模块初始化之后调用。

【举例】

无。

ot_scene_set_scene_init_exp

【描述】

设置自适应初始化iso值与exp值。

【语法】

td_s32 ot_scene_set_scene_init_exp (td_u32 iso, td_u64 exp)

【参数】

参数名称

描述

输入/输出

iso

ISO

输入

exp

曝光量

输入

【返回值】

返回值

描述

0

成功。

非0

参见错误码。

【需求】

  • 头文件:ot_scene.h
  • 库文件:Null

【注意】

必须在自适应模块初始化之后并且开启自适应之前调用。

【举例】

ot_scene_run_once

【描述】

手工调节图像参数接口。场景自适应的运行模式是由几个线程周期性调节图像参数,对于低功耗、低帧率、反复休眠唤醒的业务场景,可以不依赖线程运行模式,按需手工调用run once接口。初始化并使用ot_scene_set_scene_mode配置之后,业务暂停(ot_scene_pause(TD_TRUE))的状态下可以调用run once接口。

【语法】

td_s32 ot_scene_run_once(td_void)

【参数】

无。

【返回值】

返回值

描述

0

成功。

非0

参见错误码。

【需求】

头文件:ot_scene.h

【注意】

无

【举例】

参考scene_sample.c。

数据类型

相关数据类型、数据结构定义如下:

OT_SCENE_PIPETYPE_NUM

【说明】

自适应所支持的不同pipe配置参数的数量。

【定义】

#define   OT_SCENE_PIPETYPE_NUM   (4)

【成员】

无

【注意事项】

无

【相关数据类型及接口】

无

OT_SCENE_PIPE_MAX_NUM

【说明】

自适应所支持的最大pipe数量。

【定义】

#define  OT_SCENE_PIPE_MAX_NUM  OT_VI_MAX_PIPE_NUM

【成员】

无

【注意事项】

无

【相关数据类型及接口】

无

OT_SCENE_FPS_ISO_MAX_COUNT

【说明】

自适应所支持的最大动态降帧ISO数量。

【定义】

#define  OT_SCENE_FPS_ISO_MAX_COUNT  (10)

【成员】

无

【注意事项】

无

【相关数据类型及接口】

无

ot_scene_param

【说明】

自适应调试参数总集,即所有的自适应调试参数被包括在这个数据结构中。

【定义】

typedef struct {
    ot_scene_pipe_param pipe_param[OT_SCENE_PIPETYPE_NUM];
} ot_scene_param;

【成员】

成员名称

描述

pipe_param[OT_SCENE_PIPETYPE_NUM]

自适应调试参数数组,一组调试参数对应着数组中的一项。

【解决方案差异】

无

【注意事项】

不同Sensor当调试参数不同时,ot_scene_pipe_param数据结构的内部成员也不同。

【相关数据类型及接口】

无

ot_scene_mode

【说明】

自适应媒体参数。当外部媒体通路建立之后,可以通过该参数告知自适应模块哪些pipe生效,给生效的pipe配置相应的自适应调试参数。

【定义】

typedef struct {
    ot_scene_pipe_mode pipe_mode;
    ot_scene_pipe_attr pipe_attr[OT_SCENE_PIPE_MAX_NUM];
} ot_scene_mode;

【成员】

成员名称

描述

pipe_mode

当前媒体通路模式是线性、WDR还是HDR

pipe_attr[OT_SCENE_PIPE_MAX_NUM]

当前媒体通路上各pipe的自适应媒体参数

【解决方案差异】

无。

【注意事项】

  • 当媒体通路由线性切换到WDR,或者切换分辨率之后,一般要重新配置一下自适应的参数,可以通过配置ot_scene_param之后调用ot_scene_set_scene_mode来完成功能。
  • 具体的使用方法请参考sample。

【相关数据类型及接口】

OT_SCENE_PIPE_MAX_NUM

ot_scene_pipe_mode

【说明】

媒体通路模式,线性、WDR还是HDR。

【定义】

typedef enum {
    OT_SCENE_PIPE_MODE_LINEAR = 0,
    OT_SCENE_PIPE_MODE_WDR,
    OT_SCENE_PIPE_MODE_HDR, 
    OT_SCENE_PIPE_MODE_BUTT
} ot_scene_pipe_mode;

【成员】

成员名称

描述

OT_SCENE_PIPE_MODE_LINEAR

线性模式

OT_SCENE_PIPE_MODE_WDR

WDR模式

OT_SCENE_PIPE_MODE_HDR

HDR模式

OT_SCENE_PIPE_MODE_BUTT

无效模式

【解决方案差异】

无

【注意事项】

  • 不同模式曝光量的使用方式不同,同时不同模式所要配置的参数模块也不一样。
  • 具体的使用方法请参考sample。

【相关数据类型及接口】

无

ot_scene_pipe_attr

【说明】

一个pipe上的自适应媒体参数。

【定义】

typedef struct {
    td_bool enable;
    ot_vi_pipe main_pipe_hdl;
    ot_vi_pipe vcap_pipe_hdl;
    ot_vi_chn pipe_chn_hdl;
    ot_venc_chn venc_hdl;
    ot_vpss_grp vpss_hdl;  /* vpss group hdl */
    ot_vpss_chn vport_hdl; /* vpss chn hdl */
    td_u8  pipe_param_index;
    ot_scene_pipe_type pipe_type;
} ot_scene_pipe_attr;

【成员】

成员名称

描述

enable

当前pipe的使能关系,true代表着打开,false代表关闭。

main_pipe_hdl

和当前pipe一组的主ISP的pipe。当main_pipe_hdl与vcap_pipe_hdl不一致,表示main_pipe_hdl中的ISP控制sensor,接收该sensor数据的除了main_pipe_hdl还有vcap_pipe_hdl,但是vcap_pipe_hdl上的ISP只做图像处理并不控制Sensor。

vcap_pipe_hdl

当前pipe的句柄。

pipe_chn_hdl

与当前pipe连接的pipeChn。

vpss_hdl

与当前pipe连接的vpss_grp的hdl。

vport_hdl

与当前pipe连接的vpss_grp的Chn的hdl。

venc_hdl

与当前pipe连接的venc_hdl的hdl。

pipe_param_index

当前pipe上应该配置什么样的自适应参数,值为ot_scene_param中pipe_param[OT_SCENE_PIPETYPE_NUM]的数组下标值。

pipe_type

当前pipe的类型。

【解决方案差异】

无

【注意事项】

目前仅支持动态调整与pipe相连的一个pipeChn、一个vpss和一个venc,已经足够覆盖业务场景,后续可以根据业务调整与pipe绑定的句柄数量。

【相关数据类型及接口】

无

ot_scene_pipe_type

【说明】

pipe的类型,当前pipe上做拍照业务还是录像业务。

【定义】

typedef enum {
    OT_SCENE_PIPE_TYPE_SNAP = 0,
    OT_SCENE_PIPE_TYPE_VIDEO,
    OT_SCENE_PIPE_TYPE_BUTT
} ot_scene_pipe_type;

【成员】

成员名称

描述

OT_SCENE_PIPE_TYPE_SNAP

当前pipe上做拍照业务

OT_SCENE_PIPE_TYPE_VIDEO

当前pipe上做录像业务

OT_SCENE_PIPE_TYPE_BUTT

无效类型

【解决方案差异】

无

【注意事项】

无

【相关数据类型及接口】

无

ot_scene_op_type

【说明】

自适应模式。

【定义】

typedef enum {
    OT_SCENE_OP_TYPE_AUTO = 0,
    OT_SCENE_OP_TYPE_MANUAL = 1,
    OT_SCENE_OP_TYPE_BUTT
} ot_scene_op_type;

【成员】

成员名称

描述

OT_SCENE_OP_TYPE_AUTO

自动模式

OT_SCENE_OP_TYPE_MANUAL

手动模式

OT_SCENE_PIPE_TYPE_BUTT

无效类型

【解决方案差异】

无。

【注意事项】

无。

【相关数据类型及接口】

无

ot_scene_fps_auto

【说明】

动态设置自适应帧率控制自动模式参数。

【定义】

typedef struct {
    td_u32 fps_max;
} ot_scene_fps_auto;

【成员】

成员名称

描述

fps_max

动态设置自适应最大可调节帧率。

【解决方案差异】

无。

【注意事项】

小于最大可调节帧率时,按照默认ini中配置帧率配置。

【相关数据类型及接口】

无

ot_scene_fps_manual

【说明】

动态设置自适应帧率控制手动模式参数。

【定义】

typedef struct {
    td_u32 fps;
} ot_scene_fps_manual;

【成员】

成员名称

描述

fps

动态设置自适应帧率。

【解决方案差异】

无。

【注意事项】

设置此参数后,默认ini中配置动态调节帧率无效。

【相关数据类型及接口】

无

ot_scene_fps

【说明】

动态设置自适应帧率控制参数。

【定义】

typedef struct {
    td_bool enable;
    ot_scene_op_type op_type;
    ot_scene_fps_auto auto_s;
    ot_scene_fps_manual manual;
} ot_scene_fps;

【成员】

成员名称

描述

enable

是否打开动态设置帧率功能

op_type

动态设置帧率模式

auto_s

动态设置帧率自动模式参数

manual

动态设置帧率手动模式参数

【解决方案差异】

无

【注意事项】

如需使用ini默认配置帧率调节,可不调用此接口。

【相关数据类型及接口】

无

ot_scene_dynamic_fps

【说明】

动态设置自适应帧率控制参数。

【定义】

typedef struct {
    td_u8 fps_exposure_cnt;
    td_u64 exp_ltoh_thresh[OT_SCENE_FPS_ISO_MAX_COUNT];
    td_u64 exp_htol_thresh[OT_SCENE_FPS_ISO_MAX_COUNT];
    td_u32 fps[OT_SCENE_FPS_ISO_MAX_COUNT];
    td_u32 venc_gop[OT_SCENE_FPS_ISO_MAX_COUNT];
    td_u32 ae_max_time[OT_SCENE_FPS_ISO_MAX_COUNT];
} ot_scene_dynamic_fps;

【成员】

成员名称

描述

fps_exposure_cnt

根据不同照度动态调节帧率,此值为分组的个数。值域:[0,10]

exp_ltoh_thresh

从亮到暗变化时,曝光等级亮到暗阈值,值域:

[最小曝光时间(微秒)*最小系统增益的倍数~最大曝光时间(微秒)*最大系统增益的倍数]

exp_htol_thresh

从暗到亮变化时,曝光等级暗到亮阈值,值域:

[最小曝光时间(微秒)*最小系统增益的倍数~最大曝光时间(微秒)*最大系统增益的倍数]

fps

动态设置的帧率的参数,值域:[0, 65535]

venc_gop

编码的gop参数,一般为帧率的2倍

ae_max_time

动态设置的曝光时间的最大值;值域:[0,0xFFFFFFFF] ,具体范围与Sensor相关。

【解决方案差异】

动态降低帧率的功能当前主要是为了支持渠道模组风格,安防行业风格当前默认不支持动态降低帧率的配置。

【注意事项】

ini中bDynamicFps设置为1,当前动态降低帧率才会生效;bDynamicFps设置为0,动态降低帧率不生效。

【相关数据类型及接口】

无

错误码

SCENE提供的错误码如表1所示。

表 1 SCENE模块的错误码

错误代码

宏定义

描述

0x80000001

OT_SCENE_EINVAL

非法参数

0x80000002

OT_SCENE_ENOTINIT

模块未初始化

0x80000003

OT_SCENE_ENONPTR

参数中有空指针

0x80000004

OT_SCENE_EOUTOFRANGE

参数超出范围

0x80000005

OT_SCENE_EINTER

内部错误

0x80000006

OT_SCENE_EINITIALIZED

已初始化

-1

TD_FAILURE

操作失败

配置文件和参数调节说明

ISP相关参数

当前ISP相关的参数分为静态参数和动态参数,静态参数即参数不需要根据ISO、曝光量、曝光比进行联动,配置一次即可;动态参数需要根据ISO、曝光量或者曝光比进行联动。

AE相关参数

当前AE模块配置的参数包括静态参数和动态参数。静态参数主要包括AE的容忍值、AE统计信息的权重表、AE的扩展分配路线表、AE收敛速度、系统最大增益的限制;动态参数主要包括AE的目标值和offset根据曝光量的联动。同时支持AE权重表的配置,用于控制AE收敛敏感度。

AE模块配置的静态参数如表1所示。

表 1 AE模块配置的静态参数

变量

含义

值域

ae_route_ex_valid

AE扩展分配路线是否生效开关,该值为TD_TRUE时使用扩展分配路线,否则使用普通AE分配路线。

[0-1]

ae_run_interval

AE算法运行的间隔,取值范围为[1,255],取值为1时表示每帧都运行AE算法,取值为2时表示每2帧运行1次AE算法,依此类推。建议该值设置不要大于2,否则AE调节速度会受到影响。WDR模式时,该值建议设置为1,这样AE收敛会更加平滑。

[1-255]

auto_speed

默认初始AE调节速度,AE算法采用该值作为初始100帧的调节速度,可用于运动DV加速启动。

建议关注快速启动的产品形态可将该值配置为128。若不设置,该值默认为0。AE算法内部会将该值钳位至[64, 255]。

[0, 255]

auto_tolerance

AE调整容忍值。

[0, 255]

auto_black_delay_frame

图像亮度小于目标亮度时间超过black_delay_frame帧时,AE开始调节

[0, 65535]

auto_white_delay_frame

图像亮度大于目标亮度时间超过white_delay_frame帧时,AE开始调节。

[0, 65535]

auto_sys_gain_max

系统增益范围,设置最大值,10bit小数精度。

[0x400, 0xFFFFFFFF],具体范围与Sensor相关。

auto_exp_time_max

曝光时间的范围,设置最大值

[0,0xFFFFFFFF] ,具体范围与Sensor相关。

AE配置的动态参数,如表2所示。

表 2 AE配置的动态参数

变量

含义

值域

ae_exposure_cnt

根据不同照度调整画面的亮度,此值为分组的个数。

[0, 12]

exp_ltoh_thresh

从亮到暗变化时,曝光等级亮到暗阈值。

[最小曝光时间(微秒)*最小系统增益的倍数~最大曝光时间(微秒)*最大系统增益的倍数]

exp_htol_thresh

从暗到亮变化时,曝光等级暗到亮阈值。

[最小曝光时间(微秒)*最小系统增益的倍数~最大曝光时间(微秒)*最大系统增益的倍数]

auto_compensation

AE亮度目标值,建议用0x38~0x40。

[0, 255]

auto_max_hist_offset

感兴趣区域对统计平均值影响的最大程度。

默认值为0x10。

[0, 255]

AE权重配置的静态参数,表3所示。

表 3 AE权重配置的静态参数

变量

含义

值域

ae_weight_k

AE 的权重表

[0,15]

LDCI相关参数

当前LDCI模块配置的参数包括静态参数和动态参数。静态参数是根据ISO档确定LDCI的强度,作用区域等。动态参数可以根据不同曝光量的值确定LDCI模块的开关,作用区域等参数。

LDCI模块配置的动态参数如表1所示。

表 1 LDCI模块配置的动态参数

变量

含义

值域

enable_cnt

根据不同曝光量调整LDCI使能,此值为分组的个数。

[0,6]

enable_exp_thresh_ltoh

从亮到暗变化时,曝光等级亮到暗阈值

[最小曝光时间(微秒)*最小系统增益的倍数~最大曝光时间(微秒)*最大系统增益的倍数]

enable

LDCI模块的使能

[0,1]

exp_thresh_cnt

根据不同曝光量控制manual_ldci_he_pos_wgt的阈值。

[0,6]

exp_thresh_ltoh

从亮到暗变化时,曝光等级亮到暗阈值

[最小曝光时间(微秒)*最小系统增益的倍数~最大曝光时间(微秒)*最大系统增益的倍数]

manual_ldci_he_pos_wgt

Gauss分布曲线权重

[0, 255]

LDCI模块配置的静态参数,如表2所示。

表 2 LDCI模块配置的静态参数

变量

含义

值域

enable

LDCI的使能。

[0,1]

ldci_op_type

LDCI的操作模式。

[0,1]

gauss_lpf_sigma

LPF滤波强度,其值越小说明LDCI作用越局域。

[1, 255]

tpr_incr_coef

LDCI由暗到亮变化时域滤波系数。

[0x0, 0x100]

tpr_decr_coef

LDCI由亮到暗变化时域滤波系数。

[0x0, 0x100]

auto_he_pos_wgt

LDCI提亮功能,Gauss分布曲线权重。

[0x0, 0x80]

auto_he_pos_sigma

LDCI提亮功能,Gauss分布曲线标准差。

[0x0, 0xFF]

auto_he_pos_mean

LDCI提亮功能,Gauss分布曲线数学期望。

[0x0, 0xFF]

auto_he_neg_wgt

LDCI压暗功能,Gauss分布曲线权重。

[0x0, 0x80]

auto_he_neg_sigma

LDCI压暗提亮功能,Gauss分布曲线标准差。

[0x0, 0xFF]

auto_he_neg_mean

LDCI压暗提亮功能,Gauss分布曲线数学期望。

[0x0, 0xFF]

auto_blc_ctrl

暗区增益控制强度,用于抑制暗区噪声。

[0x0, 0x1FF]

Dehaze相关参数

Dehaze模块当前配置参数包括静态参数和动态参数,静态参数主要是配置Dehaze模块的基本属性,如使能配置、自定义曲线是否使能、去雾手动和自动类型的选择以及自定义曲线表。动态参数主要将去雾的强度和曝光量进行联动。

Dehaze模块配置的静态参数如表1所示。

表 1 Dehaze模块配置的静态参数

变量

含义

值域

enable

使能Dehaze功能。

[0,1]

user_lut_enable

用户自定义去雾曲线使能

[0,1]

tmprflt_incr_coef

时域滤波递增系数

[0x0,0x80]

tmprflt_decr_coef

时域滤波递减系数

[0x0,0x80]

dehaze_op_type

操作模式

[0,1]

dehaze_lut [256]

用户自定义去雾曲线表

[0,255]

Dehaze模块配置的动态参数如表2所示。

表 2 Dehaze模块配置的动态参数

变量

含义

值域

exp_thresh_cnt

根据不同照度调整去雾的手动强度,此值为分组的个数。

[0,10]

exp_thresh_ltoh

从亮到暗变化时,曝光量从低到高阈值分段

[最小曝光时间(微秒)*最小系统增益的倍数~最大曝光时间(微秒)*最大系统增益的倍数]

manual_strength

手动模式下去雾强度

[0,255]

Mesh-Shading相关参数

Mesh-Shading模块当前配置参数包括静态参数和动态参数,静态参数主要是配置Mesh-Shading模块的使能配置。动态参数主要将Shading校正的强度和曝光量进行联动。

Mesh-Shading模块配置的静态参数如表1所示。

表 1 Mesh-Shading模块配置的静态参数

变量

含义

值域

enable

使能Mesh-shading功能。

[0,1]

Mesh-Shading模块配置的动态参数如表2所示。

表 2 Mesh-Shading模块配置的动态参数

变量

含义

值域

exp_thresh_cnt

根据不同照度调整去雾的手动强度,此值为分组的个数。

[0,10]

exp_thresh_ltoh

从亮到暗变化时,曝光等级亮到暗阈值

[最小曝光时间(微秒)*最小系统增益的倍数~最大曝光时间(微秒)*最大系统增益的倍数]

mesh_strength

用来全局纠正LSC标定后的强度。当镜头shading很严重的时候,画面四个角补偿的增益很大,容易导致噪声很大,而且画面有格子现象。这个调整mesh_strength小于一倍强度,可以减少LSC的补偿值,让四个角的补偿增益较小一些,达到优化噪声和画面格子问题。

[0, 65535]

WDRExposureAttr相关参数

WDRExposureAttr模块当前配置参数包括静态参数,静态参数主要配置曝光比的类型、手动曝光比的大小自动曝光比的上限和下限。

WDRExposureAttr模块配置的参数如表1所示。

表 1 WDRExposureAttr模块配置的静态参数

变量

含义

值域

exp_ratio_type

仅在多帧合成WDR模式下有效。

  • OP_TYPE_AUTO:根据场景自动计算长短帧曝光比;
  • OP_TYPE_MANUAL:手动配置长短帧曝光比。

[0,1]

exp_ratio_max

仅在多帧合成WDR模式下有效。

  • 当exp_ratio_type为OT_OP_MODE_AUTO时,exp_ratio_max表示最长帧与最短帧曝光时间比值的最大值。即2帧合成时表示S/VS曝光比的最大值,3帧合成时表示M/VS曝光比的最大值,4帧合成时表示L/VS曝光比的最大值。
  • 当exp_ratio_type为OT_OP_MODE_MANUAL时,exp_ratio_max无效。

格式为无符号6.6bit定点,0x40表示曝光比为1倍。

[0x40, 0x4000]

exp_ratio_min

仅在多帧合成WDR模式下有效。

  • 当exp_ratio_type为OT_OP_MODE_AUTO时,exp_ratio_min表示长帧曝光时间与短帧曝光时间比值的最小值。
  • 当exp_ratio_type为OP_TYPE_MANUAL时,exp_ratio_min无效。

格式为无符号6.6bit定点,0x40表示长帧曝光时间与短帧曝光时间的比值为1倍。默认值为0x40。

[0x40, exp_ratio_max]

exp_ratio

仅在多帧合成WDR模式下有效。

  • 当exp_ratio_type为OT_OP_MODE_AUTO时,exp_ratio无效。
  • 当exp_ratio_type为OT_OP_MODE_MANUAL时,exp_ratio为可读写,表示多帧合成WDR相邻2帧曝光比期望值。其中exp_ratio[0]作为S/VS曝光比,exp_ratio[1]作为M/S曝光比,exp_ratio[2]作为L/M曝光比。

上述VS,S,M,L分别表示极短帧,短帧,中帧和长帧的曝光时间,2帧合成时只有VS和S;3帧合成时采用VS,S和M;4帧合成时采用VS,S,M和L。6bit小数精度,0x40表示曝光比为1倍。

[0x40, 0x4000]

ref_ratio_up

曝光比的上限

[64,4096]

ref_ratio_dn

曝光比的下限

[64,4096]

exp_thr

曝光量阈值

[最小曝光时间(微秒)*最小系统增益的倍数~最大曝光时间(微秒)*最大系统增益的倍数]

high_light_target

图像过曝程度的目标值,仅在使能Advance AE时有效。该值越大,图像过曝程度越大

[0x0, 0x400]

exp_coef_min

曝光系数最小值,仅在使能Advance AE时有效。

10bit小数精度,0x400表示曝光系数最小值为1倍,默认值为0x400。

[0x0, 0x400]

说明:

上述VS,S,M,L分别表示极短帧,短帧,中帧和长帧的曝光时间,2帧合成时只有VS和S;3帧合成时采用VS,S和M;4帧合成时采用VS,S,M和L。6bit小数精度,0x40表示曝光比为1倍。

FSWDR相关参数

FSWDR模块当前配置参数主要为静态参数和动态参数,其中静态参数如Table 1所示。

表 1 FSWDR模块配置静态参数

变量

含义

值域

wdr_merge_mode

合成方式

0:传统的WDR合成;

1:Fusion合成。

[0,1]

FSWDR模块配置的动态参数如表2所示。

表 2 FSWDR模块配置动态参数

变量

含义

值域

ratio_count

不同曝光比的个数

[0,9]

ratio_level

不同曝光比的分级阈值。

[0x40, 0xFFF]

wdr_merge_mode

合成方式。0:传统的WDR合成;1:Fusion合成。当前与ISO进行联动

[0, 1]

motion_compensate

WDR运动补偿使能开关。0:关闭;1:使能。当前与ISO进行联动

[0, 1]

Gamma相关参数

在不同场景中对比度不一样,要求也不一样,因此需要根据不同曝光量设置不同的Gamma。Gamma相关参数如表1所示。

表 1 Gamma相关参数

变量

含义

值域

interval

Gamma切换变换速度。

[1, 4294967295]

表示从前一条Gamma曲线变换到下一条Gamma曲线所需要的次数

total_num

曝光等级个数。

[1, 10]

exp_thresh_ltoh

曝光等级变化阈值(画面从亮到暗)。

[最小曝光时间(微秒)*最小系统增益的倍数~最大曝光时间(微秒)*最大系统增益的倍数]

exp_thresh_htol

曝光等级变化阈值(画面从暗到亮)。

[最小曝光时间(微秒)*最小系统增益的倍数~最大曝光时间(微秒)*最大系统增益的倍数]

table_k

第k组gamma。

[1, 4095]

DRC相关参数

DRC当前包括传统DRC和AIDRC,当前使用AIDRC时:

  • AIDRC模块开启时,将参数的模块开关bStaticAIDRC和bDynamicAIDRC都设置为1。
  • AIDRC模块关闭时,将参数的模块开关bStaticAIDRC和bDynamicAIDRC都设置为0。

传统DRC当前配置的参数主要包括静态参数和动态参数。静态参数主要是DRC的曲线选择参数、DRC强度的类型。动态参数包括两部分:

  • 线性模式动态参数及WDR模式动态参数,线性模式动态参数主要是根据ISO进行联动。
  • WDR模式动态参数主要分为根据曝光比进行联动和根据ISO进行联动。

传统DRC静态参数,如表1所示。

表 1 传统DRC静态参数

变量

含义

值域

enable

DRC使能

[0,1]

curve_select

DRC曲线选择

[0,1]

drc_bcnr_en

BNCR使能

[0x0, 0x1]

op_type

DRC工作模式选择

[0,1]

contrast_ctrl

局部对比度控制

[0x0, 0xF]

global_color_ctrl

全局颜色控制;控制wdr模式下全局饱和度,值越大饱和度越低

[0x0, 0xF]

color_correction_lut

颜色校正系数LUT,值越小,饱和度越低。

[0x0, 0x400]

传统DRC动态参数,如表2和表3所示。

表 2 线性模式传统DRC相关参数

变量

含义

值域

enable

线性模式DRC使能。

[0,1]

iso_count

不同ISO的个数。

[0, 16]

iso_level

不同ISO的分级阈值。

[最小系统ISO~最大系统ISO],具体和Sensor相关

local_mixing_bright_max

Filter对应的最大正向细节增强系数

[0x0, 0x80]

local_mixing_bright_min

Filter对应的最小正向细节增强系数

[0x0, 0x80]

local_mixing_bright_threshold

正向细节增强的亮度阈值

[0, 255]

local_mixing_bright_slope

正向细节增强系数自适应斜率

[-7,7]

local_mixing_dark_max

Filter对应的最大负向细节增强系数

[0x0, 0x80]

local_mixing_dark_min

Filter对应的最小负向细节增强系数

[0x0, 0x80]

local_mixing_dark_threshold

负向细节增强的亮度阈值

[0, 255]

local_mixing_dark_slope

负向细节增强系数自适应斜率

[-7,7]

rim_reduction_strength

去边线强度。值越大,边线减弱越明显,但是可能会带来细节损失。

[0x0, 0x40]

rim_reduction_threshold

边线检测阈值。值越大,边线减弱越明显,但是可能会带来细节损失。

[0x0, 0x80]

bright_gain_limit

亮区亮度增益限制目标值

[0x0, 0xF]

bright_gain_limit_step

亮区亮度增益限制自适应步长

[0x0, 0xF]

dark_gain_limit_luma

暗区亮度增益限制

[0x0, 0x85]

dark_gain_limit_chroma

暗区色度增益限制

[0x0, 0x85]

asymmetry

用于生成Asymmetry Curve, 值越小,暗区亮度拉伸越明显。

[1, 30]

second_pole

用于生成Asymmetry Curve,值越小,亮区亮度压制越强,有利于保留高亮细节。

[150, 210]

compress

用于生成Asymmetry Curve,值越小,整体亮度越亮。

[30, 60]

stretch

用于生成Asymmetry Curve,值越小,整体亮度越亮。

[100, 200]

strength

DRC强度,manual模式对应的是手动强度,auto模式对应的是自动强度

[0x0, 0x3FF]

drc_bcnr_str

BCNR去噪强度

[0x0, 0x8]

detail_restore_lut

细节恢复系数LUT,索引为亮度值

[0x0, 0xFF]

global_color_ctrl

全局颜色控制;控制wdr模式下全局饱和度,值越大饱和度越低。

[0x0, 0xF]

high_saturation_color_ctrl

高饱和区域颜色控制;

[0x0, 0xF]

表 3 WDR模式传统DRC相关参数

变量

含义

值域

ratio_count

不同曝光比的个数。

[0,12]

ratio_level

不同曝光比的分级阈值。

WDR模式使用。

[0x40, 0xFFF]

high_saturation_color_ctrl

高饱和区域颜色控制;当前根据曝光比联动。

[0x0, 0xF]

bright_gain_limit

亮区亮度增益限制目标值,当前根据曝光比联动。

[0x0, 0xF]

bright_gain_limit_step

亮区亮度增益限制自适应步长,当前根据曝光比联动。

[0x0, 0xF]

color_correction_lut_k

颜色校正系数LUT,值越小,饱和度越低。该参数和曝光比的大小联动

[0x0, 0x400]

ref_ratio_count

不同曝光比的个数。用于Tone Mapping曲线混 的参考曝光比分级数。

[0,12]

ref_ratio_ltoh

不同曝光比由低到高的分级阈值。

[0x40, 0xFFF]

ref_ratio_alpha

两组DRC曲线插值比例

[0,256]

iso_count

不同ISO的个数。

[0,16]

iso_level

不同ISO的分级阈值。

[最小系统ISO~最大系统ISO],具体和Sensor相关

enable

使能

[0,1]

interval

DRC参数变换的速度

[0, 4294967295]

local_mixing_bright_max

Filter对应的最大正向细节增强系数

[0x0, 0x80]

local_mixing_bright_min

Filter对应的最小正向细节增强系数

[0x0, 0x80]

local_mixing_bright_threshold

正向细节增强的亮度阈值

[0, 255]

local_mixing_bright_slope

正向细节增强系数自适应斜率

[-7,7]

local_mixing_dark_max

Filter对应的最大负向细节增强系数

[0x0, 0x80]

local_mixing_dark_min

Filter对应的最小负向细节增强系数

[0x0, 0x80]

local_mixing_dark_threshold

负向细节增强的亮度阈值

[0, 255]

local_mixing_dark_slope

负向细节增强系数自适应斜率

[-7,7]

global_color_ctrl

全局颜色控制;控制wdr模式下全局饱和度,值越大饱和度越低。

[0x0, 0xF]

shoot_reduction_en

去黑边使能;用于改善亮暗交界的黑边

[0x0, 0x1]

manual_str

DRC手动强度

[0x0, 0x3FF]

tm_value_low

曝光比下限对应的DRC自定义曲线

[0x0, 0xffff]

tm_value_high

曝光比上限对应的DRC自定义曲线

[0x0, 0xffff]

3DNR相关参数

当前3DNR接口主要配置的是静态参数,使用的是3DNR的manual接口,这边需要配置的各个ISO下的3DNR参数,自适应根据ISO进行内部插值处理。

3DNR参数具体说明详见《Hi3516CV610╱Hi3516CV608 3DNR参数配置说明》文档。

Sharpen相关参数

Sharpen模块,主要指YUV Sharpen,当前配置参数主要为静态参数,自适应模块内部根据ISO自动插值得到对应的值。纹理锐化强度表与边缘锐化强度表需要配置各个ISO下的值,在自适应中根据ISO插值。

YUVSharpen模块配置的静态参数如表1所示。

表 1 YUVSharpen相关参数

变量

含义

值域

enable

使能

[0,1]

op_type

Sharpen工作类型。

[0,1]

skin_umin

肤色区域范围矩形窗的左下角的最小坐标的U值

[0,255]

skin_vmin

肤色区域范围矩形窗的左下角的最小坐标的V值

[0, 255]

skin_umax

肤色区域范围矩形窗的右上角的最大坐标的U值

[0, 255]

skin_vmax

肤色区域范围矩形窗的右上角的最大坐标的V值

[0, 255]

luma_wgt_k

亮度锐化权重

[0, 31]

texture_strength_k

无方向的细节纹理的锐化强度

[0, 4095]

edge_strength_k

带方向的边缘的锐化强度

[0, 4095]

texture_freq

图像的无方向细节纹理的增强频段控制。设置图像的细节纹理增强的频率。

[0, 4095]

edge_freq

图像的带方向的边缘的增强频段控制。设置图像边缘增强的频率。

[0, 4095]

over_shoot

设置图像的overshoot(锐化后的白边白点)的强度

[0, 127]

under_shoot

设置图像的undershoot(锐化后的黑边黑点)的强度

[0, 127]

shoot_sup_strength

图像锐化后的overshoot和undershoot的抑制强度。

[0, 255]

shoot_sup_adj

图像锐化后的overshoot和undershoot的抑制强度的调节。

[0, 15]

detail_ctrl

图像的细节纹理区的shoot强度的控制。

[0, 0xFF]

detail_ctrl_threshold

图像的细节纹理区的shoot强度的控制阈值。

[0, 0xFF]

edge_filt_strength

边缘滤波强度调试参数

[0, 63]

edge_filt_max_cap

边缘滤波强度范围的调试参数

[0, 47]

r_gain

深红色区域的锐化增益控制

[0, 31]

g_gain

绿色区域的锐化增益控制

[0, 255]

b_gain

深蓝色区域的锐化增益控制

[0, 31]

skin_gain

肤色区域的锐化增益控制

[0, 31]

max_sharp_gain

图像锐化的最大增益限制值

[0, 0x7FF]

shoot_inner_threshold

抑制过亮和过暗区域的shoot阈值参数。

[0, 511]

shoot_outer_threshold

抑制过亮和过暗区域的shoot阈值参数。

[0, 511]

shoot_protect_threshold

不受shoot_inner_threshold和shoot_outer_threshold参数影响的shoot保护阈值参数。值越大,越多的过亮和过暗区域的shoot不受shoot_inner_threshold以及shoot_outer_threshold参数抑制。

[0, 511]

edge_rly_fine_threshold

精细边缘检测阈值

[0, 1023]

edge_rly_coarse_threshold

粗略边缘检测阈值

[0, 1023]

edge_overshoot

设置图像边缘的overshoot的强度

[0, 127]

edge_undershoot

设置图像边缘的undershoot的强度

[0, 127]

edge_gain_by_rly_k

边缘估计分数锐化增益

[0, 255]

edge_rly_by_mot_k

运动边缘检测分数增益

[0, 63]

edge_rly_by_luma_k

亮度边缘检测分数增益

[0, 63]

mf_gain_by_mot_k

运动区域中频锐化增益

[0, 32]

hf_gain_by_mot_k

运动区域高频锐化增益

[0, 32]

lmf_gain_by_mot_k

运动区域中低频锐化增益

[0, 255]

BayerNR相关参数

BayerNR模块当前配置的参数包括静态参数,静态参数主要是和WDR模式无关的参数,使用BayerNR自动接口,由BayerNR模块内部根据ISO进行插值,动态参数主要是和WDR模式相关的去噪参数。

BayerNR模块配置的动态参数如表1所示。

表 1 BayerNR模块配置的动态参数

变量

含义

值域

ratio_count

不同曝光比的个数。

[0,16]

ratio_level

不同曝光比的分级阈值。

[0x40, 0xFFF]

snr_sfm0_fusion_frame_str_incr

Fusion模式下每一融合帧分别对应的空域sfm0滤波器去噪强度增量,该参数与曝光比联动。

[0,64]

snr_sfm0_wdr_frame_str_incr

wdr模式下每一融合帧分别对应的空域sfm0滤波器去噪强度增量,该参数与曝光比联动。

[0,64]

coring_ratio_count

ISO的个数

[0,16]

coring_ratio_iso

不同ISO的分级阈值。

[最小系统ISO~最大系统ISO],具体和Sensor相关

snr_sfm0_wdr_frame_str

WDR模式下每一合成帧分别对应的空域sfm0滤波器去噪强度。

[0, 64]

snr_sfm0_fusion_frame_str

Fusion模式下每一融合帧分别对应的空域sfm0滤波器去噪强度。

[0, 64]

BayerNR模块配置的静态参数如表2所示。

表 2 BayerNR相关参数

变量

含义

值域

enable

BayerNR使能。

[0,1]

op_type

BayerNR工作类型

[0,1]

md_enable

动静判决使能

[0,1]

lsc_nr_enable

BayerNR参考lsc降噪使能

[0,1]

lsc_ratio1

BayerNR参考lsc降噪比例

[0,15]

sfm0_coarse_strength

sfm0滤波器的整体强度控制

[0, 864]

sfm0_detail_prot

sfm0滤波器的细节保留比例

[0, 31]

fine_strength

原始像素和去噪结果加权,值越大,去噪效果越强。

[0,128]

tss

静止区域的原始像素回叠,值越大,原始像素回叠越多

[0, 128]

md_mode

运动检测类型:

0:运动检测对小物体运动判断更准确。

1:运动检测对中物体运动判断更准确。

2:运动检测对大物体运动判断更准确。

[0,2]

md_anti_flicker_strength

取值0去噪能力较强;取值64对颜色运动区域细节保留较好,其它值为两者结果融合

[0,64]

md_static_ratio

运动检测,静止和运动区域的比例调节,值越大,判断为静止区域的部分越多。

[0,64]

md_motion_ratio

运动检测,静止和运动区域的比例调节,值越大,判断为运动区域的部分越多

[0, 64]

md_static_fine_strength

运动检测,静止和运动区域的精细比例调节,值越大,判断为静止区域的部分越多。

[0,255]

user_define_md

用户自定义模式下的运动检测模式,一般用于黑白双光融合模式。

[0,1]

user_define_slope

用户自定义模式下,运动检测的斜率

[-32768, 32767]

user_define_dark_thresh

用户自定义模式下,暗区的运动检测阈值。

[0,65535]

user_define_color_thresh

用户自定义模式下,颜色区域的运动检测阈值

[0,64]

sfr_r

R分量的空域混入比例,值越大,空域混入比例越多。

[0,128]

sfr_g

G分量的空域混入比例,值越大,空域混入比例越多。

[0,128]

sfr_b

B分量的空域混入比例,值越大,空域混入比例越多。

[0,128]

BLC相关参数

BLC模块当前配置参数主要为动态参数,与ISO联动。

BLC模块配置的动态参数如表1所示。

表 1 BLC相关参数

变量

含义

值域

black_level_mode

黑电平工作类型。

[0,1]

blc_count

不同ISO的个数

[0,16]

iso_thresh

ISO阈值

最小系统增益~最大系统增益,和sensor有关。

blc_r

R分量的黑电平大小

[0,16383)

blc_gr

Gr分量的黑电平大小

[0,16383)

blc_gb

Gb分量的黑电平大小

[0,16383)

blc_b

B分量的黑电平大小

[0,16383)

CA相关参数

CA模块当前配置参数主要为静态参数和动态参数,其中静态参数主要包括Y查找UV增益的查找表和ISO值查找UV增益的查找表以及饱和度查找的调整色度UV增益的查找表。

CA模块配置的静态参数,如表1所示。

表 1 CA相关静态参数

变量

含义

值域

enable

CA使能

[0,1]

iso_ratio

CA模式,根据ISO值查找UV增益的查找表

[0,2047]

y_ratio_lut

CA模式,根据亮度Y查找UV增益的查找表

[0,2047]

y_sat_lut

CA模式,根据饱和度查找的调整色度UV的增益的查找表

[0, 2047]

CA模块配置的动态参数,如表2

表 2 CA相关动态参数

变量

含义

值域

iso_count

不同ISO的个数

[0,16]

iso_level

ISO阈值

最小系统增益~最大系统增益,和sensor有关。

ca_y_ratio_lut_iso

CA模式,根据亮度Y查找UV增益的查找表,当前与ISO进行联动

[0,2047]

ca_y_sat_lut_iso

CA模式,根据饱和度查找的调整色度UV的增益的查找表,当前与ISO进行联动

[0,2047]

ratio_count

不同曝光比的个数。

[0, 11]

ratio_level

不同曝光比的分级阈值。

[0x40, 0xFFF]

blend_weight

融合权重,ca_y_ratio_lut_iso与ca_y_ratio_lut_ratio融合比例

[0, 256]

ca_y_ratio_lut_ratio

CA模式,根据亮度Y查找UV增益的查找表,当前与曝光比进行联动

[0,2047]

Dehaze相关参数

Dehaze模块当前配置参数有静态参数和动态参数,动态参数与曝光量联动配置不同场景下的去雾强度。静态参数则配置去雾的使能,工作模式,曲线等。

Dehaze模块配置的动态参数,如表1所示。

表 1 Dehaze相关参数

变量

含义

值域

exp_thresh_cnt

曝光量的个数

[0, 10]

exp_thresh_ltoh

曝光量的阈值

[最小曝光时间(微秒)*最小系统增益的倍数~最大曝光时间(微秒)*最大系统增益的倍数]

manual_strength

手动强度下去雾的强度,ratio<=wdr_ratio_threshold,选择manual_strength

[0,0xFF]

wdr_ratio_threshold

曝光比的阈值,根据阈值选择手动强度表

[0x40, 0xFFF]

manual_strengther

手动强度下去雾的强度,ratio>wdr_ratio_threshold,选择manual_strengther

[0,0xFF]

Dehaze模块配置的静态参数如表2所示。

表 2 Dehaze相关参数

变量

含义

值域

enable

去雾的使能

[0,1]

user_lut_enable

用户自定义曲线使能

[0,1]

dehaze_op_type

去雾工作模式

[0,1]

tmprflt_incr_coef

时域滤波递增系数,值越大,画面由暗到亮收敛速度越快

[0x0, 0x80]

tmprflt_decr_coef

时域滤波递减系数,值越大,画面由亮到暗收敛速度越快

[0x0, 0x80]

dehaze_lut

去雾曲线表

[0,255]

AWB&CCM相关参数

AWB和CCM主要是静态参数,支持修改AWB的标定参数,AWB的白点条件,喜好颜色等,支持CCM矩阵配置,饱和度配置。

AWB模块配置的静态参数,如表1所示。

表 1 AWB相关参数

变量

含义

值域

op_type

AWB工作模式

[0,1]

manual_rgain

AWB手动R通道Gain

[0x0, 0xFFF]

manual_gbgain

AWB手动Gb通道Gain

[0x0, 0xFFF]

manual_grgain

AWB手动Gr通道Gain

[0x0, 0xFFF]

manual_bgain

AWB手动B通道Gain

[0x0, 0xFFF]

auto_static_wb

静态AWB参数

[0, 4096]

auto_curve_para

AWB标定参数

请见《ISP 开发参考》

auto_speed

AWB调整速度

[0, 4095]

auto_low_color_temp

最低色温限制

[0, 65535]

auto_cr_max

CR分量的最大限制

[0, 4095]

auto_cr_min

CR分量的最小限制

[0, 4095]

auto_cb_max

CB分量的最大限制

[0, 4095]

auto_cb_min

CB分量的最小限制

[0, 4095]

shift_limit

室内场景或室内外检测关闭时,自动白平衡的白点范围参数

[0x0, 0xFF]

luma_hist_enable

亮度是否影响分块的权重

[0, 1]

awb_switch

定义AWB统计模块在ISP pipeline的位置

[0, 2]

AWBEX配置的静态参数,如表2所示。

表 2 AWBEX相关参数

变量

含义

值域

bypass

AWB Bypass开关

[0,1]

tolerance

自动白平衡调整的偏差范围,检测误差在门限范围内时,AWB不动作。

[0x0, 0xFF]

out_thresh

室内外场景判定设置的阈值,以单位为us的曝光时间,小于该阈值则认为是室外。

[0, 4294967295]

low_stop

将位于低色温范围内的像素权重调低,低色温区终止值,建议4500K

[0,65535]

high_start

将位于高色温范围内的像素权重调低,高色温区起始值,建议6500K

[low_start, 0xFFFF]

high_stop

将位于高色温范围内的像素权重调低,高色温区终止值,建议8000K

[high_start, 0xFFFF]

multi_light_source_en

混合光源检测使能

[0,1]

multi_ctwt

混合光源权重表

[0,1024]

CCM相关的静态参数,如表3所示。

表 3 CCM相关的静态参数

变量

含义

值域

auto_iso_act_en

CCM根据ISO修改饱和度的使能

[0,1]

auto_temp_act_en

CCM根据色温修改饱和度的使能

[0,1]

ccm_op_type

CCM的工作模式

[0,1]

manual_ccm

手动模式下的CCM矩阵

[0x0, 0xFFFF]

total_num

CCM个数

[0,7]

auto_color_temp

自动模式CCM色温阈值

[0,30000]

auto_ccm_k

自动模式CCM矩阵

[0x0, 0xFFFF]

red_cast_gain

R通道增益

[0x100, 0x180]

green_cast_gain

G通道增益

[0x100, 0x180]

blue_cast_gain

B通道增益

[0x100, 0x180]

CCM 相关的静态参数,如表4所示。

表 4 饱和度相关静态参数

变量

含义

值域

op_type

饱和度的工作模式

[0, 1]

auto_sat

各个ISO下的饱和度的强度

[0, 255]

表 5 color_sector配置的静态参数

变量

含义

值域

color_tabk_hue_shift

颜色分区调节色调参数

[0, 40]

color_tabk_sat_shift

颜色分区调节饱和度参数

[0, 40]

表 6 color_sector配置的动态参数

变量

含义

值域

iso_count

不同ISO的个数。

[0, 16]

iso_level

不同ISO的分级阈值。

[最小系统ISO~最大系统ISO],具体和Sensor相关

color_tabk_hue_shift

颜色分区调节色调参数

[0, 40]

color_tabk_sat_shift

颜色分区调节饱和度参数

[0, 40]

编码相关参数

根据ISO自适应动态调整码率:在一般情况下,图像的细节会随着ISO的增大而减小,根据这一特性,可依赖ISO的大小自适应的调整码率。

表 1 相关动态参数

变量

含义

值域

iso_thresh_cnt

ISO阈值节点个数

[0,16]

iso_thresh_ltoh

从亮到暗的ISO阈值

[最小系统增益的倍数~最大系统增益的倍数]

manual_percent

码率调整力度,目标码率curr = manual_percent * 目标码率(初始)

[0, 256]

表 2 相关静态参数

变量

含义

值域

avbr_change_pos

开始调整Qp时的码率相对于最大码率的比例

[50,100]

avbr_min_iprop

最小IP帧码率的比值

[1,100]

avbr_max_iprop

最大IP帧码率的比值

[avbr_min_iprop,100]

avbr_max_reencode_times

每帧重编码次数

[0, 3]

avbr_min_still_percent

静止状态下目标码率的最小百分比

[5, 100]

avbr_max_still_qp

静止状态最大QP

[avbr_min_iprop, avbr_max_iprop]

avbr_min_still_psnr

暂时无效,只能设置为0

-

avbr_max_qp

P帧的最大QP

[0, 51]

avbr_min_qp

P帧的最小QP

[0, avbr_max_qp]

avbr_max_iqp

I帧的最大QP

[0, 51]

avbr_min_iqp

I帧的最小QP

[0, avbr_max_qp]

avbr_min_qp_delta

帧级QP最小值和CU级QP最小值的差值

[0, 4]

avbr_motion_sensitivity

运动敏感度

[0, 100]

avbr_qp_map_en

AVBR模式下是否使能QpMap功能

[0,1]

avbr_qp_map_mode

QpMap模式下CU32、CU64 QP值的取值方式

-

cvbr_min_iprop

最小IP帧码率的比值

[1,100]

cvbr_max_iprop

最大IP帧码率的比值

[cvbr_min_iprop,100]

cvbr_max_reencode_times

每帧重编码次数

[0, 3]

cvbr_qp_map_en

CVBR模式下是否使能QpMap功能

[0,1]

cvbr_qp_map_mode

QpMap模式

[0, 2]

cvbr_max_qp

P、B帧的最大QP

[cvbr_min_qp, 51]

cvbr_min_qp

P、B帧的最小QP

[0, 51]

cvbr_max_iqp

I帧的最大QP

[cvbr_min_iqp, 51]

cvbr_min_iqp

I帧的最小QP

[0, 51]

cvbr_min_qp_delta

帧级QP最小值和CU级QP最小值的差值

[0, 4]

cvbr_max_qp_delta

帧级QP最大值和CU级QP最大值的差值

[0, 4]

cvbr_extra_bit_percent

编码器输出码流最大透支bit数百分比

[0, 1000]

cvbr_long_term_static_time_unit

码率长期统计时间参数的单位,本变量单位是秒(s)

[1, 1800]

CAC相关参数

CAC模块配置主要为静态参数,如表1所示。

表 1 CAC相关参数

变量

含义

值域

enable

LocalCAC使能

[0,1]

op_type

紫边校正工作模式

[0,1]

purple_detect_range

紫色检测的范围

[0,410]

purple_upper_limit

紫色检测范围上限

[-512,511]

purple_lower_limit

紫色检测范围下限

[-512,511]

edge_threshold

ACAC的边缘检测阈值

[0, 4095]

edge_gain

ACAC的边缘检测强度

[0, 63]

cac_rb_strength

根据色差进行校正的强度,值越大表示校正越强。

[0, 5]

purple_alpha

ACAC参考紫色的权重

[0, 63]

edge_alpha

ACAC参考边缘的权重

[0, 63]

satu_low_threshold

紫边检测饱和度范围下限

[0, 255]

de_purple_cr_strength

自动模式下,R通道的校正强度

[0, 8]

de_purple_cb_strength

自动模式下,B通道的校正强度

[0, 8]

var_threshold

边缘检测阈值

[0, 4095]

r_detect_threshold

它分了3段,每一段的值表示高亮检测模块里面R分量阈值

[0, 4095]

g_detect_threshold

它分了3段,每一段的值表示高亮检测模块里面G分量阈值

[0, 4095]

b_detect_threshold

它分了3段,每一段的值表示高亮检测模块里面B分量阈值

[0, 4095]

DPC相关参数

DPC模块当前配置参数为静态参数和动态参数,静态参数支持配置每一个ISO档的Strength强度、使能等。

DPC模块配置的静态参数,如表1所示。

表 1 DPC相关静态参数

变量

含义

值域

enable

DPC使能

[0,1]

strength

DPC的处理强度

[0,255]

blend_ratio

融合比率

[0,128]

DPC模块配置的动态参数,如表2所示。

表 2 DPC相关动态参数

变量

含义

值域

iso_count

不同ISO的个数

[0, 16]

iso_level

ISO阈值

最小系统增益~最大系统增益,和sensor有关。

sup_twinkle_en

闪烁抑制使能

[0, 1]

soft_thr

闪烁抑制的阈值

[0, 127]

soft_slope

闪烁抑制模块中,控制偏差小于soft_thr的像素点的校正情况。值越大,参与校正处理的像素点越多,图像会越模糊。

[0, 255]

bright_strength

亮区去坏点强度调整参数

[0, 127]

dark_strength

暗区去坏点强度调整参数

[0, 127]

CSC相关参数

CSC当前模块包括静态参数和动态参数,其中动态参数随着ISO进行联动。

表 1 CSC相关静态参数

变量

含义

值域

enable

使能CSC 功能。

[0,1]

hue

目标YUV空间色调。

取值范围:[0,100],默认值50。

luma

目标YUV空间亮度。

取值范围:[0,100],默认值50。

contrast

目标YUV空间对比度。

取值范围:[0,100],默认值50。

saturation

目标YUV空间饱和度。

取值范围:[0,100],默认值50。

color_gamut

色彩空间类型枚举。

取值范围:[0, 3]

limited_range_en

目标YUV空间动态范围选择。

取值范围:[0,1]

0:输出为Full Range;

1:输出为Limited Range。

默认值0。

表 2 CSC相关动态参数

变量

含义

值域

iso_count

不同ISO的个数

取值范围:[0,16]

iso_level

ISO阈值

最小系统增益~最大系统增益,和sensor有关。

contrast

目标YUV空间对比度,随着ISO进行联动。

取值范围:[0,100],默认值50。

saturation

目标YUV空间饱和度,随着ISO进行联动。

取值范围:[0,100],默认值50。