Rockchip · AI & Linux Hub

摄像头与视频

Rockchip ISP30 开发:RK3588 RkAiq 完整 API、图像处理与调试指南

完整整理 ISP30 V1.2.5:RkAiq 系统控制、AE/AWB/AF、图像处理模块、调试及 RK-RAW 数据格式,保留全部代码与参数。

· ArmSoM Editorial · Rockchip source documentation · 402 分钟阅读

本文为平台参考,完整保留 436 页英文 V1.2.5 原稿的技术正文(PDF 第 16–436 页),包括 RK-RAW 格式说明及最后的错误码、缩略语章节。未提供对应中文 PDF;中文和俄文均为此英文版本的完整译文。42 张技术原图全部来自英文 PDF,保留原图中已有的中文标签;其中 10 张 RAW 位布局/格式截图另恢复为可编辑表格,不以整页图片代替正文。

原稿列明 RK3588 / Linux 5.10,BuildRoot、Android 为 Y,Debian、Yocto 为 N。这是原稿当时的支持记录,不代表所有 BSP 均兼容。用于 ArmSoM 时,应先核实具体板卡的 SoC、ISP 代际、Sensor/VCM、内核、AIQ 库、IQ 文件和 SDK/BSP 分支。ArmSoM Sige7 使用 RK3588,但本文 API 和示例尚未在该板硬件上验证。所有数据及示例均属原文,不是 ArmSoM 实测;本次未执行硬件命令或摄像头/马达操作。

原稿疑点:重复 API 标题、混用 ISP 代际和类型、单位/默认值/日志等级及 RAW 字段说明矛盾均保留并记录,不静默修改数值或标识符。代码注释保留原文。命令和 API 可能改变摄像头或马达状态,使用前应审查并适配。

EDITORIAL-NOTES · ArmSoM Sige7 · ArmSoM camera documentation · Rockchip Linux

1. 总体概述

1.1 结构框图

英文原稿技术图 — PDF p.16

RK3588 VI 是视频输入模块的统称,包含:

接口与数据采集部分:C/DPHY、DVP、CSI、VICAP。

图像处理部分:ISP-0、ISP-1、FEC-0、FEC-1。

RK3588 ISP 属于 RK ISP v3.0 版本,后续文档中以 ISP30 标识。

1.2 工作模式

单 ISP、单 CIS(CMOS 图像传感器):

RAW 直通/在线模式:框图中的蓝色箭头表示数据流路径 1.0。

Raw 回读/离线模式:框图中的橙色箭头表示数据流路径 1.1、1.2。

单 CIS 的双 ISP 2-in-1 模式:

2-in-1 模式支持 ISP-0/ISP-1 分别处理单个 CIS 图像的左、右部分,以支持大分辨率 CIS。

多 CIS:

单 ISP 采用 Raw 回读/离线模式,可通过时分复用支持多 CIS 输入。

1.3 性能与约束概述

支持的分辨率与吞吐量:

工作模式 吞吐量 最大分辨率 支持的最小分辨率
单 ISP、单 CIS 16Mega@30fps 4672x3504 208x128
双 ISP 2-in-1、单 CIS 32Mega@30fps 8064x6048 \

支持 Raw12 数据输入。

ISP30 支持处理 Raw12 数据。Raw14 输入会丢弃低位后按 Raw12 处理;位宽不足 12 位的图像数据会补齐低位后按 Raw12 处理。

支持 Bayer 彩色 CIS 与 Mono 单色 CIS。

支持三帧合一 HDR,支持的 HDR CIS 类型如下:

多曝光 HDR RK 平台支持情况 CIS 应用
Sequential / Framebase HDR(顺序/帧式) ISP20:RV1109/RV1126 等;ISP21:RK356X 等;ISP30:RK3588;ISP32:RV1106 OV4689 IPC/CVR
Staggered / DOL HDR(交错) ISP20:RV1109/RV1126 等;ISP21:RK356X 等;ISP30:RK3588;ISP32:RV1106 OS04A10 IMX464 AR0239 IPC/CVR
DCG HDR ISP20:RV1109/RV1126 等;ISP21:RK356X 等;ISP30:RK3588;ISP32:RV1106 OS04A10 IMX585 IPC/CVR
SME HDR N IMX378 消费类
BME HDR N IMX258 消费类
QBC HDR N OV50C40 IMX586 消费类
横向溢出 HDR N AR0821 IPC
Splite-diode pixel HDR(原文拼写) N OV10640 CVR

Raw 直通/在线模式中,ISP30 数据输出到 DDR 通知阶段的最低延迟约为图像帧传输时间/15。

在 ISP 时分复用模式下,单个 ISP 最多支持四路数据源输入。

RAW 直通/在线模式下,最小帧消隐为 136 行,最小行消隐为 16 像素。

CSM 模块不支持 YUV 限幅范围转换,详见 IMGPROC/CSM 模块 API 说明。

2. 概述

ISP30 包含一系列图像处理算法模块,主要包括暗电流校正、坏点校正、3A、HDR、镜头阴影校正、镜头畸变校正、3DLUT、降噪(RAW 域降噪、多帧降噪、色彩降噪等)和锐化等。

ISP30 包括硬件算法实现与软件逻辑控制两部分,RkAiq 是软件逻辑控制部分的实现。

RkAiq 软件模块从 ISP 驱动获取图像统计数据,结合 IQ Tuning 参数,通过一系列算法计算新的 ISP、Sensor 等硬件参数,并不断迭代以获得最佳图像效果。

2.1 功能说明

英文原稿技术图 — PDF p.18

图 1-1 ISP21 系统框图(原文标注)

ISP30 软硬件总体框图见图 1-1。传感器向 ISP HW 输出数据流,ISP 经一系列图像处理算法后输出图像。RkAiq 持续从 ISP HW 获取统计数据,通过 3A 等算法生成新参数并反馈到各硬件模块。Tuning 工具支持实时在线调参,调试后可保存并生成新的 IQ 参数文件。

2.2 RkAiq 架构

英文原稿技术图 — PDF p.19

图 1-2 RkAiq 总体架构图

1. ISP30 RkAiq 的软件设计思路见图 1-2,主要分为以下四部分:

1. RkAiq lib 动态库:包含主要逻辑,负责从驱动获取统计数据并传递给各算法库。

2. Integrated algo libs:RK 提供的静态算法库默认注册到 RkAiq lib 动态库中。

3. customer 3A libs:客户可按算法库接口定义实现自有 3A 或其他算法库。向 RkAiq lib 注册自定义算法库后,可通过所提供的接口选择运行自定义库或 RK 库。

4. IQ file:IQ 调优结果文件保存算法相关参数及 CIS 等系统静态参数。

2.3 软件架构

英文原稿技术图 — PDF p.20

图 1-3 软件架构框图

ISP30 软件框图见图 1-3,主要分为以下三层:

1. kernel 层:包含摄像头系统所有硬件驱动,主要为 ISP、sensor、VCM、flashlight、IrCutter 等驱动,基于 V4L2 和 Media 框架。

2. framework 层:RkAiq lib 的集成层,支持两种集成方式:

IspServer 模式:Rkaiq lib 运行在独立 IspServer 进程中,客户端通过 dbus 与其通信。此方式还可在不修改源代码的情况下,向 v4L-CTL 等现有第三方应用提供经 ISP 调试效果处理的图像。

直接集成:RkAiq lib 可直接集成到应用程序中。

3. user 层:用户应用层。

2.4 软件流程

英文原稿技术图 — PDF p.22

图 1-4 流程图

RkAiq 接口调用流程见图 1-4。虚线框部分可选,蓝色文字表示应用需配合 RkAiq 流程使用的配置。

configure media pipeline:可选配置 ISP30 链路,如 sensor 输出分辨率,驱动已有默认配置。rk_aiq_uapi2_sysctl_init:初始化 RkAiq,包括 IQ 调优参数及各算法库。other Aiq or algo params uapis:可选通过各算法 API 设置所需参数,注册第三方算法库。rk_aiq_uapi2_sysctl_prepare:准备各算法库与硬件模块的初始参数,并设置到驱动。

video capture start:为应用开启 ISP 数据流,必须在 rk_aiq_uapi2_sysctl_prepare 之后调用。

rk_aiq_uapi2_sysctl_start:启动 RkAiq 内部流程。调用成功后,sensor 开始输出数据,ISP 开始处理并输出图像。

Rkaiq running:持续获取 ISP 驱动统计数据,调用 3A 等算法计算新参数并应用到驱动。PC Online Tuning Tool:PC 可通过 Tuning Tool 在线调参。video capture stop:停止 RkAiq 之前须先停止数据流。rk_aiq_uapi2_sysctl_stop:停止 RkAiq 运行流程;可调整参数后重新启动,也可直接重新启动。

rk_aiq_uapi2_sysctl_deinit:反初始化 RkAiq。

2.5 API 说明

RKAiq 提供功能级 API 和模块级 API 两个层级。

功能级 API:封装模块级 API,主要面向产品应用,对模块进行简单的功能设置。

模块级 API:对模块进行详细参数设置与查询,不按功能再划分 API。

RKAiq 模块级 API 支持同步和异步模式;功能级 API 默认封装模块级 API 的同步模式。

同步模式(Sync):阻塞式 API。AIQ 基本以视频帧为粒度更新参数;同步模式下,调用线程可能阻塞的时间 <= 视频帧周期。

异步模式(ASync):非阻塞式 API。AIQ 框架将设置参数存入内部参数缓冲区,并在相应时刻将最新 ISP 参数配置到硬件。

模块级 API 同步/异步模式使用说明

模块级 API 的第二个参数通常是设置参数的集合,称为属性结构体。其中的 rk_aiq_uapi_sync_t 成员可配置当前 API 的调用模式,详见以下数据类型:

2.5.1 rk_aiq_uapi_sync_t

【说明】模块同步模式

【定义】

 typedef struct rk_aiq_uapi_sync_s {
     rk_aiq_uapi_mode_sync_e     sync_mode;
     bool                        done;
 } rk_aiq_uapi_sync_t;

【成员】

成员名称 说明
sync_mode @setAttrib:参数更新模式标志;RK_AIQ_UAPI_MODE_DEFAULT 默认同步;RK_AIQ_UAPI_MODE_SYNC 为同步;RK_AIQ_UAPI_MODE_ASYNC 为异步。@getAttrib:RK_AIQ_UAPI_MODE_DEFAULT 默认获取最后设置的属性(sync_mode == RK_AIQ_UAPI_MODE_ASYNC),该属性可能尚未生效;RK_AIQ_UAPI_MODE_SYNC 获取当前实际使用的属性;RK_AIQ_UAPI_MODE_ASYNC 与 RK_AIQ_UAPI_MODE_DEFAULT 相同。
done @done(parsm out,原文拼写):参数更新状态标志,true 表示参数已更新,false 表示尚未更新。

AIQ API 参考代码按模块组织,分别提供 API 示例,建议直接参考这些示例。

rkisp_demo/demo/sample

文件名 模块
sample_3dlut_module.cpp 3DLUT
sample_ccm_module.cpp CCM
sample_csm_module.cpp CSM
sample_ablc_module.cpp BLC
sample_abayer2dnr_module.cpp BayerNR 2D
sample_abayertnr_module.cpp BayerNR 3D
sample_aynr_module.cpp YNR
sample_acnr_module.cpp CNR
sample_asharp_module.cpp Sharp
sample_amerge_module.cpp Merge(HDR)
sample_adrc_module.cpp DRC
sample_adehaze_module.cpp 去雾与增强
sample_agamma_module.cpp Gamma
sample_awb_module.cpp AWB
sample_ae_module.cpp AE
sample_af_module.cpp AF

3. 系统控制

3.1 功能概述

系统控制部分包括 AIQ 公共属性配置、初始化、运行、退出及 AIQ 模块设置等功能。

3.2 API 参考

3.2.1 rk_aiq_uapi2_sysctl_preInit

【说明】初始化 AIQ 前预设参数,例如所使用的 IQ 文件。

【语法】

 XCamReturn
 rk_aiq_uapi2_sysctl_preInit (const char* sns_ent_name,
                          rk_aiq_working_mode_t mode,
                          const char* force_iq_file);

【参数】

参数名称 说明 输入/输出
sns_ent_name sensor 实体名称 输入
mode ISP 工作模式 输入
force_iq_file 强制指定的 iq 文件 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

【注意】

应先于 rk_aiq_uapi2_sysctl_init 调用。

mode 仅用于选择 IQ 文件,不配置 ISP 工作模式;工作模式需在 rk_aiq_uapi2_sysctl_prepare 中配置。force_iq_file 非空时,mode 无效。

force_iq_file 参数为完整路径。

此函数并非必需,仅用于在 rk_aiq_uapi2_sysctl_init 前修改部分默认设置。

3.2.2 rk_aiq_uapi2_sysctl_preInit_scene

【说明】初始化 AIQ 前选择 IQ 场景参数。

【语法】

 XCamReturn
 rk_aiq_uapi2_sysctl_preInit_scene (const char* sns_ent_name,
                          const char *main_scene,
                         const char *sub_scene);

【参数】

参数名称 说明 输入/输出
sns_ent_name sensor 实体名称 输入
main_scene 主场景,取值在 IQ 文件中定义。 输入
sub_scene 子场景,取值在 IQ 文件中定义。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

【注意】

应先于 rk_aiq_uapi2_sysctl_init 调用。

main_scene 应根据 IQ 文件的主场景数组选择,默认通常为 “normal”。

sub_scene 应根据 IQ 文件中所选主场景的子场景数组选择,默认通常为 “day”。

默认场景为 normal-day。要运行 hdr-day 或其他自定义模式,需调用此函数指定,否则 IQ 参数可能不正确。

3.2.3 rk_aiq_uapi2_sysctl_switch_scene

【说明】初始化 AIQ 后切换 IQ 场景参数。

【语法】

 int
 rk_aiq_uapi2_sysctl_switch_scene (const rk_aiq_sys_ctx_t* sys_ctx,
                          const char *main_scene,
                         const char *sub_scene);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
main_scene 主场景,取值在 IQ 文件中定义。 输入
sub_scene 子场景,取值在 IQ 文件中定义。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

【注意】

在 rk_aiq_uapi2_sysctl_init 之后调用。

main_scene 应从 IQ 文件中的主场景数组选择。

sub_scene 应从 IQ 文件中所选主场景的子场景数组选择。

此接口涉及 IQ 动态切换,目前测试不足,可能产生意外结果,须谨慎使用。

3.2.4 rk_aiq_uapi2_sysctl_init

【说明】初始化 AIQ 上下文。

【语法】

 rk_aiq_sys_ctx_t*
 rk_aiq_uapi2_sysctl_init (const char* sns_ent_name,
                          const char* iq_file_dir,
                          rk_aiq_error_cb err_cb,
                          rk_aiq_metas_cb metas_cb);

【参数】

参数名称 说明 输入/输出
sns_ent_name sensor 实体名称 输入
iq_file_dir 校准参数文件路径 输入
err_cb 错误回调函数,可为 NULL。 输入
metas_cb 元数据回调函数,可为 NULL。 输入

【返回值】

返回值 说明
rk_aiq_sys_ctx_t* AIQ 上下文指针

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

【注意】

应先于其他函数调用。

3.2.5 rk_aiq_uapi2_sysctl_deinit

【说明】反初始化 AIQ 上下文。

【语法】

 void
 rk_aiq_uapi2_sysctl_deinit( rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入

【返回值】

返回值 说明
无 无

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

【注意】

AIQ 处于 start 状态时不得调用。

3.2.6 rk_aiq_uapi2_sysctl_prepare

【说明】准备 AIQ 运行环境。

【语法】

 XCamReturn
 rk_aiq_uapi2_sysctl_prepare(const rk_aiq_sys_ctx_t* ctx,
                            uint32_t  width,
                            uint32_t  height,
                            rk_aiq_working_mode_t mode);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
width sensor 输出分辨率的宽度,仅用于校验。 输入
height sensor 输出分辨率的高度,仅用于校验。 输入
mode ISP Pipeline 工作模式(NORMAL/HDR)。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

【注意】

应在 rk_aiq_uapi2_sysctl_start 之前调用。

若需在 rk_aiq_uapi2_sysctl_start 之后调用,应先调用 rk_aiq_uapi2_sysctl_stop,再调用 rk_aiq_uapi2_sysctl_prepare 重新准备运行环境。

3.2.7 rk_aiq_uapi2_sysctl_start

【说明】启动 AIQ 控制系统。启动后持续从 ISP 驱动获取 3A 统计数据,运行 3A 算法,并应用计算得到的新参数。

【语法】

 XCamReturn
 rk_aiq_uapi2_sysctl_start(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

【注意】

应在 rk_aiq_uapi2_sysctl_prepare 之后调用。

3.2.8 rk_aiq_uapi2_sysctl_stop

【说明】停止 AIQ 控制系统。

【语法】

 XCamReturn
 rk_aiq_uapi2_sysctl_stop(const rk_aiq_sys_ctx_t* ctx, bool keep_ext_hw_st);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
keep_ext_hw_st 停止后,是否保持 ircut/cpsl 等外部设备的状态不变。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

3.2.9 rk_aiq_uapi2_sysctl_getStaticMetas

【说明】查询 sensor 对应的分辨率、数据格式等静态信息。

【语法】

 XCamReturn
 rk_aiq_uapi2_sysctl_getStaticMetas(const char* sns_ent_name,
 rk_aiq_static_info_t* static_info);

【参数】

参数名称 说明 输入/输出
sns_ent_name sensor 实体名称 输入
static_info 静态信息结构体指针 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

3.2.10 rk_aiq_uapi2_sysctl_enumStaticMetas

【说明】枚举 AIQ 获取到的静态信息。

【语法】

 XCamReturn
 rk_aiq_uapi2_sysctl_enumStaticMetas(int index, rk_aiq_static_info_t*
 static_info);

【参数】

参数名称 说明 输入/输出
index 索引号,从 0 开始。 输入
static_info 静态信息结构体指针 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

3.2.11 rk_aiq_uapi2_sysctl_enableAxlib

【说明】设置自定义算法库的运行状态。

【语法】

 XCamReturn
 rk_aiq_uapi2_sysctl_enableAxlib(const rk_aiq_sys_ctx_t* ctx,
                                const int algo_type,
                                const int lib_id,
                                bool enable);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
algo_type 待操作的算法模块类型。 输入
lib_id 算法库标识 ID 输入
enable 状态设置 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

【注意】

若 lib_id 与当前运行的算法库相同,除未初始化状态外,任何状态均可调用。

其他情况下仅能在 prepared 状态调用,并以 lib_id 标识的新算法库替换 algo_type 标识的算法库。

3.2.12 rk_aiq_uapi2_sysctl_getAxlibStatus

【说明】获取算法库状态。

【语法】

 bool
 rk_aiq_uapi2_sysctl_getAxlibStatus(const rk_aiq_sys_ctx_t* ctx,
                                   const int algo_type,
                                   const int lib_id);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
algo_type 待操作的算法模块类型。 输入
lib_id 算法库标识 ID 输入

【返回值】

返回值 说明
false 关闭状态
true 开启状态

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

3.2.13 rk_aiq_uapi2_sysctl_getEnabledAxlibCtx

【说明】获取已启用算法库的上下文结构体。

【语法】

 const RkAiqAlgoContext*
 rk_aiq_uapi2_sysctl_getEnabledAxlibCtx(const rk_aiq_sys_ctx_t* ctx, const int
 algo_type);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
algo_type 待操作的算法模块类型。 输入

【返回值】

返回值 说明
NULL 获取失败
Non-NULL 获取成功

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

【注意】

返回的算法上下文结构体供内部私有函数使用。对于用户自定义算法库,应在 rk_aiq_uapi2_sysctl_enableAxlib 后调用,否则返回 NULL。

3.2.14 rk_aiq_uapi2_sysctl_setCpsLtCfg

【说明】设置补光控制信息。

【语法】

 XCamReturn
 rk_aiq_uapi2_sysctl_setCpsLtCfg(const rk_aiq_sys_ctx_t* ctx,
                        rk_aiq_cpsl_cfg_t* cfg);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
cfg 补光配置结构体指针 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

3.2.15 rk_aiq_uapi2_sysctl_getCpsLtInfo

【说明】获取补光控制信息。

【语法】

 XCamReturn
 rk_aiq_uapi2_sysctl_getCpsLtInfo(const rk_aiq_sys_ctx_t* ctx,
                        rk_aiq_cpsl_info_t* info);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
info 补光配置结构体指针 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

3.2.16 rk_aiq_uapi2_sysctl_queryCpsLtCap

【说明】查询补光能力。

【语法】

 XCamReturn
 rk_aiq_uapi2_sysctl_queryCpsLtCap(const rk_aiq_sys_ctx_t* ctx,
                        rk_aiq_cpsl_cap_t* cap);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
cap 用于查询补光支持能力的结构体指针。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

3.2.17 rk_aiq_uapi2_sysctl_getBindedSnsEntNmByVd

【说明】查询视频节点对应的 sensor 实体名称。

【语法】

 const char* rk_aiq_uapi2_sysctl_getBindedSnsEntNmByVd(const char* vd);

【参数】

参数名称 说明 输入/输出
vd 视频设备路径,例如 /dev/video20 输入

【返回值】

返回值 说明
sensor 实体名称 字符串指针

【注意】

参数必须是 ISPP scale 节点路径。

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

3.2.18 rk_aiq_uapi2_sysctl_updateIq

【说明】不停止数据流,动态更新当前使用的 IQ 参数文件。

【语法】

 XCamReturn rk_aiq_uapi2_sysctl_updateIq(const rk_aiq_sys_ctx_t* sys_ctx, char*
 iqfile);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
iqfile 新 IQ 文件 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【注意】

iqfile 必须为完整路径。

更新 IQ 参数不等于切换工作模式,例如 HDR 与 normal 之间不能靠更新 IQ 文件切换。但部分功能可通过不同 IQ 参数配置切换,如日夜切换完全通过 IQ 配置实现。

切换 IQ 时,IQ 中的配置会覆盖用户 API 设置。例如 IQ 可将 AWB 配置为手动或自动;执行此函数后,无论 AWB 当前模式如何,最终都会被新 IQ 的默认配置覆盖。

【依赖】

头文件:rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

3.2.19 rk_aiq_uapi2_sysctl_getCrop

【说明】获取裁剪参数。

【语法】

 XCamReturn
 rk_aiq_uapi2_sysctl_getCrop(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_rect_t
 *rect);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
rect 裁剪参数结构体指针 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

3.3 数据类型

3.3.1 rk_aiq_working_mode_t

【说明】AIQ 图像链路工作模式。

【定义】

 typedef enum {
     RK_AIQ_WORKING_MODE_NORMAL,
     RK_AIQ_WORKING_MODE_ISP_HDR2    = 0x10,
     RK_AIQ_WORKING_MODE_ISP_HDR3    = 0x20,
 } rk_aiq_working_mode_t;

【成员】

成员名称 说明
RK_AIQ_WORKING_MODE_NORMAL 普通模式
RK_AIQ_WORKING_MODE_ISP_HDR2 双帧 HDR 模式
RK_AIQ_WORKING_MODE_ISP_HDR3 三帧 HDR 模式

【注意事项】

应先查询 sensor 与 AIQ 支持的模式;设置不支持的模式无效。

3.3.2 rk_aiq_static_info_t

【说明】AIQ 静态信息。

【定义】

 typedef struct {
     rk_aiq_sensor_info_t    sensor_info;
     rk_aiq_lens_info_t      lens_info;
     bool has_lens_vcm;
     bool has_fl;
     bool fl_strth_adj_sup;
     bool has_irc;
     bool fl_ir_strth_adj_sup;
 } rk_aiq_static_info_t;

【成员】

成员名称 说明
sensor_info sensor 名称、支持分辨率等信息。
lens_info 镜头信息
has_lens_vcm 是否配有 VCM
has_fl 是否配有闪光灯
fl_strth_adj_sup 闪光灯强度是否可调
bool has_irc 是否配有 IR-CUT
bool fl_ir_strth_adj_sup  

3.3.3 rk_aiq_sensor_info_t

【说明】sensor 信息。

【定义】

 typedef struct {
     char sensor_name[32];
     rk_frame_fmt_t  support_fmt[SUPPORT_FMT_MAX];
     int32_t num;
     /* binded pp stream media index */
     int8_t binded_strm_media_idx;
 } rk_aiq_sensor_info_t;

【成员】

成员名称 说明
sensor_name sensor 名称
support_fmt 支持的格式
num 支持的格式数量
has_fl 是否配有闪光灯
binded_strm_media_idx sensor 挂载的 media 节点编号。

3.3.4 rk_aiq_module_id_t

【说明】AIQ 模块 ID。

【定义】

 typedef enum {
     RK_MODULE_INVAL = 0,
     RK_MODULE_DPCC,
     RK_MODULE_BLS,
     RK_MODULE_LSC,
     RK_MODULE_AWB_GAIN,
     RK_MODULE_CTK,
     RK_MODULE_GOC,
     RK_MODULE_SHARP,
     RK_MODULE_AE,
     RK_MODULE_AWB,
     RK_MODULE_NR,
     RK_MODULE_GIC,
     RK_MODULE_3DLUT,
     RK_MODULE_LDCH,
     RK_MODULE_TNR,
     RK_MODULE_FEC,
     RK_MODULE_MAX
 }rk_aiq_module_id_t;

【成员】

成员名称 说明
RK_MODULE_DPCC 坏点检测与校正
RK_MODULE_BLS 黑电平
RK_MODULE_LSC 镜头阴影校正
RK_MODULE_AWB_GAIN 白平衡增益
RK_MODULE_CTK 色彩校正
RK_MODULE_GOC Gamma
RK_MODULE_SHARP 锐化
RK_MODULE_AE 曝光
RK_MODULE_AWB 白平衡
RK_MODULE_NR 降噪
RK_MODULE_GIC 绿色平衡
RK_MODULE_3DLUT 3DLUT
RK_MODULE_LDCH LDCH
RK_MODULE_TNR 3D 降噪
RK_MODULE_FEC 鱼眼校正

3.3.5 rk_aiq_cpsl_cfg_t

【说明】补光设置信息结构体。

【定义】

 typedef struct rk_aiq_cpsl_cfg_s {
     RKAiqOPMode_t mode;
     rk_aiq_cpsls_t lght_src;
     bool gray_on; /*!< force to gray if light on */
     union {
         struct {
             float sensitivity; /*!< Range [0-100] */
             uint32_t sw_interval; /*!< switch interval time, unit  seconds */
         } a; /*< auto mode */
         struct {
             uint8_t on; /*!< disable 0, enable 1 */
             float strength_led; /*!< Range [0-100] */
             float strength_ir; /*!< Range [0-100] */
         } m; /*!< manual mode */
     } u;
 } rk_aiq_cpsl_cfg_t;

【成员】

成员名称 说明
mode 工作模式
lght_src 光源类型
gray_on 切换到夜间模式后,是否将图像切为黑白。
sensitivity 自动模式的切换灵敏度,范围 [0,100]。
sw_interval 自动模式的切换间隔,单位秒。
on 手动模式是否切换到夜间模式。
strength_led 手动模式 LED 光强,范围 [0,100]。
strength_ir 手动模式红外灯强度,范围 [0,100]。

3.3.6 rk_aiq_cpsl_info_t

【说明】补光查询信息结构体。

【定义】

 typedef struct rk_aiq_cpsl_info_s {
     int32_t mode;
     uint8_t on;
     bool gray;
     float strength_led;
     float strength_ir;
     float sensitivity;
     uint32_t sw_interval;
     int32_t lght_src;
 } rk_aiq_cpsl_info_t;

【成员】

成员名称 说明
mode 工作模式
lght_src 光源类型
gray 切换到夜间模式后,是否将图像切为黑白。
sensitivity 自动模式的切换灵敏度,范围 [0,100]。
sw_interval 自动模式的切换间隔,单位秒。
on 手动模式是否切换到夜间模式。
strength_led 手动模式 LED 光强,范围 [0,100]。
strength_ir 手动模式红外灯强度,范围 [0,100]。

3.3.7 rk_aiq_cpsl_cap_t

【说明】补光支持能力结构体。

【定义】

 typedef struct rk_aiq_cpsl_cap_s {
     int32_t supported_modes[RK_AIQ_OP_MODE_MAX];
     uint8_t modes_num;
     int32_t supported_lght_src[RK_AIQ_CPSLS_MAX];
     uint8_t lght_src_num;
     rk_aiq_range_t strength_led;
     rk_aiq_range_t sensitivity;
     rk_aiq_range_t strength_ir;
 } rk_aiq_cpsl_cap_t;

【成员】

成员名称 说明
supported_modes 支持的工作模式
modes_num 支持的模式数量
gray 切换到夜间模式后,是否将图像切为黑白。
supported_lght_src 支持的光源
lght_src_num 支持的光源数量
strength_led LED 强度范围
sensitivity 灵敏度范围
strength_ir 红外灯强度范围

3.3.8 rk_aiq_rect_t

【说明】定义裁剪参数结构体。

【定义】

 typedef struct rk_aiq_rect_s {
     int left;
     int top;
     int width;
     int height;
 } rk_aiq_rect_t;

【成员】

成员名称 说明
left 水平输出偏移
top 垂直输出偏移
width 水平输出尺寸
height 垂直输出尺寸

4. 离线帧处理

4.1 概述

RKAIQ 提供离线 RAW 帧处理功能:解析 RK 自定义 RAW 格式文件,送入 ISP 处理,再输出可正常显示的图像。

注意:离线帧处理功能尚未测试。

4.2 功能框图

英文原稿技术图 — PDF p.46

离线帧处理框图

4.3 功能说明

支持 RK-RAW 文件输入。使用文件输入接口时,调用进程会阻塞,直到文件处理完成且成功输出。

支持 RK-RAW buffer 输入及异步处理。使用该 buffer 输入接口时调用进程不阻塞;buffer 处理完成后调用已注册的回调函数(若已注册)。

支持 RK-RAW buffer 输入及同步处理。调用进程会阻塞,直到 buffer 处理完成且成功输出。

4.4 RK-RAW 格式说明

参见 RK RAW File Format 文档。

4.5 支持的 RAW 格式

支持 raw8/raw10/raw12,以及 BGGR/GBRG/GRBG/RGGB 四种 Bayer 格式。

4.6 API 参考

4.7 数据结构

4.8 注意事项

使用 RK Raw 数据处理功能创建 AIQ Context 时,rk_aiq_uapi2_sysctl_init 的 sns_ent_name 参数必须为 “FakeCamera”。

Raw 数据处理依赖 IQ XML 效果文件。XML 应按与输入 RK Raw 帧相同的分辨率生成,文件必须命名为 FakeCamera.xml,并放在 XML 文件的加载路径中。

4.9 参考示例

离线帧处理 API 用法详见 rkisp_demo,路径为 YOUR_SDK_DIR/external/camera_engine_rkaiq/rkisp_demo。

5. 摄像头组

5.1 概述

环视等应用需要将多个摄像头编为一组,统一管理并设置曝光等参数。可创建 group 将多个摄像头划入同组。Camera Group API 基于单摄像头 AIQ API 实现;除另有说明外,单 AIQ API 同样适用于 Camera group。AIQ 内部按传入 Context 类型,将请求分派到摄像头组或单摄像头。

5.1.1 rk_aiq_uapi2_camgroup_create

【说明】创建 Camera group 时,会为每个 Camera 创建独立 AIQ ctx,再交由 Group Ctx 管理。

【语法】

 rk_aiq_camgroup_ctx_t*
 rk_aiq_uapi2_camgroup_create (rk_aiq_camgroup_instance_cfg_t* cfg);

【参数】

参数名称 说明 输入/输出
cfg 配置参数 输入

【返回值】

返回值 说明
rk_aiq_camgroup_ctx_t* 组运行环境
NULL 失败

【依赖】

头文件:rk_aiq_user_api2_camgroup.h

库文件:librkaiq.so

【注意】

rk_aiq_uapi2_sysctl_init 创建单摄像头 AIQ 运行环境。已用该函数创建运行环境的 sensor 实体,不应再用 rk_aiq_uapi2_camgroup_create 创建组运行环境,反之亦然。

IQ 默认场景为 normal-day。若使用 HDR 或其他模式,需预先通过 rk_aiq_uapi2_sysctl_preInit_scene 设置。

5.1.2 rk_aiq_uapi2_camgroup_prepare

【说明】按选定的 pipeline 模式生成初始化参数并创建链路,会调用各 Camera 的 AIQ ctx 对应的 rk_aiq_uapi2_sysctl_prepare。

【语法】

 XCamReturn
 rk_aiq_uapi2_camgroup_prepare (rk_aiq_camgroup_ctx_t* camgroup_ctx,
 rk_aiq_working_mode_t mode);

【参数】

参数名称 说明 输入/输出
camgroup_ctx 组运行环境 输入
mode Pipeline 工作模式 输入

【返回值】

返回值 说明
0 成功
非 0 参见错误码

【依赖】

头文件:rk_aiq_user_api2_camgroup.h;库文件:librkaiq.so

5.1.3 rk_aiq_uapi2_camgroup_start

【说明】运行摄像头组,调用各 Camera 的 AIQ ctx 对应的 rk_aiq_uapi2_sysctl_start。

【语法】

 XCamReturn
 rk_aiq_uapi2_camgroup_start (rk_aiq_camgroup_ctx_t* camgroup_ctx);

【参数】

参数名称 说明 输入/输出
camgroup_ctx 组运行环境 输入

【返回值】

返回值 说明
0 成功
非 0 失败,参见错误码

【依赖】

头文件:rk_aiq_user_api2_camgroup.h;库文件:librkaiq.so

5.1.4 rk_aiq_uapi2_camgroup_stop

【说明】停止摄像头组,调用各 Camera 的 AIQ ctx 对应的 rk_aiq_uapi2_sysctl_stop。

【语法】

 XCamReturn
 rk_aiq_uapi2_camgroup_stop (rk_aiq_camgroup_ctx_t* camgroup_ctx);

【参数】

参数名称 说明 输入/输出
camgroup_ctx 组运行环境 输入

【返回值】

返回值 说明
0 成功
非 0 失败,参见错误码

【依赖】

头文件:rk_aiq_user_api2_camgroup.h;库文件:librkaiq.so

5.1.5 rk_aiq_uapi2_camgroup_destroy

【说明】销毁摄像头组,调用各 Camera 的 AIQ ctx 对应的 rk_aiq_uapi2_sysctl_deinit。

【语法】

 XCamReturn
 rk_aiq_uapi2_camgroup_destroy (rk_aiq_camgroup_ctx_t* camgroup_ctx);

【参数】

参数名称 说明 输入/输出
camgroup_ctx 组运行环境 输入

【返回值】

返回值 说明
0 成功
非 0 失败,参见错误码

【依赖】

头文件:rk_aiq_user_api2_camgroup.h;库文件:librkaiq.so

5.1.6 rk_aiq_uapi2_camgroup_getOverlapMap

【说明】在环视场景中,从 CameraGroup 上下文获取各摄像头的重叠区域信息。

【语法】

 struct RK_PS_SrcOverlapMap*
 rk_aiq_uapi2_camgroup_getOverlapMap (rk_aiq_camgroup_ctx_t* camgroup_ctx);

【参数】

参数名称 说明 输入/输出
camgroup_ctx 组运行环境 输入

【返回值】

返回值 说明
struct RK_PS_SrcOverlapMap* 重叠区域信息结构体指针
NULL 失败

【依赖】

头文件:rk_aiq_user_api2_camgroup.h;库文件:librkaiq.so

5.1.7 rk_aiq_uapi2_camgroup_getOverlapMap

【说明】在环视场景中,从文件获取各摄像头的重叠区域信息。

【语法】

 XCamReturn
 rk_aiq_uapi2_camgroup_getOverlapMap_from_file (const char* map_file,
                                                             struct
 RK_PS_SrcOverlapMap** overlapMap);

【参数】

参数名称 说明 输入/输出
map_file 存储重叠信息的文件 输入
overlapMap 存储获取到的重叠信息 输入、输出

【返回值】

返回值 说明
0 成功
非 0 失败,参见错误码

【依赖】

头文件:rk_aiq_user_api2_camgroup.h;库文件:librkaiq.so

5.1.8 rk_aiq_uapi2_camgroup_getAiqCtxBySnsNm

【说明】通过组内 Sensor 实体名称获取单个 Camera 的 AIQ 上下文。

【语法】

 rk_aiq_sys_ctx_t*
 rk_aiq_uapi2_camgroup_getAiqCtxBySnsNm (rk_aiq_camgroup_ctx_t* camgroup_ctx,
 const char* sns_entity_name);

【参数】

参数名称 说明 输入/输出
camgroup_ctx 组运行环境 输入
sns_entity_name 组内 sensor 实体名称 输入

【返回值】

返回值 说明
rk_aiq_sys_ctx_t* 获取到的 AIQ 运行环境
NULL 失败

【依赖】

头文件:rk_aiq_user_api2_camgroup.h;库文件:librkaiq.so

5.1.9 rk_aiq_uapi2_camgroup_getCamInfos

【说明】获取组内摄像头信息,例如 sensor 实体名称。

【语法】

 XCamReturn
 rk_aiq_uapi2_camgroup_getCamInfos (rk_aiq_camgroup_ctx_t* camgroup_ctx,
                    rk_aiq_camgroup_camInfos_t* camInfos);

【参数】

参数名称 说明 输入/输出
camgroup_ctx 组运行环境 输入
camInfos 获取到的组内摄像头信息 输出

【返回值】

返回值 说明
0 成功
非 0 失败,参见错误码

【依赖】

头文件:rk_aiq_user_api2_camgroup.h;库文件:librkaiq.so

5.1.10 rk_aiq_uapi2_camgroup_bind

【说明】预留接口,尚未实现。

5.1.11 rk_aiq_uapi2_camgroup_unbind

【说明】预留接口,尚未实现。

5.2 数据结构

5.2.1 rk_aiq_camgroup_instance_cfg_t

【说明】Carmelaghrup 配置参数(原文拼写)。

【定义】

   typedef struct rk_aiq_camgroup_instance_cfg_s {
       const char* sns_ent_nm_array[RK_AIQ_CAM_GROUP_MAX_CAMS];
       int sns_num;
       const char* config_file_dir;
        /* followings are relative path to config_file_dir */
        const char* single_iq_file;
        const char* group_iq_file;
        const char* overlap_map_file;
    } rk_aiq_camgroup_instance_cfg_t;

【成员】

成员名称 说明
sns_ent_nm_array 需要加入由组管理的 Sensor 实体数组。
sns_num 需加入组的 sensor 实体数量。
config_file_dir 指定 IQ 文件路径。
single_iq_file 指定 IQ 文件名,可为 NULL;为 NULL 时由 AIQ 自动选择。
group_iq_file 指定 Camera group 的 IQ 配置文件,目前未使用。
overlap_map_file 指定 Camera 重叠信息文件,可为 NULL。

5.2.2 rk_aiq_camgroup_camInfos_t

【说明】Camera group 中各摄像头的信息。

【定义】

    typedef struct rk_aiq_camgroup_camInfos_s {
        int valid_sns_num;
        const char* sns_ent_nm[RK_AIQ_CAM_GROUP_MAX_CAMS];
        int sns_camPhyId[RK_AIQ_CAM_GROUP_MAX_CAMS];
   } rk_aiq_camgroup_camInfos_t;

【成员】

成员名称 说明
valid_sns_num 组中包含的 Sensor 实体数量。
sns_ent_nm 组中包含的 Sensor 实体名称数组。
sns_camPhyId 组中各 Sensor 实体对应的物理 ID 数组。

5.2.3 struct RK_PS_SrcOverlapMap

【说明】定义摄像头重叠区域。

【定义】

        struct RK_PS_SrcOverlapMap
      {
            char versionInfo[64];
            RK_PS_SrcOverlapPosition srcOverlapPositon[8];
            unsigned char overlapMap[15 * 15 * 8];
        };

【成员】

成员名称 说明
versionInfo 版本信息
srcOverlapPositon 各摄像头的旋转方向,可为 0、90、180、270 度。
overlapMap 8 个摄像头各统计块的重叠信息:每个摄像头统计数据为 15*15,共 8 个摄像头(编号 0~7);实际不足 8 个时,对应位置填 0。按行保存:先保存 8 个摄像头的第 1 行,再保存第 2 行,以此类推。取值 0~255:完全不重叠为 0,完全重叠为 255,部分重叠按比例插值。存储顺序为 camera0 row0; camera1 row0; camera2 row0; camera3 row0; camera4 row0; camera5 row0; camera6 row0; camera7 row0; camera0 row1; camera1 row1; camera2 row1; camera3 row1; camera4 row1; camera5 row1; camera6 row1; camera7 row1; …… camera0 row14; camera1 row14; camera2 row14; camera3 row14; camera4 row14; camera5 row14; camera6 row14; camera7 row14;

6. AE

6.1 概述

AE 模块按自动测光系统获取当前图像曝光量,自动配置镜头光圈、sensor 快门和增益,以获得最佳图像质量。

6.2 重要概念

曝光时间:sensor 积累电荷的时间,即像素开始曝光至电荷读出的间隔。

曝光增益:sensor 输出电荷的总放大倍数,一般包括数字增益和模拟增益。模拟增益引入的噪声略少,因此通常优先使用。

光圈:镜头中可改变通光孔径大小的机构。

防闪烁:抑制灯光电源频率与 sensor 帧率不匹配引起的画面闪烁,一般通过限制曝光时间和修改 sensor 帧率实现。

6.3 功能说明

AE 模块由 AE 统计和 AE 控制策略算法组成。

6.4 功能级 API 参考

6.4.1 rk_aiq_uapi2_setAeLock

【说明】

设置 AE 曝光锁定功能。

【语法】

 XCamReturn rk_aiq_uapi2_setAeLock(const rk_aiq_sys_ctx_t* ctx, bool on);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
on 锁定使能 输入

【返回值】

返回值 说明
0 成功
非 0  

6.4.2 rk_aiq_uapi2_setExpMode

【说明】设置曝光模式,支持自动曝光和手动曝光。

【语法】

 XCamReturn rk_aiq_uapi2_setExpMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
mode 曝光模式 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【注意】

切换为手动曝光时,增益和曝光时间采用图像效果文件中的初始值。如需切换时同时设置曝光值,可使用 rk_aiq_uapi2_setManualExp。

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

6.4.3 rk_aiq_uapi2_getExpMode

【说明】获取曝光模式。

【语法】

 XCamReturn rk_aiq_uapi2_getExpMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
mode 曝光模式 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

6.4.4 rk_aiq_uapi2_setManualExp

【说明】使用手动曝光模式并设置增益和曝光时间。

【语法】

 XCamReturn rk_aiq_uapi2_setManualExp(const rk_aiq_sys_ctx_t* ctx, float gain,
 float time);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
gain 曝光增益 输入
time 曝光时间 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

6.4.5 rk_aiq_uapi2_setExpGainRange

【说明】设置增益范围。

【语法】

 XCamReturn rk_aiq_uapi2_setExpGainRange(const rk_aiq_sys_ctx_t* ctx, paRange_t
 *gain);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
gain 曝光增益范围 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

6.4.6 rk_aiq_uapi2_getExpGainRange

【说明】获取增益范围。

【语法】

 XCamReturn rk_aiq_uapi2_getExpGainRange(const rk_aiq_sys_ctx_t* ctx, paRange_t
 *gain);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
gain 曝光增益范围 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

6.4.7 rk_aiq_uapi2_setExpTimeRange

【说明】设置曝光时间范围。

【语法】

 XCamReturn rk_aiq_uapi2_setExpTimeRange(const rk_aiq_sys_ctx_t* ctx, paRange_t
 *time);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
time 曝光时间范围 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

6.4.8 rk_aiq_uapi2_getExpTimeRange

【说明】获取曝光时间范围。

【语法】

 XCamReturn rk_aiq_uapi2_getExpTimeRange(const rk_aiq_sys_ctx_t* ctx, paRange_t
 *time);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
time 曝光时间范围 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

6.4.9 rk_aiq_uapi2_setBLCMode

【说明】背光补偿开关及区域设置。

【语法】

 XCamReturn rk_aiq_uapi2_setBLCMode(const rk_aiq_sys_ctx_t* ctx, bool on,
 aeMeasAreaType_t areaType);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
on 开关 输入
areaType 补偿区域选择 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【注意】

接口仅在线性模式下可用。

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

6.4.10 rk_aiq_uapi2_setBLCStrength

【说明】设置暗区提升强度。

【语法】

 XCamReturn rk_aiq_uapi2_setBLCStrength(const rk_aiq_sys_ctx_t* ctx, int
 strength);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
strength 提升强度,范围 [1,100]。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【注意】

接口仅在线性模式下可用。

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

6.4.11 rk_aiq_uapi2_setHLCMode

【说明】强光抑制开关。

【语法】

 XCamReturn rk_aiq_uapi2_setHLCMode(const rk_aiq_sys_ctx_t* ctx, bool on);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
on 开关 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【注意】

接口仅在线性模式下可用。

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

6.4.12 rk_aiq_uapi2_setHLCStrength

【说明】设置强光抑制强度。

【语法】

 XCamReturn rk_aiq_uapi2_setHLCStrength(const rk_aiq_sys_ctx_t* ctx, int
 strength);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
strength 抑制强度,范围 [1,100]。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【注意】

接口仅在线性模式下可用。

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.sov(原文拼写,须核对)。

6.4.13 rk_aiq_uapi2_setAntiFlickerEn

【说明】设置抗工频闪烁开关。

【语法】

 XCamReturn rk_aiq_uapi2_setAntiFlickerEn(const rk_aiq_sys_ctx_t* ctx, bool on);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
on 功能开关参数 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

6.4.14 rk_aiq_uapi2_getAntiFlickerEn

【说明】设置抗工频闪烁开关。

【语法】

 XCamReturn rk_aiq_uapi2_getAntiFlickerEn(const rk_aiq_sys_ctx_t* ctx, bool* on);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
on 功能开关参数 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

6.4.15 rk_aiq_uapi2_setAntiFlickerMode

【说明】设置抗闪烁模式。

【语法】

 XCamReturn rk_aiq_uapi2_setAntiFlickerMode(const rk_aiq_sys_ctx_t* ctx,
 antiFlickerMode_t mode);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
mode 抗闪烁模式 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

6.4.16 rk_aiq_uapi2_getAntiFlickerMode

【说明】获取抗闪烁模式。

【语法】

 XCamReturn rk_aiq_uapi2_getAntiFlickerMode(const rk_aiq_sys_ctx_t* ctx,
 antiFlickerMode_t *mode);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
mode 抗闪烁模式 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

6.4.17 rk_aiq_uapi2_setExpPwrLineFreqMode

【说明】设置抗闪烁频率。

【语法】

 XCamReturn rk_aiq_uapi2_setExpPwrLineFreqMode(const rk_aiq_sys_ctx_t* ctx,
 expPwrLineFreq_t freq);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
freq 抗闪烁频率 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

6.4.18 rk_aiq_uapi2_getExpPwrLineFreqMode

【说明】获取抗闪烁频率。

【语法】

 XCamReturn rk_aiq_uapi2_getExpPwrLineFreqMode(const rk_aiq_sys_ctx_t* ctx,
 expPwrLineFreq_t *freq);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
freq 抗闪烁频率 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

6.5 功能级 API 数据类型

6.5.1 opMode_t

【说明】定义自动/手动模式。

【定义】

 typedef enum opMode_e {
     OP_AUTO = 0,
     OP_MANUALl = 1,
     OP_INVAL
 } opMode_t;

【成员】

成员名称 说明
OP_AUTO 自动模式
OP_MANUALl 手动模式
OP_INVAL 无效值

6.5.2 paRange_t

【说明】定义参数范围。

【定义】

 typedef struct paRange_s {
     float max;
     float min;
 } paRange_t;

【成员】

成员名称 说明
max 上限值
min 下限值

6.5.3 aeMeasAreaType_t

【说明】定义 AE 测量区域类型。

【定义】

 typedef enum aeMeasAreaType_e {
     AE_MEAS_AREA_AUTO = 0,
     AE_MEAS_AREA_UP,
     AE_MEAS_AREA_BOTTOM,
     AE_MEAS_AREA_LEFT,
     AE_MEAS_AREA_RIGHT,
     AE_MEAS_AREA_CENTER,
 } aeMeasAreaType_t;

【成员】

成员名称 说明
AE_MEAS_AREA_AUTO 自动
AE_MEAS_AREA_UP 上部区域
AE_MEAS_AREA_BOTTOM 下部区域
AE_MEAS_AREA_LEFT 左侧区域
AE_MEAS_AREA_RIGHT 右侧区域
AE_MEAS_AREA_CENTER 中央区域

6.5.4 expPwrLineFreq_t

【说明】定义抗闪烁频率。

【定义】

 typedef enum expPwrLineFreq_e {
        EXP_PWR_LINE_FREQ_DIS   = 0,
        EXP_PWR_LINE_FREQ_50HZ  = 1,
        EXP_PWR_LINE_FREQ_60HZ  = 2,
 } expPwrLineFreq_t;

【成员】

成员名称 说明
EXP_PWR_LINE_FREQ_DIS  
EXP_PWR_LINE_FREQ_50HZ 50 Hz
EXP_PWR_LINE_FREQ_60HZ 60 Hz

6.5.5 antiFlickerMode_t

【说明】定义抗闪烁模式。

【定义】

 typedef enum antiFlickerMode_e {
     ANTIFLICKER_NORMAL_MODE = 0,
     ANTIFLICKER_AUTO_MODE = 1,
 } antiFlickerMode_t;

【成员】

成员名称 说明
ANTIFLICKER_NORMAL_MODE 普通模式
ANTIFLICKER_AUTO_MODE 自动选择模式

6.6 模块级 API 参考

6.6.1 rk_aiq_user_api2_ae_setExpSwAttr

【说明】设置 AE 曝光软件属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_ae_setExpSwAttr(const rk_aiq_sys_ctx_t* ctx,
                                 const Uapi_ExpSwAttrV2_t expSwAttr);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
expSwAttr AE 公共功能控制参数结构体 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h

库文件:librkaiq.so

【示例】

设置手动曝光属性

曝光分量包括 sensor 曝光时间、sensor 曝光增益和 ISP 数字增益。设置手动曝光模式后,还需分别设置各分量的手动状态(ManualGainEn、ManualTimeEn、ManualIspDgainEn)及对应手动值。手动曝光模式要求所有曝光分量均为手动;各分量取值受 sensor 和镜头限制。设置值超过 sensor 限制时,算法自动修正。

 Uapi_ExpSwAttrV2_t expSwAttr;
 ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
 expSwAttr.AecOpType = RK_AIQ_OP_MODE_MANUAL;
 //LinearAE
 expSwAttr.stManual.LinearAE.ManualGainEn = true;
 expSwAttr.stManual.LinearAE.ManualTimeEn = true;
 expSwAttr.stManual.LinearAE.GainValue = 1.0f; /*gain = 1x*/
 expSwAttr.stManual.LinearAE.TimeValue = 0.02f; /*time = 1/50s*/
 //HdrAE (should set all frames)
 expSwAttr.stManual.HdrAE.ManualGainEn = true;
 expSwAttr.stManual.HdrAE.ManualTimeEn = true;
 expSwAttr.stManual.HdrAE.GainValue[0] = 1.0f; /*sframe gain = 1x*/
 expSwAttr.stManual.HdrAE.TimeValue[0] = 0.002f; /*sframe time = 1/500s*/
 expSwAttr.stManual.HdrAE.GainValue[1] = 2.0f; /*mframe gain = 2x*/
 expSwAttr.stManual.HdrAE.TimeValue[1] = 0.01f; /*mframe time = 1/100s*/
 expSwAttr.stManual.HdrAE.GainValue[2] = 4.0f; /*lframe gain = 4x*/
 expSwAttr.stManual.HdrAE.TimeValue[2] = 0.02f; /*lframe time = 1/50s*/
 ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);

设置自动曝光属性

自动曝光可设置各曝光分量范围;超过 sensor 限制时,算法自动修正。

【注意】设置曝光分量范围所用参数,与获取该范围所用参数不同。

 Uapi_ExpSwAttrV2_t expSwAttr;
 ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
 expSwAttr.AecOpType = RK_AIQ_OP_MODE_AUTO;
 //set time range in struct "stAdvanced"
 expSwAttr.stAdvanced.SetAeRangeEn = true;/*must enable*/
 //LinAE
 expSwAttr.stAdvanced.SetLinAeRange.stExpTimeRange.Max = 0.04f; /*time_max =
 0.04*/
 expSwAttr.stAdvanced.SetLinAeRange.stExpTimeRange.Min = 0.001f; /*time_min =
 0.001*/
 //HdrAE
 expSwAttr.stAdvanced.SetHdrAeRange.stExpTimeRange[0].Max = 0.002f; /*sframe
 time_max = 0.02*/
 expSwAttr.stAdvanced.SetHdrAeRange.stExpTimeRange[0].Min = 0.001f; /*sframe
 time_min = 0.01*/
 expSwAttr.stAdvanced.SetHdrAeRange.stExpTimeRange[1].Max = 0.003f; /*mframe
 time_max = 0.03*/
 expSwAttr.stAdvanced.SetHdrAeRange.stExpTimeRange[1].Min = 0.002f; /*mframe
 time_min = 0.02*/
 expSwAttr.stAdvanced.SetHdrAeRange.stExpTimeRange[2].Max = 0.04f; /*lframe
 time_max = 0.03*/
 expSwAttr.stAdvanced.SetHdrAeRange.stExpTimeRange[2].Min = 0.03f; /*lframe
 time_min = 0.02*/
 //get time range in struct "stAuto"
 printf("linear time range=[%f,%f]\n",
     expSwAttr.stAuto.LinAeRange.stExpTimeRange.Min,
 expSwAttr.stAuto.LinAeRange.stExpTimeRange.Max);
 printf("hdr stime range=[%f,%f], mtime range=[%f,%f], ltime range=[%f,%f]\n",
     expSwAttr.stAuto.HdrAeRange.stExpTimeRange[0].Min,
 expSwAttr.stAuto.HdrAeRange.stExpTimeRange[0].Max,
     expSwAttr.stAuto.HdrAeRange.stExpTimeRange[1].Min,
 expSwAttr.stAuto.HdrAeRange.stExpTimeRange[1].Max,
     expSwAttr.stAuto.HdrAeRange.stExpTimeRange[2].Min,
 expSwAttr.stAuto.HdrAeRange.stExpTimeRange[2].Max);
 //set gain range in struct "stAdvanced"
 expSwAttr.stAdvanced.SetAeRangeEn = true;/*must enable*/
 //LinAE
 expSwAttr.stAdvanced.SetLinAeRange.stGainRange.Max = 32.0f; /*gain_max = 32x*/
 expSwAttr.stAdvanced.SetLinAeRange.stGainRange.Min = 1.0f; /*gain_min = 1x*/
 //HdrAE
 expSwAttr.stAdvanced.SetHdrAeRange.stGainRange[0].Max = 32.0f; /*sframe gain_max
 = 2x*/
 expSwAttr.stAdvanced.SetHdrAeRange.stGainRange[0].Min = 1.0f; /*sframe gain_min =
 1x*/
 expSwAttr.stAdvanced.SetHdrAeRange.stGainRange[1].Max = 64.0f; /*mframe gain_max
 = 64x*/
 expSwAttr.stAdvanced.SetHdrAeRange.stGainRange[1].Min = 1.0f; /*mframe gian_min =
 1x*/
 expSwAttr.stAdvanced.SetHdrAeRange.stGainRange[2].Max = 64.0f; /*lframe gain_max
 = 64x*/
 expSwAttr.stAdvanced.SetHdrAeRange.stGainRange[2].Min = 1.0f; /*lframe gain_min =
 1x*/
 //get gain range in struct "stAuto"
 printf("linear gain range=[%f,%f]\n",
     expSwAttr.stAuto.LinAeRange.stGainRange.Min,
 expSwAttr.stAuto.LinAeRange.stGainRange.Max);
 printf("hdr sgain range=[%f,%f], mgain range=[%f,%f], lgain range=[%f,%f]\n",
     expSwAttr.stAuto.HdrAeRange.stGainRange[0].Min,
 expSwAttr.stAuto.HdrAeRange.stGainRange[0].Max,
     expSwAttr.stAuto.HdrAeRange.stGainRange[1].Min,
 expSwAttr.stAuto.HdrAeRange.stGainRange[1].Max,
     expSwAttr.stAuto.HdrAeRange.stGainRange[2].Min,
 expSwAttr.stAuto.HdrAeRange.stGainRange[2].Max);
 ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);

设置半手动曝光属性

半手动曝光要求至少一个曝光分量(sensor 曝光时间、sensor 曝光增益、ISP 数字增益)为手动,其余分量为自动,否则报错退出。例如要实现增益手动、曝光时间及 ISP 数字增益自动,有两种方式:方式 1,在手动曝光模式中将曝光时间和 ISP 数字增益的手动使能设为 false,将曝光增益的手动使能设为 true,并设置对应手动值;方式 2,在自动曝光模式中将曝光增益的最大值和最小值均设为需固定的数值。

【注意】方式 1:HDR 模式各帧手动行为同步(各帧对应曝光分量的手动状态一致),且长帧最大曝光必须大于短帧最大曝光,长帧最小曝光必须大于短帧最小曝光。方式 2:HDR 模式允许各帧手动行为不同(如短帧增益手动而长帧增益自动),同时仍要求长帧最大曝光大于短帧最大曝光、长帧最小曝光大于短帧最小曝光。

 //Method One
 Uapi_ExpSwAttrV2_t expSwAttr;
 ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
 expSwAttr.AecOpType = RK_AIQ_OP_MODE_MANUAL;
 //LinearAE
 expSwAttr.stManual.LinearAE.ManualGainEn = true;
 expSwAttr.stManual.LinearAE.ManualTimeEn = false;
 expSwAttr.stManual.LinearAE.ManualIspDgainEn = false;
 expSwAttr.stManual.LinearAE.GainValue = 2.0f; /*gain = 2x*/
 //HdrAE (need to set all frames)
 expSwAttr.stManual.HdrAE.ManualGainEn = true;
 expSwAttr.stManual.HdrAE.ManualTimeEn = false;
 expSwAttr.stManual.HdrAE.ManualIspDgainEn = false;
 expSwAttr.stManual.HdrAE.GainValue[0] = 1.0f; /*sframe gain = 1x*/
 expSwAttr.stManual.HdrAE.GainValue[1] = 2.0f; /*mframe gain = 2x*/
 expSwAttr.stManual.HdrAE.GainValue[2] = 4.0f; /*lframe gain = 4x*/
 ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
 //Method Two
 Uapi_ExpSwAttrV2_t expSwAttr;
 ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
 expSwAttr.AecOpType = RK_AIQ_OP_MODE_AUTO;
 //set gain range
 expSwAttr.stAdvanced.SetAeRangeEn = true;/*Must be enabled*/
 //LinAE
 expSwAttr.stAdvanced.SetLinAeRange.stGainRange.Max = 2.0f; /*gain_max = 2x*/
 expSwAttr.stAdvanced.SetLinAeRange.stGainRange.Min = 2.0f;  /*gain_min = 2x*/
 //HdrAE (allow to set only one frame)
 expSwAttr.stAdvanced.SetHdrAeRange.stGainRange[0].Max = 2.0f; /*sframe gain_max =
 2x*/
 expSwAttr.stAdvanced.SetHdrAeRange.stGainRange[0].Min = 2.0f;  /*sframe gain_min
 = 2x*/
 ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);

设置固定帧率或自动降帧

固定帧率模式不允许超过驱动定义的最大帧率;超出时输出日志提示,并禁用该帧率设置。

 //set fixed framemode
 Uapi_ExpSwAttrV2_t expSwAttr;
 ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
 expSwAttr.stAuto.stFrmRate.isFpsFix = true;
 expSwAttr.stAuto.stFrmRate.FpsValue = 25; /*fps = 25*/
 ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
 //set auto framemode
 Uapi_ExpSwAttrV2_t expSwAttr;
 ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
 expSwAttr.stAuto.stFrmRate.isFpsFix = false;
 /*Generally, the automatic frame reduction mode is configured by tuning personnel
 in advance with the minimum frame rate and the gain value corresponding to the
 switching frame rate*/
 ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);

设置曝光调节速度和延迟帧参数

 Uapi_ExpSwAttrV2_t expSwAttr;
 ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
 //set ae speed
 expSwAttr.stAuto.stAeSpeed.DampOver = 0.8f;
 expSwAttr.stAuto.stAeSpeed.DampDark2Bright = 0.8f;
 expSwAttr.stAuto.stAeSpeed.DampUnder = 0.8f;
 expSwAttr.stAuto.stAeSpeed.DampBright2Dark = 0.8f;
 //set ae delay
 expSwAttr.stAuto.BlackDelayFrame = 2;
 expSwAttr.stAuto.WhiteDelayFrame = 4;
 ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);

设置抗闪烁

 Uapi_ExpSwAttr_t expSwAttr;
 ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
 //set antifilicker mode
 expSwAttr.stAuto.stAntiFlicker.enable = true;
 expSwAttr.stAuto.stAntiFlicker.Frequency = AECV2_FLICKER_FREQUENCY_50HZ;
 expSwAttr.stAuto.stAntiFlicker.Mode = AECV2_ANTIFLICKER_AUTO_MODE;
 ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);

设置 AE 权重

设置 15X15 权重,算法按实际硬件分块规格压缩权重。目前有两种方法:直接修改 JSON 中的权重;或通过 stadvanced 修改,取消使能后可恢复 JSON 权重,推荐后一种。

人脸应用建议在人脸出现时设置 expSwAttr.stAdvanced.enable = true,使用 expSwAttr.stAdvanced 中的权重;人脸消失时设为 false,恢复原始权重。

 Uapi_ExpSwAttr_t expSwAttr;
 ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
 uint8_t GridWeights[225]={
 0,  0, 1,  2,  2,  3,  4,  5,  4, 3,  2,  2,  1,  0,  0,
 0,  1, 2,  3,  3,  4,  5,  6,  5, 4,  3,  3,  2,  1,  0,
 1,  2, 3,  5,  5,  6,  7,  8,  7, 6,  5,  5,  3,  2,  1,
 2,  3, 5,  7,  7,  8,  9, 10,  9, 8,  7,  7,  5,  3,  2,
 2,  3, 5,  7,  8,  9, 10, 11, 10, 9,  8,  7,  5,  3,  2,
 2,  4, 6,  8,  9, 10, 11, 12, 11,10,  9,  8,  6,  4,  2,
 2,  4, 6,  9, 10, 11, 12, 13, 12,11, 10,  9,  6,  4,  2,
 3,  5 ,7, 10, 11, 12, 13, 14, 13,12, 11, 10,  7,  5,  3,
 2,  4, 6,  9, 10, 11, 12, 13, 12,11, 10,  9,  6,  4,  2,
 2,  4, 6,  8,  9, 10, 11, 12, 11,10,  9,  8,  6,  4,  2,
 2,  3, 5,  7,  8,  9, 10, 11, 10, 9,  8,  7,  5,  3,  2,
 2,  3, 5,  7,  7,  8,  9, 10,  9, 8,  7,  7,  5,  3,  2,
 1,  2, 4,  6,  6,  7,  8,  9,  8, 7,  6,  6,  4,  2,  1,
 0,  1, 3,  5,  5,  6,  7,  8,  7, 6,  5,  5,  3,  1,  0,
 0,  1, 3,  5,  5,  6,  7,  8,  7, 6,  5,  5,  3,  1,  0
 };
 //method one:
 memcpy(expSwAttr.GridWeights.uCoeff, GridWeights,
 sizeof(expSwAttr.GridWeights.uCoeff));
 //method two:
 expSwAttr.stAdvanced.enable = true; //important! true means preferring to use these parameters
 memcpy(expSwAttr.stAdvanced.GridWeights, GridWeights,
 sizeof(expSwAttr.stAdvanced.GridWeights));
 ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);

6.6.2 rk_aiq_user_api2_ae_getExpSwAttr

【说明】获取 AE 曝光软件属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_ae_getExpSwAttr(const rk_aiq_sys_ctx_t* ctx,
                         Uapi_ExpSwAttrV2_t* pExpSwAttr);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
pExpSwAttr AE 曝光软件属性结构体指针 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h

库文件:librkaiq.so

6.6.3 rk_aiq_user_api2_ae_setLinAeRouteAttr

【说明】设置线性模式 AE 的场景曝光分配策略。

【语法】

 XCamReturn
 rk_aiq_user_api2_ae_setLinAeRouteAttr(const rk_aiq_sys_ctx_t* ctx, const
 Uapi_LinAeRouteAttr_t linAeRouteAttr);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
linAeRouteAttr AE 曝光分配策略结构体 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h

库文件:librkaiq.so

【示例】

 Uapi_LinAeRouteAttr_t LinAeRouteAttr;
 memset(&LinAeRouteAttr,0x00,sizeof(Uapi_LinAeRouteAttr_t));
 rk_aiq_user_api2_ae_getLinAeRouteAttr(sys_ctx,&LinAeRouteAttr);
 int len = 8;
 float TimeDot[8]={0,0.01,0.01,0.02,0.02,0.03,0.03,0.04};
 float GainDot[8]={1,1,4,4,8,8,16,32};
 float IspGainDot[8]={1,1,1,1,1,1,1,1};
 int PirisDot[8]={512,512,512,512,512,512,512,512};
 LinAeRouteAttr.TimeDot_len = len;
 LinAeRouteAttr.GainDot_len = len;
 LinAeRouteAttr.IspDGainDot_len = len;
 LinAeRouteAttr.PIrisDot_len = len;
 LinAeRouteAttr.GainDot = GainDot;
 LinAeRouteAttr.IspDGainDot = IspGainDot;
 LinAeRouteAttr.TimeDot = TimeDot;
 LinAeRouteAttr.PIrisDot = PirisDot;
 rk_aiq_user_api2_ae_setLinAeRouteAttr(sys_ctx,LinAeRouteAttr);

6.6.4 rk_aiq_user_api2_ae_getLinAeRouteAttr

【说明】获取线性模式 AE 的场景曝光分配策略。

【语法】

 XCamReturn
 rk_aiq_user_api2_ae_getLinAeRouteAttr(const rk_aiq_sys_ctx_t* ctx,
 Uapi_LinAeRouteAttr_t* pLinAeRouteAttr);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
pLinAeRouteAttr AE 曝光分配策略结构体指针 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h

库文件:librkaiq.so

6.6.5 rk_aiq_user_api2_ae_setHdrAeRouteAttr

【说明】设置 HDR 模式 AE 的场景曝光分配策略。

【语法】

 XCamReturn
 rk_aiq_user_api2_ae_setHdrAeRouteAttr(const rk_aiq_sys_ctx_t* ctx, const
 Uapi_HdrAeRouteAttr_t hdrAeRouteAttr);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
hdrAeRouteAttr AE 曝光分配策略结构体 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h

库文件:librkaiq.so

【示例】

 Uapi_HdrAeRouteAttr_t stHdrRoute;
 memset(&stHdrRoute,0x00,sizeof(Uapi_HdrAeRouteAttr_t));
 ret = rk_aiq_user_api2_ae_getHdrAeRouteAttr(ctx,&stHdrRoute);
 int len = 6;
 float HdrTimeDot[3][6] = {0.0, 0.01, 0.01, 0.01, 0.01, 0.01,
                           0.0, 0.02, 0.02, 0.02, 0.02, 0.02,
                           0.0, 0.03, 0.03, 0.03, 0.03, 0.03};
 float HdrGainDot[3][6] = {1, 1, 4, 6, 8, 12,
                           1, 1, 4, 6, 8, 12,
                           1, 1, 4, 6, 8, 12};
 float HdrIspDGainDot[3][6] = {1, 1, 1, 1, 1, 1,
                               1, 1, 1, 1, 1, 1,
                               1, 1, 1, 1, 1, 1};
 int   HdrPIrisGainDot[6] = {1, 1, 1, 1, 1, 1};
 stHdrRoute.Frm0TimeDot_len = len;
 stHdrRoute.Frm0GainDot_len = len;
 stHdrRoute.Frm0IspDGainDot_len = len;
 stHdrRoute.Frm1TimeDot_len = len;
 stHdrRoute.Frm1GainDot_len = len;
 stHdrRoute.Frm1IspDGainDot_len = len;
 stHdrRoute.Frm2TimeDot_len = len;
 stHdrRoute.Frm2GainDot_len = len;
 stHdrRoute.Frm2IspDGainDot_len = len;
 stHdrRoute.PIrisDot_len = len;
 stHdrRoute.Frm0TimeDot = HdrTimeDot[0];
 stHdrRoute.Frm0GainDot = HdrGainDot[0];
 stHdrRoute.Frm0IspDGainDot = HdrIspDGainDot[0];
 stHdrRoute.Frm1TimeDot = HdrTimeDot[1];
 stHdrRoute.Frm1GainDot = HdrGainDot[1];
 stHdrRoute.Frm1IspDGainDot = HdrIspDGainDot[1];
 stHdrRoute.Frm2TimeDot = HdrTimeDot[2];
 stHdrRoute.Frm2GainDot = HdrGainDot[2];
 stHdrRoute.Frm2IspDGainDot = HdrIspDGainDot[2];
 stHdrRoute.PIrisDot = HdrPIrisGainDot;
 ret = rk_aiq_user_api2_ae_setHdrAeRouteAttr(ctx,stHdrRoute);

6.6.6 rk_aiq_user_api2_ae_getHdrAeRouteAttr

【说明】获取 HDR 模式 AE 的场景曝光分配策略。

【语法】

 XCamReturn
 rk_aiq_user_api2_ae_getHdrAeRouteAttr(const rk_aiq_sys_ctx_t* ctx,
 Uapi_HdrAeRouteAttr_t* pHdrAeRouteAttr);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
pHdrAeRouteAttr AE 曝光分配策略结构体指针 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h

库文件:librkaiq.so

6.6.7 rk_aiq_user_api2_ae_setLinExpAttr

【说明】设置 AE 线性模式曝光参数。

【语法】

 XCamReturn
 rk_aiq_user_api2_ae_setLinExpAttr(const rk_aiq_sys_ctx_t* ctx, const
 Uapi_LinExpAttrV2_t linExpAttr);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
linExpAttr AE 曝光参数结构体 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h

库文件:librkaiq.so

【示例】

设置线性 AE 曝光参数,包括但不限于亮度调整强度 Evbias、背光补偿 BackLightCtrl、强光抑制 OverExpCtrl 等。背光补偿与强光抑制不能同时开启。

 Uapi_LinExpAttrV2_t linExpAttr;
 memset(&linExpAttr,0,sizeof(Uapi_LinExpAttrV2_t));
 ret = rk_aiq_user_api2_ae_getLinExpAttr(ctx, &linExpAttr);
 //set Evbias
 printf("Evbias=%f\n", linExpAttr.Evbias);
 linExpAttr.Evbias = 100.0f;
 //set BackLightCtrl
 linExpAttr.BackLightCtrl.Enable = true;
 linExpAttr.BackLightCtrl.StrBias = 200.0f;
 //set OverExpCtrl
 linExpAttr.OverExpCtrl.Enable = true;
 linExpAttr.OverExpCtrl.StrBias = 100.0f;
 ret = rk_aiq_user_api2_ae_setLinExpAttr(ctx, linExpAttr);

6.6.8 rk_aiq_user_api2_ae_getLinExpAttr

【说明】获取 AE 线性模式曝光参数。

【语法】

 XCamReturn
 rk_aiq_user_api2_ae_getLinExpAttr(const rk_aiq_sys_ctx_t* ctx,
 Uapi_LinExpAttrV2_t* pLinExpAttr);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
pLinExpAttr AE 曝光参数结构体指针 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h

库文件:librkaiq.so

6.6.9 rk_aiq_user_api2_ae_setHdrExpAttr

【说明】设置 AE HDR 模式曝光参数。

【语法】

 XCamReturn
 rk_aiq_user_api2_ae_setHdrExpAttr(const rk_aiq_sys_ctx_t* ctx, const
 Uapi_HdrExpAttrV2_t hdrExpAttr);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
hdrExpAttr AE 曝光参数结构体 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h

库文件:librkaiq.so

【示例】

设置 HDR AE 曝光参数,包括但不限于手动/自动曝光比及亮度调整强度 Evbias。

 Uapi_HdrExpAttrV2_t HdrExpAttr;
 memset(&HdrExpAttr,0,sizeof(Uapi_HdrExpAttrV2_t));
 ret = rk_aiq_user_api2_ae_getHdrExpAttr(ctx, &HdrExpAttr);
 //set hdr mframe params
 int len = 8;
 float explevel[8] = {0, 0.096, 0.192, 0.384, 0.96, 1.344, 1.92, 3};
 float setpoint[8] = {50, 45, 40, 35, 30, 25, 20, 15};
 HdrExpAttr.HdrAEAttr.MframeCtrl.MExpLevel_len = len;
 HdrExpAttr.HdrAEAttr.MframeCtrl.MSetPoint_len = len;
 HdrExpAttr.HdrAEAttr.MframeCtrl.MExpLevel = explevel;
 HdrExpAttr.HdrAEAttr.MframeCtrl.MSetPoint = setpoint;
 //set ExpRatioType (AUTO/FIX)
 HdrExpAttr.ExpRatioCtrl.ExpRatioType = AECV2_HDR_RATIOTYPE_MODE_AUTO;
 //set Evbias
 HdrExpAttr.Evbias = -100.0f;
 ret = rk_aiq_user_api2_ae_setHdrExpAttr(ctx, HdrExpAttr);

6.6.10 rk_aiq_user_api2_ae_getHdrExpAttr

【说明】获取 AE HDR 模式曝光参数。

【语法】

 XCamReturn
 rk_aiq_user_api2_ae_getHdrExpAttr(const rk_aiq_sys_ctx_t* ctx,
 Uapi_HdrExpAttrV2_t* pHdrExpAttr);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
pHdrExpAttr AE 曝光参数结构体指针 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h

库文件:librkaiq.so

6.6.11 rk_aiq_user_api2_ae_setIrisAttr

【说明】设置 AE 光圈控制参数。

【语法】

 XCamReturn
 rk_aiq_user_api2_ae_setIrisAttr(const rk_aiq_sys_ctx_t * sys_ctx, const
 Uapi_IrisAttrV2_t irisAttr);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
irisAttr 光圈控制参数结构体 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h

库文件:librkaiq.so

【示例】

 Uapi_IrisAttrV2_t irisAttr;
 ret = rk_aiq_user_api2_ae_getIrisAttr(ctx, &irisAttr);
 irisAttr.enable = true; /*run AIris*/
 //set P-iris attributes
 irisAttr.IrisType = IRIS_P_TYPE;
 irisAttr.PIrisAttr.TotalStep = 81;
 irisAttr.PIrisAttr.EffcStep = 44;
 irisAttr.PIrisAttr.ZeroIsMax = true;
 uint16_t StepTable[1024] = {512, 511, 506, 499, 491, 483, 474, 465, 456,
                             446, 437, 427, 417, 408, 398, 388, 378, 368,
                             359, 349, 339, 329, 319, 309, 300, 290, 280,
                             271, 261, 252, 242, 233, 224, 214, 205, 196,
                             187, 178, 170, 161, 153, 144, 136, 128, 120,
                             112, 105, 98, 90, 83, 77, 70, 64, 58,
                             52, 46, 41, 36, 31, 27, 23, 19, 16,
                             13, 10, 8, 6, 4, 3, 1, 1, 0,
                             0, 0, 0, 0, 0, 0, 0, 0, 0};
 memcpy(irisAttr.PIrisAttr.StepTable,StepTable,sizeof(irisAttr.PIrisAttr.StepTable
 ));
 ret = rk_aiq_user_api2_ae_setIrisAttr(ctx, irisAttr);
 //set DC-iris attributes
 irisAttr.IrisType = IRIS_DC_TYPE;
 irisAttr.DCIrisAttr.Kp= 0.5f;
 irisAttr.DCIrisAttr.Ki= 0.2f;
 irisAttr.DCIrisAttr.Kd = 0.3f;
 irisAttr.DCIrisAttr.OpenPwmDuty = 40;
 irisAttr.DCIrisAttr.ClosePwmDuty = 22;
 irisAttr.DCIrisAttr.MinPwmDuty = 0;
 irisAttr.DCIrisAttr.MaxPwmDuty = 100;
 ret = rk_aiq_user_api2_ae_setIrisAttr(ctx, irisAttr);
 //set manual iris with auto ae
 irisAttr.IrisOpType = RK_AIQ_OP_MODE_MANUAL;
 if(irisAttr.IrisType == IRIS_P_TYPE);
     irisAttr.ManualAttr.PIrisGainValue = 512; /*p-iris F#=1.4*/
 if(irisAttr.IrisType == IRIS_DC_TYPE);
     irisAttr.ManualAttr.DCIrisHoldValue = 20; /*dc-iris PwmDuty=20*/
 ret = rk_aiq_user_api2_ae_setIrisAttr(ctx, irisAttr);

6.6.12 rk_aiq_user_api2_ae_getIrisAttr

【说明】获取 AE 光圈控制参数。

【语法】

 XCamReturn
 rk_aiq_user_api2_ae_getIrisAttr(const rk_aiq_sys_ctx_t * sys_ctx, const
 Uapi_IrisAttrV2_t* irisAttr);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
irisAttr 光圈控制参数结构体 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h

库文件:librkaiq.so

6.6.13 rk_aiq_user_api2_ae_setExpWinAttr

【说明】设置 AE 统计窗口属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_ae_setExpWinAttr(const rk_aiq_sys_ctx_t* sys_ctx, const
 Uapi_ExpWin_t ExpWin);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
ExpWin 窗口属性参数 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h

库文件:librkaiq.so

【示例】

按人脸位置修改 AE 统计坐标,实现人脸区域亮度统计。

注意:设置统计坐标时,应保证 ExpWin.h_offs+ExpWin.h_size<=pic_width 且 ExpWin.v_offs+ExpWin.v_size<=pic_height。

 Uapi_ExpWin_t ExpWin;
 //Suppose the sensor resolution is 2688X1520, the lateral offset of the face from the upper left corner of the screen is 100 pixel, the vertical offset is 100 pixel, and the face size is a square with a side length of 100 pixel
 ExpWin.h_offs=100;
 ExpWin.v_offs=100;
 ExpWin.h_size=100;
 ExpWin.v_size=100;
 rk_aiq_user_api2_ae_setExpWinAttr(ctx, ExpWin);

6.6.14 rk_aiq_user_api2_ae_getExpWinAttr

【说明】获取 AE 统计窗口属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_ae_getExpWinAttr(const rk_aiq_sys_ctx_t* sys_ctx,const
 Uapi_ExpWin_t* ExpWin);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
ExpWin 窗口属性参数 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h

库文件:librkaiq.so

6.6.15 rk_aiq_user_api2_ae_queryExpResInfo

【说明】获取 AE 内部状态信息。

【语法】

 XCamReturn
 rk_aiq_user_api2_ae_queryExpResInfo(const rk_aiq_sys_ctx_t* ctx,
 Uapi_ExpQueryInfo_t* pExpResInfo);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
pExpResInfo AE 内部状态信息结构体指针 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h

库文件:librkaiq.so

6.7 模块级 API 数据类型

6.7.1 Uapi_ExpSwAttr_t

【说明】

AE 公共功能控制参数结构体。

【定义】

 typedef struct Uapi_ExpSwAttrV2_s {
     rk_aiq_uapi_sync_t                 sync;
     uint8_t                            Enable;
     CalibDb_CamRawStatsModeV2_t        RawStatsMode;
     CalibDb_CamHistStatsModeV2_t       HistStatsMode;
     CalibDb_CamYRangeModeV2_t          YRangeMode;
     uint8_t                            AecRunInterval;
     RKAiqOPMode_t                      AecOpType;
     Cam15x15UCharMatrix_t              GridWeights;
     Uapi_AeAttrV2_t                    stAuto;
     Uapi_MeAttrV2_t                    stManual;
     Uapi_ExpSwAttr_AdvancedV2_t        stAdvanced;
 } Uapi_ExpSwAttrV2_t;

【成员】

成员名称 说明
sync rk_aiq_uapi_sync_t 的定义参见“概述/API 说明”。
Enable AEC 使能开关:1 开启算法;0 关闭算法,曝光保持关闭前的数值。
RawStatsMode AEC 亮度统计模式,有 CAM_RAWSTATSV2_MODE_Y/R/G/B 四种,默认 Y。
HistStatsMode AEC 直方图统计模式。原文称“五种”,列出 CAM_HISTV2_MODE_Y/R/G/B,默认 Y;数量疑点保留。
YRangeMode AEC Y 通道范围:CAM_YRANGEV2_MODE_FULL/LIMITED 两种,默认 FULL。
AecRunInterval AE 算法运行间隔,范围 [0,255],默认 0。0 表示每帧运行;1 表示每隔 1 帧运行,依此类推。
AecOpType 曝光模式分自动(RK_AIQ_OP_MODE_AUTO)和手动(RK_AIQ_OP_MODE_MANUAL),默认 AUTO。手动模式须配合 stManual 设置手动曝光值。
GridWeights 窗口(直方图)权重,包含 15*15 个数组元素,范围 [0,32]。
stAuto 自动曝光参数结构体
stManual 手动曝光参数结构体
stAdvanced 参数结构体

相关数据类型

rk_aiq_uapi_sync_t

Uapi_ExpSwAttr_AdvancedV2_t

Uapi_AeAttrV2_t

Uapi_MeAttrV2_t

6.7.1.1 Uapi_ExpSwAttr_AdvancedV2_t

【说明】

优先采用参数结构体。

【定义】

 typedef struct Aec_uapi_advanced_attr_s {
     bool                          enable;
     uint8_t                       GridWeights[15 * 15];
     bool                          SetAeRangeEn;
     Aec_LinAeRange_t              SetLinAeRange;
     Aec_HdrAeRange_t              SetHdrAeRange;
 } Aec_uapi_advanced_attr_t;
 typedef Aec_uapi_advanced_attr_t Uapi_ExpSwAttr_AdvancedV2_t;

【成员】

成员名称 说明
enable 设为 1 时优先使用结构体中的参数。
GridWeights AE 权重,大小 15X15。
SetAeRangeEn 1:设置自动曝光分量范围;0:不设置,采用调试文件中的范围。
SetLinAeRange 线性曝光的自动曝光分量范围设置值,并非最终生效范围。
SetHdrAeRange HDR 自动曝光分量范围设置值,并非最终生效范围。

【注意事项】

Uapi_ExpSwAttrV2_t 结构体定义一组 15X15 AE 权重,算法按硬件实际权重数量展开。若需人脸等区域曝光,可使用 Uapi_ExpSwAttr_AdvancedV2_t 中另一组 15X15 AE 权重,算法按硬件实际配置数量压缩。要使用 Uapi_ExpSwAttr_Advanced_t 中的权重,必须将 enable 设为 1。原文末处类型名缺少 V2,按原文保留。

通过 API 设置 AE 参数范围时,SetAeRangeEn 必须为 1,否则默认使用调试文件中的自动曝光范围。按模式分别用 SetLinAeRange 和 SetHdrAeRange;后者支持为每帧设置范围。最终有效的曝光时间和增益范围须查询 stAuto;这里保存的仅为设置范围,并非最终生效范围。

6.7.1.1.1 Aec_AeRange_t

【说明】定义 AE 参数范围。

【定义】

 typedef struct Aec_AeRange_s {
     float                   Min;
     float                   Max;
 } Aec_AeRange_t;

【成员】

成员名称 说明
Min 下限值
Max 上限值

6.7.1.1.2 Aec_LinAeRange_t

【说明】定义线性模式 AE 参数范围。

【定义】

 typedef struct Aec_LinAeRange_s {
     Aec_AeRange_t      stExpTimeRange;
     Aec_AeRange_t      stGainRange;
     Aec_AeRange_t      stIspDGainRange;
     Aec_AeRange_t      stPIrisRange;
 } Aec_LinAeRange_t;

【成员】

成员名称 说明
stExpTimeRange 曝光时间范围,最大值和最小值以毫秒设置(原文单位)。
stGainRange Sensor 模拟增益范围,设置最大值和最小值。
stIspDGainRange ISP 数字增益范围,设置最大值和最小值。
stPIrisRange 光圈等效增益范围,仅支持 P-Iris 光圈大小控制。

【注意事项】

各曝光分量最大/最小值均为默认 0 时,所设置范围不生效,实际最大/最小值由 AecRoute 曝光分解路由节点决定。

各曝光分量最大/最小值非 0 时,设置范围生效。如果未超出 sensor 或 ISP 限制,实际边界以设置范围为准,同时修正 AecRoute 节点边界;若超出限制,则实际边界以 AecRoute 节点最大/最小值为准。

6.7.1.1.3 Aec_HdrAeRange_t

【说明】定义 HDR 模式 AE 参数范围。

【定义】

 typedef struct Aec_HdrAeRange_s {
     Aec_AeRange_t      stExpTimeRange[3];
     Aec_AeRange_t      stGainRange[3];
     Aec_AeRange_t      stIspDGainRange[3];
     Aec_AeRange_t      stPIrisRange;
 } Aec_HdrAeRange_t;

【成员】

成员名称 说明
stExpTimeRange 曝光时间范围,最大/最小值单位为秒;数组 0/1/2 分别对应短、中、长帧。
stGainRange Sensor 模拟增益范围,设置最大/最小值;数组 0/1/2 对应短、中、长帧。
stIspDGainRange ISP 数字增益范围,设置最大/最小值;数组 0/1/2 对应短、中、长帧。
stPIrisRange 光圈等效增益范围,设置最大值和最小值。

【注意事项】

stExpTimeRange、stGainRange、stIspDGainRange 均为 3 成员数组。双帧 HDR 仅 0、1 有效,分别对应短、长帧;三帧 HDR 的 0–2 有效,分别对应短、中、长帧。

各曝光分量最大/最小值为默认 0 时,设置范围不生效,实际边界由算法修正后的曝光分解路由节点决定。

各曝光分量最大/最小值非 0 时,设置范围生效。未超出 sensor 或 ISP 限制时,实际边界按设置范围确定,并将曝光分解路由节点边界改为设置值;若超出 sensor 或 ISP 限制,

实际边界以曝光分解路由节点的最大/最小值为准。1106 平台目前不支持 isp dgain,因此 stIspDGainRange 暂无效。

6.7.1.2 Uapi_AeAttrV2_t

【说明】定义 AE 自动曝光属性。

【定义】

 typedef struct Uapi_AeAttrV2_s {
     Uapi_AeSpeedV2_t           stAeSpeed;
     DelayFrmNum
     uint8_t                    BlackDelayFrame;
     uint8_t                    WhiteDelayFrame;
     Auto/Fixed fps
     Uapi_AeFpsAttrV2_t         stFrmRate;
     Uapi_AntiFlickerV2_t       stAntiFlicker;
     auto range
     Aec_LinAeRange_t           LinAeRange;//result LinAerange
     Aec_HdrAeRange_t           HdrAeRange;//result HdrAerange
 } Uapi_AeAttrV2_t;

【成员】

成员名称 说明
stAeSpeed 自动曝光调节速度
BlackDelayFrame 自动曝光延迟属性:图像亮度低于目标值持续超过 BlackDelayFrame 帧后,AE 开始调节。
WhiteDelayFrame 自动曝光延迟属性:图像亮度高于目标值持续超过 WhiteDelayFrame 帧后,AE 开始调节。
stFrmRate 自动曝光帧率模式结构体:固定帧率或自动降帧模式。
stAntiFlicker 抗工频闪烁参数
LinAeRange 线性模式 AE 范围结构体(最终有效范围)。
HdrAeRange HDR 模式 AE 范围结构体(最终有效范围)。

【注意事项】

LinAeRange/HdrAeRange 是算法内部校验修正后实际使用的参数范围。API 设置超出 sensor 限制时,采用 sensor 的限制范围。sensor 的限制可查原文所引 Rockchip_Tuning_Guide_ISP30_CN.pdf 中 AE 模块 sensorinfo 参数。

要设置自动曝光分量范围,通过 API 使用上述 Uapi_ExpSwAttr_AdvancedV2_t 参数,并将 SetAeRangeEn 设为 1;否则采用调试文件的默认范围。

6.7.1.2.1 Uapi_AeSpeedV2_t

【说明】定义 AE 调节速度属性。

【定义】

 typedef struct CalibDb_AeSpeedV2_s {
     float                   DampOver;
     float                   DampUnder;
     float                   DampDark2Bright;
     float                   DampBright2Dark;
 } CalibDb_AeSpeedV2_t;
 typedef CalibDb_AeSpeedV2_t Uapi_AeSpeedV2_t;

【成员】

成员名 说明
DampOver 环境亮度稳定、图像亮度高于目标时的曝光调节速度,范围 [0,1]。
DampUnder 环境亮度稳定、图像亮度低于目标时的曝光调节速度,范围 [0,1]。
DampDark2Bright 环境亮度突变时,从暗到亮的曝光调节速度,范围 [0,1]。
DampBright2Dark 环境亮度突变时,从亮到暗的曝光调节速度,范围 [0,1]。

6.7.1.2.2 Uapi_AeFpsAttrV2_t

【说明】定义 AE 帧率属性。

【定义】

 typedef struct CalibDb_AeFrmRateAttrV2_s {
     bool             isFpsFix;
     uint8_t          FpsValue;
 } CalibDb_AeFrmRateAttrV2_t;
 typedef CalibDb_AeFrmRateAttrV2_t Uapi_AeFpsAttrV2_t;

【成员】

成员名称 说明
isFpsFix 自动曝光固定帧率使能。默认 FALSE,即自动降帧;TRUE 表示固定帧率。
FpsValue 仅固定帧率时有效。默认 0 使用驱动默认帧率;非 0 使用所设置的帧率。

6.7.1.2.3 Uapi_AntiFlickerV2_t

【说明】定义抗闪烁属性。

【定义】

 typedef struct CalibDb_AntiFlickerAttrV2_s {
     bool                           enable;
     CalibDb_FlickerFreq_t          Frequency;
     CalibDb_AntiFlickerMode_t      Mode;
 } CalibDb_AntiFlickerAttrV2_t;
 typedef CalibDb_AntiFlickerAttrV2_t Uapi_AntiFlickerV2_t;

【成员】

成员名称 说明
enable 抗工频闪烁功能使能:0 关闭,1 开启。
Frequency 抗闪烁频率属性包括三种值:AECV2_FLICKER_FREQUENCY_OFF(使能位为 0 时有效)、AECV2_FLICKER_FREQUENCY_50HZ、AECV2_FLICKER_FREQUENCY_60HZ;默认 AECV2_FLICKER_FREQUENCY_50HZ,即工频 50 Hz。
Mode 两种抗闪烁模式:AECV2_ANTIFLICKER_NORMAL_MODE(普通)和 AECV2_ANTIFLICKER_AUTO_MODE(自动)。

【注意事项】

关闭抗闪烁时将 enable 设为 0,算法自动配置 Frequency=AECV2_FLICKER_FREQUENCY_OFF。enable 为 1 时,若频率设为 OFF,该值无效,将使用默认 AECV2_FLICKER_FREQUENCY_50HZ。

AECV2_ANTIFLICKER_NORMAL_MODE 为普通抗闪烁模式,曝光时间随亮度调节,最短固定为 1/120 sec(60Hz)或 1/100 sec(50Hz),不受原文所谓“最小曝光时间”限制。

照明环境:曝光时间可匹配光源频率,防止画面闪烁。

高亮环境中,亮度越高,所需曝光越短。普通抗闪烁模式的最短曝光无法匹配光源频率时会过曝。自动模式 AECV2_ANTIFLICKER_AUTO_MODE 可随亮度调节,最短可达 sensor 的最短曝光。与普通模式的差异主要在高亮环境:可有效抑制过曝,但此时抗闪烁失效。

6.7.1.3 Uapi_MeAttrV2_t

【说明】

手动曝光参数按模式分为 LinearAE 与 HdrAE 两组。

【定义】

 typedef struct Uapi_MeAttrV2_s {
     Uapi_LinMeAttrV2_t     stLinMe;
     Uapi_HdrMeAttrV2_t     stHdrMe;
 } Uapi_MeAttrV2_t;

【相关数据类型】

Uapi_LinMeAttrV2_t

Uapi_HdrMeAttrV2_t

6.7.1.3.1 Uapi_LinMeAttrV2_t

【说明】

LinearAE 手动曝光控制参数。

【定义】

 typedef struct Uapi_LinMeAttrV2_s {
     bool                 ManualTimeEn;
     bool                 ManualGainEn;
     bool                 ManualIspDgainEn;
     float                TimeValue;
     float                GainValue;
     float                IspDGainValue;
 } Uapi_LinMeAttrV2_t;

【成员】

成员名 说明
ManualTimeEn 手动曝光时间使能,默认 1。
ManualGainEn 手动 sensor 增益使能,默认 1。
ManualIspDgainEn 手动 ISP 数字增益使能,默认 1。
TimeValue 手动曝光时间,单位 s,受 sensor 限制。
GainValue 手动 sensor 增益值,受 sensor 限制。
IspDGainValue 手动 ISP 数字增益值,受 ISP 限制。

【注意事项】

仅 AeOptype = MANUAL 时有效。ManualTimeEn、ManualGainEn、ManualIspDgainEn 均为 1 时是手动模式;任一未使能即为半自动。原文随后称“以上四项全为 0”等同自动模式并报错,数量表述矛盾保留。

手动/半手动模式的曝光时间和增益受自动模式最大/最小边界限制;超出时以自动模式对应边界代替。

RK356X 不支持 ISP 数字增益,ManualIspDgainEn 和 IspDGainValue 无效。

6.7.1.3.2 Uapi_HdrMeAttrV2_t

【说明】

HdrAE 手动曝光控制参数。

【定义】

 typedef struct Uapi_HdrMeAttrV2_s {
     bool                    ManualTimeEn;
     bool                    ManualGainEn;
     bool                    ManualIspDgainEn;
     Cam3x1FloatMatrix_t     TimeValue;
     Cam3x1FloatMatrix_t     GainValue;
     Cam3x1FloatMatrix_t     IspDGainValue;
 } Uapi_HdrMeAttrV2_t;

【成员】

变量含义与 Uapi_LinMeAttrV2_t 相同。

【注意事项】

TimeValue/GainValue/IspDGainValue 为三成员数组。双帧 HDR 仅 [0-1] 有效,分别对应短、长帧;三帧 HDR [0-2] 有效,分别对应短、中、长帧。

手动/半手动模式的曝光时间和增益受自动模式最大/最小边界限制;超出时以自动模式对应边界代替。

RK356X 目前不支持 ISP 数字增益,ManualIspDgainEn、IspDGainValue 无效。

6.7.2 Uapi_LinAeRouteAttr_t

【说明】定义线性 AE 曝光分解路径属性。

【定义】

 typedef struct CalibDb_LinAeRoute_AttrV2_s {
     float* TimeDot;
     int TimeDot_len;
     float* GainDot;
     int GainDot_len;
     float* IspDGainDot;
     int IspDGainDot_len;
     int* PIrisDot;
     int PIrisDot_len;
 } CalibDb_LinAeRoute_AttrV2_t;
 typedef struct Uapi_LinAeRouteAttr_s {
   rk_aiq_uapi_sync_t            sync;
   CalibDb_LinAeRoute_AttrV2_t   Params;
 } Uapi_LinAeRouteAttr_t;

【成员】

成员名称 说明
TimeDot sensor 曝光时间节点,单位 s。
GainDot sensor 曝光增益节点。
IspgainDot ISP 数字增益节点
PIrisGainDot 光圈等效增益节点

【注意事项】

曝光分解曲线节点数不限,建议不少于 6 个。

节点曝光量是曝光时间、sensor 增益、ISP 数字增益、光圈等效增益等分量的乘积。节点曝光必须单调递增,即后一节点大于前一节点。原文随后写“第一个节点曝光最小,第二个节点曝光最大”,该表述与多节点描述的疑点保留。

节点曝光时间单位为秒,最小值允许为 0;代码内部按 sensor 限制修正实际最短曝光。

光圈分量仅支持 P-Iris,不支持 DC-Iris。P-iris 等效增益仅在启用 Airis 自动光圈后有效,否则光圈固定在初始大小。计算方法详见 AecIrisCtrl 模块。

设置的曝光分解节点不是最终路由。系统各最终曝光分量的实际最大/最小值,由路由节点与手动配置边界共同决定。首先对曝光分解节点边界进行第一次修正:

未超出 SENSOR/ISP 限制时节点边界不变,超出则按 SENSOR/ISP 限制修正。手动配置边界为 0 时,最终路由采用第一次修正结果;非 0 且未超限时进行第二次修正,以手动设置范围为准;手动边界超限时仍采用第一次修正结果。相邻节点曝光量增大时,应只增大一个曝光分量,其余固定。增大的分量决定该路由段的分配策略,例如仅增大增益时,该段为增益优先。

RK356X 目前不支持 ISP 数字增益,因此 IspgainDot 无效。

6.7.3 Uapi_HdrAeRouteAttr_t

【说明】定义 HDR AE 曝光分解路径属性。

【定义】

 typedef struct CalibDb_HdrAeRoute_AttrV2_s {
     float* Frm0TimeDot;
     int Frm0TimeDot_len;
     float* Frm0GainDot;
     int Frm0GainDot_len;
     float* Frm0IspDGainDot;
     int Frm0IspDGainDot_len;
     float* Frm1TimeDot;
     int Frm1TimeDot_len;
     float* Frm1GainDot;
     int Frm1GainDot_len;
     float* Frm1IspDGainDot;
     int Frm1IspDGainDot_len;
     float* Frm2TimeDot;
     int Frm2TimeDot_len;
     float* Frm2GainDot;
     int Frm2GainDot_len;
     float* Frm2IspDGainDot;
     int Frm2IspDGainDot_len;
     int* PIrisDot;
     int PIrisDot_len;
 } CalibDb_HdrAeRoute_AttV2r_t;
 typedef struct Uapi_HdrAeRouteAttr_s {
   rk_aiq_uapi_sync_t            sync;
   CalibDb_HdrAeRoute_AttrV2_t   Params;
 } Uapi_HdrAeRouteAttr_t;

【成员】

成员名 说明
Frm0/1/2TimeDot 曝光时间节点,单位秒。双帧 HDR 仅 Frm0/1TimeDot 有效;三帧 HDR 为 Frm0/1/2TimeDot。原文 FRM0~3 表示从短到长的帧序号,保留其编号表述。
Frm0/1/2GainDot Sensor 增益节点。双帧 HDR 为 Frm0/1GainDot;三帧为 Frm0/1/2GainDot,单位 1x。原文 FRM0~3 表示从短到长的帧序号。
Frm0/1/2IspDGainDot ISP 数字增益节点。双帧 HDR 为 Frm0/1IspDGainDot;三帧为 Frm0/1/2IspDGainDot,单位 1x。原文 FRM0~3 表示从短到长的帧序号。
PIrisDot 光圈等效增益节点,取值为以 1x 为单位的实际增益。

【注意事项】

节点数不限,建议至少 6 个,使曝光分解平滑。

双帧 HDR 只需设置 Frm0/1TimeDot、Frm0/1GainDot、Frm0/1IspDGainDot,分别对应短、长帧。三帧 HDR 使用 Frm0/1/2TimeDot、Frm0/1/2GainDot、Frm0/1/2IspDGainDot,对应短、中、长帧。必须合理分配各帧 sensor 曝光时间,各帧曝光时间之和不能超过该帧率允许的最大曝光时间!

节点曝光量是曝光时间、sensor 增益、ISP 数字增益、光圈等效增益等分量的乘积。节点曝光必须单调递增,即后一节点大于前一节点。原文随后写“第一个节点曝光最小,第二个节点曝光最大”,该表述与多节点描述的疑点保留。

节点曝光时间单位为秒,最小值允许为 0;代码内部按 sensor 限制修正实际最短曝光。

光圈分量仅支持 P-Iris,不支持 DC-Iris。P-iris 等效增益仅在启用 Airis 自动光圈后有效,否则光圈固定在初始大小。计算方法详见 AecIrisCtrl 模块。

所设节点不是最终曝光路由。实际分量边界由路由节点与手动配置边界共同决定。首先修正节点边界:未超出 SENSOR/ISP 限制则不变,超出则按硬件限制修正。手动边界为 0 时采用第一次修正结果;非 0 且未超限时,再对曝光路由进行

第二次修正,以手动范围为准;手动边界超限时采用第一次修正结果。相邻节点曝光递增时,只增大一个分量、固定其余。增大的分量决定该段分配策略;例如只增大增益时为增益优先。

356X 目前不支持 ISP 数字增益,Frm0/1/2ispDGainDot 无效。

6.7.4 Uapi_LinExpAttrV2_t

【说明】

定义 AE 线性曝光调优参数。

【定义】

 typedef struct CalibDb_LinearAE_AttrV2_s {
     uint8_t RawStatsEn;
     float ToleranceIn;
     float ToleranceOut;
     float Evbias;
     CalibDb_AeStrategyModeV2_t      StrategyMode;
     CalibDb_LinExpInitExpV2_t       InitExp;
     CalibDb_LinAeRoute_AttrV2_t     Route;
     CalibDb_AecDynamicSetpointV2_t  DySetpoint;
     CalibDb_AecBacklightV2_t        BackLightCtrl;
     CalibDb_AecOverExpCtrlV2_t OverExpCtrl;
 } CalibDb_LinearAE_AttrV2_t;
 typedef struct Uapi_LinExpAttrV2_s {
   rk_aiq_uapi_sync_t            sync;
   CalibDb_LinearAE_AttrV2_t     Params;
 } Uapi_LinExpAttrV2_t;

【成员】

成员名称 说明
RawStatsEn 线性曝光使能使用 Raw 域统计亮度。
EvBias 自动曝光调整时的曝光量百分比偏移,单位 %,参考范围 [-200, +200]。
ToleranceIn/Out 自动曝光画面亮度容差,单位 %,范围 [0,100]。
StrategyMode 自动曝光策略:高光优先或低照优先,目前暂不生效。
DySetpoint 自动曝光动态目标亮度属性,随曝光量变化。
BackLightCtrl 背光补偿功能参数
OverExpCtrl 强光抑制功能参数

【注意事项】

EvBias 用于特殊场景下微调目标亮度 SetPoint/IRSetPoint(固定或动态)。实际目标亮度为 (SetPoint)*[1+abs(EvBias)/100]^[EvBias/abs(EvBias)]。EvBias=100 时为默认值两倍;EvBias=-100 时为默认值 1/2。

AE 画面亮度容差为 Tolerance。收敛时亮度 B 应位于 [实际目标亮度 X(1-Tolerance/100), 实际目标亮度 X(1+Tolerance/100)]。ToleranceIn/Out 过大会影响响应速度及 EvBias 效果;EvBias 调整间隔小于 ToleranceIn/Out 时,亮度调整可能不生效。

StrategyMode 当前无效。

【相关数据类型】

CalibDb_AecDynamicSetpointV2_t

CalibDb_AecBacklightV2_t

CalibDb_AecOverExpCtrlV2_t

6.7.4.1 CalibDb_AecDynamicSetpointV2_t

【说明】定义 AE 动态目标值。

【定义】

 typedef struct CalibDb_AecDynamicSetpointV2_s {
     float* ExpLevel;
     int ExpLevel_len;
     float* DySetpoint;
     int DySetpoint_len;
 } CalibDb_AecDynamicSetpointV2_t;

【成员】

成员名 说明
ExpLevel 动态曝光节点属性:节点值为当前曝光量;节点数不限,建议至少 6 个,使曝光过渡平滑(原文末尾否定表述疑点见记录)。
DySetpoint 动态目标亮度节点随曝光量变化,曝光节点值越大,目标亮度越小,与曝光节点一一对应。节点数不限,但须等于 ExpLevel 数量,建议至少 6 个以平滑过渡。

6.7.5 Uapi_HdrExpAttrV2_t

【说明】定义 AE HDR 曝光调试参数。

【定义】

 typedef struct CalibDb_HdrAE_AttrV2_s {
     float ToleranceIn;
     float ToleranceOut;
     float Evbias;
     CalibDb_AeStrategyModeV2_t StrategyMode;
     float LumaDistTh; //used for area-growing
     CalibDb_HdrExpInitExpV2_t InitExp;
     CalibDb_HdrAeRoute_AttrV2_t Route;
     CalibDb_ExpRatioCtrlV2_t ExpRatioCtrl;
     CalibDb_LongFrmCtrlV2_t LongFrmMode;
     CalibDb_LfrmCtrlV2_t LframeCtrl;
     CalibDb_MfrmCtrlV2_t MframeCtrl;
     CalibDb_SfrmCtrlV2_t SframeCtrl;
 } CalibDb_HdrAE_AttrV2_t;
 typedef struct Uapi_HdrExpAttrV2_s {
   rk_aiq_uapi_sync_t            sync;
   CalibDb_HdrAE_AttrV2_t        Params;
 } Uapi_HdrExpAttrV2_t;

【成员】

成员名称 说明
ToleranceIn/Out 自动曝光画面亮度容差,单位 %,范围 [0,100]。
LongfrmMode 长帧模式参数
StrategyMode 自动曝光策略:低照优先/高光优先(AECV2_STRATEGY_MODE_LOWLIGHT_PRIOR/AECV2_STRATEGY_MODE_HIGHLIGHT_PRIOR)。
Evbias 自动曝光调整时的曝光量百分比偏移,单位 %,参考范围 [-200, +200]。
ExpRatioCtrl HdrAE 曝光比控制模块,仅 HDR 多帧合成时有效。
LframeCtrl 长帧控制参数
MframeCtrl 中帧控制参数,仅三帧 HDR 有效。
SframeCtrl 短帧控制参数

【相关数据类型】

CalibDb_LFrameCtrlV2_t

CalibDb_MFrameCtrlV2_t

CalibDb_SFrameCtrlV2_t

6.7.6 Uapi_IrisAttrV2_t

【说明】

光圈控制参数。

【定义】

 typedef struct CalibDb_AecIrisCtrlV2_s {
     uint8_t Enable;
     CalibDb_IrisTypeV2_t IrisType;
     RKAiqOPMode_t IrisOpType;
     CalibDb_MIris_AttrV2_t ManualAttr;
     CalibDb_PIris_AttrV2_t PIrisAttr;
     CalibDb_DCIris_AttrV2_t DCIrisAttr;
 } CalibDb_AecIrisCtrlV2_t;
 typedef struct Uapi_IrisAttrV2_s {
   rk_aiq_uapi_sync_t            sync;
   CalibDb_AecIrisCtrlV2_t       Params;
 } Uapi_IrisAttrV2_t;

【成员】

成员名 说明
Enable 自动光圈控制使能。
IrisType 光圈类型:P(P-iris)或 DC(DC-iris)。
IrisOpType 光圈控制模式:自动 RK_AIQ_OP_MODE_AUTO 或手动 RK_AIQ_OP_MODE_MANUAL。
ManualAttr 手动光圈参数
PIrisAttr P 光圈属性参数
DCIrisAttr DC 光圈属性参数

6.7.6.1 CalibDb_MIris_AttrV2_t

【说明】

手动光圈参数。

【定义】

 typedef struct CalibDb_MIris_AttrV2_s {
     int PIrisGainValue;
     int DCIrisHoldValue;
 } CalibDb_MIris_AttrV2_t;

【成员】

成员名 说明
PIrisGainValue 手动 P 光圈等效增益,受 P 光圈器件限制,范围 [1,1024]。
DCIrisHoldValue DC 光圈 HoldValue,与器件相关,范围 [0,100]。

【注意事项】

IrisOpType = RK_AIQ_OP_MODE_MANUAL 时启用手动光圈。P 光圈仅 PirisGainValue 有效;DC 光圈仅 DCIrisHoldValue 有效。

DCIrisHoldValue 在手动模式直接设置电机 PWM 占空比,范围 [0,100]。设置为 AecIrisCtrl 的 ClosePwmDuty 至 OpenPwmDuty 区间内的 HoldValue 时,光圈保持当前大小;大于 OpenPwmDuty 时开启,值越大开启越快;小于 ClosePwmDuty 时关闭,值越小关闭越快。

6.7.6.2 CalibDb_PIris_AttrV2_t

【说明】

P 光圈属性参数。

【定义】

 #define AEC_PIRIS_STAP_TABLE_MAX (1024)
 typedef struct CalibDb_PIris_AttrV2_s {
     uint16_t              TotalStep;
     uint16_t              EffcStep;
     bool                  ZeroIsMax;
     uint16_t              StepTable[AEC_PIRIS_STAP_TABLE_MAX];
 } CalibDb_PIris_AttrV2_t;

【成员】

成员名 说明
TotalStep P-iris 步进电机总步数,取决于具体镜头。
EffcStep P-iris 步进电机可用步数,取决于具体镜头。
ZeroIsMax step0 是否对应最大光圈,取决于镜头。0 表示 step0 为最小光圈,1 表示 step0 为最大光圈。
StepTable 步进电机位置到光圈等效增益的映射表,与 P-iris 镜头相关。

6.7.6.3 CalibDb_DCIris_AttrV2_t

【说明】

DC 光圈属性。

【定义】

 typedef struct CalibDb_DCIris_AttrV2_s {
     float       Kp;
     float       Ki;
     float       Kd;
     int         MinPwmDuty;
     int         MaxPwmDuty;
     int         OpenPwmDuty;
     int         ClosePwmDuty;
 } CalibDb_DCIris_AttrV2_t;

【成员】

成员名 说明
Kp 限制光圈占空比剧烈变化的比例系数。原文称值越大,开闭占空比变化越慢;过大将提前制动,使调节时间过长;过小则制动滞后、超调增大。合理值与 DC-iris 镜头和电路有关。推荐 0.5,范围 [0,1]。
Ki 调节开闭速度的积分系数。原文称值越大,开闭越快;过大易超调振荡,过小则调节慢、环境亮度突变时易振荡。推荐 0.2,范围 [0,1]。
Kd 调节开闭速度的微分系数,越大速度越快。推荐 0.3,范围 [0,1]。
MinPwmDuty 最小 PWM 占空比,单位 %,与镜头和电路相关。值越小,支持的关闭速度越快,但易振荡。范围 [0,100],默认 0。
MaxPwmDuty 最大 PWM 占空比,单位 %,与镜头和电路相关。值越大,开启越快;过小可能在未达最大光圈前退出控制。范围 [0,100],默认 100。
OpenPwmDuty 开启阈值 OpenPwmDuty:PWM 严格大于此值时开启。具体值与 DC-iris 镜头相关,单位 %。
ClosePwmDuty 关闭阈值 ClosePwmDuty:PWM 严格小于此值时关闭。具体值与 DC-iris 镜头相关,单位 %。

【注意事项】

关闭自动光圈时,DC-iris 默认开到最大,P-iris 默认移动到最大光圈对应步进位置。可通过 AecInitValue 的 InitPIrisGainValue 和 InitDCIrisDutyValue 改变上述初始位置。

自动光圈 Airis 算法基本控制流程:

DC-iris 镜头由 Airis 按当前亮度与目标偏差控制。曝光达到最小且亮度仍超出目标容差时,退出 AE,固定曝光时间和增益,进入 AIRIS 控制。当前亮度稳定且 DC-iris 的 PWM 占空比

大于 OpenPwmDuty,则认为光圈已达最大,退出 Airis 并交还 AE 控制。

P-iris 通过 AecRoute 控制,将光圈大小转换为等效增益参与曝光分解。

StepTable 通常按镜头厂家提供的步进位置与孔径关系制作。AE 的 AecRoute 将孔径转换为等效增益,所以 P-iris 控制需良好线性。等效增益范围 [1,1024]:F1.0 对应 1024,F1.4 对应 512,依此类推,F32.0 对应 1。制表时将各步进位置孔径换算为等效增益,按 step0、step1……stepN 的位置递增顺序填入 StepTable。

TotalStep 为电机总步数,与镜头相关。EffcStep 为可用步数,通常小于 TotalStep。接近全闭端的位置,其等效增益误差较大,光圈调节易振荡,因此通常不用这些位置。

表 4-1 给出电机位置、孔径及等效增益,作为 StepTable 设置示例。第 1–2、4–5 列的位置与孔径面积关系由某镜头厂家提供。该镜头共 81 步,step0 为最大光圈,标称 F1.4,对应增益 512。以 step3 为例:面积 195.869,等效增益 = 512* (195.869/201.062)=499(取整)。其余位置类推。原文随后引用“表 1-1”:接近全闭端时面积很小,与最大面积可差数千倍,等效增益误差大,建议不使用这些位置以免曝光振荡。按 step0、step1……stepN 顺序将等效增益填入 StepTable。表号交叉引用差异保留。

OpenPwmDuty、ClosePwmDuty 须实测,与 DC-iris 镜头相关。部分镜头 PWM 大于 OpenPwmDuty 时开启;原文接着写小于 OpenPwmDuty 时关闭,而后又规定 ClosePwmDuty <= PWM <= OpenPwmDuty 为保持区间 HoldValue,两种描述存在疑点,未擅改。有的镜头只有一个阈值:大于则开启、小于则关闭、等于则保持;此时可设 ClosePwmDuty = OpenPwmDuty = HoldValue。

手动光圈参数设置与手动曝光一致:AecOpType 设为手动,并使能 AecManualCtrl.ManualIrisEn。原文两次均写 IrisType 为 P-iris,分别说只有 PirisGainValue、只有 DCIrisValue 有效;这一互相冲突的类型条件保留,应用前需核对。

表 4-1 P-iris 步进位置、孔径面积与等效增益对应表

步进位置 孔径面积(mm2) 等效增益 步进位置 孔径面积(mm2) 等效增益
0 201.062 512 41 56.653 144
1 200.759 511 42 53.438 136
2 198.583 506 43 50.282 128
3 195.869 499 44 47.188 120
4 192.879 491 45 44.159 112
5 189.677 483 46 41.197 105
6 186.293 474 47 38.307 98
7 182.744 465 48 35.49 90
8 179.035 456 49 32.751 83
9 175.271 446 50 30.093 77
10 171.484 437 51 27.519 70
11 167.681 427 52 25.034 64
12 163.865 417 53 22.642 58
13 160.036 408 54 20.347 52
14 156.198 398 55 18.154 46
15 152.351 388 56 16.068 41
16 148.499 378 57 14.096 36
17 144.642 368 58 12.245 31
18 140.783 359 59 10.522 27
19 136.925 349 60 8.935 23
20 133.069 339 61 7.484 19
21 129.217 329 62 6.169 16
22 125.371 319 63 4.987 13
23 121.535 309 64 3.936 10
24 117.709 300 65 3.014 8
25 113.897 290 66 2.22 6
26 110.1 280 67 1.55 4
27 106.321 271 68 1.003 3
28 102.562 261 69 0.577 1
步进位置 孔径面积(mm2) 等效增益 步进位置 孔径面积(mm2) 等效增益
29 98.826 252 70 0.268 1
30 95.115 242 71 0.075 0
31 91.431 233 72 全闭 0
32 87.777 224 73 全闭 0
33 84.156 214 74 全闭 0
34 80.569 205 75 全闭 0
35 77.02 196 76 全闭 0
36 73.51 187 77 全闭 0
37 70.043 178 78 全闭 0
38 66.621 170 79 全闭 0
39 63.247 161 80 全闭 0
40 59.923 153      

6.7.7 Uapi_ExpWin_t

【说明】定义 AE 统计窗口属性。

【定义】

 typedef struct window {
     uint16_t h_offs;
     uint16_t v_offs;
     uint16_t h_size;
     uint16_t v_size;
 } window_t;
 typedef struct Uapi_ExpWin_s {
   rk_aiq_uapi_sync_t            sync;
   window                        Params;
 } Uapi_ExpWin_t;

【成员】

成员名称 说明
h_offs 窗口左上角相对坐标原点的水平偏移;原点是 sensor 感光区域左上角。
v_offs 窗口左上角相对坐标原点的垂直偏移;原点是 sensor 感光区域左上角。
h_size 窗口水平尺寸
v_size 窗口垂直尺寸

6.7.8 Uapi_ExpQueryInfo_t

【说明】定义 AE 曝光参数查询。

【定义】

 typedef struct Uapi_ExpQueryInfo_s {
     bool              IsConverged;
     bool              IsExpMax;
     float             LumaDeviation;
     float             HdrLumaDeviation[3];
     float             MeanLuma;
     float             HdrMeanLuma[3];
     float             GlobalEnvLux;
     float             BlockEnvLux[ISP2_RAWAE_WINNUM_MAX];
     RKAiqAecExpInfo_t CurExpInfo;
     unsigned short    Piris;
     float             LinePeriodsPerField;
     float             PixelPeriodsPerLine;
     float             PixelClockFreqMHZ;
 } Uapi_ExpQueryInfo_t;

【成员】

成员名称 说明
IsConverged 自动曝光是否收敛
IsExpMax ISP 曝光是否已达最大
LumaDeviation 线性模式中 AEC 目标值与实际亮度的偏差:正值表示实际亮度高于目标,负值表示低于目标,0 表示处于目标容差内。
HdrLumaDeviation HDR 各帧实际亮度相对目标的偏差:正值高于目标,负值低于目标,0 在容差内。双帧 HDR 仅 0、1 有效,对应短、长帧;三帧 HDR 的 0–2 对应短、中、长帧。
MeanLuma 线性模式当前图像平均亮度。
HdrMeanLuma HDR 当前各帧平均亮度。双帧模式数组 0、1 为短、长帧;三帧模式全部成员为短、中、长帧。
CurExpInfo 当前曝光参数,包括 sensor 曝光时间和增益,按模式分为 LinearExp 和 HdrExp[3]。
Piris Aperture
LinePeriodsPerField sensor VTS
PixelPeriodsPerLine sensor HTS
PixelClockFreqMHZ Sensor 像素时钟频率,单位 MHz。

6.8 常见问题定位与调试

出现亮度闪烁、超调或未达预期等问题时,建议抓取问题场景 AE LOG 分析,以快速定位并提高效率。

6.8.1 曝光与统计同步测试

校准 ISP 前,驱动或调优人员须在 IQ XML 中填写 SensorInfo。该模块涉及曝光参数,错误设置可能导致曝光错误、闪烁等。建议配置后启用 SyncTest 自测;参数含义参见 Rockchip_Tuning_Guide_ISP30。

SyncTest 循环设置 N 组不同曝光值,检查 sensor 曝光时间、增益及 DCG 切换的生效帧数是否正确;还可测试曝光线性,确认曝光时间/增益寄存器换算公式和参数。

SyncTest 参数如下:

【说明】

曝光与统计同步测试按指定帧间隔循环设置 N 组曝光,验证曝光分量(时间、增益)的生效帧数及 sensor 曝光参数配置。

【成员】

成员名 说明
Enable 使能曝光与统计同步测试。
IntervalFrm 曝光切换间隔帧数
AlterExp 曝光切换参数

AlterExp

按模式分为 LinearAE 和 HdrAE 两组参数。

成员名 说明
TimeValue 曝光时间值
GainValue 曝光增益值
IspDgainValue ISP 数字增益值
DcgMode DCG 模式值
PIrisGainValue P-iris 等效增益

正确设置时,原文 LOG 示例只截取关键行。红框标记曝光切换位置;亮度匹配曝光值,无延迟、提前或线性异常时,可初步认为 sensorinfo 设置正确。

英文原稿技术图 — PDF p.115

6.8.2 曝光变化时闪烁

曝光变化时闪烁可能有以下原因:

(1)CISExpUpdate 的 gain、time 生效帧数错误。原文 LOG 仅截取每帧关键行。

英文原稿技术图 — PDF p.115

红框标出亮度错误:曝光增减时,亮度变化方向却相反。亮度突变发生在曝光时间和增益都变化后的第二帧,且趋势跟随曝光时间,因此可判断 gain、time 生效帧数不对,二者未同步生效,导致亮度与曝光不匹配。修改 gain、time 帧数可解决。可用 AE syncTest

设置两组不同增益与时间的曝光并反复切换,从 LOG 检查是否复现。

(2)驱动错误造成亮度来回振荡、不能收敛,常见于高亮场景。原文 LOG 仅截取每帧关键行。

英文原稿技术图 — PDF p.116

图中曝光在 59ms 与 44ms 间振荡;对应平均亮度之比与曝光之比相差很大,说明线性存在问题。先在 sensor 驱动打印曝光寄存器,核对与 LOG 曝光值是否一致。可用 syncTest 设置多组曝光(含问题值)反复切换,检查 LOG 中每帧亮度与曝光的对应关系是否线性。

英文原稿技术图 — PDF p.116

(3)AE 后级模块引起闪烁。原文 LOG 只截取每帧关键行。

英文原稿技术图 — PDF p.116

左侧 LOG 的 SMeanLuma、MMeanLuma 下降期间,TmoMeanluma 输出亮度发生变化;出现此情况应调试 TMO 模块。

7. AWB

7.1 概述

AWB 通过改变摄像设备各色彩通道增益,统一补偿环境色温及设备固有通道增益偏差,使图像正确呈现物体真实颜色。

7.2 重要概念

色温:以绝对黑体定义;光源在可见区域的辐射与某绝对黑体完全相同时,该黑体温度就是光源色温。

白平衡:不同色温光源下,sensor 对白色的响应可能偏蓝或偏红;算法调节 R、G、B 三通道强度,使白色真实呈现。

7.3 功能说明

AWB 由 WB 信息统计与 AWB 策略控制算法两部分组成。

7.4 功能级 API 参考

7.4.1 rk_aiq_uapi2_setWBMode

【说明】设置白平衡工作模式。

【语法】

 XCamReturn rk_aiq_uapi2_setWBMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
mode 白平衡工作模式 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【注意】

手动模式的白平衡增益由当前手动参数控制。若需切换手动模式同时设置具体增益,可用 rk_aiq_uapi2_setMWBGain。

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.4.2 rk_aiq_uapi2_getWBMode

【说明】获取白平衡工作模式。

【语法】

 XCamReturn rk_aiq_uapi2_getWBMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
mode 白平衡工作模式 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.4.3 rk_aiq_uapi2_lockAWB

【说明】锁定当前白平衡参数。

【语法】

 XCamReturn rk_aiq_uapi2_lockAWB(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.4.4 rk_aiq_uapi2_unlockAWB

【说明】解锁已锁定的白平衡参数。

【语法】

 XCamReturn rk_aiq_uapi2_unlockAWB(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.4.5 rk_aiq_uapi2_setMWBScene

【说明】设置白平衡场景。

【语法】

 XCamReturn rk_aiq_uapi2_setMWBScene(const rk_aiq_sys_ctx_t* ctx,
 rk_aiq_wb_scene_t scene);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
scene 白平衡场景 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.4.6 rk_aiq_uapi2_getMWBScene

【说明】获取白平衡场景。

【语法】

 XCamReturn rk_aiq_uapi2_getMWBScene(const rk_aiq_sys_ctx_t* ctx,
 rk_aiq_wb_scene_t *scene);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
scene 白平衡场景 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.4.7 rk_aiq_uapi2_setMWBGain

【说明】设置手动白平衡增益系数。

【语法】

 XCamReturn rk_aiq_uapi2_setMWBGain(const rk_aiq_sys_ctx_t* ctx, rk_aiq_wb_gain_t
 *gain);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
gain 白平衡增益系数 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.4.8 rk_aiq_uapi2_getWBGain

【说明】获取白平衡增益系数,适用于手动和自动白平衡。

【语法】

 XCamReturn rk_aiq_uapi2_getWBGain(const rk_aiq_sys_ctx_t* ctx, rk_aiq_wb_gain_t
 *gain);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
gain 白平衡增益系数 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.4.9 rk_aiq_uapi2_setMWBCT

【说明】设置手动白平衡色温参数。

【语法】

 XCamReturn rk_aiq_uapi2_setMWBCT(const rk_aiq_sys_ctx_t* ctx, unsigned int ct);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
ct 白平衡色温参数 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.4.10 rk_aiq_uapi2_getWBCT

【说明】获取白平衡色温,适用于自动与手动模式。

【语法】

 XCamReturn rk_aiq_uapi2_getWBCT(const rk_aiq_sys_ctx_t* ctx, unsigned int *ct);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
ct 白平衡色温 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.4.11 rk_aiq_uapi2_setAwbGainOffsetAttrib

【说明】设置自动白平衡增益偏移。

【语法】

 XCamReturn rk_aiq_uapi2_setAwbGainOffsetAttrib(const rk_aiq_sys_ctx_t* ctx,
 rk_aiq_uapiV2_wb_awb_wbGainOffset_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr wbgain 偏移参数 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.4.12 rk_aiq_uapi2_getAwbGainOffsetAttrib

【说明】获取自动白平衡增益偏移。

【语法】

 XCamReturn rk_aiq_uapi2_getAwbGainOffsetAttrib(const rk_aiq_sys_ctx_t* ctx,
 CalibDbV2_Awb_gain_offset_cfg_t *attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr wbgain 偏移参数 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.4.13 rk_aiq_uapi2_setAwbGainAdjustAttrib

【说明】设置自动白平衡模式的色调调整参数。

【语法】

 XCamReturn rk_aiq_uapi2_setAwbGainAdjustAttrib(const rk_aiq_sys_ctx_t* ctx,
 rk_aiq_uapiV2_wb_awb_wbGainAdjust_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 白平衡色调调整参数 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.4.14 rk_aiq_uapi2_getAwbGainAdjustAttrib

【说明】获取自动白平衡模式的色调调整参数。

【语法】

 XCamReturn rk_aiq_uapi2_getAwbGainAdjustAttrib(const rk_aiq_sys_ctx_t* ctx,
 rk_aiq_uapiV2_wb_awb_wbGainAdjust_t *attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 白平衡色调调整参数 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.4.15 rk_aiq_uapi2_setAwbV30AllAttrib

【说明】设置白平衡 API 支持的全部参数。

【语法】

 XCamReturn rk_aiq_uapi2_setAwbV30AllAttrib(const rk_aiq_sys_ctx_t* ctx,
 rk_aiq_uapiV2_wbV30_attrib_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 白平衡 API 支持的全部参数。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,详见错误码表。

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.4.16 rk_aiq_uapi2_getAwbV30AllAttrib

【说明】获取白平衡 API 支持的全部参数。

【语法】

 XCamReturn rk_aiq_uapi2_getAwbV30AllAttrib(const rk_aiq_sys_ctx_t* ctx,
 rk_aiq_uapiV2_wbV30_attrib_t *attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr wbgain 偏移参数 输出

【返回值】

返回值 说明
0 成功
非 0 失败,详见错误码表。

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.5 功能级 API 数据类型

7.5.1 rk_aiq_wb_op_mode_t

【说明】定义白平衡工作模式。

【定义】

 typedef enum rk_aiq_wb_op_mode_s {
     RK_AIQ_WB_MODE_INVALID        = 0,
     RK_AIQ_WB_MODE_MANUAL         = 1,
     RK_AIQ_WB_MODE_AUTO           = 2,
     RK_AIQ_WB_MODE_MAX
 } rk_aiq_wb_op_mode_t;

【成员】

成员名称 说明
RK_AIQ_WB_MODE_MANUAL 白平衡手动模式
RK_AIQ_WB_MODE_AUTO 白平衡自动模式

7.5.2 rk_aiq_wb_mwb_mode_t

【说明】定义手动白平衡模式类型。

【定义】

 typedef enum rk_aiq_wb_mwb_mode_e {
     RK_AIQ_MWB_MODE_INVAILD              = 0,
     RK_AIQ_MWB_MODE_CCT                  = 1,
     RK_AIQ_MWB_MODE_WBGAIN               = 2,
     RK_AIQ_MWB_MODE_SCENE                = 3,
 } rk_aiq_wb_mwb_mode_t;

【成员】

成员名称 说明
RK_AIQ_MWB_MODE_CCT 色温
RK_AIQ_MWB_MODE_WBGAIN 增益系数
RK_AIQ_MWB_MODE_SCENE 场景

7.5.3 rk_aiq_wb_gain_t

【说明】定义白平衡增益参数。

【定义】

 typedef struct rk_aiq_wb_gain_s {
     float rgain;
     float grgain;
     float gbgain;
     float bgain;
 } rk_aiq_wb_gain_t;

【成员】

成员名称 说明
rgain R 通道增益
grgain G 通道增益
gbgain GB 通道增益
bgain B 通道增益

7.5.4 rk_aiq_wb_scene_t

【说明】定义白平衡增益参数。

【定义】

 typedef enum rk_aiq_wb_scene_e {
     RK_AIQ_WBCT_INCANDESCENT = 0,
     RK_AIQ_WBCT_FLUORESCENT,
     RK_AIQ_WBCT_WARM_FLUORESCENT,
     RK_AIQ_WBCT_DAYLIGHT,
     RK_AIQ_WBCT_CLOUDY_DAYLIGHT,
     RK_AIQ_WBCT_TWILIGHT,
     RK_AIQ_WBCT_SHADE
 } rk_aiq_wb_scene_t;

【成员】

成员名称 说明
RK_AIQ_WBCT_INCANDESCENT 白炽灯
RK_AIQ_WBCT_FLUORESCENT 荧光灯
RK_AIQ_WBCT_WARM_FLUORESCENT 暖色荧光灯
RK_AIQ_WBCT_DAYLIGHT 日光
RK_AIQ_WBCT_CLOUDY_DAYLIGHT 阴天
RK_AIQ_WBCT_TWILIGHT 暮光
RK_AIQ_WBCT_SHADE 阴影

7.5.5 rk_aiq_wb_cct_t

【说明】定义白平衡增益参数。

【定义】

 typedef struct rk_aiq_wb_cct_s {
     float CCT;
     float CCRI;
 } rk_aiq_wb_cct_t;

【成员】

成员名称 说明
CCT 相关色温
CCRI 相关显色指数

7.5.6 rk_aiq_wb_mwb_attrib_t

【说明】定义手动白平衡属性。

【定义】

 typedef struct rk_aiq_wb_mwb_attrib_s {
     rk_aiq_wb_mwb_mode_t mode;
     union MWBPara_u {
         rk_aiq_wb_gain_t gain;
         rk_aiq_wb_scene_t scene;
         rk_aiq_wb_cct_t cct;
     } para;
 } rk_aiq_wb_mwb_attrib_t;

【成员】

成员名称 说明
mode 模式选择

7.5.7 rk_aiq_uapiV2_wb_awb_wbGainOffset_t

【说明】定义自动白平衡增益偏移。

【定义】

 typedef struct rk_aiq_uapiV2_wb_awb_wbGainOffset_s{
   rk_aiq_uapi_sync_t sync;
   CalibDbV2_Awb_gain_offset_cfg_t gainOffset;
 }rk_aiq_uapiV2_wb_awb_wbGainOffset_t;

【成员】

成员名 说明
sync rk_aiq_uapi_sync_t 定义参见“概述/API 说明”。
gainOffset 详见后面的 CalibDbV2_Awb_gain_offset_cfg_t 说明。

7.5.8 CalibDbV2_Awb_gain_offset_cfg_t

【说明】定义自动白平衡增益偏移。

【定义】

 typedef struct CalibDbV2_Awb_gain_offset_cfg_s{
   bool enable;
   float offset[4];
 }CalibDbV2_Awb_gain_offset_cfg_t;

【成员】

成员名 说明
enable 使能开关:0 不使能,1 使能。
offset wbgain 与 offset 相加,R GR GB B 各通道 offset 的范围须使相加结果处于 [0,8](ISP21,原文平台标注)。

7.5.9 rk_aiq_uapiV2_wb_awb_wbGainAdjust_t

【说明】定义自动白平衡色调调整参数。

【定义】

 typedef struct rk_aiq_uapiV2_wb_awb_wbGainAdjustLut_s {
   float lumaValue;
   int ct_grid_num;
   int cri_grid_num;
   float ct_in_range[2];//min,max, equal distance sapmle
   float cri_in_range[2];//min,max
   float *ct_lut_out;//size is ct_grid_num*cri_grid_num
   float *cri_lut_out;
 } rk_aiq_uapiV2_wb_awb_wbGainAdjustLut_t;
 typedef struct rk_aiq_uapiV2_wb_awb_wbGainAdjust_s {
   rk_aiq_uapi_sync_t sync;
   bool enable;
   rk_aiq_uapiV2_wb_awb_wbGainAdjustLut_t *lutAll;
   int lutAll_len;
 } rk_aiq_uapiV2_wb_awb_wbGainAdjust_t;

【成员】

成员名 说明
sync rk_aiq_uapi_sync_t 定义参见“概述/API 说明”。
enable 色调调整使能,0 关闭、1 开启。
lutAll 可为不同环境亮度配置不同输出色温表。
lutAll_len 指定色温表数量。
lutAll.ct_grid_num 输入色温采样点数量不限。
lutAll.ct_in_range 输入色温范围不限。
lutAll.cri_grid_num 输入色温表显色指数采样点数量不限。
lutAll.cri_in_range 输入色温表的显色指数范围不限。
lutAll.ct_out 工具界面中 ct 由左向右递增,色调由冷到暖,CT 范围为 0-255000。
lutAll.cri_out 工具界面中 cri 由下向上递增、负数到正数,色调由紫到绿;CRI 取值范围不限。

更多说明参见 Rockchip_Color_Optimization_Guide 中 WBGain 色彩调整章节。

7.5.10 rk_aiq_uapiV2_wbV30_awb_attrib_t

【说明】定义自动白平衡 API 参数。

【定义】

 typedef struct rk_aiq_uapiV2_wbV30_awb_attrib_s {
     rk_aiq_uapiV2_wb_awb_wbGainAdjust_t wbGainAdjust;
     CalibDbV2_Awb_gain_offset_cfg_t wbGainOffset;
 } rk_aiq_uapiV2_wbV30_awb_attrib_t;

【成员】

成员名 说明
wbGainAdjust 参见 CalibDbV2_Awb_gain_offset_cfg_t。
wbGainOffset 参见 rk_aiq_uapiV2_wb_awb_wbGainAdjust_t。
multiWindow 参见 rk_aiq_uapiV2_wbV32_awb_mulWindow_t。

7.5.11 rk_aiq_uapiV2_wbV32_attrib_t

【说明】定义白平衡 API 支持的全部参数。

【定义】

 typedef struct rk_aiq_uapiV2_wbV30_attrib_s {
     rk_aiq_uapi_sync_t sync;
     bool byPass;
     rk_aiq_wb_op_mode_t mode;
     rk_aiq_wb_mwb_attrib_t stManual;
     rk_aiq_uapiV2_wbV30_awb_attrib_t stAuto;
 } rk_aiq_uapiV2_wbV30_attrib_t;

【成员】

成员名 说明
sync rk_aiq_uapi_sync_t 说明参见“概述/API 说明”。
byPass 取值 0 或 1。0 执行白平衡校正,增益由表末参数控制;1 不执行白平衡校正。
mode 自动/手动白平衡控制参数参见 rk_aiq_wb_op_mode_t。
stManual 手动白平衡参数参见 rk_aiq_wb_mwb_attrib_t。
stAuto 自动白平衡参数参见 rk_aiq_uapiV2_wbV21_awb_attrib_t。

7.6 模块级 API 参考

7.6.1 rk_aiq_user_api2_awbV30_SetAllAttrib

【说明】设置白平衡 API 支持的全部参数。

【语法】

 XCamReturn
 rk_aiq_user_api2_awbV30_SetAllAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_uapiV2_wbV30_attrib_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 白平衡 API 支持的全部参数 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.6.2 rk_aiq_user_api2_awbV30_GetAllAttrib

【说明】获取白平衡 API 支持的全部参数。

【语法】

 XCamReturn
 rk_aiq_user_api2_awbV30_GetAllAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_uapiV2_wbV30_attrib_t *attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 白平衡 API 支持的全部参数 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.6.3 rk_aiq_user_api2_awb_GetCCT

【说明】获取白平衡色温,适用于自动与手动模式。

【语法】

 XCamReturn
 rk_aiq_user_api2_awb_GetCCT(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_wb_cct_t
 *cct);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
cct 白平衡色温参数 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.6.4 rk_aiq_user_api2_awb_QueryWBInfo

【说明】获取白平衡增益系数与色温。

【语法】

 XCamReturn
 rk_aiq_user_api2_awb_QueryWBInfo(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_wb_querry_info_t *wb_querry_info);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
wb_querry_info 色彩相关状态参数 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.6.5 rk_aiq_user_api2_awb_Lock

【说明】锁定当前白平衡参数。

【语法】

 XCamReturn
 rk_aiq_user_api2_awb_Lock(const rk_aiq_sys_ctx_t* sys_ctx);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.6.6 rk_aiq_user_api2_awb_Unlock

【说明】解锁已锁定的白平衡参数。

【语法】

 XCamReturn
 rk_aiq_user_api2_awb_Lock(const rk_aiq_sys_ctx_t* sys_ctx);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.6.7 rk_aiq_user_api2_awb_SetWpModeAttrib

【说明】设置白平衡工作模式。

【语法】

 XCamReturn
 rk_aiq_user_api2_awb_SetWpModeAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_uapiV2_wb_opMode_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 白平衡工作模式 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.6.8 rk_aiq_user_api2_awb_GetWpModeAttrib

【说明】获取白平衡工作模式。

【语法】

 XCamReturn
 rk_aiq_user_api2_awb_GetWpModeAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_uapiV2_wb_opMode_t *attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 白平衡工作模式 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.6.9 rk_aiq_user_api2_awb_SetMwbAttrib

【说明】设置手动白平衡参数。

【语法】

 XCamReturn
 rk_aiq_user_api2_awb_SetMwbAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_wb_mwb_attrib_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 手动白平衡参数 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.6.10 rk_aiq_user_api2_awb_GetMwbAttrib

【说明】设置手动白平衡参数。

【语法】

 XCamReturn
 rk_aiq_user_api2_awb_SetMwbAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_wb_mwb_attrib_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 手动白平衡参数 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.6.11 rk_aiq_user_api2_awb_SetWbGainAdjustAttrib

【说明】设置自动白平衡模式的色调调整参数。

【语法】

 XCamReturn
 rk_aiq_user_api2_awb_SetWbGainAdjustAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_uapiV2_wb_awb_wbGainAdjust_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 色调调整参数 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.6.12 rk_aiq_user_api2_awb_GetWbGainAdjustAttrib

【说明】获取自动白平衡模式的色调调整参数。

【语法】

 XCamReturn
 rk_aiq_user_api2_awb_GetWbGainAdjustAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_uapiV2_wb_awb_wbGainAdjust_t *attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 色调调整参数 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.6.13 rk_aiq_user_api2_awb_SetWbGainOffsetAttrib

【说明】设置自动白平衡增益偏移。

【语法】

 XCamReturn
 rk_aiq_user_api2_awb_SetWbGainOffsetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_uapiV2_wb_awb_wbGainOffset_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 色调调整参数 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.6.14 rk_aiq_user_api2_awb_GetWbGainOffsetAttrib

【说明】获取自动白平衡增益偏移。

【语法】

 XCamReturn
 rk_aiq_user_api2_awb_GetWbGainOffsetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_uapiV2_wb_awb_wbGainOffset_t *attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 色调调整参数 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_awb.h, rk_aiq_uapi2_awb_int.h

库文件:librkaiq.so

【示例】

参见 sample_awb_module.cpp。

7.7 模块级 API 数据类型

7.7.1 rk_aiq_wb_querry_info_t

【说明】定义白平衡查询信息。

【定义】

 typedef struct rk_aiq_wb_querry_info_s {
     rk_aiq_wb_gain_t gain;
     rk_aiq_wb_cct_t cctGloabl;
     bool awbConverged;
     uint32_t LVValue;
 } rk_aiq_wb_querry_info_t;

【成员】

成员名称 说明
gain Gain
cctGloabl 全局色温参数
LVValue 相关环境亮度

7.7.2 rk_aiq_wb_op_mode_t

【说明】定义白平衡工作模式。

【定义】

 typedef struct rk_aiq_uapiV2_wb_opMode_s {
   rk_aiq_uapi_sync_t sync;
   rk_aiq_wb_op_mode_t mode;
 } rk_aiq_uapiV2_wb_opMode_t;

【成员】

成员名称 说明
sync rk_aiq_uapi_sync_t 说明参见“概述/API 说明”。
mode 参见 rk_aiq_wb_op_mode_t 说明。

7.7.3 rk_aiq_wb_mwb_attrib_t

【说明】定义手动白平衡属性。

【定义】

 typedef struct rk_aiq_wb_mwb_attrib_s {
      rk_aiq_uapi_sync_t sync;
     rk_aiq_wb_mwb_mode_t mode;
     union MWBPara_u {
         rk_aiq_wb_gain_t gain;
         rk_aiq_wb_scene_t scene;
         rk_aiq_wb_cct_t cct;
     } para;
 } rk_aiq_wb_mwb_attrib_t;

【成员】

成员名称 说明
sync rk_aiq_uapi_sync_t 的定义参见“概述/API 说明”。
mode 模式选择
para 该模式的参数配置

8. AF

8.1 概述

AF 模块调整摄像头镜头,使被摄物体成像清晰。

8.2 功能说明

AF 由统计和控制算法两部分组成,下图为 AF 信息统计模块框图。

英文原稿技术图 — PDF p.147

ch0/ch1/ch2 分别对应 HDR 的 S/M/L 帧;debayer 为 HDR 合成帧。

windowA 输出主要包括 15*15 的 V1/V2/H1/H2 FV、亮度及高光计数。

windowB 主要输出一个 FV、亮度及高光计数。

8.3 用户 AF 算法开发

英文原稿技术图 — PDF p.148

参考代码位置:sdk: external/camera_engine_rkaiq/rkisp_demo/demo/af_algo_demo

8.4 功能级 API 参考

8.4.1 rk_aiq_uapi2_setFocusMode

【说明】配置对焦模式。

【语法】

 XCamReturn rk_aiq_uapi2_setFocusMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
mode 对焦模式 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.2 rk_aiq_uapi2_getFocusMode

【说明】获取当前对焦模式。

【语法】

 XCamReturn rk_aiq_uapi2_getFocusMode(const rk_aiq_sys_ctx_t* ctx, opMode_t
 *mode);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
mode 对焦模式 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.3 rk_aiq_uapi2_setFocusWin

【说明】设置自动对焦窗口。

【语法】

 XCamReturn rk_aiq_uapi2_setFocusWin(const rk_aiq_sys_ctx_t* ctx, paRect_t *rect);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
rect 对焦窗口,范围由 sensor 输入尺寸决定。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.4 rk_aiq_uapi2_getFocusWin

【说明】设置自动对焦窗口。

【语法】

 XCamReturn rk_aiq_uapi2_getFocusWin(const rk_aiq_sys_ctx_t* ctx, paRect_t *rect);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
rect 对焦窗口 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.5 rk_aiq_uapi2_lockFocus

【说明】锁定自动对焦,暂停对焦动作。

【语法】

 XCamReturn rk_aiq_uapi2_lockFocus(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.6 rk_aiq_uapi2_unlockFocus

【说明】解锁自动对焦,继续对焦动作。

【语法】

 XCamReturn rk_aiq_uapi2_unlockFocus(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.7 rk_aiq_uapi2_oneshotFocus

【说明】触发一次对焦,完成后不再继续。

【语法】

 XCamReturn rk_aiq_uapi2_oneshotFocus(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.8 rk_aiq_uapi2_manualTrigerFocus

【说明】手动触发对焦;完成后持续监测清晰度,模糊时再次对焦。

【语法】

 XCamReturn rk_aiq_uapi2_manualTrigerFocus(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.9 rk_aiq_uapi2_trackingFocus

【说明】持续监测清晰度,模糊时再次对焦,通常在 rk_aiq_uapi2_oneshotFocus 后使用。

【语法】

 XCamReturn rk_aiq_uapi2_trackingFocus(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.10 rk_aiq_uapi2_getSearchResult

【说明】获取对焦结果。

【语法】

 XCamReturn rk_aiq_uapi2_getSearchResult(const rk_aiq_sys_ctx_t* ctx,
 rk_aiq_af_result_t* result);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
result 对焦结果参见 rk_aiq_af_result_t 结构体。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.11 rk_aiq_uapi2_getZoomRange

【说明】获取变焦范围,用于限制 rk_aiq_uapi_setOpZoomPosition 输入的变焦码值。

【语法】

 XCamReturn rk_aiq_uapi2_getZoomRange(const rk_aiq_sys_ctx_t* ctx,
 rk_aiq_af_zoomrange* range);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
range 变焦可移动范围,参见 rk_aiq_af_zoomrange。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.12 rk_aiq_uapi2_setOpZoomPosition

【说明】设置、修改变焦位置。

【语法】

 XCamReturn rk_aiq_uapi2_setOpZoomPosition(const rk_aiq_sys_ctx_t* ctx, int pos);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
pos 变焦位置,范围由 rk_aiq_uapi2_getZoomRange 决定。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.13 rk_aiq_uapi2_getOpZoomPosition

【说明】获取变焦位置。

【语法】

 XCamReturn rk_aiq_uapi2_getOpZoomPosition(const rk_aiq_sys_ctx_t* ctx, int *pos);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
pos 变焦位置 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.14 rk_aiq_uapi2_endOpZoomChange

【说明】结束变焦设备位置设置。在 rk_aiq_uapi_setOpZoomPosition 后调用,随后执行对焦动作。

【语法】

 XCamReturn rk_aiq_uapi2_endOpZoomChange(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.15 rk_aiq_uapi2_getFocusRange

【说明】获取对焦范围,用于限制 rk_aiq_uapi_setFocusPosition 输入的对焦码值。

【语法】

 XCamReturn rk_aiq_uapi2_getFocusRange(const rk_aiq_sys_ctx_t* ctx,
 rk_aiq_af_focusrange* range);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
range 对焦可移动范围,参见 rk_aiq_af_focusrange。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.16 rk_aiq_uapi2_setFocusPosition

【说明】在手动模式下设置对焦位置。

【语法】

 XCamReturn rk_aiq_uapi2_setFocusPosition(const rk_aiq_sys_ctx_t* ctx, unsigned
 short code);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
code 对焦码值,范围由 rk_aiq_uapi2_getFocusRange 决定。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.17 rk_aiq_uapi2_getFocusPosition

【说明】获取当前对焦位置。

【语法】

 XCamReturn rk_aiq_uapi2_getFocusPosition(const rk_aiq_sys_ctx_t* ctx, unsigned
 short *code);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
code 对焦码值 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.18 rk_aiq_uapi2_startZoomCalib

【说明】执行电动马达模组校正。

【语法】

 XCamReturn rk_aiq_uapi2_startZoomCalib(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.4.19 rk_aiq_uapi2_resetZoom

【说明】执行电动马达模组复位。

【语法】

 XCamReturn rk_aiq_uapi2_resetZoom(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

8.5 功能级 API 数据类型

8.5.1 opMode_t

【说明】定义 AF 信息统计工作模式。

【定义】

 typedef enum opMode_e {
     OP_AUTO   = 0,
     OP_MANUAL = 1,
     OP_SEMI_AUTO = 2,
     OP_INVAL
 } opMode_t;

【成员】

成员名称 说明
OP_AUTO 自动对焦,运行内置 AF 算法。
OP_MANUAL 手动对焦,停止内置 AF 算法。
OP_SEMI_AUTO 半自动对焦,调用变焦位置 API 时执行一次自动对焦。

8.5.2 rk_aiq_af_zoomrange

【说明】定义变焦值范围。

【定义】

 typedef struct {
     int min_pos;
     int max_pos;
     float min_fl;
     float max_fl;
 } rk_aiq_af_zoomrange;

【成员】

成员名称 说明
min_pos 变焦最小值
max_pos zoommax
min_fl 最小焦距
max_fl 最大焦距

8.5.3 rk_aiq_af_focusrange

【说明】定义对焦值范围。

【定义】

 typedef struct {
     int min_pos;
     int max_pos;
 } rk_aiq_af_focusrange;

【成员】

成员名称 说明
min_pos 对焦最小值
max_pos 对焦最大值

8.5.4 rk_aiq_af_result_t

【说明】定义 AF 搜索结果。

【定义】

 typedef enum rk_aiq_af_sec_stat_e
 {
     RK_AIQ_AF_SEARCH_INVAL   = 0,
     RK_AIQ_AF_SEARCH_RUNNING = 1,
     RK_AIQ_AF_SEARCH_END     = 2
 } rk_aiq_af_sec_stat_t;
 typedef struct {
     rk_aiq_af_sec_stat_t stat;
     int32_t final_pos;
 } rk_aiq_af_result_t;

【成员】

成员名称 说明
stat 对焦状态
final_pos 最终对焦位置

8.6 模块级 API 参考

8.6.1 rk_aiq_user_api2_af_SetAttrib

【说明】设置对焦属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_af_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_af_attrib_t
 attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 对焦的参数属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_af.h

库文件:librkaiq.so

8.6.2 rk_aiq_user_api2_af_GetAttrib

【说明】获取对焦属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_af_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_af_attrib_t
 *attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 对焦的参数属性 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_af.h

库文件:librkaiq.so

8.7 模块级 API 数据类型

8.7.1 RKAIQ_AF_MODE

【说明】定义对焦工作模式。

【定义】

 typedef enum _RKAIQ_AF_MODE
 {
     RKAIQ_AF_MODE_NOT_SET = -1,
     RKAIQ_AF_MODE_AUTO,
     RKAIQ_AF_MODE_MACRO,
     RKAIQ_AF_MODE_INFINITY,
     RKAIQ_AF_MODE_FIXED,
     RKAIQ_AF_MODE_EDOF,
     RKAIQ_AF_MODE_CONTINUOUS_VIDEO,
     RKAIQ_AF_MODE_CONTINUOUS_PICTURE,
     RKAIQ_AF_MODE_ONESHOT_AFTER_ZOOM,
 } RKAIQ_AF_MODE;

【成员】

成员名称 说明
RKAIQ_AF_MODE_NOT_SET 未设置对焦模式
RKAIQ_AF_MODE_AUTO 自动对焦模式
RKAIQ_AF_MODE_MACRO 微距对焦模式
RKAIQ_AF_MODE_INFINITY 远焦模式
RKAIQ_AF_MODE_FIXED 固定焦点模式
RKAIQ_AF_MODE_EDOF 景深对焦模式
RKAIQ_AF_MODE_CONTINUOUS_VIDEO 平滑连续对焦模式
RKAIQ_AF_MODE_CONTINUOUS_PICTURE 快速连续对焦模式
RKAIQ_AF_MODE_ONESHOT_AFTER_ZOOM 半自动对焦,调用变焦位置设置时自动触发一次对焦。

8.7.2 RKAIQ_AF_HWVER

【说明】定义对焦工作模式。

【定义】

 typedef enum _RKAIQ_AF_HWVER
 {
     RKAIQ_AF_HW_V20 = 0,
     RKAIQ_AF_HW_V30,
     RKAIQ_AF_HW_VMAX
 } RKAIQ_AF_HWVER;

【成员】

成员名称 说明
RKAIQ_AF_HW_V20 AF 硬件版本 2.0
RKAIQ_AF_HW_V30 AF 硬件版本 3.0

8.7.3 rk_aiq_af_algo_meas_v30_t

【说明】定义 AF 信息统计工作模式。

【定义】

 typedef struct {
     unsigned char af_en;
     unsigned char rawaf_sel;
     unsigned char gamma_en;
     unsigned char gaus_en;
     unsigned char v1_fir_sel;
     unsigned char hiir_en;
     unsigned char viir_en;
     unsigned char v1_fv_outmode;    // 0 square, 1 absolute
     unsigned char v2_fv_outmode;    // 0 square, 1 absolute
     unsigned char h1_fv_outmode;    // 0 square, 1 absolute
     unsigned char h2_fv_outmode;    // 0 square, 1 absolute
     unsigned char ldg_en;
     unsigned char accu_8bit_mode;   //fix to 1
     unsigned char ae_mode;
     unsigned char y_mode;           //fix to 0
     unsigned char line_en[RKAIQ_RAWAF_LINE_NUM];
     unsigned char line_num[RKAIQ_RAWAF_LINE_NUM];
     unsigned char window_num;
     unsigned short wina_h_offs;
     unsigned short wina_v_offs;
     unsigned short wina_h_size;
     unsigned short wina_v_size;
     unsigned short winb_h_offs;
     unsigned short winb_v_offs;
     unsigned short winb_h_size;
     unsigned short winb_v_size;
     unsigned short gamma_y[RKAIQ_RAWAF_GAMMA_NUM];
     // [old version param]
     unsigned short thres;
     unsigned char shift_sum_a;
     unsigned char shift_sum_b;
     unsigned char shift_y_a;
     unsigned char shift_y_b;
     /**********[Vertical IIR (v1 & v2)]************/
     short v1_iir_coe[9];
     short v1_fir_coe[3];
     short v2_iir_coe[3];
     short v2_fir_coe[3];
     /**********[Horizontal IIR (h1 & h2)]************/
     short h1_iir1_coe[6];
     short h2_iir1_coe[6];
     short h1_iir2_coe[6];
     short h2_iir2_coe[6];
     /**********[Focus value statistic param]**********/
     // level depended gain
     // input8 lumi, output8bit gain
     unsigned char h_ldg_lumth[2];    //luminance thresh
     unsigned char h_ldg_gain[2];     //gain for [minLum,maxLum]
     unsigned short h_ldg_gslp[2];    //[slope_low,-slope_high]
     unsigned char v_ldg_lumth[2];
     unsigned char v_ldg_gain[2];
     unsigned short v_ldg_gslp[2];
     // coring
     unsigned short v_fv_thresh;
     unsigned short h_fv_thresh;
     // left shift, more needed if outmode=square
     unsigned char v1_fv_shift; //only for sel1
     unsigned char v2_fv_shift;
     unsigned char h1_fv_shift;
     unsigned char h2_fv_shift;
     /**********[High light]**********/
     unsigned short highlit_thresh;
 }  rk_aiq_af_algo_meas_v30_t;

【成员】

成员名称 说明
af_en AF 统计使能,0 关闭、1 开启。
rawaf_sel AF 统计通道,范围 0-3,对应 HDR 长/中/短/合成帧。AF 通常选择中帧;非 HDR 设 0,HDR 设 1(通道对应按原文保留)。
Gamma_en Gamma 使能,0 关闭、1 开启。
gaus_en 必须固定设为 1。
v1_fir_sel 必须固定设为 1。
hiir_en H1/H2 通道使能,0 关闭、1 开启。
viir_en V1/V2 通道使能,0 关闭、1 开启。启用 gamma_en 时,viir_en 必须为 1。
v1_fv_outmode V1 通道 FV 输出模式,0 平方,1 绝对值。
v2_fv_outmode V2 通道 FV 输出:0 平方模式,1 绝对值模式。
ldg_en LDG 使能,0 关闭、1 开启。
accu_8bit_mode 必须固定设为 1。
ae_mode ae_mode=1 时,RAWAF 复用 RAWAE_BIG 逻辑,开启 15x15 亮度平均统计。
y_mode 必须固定设为 0。
sobel_sel 必须固定设为 0。
v_dnscl_mode 宽带/窄带模式,按 AF 滤波系数生成工具的输出设置。
from_awb AF 统计输入取自 AWB。
from_ynr AF 统计输入取自 YNR。
ae_config_use 固定配置为 0。
line_en 当前不生效。
line_num 当前不生效。
window_num 有效窗口数量:window_num=1 时 WinA 主窗口生效;为 2 时 WinA 和 WinB 独立窗口均生效。
wina_h_offs WinA 左上角首像素水平坐标,必须 >=2。
wina_v_offs WinA 左上角首像素垂直坐标,必须 >=1。
成员名称 说明
wina_h_size WinA 宽度必须小于图像宽度 -2-wina_h_offs,并为 15 的倍数。
wina_v_size WinA 高度必须小于图像高度 -2-wina_v_offs,并为 15 的倍数。
winb_h_offs WinB 左上角首像素水平坐标,必须 >=2。
winb_v_offs WinB 左上角首像素垂直坐标,必须 >=1。
winb_h_size WinB 宽度须小于图像宽度 -2-wina_h_offs(原文引用 WinA 偏移,待核对)。
winb_v_size WinB 高度须小于图像高度 -2-wina_v_offs(原文引用 WinA 偏移,待核对)。
gamma_y Gamma 表 y 值范围 0-1023;x 坐标 0 至 1023 的分段为:16 16 16 16 32 32 32 32 64 64 64 128 128 128 128 128。
thres WinB 的 AF 阈值:FV 小于该值则置 0,抑制噪声;范围 0-0xFFFF。
shift_sum_a 当前不可用,固定设 0。
shift_y_a 当前不可用,固定设 0。
v1_iir_coe[9] V1 通道 3X3 IIR 系数,按 AF 工具输出设置。
v1_fir_coe[3] V1 通道 1x3 FIR 系数,按 AF 工具输出设置。
v2_iir_coe[3] V2 通道 1x3 IIR 系数,按 AF 工具输出设置。
v2_fir_coe[3] V2 通道 1x3 FIR 系数,按 AF 工具输出设置。
h1_iir1_coe[6] H1 通道 1X6 IIR1 系数,按 AF 工具输出设置。
h2_iir1_coe[6] H2 通道 1X6 IIR1 系数,按 AF 工具输出设置。
h1_iir2_coe[6] H1 通道 1X6 IIR2 系数,按 AF 工具输出设置。
h2_iir2_coe[6] H2 通道 1X6 IIR2 系数,按 AF 工具输出设置。
成员名称 说明
h_ldg_lumth[2] H1/H2 的 LDG 亮度阈值系数;0 为左侧暗区,1 为右侧亮区,范围 0~255。
h_ldg_gain[2] H1/H2 的 LDG 最小增益;0 暗区、1 亮区,范围 0~255。
h_ldg_gslp[2] H1/H2 的 LDG 斜率;0 暗区、1 亮区,范围 0~65535。
v_ldg_lumth[2] V1/V2 的 LDG 亮度阈值;0 暗区、1 亮区,范围 0~255。
v_ldg_gain[2] V1/V2 的 LDG 最小增益;0 暗区、1 亮区,范围 0~255。
v_ldg_gslp[2] V1/V2 的 LDG 最小增益;0 暗区、1 亮区,范围 0~255。
v_fv_thresh V1/V2 AF 阈值;FV 小于该值则置 0,抑制噪声;范围 0-0x0FFF。
h_fv_thresh H1/H2 AF 阈值;FV 小于该值则置 0,抑制噪声;范围 0-0x0FFF。
v1_fv_shift V1 FV 右移位数,防止溢出,范围 0-7;原文误写 shit bit。
v2_fv_shift V2 FV 右移位数,防止溢出,范围 0-7;原文误写 shit bit。
h1_fv_shift H1 FV 右移位数,防止溢出,范围 0-7;原文误写 shit bit。
h2_fv_shift H2 FV 右移位数,防止溢出,范围 0-7;原文误写 shit bit。
highlit_thresh 高光统计阈值:超过该值的像素计为高光,各区域仅累加高光数量;范围 0-0x0FFF。

8.7.4 rk_aiq_af_attrib_t

【说明】对焦配置信息。

【定义】

 typedef struct rk_aiq_af_attrib_s {
     rk_aiq_uapi_sync_t sync;
     RKAIQ_AF_MODE AfMode;
     RKAIQ_AF_HWVER AfHwVer;
     bool contrast_af;
     bool laser_af;
     bool pdaf;
     int h_offs;
     int v_offs;
     unsigned int h_size;
     unsigned int v_size;
     short fixedModeDefCode;
     short macroModeDefCode;
     short infinityModeDefCode;
     union {
         rk_aiq_af_algo_meas_v20_t manual_meascfg;
         rk_aiq_af_algo_meas_v30_t manual_meascfg_v30;
     };
 } rk_aiq_af_attrib_t;

【成员】

成员名称 说明
sync 同步/异步 API 参见“概述/API 说明”的 rk_aiq_uapi_sync_t 定义。
AfMode 对焦模式
contrast_af 使能对比度对焦
laser_af 使能激光对焦
pdaf 使能相位对焦
h_offs 对焦窗口起始水平坐标
v_offs 对焦窗口起始垂直坐标
h_size 对焦窗口宽度
v_size 对焦窗口高度
fixedModeDefCode 对焦码值
macroModeDefCode 微距模式停止码值,原文范围写作 0-value。
infinityModeDefCode 远焦模式起始码值,原文范围写作 -64。
manual_meascfg AF2.0 自定义对焦统计配置
manual_meascfg_v30 AF3.0 自定义对焦统计配置

8.8 补充说明

8.8.1 VCM 马达模组驱动验证

1. VCM 驱动起始电流与终止电流是否正确。

先向模组厂家获取起始、终止电流资料。

再选择若干模组确认资料,步骤如下:

在 DTS 将起始、终止电流设为 VCM 支持的最大范围。

切换为手动对焦,从位置 64 逐步调节;镜头开始移动且远处物体(超过 10 米)清晰时记录位置。

起始电流为 (vcm_max_mA - vcm_min_mA) * (64 - curPos) / 64。

继续调节,近处物体(10cm 或 20cm)清晰时记录位置。

终止电流为 (vcm_max_mA - vcm_min_mA) * (64 - curPos) / 64。

2. VCM 从不同方向移动后,最终停留位置是否稳定。

手动模式选择一个位置,分别从 0 和 64 移到该位置,比较两图清晰度及 AF 统计是否接近。

3. 镜头移动所需时间是否正确。

8.8.2 电动马达模组驱动验证

1. 多次单步与一次多步移动后,最终位置是否相同。

1. 选择使图像最清晰的 zoom/focus 位置,记录电机位置并抓图 A。

2. 电机后退若干步,再以单步方式前进至记录位置,抓图 B。

3. 再后退相同若干步,一次移动回记录位置,抓图 C。

4. 比较 A、B、C 的清晰度和视场是否一致。

2. 随机移动后最终位置是否相同。

1. 选择使图像最清晰的 zoom/focus 位置,记录电机位置并抓图 A。

2. 通过脚本随机移动 zoom 或 focus 电机 400 至 500 次,回到原位置并抓图 B。

3. 比较 A、B 的清晰度和视场是否一致。

3. 电机同时移动后最终位置是否相同。

1. 选择使图像最清晰的 zoom/focus 位置,记录电机位置并抓图 A。

2. 通过脚本同时随机移动 zoom 与 focus 电机 400 至 500 次,回原位置抓图 B。

3. 比较 A、B 的清晰度和视场是否一致。

9. IMGPROC

9.1 概述

imgproc 指影响图像效果的模块。

9.2 Merge

9.2.1 功能说明

Merge 将多帧图像合成为一帧。

9.2.2 重要概念

仅 HDR 模式生效。

9.2.3 功能级 API 参考

9.2.4 模块级 API 参考

9.2.4.1 rk_aiq_user_api2_amerge_SetAttrib

【说明】设置 merge 属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_amerge_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 amerge_attrib_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr merge 参数属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_amerge.h

库文件:librkaiq.so

9.2.4.2 rk_aiq_user_api2_amerge_GetAttrib

【说明】获取 merge 属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_amerge_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 amerge_attrib_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr merge 参数属性 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_amerge.h

库文件:librkaiq.so

9.2.5 模块级 API 数据类型

9.2.5.1 merge_OpMode_t

【说明】定义 merge 工作模式。

【定义】

 typedef enum merge_OpModeV21_e {
     MERGE_OPMODE_API_OFF = 0,
     MERGE_OPMODE_MANU    = 1,
 } merge_OpModeV21_t;

【成员】

成员名称 说明
MERGE_OPMODE_API_OFF API 关闭模式,算法处于 AUTO 并使用参数(原句未完)。
MERGE_OPMODE_MANU 手动模式

9.2.5.2 MergeBaseFrame_t

【说明】定义融合基准帧属性。

【定义】

 typedef enum MergeBaseFrame_e {
     BASEFRAME_LONG  = 0,
     BASEFRAME_SHORT = 1,
 } MergeBaseFrame_t;

【成员】

成员名称 说明
BASEFRAME_LONG 融合以长帧为基准。
BASEFRAME_SHORT 融合以短帧为基准。

9.2.5.3 MergeCurrCtlData_t

【说明】定义 Merge 控制参数属性。

【定义】

 typedef struct MergeCurrCtlData_s {
     float Envlv;
     float MoveCoef;
 } MergeCurrCtlData_t;

【成员】

成员名称 说明
Envlv 当前环境亮度,原文写作范围 0,1、精度 0.000001。
MoveCoef 当前运动系数,范围 [0,1],精度 0.000001,目前固定值。

9.2.5.4 mMergeOECurveV21_t

【说明】定义手动 Merge 过曝曲线属性。

【定义】

 typedef struct mMergeOECurveV21_s {
     float Smooth;
     float Offset;
 } mMergeOECurveV21_t;

【成员】

成员名称 说明
Smooth 过曝曲线斜率,范围 [0,1],默认 0.4,精度 0.01。
Offset 过曝曲线偏移,范围 [108,280],默认 210,精度 0.1。

9.2.5.5 mMergeMDCurveV21_t

【说明】定义长帧模式运动曲线属性。

【定义】

 typedef struct mMergeMDCurveV21_s {
     float LM_smooth;
     float LM_offset;
     float MS_smooth;
     float MS_offset;
 } mMergeMDCurveV21_t;

【成员】

成员名 说明
LM_smooth 长、中帧运动曲线斜率,范围 [0,1],默认 0.4,精度 0.01;RK356x 无效。
LM_offset 长、中帧运动曲线偏移,范围 [0.26,1],默认 0.38,精度 0.01;RK356x 无效。
MS_smooth 中、短帧运动曲线斜率,范围 [0,1],默认 0.4,精度 0.01。
MS_offset 中、短帧运动曲线偏移,范围 [0.26,1],默认 0.38,精度 0.01。

9.2.5.6 mMergeAttrV21_t

【说明】定义 RK3588 手动 merge 属性。

【定义】

 typedef struct mMergeAttrV21_s {
     mMergeOECurveV21_t OECurve;
     mMergeMDCurveV21_t MDCurve;
 } mMergeAttrV21_t;

【成员】

成员名称 说明
OECurve 过曝曲线参数
MDCurve 运动曲线参数

9.2.5.7 mergeAttrV21_t

【说明】配置 RK356x 的 merge 属性。

【定义】

 typedef struct mergeAttrV21_s {
     merge_OpModeV21_t    opMode;
     mMergeAttrV21_t      stManual;
     MergeCurrCtlData_t   CtlInfo;
 } mergeAttrV21_t;

【成员】

成员名称 说明
opMode 模式选择
stManual 手动 merge 属性
CtlInfo 控制量参数

9.2.5.8 mLongFrameModeData_t

【说明】定义长帧模式控制参数属性。

【定义】

 typedef struct mLongFrameModeData_s {
     mMergeOECurveV21_t OECurve;
     mMergeMDCurveV21_t MDCurve;
 } mLongFrameModeData_t;

【成员】

成员名 说明
OECurve 过曝曲线参数
MDCurve 运动曲线参数

9.2.5.9 mMergeMDCurveV30Short_t

【说明】定义短帧模式运动曲线属性。

【定义】

 typedef struct mMergeMDCurveV30Short_s{
     float Coef;
     float ms_thd0;
     float lm_thd0;
 } mMergeMDCurveV30Short_t;

【成员】

成员名 说明
Coef 控制系数,范围 [0,1],默认 0.05,精度 0.0001。
ms_thd0 中、短帧控制系数,范围 [0,1],默认 0.0,精度 0.1。
lm_thd0 长、中帧控制系数,范围 [0,1],默认 0.0,精度 0.1。

9.2.5.10 mShortFrameModeData_t

【说明】定义短帧模式控制参数属性。

【定义】

 typedef struct mShortFrameModeData_s {
     mMergeOECurveV21_t      OECurve;
     mMergeMDCurveV30Short_t MDCurve;
 } mShortFrameModeData_t;

【成员】

成员名 说明
OECurve 过曝曲线参数
MDCurve 运动曲线参数

9.2.5.11 mMergeAttrV30_t

【说明】定义 RK3588 手动 merge 属性。

【定义】

 typedef struct mMergeAttrV30_s {
     MergeBaseFrame_t      BaseFrm;
     mLongFrameModeData_t  LongFrmModeData;
     mShortFrameModeData_t ShortFrmModeData;
 } mMergeAttrV30_t;

【成员】

成员名称 说明
BaseFrm 融合基准帧
LongFrmModeData 基准为长帧时的控制数据(原文重复 data)。

9.2.5.12 MergeOECurveV10_t

【说明】定义自动 Merge 过曝曲线属性。

【定义】

 typedef struct MergeOECurveV10_s {
     float EnvLv[MERGE_ENVLV_STEP_MAX];
     float Smooth[MERGE_ENVLV_STEP_MAX];
     float Offset[MERGE_ENVLV_STEP_MAX];
 } MergeOECurveV10_t;

【成员】

成员名 说明
EnvLv 环境亮度,范围 [0,1]:0 全黑、1 最亮。
Smooth 过曝曲线斜率,范围 [0,1],默认 0.4,精度 0.01。
Offset 过曝曲线偏移,范围 [108,280],默认 210,精度 0.1。

9.2.5.13 MergeMDCurveV10_t

【说明】定义长帧模式运动曲线属性。

【定义】

 typedef struct MergeMDCurveV10_s {
     float MoveCoef[MERGE_ENVLV_STEP_MAX];
     float LM_smooth[MERGE_ENVLV_STEP_MAX];
     float LM_offset[MERGE_ENVLV_STEP_MAX];
     float MS_smooth[MERGE_ENVLV_STEP_MAX];
     float MS_offset[MERGE_ENVLV_STEP_MAX];
 } MergeMDCurveV10_t;

【成员】

成员名 说明
MoveCoef 画面运动程度,范围 [0,1]:0 完全静止,1 完全运动。
LM_smooth 长、中帧运动曲线斜率,范围 [0,1],默认 0.4,HDR x2 不生效。
LM_offset 长、中帧运动曲线偏移,范围 [0.26,1],默认 0.38,HDR x2 不生效。
MS_smooth 中、短帧运动曲线斜率,范围 [0,1],默认 0.4。
MS_offset 中、短帧运动曲线偏移,范围 [0.26,1],默认 0.38。

9.2.5.14 MergeEachChnCurveV12_t

【说明】定义长帧模式子通道检测曲线属性。

【定义】

 typedef struct MergeEachChnCurveV12_s {
     float EnvLv[MERGE_ENVLV_STEP_MAX];
     float Smooth[MERGE_ENVLV_STEP_MAX];
     float Offset[MERGE_ENVLV_STEP_MAX];
 } MergeEachChnCurveV12_t;

【成员】

成员名称 说明
EnvLv 环境亮度,范围 [0,1]:0 全黑、1 最亮。
Smooth 子通道过曝曲线斜率,范围 [0,1],默认 0.4,精度 0.01。
Offset 子通道过曝曲线偏移,范围 [0,1],默认 0.38,精度 0.01。

9.2.5.15 LongFrameModeDataV12_t

【说明】定义长帧模式控制参数属性。

【定义】

 typedef struct LongFrameModeDataV12_s {
     bool                   EnableEachChn;
     MergeOECurveV10_t      OECurve;
     MergeMDCurveV10_t      MDCurve;
     MergeEachChnCurveV12_t EachChnCurve;
     float                  OECurve_damp;
     float                  MDCurveLM_damp;
     float                  MDCurveMS_damp;
 } LongFrameModeDataV12_t;

【成员】

成员名 说明
EnableEachChn 分通道检测开关
OECurve 过曝曲线参数
MDCurve 运动曲线参数
EachChnCurve 分通道检测曲线参数
MDCurveLM_damp 长、中帧运动曲线变化平滑系数,即当前帧参数占比,范围 [0,1],默认 0.9;HDR x2 无效。
MDCurveMS_damp 中、短帧运动曲线变化平滑系数,即当前帧参数占比,范围 [0,1],默认 0.9。

9.2.5.16 MergeMDCurveV11Short_t

【说明】定义短帧模式运动曲线属性。

【定义】

 typedef struct MergeMDCurveV11Short_s{
     float Coef;
     float ms_thd0;
     float lm_thd0;
 } MergeMDCurveV11Short_t;

【成员】

成员名 说明
Coef 控制系数,范围 [0,1],默认 0.05,精度 0.0001。
ms_thd0 中、短帧控制系数,范围 [0,1],默认 0.0,精度 0.1。
lm_thd0 长、中帧控制系数,范围 [0,1],默认 0.0,精度 0.1。

9.2.5.17 ShortFrameModeData_t

【说明】定义短帧模式控制参数属性。

【定义】

 typedef struct ShortFrameModeData_s {
     MergeOECurveV10_t      OECurve;
     MergeMDCurveV11Short_t MDCurve;
     float                  OECurve_damp;
     float                  MDCurve_damp;
 } ShortFrameModeData_t;

【成员】

成员名 说明
OECurve 过曝曲线参数
MDCurve 运动曲线参数
OECurve_damp 过曝曲线变化平滑系数,即当前帧参数占比,范围 [0,1],默认 0.9。
MDCurve_damp 运动曲线变化平滑系数,即当前帧参数占比,范围 [0,1],默认 0.9。

9.2.5.18 CalibDbV2_merge_V12_t

【说明】定义自动 merge 属性。

【定义】

 typedef struct CalibDbV2_merge_V12_s {
     MergeBaseFrame_t       BaseFrm;
     float                  ByPassThr;
     LongFrameModeDataV12_t LongFrmModeData;
     ShortFrameModeData_t   ShortFrmModeData;
 } CalibDbV2_merge_V12_t;

【成员】

成员名称 说明
BaseFrm 融合基准帧
ByPassThr 当前模块旁路阈值,范围 [0,1]。当前与前帧环境亮度的百分比差小于 ByPassThr 时,不更新模块参数。
LongFrmModeData 基准为长帧时的控制数据(原文重复 data)。

9.2.5.19 MergeCurrCtlData_t

【说明】RK3588 的 merge 属性配置。

【定义】

 typedef struct mergeAttrV30_s {
     merge_OpModeV21_t    opMode;
     mMergeAttrV30_t      stManual;
     MergeCurrCtlData_t   CtlInfo;
 } mergeAttrV30_t;

【成员】

成员名称 说明
opMode 模式选择
stManual 手动 merge 属性
CtlInfo 控制量参数

9.2.5.20 mergeAttr_t

【说明】配置 merge 属性。

【定义】

 typedef struct mergeAttr_s {
     rk_aiq_uapi_sync_t  sync;
     mergeAttrV21_t      attrV21;
     mergeAttrV30_t      attrV30;
 } mergeAttr_t;

【成员】

成员名称 说明
sync rk_aiq_uapi_sync_t 的定义参见“概述/API 说明”。
attrV21 RK356x merge 属性在 RK3588 上无效。
attrV30 RK3588 merge 属性在 RK356x 上无效。

9.3 DRC

9.3.1 功能说明

DRC(高动态范围压缩)将高位宽图像压缩为低位宽图像。

9.3.2 重要概念

DRC 可用于线性或 HDR 模式。

9.3.3 功能级 API 参考

9.3.3.1 rk_aiq_uapi2_setDrcGain

【说明】

快速设置 DrcGain 曲线参数。

【语法】

 XCamReturn rk_aiq_uapi2_setDrcGain(const rk_aiq_sys_ctx_t* ctx, float Gain, float
 Alpha, float Clip);

此时 API 模式为 DRC_OPMODE_DRC_GAIN。调用后参数存入 stDrcGain,DrcGain 曲线的三个参数由 stDrcGain 决定,其余 DRC 参数仍由 JSON 中 DRC 模块参数决定。

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
Gain Gain 范围:[1,8]。 输入
alpha Alpha 范围:[0,1]。 输入
Clip Clip 范围:[0,64]。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.3.3.2 rk_aiq_uapi2_getDrcGain

【说明】

获取快速 DrcGain 曲线参数。

API 返回 stDrcGain 中参数;仅 API 模式为 DRC_OPMODE_DRC_GAIN 时,它们才是当前实际使用的参数。

【语法】

 XCamReturn rk_aiq_uapi2_getDrcGain(const rk_aiq_sys_ctx_t* ctx, float Gain, float
 Alpha, float Clip);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
Gain Gain 范围:[1,8]。 输出
alpha Alpha 范围:[0,1]。 输出
Clip Clip 范围:[0,64]。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.3.3.3 rk_aiq_uapi2_setDrcHiLit

【说明】

快速设置 DrcHiLit 参数。

此时 API 模式为 DRC_OPMODE_HILIT,调用后参数存入 stHiLit,HiLight 由其决定,DRC 其余参数仍使用 JSON 文件。

【语法】

 XCamReturn rk_aiq_uapi2_setDrcHiLit(const rk_aiq_sys_ctx_t* ctx, float Strength);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
Strength Intensity 范围:[0,1]。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.3.3.4 rk_aiq_uapi2_getDrcHiLit

【说明】

获取快速 DrcHiLit 相关参数。

API 获取 stHiLit 中参数,仅 DRC_OPMODE_HILIT 时为当前实际使用参数。

【语法】

 XCamReturn rk_aiq_uapi2_getDrcHiLit(const rk_aiq_sys_ctx_t* ctx, float Strength);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
Strength Intensity 范围:[0,1]。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.3.3.5 rk_aiq_uapi2_setDrcLocalData

【说明】

快速设置 DrcLocalData 参数。

API 模式为 DRC_OPMODE_LOCAL_TMO 时,参数存入 stLocalDataV30,LocalData 由其决定,其余 DRC 参数仍取自 JSON。

【语法】

 XCamReturn rk_aiq_uapi2_setDrcLocalData(const rk_aiq_sys_ctx_t* ctx, float
 LocalWeit, float GlobalContrast, float LoLitContrast,int LocalAutoEnable, float
 LocalAutoWeit);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
LocalWeit LocalWeit 范围:[0,1]。 输入
GlobalContrast GlobalContrast 范围:[0,1]。 输入
LoLitContrast LoLitContrast 范围:[0,1]。 输入
LocalAutoEnable 自动 Local 开关,范围:[0,1]。 输入
LocalAutoWeit 自动 LocalWeit 范围:[0,1]。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.3.3.6 rk_aiq_uapi2_getDrcLocalData

【说明】

获取 DrcLocalData 参数。

API 获取 stLocalDataV30 中 LocalData 参数,仅 DRC_OPMODE_LOCAL_TMO 时使用。

【语法】

 XCamReturn rk_aiq_uapi2_getDrcLocalData(const rk_aiq_sys_ctx_t* ctx, float*
 LocalWeit, float* GlobalContrast, float* LoLitContrast,int* LocalAutoEnable,
 float* LocalAutoWeit);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
LocalWeit LocalWeit 范围:[0,1]。 输出
GlobalContrast GlobalContrast 范围:[0,1]。 输出
LoLitContrast LoLitContrast 范围:[0,1]。 输出
ocalAutoEnable 自动 Local 开关,范围:[0,1]。 输出
LocalAutoWeit 自动 LocalWeit 范围:[0,1]。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.3.4 模块级 API 参考

9.3.4.1 rk_aiq_user_api2_adrc_SetAttrib

【说明】设置 DRC 软件属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_adrc_SetAttrib(RkAiqAlgoContext* ctx,
                            drc_attrib_t attr);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
attr DRC 软件属性结构体 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_adrc.h

库文件:librkaiq.so

【说明】

9.3.4.2 rk_aiq_user_api2_adrc_GetAttrib

【说明】获取 DRC 软件属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_adrc_GetAttrib(RkAiqAlgoContext* ctx,
                            drc_attrib_t* attr);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
attr DRC 软件属性结构体 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_adrc.h

库文件:librkaiq.so

【说明】

9.3.5 模块级 API 数据类型

9.3.5.1 AdrcVersion_t

【说明】定义 DRC 版本属性。

【定义】

 typedef enum AdrcVersion_e {
     ADRC_VERSION_356X = 0,
     ADRC_VERSION_3588 = 1,
     ADRC_VERSION_MAX
 } AdrcVersion_t;

【成员】

成员名称 说明
ADRC_VERSION_356X RK356x
ADRC_VERSION_3588 RK3588
ADRC_VERSION_MAX 最大版本模式

9.3.5.2 drc_OpMode_t

【说明】定义 DRC 工作模式。

【定义】

 typedef enum drc_OpMode_e {
     DRC_OPMODE_API_OFF   = 0,
     DRC_OPMODE_MANU      = 1,
     DRC_OPMODE_DRC_GAIN  = 2,
     DRC_OPMODE_HILIT     = 3,
     DRC_OPMODE_LOCAL_TMO = 4,
 } drc_OpMode_t;

【成员】

成员名称 说明
DRC_OPMODE_API_OFF 自动模式,Drc 全部参数由 JSON 决定。
DRC_OPMODE_MANU 手动模式,Drc 全部参数由 stManualV30 决定。
DRC_OPMODE_DRC_GAIN DrcGain 模式,相关参数由 stDrcGain 决定,其余取自 JSON。
DRC_OPMODE_HILIT HiLit 模式,HiLight 相关参数由 stHiLit 决定,其余取自 JSON。
DRC_OPMODE_LOCAL_TMO LocalTMO 模式,LocalData 相关参数由 stLocalDataV30 决定,其余取自 JSON。

9.3.5.3 mDrcGain_t

【说明】定义手动 DrcGain 属性。

【定义】

 typedef struct mDrcGain_s {
     float DrcGain;
     float Alpha;
     float Clip;
 } mDrcGain_t;

【成员】

成员名称 说明
DrcGain 手动 DrcGain,范围 [1,8],默认 1,精度 0.01。
alpha 手动 alpha,范围 [0,1],默认 0.2,精度 0.01。
Clip 手动 Clip,范围 [0,64],默认 16,精度 0.01。

9.3.5.4 mDrcHiLit_t

【说明】定义手动 Drc HiLit 属性。

【定义】

 typedef struct mDrcHiLit_s {
     float Strength;
 } mDrcHiLit_t;

【成员】

成员名称 说明
Strength 手动 Strength,范围 [0,1],默认 0,精度 0.01。

9.3.5.5 mLocalDataV21_t

【说明】定义 RK356x 的 DRC Local 属性。

【定义】

 typedef struct mLocalDataV21_s {
     float LocalWeit;
     float GlobalContrast;
     float LoLitContrast;
 } mLocalDataV21_t;

【成员】

成员名称 说明
LocalWeit 手动 LocalWeit,原文范围 0,1,默认 1,精度 0.01。
GlobalContrast 手动 GlobalContrast,原文范围 0,1,默认 0,精度 0.01。
LoLitContrast 手动 LoLitContrast,原文范围 0,1,默认 0,精度 0.01。

9.3.5.6 mLocalDataV30_t

【说明】定义 RK356x 的 DRC Local 属性。

【定义】

 typedef struct mLocalDataV30_s {
     float         LocalWeit;
     int           LocalAutoEnable;
     float         LocalAutoWeit;
     float         GlobalContrast;
     float         LoLitContrast;
 } mLocalDataV30_t;

【成员】

成员名称 说明
LocalWeit 手动 LocalWeit,范围 [0,1],默认 1,精度 0.01。
LocalAutoEnable 自动 LocalWeit 开关,范围 [0,1],默认 1,精度 1。
LocalAutoWeit 自动 LocalWeit,范围 [0,1],默认 0.4,精度 0.01。
GlobalContrast 手动 GlobalContrast,范围 [0,1],默认 0,精度 0.01。
LoLitContrast 手动 LoLitContrast,范围 [0,1],默认 0,精度 0.01。

9.3.5.7 mDrcLocalV21_t

【说明】定义 RK356x 的 DRC Local 属性。

【定义】

 typedef struct mDrcLocalV21_s {
     mLocalDataV21_t LocalData;
     float           curPixWeit;
     float           preFrameWeit;
     float           Range_force_sgm;
     float           Range_sgm_cur;
     float           Range_sgm_pre;
     int             Space_sgm_cur;
     int             Space_sgm_pre;
 } mDrcLocalV21_t;

【成员】

成员名称 说明
LocalData 手动设置 LocalData(原句未完)。
curPixWeit 当前点双边权重,范围 [0,1],默认 0.37,精度 0.001。
preFrameWeit 前帧双边权重,范围 [0,1],默认 0.8,精度 0.001。
Range_force_sgm 双边值域 sigma 的倒数,范围 [0,1],默认 0,精度 0.0001。
Range_sgm_cur 前帧双边空域 sigma 的倒数,原文范围 0,1,默认 0.2,精度 0.0001。
Range_sgm_pre 前帧双边空域 sigma 的倒数,范围 [0,1],默认 0.2,精度 0.0001。
Space_sgm_cur 当前帧双边值域倒数,范围 [0,4095],默认 4068,精度 1。
Space_sgm_pre 前帧双边值域 sigma 的倒数,范围 [0,4095],默认 3068,精度 1。

9.3.5.8 mDrcLocalV30_t

【说明】定义 RK3588 的 DRC Local 属性。

【定义】

 typedef struct mDrcLocalV30_s {
     mLocalDataV30_t LocalData;
     float           curPixWeit;
     float           preFrameWeit;
     float           Range_force_sgm;
     float           Range_sgm_cur;
     float           Range_sgm_pre;
     int             Space_sgm_cur;
     int             Space_sgm_pre;
 } mDrcLocalV30_t;

【成员】

成员名称 说明
LocalData 手动 LocalData 设置
curPixWeit 当前点双边权重,范围 [0,1],默认 0.37,精度 0.001。
preFrameWeit 前帧双边权重,范围 [0,1],默认 0.8,精度 0.001。
Range_force_sgm 双边值域 sigma 倒数,范围 [0,1],默认 0,精度 0.0001。
Range_sgm_cur 前帧双边空域 sigma 倒数,范围 [0,1],默认 0.2,精度 0.0001。
Range_sgm_pre 前帧双边空域 sigma 倒数,范围 [0,1],默认 0.2,精度 0.0001。
Space_sgm_cur 当前帧双边值域 sigma 倒数,范围 [0,4095],默认 4068,精度 1。
Space_sgm_pre 前帧双边值域 sigma 倒数,范围 [0,4095],默认 3068,精度 1。

9.3.5.9 CompressMode_t

【说明】定义手动模式下 DrcCompress 曲线工作模式。

【定义】

 typedef enum CompressMode_s {
     COMPRESS_AUTO   = 0,
     COMPRESS_MANUAL = 1,
 } CompressMode_t;

【成员】

成员名称 说明
COMPRESS_AUTO 手动模式,Compress 曲线自动。
COMPRESS_MANUAL 手动模式,Compress 曲线手动。

9.3.5.10 mDrcCompress_t

【说明】定义手动 DrcCompress 属性。

【定义】

 typedef struct mDrcCompress_s {
     CompressMode_t Mode;
     uint16_t       Manual_curve[17];
 } mDrcCompress_t;

【成员】

成员名称 说明
Mode 开关功能
Manual_curve 手动模式下的手动 Compress 曲线。

9.3.5.11 mdrcAttr_V21_t

【说明】定义 RK356x 手动 DRC 属性。

【定义】

 typedef struct mdrcAttr_V21_s {
     bool           Enable;
     mDrcGain_t     DrcGain;
     mDrcHiLit_t    HiLight;
     mDrcLocalV21_t LocalSetting;
     mDrcCompress_t CompressSetting;
     int            Scale_y[ADRC_Y_NUM];
     float          Edge_Weit;
     bool           OutPutLongFrame;
     int            IIR_frame;
 } mdrcAttr_V21_t;

【成员】

成员名称 说明
Enable 手动 DRC 开关
DrcGain 手动 DrcGain 设置
HiLight 手动 HiLit 设置
LocalSetting 手动 Local 设置
CompressSetting 压缩曲线设置
Scale_y 增益校正比例表,范围 [0,2048],精度 1。
Edge_Weit 边缘响应比例,范围 [0,1],默认 0.02,精度 0.01,用于减少高对比度边缘伪影。
OutPutLongFrame 仅输出长帧开关:0 关闭、1 开启。
IIR_frame IIR 滤波帧数,范围 [1,1000],默认 2。

9.3.5.12 mdrcAttr_V30_t

【说明】定义 RK3588 手动 DRC 属性。

【定义】

 typedef struct mdrcAttr_V30_s {
     bool           Enable;
     mDrcGain_t     DrcGain;
     mDrcHiLit_t    HiLight;
     mDrcLocalV30_t LocalSetting;
     mDrcCompress_t CompressSetting;
     int            Scale_y[ADRC_Y_NUM];
     float          Edge_Weit;
     bool           OutPutLongFrame;
     int            IIR_frame;
 } mdrcAttr_V30_t;

【成员】

成员名称 说明
Enable 手动 DRC 开关
DrcGain 手动 DrcGain 设置
HiLight 手动 HiLit 设置
LocalSetting 手动 Local 设置
CompressSetting 压缩曲线设置
Scale_y 增益校正比例表,范围 [0,2048],精度 1。
Edge_Weit 边缘响应比例,范围 [0,1],默认 0.02,精度 0.01,用于减少高对比度边缘伪影。
OutPutLongFrame 仅输出长帧开关:0 关闭、1 开启。
IIR_frame IIR 滤波帧数,范围 [1,1000],默认 2。

9.3.5.13 DrcInfo_t

【说明】定义 DRC 控制参数。

【定义】

 typedef struct DrcInfo_s {
     float EnvLv;
     float ISO;
 } DrcInfo_t;

【成员】

成员名称 说明
EnvLv 当前环境亮度
ISO 当前 ISO

9.3.5.14 drcAttr_t

【说明】定义 DRC 属性。

【定义】

 typedef struct drcAttr_s {
     rk_aiq_uapi_sync_t sync;
     AdrcVersion_t      Version;
     drc_OpMode_t       opMode;
     mdrcAttr_V21_t     stManualV21;
     mdrcAttr_V30_t     stManualV30;
     mDrcGain_t         stDrcGain;
     mDrcHiLit_t        stHiLit;
     mLocalDataV21_t    stLocalDataV21;
     mLocalDataV30_t    stLocalDataV30;
     DrcInfo_t          Info;
 } drcAttr_t;

【成员】

成员名称 说明
sync rk_aiq_uapi_sync_t 的定义参见“概述/API 说明”。
版本 版本信息
opMode API 模式
stManualV21 RK356x 芯片的手动 DRC 属性,opMode 为 DRC_OPMODE_MANU 时生效。
stManualV30 RK3588 芯片的手动 DRC 属性,opMode 为 DRC_OPMODE_MANU 时参数生效。
stDrcGain DrcGain 属性,opMode 为 DRC_OPMODE_DRC_GAIN 时生效。
stHiLit Hillitt 属性,Optmod 为 Dirk_Optmod_Hillit 时生效(标识符按原文保留)。
stLocalDataV21 RK356x 芯片的 LocalData 属性,opMode 为 DRC_OPMODE_LOCAL_TMO 时生效。
stLocalDataV30 RK3588 芯片的 LocalData 属性,opMode 设为 DRC_OPMODE_LOCAL_TMO 时生效。
Info 控制参数信息

9.4 降噪

9.4.1 功能说明

图像噪声指图像数据中不必要或不希望出现的干扰信息。图像降噪是降低数字图像噪声的过程。

9.4.2 功能级 API 参考

9.4.2.1 rk_aiq_uapi2_setNRMode

【说明】设置降噪模式。

【语法】

 XCamReturn rk_aiq_uapi2_setNRMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
mode 工作模式 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.4.2.2 rk_aiq_uapi2_getNRMode

【说明】获取当前降噪模式。

【语法】

 XCamReturn rk_aiq_uapi2_getNRMode(const rk_aiq_sys_ctx_t* ctx, opMode_t* mode);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
mode 工作模式 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.4.2.3 rk_aiq_uapi2_setANRStrth

【说明】设置常规降噪强度。

【语法】

 XCamReturn rk_aiq_uapi2_setANRStrth(const rk_aiq_sys_ctx_t* ctx, unsigned int
 level);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
level 降噪强度,范围 0.0–100.0,默认 50。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.4.2.4 rk_aiq_uapi2_getANRStrth

【说明】获取常规降噪强度。

【语法】

 XCamReturn rk_aiq_uapi2_getANRStrth(const rk_aiq_sys_ctx_t* ctx, unsigned int*
 level);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
level 降噪强度,范围 0.0–100.0,默认 50。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.4.2.5 rk_aiq_uapi2_setMSpaNRStrth

【说明】设置空域降噪强度。

【语法】

 XCamReturn rk_aiq_uapi2_setMSpaNRStrth(const rk_aiq_sys_ctx_t* ctx, bool on,
 unsigned int level);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
on 开关 输入
level 降噪强度,范围 0.0–100.0,默认 50。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.4.2.6 rk_aiq_uapi2_getMSpaNRStrth

【说明】获取空域降噪强度。

【语法】

 XCamReturn rk_aiq_uapi2_getMSpaNRStrth(const rk_aiq_sys_ctx_t* ctx, bool *on,
 unsigned int *level);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
on 开关 输出
level 降噪强度,范围 0.0–100.0,默认 50。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.4.2.7 rk_aiq_uapi2_setMTNRStrth

【说明】设置时域降噪强度。

【语法】

 XCamReturn rk_aiq_uapi2_setMTNRStrth(const rk_aiq_sys_ctx_t* ctx, bool on,
 unsigned int level);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
on 开关 输入
level 降噪强度,范围 0.0–100.0,默认 50。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.4.2.8 rk_aiq_uapi2_getMTNRStrth

【说明】获取时域降噪强度。

【语法】

 XCamReturn rk_aiq_uapi2_getMTNRStrth(const rk_aiq_sys_ctx_t* ctx, bool *on,
 unsigned int *level);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
on 开关 输出
level 降噪强度,范围 0.0–100.0,默认 50。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.4.3 模块级 API 参考

9.4.3.1 rk_aiq_user_api2_abayer2dnrV2_SetAttrib

【说明】设置降噪算法属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_abayer2dnrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_bayer2dnr_attrib_v2_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 降噪参数属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_abayer2dnr_v2.h、RkAiqHandleIntV3x.h

库文件:librkaiq.so

9.4.3.2 rk_aiq_user_api2_abayer2dnrV2_GetAttrib

【说明】获取降噪算法属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_abayer2dnrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_bayer2dnr_attrib_v2_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 降噪参数属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_abayer2dnr_v2.h、RkAiqHandleIntV3x.h

库文件:librkaiq.so

9.4.3.3 rk_aiq_user_api2_abayer2dnrV2_SetStrength

【说明】设置降噪强度。

【语法】

 XCamReturn
 rk_aiq_user_api2_abayer2dnrV2_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_bayer2dnr_strength_v2_t *pStrength)

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
pStrength 降噪强度相关结构体,其中 percent 的范围为 0.0–1.0。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_abayer2dnr_v2.h、RkAiqHandleIntV3x.h

库文件:librkaiq.so

9.4.3.4 rk_aiq_user_api2_abayer2dnrV2_GetStrength

【说明】获取降噪强度。

【语法】

 XCamReturn
 rk_aiq_user_api2_abayer2dnrV2_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_bayer2dnr_strength_v2_t *pStrength);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
pPercnt 降噪强度结构体指针,其中 percentage 的范围为 0.0–1.0。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_abayer2dnr_v2.h、RkAiqHandleIntV3x.h

库文件:librkaiq.so

9.4.3.5 rk_aiq_user_api2_abayertnrV2_SetAttrib

【说明】设置降噪算法属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_abayertnrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_bayertnr_attrib_v2_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 降噪参数属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_abayertnr_v2.h、RkAiqHandleIntV3x.h

库文件:librkaiq.so

9.4.3.6 rk_aiq_user_api2_abayertnrV2_GetAttrib

【说明】获取降噪算法属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_abayertnrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_bayertnr_attrib_v2_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 降噪参数属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_abayertnr_v2.h、RkAiqHandleIntV3x.h

库文件:librkaiq.so

9.4.3.7 rk_aiq_user_api2_abayertnrV2_SetStrength

【说明】设置降噪强度。

【语法】

 XCamReturn
 rk_aiq_user_api2_abayertnrV2_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_bayertnr_strength_v2_t *pStrength);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
pStrength 降噪强度结构体指针,其中 percentage 的范围为 0.0–1.0。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_abayertnr_v2.h、RkAiqHandleIntV3x.h

库文件:librkaiq.so

9.4.3.8 rk_aiq_user_api2_abayertnrV2_GetStrength

【说明】获取降噪强度。

【语法】

 XCamReturn
 rk_aiq_user_api2_abayertnrV2_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_bayertnr_strength_v2_t *pStrength);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
pStrength 降噪强度结构体指针,其中 percentage 的范围为 0.0–1.0。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_abayertnr_v2.h、RkAiqHandleIntV3x.h

库文件:librkaiq.so

9.4.3.9 rk_aiq_user_api2_aynrV3_SetAttrib

【说明】设置降噪算法属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_aynrV3_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_ynr_attrib_v3_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 降噪参数属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_aynr_v3.h、RkAiqHandleIntV3x.h

库文件:librkaiq.so

9.4.3.10 rk_aiq_user_api2_aynrV3_GetAttrib

【说明】获取降噪算法属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_aynrV3_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_ynr_attrib_v3_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 降噪参数属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_aynr_v3.h、RkAiqHandleIntV3x.h

库文件:librkaiq.so

9.4.3.11 rk_aiq_user_api2_aynrV3_SetStrength

【说明】设置降噪强度。

【语法】

 XCamReturn
 rk_aiq_user_api2_aynrV3_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_ynr_strength_v3_t* pStrength);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
pStrength 降噪强度结构体指针,其中 percentage 的范围为 0.0–1.0。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_aynr_v3.h、RkAiqHandleIntV3x.h

库文件:librkaiq.so

9.4.3.12 rk_aiq_user_api2_aynrV3_GetStrength

【说明】获取降噪强度。

【语法】

 XCamReturn
 rk_aiq_user_api2_aynrV3_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_ynr_strength_v3_t* pStrength);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
pStrength 降噪强度结构体指针,其中 percentage 的范围为 0.0–1.0。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_aynr_v3.h、RkAiqHandleIntV3x.h

库文件:librkaiq.so

9.4.3.13 rk_aiq_user_api2_acnrV2_SetAttrib

【说明】设置降噪算法属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_acnrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_cnr_attrib_v2_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 降噪参数属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_acnr_v2.h、RkAiqHandleIntV3x.h

库文件:librkaiq.so

9.4.3.14 rk_aiq_user_api2_acnrV2_GetAttrib

【说明】获取降噪算法属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_acnrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_cnr_attrib_v2_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 降噪参数属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_acnr_v2.h、RkAiqHandleIntV3x.h

库文件:librkaiq.so

9.4.3.15 rk_aiq_user_api2_acnrV2_SetStrength

【说明】设置降噪强度。

【语法】

 XCamReturn
 rk_aiq_user_api2_acnrV2_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_cnr_strength_v2_t *pStrength);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
pStrength 降噪强度结构体指针,其中 percentage 的范围为 0.0–1.0。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_acnr_v2.h、RkAiqHandleIntV3x.h

库文件:librkaiq.so

9.4.3.16 rk_aiq_user_api2_acnrV2_GetStrength

【说明】获取降噪强度。

【语法】

 XCamReturn
 rk_aiq_user_api2_acnrV2_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_cnr_strength_v2_t *pStrength);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
pStrength 降噪强度结构体指针,其中 percentage 的范围为 0.0–1.0。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_acnr_v2.h、RkAiqHandleIntV3x.h

库文件:librkaiq.so

9.4.4 模块级 API 数据类型

9.4.4.1 rk_aiq_bayer2dnr_attrib_v2_t

【说明】定义降噪模块参数。

【定义】

 typedef struct rk_aiq_bayer2dnr_attrib_v2_s {
     rk_aiq_uapi_sync_t sync;
 Abayer2dnr_OPMode_V2_t eMode;
     Abayer2dnr_Auto_Attr_V2_t stAuto;
     Abayer2dnr_Manual_Attr_V2_t stManual;
 } rk_aiq_bayer2dnr_attrib_v2_t;

【成员】

成员名称 说明
sync 同步/异步模式选择,见概述/API 说明部分。
eMode Bayer2DNR 降噪模块模式
stAuto Bayer2DNR 降噪模块自动模式参数
stManual Bayer2DNR 降噪模块手动模式参数

9.4.4.2 Abayer2dnr_OPMode_V2_t

【说明】定义降噪模块模式。

【定义】

 typedef enum Abayer2dnr_OPMode_V2_e {
     ABAYER2DNR_OP_MODE_INVALID           = 0,
     ABAYER2DNR_OP_MODE_AUTO              = 1,
     ABAYER2DNR_OP_MODE_MANUAL            = 2,
     ABAYER2DNR_OP_MODE_REG_MANUAL        = 3,
     ABAYER2DNR_OP_MODE_MAX
 } Abayer2dnr_OPMode_V2_t;

【成员】

成员名称 说明
ABAYER2DNR_OP_MODE_INVALID Bayer 域 2DNR 降噪模块无效模式
ABAYER2DNR_OP_MODE_AUTO Bayer 域 2DNR 降噪模块自动模式
ABAYER2DNR_OP_MODE_MANUAL Bayer 域 2DNR 降噪模块手动模式算法设置
ABAYER2DNR_OP_MODE_REG_MANUAL Bayer 域 2DNR 降噪模块手动模式寄存器设置
ABAYER2DNR_OP_MODE_MAX Bayer 域 2DNR 降噪模块模式最大值,为无效模式。

9.4.4.3 Abayer2dnr_Auto_Attr_V2_t

【说明】定义降噪模块自动属性。

【定义】

 typedef struct Abayer2dnr_Auto_Attr_V2_s
 {
     RK_Bayer2dnr_Params_V2_t st2DParams;
     RK_Bayer2dnr_Params_V2_Select_t st2DSelect;
 } Abayer2dnr_Auto_Attr_V2_t;

【成员】

成员名称 说明
st2DParams Bayer2DNR 模块各 ISO 对应的算法属性参数
st2DSelect Bayer2DNR 模块计算后的属性参数

9.4.4.4 Abayer2dnr_Manual_Attr_V2_t

【说明】定义降噪模块手动属性。

【定义】

 typedef struct Abayer2dnr_Manual_Attr_V2_s
 {
     RK_Bayer2dnr_Params_V2_Select_t st2DSelect;
     RK_Bayer2dnr_Fix_V2_t st2Dfix;
 } Abayer2dnr_Manual_Attr_V2_t;

【成员】

成员名称 说明
st2DSelect Bayer2DNR 算法参数值
st2Dfix 手动模式下 Bayer2DNR 寄存器值

9.4.4.5 RK_Bayer2dnr_Params_V2_t

【说明】定义降噪模块自动模式及各 ISO 对应的算法属性参数。

【定义】

 typedef struct RK_Bayer2dnr_Params_V2_s
 {
     int enable;
     float iso[RK_BAYER2DNR_V2_MAX_ISO_NUM];
     int   lumapoint[16];
     int   sigma[RK_BAYER2DNR_V2_MAX_ISO_NUM][16];
     float filter_strength[RK_BAYER2DNR_V2_MAX_ISO_NUM];
     float edgesofts[RK_BAYER2DNR_V2_MAX_ISO_NUM];
     float ratio[RK_BAYER2DNR_V2_MAX_ISO_NUM];
     float weight[RK_BAYER2DNR_V2_MAX_ISO_NUM];
     int   gauss_guide[RK_BAYER2DNR_V2_MAX_ISO_NUM];
     int pix_diff[RK_BAYER2DNR_V2_MAX_ISO_NUM];
     int diff_thld[RK_BAYER2DNR_V2_MAX_ISO_NUM];
 } RK_Bayer2dnr_Params_V2_t;

【成员】

成员名称 参数类型 说明
enable 调试参数 模块使能开关:1 开启,0 关闭。
ISO 调试参数 不同 ISO 档位对应不同调试参数,目前仅支持 13 档。
lumapoint 标定数据 不同像素亮度对应的噪声 sigma 曲线点,共 16 点。
sigma 标定数据 不同像素亮度对应的噪声 sigma 曲线点,共 16 点。
gauss_guide 调试参数 是否启用高斯引导:1 启用,0 关闭。
filter_strength 调试参数 降噪强度参数,范围 [0, 16],越大降噪越强。
edgesofts 调试参数 影响空域权重,范围 1–16,默认 1。
ratio 调试参数 软阈值权重,范围 0–1.0,越小降噪越强。
weight 调试参数 滤波输出权重越大,降噪越强。
pix_diff 调试参数 双边滤波 5x5 窗口像素差阈值,默认 0x3fff。
diff_thld 调试参数 双边滤波计算欧氏距离的平方差阈值为 0x3ff。

9.4.4.6 RK_Bayer2dnr_Params_V2_Select_t

【说明】定义降噪模块手动模式算法属性。

【定义】

 typedef struct RK_Bayer2dnr_Params_V2_Select_s
 {
     int enable;
     int lumapoint[16];
     int sigma[16];
     float filter_strength;
     float edgesofts;
     float ratio;
     float weight;
     int gauss_guide;
     int pix_diff;
     int diff_thld;
 } RK_Bayer2dnr_Params_V2_Select_t;

【成员】

成员名 参数类型 说明
enable 调试参数 模块使能开关:1 开,0 关。
lumapoint 标定数据 不同像素亮度对应不同噪声 SIGMA 曲线点,共 16 点。
sigma 标定数据 不同像素亮度对应不同噪声 SIGMA 曲线点,共 16 点。
gauss_guide 调试参数 是否启用高斯引导:1 启用,0 关闭。
filter_strength 调试参数 降噪强度参数,范围 [0, 16],越大降噪越强。
edgesofts 调试参数 影响空域权重,范围 [1, 16],默认 1。
ratio 调试参数 软阈值权重,范围 [0, 1.0],越小降噪越强。
weight 调试参数 滤波输出权重越大,降噪越强。
pix_diff 调试参数 双边滤波 5x5 窗口像素差阈值,默认 0x3fff。
diff_thld 调试参数 双边滤波计算欧氏距离的平方差阈值为 0x3ff。

9.4.4.7 RK_Bayer2dnr_Fix_V2_t

【说明】定义降噪模块手动模式寄存器配置。

【定义】

 typedef struct RK_Bayer2dnr_Fix_V2_s {
     //ISP_BAYNR_3A00_CTRL
     uint8_t baynr_lg2_mode;
     uint8_t baynr_gauss_en;
     uint8_t baynr_log_bypass;
     uint8_t baynr_en;
     // ISP_BAYNR_3A00_DGAIN0-2
     uint16_t baynr_dgain[3];
     // ISP_BAYNR_3A00_PIXDIFF
     uint16_t baynr_pix_diff;
     // ISP_BAYNR_3A00_THLD
     uint16_t baynr_diff_thld;
     uint16_t baynr_softthld;
     // ISP_BAYNR_3A00_W1_STRENG
     uint16_t bltflt_streng;
     uint16_t baynr_reg_w1;
     // ISP_BAYNR_3A00_SIGMAX0-15
     uint16_t sigma_x[16];
     // ISP_BAYNR_3A00_SIGMAY0-15
     uint16_t sigma_y[16];
     // ISP_BAYNR_3A00_WRIT_D
     uint16_t weit_d[3];
     uint16_t lg2_lgoff;
     uint16_t lg2_off;
     uint32_t dat_max;
 } RK_Bayer2dnr_Fix_V2_t;
 } RK_Bayer2dnr_Fix_V23_t;

【成员】

参数 位宽 参数说明
baynr_gauss_en 1 高斯 3x3 引导滤波使能位:1 开启滤波,0 关闭;默认 0。
baynr_log_bypass 1 log 变换控制位,HDR 硬件内部强制关闭;1 开启 log 旁路即关闭 log 变换,0 关闭旁路即开启变换;默认 0。
baynr_en 1 Bayer 降噪使能位:1 开启,0 关闭;默认配置 0。
baynr_dgain 18 HDR 模式三帧增益对应参数,小数 10bit。
baynr_pix_diff 14 双边滤波 5x5 窗口像素差阈值,默认 0x3fff。
baynr_diff_thld 10 双边滤波计算欧氏距离的平方差阈值,默认配置 0x3ff。
baynr_softthld 10 软阈值权重,越大则阈值越大、保留噪声越多;小数 10bit,默认 0xa。
bltflt_streng 12 双边滤波降噪强度;小数 8bit,默认 0xa3。
baynr_reg_w1 10 滤波输出权重,越大越多使用滤波结果,越小越多使用原值;小数 10bit,默认 0x3ff。
sigma_x 16 噪声曲线的 16 个亮度等级,配置需保证相邻两个值的插值间距为 2 的幂。
sigma_y 16 噪声曲线的 16 个 sigma 等级,配置参数来自标定。
weit_d 10 空域权重表示不同位置的权重,小数 10bit;默认 0x178、0x249、0x31d。

9.4.4.8 rk_aiq_bayer2dnr_strength_v2_t

【说明】定义降噪模块降噪强度配置结构体。

【定义】

 typedef struct rk_aiq_bayer2dnr_strength_v2_s {
     rk_aiq_uapi_sync_t sync;
     float percent;
 } rk_aiq_bayer2dnr_strength_v2_t;

【成员】

成员名称 说明
sync 同步/异步模式选择,见概述/API 说明部分。
percent 降噪强度,范围 0.0–1.0。

9.4.4.9 rk_aiq_bayertnr_attrib_v2_t

【说明】定义降噪模块参数。

【定义】

 typedef struct rk_aiq_bayertnr_attrib_v2_s {
     rk_aiq_uapi_sync_t sync;
     Abayertnr_OPMode_V2_t eMode;
     Abayertnr_Auto_Attr_V2_t stAuto;
     Abayertnr_Manual_Attr_V2_t stManual;
 } rk_aiq_bayertnr_attrib_v2_t;

【成员】

成员名称 说明
sync 同步/异步模式选择,见概述/API 说明部分。
eMode BayerTNR 降噪模块模式
stAuto BayerTNR 降噪模块自动模式参数
stManual BayerTNR 降噪模块手动模式参数

9.4.4.10 Abayertnr_OPMode_V2_t

【说明】定义降噪模块模式。

【定义】

 typedef enum Abayertnr_OPMode_V2_e {
     ABAYERTNRV2_OP_MODE_INVALID           = 0,
     ABAYERTNRV2_OP_MODE_AUTO              = 1,
     ABAYERTNRV2_OP_MODE_MANUAL            = 2,
     ABAYERTNRV2_OP_MODE_REG_MANUAL        = 3,
     ABAYERTNRV2_OP_MODE_MAX
 } Abayertnr_OPMode_V2_t;

【成员】

成员名称 说明
ABAYERTNRV2_OP_MODE_INVALID Bayer 域 TNR 降噪模块无效模式
ABAYERTNRV2_OP_MODE_AUTO Bayer 域 TNR 降噪模块自动模式
ABAYERTNRV2_OP_MODE_MANUAL Bayer 域 TNR 降噪模块手动模式算法设置
ABAYERTNRV2_OP_MODE_MAX Bayer 域 TNR 降噪模块模式最大值,为无效模式。

9.4.4.11 Abayertnr_Auto_Attr_V2_t

【说明】定义降噪模块自动属性。

【定义】

 typedef struct Abayertnr_Auto_Attr_V2_s
 {
     int bayernr3DEn;
     RK_Bayertnr_Params_V2_t st3DParams;
     RK_Bayertnr_Params_V2_Select_t st3DSelect;
 } Abayertnr_Auto_Attr_V2_t;

【成员】

成员名称 说明
bayernr3DEn Bayer3DNR 模块使能开关
st3DParams Bayer3DNR 自动模式各 ISO 对应的算法属性参数
st3DSelect Bayer3DNR 模块计算后的属性参数

9.4.4.12 Abayertnr_Manual_Attr_V23_t

【说明】定义降噪模块手动属性。

【定义】

 typedef struct Abayertnr_Manual_Attr_V2_s
 {
     int bayernr3DEn;
     RK_Bayertnr_Params_V2_Select_t st3DSelect;
     RK_Bayertnr_Fix_V2_t st3DFix;
 } Abayertnr_Manual_Attr_V2_t;

【成员】

成员名称 说明
bayernr3DEn Bayer3DNR 模块使能开关
st3DSelect Bayer3DNR 手动模式算法参数值
st3Dfix Bayer3DNR 手动模式寄存器值

9.4.4.13 RK_Bayertnr_Params_V2_t

【说明】定义降噪模块自动模式及各 ISO 对应的算法属性参数。

【定义】

 typedef struct RK_Bayertnr_Params_V2_s
 {
     int enable;
     float iso[RK_BAYERNR_V2_MAX_ISO_NUM];
     //calib
     int   lumapoint[16];
     int   sigma[RK_BAYERNR_V2_MAX_ISO_NUM][16];
     int   lumapoint2[16];
     int   lo_sigma[RK_BAYERNR_V2_MAX_ISO_NUM][16];
     int   hi_sigma[RK_BAYERNR_V2_MAX_ISO_NUM][16];
     //tuning
     int   thumbds[RK_BAYERNR_V2_MAX_ISO_NUM];
     int   lo_enable[RK_BAYERNR_V2_MAX_ISO_NUM];
     int   hi_enable[RK_BAYERNR_V2_MAX_ISO_NUM];
     int   lo_med_en[RK_BAYERNR_V2_MAX_ISO_NUM];
     int   lo_gsbay_en[RK_BAYERNR_V2_MAX_ISO_NUM];
     int   lo_gslum_en[RK_BAYERNR_V2_MAX_ISO_NUM];
     int   hi_med_en[RK_BAYERNR_V2_MAX_ISO_NUM];
     int   hi_gslum_en[RK_BAYERNR_V2_MAX_ISO_NUM];
     int   global_pk_en[RK_BAYERNR_V2_MAX_ISO_NUM];
     int   global_pksq[RK_BAYERNR_V2_MAX_ISO_NUM];
     float lo_filter_strength[RK_BAYERNR_V2_MAX_ISO_NUM];
     float hi_filter_strength[RK_BAYERNR_V2_MAX_ISO_NUM];
     float soft_threshold_ratio[RK_BAYERNR_V2_MAX_ISO_NUM];
     float hi_wgt_comp[RK_BAYERNR_V2_MAX_ISO_NUM];
     float clipwgt[RK_BAYERNR_V2_MAX_ISO_NUM];
     float hidif_th[RK_BAYERNR_V2_MAX_ISO_NUM];
 } RK_Bayertnr_Params_V2_t;

【成员】

成员名称 参数类型 说明
Enable 调试参数 模块使能开关
iso 调试参数 不同 ISO 档位对应不同调试参数,目前仅支持 13 档。
lumapoint / sigma 标定参数 不同亮度对应的噪声曲线值,共 16 点。lumapoint 对应像素亮度,sigma 对应噪声曲线值。
lumapoint2 / lo_sigma 标定参数 不同亮度对应的噪声曲线值,共 16 点。lumapoint2 对应像素亮度,lo_sigma 对应噪声曲线值。
lumapoint2 / hi_sigma 标定参数 不同亮度对应的噪声曲线值,共 16 点。lumapoint2 对应像素亮度,hi_sigma 对应噪声曲线值。
thumbds 调试参数 降采样比例
lo_enable 调试参数 是否开启低频运动判断:1 开,0 关,默认开启。
hi_enable 调试参数 是否开启高频运动判断:1 开,0 关,默认开启。
lo_med_en 调试参数 内部低频子模块开关:1 开,0 关,默认开启。
lo_gsbay_en 调试参数 内部低频子模块开关:1 开,0 关,默认开启。
lo_gslum_en 调试参数 内部低频子模块开关:1 开,0 关,默认开启。
hi_med_en 调试参数 内部高频子模块开关:1 开,0 关,默认开启。
hi_gslum_en 调试参数 内部高频子模块开关:1 开,0 关,默认开启。
global_pk_en 调试参数 时域降噪是否使用全局 PK:1 使用,0 不使用,目前只能设为 0。
成员名称 参数类型 说明
global_pksq 调试参数 全局 PK 的平方值,仅 global_pk_en 为 1 时使用。默认 1024,范围 [0, 268435455]。
lo_filter_strength 调试参数 高频运动判断强度,最终影响 hi_sigma,进而影响时域降噪强度。默认 1,范围 [0.0, 16.0]。
hi_filter_strength 调试参数 高频运动判断强度,最终影响 hi_sigma,进而影响时域降噪强度。默认 1,范围 [0.0, 16.0]。
soft_threshold_ratio 调试参数 软阈值权重,越大保留噪声越多,范围 [0.0 1.0],默认 0。
hi_wgt_comp 调试参数 叠加权重补偿比例系数,仅开启高频时有效;默认 0.16,范围 [0.0, 1.0]。
clipwgt 调试参数 图像叠加权重限制值,默认 0.03215,范围 [0.0, 1.0]。
hidif_th 调试参数 高频差值阈值,默认 32767,范围 [0, 65535]。

9.4.4.14 RK_Bayertnr_Params_V2_Select_t

【说明】定义降噪模块手动模式算法属性结构体。

【定义】

 typedef struct RK_Bayertnr_Params_V2_Select_s
 {
     int enable;
     //calib
     int lumapoint[16];
     int sigma[16];
     int lumapoint2[16];
     int lo_sigma[16];
     int hi_sigma[16];
     //tuning
     int thumbds;
     int lo_enable;
     int hi_enable;
     int lo_med_en;
     int lo_gsbay_en;
     int lo_gslum_en;
     int hi_med_en;
     int hi_gslum_en;
     int global_pk_en;
     int global_pksq;
     float lo_filter_strength;
     float hi_filter_strength;
     float soft_threshold_ratio;
     float clipwgt;
     float hi_wgt_comp;
     float hidif_th;
 } RK_Bayertnr_Params_V2_Select_t;

【成员】

成员名称 参数类型 说明
Enable 调试参数 模块使能开关
lumapoint / sigma 标定参数 不同亮度对应的噪声曲线值,共 16 点。lumapoint 对应像素亮度,sigma 对应噪声曲线值。
lumapoint2 / lo_sigma 标定参数 不同亮度对应的噪声曲线值,共 16 点。lumapoint2 对应像素亮度,lo_sigma 对应噪声曲线值。
lumapoint2 / hi_sigma 标定参数 不同亮度对应的噪声曲线值,共 16 点。lumapoint2 对应像素亮度,hi_sigma 对应噪声曲线值。
thumbds 调试参数 降采样比例
lo_enable 调试参数 是否开启低频运动判断:1 开,0 关,默认开启。
hi_enable 调试参数 是否开启高频运动判断:1 开,0 关,默认开启。
lo_med_en 调试参数 内部低频子模块开关:1 开,0 关,默认开启。
lo_gsbay_en 调试参数 内部低频子模块开关:1 开,0 关,默认开启。
lo_gslum_en 调试参数 内部低频子模块开关:1 开,0 关,默认开启。
hi_med_en 调试参数 内部高频子模块开关:1 开,0 关,默认开启。
hi_gslum_en 调试参数 内部高频子模块开关:1 开,0 关,默认开启。
global_pk_en 调试参数 时域降噪是否使用全局 PK:1 使用,0 不使用,目前只能设为 0。
global_pksq 调试参数 全局 PK 的平方值,仅 global_pk_en 为 1 时使用。默认 1024,范围 [0, 268435455]。
成员名称 参数类型 说明
lo_filter_strength 调试参数 高频运动判断强度,最终影响 hi_sigma,进而影响时域降噪强度。默认 1,范围 [0.0, 16.0]。
hi_filter_strength 调试参数 高频运动判断强度,最终影响 hi_sigma,进而影响时域降噪强度。默认 1,范围 [0.0, 16.0]。
soft_threshold_ratio 调试参数 软阈值权重,越大保留噪声越多,范围 [0.0 1.0],默认 0。
hi_wgt_comp 调试参数 叠加权重补偿比例系数,仅开启高频时有效;默认 0.16,范围 [0.0, 1.0]。
clipwgt 调试参数 图像叠加权重限制值,默认 0.03215,范围 0.0–1.0。
hidif_th 调试参数 高频差值阈值,默认 32767,范围 0–65535。

9.4.4.15 RK_Bayertnr_Params_V23_Select_t

【说明】定义降噪模块手动模式算法属性结构体。

【定义】

 typedef struct RK_Bayertnr_Params_V23_Select_s
 {
     int enable;
     //calib
     int lumapoint[16];
     int sigma[16];
     int lumapoint2[16];
     int lo_sigma[16];
     int hi_sigma[16];
     //tuning
     int thumbds_w;
     int thumbds_h;
     int lo_enable;
     int hi_enable;
     int lo_med_en;
     int lo_gsbay_en;
     int lo_gslum_en;
     int hi_med_en;
     int hi_gslum_en;
     int trans_en;
     int wgt_use_mode;
     int wgt_mge_mode;
     int hi_guass;
     int kl_guass;
     bool global_pk_en;
     int global_pksq;
     float lo_filter_strength;
     float hi_filter_strength;
     float soft_threshold_ratio;
     float lo_clipwgt;
     float hi_wgt_comp;
     int   hidif_th;
     float lo_filter_rat0;
     int   lo_filter_thed0;
     int hi_filter_abs_ctrl;
     int hi_filter_filt_bay;
     int hi_filter_filt_avg;
     int hi_filter_filt_mode;
     float hi_filter_rat0;
     int   hi_filter_thed0;
     float hi_filter_rat1;
     int   hi_filter_thed1;
     int   guass_guide_coeff0;
     int   guass_guide_coeff1;
     int   guass_guide_coeff2;
     int   guass_guide_coeff3;
 } RK_Bayertnr_Params_V23_Select_t;

【成员】

成员名称 参数类型 说明
Enable 调试参数 模块使能开关
lumapoint / sigma 标定参数 不同亮度对应的噪声曲线值,共 16 点。LumaPoint 对应像素亮度,Sigma 对应噪声曲线值。
lumapoint2 / lo_sigma 标定参数 不同亮度对应的噪声曲线值,共 16 点。lumapoint2 对应像素亮度,lo_sigma 对应噪声曲线值。
lumapoint2 / hi_sigma 标定参数 不同亮度对应的噪声曲线值,共 16 点。lumapoint2 对应像素亮度,hi_sigma 对应噪声曲线值。
thumbds_w thumbds_h 调试参数 降采样比例目前仅支持 4x4、8x4、8x8 三种模式,默认 8x4。
lo_enable 调试参数 是否开启低频运动判断:1 开,0 关,默认开启。
hi_enable 调试参数 是否开启高频运动判断:1 开,0 关,默认开启。
lo_med_en 调试参数 内部低频子模块开关:1 开,0 关,默认开启。
lo_gsbay_en 调试参数 内部低频子模块开关:1 开,0 关,默认开启。
lo_gslum_en 调试参数 内部低频子模块开关:1 开,0 关,默认开启。
hi_med_en 调试参数 内部高频子模块开关:1 开,0 关,默认开启。
hi_gslum_en 调试参数 内部高频子模块开关:1 开,0 关,默认开启。
global_pk_en 调试参数 时域降噪是否使用全局 PK:1 使用,0 不使用,目前只能设为 0。
global_pksq 调试参数 全局 PK 的平方值,仅 global_pk_en 为 1 时使用。默认 1024,范围 [0, 268435455]。
成员名称 参数类型 说明
lo_filter_strength 调试参数 高频运动判断强度,最终影响 hi_sigma,进而影响时域降噪强度。默认 1,范围 [0.0, 16.0]。
hi_filter_strength 调试参数 高频运动判断强度,最终影响 hi_sigma,进而影响时域降噪强度。默认 1,范围 [0.0, 16.0]。
soft_threshold_ratio 调试参数 软阈值权重,越大保留噪声越多,范围 [0.0 1.0],默认 0。
hi_wgt_comp 调试参数 叠加权重补偿比例系数,仅开启高频时有效;默认 0.16,范围 [0.0, 1.0]。
lo_clipwgt 调试参数 图像叠加权重限制值,默认 0.03215,范围 [0.0, 1.0]。
hidif_th 调试参数 高频差值阈值,默认 32767,范围 [0, 65535]。
trans_en 调试参数 是否启用带宽节省:0 不启用,1 启用。线性模式可设置,HDR 模式建议为 0。
wgt_use_mode 调试参数 权重融合时是否开启优化:0 不启用,1 启用。
wgt_mge_mode 调试参数 高频权重计算优化:0 不启用,1 启用。
hi_guass 调试参数 高频 SIGMA 使用滤波数据还是原始未滤波数据:0 原始,1 滤波。
kl_guass 调试参数 PK sigma 查找使用滤波数据还是原始未滤波数据:0 原始,1 滤波。
lo_filter_rat0 调试参数 计算低频运动判断权重时,差值需减去的数据比例参数。范围 [0.0, 16.0],默认 1。
lo_filter_thed0 调试参数 计算低频运动判断权重时,从差值中减去的数据偏移参数。范围 [0, 4095],默认 0。
成员名称 参数类型 说明
hi_filter_rat0 调试参数 计算高频运动第一权重时需减去的数据比例,范围 [0.0, 16.0],默认 1。
hi_filter_thed0 调试参数 计算高频运动判断第一权重时,从差值中减去的数据偏移,范围 [0, 4095],默认 256。
hi_filter_rat1 调试参数 计算高频运动判断第二权重时,从差值中减去的数据比例,范围 [0.0, 16.0],默认 1。
hi_filter_thed1 调试参数 计算高频运动判断第二权重时,从差值中减去的数据偏移,范围 [0, 4095],默认 1024。
hi_filter_abs_ctrl 调试参数 高频权重计算中取绝对值的位置:0 差值→中值→高斯→abs;1 差值→中值→abs→高斯。默认 0。
hi_filter_filt_bay 调试参数 计算高频权重时,高斯滤波是否分别计算 Bayer 四通道:1 分开计算,各通道做 3x3 高斯;0 不分通道,做 5x7 高斯。默认 0。
hi_filter_filt_avg 调试参数 计算高频权重时是否启用 5x5 滤波:0 不开,1 开,默认 0。
hi_filter_filt_mode 调试参数 计算高频权重的滤波模式,范围 [0, 4],默认 4。
guass_guide_coeff0 调试参数 高斯滤波算子,范围 [0, 64],默认 16,8,16,8。

9.4.4.16 RK_Bayertnr_Fix_V2_t

【说明】定义降噪模块手动模式寄存器配置。

【定义】

 typedef struct RK_Bayertnr_Fix_V2_s {
     // BAY3D_BAY3D_CTRL 0x2c00
     uint8_t bay3d_exp_sel;
     uint8_t bay3d_soft_st;
     uint8_t bay3d_soft_mode;
     uint8_t bay3d_bwsaving_en;
     uint8_t bay3d_loswitch_protect;
     uint8_t bay3d_glbpk_en;
     uint8_t bay3d_logaus3_bypass_en;
     uint8_t bay3d_logaus5_bypass_en;
     uint8_t bay3d_lomed_bypass_en;
     uint8_t bay3d_hichnsplit_en;
     uint8_t bay3d_hiabs_pssel;
     uint8_t bay3d_higaus_bypass_en;
     uint8_t bay3d_himed_bypass_en;
     uint8_t bay3d_lobypass_en;
     uint8_t bay3d_hibypass_en;
     uint8_t bay3d_bypass_en;
     uint8_t bay3d_en_i;
     // BAY3D_BAY3D_KALRATIO 0x2c04
     uint16_t bay3d_softwgt;
     uint16_t bay3d_hidif_th;
     // BAY3D_BAY3D_GLBPK2 0x2c08
     uint32_t bay3d_glbpk2;
     // BAY3D_BAY3D_WGTLMT 0x2c10
     uint16_t bay3d_wgtlmt;
     uint16_t bay3d_wgtratio;
     // BAY3D_BAY3D_SIG_X0  0x2c14 - 0x2c30
     uint16_t bay3d_sig0_x[16];
     // BAY3D_BAY3D_SIG0_Y0 0x2c34 - 0x2c50
     uint16_t bay3d_sig0_y[16];
     // BAY3D_BAY3D_SIG_X0  0x2c54 - 0x2c70
     uint16_t bay3d_sig1_x[16];
     // BAY3D_BAY3D_SIG1_Y0 0x2c74 - 0x2c90
     uint16_t bay3d_sig1_y[16];
     // BAY3D_BAY3D_SIG2_Y0 0x2c94 - 0x2cb0
     uint16_t bay3d_sig2_y[16];
     //BAY3D_BAY3D_LODIF_STAT0 0x2cb4 -0x2cb8
     uint64_t ro_sum_lodif;
     //BAY3D_BAY3D_LODIF_STAT0 0x2cbc -0x2cc0
     uint64_t ro_sum_hidif0;
     //BAY3D_BAY3D_MI_ST 0x2CC8
     uint8_t sw_bay3dmi_st_linemode;
     uint8_t sw_bay3d_mi2cur_linecnt;
 } RK_Bayertnr_Fix_V2_t;

【成员】

参数 位宽 参数说明
bay3d_soft_st 1 软件模式启动脉冲位,启动时写 1。
bay3d_soft_mode 1 软件模式使能位:1 开,0 关,默认 0x0。
bay3d_bwsaving_en 1 带宽优化使能位,仅非 HDR 有效:1 开,0 关,默认 0x0。
bay3d_loswitch_protect 1 目前不支持。
bay3d_glbpk_en 1 Bayer 时域降噪是否使用全局 PK:1 全局 PK,0 局部 PK,默认 1。
bay3d_logaus3_bypass_en 1 低频是否在后级亮度域做高斯滤波:1 不做,0 做,默认 0x0。
bay3d_logaus5_bypass_en 1 低频是否在前级 Bayer 域做高斯滤波:1 不做,0 做,默认 0x0。
bay3d_lomed_bypass_en 1 低频是否做中值滤波:1 不做,0 做,默认 0x0。
bay3d_hichnsplit_en 1 高频判断的高斯滤波域选择,仅开启高频运动判断时开启此位;1 Bayer 域,0 亮度域,默认 0x0。
参数 位宽 参数说明
bay3d_hiabs_pssel 1 高频判断中是否先取绝对值再做高斯滤波,仅开启高频运动判断时启用此位;1 做,0 不做,默认 0x0。
bay3d_higaus_bypass_en 1 高频是否做高斯滤波:1 不做,0 做,默认 0x0。
bay3d_himed_bypass_en 1 高频是否做中值滤波:1 不做,0 做,默认 0x0。
bay3d_lobypass_en 1 高频运动判断开关:1 关,0 开,默认 0x0。目前不支持动态修改,此位始终默认为 0。
bay3d_hibypass_en 1 高频运动判断开关:1 关,0 开,默认 0x0。
bay3d_bypass_en 1 Bayer 时域降噪旁路使能:1 开旁路,等效 Bayer3D 不处理;0 关旁路。默认 0。
bay3d_en_i 1 Bayer 时域降噪使能:1 开启,0 关闭,默认 0。
bay3d_softwgt 10 软阈值权重,越大阈值越大、保留噪声越多。小数 10bit,默认 0x100。
bay3d_hidif_th 16 统计高频差值数量的阈值,默认 0xffff。
bay3d_glbpk2 28 全局 PK 平方值,仅 pk_en 为 0 时使用,默认 0x800。
bay3d_wgtlmt 10 图像叠加权重限制值,小数 10 位,默认 0x380。
参数 位宽 参数说明
bay3d_wgtratio 10 叠加权重补偿比例系数,仅开启高频时有效;小数 10 位,默认 0x0。
bay3d_sig0_x0-15 16 噪声曲线 16 个亮度等级,配置应保证两值之差为 2 的幂。
bay3d_sig0_y0-15 14 噪声曲线的 16 个 sigma 等级,配置参数来自标定。
bay3d_sig1_x0-15 16 高低频噪声曲线 16 个亮度等级,配置应保证两值之差为 2 的幂。
bay3d_sig1_y0-15 14 高频噪声曲线 16 个 SIGMA 等级,参数由标定获得。
bay3d_sig2_y0-15 14 低频噪声曲线 16 个 sigma 等级,参数由标定获得。

9.4.4.17 rk_aiq_bayertnr_strength_v2_t

【说明】定义降噪模块降噪强度配置结构体。

【定义】

 typedef struct rk_aiq_bayertnr_strength_v2_s {
     rk_aiq_uapi_sync_t sync;
     float percent;
 } rk_aiq_bayertnr_strength_v2_t;

【成员】

成员名称 说明
sync 同步/异步模式选择,见概述/API 说明部分。
percent 降噪强度,范围 0.0–1.0。

9.4.4.18 rk_aiq_ynr_attrib_v3_t

【说明】定义降噪模块参数。

【定义】

 typedef struct rk_aiq_ynr_attrib_v3_s {
     rk_aiq_uapi_sync_t sync;
     Aynr_OPMode_V3_t eMode;
     Aynr_Auto_Attr_V3_t stAuto;
     Aynr_Manual_Attr_V3_t stManual;
 } rk_aiq_ynr_attrib_v3_t;

【成员】

成员名称 说明
sync 同步/异步模式选择,见概述/API 说明部分。
eMode YNR 降噪模块模式
stAuto YNR 降噪模块自动模式参数
stManual YNR 降噪模块手动模式参数

9.4.4.19 Aynr_OPMode_V3_t

【说明】定义降噪模块模式。

【定义】

 typedef enum Aynr_OPMode_V3_e {
     AYNRV3_OP_MODE_INVALID           = 0,
     AYNRV3_OP_MODE_AUTO              = 1,
     AYNRV3_OP_MODE_MANUAL            = 2,
     AYNRV3_OP_MODE_REG_MANUAL        = 3,
     AYNRV3_OP_MODE_MAX
 } Aynr_OPMode_V3_t;

【成员】

成员名称 说明
AYNRV3_OP_MODE_INVALID Y 域 YNR 降噪模块无效模式
AYNRV3_OP_MODE_AUTO Y 域 YNR 降噪模块自动模式
AYNRV3_OP_MODE_MANUAL Y 域 YNR 降噪模块手动模式算法设置
AYNRV3_OP_MODE_REG_MANUAL Y 域 YNR 降噪模块手动模式寄存器设置
AYNRV3_OP_MODE_MAX Y 域 YNR 模块模式最大值,为无效模式。

9.4.4.20 Aynr_Auto_Attr_V3_t

【说明】定义降噪模块自动属性。

【定义】

 typedef struct Aynr_Auto_Attr_V3_s
 {
     RK_YNR_Params_V3_t stParams;
     RK_YNR_Params_V3_Select_t stSelect;
 } Aynr_Auto_Attr_V3_t;

【成员】

成员名称 说明
stParams YNR 各 ISO 对应的算法属性参数
stSelect YNR 模块计算后的属性参数

9.4.4.21 Aynr_Manual_Attr_V3_t

【说明】定义降噪模块手动属性。

【定义】

 typedef struct Aynr_Manual_Attr_V3_s
 {
     RK_YNR_Params_V3_Select_t stSelect;
     RK_YNR_Fix_V3_t stFix;
 } Aynr_Manual_Attr_V3_t;

【成员】

成员名称 说明
stSelect 算法参数值
stFix YNNR 寄存器值

9.4.4.22 RK_YNR_Params_V3_t

【说明】定义 YNR 自动模式各 ISO 对应的算法属性参数。

【定义】

 typedef struct RK_YNR_Params_V3_s
 {
     int enable;
     char version[64];
     float iso[RK_YNR_V3_MAX_ISO_NUM];
     RK_YNR_Params_V3_Select_t arYnrParamsISO[RK_YNR_V3_MAX_ISO_NUM];
 } RK_YNR_Params_V3_t;

【成员】

成员名称 说明
enable YNR 模块使能开关
版本 YNR 模块版本号
iso 不同 ISO 档位对应不同调试参数,目前只支持 13 档。
RK_YNR_Params_V3_Select_t YYNR 模块算法参数

9.4.4.23 RK_YNR_Params_V3_Select_t

【说明】定义降噪模块手动模式算法属性。

【定义】

 typedef struct RK_YNR_Params_V3_Select_s
 {
     int enable;
     float lci;
     float hci;
     float sigma[YNR_V3_ISO_CURVE_POINT_NUM];
     short lumaPoint[YNR_V3_ISO_CURVE_POINT_NUM];
     float lo_lumaPoint[6];
     float lo_ratio[6];
     float hi_lumaPoint[6];
     float hi_ratio[6];
     // low frequency
     float rnr_strength[17];
     int ynr_bft3x3_bypass;
     int ynr_lbft5x5_bypass;
     int ynr_lgft3x3_bypass;
     int ynr_flt1x1_bypass;
     int ynr_sft5x5_bypass;
     float low_bf1;
     float low_bf2;
     float low_thred_adj;
     float low_peak_supress;
     float low_edge_adj_thresh;
     float low_lbf_weight_thresh;
     float low_center_weight;
     float low_dist_adj;
     float low_weight;
     float low_filt1_strength;
     float low_filt2_strength;
     float low_bi_weight;
     // high frequency
     float base_filter_weight1;
     float base_filter_weight2;
     float base_filter_weight3;
     float high_thred_adj;
     float high_weight;
     float high_direction_weight[8];
     float hi_min_adj;
     float hi_edge_thed;
     //local gain control
     float ynr_global_gain_alpha;
     float ynr_global_gain;
     float ynr_adjust_thresh;
     float ynr_adjust_scale;
 } RK_YNR_Params_V3_Select_t;

【成员】

成员名称 参数类型 说明
enable 调试参数 YNR 使能开关:1 开,0 关。
lci 标定数据 低频噪声 sigma 影响因子,越大则 sigma 越大、降噪越强。
hci 标定数据 高频噪声 sigma 影响因子,越大则 sigma 越大、降噪越强。
sigma 标定数据 噪声 sigma 曲线。
lumaPoint 标定数据 不同像素亮度对应不同噪声 SIGMA 曲线点,共 16 点。
rnr_strength 调试参数 以图像中心为圆心,沿半径 r 设置不同降噪强度,主要针对 LSC 噪声。范围 [0, 16.0],默认 1。
ynr_bft3x3_bypass 调试参数 内部子模块旁路:0 功能启用,1 旁路。通常启用全部子模块,这些值均设为 0。
ynr_lbft5x5_bypass 调试参数 内部子模块旁路:0 功能启用,1 旁路。通常启用全部子模块,这些值均设为 0。
ynr_lgft3x3_bypass 调试参数 内部子模块旁路:0 功能启用,1 旁路。通常启用全部子模块,这些值均设为 0。
ynr_flt1x1_bypass 调试参数 内部子模块旁路:0 功能启用,1 旁路。通常启用全部子模块,这些值均设为 0。
成员名称 参数类型 说明
ynr_sft5x5_bypass 调试参数 内部子模块旁路:0 功能启用,1 旁路。通常启用全部子模块,这些值均设为 0。
low_bf1 调试参数 原图 3x3 双边滤波强度,越大降噪越强。范围 [0.01, 32],默认 1。
low_bf2 调试参数 前帧小图 5x5 双边滤波强度,越大降噪越强。范围 [0.01, 32],默认 1。
low_thred_adj 调试参数 低频软阈值越大,低频降噪越强。范围 [0, 31],默认 0.5。
low_peak_supress 调试参数 孤立噪声去除强度,越小降噪越强。范围 [0, 1],默认 0.5。
low_edge_adj_thresh 调试参数 小图边缘检测调整因子阈值,限制调整因子最大值。越小降噪越强、图像越模糊。整数范围 [0, 1023],默认 7。
low_lbf_weight_thresh 调试参数 限制 5x5 双边滤波权重,越大低频降噪越弱。范围 [0.0, 1.0],默认 0.25。
low_center_weight 调试参数 5x5 双边滤波中心点权重,越小降噪越强。范围 [0,1],默认 0.5。
low_dist_adj 调试参数 双边滤波距离权重调整因子,越小降噪越强。范围 [0, 127.0],默认 8.0。
low_weight 调试参数 低频降噪结果权重,越大低频降噪越强。范围 [0, 1],默认 0.5。
成员名称 参数类型 说明
low_filt1_strength 调试参数 原图高斯滤波核权重,范围 [0,1.0],默认 0.7。
low_filt2_strength 调试参数 双边滤波结果的高斯滤波核权重,范围 [0,1.0],默认 0.85。
low_bi_weight 调试参数 软阈值处理使用的第一次双边滤波权重,越大降噪越强。范围 [0, 1],默认 0.3。
base_filter_weight1 调试参数 方向滤波器系数,通常很少需要调整。
high_thred_adj 调试参数 越大高频降噪越强。范围 0–31.0,默认 1.0。
high_weight 调试参数 高频降噪权重,表示保留高频分量比例,越小降噪越强。范围 0–1,默认 0.78。
high_direction_weight 调试参数 某方向值越大,沿该方向降噪越强。
hi_min_adj 调试参数 全部方差减去最小方差的比例,越大边缘越锐利。范围 0.0–1.0,默认 0.9。
hi_edge_thed 调试参数 阈值越小,高频降噪越强。整数范围为 0、255,默认值 100。
ynr_global_gain_alpha 调试参数 YNR 降噪局部模式与全局模式的插值强度配置。通常使用默认值,无需配置,全部采用局部增益方式。范围 [0.0 1.0],默认值 0。
ynr_global_gain 调试参数 YNR 降噪局部模式与全局模式的插值强度配置。通常使用默认值,无需配置,全部采用局部增益方式。增益范围 [0.0 64.0],默认值 1。
成员名称 参数类型 说明
ynr_adjust_thresh 调试参数 控制噪声大于 ynr_adjust_thresh 阈值时的降噪强度。运动区域噪声较大,设置适当阈值可增强运动区域的 YNR 降噪。范围 [0.0, 1.0],默认值 1。
ynr_adjust_scale 调试参数 控制噪声大于 ynr_adjust_thresh 阈值时的降噪强度。运动区域噪声较大,设置适当阈值可增强运动区域的 YNR 降噪。范围 [0, 16.0],默认值 1。
lo_lumaPoint / lo_ratio 调试参数 针对不同像素亮度,微调低频 Sigma。
hi_lumaPoint / hi_ratio 调试参数 针对不同像素亮度,微调高频 Sigma。

9.4.4.24 RK_YNR_Fix_V3_t

【说明】定义降噪模块手动模式寄存器配置。

【定义】

 typedef struct RK_YNR_Fix_V3_s {
     // YNR_2700_GLOBAL_CTRL (0x0000)
     uint8_t ynr_rnr_en;
     uint8_t ynr_gate_dis;
     uint8_t ynr_thumb_mix_cur_en;
     uint8_t ynr_global_gain_alpha;
     uint16_t ynr_global_gain;
     uint8_t ynr_flt1x1_bypass_sel;
     uint8_t ynr_sft5x5_bypass;
     uint8_t ynr_flt1x1_bypass;
     uint8_t ynr_lgft3x3_bypass;
     uint8_t ynr_lbft5x5_bypass;
     uint8_t ynr_bft3x3_bypass;
     uint8_t ynr_en;
     // YNR_2700_RNR_MAX_R  (0x0004)
     uint8_t ynr_local_gainscale;
     uint16_t ynr_rnr_max_r;
     // YNR_2700_RNR_MAX_R  (0x0008)
     uint16_t ynr_rnr_center_coorv;
     uint16_t ynr_rnr_center_coorh;
     // YNR_2700_RNR_MAX_R  (0x000c)
     uint8_t ynr_localgain_adj;
     uint16_t ynr_localgain_adj_thresh;
     // YNR_2700_LOWNR_CTRL0 (0x0010)
     uint16_t ynr_low_bf_inv[2];
     // YNR_2700_LOWNR_CTRL1  (0x0014)
     uint8_t ynr_low_peak_supress;
     uint16_t ynr_low_thred_adj;
     // YNR_2700_LOWNR_CTRL2 (0x0018)
     uint16_t ynr_low_dist_adj;
     uint16_t ynr_low_edge_adj_thresh;
     // YNR_2700_LOWNR_CTRL3 (0x001c)
     uint8_t ynr_low_bi_weight;
     uint8_t ynr_low_weight;
     uint16_t ynr_low_center_weight;
     // YNR_2700_HIGHNR_CTRL0 (0x0020)
     uint8_t ynr_hi_min_adj;
     uint16_t ynr_high_thred_adj;
     // YNR_2700_HIGHNR_CTRL1  (0x0024)
     uint8_t ynr_high_retain_weight;
     uint8_t ynr_hi_edge_thed;
     // YNR_2700_HIGHNR_BASE_FILTER_WEIGHT  (0x0028)
     uint8_t ynr_base_filter_weight[3];
     // YNR_2700_HIGHNR_BASE_FILTER_WEIGHT  (0x002c)
     uint32_t ynr_frame_full_size;
     uint16_t ynr_lbf_weight_thres;
     // YNR_2700_GAUSS1_COEFF  (0x0030)
     uint16_t ynr_low_gauss1_coeff[3];
     // YNR_2700_GAUSS2_COEFF  (0x0034)
     uint16_t ynr_low_gauss2_coeff[3];
     // YNR_2700_DIRECTION_W_0_3  (0x0038 - 0x003c)
     uint8_t ynr_direction_weight[8];
     // YNR_2700_SGM_DX_0_1 (0x0040 - 0x0060)
     uint16_t ynr_luma_points_x[17];
     // YNR_2700_LSGM_Y_0_1 (0x0070- 0x0090)
     uint16_t ynr_lsgm_y[17];
     // YNR_2700_HSGM_Y_0_1 (0x00a0- 0x00c0)
     uint16_t ynr_hsgm_y[17];
     // YNR_2700_RNR_STRENGTH03 (0x00d0- 0x00e0)
     uint16_t ynr_rnr_strength[17];
 } RK_YNR_Fix_V3_t;

【成员】

成员名称 位宽(整数位.小数位) 说明
ynr_low_bf_inv[0] 5.9 控制降噪强度。注意配置的是该值的倒数,因此值越小,降噪越强。512 表示 1 倍降噪强度,256 表示 2 倍。范围 [1, 16383]。
ynr_low_bf[1] 5.9 控制降噪强度。注意该寄存器配置值取倒数,因此值越小,降噪越强。512 表示 1 倍降噪,256 表示 2 倍降噪。
ynr_low_thred_adj 5.6 低频软阈值的调整强度;值越大,低频降噪越强。范围 [0, 2047]。
ynr_low_peak_supress 1.7 控制大幅孤立噪声的去除强度;值越大,去除越强。范围 [0, 128]。
ynr_low_edge_adj_thresh 11.0 小图边缘检测调整因子的阈值,用于限制该因子的最大值。范围 [1, 1024]。
ynr_low_center_weight 1.10 5x5 双边滤波的中心点权重;值越小,降噪越强。范围 [1, 1024]。
sw_ynr_lbf_weight_thres 10.0 用于限制 5x5 双边滤波值的权重;值越大,低频降噪越弱。范围 [0, 1023]。
ynr_low_dist_adj 7.2 双边滤波距离权重调整因子。范围 [1, 511]。
ynr_low_weight 1.7 低频降噪结果的权重;值越大,低频降噪越强。范围 [0, 128]。
ynr_low_gauss1_coeff[3] 1.8 原图高斯滤波的滤波核权重,范围 [0, 256]。
ynr_low_gauss2_coeff[3] 1.8 对双边滤波结果进行高斯滤波时的高斯滤波核权重,范围 [0, 256]。
成员名称 位宽(整数位.小数位) 说明
ynr_low_bi_weight 1.7 软阈值处理中第一次双边滤波的权重;值越大,降噪越强。范围 [0, 128]。
ynr_base_filter_weight[3] 1.6 方向滤波器系数。范围 [0, 64]。
ynr_high_thred_adj 5.6 值越大,高频降噪越强。范围 [0, 2047]。
ynr_high_retain_weight 1.7 高频降噪权重。注意该值表示保留的高频分量比例,因此值越大,降噪越弱。范围 [0, 128]。
ynr_direction_weight[8] 1.4 某方向的值越大,沿该方向的降噪越强。范围 [0,16]。
ynr_hi_min_adj 0.6 所有方差值减去最小方差值的比率;值越大,边缘越锐利。范围 [6,60]。
ynr_hi_edge_thed 10.0 阈值越小,高频降噪越强。范围 [0,1023]。
ynr_rnr_max_r 14.0 用于调整径向降噪强度,存储 1/((rows/2)^2+(cols/2)^2) 的值;前 9 位为尾数 M,后 5 位为指数 E。范围 [1, 16383]。
ynr_rnr_strength[17] 4.4 控制径向降噪强度,共 17 个数据点,分为 16 段,表示从图像中心到四角的降噪强度。范围 [0, 15]。
ynr_global_gain 6.4 外部配置的全局增益控制 YNR 整体降噪强度;值越大,降噪越强。范围 [0, 1023]。
成员名称 位宽(整数位.小数位) 说明
ynr_global_gain_alpha 1.3 控制增益模块传入的增益与外部配置增益的比例;值越大,使用的外部全局增益越多。范围 [0, 8]。
ynr_bft3x3_bypass 1 设为 1 时关闭 3x3 双边滤波。取值 0 或 1。
ynr_lbft5x5_bypass 1 设为 1 时关闭 5x5 双边滤波。取值 0 或 1。
ynr_lgft3x3_bypass 1 为 1 时关闭 3x3 高斯滤波。
ynr_flt1x1_bypass 1 为 1 时关闭低频软阈值处理。取值 0 或 1。
ynr_sft5x5_bypass 1 为 5 时关闭 1x5 高频降噪;取值范围为 0 或 1(原文如此,条件值与范围矛盾)。

9.4.4.25 rk_aiq_ynr_strength_v3_t

【说明】定义降噪模块降噪强度配置结构体。

【定义】

 typedef struct rk_aiq_ynr_strength_v3_s {
     rk_aiq_uapi_sync_t sync;
     float percent;
     bool strength_enable;
 } rk_aiq_ynr_strength_v3_t;

【成员】

成员名称 说明
sync 同步/异步模式选择,见概述/API 说明部分。
percent 降噪强度,范围 0.0–1.0。

9.4.4.26 rk_aiq_cnr_attrib_v2_t

【说明】定义降噪模块参数。

【定义】

 typedef struct rk_aiq_cnr_attrib_v2_s {
     rk_aiq_uapi_sync_t sync;
     AcnrV2_OPMode_t eMode;
     Acnr_Auto_Attr_V2_t stAuto;
     Acnr_Manual_Attr_V2_t stManual;
 } rk_aiq_cnr_attrib_v2_t;

【成员】

成员名称 说明
sync 同步/异步模式选择,见概述/API 说明部分。
eMode CNR 降噪模块模式
stAuto CNR 降噪模块自动模式参数
stManual CNR 降噪模块手动模式参数

9.4.4.27 AcnrV2_OPMode_t

【说明】定义降噪模块的模式属性。

【定义】

 typedef enum AcnrV2_OPMode_e {
     ACNRV2_OP_MODE_INVALID           = 0,
     ACNRV2_OP_MODE_AUTO              = 1,
     ACNRV2_OP_MODE_MANUAL            = 2,
     ACNRV2_OP_MODE_REG_MANUAL        = 3,
     ACNRV2_OP_MODE_MAX
 } AcnrV2_OPMode_t;

【成员】

成员名称 说明
ACNRV2_OP_MODE_INVALID UV 域 CNR 降噪模块无效模式
ACNRV2_OP_MODE_AUTO UV 域 CNR 降噪模块自动模式
ACNRV2_OP_MODE_MANUAL UV 域 CNR 降噪模块手动模式的算法设置
ACNRV2_OP_MODE_REG_MANUAL UV 域 CNR 降噪模块手动模式的寄存器设置
ACNRV2_OP_MODE_MAX UV 域 CNR 降噪模块模式最大值,为无效模式

9.4.4.28 Acnr_Auto_Attr_V2_t

【说明】定义降噪模块自动属性。

【定义】

 typedef struct Acnr_Auto_Attr_V2_s
 {
     all ISO params and select param
 RK_CNR_Params_V2_t stParams;
     RK_CNR_Params_V2_Select_t stSelect;
 } Acnr_Auto_Attr_V2_t;

【成员】

成员名称 说明
stParams CNR 模块各 ISO 对应的算法属性参数
stSelect CNR 模块计算属性参数

9.4.4.29 Acnr_Manual_Attr_V2_t

【说明】定义降噪模块手动属性。

【定义】

 typedef struct Acnr_Manual_Attr_V2_s
 {
     RK_CNR_Params_V2_Select_t stSelect;
 RK_CNR_Fix_V2_t stFix;
 } Acnr_Manual_Attr_V2_t;

【成员】

成员名称 说明
stSelect 算法参数值
stSelect 寄存器值

9.4.4.30 RK_CNR_Params_V2_t

【说明】定义降噪模块自动模式及各 ISO 对应的算法属性参数。

【定义】

 typedef struct RK_CNR_Params_V2_s
 {
     int enable;
     float iso[RK_CNR_V2_MAX_ISO_NUM];
     int hf_bypass[RK_CNR_V2_MAX_ISO_NUM];
     int lf_bypass[RK_CNR_V2_MAX_ISO_NUM];
     // gain
     float global_gain[RK_CNR_V2_MAX_ISO_NUM];
     float global_gain_alpha[RK_CNR_V2_MAX_ISO_NUM];
     float local_gain_scale[RK_CNR_V2_MAX_ISO_NUM];
     // strength adj by gain
     int gain_adj_strength_ratio[RK_CNR_V2_MAX_ISO_NUM]
 [RKCNR_V2_SGM_ADJ_TABLE_LEN];
     //
     float color_sat_adj[RK_CNR_V2_MAX_ISO_NUM];
     float color_sat_adj_alpha[RK_CNR_V2_MAX_ISO_NUM];
     // step1
     // median filter
     float hf_spikes_reducion_strength[RK_CNR_V2_MAX_ISO_NUM];
     // bilateral filter
     float hf_denoise_strength[RK_CNR_V2_MAX_ISO_NUM];
     float hf_color_sat[RK_CNR_V2_MAX_ISO_NUM];
     float hf_denoise_alpha[RK_CNR_V2_MAX_ISO_NUM];
     int  hf_bf_wgt_clip[RK_CNR_V2_MAX_ISO_NUM];
     // step2
     // median filter
     float thumb_spikes_reducion_strength[RK_CNR_V2_MAX_ISO_NUM];
     // bilateral filter
     float thumb_denoise_strength[RK_CNR_V2_MAX_ISO_NUM];
     float thumb_color_sat[RK_CNR_V2_MAX_ISO_NUM];
     // step3
     // bilateral filter
     float lf_denoise_strength[RK_CNR_V2_MAX_ISO_NUM];
     float lf_color_sat[RK_CNR_V2_MAX_ISO_NUM];
     float lf_denoise_alpha[RK_CNR_V2_MAX_ISO_NUM];
     // bilateral filter kernels
     float kernel_5x5[5];
 } RK_CNR_Params_V2_t;

【成员】

参数名称 参数类型 参数说明
Enable 调试参数 模块使能开关:1 开启,0 关闭。
iso 调试参数 不同 ISO 档位对应不同调试参数。目前仅支持 13 个档位。
hf_bypass 调试参数 高频降噪旁路。0:不旁路;1:旁路。
lf_bypass 调试参数 低频降噪旁路。0:不旁路;1:旁路。
global_gain 调试参数 CNR 局部与全局降噪模式的插值强度配置。通常保留默认值,无需配置,采用局部增益方式。范围 0.0 至 64.0,默认值 1。
global_gain_alpha 调试参数 CNR 局部与全局降噪模式的插值强度配置。通常保留默认值,无需配置,采用局部增益方式。范围 0.0 1.0,默认值 0。
global_gain_scale 调试参数 放大 CNR 降噪强度,通常使用默认值,不宜调整。范围 0、128,默认值 1。
gain_adj_strength_ratio 调试参数 根据局部增益调整滤波强度;值越小,去噪越强。范围 [1, 255],默认值 255。
color_sat_adj 调试参数 基于梯度调整的双边滤波 UV 比例,1~255。值越小,色噪去除越好。范围 [1, 255],默认值 40。
color_sat_adj_alpha 调试参数 color_sat_adj 调整比例;值越大,色噪去除越好。范围 0、1.0,默认值 0.8。
hf_spikes_reducion_strength 调试参数 高频中值滤波强度;值越大,中值滤波越强。范围 0、1.0,默认值 0.5。
参数名称 参数类型 参数说明
hf_denoise_strength 调试参数 高频双边滤波强度;值越大,色噪去除越好。范围 [1, 1023],默认值 10。
hf_color_sat 调试参数 高频双边滤波的 UV 缩放因子;值越小,色彩饱和度下降越多。范围 0.0、7.9,默认值 1.5。
hf_denoise_alpha 调试参数 高频双边滤波中心点权重。范围 0.0、1.0,默认值 0。
hf_bf_wgt_clip 调试参数 高频最小降噪强度;值越大,降噪越强。范围 0、255,默认值 0。
thumb_spikes_reducion_strength 调试参数 缩略图中值滤波强度;值越大,中值滤波越强。范围 0.0、1.0,默认值 0.5。
thumb_denoise_strength 调试参数 缩略图双边滤波强度;值越大,色噪去除越好。范围 [1, 1023],默认值 8。
thumb_color_sat 调试参数 缩略图双边滤波的 UV 缩放因子,色彩饱和度下降更多(原文未说明增减方向)。范围 0.0、7.9,默认值 4。
lf_denoise_strength 调试参数 低频双边滤波强度;值越大,色噪去除越好。范围 [1, 1023],默认值 8。
lf_color_sat 调试参数 低频双边滤波的 UV 比例因子;值越小,色彩饱和度下降越多。范围 0.0、7.9,默认值 4。
lf_denoise_alpha 调试参数 低频双边滤波中心点权重。范围 0.0、1.0,默认值 0.5。
kernel_5x5 调试参数 5x5 双边滤波核。

9.4.4.31 RK_CNR_Params_V2_Select_t

【说明】定义降噪模块手动模式算法属性。

【定义】

 typedef struct RK_CNR_Params_V2_Select_s
 {
     int enable;
     // bypass
     int hf_bypass;
     int lf_bypass;
     // gain
     // gain
     float global_gain;
     float global_gain_alpha;
     float local_gain_scale;
     // strength adj by gain
     int gain_adj_strength_ratio[RKCNR_V2_SGM_ADJ_TABLE_LEN];
     //
     float color_sat_adj;
     float color_sat_adj_alpha;
     // step1
     // median filter
     float hf_spikes_reducion_strength;
     // bilateral filter
     float hf_denoise_strength;
     float hf_color_sat;
     float hf_denoise_alpha;
     int hf_bf_wgt_clip;
     // step2
     // median filter
     float thumb_spikes_reducion_strength;
     // bilateral filter
     float thumb_denoise_strength;
     float thumb_color_sat;
     // step3
     // bilateral filter
     float lf_denoise_strength;
     float lf_color_sat;
     float lf_denoise_alpha;
     // bilateral filter kernels
     float kernel_5x5[5];
 } RK_CNR_Params_V2_Select_t;

【成员】

参数名称 参数类型 参数说明
Enable 调试参数 模块使能开关:1 开启,0 关闭。
iso 调试参数 不同 ISO 档位对应不同调试参数。目前仅支持 13 个档位。
hf_bypass 调试参数 高频降噪旁路。0:不旁路;1:旁路。
lf_bypass 调试参数 低频降噪旁路。0:不旁路;1:旁路。
global_gain 调试参数 CNR 局部与全局降噪模式的插值强度配置。通常保留默认值,无需配置,采用局部增益方式。范围 0.0 至 64.0,默认值 1。
global_gain_alpha 调试参数 CNR 局部与全局降噪模式的插值强度配置。通常保留默认值,无需配置,采用局部增益方式。范围 0.0 1.0,默认值 0。
global_gain_scale 调试参数 放大 CNR 降噪强度,通常使用默认值,不宜调整。范围 0、128,默认值 1。
gain_adj_strength_ratio 调试参数 根据局部增益调整滤波强度;值越小,去噪越强。范围 [1, 255],默认值 255。
color_sat_adj 调试参数 基于梯度调整的双边滤波 UV 比例,1~255。值越小,色噪去除越好。范围 [1, 255],默认值 40。
color_sat_adj_alpha 调试参数 color_sat_adj 调整比例;值越大,色噪去除越好。范围 0、1.0,默认值 0.8。
hf_spikes_reducion_strength 调试参数 高频中值滤波强度;值越大,中值滤波越强。范围 0、1.0,默认值 0.5。
参数名称 参数类型 参数说明
hf_denoise_strength 调试参数 高频双边滤波强度;值越大,色噪去除越好。范围 [1, 1023],默认值 10。
hf_color_sat 调试参数 高频双边滤波的 UV 缩放因子;值越小,色彩饱和度下降越多。范围 0.0、7.9,默认值 1.5。
hf_denoise_alpha 调试参数 高频双边滤波中心点权重。范围 0.0、1.0,默认值 0。
hf_bf_wgt_clip 调试参数 高频最小降噪强度;值越大,降噪越强。范围 0、255,默认值 0。
thumb_spikes_reducion_strength 调试参数 缩略图中值滤波强度;值越大,中值滤波越强。范围 0.0、1.0,默认值 0.5。
thumb_denoise_strength 调试参数 缩略图双边滤波强度;值越大,色噪去除越好。范围 [1, 1023],默认值 8。
thumb_color_sat 调试参数 缩略图双边滤波的 UV 缩放因子,色彩饱和度下降更多(原文未说明增减方向)。范围 0.0、7.9,默认值 4。
lf_denoise_strength 调试参数 低频双边滤波强度;值越大,色噪去除越好。范围 [1, 1023],默认值 8。
lf_color_sat 调试参数 低频双边滤波的 UV 比例因子;值越小,色彩饱和度下降越多。范围 0.0、7.9,默认值 4。
lf_denoise_alpha 调试参数 低频双边滤波中心点权重。范围 0.0、1.0,默认值 0.5。
kernel_5x5 调试参数 5x5 双边滤波核。

9.4.4.32 RK_CNR_Fix_V2_t

【说明】定义降噪模块手动模式寄存器配置。

【定义】

 typedef struct RK_CNR_Fix_V2_s {
     //ISP_CNR_2800_CTRL
     uint8_t cnr_thumb_mix_cur_en;
     uint8_t cnr_lq_bila_bypass;
     uint8_t cnr_hq_bila_bypass;
     uint8_t cnr_exgain_bypass;
     uint8_t cnr_en_i;
     // ISP_CNR_2800_EXGAIN
     uint8_t cnr_global_gain_alpha;
     uint16_t cnr_global_gain;
     // ISP_CNR_2800_GAIN_PARA
     uint8_t cnr_gain_iso;
     uint8_t cnr_gain_offset;
     uint8_t cnr_gain_1sigma;
     // ISP_CNR_2800_GAIN_UV_PARA
     uint8_t cnr_gain_uvgain1;
     uint8_t cnr_gain_uvgain0;
     // ISP_CNR_2800_LMED3
     uint8_t cnr_lmed3_alpha;
     // ISP_CNR_2800_LBF5_GAIN
     uint8_t cnr_lbf5_gain_y;
     uint8_t cnr_lbf5_gain_c;
     // ISP_CNR_2800_LBF5_WEITD0_4
     uint8_t cnr_lbf5_weit_d[5];
     // ISP_CNR_2800_HMED3
     uint8_t cnr_hmed3_alpha;
     // ISP_CNR_2800_HBF5
     uint8_t cnr_hbf5_weit_src;
     uint8_t cnr_hbf5_min_wgt;
     uint16_t cnr_hbf5_sigma;
     // ISP_CNR_2800_LBF3
     uint8_t cnr_lbf5_weit_src;
     uint16_t cnr_lbf3_sigma;
     //ISP_CNR_2800_SIGMA0-SIGMA3
     uint8_t cnr_sigma_y[13];
 } RK_CNR_Fix_V2_t;

【成员】

参数名称 参数说明
cnr_thumb_mix_cur_en 当前帧缩略图与前一图像混合的使能信号:1’b1:使能混合;1’b0:禁用混合。该项为读回的显示寄存器。
cnr_lq_bila_bypass 低频双边 3x3 滤波旁路使能:1’b1:使能旁路,此 3x3 滤波器的 out_data 等于 in_data;1’b0:禁用旁路。该项为读回的显示寄存器。
cnr_hq_bila_bypass 高频 5x5 双边滤波旁路信号:1:使能旁路,此 5x5 滤波器的 out_data 等于 in_data;0:禁用旁路。该项为读回的显示寄存器。
cnr_exgain_bypass sw_cnr_exgain_bypass 外部增益旁路使能:1:使能旁路,外部增益固定为 sw_cnr_egain_mux;0:禁用旁路,采用外部增益。当前版本不支持禁用旁路。该项为读回的显示寄存器。
cnr_en_i CNR 模块使能信号:1:使能;0:禁用。
cnr_global_gain CNR 局部与全局降噪模式的插值强度配置。通常保留默认值,无需配置,采用局部增益方式。范围 0.0 至 64.0,默认值 1。
cnr_global_gain_alpha CNR 局部与全局降噪模式的插值强度配置。通常保留默认值,无需配置,采用局部增益方式。范围 0.0 1.0,默认值 0。
cnr_gain_iso 放大外部增益,范围 0~128。
cnr_gain_offset 增益校准中低通滤波器的增益偏移,范围 0~16。
cnr_gain_1sigma 放大增益校准中高通滤波器的输出数据。
cnr_gain_uvgain1 uvgain 参数 1
cnr_gain_uvgain0 uvgain 参数 0
cnr_lmed3_alpha 低频中值滤波中 in_data 的权重,范围 0~16。
cnr_lbf5_gain_y; lbf5x5 双边滤波器的 Y 增益。
cnr_lbf5_gain_c; lbf5x5 双边滤波器的 UV 增益。
cnr_lbf5_weit_d[0] pix12 的空间权重,范围 1~128。
参数名称 参数说明
cnr_lbf5_weit_d[1] pix7,11,13,17 的空间权重,范围 0~128。
cnr_lbf5_weit_d[2] pix6,8,16,18 的空间权重,范围 0~128。
cnr_lbf5_weit_d[3] 距离为 4 或 5 时的空间权重,范围 0~128。
cnr_lbf5_weit_d[4] pix0,4,20,24 的空间权重,范围 0~128。
cnr_hmed3_alpha 高频中值滤波中 in_data 的权重,范围 0~16。
cnr_hbf5_weit_src hbf5x5 的 in_data 权重,范围 0~128。
cnr_hbf5_min_wgt hbf5x5 weit_r 下限。
cnr_hbf5_sigma hbf5x5 的 Sigma 值。
cnr_lbf5_weit_src lbf3x3 的 in_data 权重,范围 0~128。
cnr_lbf3_sigma lbf3x3 的 sigma 值。

9.4.4.33 rk_aiq_cnr_strength_v2_t

【说明】定义降噪模块降噪强度配置结构体。

【定义】

 typedef struct rk_aiq_cnr_strength_v2_s {
     rk_aiq_uapi_sync_t sync;
     float percent;
 } rk_aiq_cnr_strength_v2_t;

【成员】

成员名称 说明
sync 同步/异步模式选择,见概述/API 说明部分。
percent 降噪强度,范围 0.0–1.0。

9.5 BLC

9.5.1 功能说明

9.5.2 功能级 API 参考

9.5.2.1 rk_aiq_user_api2_ablc_SetAttrib

【说明】设置 BLC 参数属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_ablc_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_blc_attrib_t *attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr BLC 参数属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ablc.h, RkAiqHandleInt.h, rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

9.5.2.2 rk_aiq_user_api2_ablc_GetAttrib

【说明】获取 BLC 参数属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_ablc_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_blc_attrib_t *attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr BLC 参数属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_ablc.h, RkAiqHandleInt.h, rk_aiq_user_api2_sysctl.h

库文件:librkaiq.so

9.5.3 模块级 API 数据类型

9.5.3.1 rk_aiq_blc_attrib_t

【说明】BLC 模块参数。

【定义】

 typedef struct rk_aiq_blc_attrib_s {
     rk_aiq_uapi_sync_t sync;
     AblcOPMode_t eMode;
     AblcParams_t stBlc0Auto;
     AblcParams_t stBlc1Auto;
     AblcManualAttr_t stBlc0Manual;
     AblcManualAttr_t stBlc1Manual;
 } rk_aiq_blc_attrib_t;

【成员】

成员名称 说明
sync 同步/异步模式选择,见概述/API 说明部分。
eMode BLC 模块模式
stBlc0Auto blc0 自动模式参数
stBlc0Manual blc0 手动模式参数
stBlc1Auto blc1 自动模式参数
stBlc1Manual blc1 手动模式参数

9.5.3.2 AblcOPMode_t

【说明】定义降噪模块的模式属性。

【定义】

 typedef enum AblcOPMode_e {
     ABLC_OP_MODE_OFF         = 0,
     ABLC_OP_MODE_AUTO             = 1,
     ABLC_OP_MODE_MANUAL           = 2,
     ABLC_OP_MODE_MAX
 } AblcOPMode_t;

【成员】

成员名称 说明
ABLC_OP_MODE_OFF BLC 模块无效模式
ABLC_OP_MODE_AUTO BLC 模块自动模式
ABLC_OP_MODE_MANUAL BLC 模块手动模式算法设置
ABLC_OP_MODE_MAX BLC 模块模式最大值,为无效模式。

9.5.3.3 AblcParams_t

【说明】BLC 模块自动模式参数。

【定义】

 typedef struct AblcParams_s {
     bool enable;
     int len;
     float* iso;
     float* blc_r;
     float* blc_gr;
     float* blc_gb;
     float* blc_b;
 } AblcParams_t;

【成员】

成员名称 说明
enable 模块使能开关:1:使能;0:禁用。
len iso 对应的数组长度
iso ISO 档位
blc_r 不同 ISO 对应的 BLC 值,数组指针。
blc_gr 不同 ISO 对应的 BLC 值,数组指针。
blc_gb 不同 ISO 对应的 BLC 值,数组指针。
blc_b 不同 ISO 对应的 BLC 值,数组指针。

9.5.3.4 AblcManualAttr_t

【说明】BLC 模块手动模式参数。

【定义】

 typedef struct AblcSelect_s {
     bool enable;
     short int blc_r;
     short int blc_gr;
     short int blc_gb;
     short int blc_b;
 } AblcSelect_t;
 typedef AblcSelect_t AblcManualAttr_t;

【成员】

成员名称 说明
enable 模块使能开关:1:使能;0:禁用。
blc_r BLC 模块 R 通道属性
blc_gr BLC 模块 gr 通道属性
blc_gb BLC 模块 GB 通道属性
blc_b BLC 模块 B 通道属性

9.6 去雾与增强

9.6.1 功能说明

去雾与增强包含 2 种模式:

去雾通过动态改变图像对比度和亮度来增强图像。

增强图像局部区域的对比度。

去雾和增强互斥。

9.6.2 功能级 API 参考

9.6.2.1 rk_aiq_uapi2_setDehazeModuleEnable

【说明】

设置去雾模块开关,控制 stAuto.DehazeTuningPara.Enable 或 stManual.Enable(根据当前 API 模式自动修改)。

【语法】

 XCamReturn rk_aiq_uapi2_setDehazeModuleEnable(const rk_aiq_sys_ctx_t* ctx, bool
 on);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
on 开关功能。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,详见错误码表。

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.6.2.2 rk_aiq_uapi2_setDehazeEnable

【说明】

设置去雾功能开关,控制 stAuto.DehazeTuningPara.dehaze_setting.en 或 stManual.dehaze_setting.en(根据当前 API 模式自动修改)。

【语法】

 XCamReturn rk_aiq_uapi2_setDehazeEnable(const rk_aiq_sys_ctx_t* ctx, bool on);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
on 开关功能。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,详见错误码表。

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.6.2.3 rk_aiq_uapi2_setMDehazeStrth

【说明】

设置手动去雾强度,以 50 为基准;大于 50 增强去雾,小于 50 减弱去雾。

DEHAZE_API_AUTO 和 DEHAZE_API_MANUAL 均设置为 API 模式。

使用此 API 前需确保去雾功能生效,或先调用 rk_aiq_uapi2_setDehazeModuleEnable 和 rk_aiq_uapi2_setDehazeEnable(流程见 sample_adehaze_module.cpp 的 Case 6)。

【语法】

 XCamReturn rk_aiq_uapi2_setMDehazeStrth(const rk_aiq_sys_ctx_t* ctx, unsigned int
 level);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
level 等级,范围 [1,100],默认值 50,精度 1。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.6.2.4 rk_aiq_uapi2_getMDehazeStrth

【说明】

获取手动去雾强度。

【语法】

 XCamReturn rk_aiq_uapi2_getMDehazeStrth(const rk_aiq_sys_ctx_t* ctx, unsigned
 int* level);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
level 等级,范围 [1,100],默认值 50,精度 1。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.6.2.5 rk_aiq_uapi2_setEnhanceEnable

【说明】

设置去雾功能开关,控制 stAuto.DehazeTuningPara.enhance_setting.en 或 stManual.enhance_setting.en(根据当前 API 模式自动修改;原文称 Dehaze)。

【语法】

 XCamReturn rk_aiq_uapi2_setEnhanceEnable(const rk_aiq_sys_ctx_t* ctx, bool on);

【参数】

返回值 说明 输入/输出
ctx AIQ 上下文指针 输入
on 开关功能。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.6.2.6 rk_aiq_uapi2_setMEnhanceStrth

【说明】

设置手动对比度增强强度,以 50 为基准;大于 50 增强对比度,小于 50 降低对比度。

DEHAZE_API_AUTO 和 DEHAZE_API_MANUAL 均设置为 API 模式。

使用此 API 前需确保增强功能生效,或先调用 rk_aiq_uapi2_setDehazeModuleEnable 和 rk_aiq_uapi2_setEnhanceEnable(流程见 sample_adehaze_module.cpp 的 Case 9)。

【语法】

 XCamReturn rk_aiq_uapi2_setMEnhanceStrth(const rk_aiq_sys_ctx_t* ctx, unsigned
 int level);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
level 等级,范围 [1,100],默认值 50,精度 1。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.6.2.7 rk_aiq_uapi2_getMEnhanceStrth

【说明】

获取手动对比度增强强度。

【语法】

 XCamReturn rk_aiq_uapi2_getMEnhanceStrth(const rk_aiq_sys_ctx_t* ctx, unsigned
 int *level);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
level 等级,范围 [1,100],默认值 50,精度 1。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.6.3 模块级 API 参考

9.6.3.1 rk_aiq_user_api2_adehaze_v12_setSwAttrib

【说明】

设置去雾参数。

【语法】

 XCamReturn  rk_aiq_user_api2_adehaze_setSwAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 const adehaze_sw_v2_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 去雾参数 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

9.6.3.2 rk_aiq_user_api2_adehaze_getSwAttrib

【说明】

获取当前去雾参数。

【语法】

 XCamReturn  rk_aiq_user_api2_adehaze_getSwAttrib(const rk_aiq_sys_ctx_t*
 sys_ctx,adehaze_sw_v2_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 去雾参数 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

9.6.4 模块级 API 数据类型

9.6.4.1 dehaze_api_mode_t

【说明】定义去雾模块工作模式。

【定义】

 typedef enum dehaze_api_mode_e {
     DEHAZE_API_AUTO   = 0,
     DEHAZE_API_MANUAL = 1,
 } dehaze_api_mode_t;

【成员】

成员名称 说明
DEHAZE_API_AUTO 自动去雾模式
DEHAZE_API_MANUAL 手动去雾模式

9.6.4.2 DehazeDataV21_t

【说明】定义自动去雾调试参数属性。

【定义】

 typedef struct DehazeDataV21_s{
     float* EnvLv;
     int    EnvLv_len;
     float* dc_min_th;
     int    dc_min_th_len;
     float* dc_max_th;
     int    dc_max_th_len;
     float* yhist_th;
     int    yhist_th_len;
     float* yblk_th;
     int    yblk_th_len;
     float* dark_th;
     int    dark_th_len;
     float* bright_min;
     int    bright_min_len;
     float* bright_max;
     int    bright_max_len;
     float* wt_max;
     int    wt_max_len;
     float* air_min;
     int    air_min_len;
     float* air_max;
     int    air_max_len;
     float* tmax_base;
     int    tmax_base_len;
     float* tmax_off;
     int    tmax_off_len;
     float* tmax_max;
     int    tmax_max_len;
     float* cfg_wt;
     int    cfg_wt_len;
     float* cfg_air;
     int    cfg_air_len;
     float* cfg_tmax;
     int    cfg_tmax_len;
     float* dc_weitcur;
     int    dc_weitcur_len;
     float* bf_weight;
     int    bf_weight_len;
     float* range_sigma;
     int    range_sigma_len;
     float* space_sigma_pre;
     int    space_sigma_pre_len;
     float* space_sigma_cur;
     int    space_sigma_cur_len;
 } DehazeDataV21_t;

【成员】

成员名 说明
EnvLv 环境亮度
EnvLv_len EnvLv 数组长度
dc_min_th WT 自适应统计范围为 [16, 120],默认值 64。
dc_min_th_len dc_min_th 数组长度
dc_max_th WT 自适应高曝光区域统计范围为 [170, 255],默认值 192。
dc_max_th_len dc_max_th 数组长度
yhist_th Y 分量高曝光区域统计范围为 [170, 255],默认值 249。
yhist_th_len yhist_th 数组长度
yblk_th Y 分量块数量比例阈值为 0.002、0.01,默认值 0.002。
yblk_th_len yblk_th 数组长度
dark_th WT 自适应 Y 分量块的最小阈值,范围 [230, 250],默认值 250。
dark_th_len dark_th 数组长度
bright_min AIR 自适应阈值的最小值,范围 160 至 200,默认值 180。
bright_min_len bright_min 数组长度
bright_max AIR 自适应阈值的最大值,范围 210 至 250,默认值 240。
bright_max_len bright_max 数组长度
wt_max WT 最大值为 0.75、0.9,默认值 0.9。
wt_max_len wt_max 数组长度
air_min AIR 自适应最小值,范围 200 至 220,默认值 200。
air_min_len air_min 数组长度
air_max AIR 自适应最大值为 230、250,默认值 250。
air_max_len air_max 数组长度
tmax_base tmax 默认值为 125,对应配置如下:200 (131)、210 (125)、220 (119)、230 (114)、240 (109)、250 (105),推荐 131-105。
成员名 说明
tmax_base_len tmax_base 数组长度
tmax_off tmax 自适应固定值,范围 [0.1, 0.5],默认值 0.1。
tmax_off_len tmax_off 数组长度
tmax_max tmax 最大值为 0.1、0.5,默认值 0.5。
tmax_max_len tmax_max 数组长度
cfg_wt 软件配置的 wt,即图像去雾强度,范围 [0, 1],默认值 0.8。
cfg_wt_len cfg_wt 数组长度
cfg_air 软件配置的 air,即大气光系数,范围 [0, 255],默认值 210。
cfg_air_len cfg_air 数组长度
cfg_tmax 软件配置的 tmax,即去雾最大值,范围 [0, 1],默认值 0.2。
cfg_tmax_len cfg_tmax 数组长度
bf_weight 两个双边滤波器的合成权重,范围 [0, 1],默认值 0.5。
bf_weight_len bf_weight 数组长度
dc_weitcur 暗通道部分权重,范围 [0, 1];原文提到默认值但未给出数值。
dc_weitcur_len dc_weitcur 数组长度
range_sigma 双边滤波值域 sigma,范围 [0, 1],默认值 0.4。
range_sigma_len range_sigma 数组长度
space_sigma_pre 以 IIR 数据为参考时的双边滤波空间域 sigma,范围 [0, 1],默认值 0.4。
space_sigma_pre_len space_sigma_pre 数组长度
space_sigma_cur 以当前数据为参考时的双边滤波空间域 sigma,范围 [0, 1],默认值 0.8。
space_sigma_cur_len space_sigma_cur 数组长度

9.6.4.3 Dehaze_Setting_V21_t

【说明】定义自动去雾功能参数。

【定义】

 typedef struct Dehaze_Setting_V21_s{
     bool            en;
     bool            air_lc_en;
     float           stab_fnum;
     float           sigma;
     float           wt_sigma;
     float           air_sigma;
     float           tmax_sigma;
     float           pre_wet;
     DehazeDataV21_t DehazeData;
 } Dehaze_Setting_V21_t;

【成员】

成员名称 说明
en 开关功能
air_lc_en 是否使用 Airlight Base 在 Airlight 上切换最小值(原文表述不清)。
stab_fnum 帧稳定的最大值。
sigma IIR 控制的 sigma。
wt_sigma 帧间 WT 滤波系数。
air_sigma 帧间 AIR 滤波系数。
tmax_sigma 帧间 Tmax 滤波系数。
pre_wet 参考数据 IIR 滤波因子。
DehazeData 去雾调试参数。

9.6.4.4 EnhanceDataV21_t

【说明】定义自动增强调试参数属性。

【定义】

 typedef struct EnhanceDataV21_s{
     float* EnvLv;
     int    EnvLv_len;
     float* enhance_value;
     int    enhance_value_len;
     float* enhance_chroma;
     int    enhance_chroma_len;
 } EnhanceDataV21_t;

【成员】

成员名称 说明
EnvLv 环境亮度
EnvLv_len 环境亮度数组长度。
enhance_value 通用对比度强度,范围 [0,16],推荐范围 [1, 2]。
enhance_value_len enhance_value 数组长度
enhance_chroma 色度增强调整参数,范围 [0, 16],推荐范围 [1, 2]。
enhance_chroma_len enhance_chroma 数组长度

9.6.4.5 Enhance_Setting_V21_t

【说明】定义自动增强功能参数属性。

【定义】

 typedef struct Enhance_Setting_V21_s{
     bool             en;
     float            enhance_curve[CALIBDB_ADEHAZE_ENHANCE_CURVE_KNOTS_NUM];
     EnhanceDataV21_t EnhanceData;
 } Enhance_Setting_V21_t;

【成员】

成员名称 说明
en 增强功能开关。0:关闭;1:开启。
enhance_curve 低频曲线。
EnhanceData 增强调试参数。

9.6.4.6 Hist_setting_V21_t

【说明】定义自动 hist 调试参数属性。

【定义】

 typedef struct HistDataV21_s{
     float* EnvLv;
     int    EnvLv_len;
     float* hist_gratio;
     int    hist_gratio_len;
     float* hist_th_off;
     int    hist_th_off_len;
     float* hist_k;
     int    hist_k_len;
     float* hist_min;
     int    hist_min_len;
     float* hist_scale;
     int    hist_scale_len;
     float* cfg_gratio;
     int    cfg_gratio_len;
 } HistDataV21_t;

【成员】

成员名称 说明
EnvLv 环境亮度
EnvLv_len EnvLv 数组长度
hist_gratio 直方图拉伸倍数、直方图均衡化控制系数,范围 [0, 32]。
hist_gratio_len hist_gratio 数组长度
hist_th_off 直方图统计阈值,范围 0 至 255,默认值 64。
hist_th_off_len hist_th_off 数组长度
hist_k 直方图自适应阈值放大倍数,范围 0 至 7,取值为 2。
hist_k_len hist_k 数组长度
hist_min 直方图统计阈值最小值,原文写范围为“0,2 to 0.016”,保留待核对。
hist_min_len hist_min 数组长度
hist_scale 直方图均衡化控制系数,范围 [0, 32]。
hist_scale_len hist_scale 数组长度
cfg_gratio 软件配置的直方图拉伸倍数、直方图均衡化控制系数,范围 [0, 32]。
cfg_gratio_len cfg_gratio 数组长度

9.6.4.7 Hist_setting_V21_t

【说明】定义自动 hist 功能参数属性。

【定义】

 typedef struct Hist_setting_V21_s{
     bool          en;
     bool          hist_para_en;
     HistDataV21_t HistData;
 } Hist_setting_V21_t;

【成员】

成员名称 说明
en Hist 功能开关。
hist_para_en 直方图拉伸控制开关。
HistData hist 调试参数。

9.6.4.8 CalibDbDehazeV21_t

【说明】定义自动去雾模块调试参数属性。

【定义】

 typedef struct CalibDbDehazeV21_s{
     bool                  Enable;
     float                 cfg_alpha;
     float                 ByPassThr;
     Dehaze_Setting_V21_t  dehaze_setting;
     Enhance_Setting_V21_t enhance_setting;
     Hist_setting_V21_t    hist_setting;
 } CalibDbDehazeV21_t;

【成员】

成员名称 说明
Enable 开关功能
cfg_alpha 手动软件配置比例,范围 0、1,默认值 1,精度 0.01。
dehaze_setting 自动去雾功能参数。
enhance_setting 自动增强功能参数。
hist_setting 自动 hist 功能参数

9.6.4.9 CalibDbV2_dehaze_v21_t

【说明】定义自动去雾模块属性。

【定义】

 typedef struct CalibDbV2_dehaze_V21_s{
     CalibDbDehazeV21_t DehazeTuningPara;
 } CalibDbV2_dehaze_V21_t;

【成员】

成员名称 说明
DehazeTuningPara 自动去雾模块调试参数

9.6.4.10 mDehazeDataV21_t

【说明】定义手动 DehazeData 属性。

【定义】

 typedef struct mDehazeDataV21_s {
     float dc_min_th;
     float dc_max_th;
     float yhist_th;
     float yblk_th;
     float dark_th;
     float bright_min;
     float bright_max;
     float wt_max;
     float air_min;
     float air_max;
     float tmax_base;
     float tmax_off;
     float tmax_max;
     float cfg_wt;
     float cfg_air;
     float cfg_tmax;
     float dc_weitcur;
     float bf_weight;
     float range_sigma;
     float space_sigma_pre;
     float space_sigma_cur;
 } mDehazeDataV21_t;

【成员】

成员名 说明
dc_min_th WT 自适应统计范围,取值 [16, 120],默认值 64,精度 0.1。
dc_max_th WT 自适应高曝光区域统计范围,取值 [170, 255],默认值 192,精度 0.1。
yhist_th Y 分量高曝光区域统计范围,取值 [170, 255],默认值 249,精度 0.1。
yblk_th Y 分量块数量比例阈值,范围 [0.002, 0.01],默认值 0.002,精度 0.1。
dark_th WT 自适应 Y 分量块最小阈值,范围 [230, 250],默认值 250,精度 0.1。
bright_min AIR 自适应阈值最小值,范围 [160, 200],默认值 180,精度 0.1。
bright_max AIR 自适应阈值最大值,范围 [210, 250],默认值 240,精度 0.1。
wt_max wt 自适应最大值限制,范围 [0.75, 0.9],默认值 0.9,精度 0.001。
air_min air 自适应最小值限制,范围 [200, 220],默认值 200,精度 0.001。
air_max AIR 自适应最大值限制,范围 [230, 250],默认值 250,精度 0.001。
tmax_base tmax 自适应基准值,默认 125;对应配置:200 (131)、210 (125)、220 (119)、230 (114)、240 (109)、250 (105),推荐 131-105。
tmax_off Tmax 自适应固定值,范围 [0.1, 0.5],默认值 0.1,精度 0.1。
tmax_max tmax 自适应最大值,范围 [0.1, 0.5],默认值 0.5,精度 0.1。
cfg_wt 软件配置 wt(图像去雾强度),范围 [0, 1],默认值 0.8,精度 0.001。
cfg_air 软件配置 air(大气光系数),范围 [0, 255],默认值 210,精度 0.001。
cfg_tmax 软件配置 tmax(去雾最大值),范围 [0, 1],默认值 0.2,精度 0.001。
bf_weight 两个双边滤波器的合成权重,范围 [0, 1],默认值 0.5,精度 0.1。
dc_weitcur 暗通道部分的双边权重,范围 [0, 1],默认值 1,精度 0.1。
range_sigma 双边滤波值域 sigma,范围 [0, 1],默认值 0.4,精度 0.1。
成员名 说明
space_sigma_pre 以 IIR 数据为参考时的双边滤波空间域 sigma,范围 [0, 1],默认值 0.4,精度 0.1。
space_sigma_cur 以当前数据为参考时的双边滤波空间域 sigma,范围 [0, 1],默认值 0.8,精度 0.1。

9.6.4.11 mDehaze_setting_v21_t

【说明】定义手动去雾功能属性。

【定义】

 typedef struct mDehaze_setting_v21_s {
     bool             en;
     bool             air_lc_en;
     float            stab_fnum;
     float            sigma;
     float            wt_sigma;
     float            air_sigma;
     float            tmax_sigma;
     float            pre_wet;
     mDehazeDataV21_t DehazeData;
 } mDehaze_setting_V21_t;

【成员】

成员名称 说明
en 开关功能
air_lc_en 是否使用 Airlight Base 进行最小值截断的开关。
stab_fnum 帧稳定最大值,范围 [0,31],默认值 8,精度 0.01。
sigma IIR 控制的 sigma,范围 0,255,默认值 6,精度 1。
wt_sigma 帧间 wt 滤波系数,范围 [0,255],默认值 8,精度 1。
air_sigma 帧间 air 滤波系数,范围 0,255,默认值 12,精度 1。
tmax_sigma 帧间 Tmax 滤波系数,范围 [0,1],默认值 0.01,精度 0.0001。
pre_wet 参考数据 IIR 滤波系数,范围 [0,1],默认值 0.01,精度 0.0001。
DehazeData 去雾调试参数

9.6.4.12 mEnhanceDataV21_t

【说明】定义手动 EnhanceData 属性。

【定义】

 typedef struct mEnhanceDataV21_s {
     float enhance_value;
     float enhance_chroma;
 } mEnhanceDataV21_t;

【成员】

成员名称 说明
enhance_value 全局对比度强度,范围 [0,16],默认值 1.0,精度 0.001。
enhance_chroma 色度增强调整参数,范围 [0,16],默认值 1.0,精度 0.001。

9.6.4.13 mEnhance_setting_v21_t

【说明】定义手动增强功能属性。

【定义】

 typedef struct mEnhance_Setting_V21_s {
     bool              en;
     float             enhance_curve[CALIBDB_ADEHAZE_ENHANCE_CURVE_KNOTS_NUM];
     mEnhanceDataV21_t EnhanceData;
 } mEnhance_Setting_V21_t;

【成员】

成员名称 说明
en 增强功能开关
enhance_curve 低频曲线
EnhanceData 增强调试参数

9.6.4.14 mHistDataV21_t

【说明】定义手动 HistData 属性。

【定义】

 typedef struct mHistDataV21_s {
     float hist_gratio;
     float hist_th_off;
     float hist_k;
     float hist_min;
     float hist_scale;
     float cfg_gratio;
 } mHistDataV21_t;

【成员】

成员名称 说明
hist_gratio 直方图拉伸倍数、直方图均衡化控制系数,范围 [0, 32],精度 0.01;原文未给出默认值。
hist_th_off 直方图统计阈值,范围 [0, 255],默认值 64,精度 0.01。
hist_k 直方图自适应阈值放大倍数,范围 [0, 7),默认值 2,精度 0.01。
hist_min 直方图统计阈值最小值,范围 [0,2),默认值 0.016,精度 0.01。
hist_scale 直方图均衡化控制系数,范围 [0, 32],默认值 0.9,精度 0.01。
cfg_gratio 软件配置的直方图拉伸倍数、直方图均衡化控制系数,范围 [0, 32),默认值 1,精度 0.01。

9.6.4.15 mHist_setting_v21_t

【说明】定义手动 Hist 功能属性。

【定义】

 typedef struct mHist_setting_V21_s {
     bool           en;
     bool           hist_para_en;
     mHistDataV21_t HistData;
 } mHist_setting_V21_t;

【成员】

成员名称 说明
en Hist 功能开关。
hist_para_en 直方图拉伸控制开关。
HistData Hist 调试参数。

9.6.4.16 mDehazeAttr_t

【说明】定义手动去雾模块属性。

【定义】

 typedef struct mDehazeAttr_s {
     bool                   Enable;
     float                  cfg_alpha;
     mDehaze_Setting_V21_t  dehaze_setting;
     mEnhance_Setting_V21_t enhance_setting;
     mHist_setting_V21_t    hist_setting;
 } mDehazeAttr_t;

【成员】

成员名称 说明
Enable 开关功能。
cfg_alpha 手动软件配置比例,范围 [0,1],默认值 1,精度 0.01。
dehaze_setting 手动去雾功能参数
enhance_setting 手动增强功能参数
hist_setting 手动 Hist 功能参数

9.6.4.17 adehaze_sw_v2_t

【说明】定义去雾属性。

【定义】

 typedef struct adehaze_sw_V2_s {
     rk_aiq_uapi_sync_t     sync;
     dehaze_api_mode_t      mode;
     CalibDbV2_dehaze_V21_t stAuto;
     mDehazeAttr_t          stManual;
     DehazeManuAttr_t       stDehazeManu;
     EnhanceManuAttr_t      stEnhanceManu;
 } adehaze_sw_V2_t;

【成员】

成员名称 说明
sync rk_aiq_uapi_sync_t 定义参见“概述/API 说明”。
mode API 模式。
stAuto 自动去雾模块参数。
stManual 手动去雾模块参数。
stDehazeManu 去雾等级参数,请勿使用。
stEnhanceManu 对比度等级参数,请勿使用。

9.7 CPROC

9.7.1 功能说明

CPRO(颜色处理)提供基本颜色调整功能,通过在一定范围内调整亮度、对比度、饱和度和色度,获得偏好的颜色效果。此模块作用于 YUV 域图像。

9.7.2 功能级 API 参考

9.7.3 模块级 API 参考

9.7.3.1 rk_aiq_user_api2_acp_SetAttrib

【说明】

设置 CPRO 模块属性。

【语法】

 XCamReturn rk_aiq_user_api2_acp_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr CPROC 模块属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_acp.h

库文件:librkaiq.so

9.7.3.2 rk_aiq_user_api2_acp_GetAttrib

【说明】

获取 CPRO 模块当前属性。

【语法】

 XCamReturn rk_aiq_user_api2_acp_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
                                         acp_attrib_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr CPROC 模块属性 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_acp.h

库文件:librkaiq.so

9.7.4 模块级 API 数据类型

9.7.4.1 acp_attrib_t

【说明】定义 CPROC 模块参数。

【定义】

    typedef struct acp_attrib_s {
        uint8_t brightness; /* 0 ~ 255 */
        uint8_t contrast; /* 0 ~ 255 */
        uint8_t saturation; /* 0 ~ 255 */
        uint8_t hue; /* 0 ~ 255 */
    } acp_attrib_t;

【成员】

成员名称 说明
brightness 亮度,范围 [0,255],对应范围 [-128,127],默认值 128。
contrast 对比度,范围 [0,255],对应倍数 [0, 1.992],默认值 128。
saturation 饱和度,范围 [0,255],对应倍数 [0, 1.992],默认值 128。
hue 色度,范围 [0,255],对应角度 [-90,87.188],默认值 128。

9.8 IE

9.8.1 功能说明

IE(图像特效)提供图像特效设置,例如黑白效果。此模块作用于 YUV 域图像。

9.8.2 功能级 API 参考

9.8.3 模块级 API 参考

9.8.3.1 rk_aiq_user_api2_aie_SetAttrib

【说明】

设置 IE 模块属性。

【语法】

 XCamReturn rk_aiq_user_api2_aie_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
                                         aie_attrib_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr IE 模块属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_aie.h

库文件:librkaiq.so

9.8.3.2 rk_aiq_user_api2_aie_GetAttrib

【说明】

获取 IE 模块当前属性。

【语法】

 XCamReturn rk_aiq_user_api2_aie_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
                                         aie_attrib_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr IE 模块属性 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_aie.h

库文件:librkaiq.so

9.8.4 模块级 API 数据类型

9.8.4.1 aie_attrib_t

【说明】定义 IE 模块参数。

【定义】

   typedef struct aie_attrib_s {
        rk_aiq_ie_effect_t mode;
   } aie_attrib_t;

【成员】

成员名称 说明
mode 特效类型

9.8.4.2 rk_aiq_ie_effect_t

【说明】定义 IE 特效类型。

【定义】

    typedef enum rk_aiq_ie_effect_e {
        RK_AIQ_IE_EFFECT_NONE,
        RK_AIQ_IE_EFFECT_BW,
        RK_AIQ_IE_EFFECT_NEGATIVE,
        RK_AIQ_IE_EFFECT_SEPIA,
        RK_AIQ_IE_EFFECT_EMBOSS,
       RK_AIQ_IE_EFFECT_SKETCH,
        RK_AIQ_IE_EFFECT_SHARPEN, /*!< deprecated */
   } rk_aiq_ie_effect_t;

【成员】

成员名称 说明
RK_AIQ_IE_EFFECT_NONE 无特效
RK_AIQ_IE_EFFECT_BW 黑白效果
RK_AIQ_IE_EFFECT_NEGATIVE 负片效果,不支持
RK_AIQ_IE_EFFECT_SEPIA 深棕色效果
RK_AIQ_IE_EFFECT_EMBOSS 浮雕效果
RK_AIQ_IE_EFFECT_SKETCH 素描效果
RK_AIQ_IE_EFFECT_SHARPEN 不支持

9.9 CSM

9.9.1 功能说明

CSM(颜色空间矩阵)可设置 RGB 转 YUV 过程中的参数。

9.9.2 功能级 API 参考

9.9.3 模块级 API 参考

9.9.3.1 rk_aiq_user_api2_acsm_SetAttrib

【说明】

设置 CSM 模块属性。

【语法】

 XCamReturn rk_aiq_user_api2_acsm_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_uapi_acsm_attrib_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr CSM 模块属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_acsm.h

库文件:librkaiq.so

【注意事项】

attr.param.op_mode = RK_AIQ_OP_MODE_AUTO 时使用 AIQ 内置 CSM 默认参数;attr.param.op_mode = RK_AIQ_OP_MODE_MANUAL 时可配置 CSM 参数。

attr.param.full_range 只能配置为 TRUE;限幅范围可在 CGC 模块配置。

9.9.3.2 rk_aiq_user_api2_acsm_GetAttrib

【说明】

获取 CSM 模块当前属性。

【语法】

 XCamReturn rk_aiq_user_api2_acsm_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_uapi_acsm_attrib_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr CSM 模块属性 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_acsm.h

库文件:librkaiq.so

9.9.4 模块级 API 数据类型

9.9.4.1 rk_aiq_uapi_acsm_attrib_t

【说明】定义 CSM 模块参数。

【定义】

   typedef struct rk_aiq_uapi_acsm_attrib_s {
       rk_aiq_uapi_sync_t sync;
       rk_aiq_acsm_params_t param;
   } rk_aiq_uapi_acsm_attrib_t;

【成员】

成员名称 说明
sync rk_aiq_uapi_sync_t 的定义参见“概述/API 说明”。
rk_aiq_acsm_params_t CSM 参数。

9.9.4.2 rk_aiq_acsm_params_t

【说明】定义 CSM 模块参数。

【定义】

 typedef struct __csm_param {
     RKAiqOPMode_t op_mode;
     bool full_range;
     uint8_t y_offset;
     uint8_t c_offset;
     float coeff[RK_AIQ_CSM_COEFF_NUM];
 } Csm_Param_t;

【成员】

成员名称 说明
op_mode 模式:RK_AIQ_OP_MODE_AUTO 或 RK_AIQ_OP_MODE_MANUAL。
full_range 是否输出完整范围,默认 TRUE。注意:ISP30 此属性只能为 TRUE;限制范围建议通过 CGC 模块 API 配置。
y_offset 亮度偏移,范围 [0,63],默认 0。
c_offset 色度偏移,范围 [0,255],默认 0。
coeff RGB 转 YUV 的 3×3 矩阵,范围 [-2,1.992],默认 [0.299,0.587,0.114,-0.169,-0.331,0.5,0.5,-0.419,-0.081]。

9.10 锐化

9.10.1 功能说明

Sharpen 模块增强图像清晰度,包括调整边缘锐化属性,以及增强图像细节和纹理。

9.10.2 功能级 API 参考

9.10.2.1 rk_aiq_uapi2_setSharpness

【说明】

设置锐化等级。

【语法】

 XCamReturn rk_aiq_uapi2_setSharpness(const rk_aiq_sys_ctx_t* ctx, unsigned int
 level);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
level 锐化等级范围 [0,100],默认 50。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.10.2.2 rk_aiq_uapi2_getSharpness

【说明】

获取锐化等级。

【语法】

 XCamReturn rk_aiq_uapi2_getSharpness(const rk_aiq_sys_ctx_t* ctx, unsigned int*
 level);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
level 锐化等级。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.10.3 模块级 API 参考

9.10.3.1 rk_aiq_user_api2_asharpV4_SetAttrib

【说明】设置锐化算法属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_asharpV4_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_sharp_attrib_v4_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 降噪参数属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_asharp_v4.h、RkAiqHandleIntV3x.h。

库文件:librkaiq.so

9.10.3.2 rk_aiq_user_api2_asharpV4_GetAttrib

【说明】获取锐化算法属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_asharpV4_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_sharp_attrib_v4_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 降噪参数属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_asharp_v4.h、RkAiqHandleIntV3x.h。

库文件:librkaiq.so

9.10.3.3 rk_aiq_user_api2_asharpV4_SetStrength

【说明】设置锐化强度。

【语法】

 XCamReturn
 rk_aiq_user_api2_asharpV4_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_sharp_strength_v4_t *pStrength);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
pStrength 锐化强度结构指针;结构内 percentage 范围 0.0-1.0。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_asharp_v4.h、RkAiqHandleIntV3x.h。

库文件:librkaiq.so

9.10.3.4 rk_aiq_user_api2_asharpV4_GetStrength

【说明】获取锐化强度。

【语法】

 XCamReturn
 rk_aiq_user_api2_asharpV4_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_sharp_strength_v4_t *pStrength);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
pStrength 锐化强度结构指针;结构内 percentage 范围 0.0-1.0。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_asharp_v4.h、RkAiqHandleIntV3x.h。

库文件:librkaiq.so

9.10.4 模块级 API 数据类型

9.10.4.1 rk_aiq_sharp_attrib_v4_t

【说明】定义锐化模块参数。

【定义】

 typedef struct rk_aiq_sharp_attrib_v4_s {
     rk_aiq_uapi_sync_t sync;
     Asharp4_OPMode_t eMode;
     Asharp_Auto_Attr_V4_t stAuto;
     Asharp_Manual_Attr_V4_t stManual;
 } rk_aiq_sharp_attrib_v4_t;

【成员】

成员名称 说明
sync 同步/异步模式选择,见概述/API 说明部分。
eMode Sharpen 模块属性。
stAuto Sharpen 模块自动模式参数。

9.10.4.2 Asharp4_OPMode_t

【说明】

【定义】

 typedef enum Asharp4_OPMode_e {
     ASHARP4_OP_MODE_INVALID           = 0,
     ASHARP4_OP_MODE_AUTO              = 1,
     ASHARP4_OP_MODE_MANUAL            = 2,
     ASHARP4_OP_MODE_REG_MANUAL        = 3,
     ASHARP4_OP_MODE_MAX
 } Asharp4_OPMode_t;

【成员】

成员名称 说明
ASHARP4_OP_MODE_INVALID Sharpen 模块无效模式。
ASHARP4_OP_MODE_AUTO Sharpen 模块自动模式。
ASHARP4_OP_MODE_MANUAL 锐化模块手动模式的算法设置。
ASHARP4_OP_MODE_REG_MANUAL 寄存器设置。
ASHARP4_OP_MODE_MAX Sharpen 模块模式最大值,为无效模式。

9.10.4.3 Asharp_Auto_Attr_V4_t

【说明】定义锐化模块自动模式中各 ISO 对应的算法属性参数。

【定义】

 typedef struct Asharp_Auto_Attr_V4_s
 {
     RK_SHARP_Params_V4_t stParams;
     RK_SHARP_Params_V4_Select_t stSelect;
 } Asharp_Auto_Attr_V4_t;

【成员】

成员名称 说明
stParams SHARP 模块各 ISO 对应的算法属性参数。
stSelect Sharp 模块计算属性参数。

9.10.4.4 Asharp_Manual_Attr_V4_t

【说明】定义锐化模块手动属性。

【定义】

 typedef struct Asharp_Manual_Attr_V4_s
 {
     RK_SHARP_Params_V4_Select_t stSelect;
     RK_SHARP_Fix_V4_t stFix;
 } Asharp_Manual_Attr_V4_t;

【成员】

成员名称 说明
stSelect Sharp 手动算法参数。
stFix Sharp 寄存器值。

9.10.4.5 RK_SHARP_Params_V4_t

【说明】定义锐化模块手动属性。

【定义】

 typedef struct RK_SHARP_Params_V4_s
 {
     int enable;
     int iso[RK_SHARP_V4_MAX_ISO_NUM];
     short luma_point        [RK_SHARP_V4_LUMA_POINT_NUM];
     short luma_sigma        [RK_SHARP_V4_MAX_ISO_NUM]
 [RK_SHARP_V4_LUMA_POINT_NUM];
     float pbf_gain          [RK_SHARP_V4_MAX_ISO_NUM];
     float pbf_add           [RK_SHARP_V4_MAX_ISO_NUM];
     float pbf_ratio         [RK_SHARP_V4_MAX_ISO_NUM];
     float gaus_ratio        [RK_SHARP_V4_MAX_ISO_NUM];
     float sharp_ratio       [RK_SHARP_V4_MAX_ISO_NUM];
     short hf_clip        [RK_SHARP_V4_MAX_ISO_NUM][RK_SHARP_V4_LUMA_POINT_NUM];
     float bf_gain           [RK_SHARP_V4_MAX_ISO_NUM];
     float bf_add            [RK_SHARP_V4_MAX_ISO_NUM];
     float bf_ratio          [RK_SHARP_V4_MAX_ISO_NUM];
     short local_sharp_strength  [RK_SHARP_V4_MAX_ISO_NUM]
 [RK_SHARP_V4_LUMA_POINT_NUM];
     float prefilter_coeff[RK_SHARP_V4_MAX_ISO_NUM][RK_SHARP_V4_PBF_DIAM *
 RK_SHARP_V4_PBF_DIAM];
     float GaussianFilter_coeff   [RK_SHARP_V4_MAX_ISO_NUM][RK_SHARP_V4_RF_DIAM *
 RK_SHARP_V4_RF_DIAM];
     float hfBilateralFilter_coeff    [RK_SHARP_V4_MAX_ISO_NUM]
 [RK_SHARP_V4_BF_DIAM * RK_SHARP_V4_BF_DIAM];
 } RK_SHARP_Params_V4_t;

【成员】

参数名称 参数类型 简要说明。
Enable 调试参数 Sharp 模块开关:1 开启,0 关闭。
iso 调试参数 不同 ISO 档对应不同调试参数,目前仅支持 13 档。
pbf_gain 调试参数 预滤波 sigma 的乘法比例。越大滤波越强、噪声与细节越少。范围 [0.0,2.0],默认 1.0。
pbf_add 调试参数 预滤波 sigma 叠加偏移。越大滤波越强、噪声与细节越少。范围 [0,1023],默认 0。
pbf_ratio 调试参数 预滤波融合权重。越大滤波越强、噪声与细节越少。范围 [0.0,1.0],默认 0.5。
gaus_ratio 调试参数 高频双边滤波的引导图像为高斯滤波与原图的融合结果。值越大,高斯双边滤波的引导权重越大。范围 [0.0,1.0],默认 0。
sharp_ratio 调试参数 锐化强度,值越大锐化越强。范围 [0.0,16],默认 6。
bf_gain 调试参数 高频双边滤波 sigma 乘法比例。越大滤波越强、噪声与细节越少。范围 [0.0,2.0],默认 1.0。
bf_add 调试参数 高频双边滤波 sigma 叠加偏移。越大滤波越强、噪声与细节越少。范围 [0,1023],默认 0。
bf_add 调试参数 高频双边滤波融合权重。越大滤波越强、噪声与细节越少。范围 [0.0,1.0],默认 0.5。
参数名称 参数类型 简要说明。
luma_point / luma_sigma 调试参数 不同像素亮度对应不同噪声 SIGMA 曲线。luma_point 为亮度值,范围 [0,1023];luma_sigma 为噪声强度,范围 [0,1023]。
luma_point / hf_clip 调试参数 不同像素亮度的高频值裁剪范围。值越大,最大允许锐化强度越大。范围 [0,1023],默认 256。
luma_point / local_sharp_strength 调试参数 不同像素亮度对应的高频叠加权重比例。值越大,允许叠加的高频越多,图像越锐利。范围 [0,1023],默认 512。
prefilter_coeff 调试参数 预滤波算子。
GaussianFilter_coeff 调试参数 高斯滤波算子。
hfBilateralFilter_coeff 调试参数 高频双边滤波算子。

9.10.4.6 RK_SHARP_Params_V4_Select_t

【说明】定义锐化模块手动模式算法属性。

【定义】

 typedef struct RK_SHARP_Params_V4_Select_s
 {
     int enable;
     short luma_point    [RK_SHARP_V4_LUMA_POINT_NUM];
     short luma_sigma    [RK_SHARP_V4_LUMA_POINT_NUM];
     float pbf_gain      ;
     float pbf_add       ;
     float pbf_ratio     ;
     float gaus_ratio    ;
     float sharp_ratio   ;
     short hf_clip       [RK_SHARP_V4_LUMA_POINT_NUM];
     float bf_gain       ;
     float bf_add        ;
     float bf_ratio      ;
     short local_sharp_strength        [RK_SHARP_V4_LUMA_POINT_NUM];
     float prefilter_coeff[RK_SHARP_V4_PBF_DIAM * RK_SHARP_V4_PBF_DIAM];
     float GaussianFilter_coeff   [RK_SHARP_V4_RF_DIAM * RK_SHARP_V4_RF_DIAM];
     float hfBilateralFilter_coeff    [RK_SHARP_V4_BF_DIAM * RK_SHARP_V4_BF_DIAM];
 } RK_SHARP_Params_V4_Select_t;

【成员】

参数名称 参数类型 简要说明。
Enable 调试参数 Sharp 模块开关:1 开启,0 关闭。
iso 调试参数 不同 ISO 档对应不同调试参数,目前仅支持 13 档。
pbf_gain 调试参数 预滤波 sigma 的乘法比例。越大滤波越强、噪声与细节越少。范围 [0.0,2.0],默认 1.0。
pbf_add 调试参数 预滤波 sigma 叠加偏移。越大滤波越强、噪声与细节越少。范围 [0,1023],默认 0。
pbf_ratio 调试参数 预滤波融合权重。越大滤波越强、噪声与细节越少。范围 [0.0,1.0],默认 0.5。
gaus_ratio 调试参数 高频双边滤波的引导图像为高斯滤波与原图的融合结果。值越大,高斯双边滤波的引导权重越大。范围 [0.0,1.0],默认 0。
sharp_ratio 调试参数 锐化强度,值越大锐化越强。范围 [0.0,16],默认 6。
bf_gain 调试参数 高频双边滤波 sigma 乘法比例。越大滤波越强、噪声与细节越少。范围 [0.0,2.0],默认 1.0。
bf_add 调试参数 高频双边滤波 sigma 叠加偏移。越大滤波越强、噪声与细节越少。范围 [0,1023],默认 0。
bf_add 调试参数 高频双边滤波融合权重。越大滤波越强、噪声与细节越少。范围 [0.0,1.0],默认 0.5。
参数名称 参数类型 简要说明。
luma_point / luma_sigma 调试参数 不同像素亮度对应不同噪声 SIGMA 曲线。luma_point 为亮度值,范围 [0,1023];luma_sigma 为噪声强度,范围 [0,1023]。
luma_point / hf_clip 调试参数 不同像素亮度的高频值裁剪范围。值越大,最大允许锐化强度越大。范围 [0,1023],默认 256。
luma_point / local_sharp_strength 调试参数 不同像素亮度对应的高频叠加权重比例。值越大,允许叠加的高频越多,图像越锐利。范围 [0,1023],默认 512。
prefilter_coeff 调试参数 预滤波算子。
GaussianFilter_coeff 调试参数 高斯滤波算子。
hfBilateralFilter_coeff 调试参数 高频双边滤波算子。

9.10.4.7 RK_SHARP_Fix_V4_t

【说明】定义锐化模块手动模式寄存器配置。

【定义】

 typedef struct RK_SHARP_Fix_V4_s
 {
     // SHARP_SHARP_EN (0x0000)
     uint8_t sharp_clk_dis;
     uint8_t sharp_exgain_bypass;
     uint8_t sharp_center_mode;
     uint8_t sharp_bypass;
     uint8_t sharp_en;
     // SHARP_SHARP_RATIO  (0x0004)
     uint8_t sharp_sharp_ratio;
     uint8_t sharp_bf_ratio;
     uint8_t sharp_gaus_ratio;
     uint8_t sharp_pbf_ratio;
     // SHARP_SHARP_LUMA_DX (0x0008)
     uint8_t sharp_luma_dx[7];
     // SHARP_SHARP_PBF_SIGMA_INV_0 (0x000c - 0x0014)
     uint16_t sharp_pbf_sigma_inv[8];
     // SHARP_SHARP_BF_SIGMA_INV_0 (0x0018 -  0x0020)
     uint16_t sharp_bf_sigma_inv[8];
     // SHARP_SHARP_SIGMA_SHIFT (0x00024)
     uint8_t sharp_bf_sigma_shift;
     uint8_t sharp_pbf_sigma_shift;
     // SHARP_SHARP_EHF_TH_0 (0x0028 -  0x0030)
     uint16_t sharp_ehf_th[8];
     // SHARP_SHARP_CLIP_HF_0 (0x0034 -  0x003c)
     uint16_t sharp_clip_hf[8];
     // SHARP_SHARP_PBF_COEF (0x00040)
     uint8_t sharp_pbf_coef[3];
     // SHARP_SHARP_BF_COEF (0x00044)
     uint8_t sharp_bf_coef[3];
     // SHARP_SHARP_GAUS_COEF (0x00048 - 0x0004c)
     uint8_t sharp_gaus_coef[6];
 } RK_SHARP_Fix_V4_t;

【成员】

参数名称 参数说明
sharp_clk_dis Sharp 时钟门控设置,目前不支持,默认 0。
sharp_exgain_bypass 是否旁路外部局部增益模块,目前不支持此设置,默认 0。
sharp_center_mode 是否以图像中心点为坐标进行锐化,目前不支持配置,默认 0。
sharp_bypass 锐化模块旁路:1 旁路,0 不旁路。
sharp_en Sharpen 模块使能:1 启用,0 禁用。
sharp_sharp_ratio sharp_ratio:锐化强度,0~15.9。
sharp_bf_ratio 双边滤波融合权重,0~1.0。
sharp_gaus_ratio gaus_ratio:高斯滤波融合权重,范围 [0.0,1.0]。
sharp_pbf_ratio 双边预滤波融合权重,范围 [0.0,1.0],默认 0.5。
sharp_luma_dx7 点 6 与点 7 的间距,实际距离为 2^sw_sharp_luma_dx7。
sharp_luma_dx6 点 5 与点 6 的间距,实际距离为 2^sw_sharp_luma_dx6。
sharp_luma_dx5 点 4 与点 5 的间距,实际距离为 2^sw_sharp_luma_dx5。
sharp_luma_dx4 点 3 与点 4 的间距,实际距离为 2^sw_sharp_luma_dx4。
sharp_luma_dx3 点 2 与点 3 的间距,实际距离为 2^sw_sharp_luma_dx3。
sharp_luma_dx2 点 1 与点 2 的间距,实际距离为 2^sw_sharp_luma_dx2。
sharp_luma_dx1 点 0 与点 1 的间距,实际距离为 2^sw_sharp_luma_dx1。注意总距离必须为 1024。
sharp_pbf_sigma_inv Sharp pbf sigma 的倒数。
sharp_bf_sigma_inv Sharp bf sigma 的倒数。
sharp_pbf_coef 锐化模块双边滤波核。
sharp_bf_coef 双边滤波核。
sharp_gaus_coef 高斯滤波核。

9.10.4.8 rk_aiq_sharp_strength_v4_t

【说明】定义锐化模块降噪强度配置结构。

【定义】

 typedef struct rk_aiq_sharp_strength_v4_s {
     rk_aiq_uapi_sync_t sync;
     float percent;
 } rk_aiq_sharp_strength_v4_t;

【成员】

成员名称 说明
sync 同步/异步模式选择,见概述/API 说明部分。
percent 锐化强度,范围 0.0-1.0。

9.11 Gamma

9.11.1 功能说明

Gamma 模块对图像亮度空间进行非线性转换,以适应输出设备。RK3588 支持 49 点对数域 gamma 曲线,其横坐标如下:

 int X_isp30[49] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32,
 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 448, 512, 640,
 768, 896, 1024, 1280, 1536, 1792, 2048, 2304, 2560, 2816, 3072, 3328, 3584, 3840,
 4095};

9.11.2 功能级 API 参考

9.11.2.1 rk_aiq_uapi2_setGammaCoef

【说明】

通过 GammaCoef 和 SlopeAtZero 快速设置 gamma 曲线,生成方式如下:

 for(int i = 0; i < 49; i++) {
     Y_isp30[i] = 4095 * pow(X_isp30[i] / 4095, 1 / GammaCoef + SlopeAtZero);
     Y_isp30[i] = LIMIT_VALUE(Y_isp30[i], 4095, 0);
  }

【语法】

 XCamReturn rk_aiq_uapi2_setGammaCoef(const rk_aiq_sys_ctx_t* ctx, float
 GammaCoef, float SlopeAtZero);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
GammaCoef Gamma 系数,范围 [0,100],默认 2.2,精度 0.01。 输入
SlopeAtZero 暗区斜率,范围 [-0.05,0.05],默认 0,精度 0.001。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【说明】

API 中 Gamma 曲线不随场景切换;场景变化时需再次通过 API 设置曲线。

9.11.3 功能级 API 数据类型

9.11.4 模块级 API 参考

9.11.4.1 rk_aiq_user_api2_agamma_SetAttrib

【说明】设置 gamma 软件属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_agamma_v11_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx, const
 rk_aiq_gamma_v11_attrib_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr Gamma 软件属性结构。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_agamma.h。

库文件:librkaiq.so

【说明】

API 中 Gamma 曲线不随场景切换;场景变化时需再次通过 API 设置曲线。

9.11.4.2 rk_aiq_user_api2_agamma_GetAttrib

【说明】获取 gamma 软件属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_agamma_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_gamma_attrib_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr Gamma 软件属性结构。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_agamma.h。

库文件:librkaiq.so

【说明】

9.11.5 模块级 API 数据类型

9.11.5.1 rk_aiq_gamma_op_mode_t

【说明】定义 Gamma 工作模式。

【定义】

 typedef enum rk_aiq_gamma_op_mode_s {
     RK_AIQ_GAMMA_MODE_OFF             = 0,
     RK_AIQ_GAMMA_MODE_MANUAL          = 1,
     RK_AIQ_GAMMA_MODE_FAST            = 2,
 } rk_aiq_gamma_op_mode_t;

【成员】

成员名称 说明
RK_AIQ_GAMMA_MODE_OFF API 关闭模式。
RK_AIQ_GAMMA_MODE_MANUAL API 手动模式。
RK_AIQ_GAMMA_MODE_FAST API 快速模式。

9.11.5.2 Agamma_api_Fast_t

【说明】定义快速模式 Gamma 属性。

通过 GammaBeef 和 SlopeAtZero 快速设置 gamma 曲线,生成方式如下(GammaBeef 为原文拼写):

 for(int i = 0; i < 49; i++) {
     Y_isp30[i] = 4095 * pow(X_isp30[i] / 4095, 1 / GammaCoef + SlopeAtZero);
     Y_isp30[i] = LIMIT_VALUE(Y_isp30[i], 4095, 0);
  }

【定义】

 typedef struct Agamma_api_Fast_s {
     bool  en;
     float GammaCoef;
     float SlopeAtZero;
 } Agamma_api_Fast_t;

【成员】

成员名称 说明
en 开关功能
GammaCoef gamma 系数,原文范围写作 0, 100,默认 2.2,精度 0.01。
SlopeAtZero 暗区斜率,原文范围写作 0.05 和 0.05,默认 0,精度 0.001;需核对是否漏负号。

9.11.5.3 GammaType_t

【说明】定义 Gamma 曲线 X 轴间隔类型属性。

【定义】

 typedef enum GammaType_e {
    GAMMATYPE_LOG = 0,
    GAMMATYPE_EQU = 1,
 } GammaType_t;

【成员】

成员名称 说明
GAMMATYPE_LOG 非等间距。
GAMMATYPE_EQU 等间距。

9.11.5.4 Agamma_api_manualV21_t

【说明】定义 RK356x 的手动 gamma 属性。

【定义】

 typedef struct Agamma_api_manualV21_s {
    bool        Gamma_en;
    GammaType_t Gamma_out_segnum;
    uint16_t    Gamma_out_offset;
    uint16_t    Gamma_curve[CALIBDB_AGAMMA_KNOTS_NUM];
 } Agamma_api_manualV21_t;

【成员】

成员名称 说明
Gamma_en 开关功能
Gamma_out_segnum 手动 Gamma 曲线 X 轴间隔类型,默认 GAMMATYPE_LOG。
Gamma_out_offset 手动 Gamma 曲线校正系数,范围 [-2048,2048],默认 0,精度 1。
Gamma_curve 手动 Gamma 曲线,范围 [0,4095],精度 1。

9.11.5.5 Agamma_api_manualV30_t

【说明】定义 RK3588 的手动 gamma 属性。

【定义】

 typedef struct Agamma_api_manualV30_s {
    bool     Gamma_en;
    uint16_t Gamma_out_offset;
    uint16_t Gamma_curve[CALIBDB_AGAMMA_KNOTS_NUM_V30];
 } Agamma_api_manualV30_t;

【成员】

成员名称 说明
Gamma_en 开关功能
Gamma_out_offset 手动 Gamma 曲线校正系数,范围 [-2048,2048],默认 0,精度 1。
Gamma_curve 手动 Gamma 曲线,范围 [0,4095],精度 1。

9.11.5.6 rk_aiq_gamma_attrV21_t

【说明】定义 RK356x 的 Gamma 属性。

【定义】

 typedef struct rk_aiq_gamma_attrV21_s {
    rk_aiq_gamma_op_mode_t mode;
    Agamma_api_manualV21_t stManual;
    Agamma_api_Fast_t      stFast;
 } rk_aiq_gamma_attrV21_t;

【成员】

成员名称 说明
mode API 模式。
stManual 手动 Gamma 参数。
stFast 快速模式参数。

9.11.5.7 rk_aiq_gamma_attrV30_t

【说明】定义 RK3588 的 Gamma 属性。

【定义】

 typedef struct rk_aiq_gamma_attrV30_s {
    rk_aiq_gamma_op_mode_t mode;
    Agamma_api_manualV30_t stManual;
    Agamma_api_Fast_t      stFast;
 } rk_aiq_gamma_attrV30_t;

【成员】

成员名称 说明
mode API 模式。
stManual 手动 Gamma 参数。
stFast 快速模式参数。

9.11.5.8 rk_aiq_gamma_attr_t

【说明】定义 Gamma 属性。

【定义】

 typedef struct rk_aiq_gamma_attr_s {
     rk_aiq_uapi_sync_t     sync;
     rk_aiq_gamma_attrV21_t atrrV21;
     rk_aiq_gamma_attrV30_t atrrV30;
 } rk_aiq_gamma_attr_t;

【成员】

成员名称 说明
sync rk_aiq_uapi_sync_t 的定义参见“概述/API 说明”。
atrrV21 RK356x 芯片手动 gamma 属性。
atrrV30 RK3588 芯片手动 gamma 属性。

9.12 CCM

9.12.1 功能说明

CCM(色彩校正矩阵)模块对图像进行色彩校正。

9.12.2 功能级 API 参考

9.12.2.1 rk_aiq_uapi2_setCCMMode

【说明】设置 CCM 工作模式。

【语法】

 XCamReturn rk_aiq_uapi2_setCCMMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
mode 工作模式,取值 {OP_AUTO, OP_MANUAL}。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

参见 sample_accm_module.cpp 的 sample_set_ccm_manual / sample_set_ccm_auto,设置手动/自动模式。

9.12.2.2 rk_aiq_uapi2_getCCMMode

【说明】获取 CCM 工作模式。

【语法】

 XCamReturn rk_aiq_uapi2_getCCMMode(const rk_aiq_sys_ctx_t* ctx, opMode_t *mode);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
mode 工作模式,取值 {OP_AUTO, OP_MANUAL}。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

获取工作模式参见 sample_accm_module.cpp 的 sample_get_ccm_mode。

9.12.2.3 rk_aiq_uapi2_setMCcCoef

【说明】设置手动模式 CCM 矩阵,包括色彩校正矩阵及 R/G/B 通道偏移。

【语法】

 XCamReturn rk_aiq_uapi2_setMCcCoef(const rk_aiq_sys_ctx_t* ctx,
 rk_aiq_ccm_matrix_t *mccm);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
mccm 手动模式 CCM 矩阵,包括色彩校正矩阵及 R/G/B 通道偏移。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

设置手动 CCM 矩阵参见 sample_accm_module.cpp 的 sample_set_ccm_manual_matrix。

9.12.2.4 rk_aiq_uapi2_getMCcCoef

【说明】获取 CCM 矩阵,包括色彩校正矩阵及 R/G/B 通道偏移。

【语法】

 XCamReturn rk_aiq_uapi2_getMCcCoef(const rk_aiq_sys_ctx_t* ctx,
 rk_aiq_ccm_matrix_t *mccm);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
mccm CCM 矩阵,包括色彩校正矩阵及 R/G/B 通道偏移。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

获取 CCM 矩阵参见 sample_accm_module.cpp 的 sample_get_ccm_manual_matrix。

9.12.2.5 rk_aiq_uapi2_getACcmSat

【说明】获取自动模式 CCM 饱和度。

【语法】

 XCamReturn rk_aiq_uapi2_getACcmSat(const rk_aiq_sys_ctx_t* ctx,  float
 *finalsat);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
finalsat 饱和度,手动模式为 0。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

自动模式 CCM 饱和度参见 sample_accm_module.cpp 的 sample_get_accm_sat。

9.12.2.6 rk_aiq_uapi2_getACcmMatrixName

【说明】获取自动模式 CCM 矩阵名称。

【语法】

 XCamReturn rk_aiq_uapi2_getACcmMatrixName(const rk_aiq_sys_ctx_t* ctx, char
 **ccm_name);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
ccm_name CCM 矩阵名称。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

原文称通过 sample_accm_module.cpp 的 sample_get_accm_matrix_name 获取自动模式 CCM 饱和度。

9.12.3 功能级 API 数据类型

9.12.3.1 opMode_t

【说明】定义 CCM 工作模式。

【定义】

 typedef enum opMode_e {
     OP_AUTO = 0,
     OP_MANUAL = 1,
     OP_INVAL
 } opMode_t;

【成员】

成员名称 说明
OP_AUTO 自动模式
OP_MANUAL 手动模式
OP_INVAL 无效值

9.12.3.2 rk_aiq_ccm_matrix_t

【说明】定义 CCM 矩阵。

【定义】

 typedef struct rk_aiq_ccm_matrix_s {
     float  ccMatrix[9];
     float  ccOffsets[3];
 } rk_aiq_ccm_matrix_t;

【成员】

成员名称 说明
ccMatrix 手动模式色彩校正矩阵,范围 [-8,7.992]。
ccOffsets 手动模式 RGB 分量偏移,范围 [-4096,4095]。

9.12.4 模块级 API 参考

9.12.4.1 rk_aiq_user_api2_accm_v2_SetAttrib

【说明】设置 CCM 属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_accm_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_ccm_attrib_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr CCM 属性参数。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_accm.h、rk_aiq_uapi_accm_int.h。

库文件:librkaiq.so

【示例】

设置 CCM 属性参见 sample_accm_module.cpp 的 sample_ccm_setCcmAttr。

9.12.4.2 rk_aiq_user_api2_accm_GetAttrib

【说明】获取 CCM 属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_accm_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_ccm_attrib_t *attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr CCM 参数属性。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_accm.h、rk_aiq_uapi_accm_int.h。

库文件:librkaiq.so

【示例】

获取 CCM 属性参见 sample_accm_module.cpp 的 sample_ccm_getCcmAttr。

9.12.4.3 rk_aiq_user_api2_accm_QueryCcmInfo

【说明】查询 CCM 信息。

【语法】

 XCamReturn
 rk_aiq_user_api2_accm_QueryCcmInfo(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_ccm_querry_info_t *ccm_querry_info);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
ccm_querry_info CCM 查询内容。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_accm.h、rk_aiq_uapi_accm_int.h。

库文件:librkaiq.so

【示例】

查询 CCM 信息参见 sample_accm_module.cpp 的 sample_query_ccm_info。

9.12.5 模块级 API 数据类型

9.12.5.1 rk_aiq_ccm_op_mode_t

【说明】定义 CCM 工作模式。

【定义】

 typedef enum rk_aiq_ccm_op_mode_s {
     RK_AIQ_CCM_MODE_INVALID                     = 0,
     RK_AIQ_CCM_MODE_MANUAL                      = 1,
     RK_AIQ_CCM_MODE_AUTO                        = 2,
     RK_AIQ_CCM_MODE_MAX
 } rk_aiq_ccm_op_mode_t;

【成员】

成员名称 说明
RK_AIQ_CCM_MODE_INVALID CCM 无效模式。
RK_AIQ_CCM_MODE_MANUAL CCM 手动模式。
RK_AIQ_CCM_MODE_AUTO CCM 自动模式。

9.12.5.2 rk_aiq_ccm_mccm_attrib_t

【说明】定义手动 CCM 属性。

【定义】

 typedef struct rk_aiq_ccm_mccm_attrib_s {
     float  ccMatrix[9];
     float  ccOffsets[3];
     float  y_alpha_curve[17];
     float low_bound_pos_bit;
 } rk_aiq_ccm_mccm_attrib_t;

【成员】

成员名称 说明
ccMatrix 色彩校正矩阵,范围 [-8,7.992]。
ccOffsets RGB 分量偏移,范围 [-4096,4095]。
y_alpha_curve 与像素亮度(12bit)相关的色彩校正强度曲线配置。范围 [0x0,0x400];0x400 表示 1 倍,0x0 不校正。
low_bound_pos_bit 像素亮度(12bit)调整曲线拐点亮度范围为 [0,2^low_bound_pos_bit] 和 [4095-2^low_bound_pos_bit,4095]。有效值 [0,10]。

9.12.5.3 rk_aiq_ccm_color_inhibition_t

【说明】定义 CCM 色彩抑制等级。

【定义】

 typedef struct rk_aiq_ccm_color_inhibition_s {
     float sensorGain[RK_AIQ_ACCM_COLOR_GAIN_NUM];
     float level[RK_AIQ_ACCM_COLOR_GAIN_NUM];
 } rk_aiq_ccm_color_inhibition_t;

【成员】

成员名称 说明
sensorGain 曝光增益分量。
level 色彩抑制等级,范围 [0,100],默认 0。

9.12.5.4 rk_aiq_ccm_color_saturation_t

【说明】定义自动 CCM 饱和度等级。

【定义】

 typedef struct rk_aiq_ccm_color_saturation_s {
     float sensorGain[RK_AIQ_ACCM_COLOR_GAIN_NUM];
     float level[RK_AIQ_ACCM_COLOR_GAIN_NUM];
 } rk_aiq_ccm_color_saturation_t;

【成员】

成员名称 说明
sensorGain 曝光增益分量。
level 色彩饱和度等级,范围 [0,100],默认 100。

9.12.5.5 rk_aiq_ccm_accm_attrib_t

【说明】定义自动 CCM 属性。

【定义】

 typedef struct rk_aiq_ccm_accm_attrib_s {
     rk_aiq_ccm_color_inhibition_t color_inhibition;
     rk_aiq_ccm_color_saturation_t color_saturation;
 } rk_aiq_ccm_accm_attrib_t;

【成员】

成员名称 说明
color_inhibition CCM 色彩抑制等级。
color_saturation CCM 色彩饱和度等级。

9.12.5.6 rk_aiq_ccm_attrib_t

【说明】定义 CCM 属性。

【定义】

 typedef struct rk_aiq_ccm_attrib_s {
     rk_aiq_uapi_sync_t sync;
     bool byPass;
     rk_aiq_ccm_op_mode_t mode;
     rk_aiq_ccm_mccm_attrib_t stManual;
     rk_aiq_ccm_accm_attrib_t stAuto;
     CalibDbV2_Ccm_Para_V2_t stTool;
 } rk_aiq_ccm_attrib_t;

【成员】

成员名称 说明
sync 同步/异步信号,参见 rk_aiq_uapi_sync_t 定义及“概述/API 说明”一节。
byPass 跳过模块处理:true 跳过 CCM,false 启用 CCM。
mode 工作模式 {RK_AIQ_CCM_MODE_MANUAL, RK_AIQ_CCM_MODE_AUTO},分别为手动、自动。
stManual 手动模式属性参数配置。
stAuto 自动模式属性参数配置。
stTool 工具模式参数,无需配置。

9.12.5.7 rk_aiq_ccm_querry_info_t

【说明】定义 CCM 查询信息。

【定义】

 typedef struct rk_aiq_ccm_querry_info_s {
     bool ccm_en;
     float  ccMatrix[9];
     float  ccOffsets[3];
     float  y_alpha_curve[CCM_CURVE_DOT_NUM];
     float low_bound_pos_bit;
     float color_inhibition_level;
     float color_saturation_level;
     float finalSat;
     char  ccmname1[25];
     char  ccmname2[25];
 } rk_aiq_ccm_querry_info_t;

【成员】

成员名称 说明
ccm_en CCM 使能:true 启用,false 禁用。
ccMatrix 生效的 CCM 校正矩阵,范围 [-8,7.992]。
ccOffsets 生效的 RGB 分量偏移,范围 [-4096,4095]。
y_alpha_curve 与像素亮度(12bit)相关的色彩校正强度曲线配置。范围 [0x0,0x400],0x400 为 1 倍,0x0 不校正。
low_bound_pos_bit 像素亮度(12bit)调整曲线拐点亮度范围为 [0,2^low_bound_pos_bit] 和 [4095-2^low_bound_pos_bit,4095]。有效值 [0,10]。
color_inhibition_level CCM 色彩抑制等级(仅自动模式)。
color_saturation_level CCM 色彩饱和度等级(仅自动模式)。
finalSat 当前矩阵对应饱和度(仅支持自动模式)。
ccmname1 用于插值计算当前矩阵的标定矩阵名称(仅自动模式)。
ccmname2 用于插值计算当前矩阵的标定矩阵名称(仅自动模式)。

9.13 3DLUT

9.13.1 功能说明

3DLUT(三维查找表)模块在 RGB 空间执行图像颜色映射。

9.13.2 功能级 API 参考

9.13.2.1 rk_aiq_uapi2_setLut3dMode

【说明】设置 3DLUT 工作模式。

【语法】

 XCamReturn rk_aiq_uapi2_setLut3dMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
mode 工作模式,取值 {OP_AUTO, OP_MANUAL}。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

设置手动/自动模式参见 sample_a3dlut_module.cpp 的 sample_set_a3dlut_manual / sample_set_a3dlut_auto。

9.13.2.2 rk_aiq_uapi2_getLut3dMode

【说明】获取 3DLUT 工作模式。

【语法】

 XCamReturn rk_aiq_uapi2_getLut3dMode(const rk_aiq_sys_ctx_t* ctx, opMode_t
 *mode);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
mode 工作模式 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

原文称通过 sample_a3dlut_module.cpp 的 sample_get_a3dlut_mode 设置手动/自动模式。

9.13.2.3 rk_aiq_uapi2_setM3dLut

【说明】设置 3DLUT 手动三维查找表。

【语法】

 XCamReturn rk_aiq_uapi2_setM3dLut(const rk_aiq_sys_ctx_t* ctx,
 rk_aiq_lut3d_table_t *mlut);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
mlut 三维查找表。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

设置手动 3DLUT 查找表参见 sample_a3dlut_module.cpp 的 sample_set_a3dlut_manual_lut。

9.13.2.4 rk_aiq_uapi2_getM3dLut

【说明】获取 3DLUT 三维查找表。

【语法】

 XCamReturn rk_aiq_uapi2_getM3dLut(const rk_aiq_sys_ctx_t* ctx,
  rk_aiq_lut3d_table_t *mlut);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
mlut 三维查找表。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

获取 3DLUT 查找表参见 sample_a3dlut_module.cpp 的 sample_get_a3dlut_lut。

9.13.2.5 rk_aiq_uapi2_getA3dLutStrth

【说明】获取 3DLUT 调整强度。

【语法】

 XCamReturn rk_aiq_uapi2_getA3dLutStrth(const rk_aiq_sys_ctx_t* ctx, float alpha);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
alpha 3DLUT 调整强度。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

3DLUT 调整强度参见 sample_a3dlut_module.cpp 的 sample_get_a3dlut_strength。

9.13.2.6 rk_aiq_uapi2_getA3dLutName

【说明】获取自动模式 3DLUT 表名。

【语法】

 XCamReturn rk_aiq_uapi2_getA3dLutName(const rk_aiq_sys_ctx_t* ctx, char *name);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
name 3DLUT 表名。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

【示例】

获取自动模式 3DLUT 表名参见 sample_a3dlut_module.cpp 的 sample_get_a3dlut_lutname。

9.13.3 功能级 API 数据类型

9.13.3.1 opMode_t

【说明】定义 3DLUT 工作模式。

【定义】

 typedef enum opMode_e {
     OP_AUTO = 0,
     OP_MANUALl = 1,
     OP_INVAL
 } opMode_t;

【成员】

成员名称 说明
OP_AUTO 自动模式
OP_MANUALl 手动模式
OP_INVAL 无效值

9.13.3.2 rk_aiq_lut3d_table_t

【说明】定义 3DLUT 三维查找表。

【定义】

 typedef struct rk_aiq_lut3d_table_s{
     unsigned short look_up_table_r[729];
     unsigned short look_up_table_g[729];
     unsigned short look_up_table_b[729];
 } rk_aiq_lut3d_table_t;

【成员】

成员名称 说明
look_up_table_r 手动模式 R 通道查找表,范围 [0x0,0x3ff]。
look_up_table_g 手动模式 G 通道查找表,范围 [0x0,0xfff]。
look_up_table_b 手动模式 B 通道查找表,范围 [0x0,0x3ff]。

9.13.4 模块级 API 参考

9.13.4.1 rk_aiq_user_api2_a3dlut_SetAttrib

【说明】设置 3DLUT 属性。

【语法】

 XCamReturn rk_aiq_user_api2_a3dlut_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_lut3d_attrib_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 3DLUT 参数属性。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_a3dlut.h、rk_aiq_uapi_a3dlut_int.h。

库文件:librkaiq.so

【示例】

设置 3DLUT 属性参见 sample_a3dlut_module.cpp 的 sample_3dlut_set3dlutAttr。

9.13.4.2 rk_aiq_user_api2_a3dlut_GetAttrib

【说明】获取 3DLUT 属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_a3dlut_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_lut3d_attrib_t *attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 3DLUT 参数属性。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_a3dlut.h、rk_aiq_uapi_a3dlut_int.h。

库文件:librkaiq.so

【示例】

获取 3DLUT 属性参见 sample_a3dlut_module.cpp 的 sample_3dlut_get3dlutAttr 等。

9.13.4.3 rk_aiq_user_api2_a3dlut_Query3dlutInfo

【说明】查询 3DLUT 信息。

【语法】

 XCamReturn
 rk_aiq_user_api2_a3dlut_Query3dlutInfo(const RkAiqAlgoContext *ctx,
 rk_aiq_lut3d_querry_info_t *lut3d_querry_info );

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
lut3d_querry_info 3DLUT 查询内容。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_a3dlut.h、rk_aiq_uapi_a3dlut_int.h。

库文件:librkaiq.so

【示例】

3DLUT 信息参见 sample_a3dlut_module.cpp 的 sample_query_a3dlut_info。

9.13.5 模块级 API 数据类型

9.13.5.1 rk_aiq_lut3d_op_mode_t

【说明】定义 3DLUT 工作模式。

【定义】

 typedef enum rk_aiq_lut3d_op_mode_s {
     RK_AIQ_LUT3D_MODE_INVALID                     = 0,
     RK_AIQ_LUT3D_MODE_MANUAL                      = 1,
     RK_AIQ_LUT3D_MODE_AUTO                        = 2,
     RK_AIQ_LUT3D_MODE_MAX
 } rk_aiq_lut3d_op_mode_t;

【成员】

成员名称 说明
RK_AIQ_LUT3D_MODE_INVALID 3DLUT 无效模式。
RK_AIQ_LUT3D_MODE_MANUAL 3DLUT 手动模式。
RK_AIQ_LUT3D_MODE_AUTO 3DLUT 自动模式。

9.13.5.2 rk_aiq_lut3d_mlut3d_attrib_t

【说明】定义手动 3DLUT 属性。

【定义】

 typedef struct rk_aiq_lut3d_mlut3d_attrib_s {
     unsigned short look_up_table_r[729];
     unsigned short look_up_table_g[729];
     unsigned short look_up_table_b[729];
 } rk_aiq_lut3d_mlut3d_attrib_t;

【成员】

成员名称 说明
look_up_table_r 手动模式 R 通道查找表,范围 [0x0,0x3ff]。
look_up_table_g 手动模式 G 通道查找表,范围 [0x0,0xfff]。
look_up_table_b 手动模式 B 通道查找表,范围 [0x0,0x3ff]。

9.13.5.3 rk_aiq_lut3d_attrib_t

【说明】定义 3DLUT 属性。

【定义】

 typedef struct rk_aiq_lut3d_attrib_s {
     rk_aiq_uapi_sync_t sync;
     bool byPass;
     rk_aiq_lut3d_op_mode_t mode;
     rk_aiq_lut3d_mlut3d_attrib_t stManual;
 } rk_aiq_lut3d_attrib_t;

【成员】

成员名称 说明
sync 同步/异步信号,参见 rk_aiq_uapi_sync_t 定义及“概述/API 说明”一节。
byPass 跳过模块处理:true 跳过 3DLUT,false 启用。
mode 工作模式 {RK_AIQ_LUT3D_MODE_MANUAL, RK_AIQ_LUT3D_MODE_AUTO},分别为手动、自动。
stManual 手动模式属性参数配置。

9.13.5.4 rk_aiq_lut3d_querry_info_t

【说明】定义 3DLUT 查询信息。

【定义】

 typedef struct rk_aiq_lut3d_querry_info_s {
     bool lut3d_en;
     float alpha;
     char name[25];
     unsigned short look_up_table_r[729];
     unsigned short look_up_table_g[729];
     unsigned short look_up_table_b[729];
 } rk_aiq_lut3d_querry_info_t;

【成员】

成员名称 说明
lut3d_en 3DLUT 使能:true 启用,false 禁用。
alpha 3DLUT 调整强度,范围 [0,1.0],越大强度越高;原文末尾值 1.0。
name 3DLUT 表名,仅支持自动模式。
look_up_table_r R 通道查找表,范围 [0x0,0x3ff]。
look_up_table_g G 通道查找表,范围 [0x0,0xfff]。
look_up_table_b B 通道查找表,范围 [0x0,0x3ff]。

9.14 LDCH

9.14.1 功能说明

LDCH 恢复存在畸变的图像,仅校正水平方向畸变。

9.14.2 功能级 API 参考

9.14.2.1 rk_aiq_uapi_setLdchEn

【说明】水平畸变校正开关。

【语法】

 XCamReturn rk_aiq_uapi2_setLdchEn(const rk_aiq_sys_ctx_t* ctx, bool en);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
en 校正开关。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.14.2.2 rk_aiq_uapi2_setLdchCorrectLevel

【说明】设置水平畸变校正等级。

【语法】

 XCamReturn rk_aiq_uapi2_setLdchCorrectLevel(const rk_aiq_sys_ctx_t* ctx, int
 correctLevel);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
correctLevel 校正等级,范围 [0~255]。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_imgproc.h

库文件:librkaiq.so

9.14.3 模块级 API 参考

9.14.3.1 rk_aiq_user_api2_aldch_SetAttrib

【说明】设置 FEC 属性(原文如此,本节为 LDCH)。

【语法】

 XCamReturn
 rk_aiq_user_api2_aldch_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_ldch_attrib_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr LDCH 参数属性。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_aldch.h。

库文件:librkaiq.so

9.14.3.2 rk_aiq_user_api2_aldch_GetAttrib

【说明】获取 FEC 属性(原文如此)。

【语法】

 XCamReturn
 rk_aiq_user_api2_aldch_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_ldch_attrib_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr LDCH 参数属性。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_aldch.h。

库文件:librkaiq.so

9.14.4 模块级 API 数据类型

9.14.4.1 rk_aiq_ldch_attrib_t

【说明】LDCH 属性配置。

【定义】

 typedef struct rk_aiq_ldch_cfg_s {
     rk_aiq_uapi_sync_t sync;
     unsigned int en;
     int correct_level;
 } rk_aiq_ldch_cfg_t;

【成员】

成员名称 说明
sync 接口同步/异步功能,参见 rk_aiq_uapi_sync_t 定义及“概述/API 说明”一节。
en 启用/禁用 LDCH。
correct_level 设置 LDCH 校正等级:[0~255]。

9.15 DeBayer

9.15.1 功能说明

DeBayer 通过插值算法,将传感器采集的 CFA 图像恢复为具有完整像素信息的 RGB 图像。

模块支持 Bayer raw 的 RGGB、BGGR、GRBG、gbrg 四种排列。目前不支持 CCCB、RGB-IR 等其他 CFA 数据。

9.15.2 模块级 API 参考

9.15.2.1 rk_aiq_user_api_adebayer_SetAttrib

【说明】设置去马赛克属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_adebayer_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 adebayer_attrib_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 去马赛克属性。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_adebayer.h。

库文件:librkaiq.so

9.15.2.2 rk_aiq_user_api_adebayer_GetAttrib

【说明】获取去马赛克属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_adebayer_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 adebayer_attrib_t *attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 去马赛克属性。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_uapi2_adebayer_int.h。

库文件:librkaiq.so

9.15.3 数据类型

9.15.3.1 rk_aiq_debayer_op_mode_t

【说明】定义 debayer 工作模式。

【定义】

 typedef enum rk_aiq_debayer_op_mode_s {
     RK_AIQ_DEBAYER_MODE_INVALID                     = 0,        /**<
 initialization value */
     RK_AIQ_DEBAYER_MODE_MANUAL                      = 1,        /**< run manual
 lens shading correction */
     RK_AIQ_DEBAYER_MODE_AUTO                        = 2,        /**< run auto
 lens shading correction */
     RK_AIQ_DEBAYER_MODE_MAX
 } rk_aiq_debayer_op_mode_t;

【成员】

成员名称 说明
RK_AIQ_DEBAYER_MODE_INVALID Debayer 无效模式。
RK_AIQ_DEBAYER_MODE_MANUAL Debayer 手动模式。
RK_AIQ_DEBAYER_MODE_AUTO Debayer 自动模式。

9.15.3.2 adebayer_attrib_manual_t

【说明】定义 debayer 手动模式可配置属性。

【定义】

 typedef struct adebayer_attrib_manual_s {
     int8_t      filter1[5];
     int8_t      filter2[5];
     uint8_t     gain_offset;
     uint8_t     sharp_strength;
     uint8_t     hf_offset;
     uint8_t     offset;
     uint8_t     clip_en;
     uint8_t     filter_g_en;
     uint8_t     filter_c_en;
     uint8_t     thed0;
     uint8_t     thed1;
     uint8_t     dist_scale;
     uint8_t     cnr_strength;
     uint8_t     shift_num;
 } adebayer_attrib_manual_t;

【成员】

成员名称 说明
filter1 低频梯度滤波器,范围 [-8,7]。
filter2 高频梯度滤波器,范围 [-8,7]。
gain_offset 计算 G 通道插值系数中锐化权重时的梯度偏移,范围 [0,15]。
sharp_strength G 通道插值锐化强度,越大越强。范围 [0,4]。
hf_offset 插值方向控制:较小时平坦区容易产生伪纹理,较大时边缘更易出现锯齿。范围 [0,4095]。
offset G 通道裁剪偏移,越大裁剪范围越大。范围 [0,65535]。
clip_en G 通道插值裁剪开关:0 关闭,1 开启。
filter_g_en G 通道散点去除开关:0 关闭,1 开启。
filter_c_en 伪色去除开关:0 关闭,1 开启。
thed0 值越大,选择高频权重的概率越小。范围 [0,16]。
thed1 控制高低频权重选择;值越大,选择低频权重的概率越小。范围 [0,16]。
dist_scale 值越大,选择高频权重的概率越小。范围 [0,16]。
cnr_strength 值越大强度越大,范围 [0,9]。
shift_num 值越小,色差裁剪范围越大。范围 [0,4]。

9.15.3.3 adebayer_attrib_auto_t

【说明】定义 debayer 自动模式可配置属性。

【定义】

 typedef struct adebayer_attrib_auto_s {
     uint8_t     sharp_strength[9];
     uint8_t     low_freq_thresh;
     uint8_t     high_freq_thresh;
 } adebayer_attrib_auto_t;

【成员】

成员名称 说明
enhance_strength[9] 不同 ISO 的细节纹理增强:索引 0–8 分别对应 ISO 50、100、200、400、800、1600、3200、6400、12800。值越大,细节与清晰度越高,也会增强更多伪细节。范围 [0~7]。
low_freq_thresh 低频权重选择阈值,越大选择低频权重的概率越小。范围 [0~15]。
high_freq_thresh 高频权重选择阈值,越大选择高频权重的概率越小。范围 [0~15]。

9.15.3.4 adebayer_attrib_t

【说明】定义 debayer 可配置属性。

【定义】

 typedef struct adebayer_attrib_s {
     rk_aiq_uapi_sync_t          sync;
     uint8_t                     enable;
     rk_aiq_debayer_op_mode_t    mode;
     adebayer_attrib_manual_t    stManual;
     adebayer_attrib_auto_t      stAuto;
 } adebayer_attrib_t;

【成员】

成员名称 说明
sync 同步/异步接口模式详见 rk_aiq_uapi_sync_t 及“概述/API 说明”。
enable debayer 模块开关:0 旁路,1 开启。
mode Debayer 工作模式。
stManual Debaye 手动控制模式配置属性(保留原拼写)。
stAuto debayer 自动控制模式配置属性。

9.16 DPCC

9.16.1 功能说明

检测并消除图像坏点。详见 Rockchip_Tuning_Guide_ISP30 第 4.6 节 DPCC 的“功能说明”。

9.16.2 模块级 API 参考

9.16.2.1 rk_aiq_user_api2_adpcc_SetAttrib

【说明】设置 DPCC 软件属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_adpcc_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_dpcc_attrib_V20_t *attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr DPCC 软件属性结构。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_adpcc.h。

库文件:librkaiq.so

【说明】

9.16.2.2 rk_aiq_user_api2_adpcc_GetAttrib

【说明】获取 DPCC 软件属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_adpcc_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_dpcc_attrib_V20_t *attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr DPCC 软件属性结构。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_adpcc.h。

库文件:librkaiq.so

【说明】

9.16.3 数据类型

9.16.3.1 rk_aiq_dpcc_attrib_V20_t

【说明】定义坏点消除属性。

【定义】

 typedef struct rk_aiq_dpcc_attrib_V20_s {
     AdpccOPMode_t eMode;
     Adpcc_Auto_Attr_t stAuto;
     Adpcc_Manual_Attr_t stManual;
     rk_aiq_uapi_sync_t sync;
 } rk_aiq_dpcc_attrib_V20_t;

【成员】

成员名称 说明
eMode 定义 DPCC 工作模式,详见 AdpccOPMode_t。
stAuto 自动模式参数设置。
stManual 手动模式参数设置。
sync 接口同步/异步功能,参见 rk_aiq_uapi_sync_t 定义及“概述/API 说明”。

9.16.3.2 AdpccOPMode_t

【说明】定义 DPCC 工作模式。

【定义】

 typedef enum AdpccOPMode_e {
     ADPCC_OP_MODE_INVALID        = 0,
     ADPCC_OP_MODE_AUTO           = 1,
     ADPCC_OP_MODE_MANUAL         = 2,
     ADPCC_OP_MODE_TOOL           = 3,
     ADPCC_OP_MODE_MAX
 } AdpccOPMode_t;

【成员】

成员名称 说明
ADPCC_OP_MODE_INVALID 无效 API 模式。
ADPCC_OP_MODE_AUTO API 自动模式。
ADPCC_OP_MODE_MANUAL API 手动模式。
ADPCC_OP_MODE_TOOL API 工具模式。
ADPCC_OP_MODE_MAX  

9.16.3.3 Adpcc_basic_params_select_t

【说明】定义 DPCC 基本参数属性。

【定义】

 typedef struct Adpcc_basic_params_select_s
 {
     int           iso;
     unsigned char stage1_enable;
     unsigned char grayscale_mode;
     unsigned char enable;
     unsigned char sw_rk_out_sel;
     unsigned char sw_dpcc_output_sel;
     unsigned char stage1_rb_3x3;
     unsigned char stage1_g_3x3;
     unsigned char stage1_incl_rb_center;
     unsigned char stage1_incl_green_center;
     unsigned char stage1_use_fix_set;
     unsigned char stage1_use_set_3;
     unsigned char stage1_use_set_2;
     unsigned char stage1_use_set_1;
     unsigned char sw_rk_red_blue1_en;
     unsigned char rg_red_blue1_enable;
     unsigned char rnd_red_blue1_enable;
     unsigned char ro_red_blue1_enable;
     unsigned char lc_red_blue1_enable;
     unsigned char pg_red_blue1_enable;
     unsigned char sw_rk_green1_en;
     unsigned char rg_green1_enable;
     unsigned char rnd_green1_enable;
     unsigned char ro_green1_enable;
     unsigned char lc_green1_enable;
     unsigned char pg_green1_enable;
     unsigned char sw_rk_red_blue2_en;
     unsigned char rg_red_blue2_enable;
     unsigned char rnd_red_blue2_enable;
     unsigned char ro_red_blue2_enable;
     unsigned char lc_red_blue2_enable;
     unsigned char pg_red_blue2_enable;
     unsigned char sw_rk_green2_en;
     unsigned char rg_green2_enable;
     unsigned char rnd_green2_enable;
     unsigned char ro_green2_enable;
     unsigned char lc_green2_enable;
     unsigned char pg_green2_enable;
     unsigned char sw_rk_red_blue3_en;
     unsigned char rg_red_blue3_enable;
     unsigned char rnd_red_blue3_enable;
     unsigned char ro_red_blue3_enable;
     unsigned char lc_red_blue3_enable;
     unsigned char pg_red_blue3_enable;
     unsigned char sw_rk_green3_en;
     unsigned char rg_green3_enable;
     unsigned char rnd_green3_enable;
     unsigned char ro_green3_enable;
     unsigned char lc_green3_enable;
     unsigned char pg_green3_enable;
     unsigned char sw_mindis1_rb;
     unsigned char sw_mindis1_g;
     unsigned char line_thr_1_rb;
     unsigned char line_thr_1_g;
     unsigned char sw_dis_scale_min1;
     unsigned char sw_dis_scale_max1;
     unsigned char line_mad_fac_1_rb;
     unsigned char line_mad_fac_1_g;
     unsigned char pg_fac_1_rb;
     unsigned char pg_fac_1_g;
     unsigned char rnd_thr_1_rb;
     unsigned char rnd_thr_1_g;
     unsigned char rg_fac_1_rb;
     unsigned char rg_fac_1_g;
     unsigned char sw_mindis2_rb;
     unsigned char sw_mindis2_g;
     unsigned char line_thr_2_rb;
     unsigned char line_thr_2_g;
     unsigned char sw_dis_scale_min2;
     unsigned char sw_dis_scale_max2;
     unsigned char line_mad_fac_2_rb;
     unsigned char line_mad_fac_2_g;
     unsigned char pg_fac_2_rb;
     unsigned char pg_fac_2_g;
     unsigned char rnd_thr_2_rb;
     unsigned char rnd_thr_2_g;
     unsigned char rg_fac_2_rb;
     unsigned char rg_fac_2_g;
     unsigned char sw_mindis3_rb;
     unsigned char sw_mindis3_g;
     unsigned char line_thr_3_rb;
     unsigned char line_thr_3_g;
     unsigned char sw_dis_scale_min3;
     unsigned char sw_dis_scale_max3;
     unsigned char line_mad_fac_3_rb;
     unsigned char line_mad_fac_3_g;
     unsigned char pg_fac_3_rb;
     unsigned char pg_fac_3_g;
     unsigned char rnd_thr_3_rb;
     unsigned char rnd_thr_3_g;
     unsigned char rg_fac_3_rb;
     unsigned char rg_fac_3_g;
     unsigned char ro_lim_3_rb;
     unsigned char ro_lim_3_g;
     unsigned char ro_lim_2_rb;
     unsigned char ro_lim_2_g;
     unsigned char ro_lim_1_rb;
     unsigned char ro_lim_1_g;
     unsigned char rnd_offs_3_rb;
     unsigned char rnd_offs_3_g;
     unsigned char rnd_offs_2_rb;
     unsigned char rnd_offs_2_g;
     unsigned char rnd_offs_1_rb;
     unsigned char rnd_offs_1_g;
 } Adpcc_basic_params_select_t;

9.16.3.4 Adpcc_basic_params_t

【说明】定义 DPCC 基本参数属性。

【定义】

 typedef struct Adpcc_basic_params_s
 {
     Adpcc_basic_params_select_t arBasic[DPCC_MAX_ISO_LEVEL];
 } Adpcc_basic_params_t;

【成员】

成员名称 说明
arBasic DPCC 基本参数。

9.16.3.5 Adpcc_bpt_params_t

【说明】定义自动 DPCC 属性。

【定义】

 typedef struct Adpcc_bpt_params_s
 {
     unsigned char      bpt_rb_3x3;
     unsigned char      bpt_g_3x3;
     unsigned char      bpt_incl_rb_center;
     unsigned char      bpt_incl_green_center;
     unsigned char      bpt_use_fix_set;
     unsigned char      bpt_use_set_3;
     unsigned char      bpt_use_set_2;
     unsigned char      bpt_use_set_1;
     unsigned char      bpt_cor_en;
     unsigned char      bpt_det_en;
     unsigned short int bp_number;
     unsigned short int bp_table_addr;
     unsigned short int bpt_v_addr;
     unsigned short int bpt_h_addr;
     unsigned int       bp_cnt;
 } Adpcc_bpt_params_t;

9.16.3.6 dpcc_pdaf_point_t

【说明】

【定义】

 typedef struct dpcc_pdaf_point_s
 {
     unsigned char y;
     unsigned char x;
 } dpcc_pdaf_point_t;

模块尚未实现。

9.16.3.7 Adpcc_pdaf_params_t

【说明】定义自动模式 PDAF 属性。

【定义】

 typedef struct Adpcc_pdaf_params_s
 {
     unsigned char      sw_pdaf_en;
     unsigned char      pdaf_point_en[DPCC_PDAF_POINT_NUM];
     unsigned short int pdaf_offsety;
     unsigned short int pdaf_offsetx;
     unsigned char      pdaf_wrapy;
     unsigned char      pdaf_wrapx;
     unsigned short int pdaf_wrapy_num;
     unsigned short int pdaf_wrapx_num;
     dpcc_pdaf_point_t  point[DPCC_PDAF_POINT_NUM];
     unsigned char      pdaf_forward_med;
 } Adpcc_pdaf_params_t;

模块尚未实现。

9.16.3.8 CalibDb_Dpcc_Fast_Mode_t

【说明】定义自动模式中的 Fast 模式属性。

【定义】

 typedef struct CalibDb_Dpcc_Fast_Mode_s
 {
     int fast_mode_en;
     int ISO[CALIBDB_DPCC_MAX_ISO_LEVEL];
     int fast_mode_single_en;
     int fast_mode_single_level[CALIBDB_DPCC_MAX_ISO_LEVEL];
     int fast_mode_double_en;
     int fast_mode_double_level[CALIBDB_DPCC_MAX_ISO_LEVEL];
     int fast_mode_triple_en;
     int fast_mode_triple_level[CALIBDB_DPCC_MAX_ISO_LEVEL];
 } CalibDb_Dpcc_Fast_Mode_t;

【成员】

成员名 说明
Fast_mode_enable Fast_mode 开关:0 关闭,1 开启。
ISO 环境 ISO。
fast_mode_single_en 单坏点去除开关:0 关闭,1 开启。
fast_mode_single_level 单坏点去除强度,范围 [0,10]。
fast_mode_double_en 双坏点去除开关:0 关闭,1 开启。
fast_mode_double_level 双坏点去除强度,范围 [0,10]。
fast_mode_triple_en 多坏点去除开关:0 关闭,1 开启。
fast_mode_triple_level 多坏点去除强度,范围 [0,10]。

9.16.3.9 CalibDb_Dpcc_Sensor_t

【说明】定义自动模式中的 Fast 模式属性。

【定义】

 typedef struct CalibDb_Dpcc_Sensor_s
 {
     float en;
     float max_level;
     float iso[CALIBDB_DPCC_MAX_ISO_LEVEL];
     float level_single[CALIBDB_DPCC_MAX_ISO_LEVEL];
     float level_multiple[CALIBDB_DPCC_MAX_ISO_LEVEL];
 } CalibDb_Dpcc_Sensor_t;

【成员】

成员名 说明
en Sensor DPCC 开关:0 关闭,1 开启。
max_level 坏点去除最大强度。
iso 环境 ISO。
level_single 单坏点去除强度。
level_multiple 多坏点去除强度。

9.16.3.10 Adpcc_bpt_params_select_t

【说明】定义自动模式选中的 Fast 模式属性。

【定义】

 typedef Adpcc_bpt_params_t Adpcc_bpt_params_select_t;

9.16.3.11 Adpcc_pdaf_params_select_t

【说明】定义自动模式选中的 PDAF 属性。

【定义】

 typedef Adpcc_pdaf_params_t Adpcc_pdaf_params_select_t

9.16.3.12 Adpcc_Auto_Attr_t

【说明】定义自动 DPCC 属性。

【定义】

 typedef struct Adpcc_Auto_Attr_s
 {
     Adpcc_basic_params_t        stBasicParams;
     Adpcc_bpt_params_t          stBptParams;
     Adpcc_pdaf_params_t         stPdafParams;
     CalibDb_Dpcc_Fast_Mode_t    stFastMode;
     CalibDb_Dpcc_Sensor_t       stSensorDpcc;
     Adpcc_basic_params_select_t stBasicSelect;
     Adpcc_bpt_params_select_t   stBptSelect;
     Adpcc_pdaf_params_select_t  stPdafSelect;
 } Adpcc_Auto_Attr_t;

【成员】

成员名称 说明
stBasicParams 自动模式基本参数。
stBptParams 自动模式坏点参数。
stPdafParams 自动模式 PDAF 参数。
stFastMode 自动模式快速模式参数。
stSensorDpcc 自动模式传感器坏点功能参数。
stBasicSelect 自动模式选中的基本参数。
stBptSelect 自动模式选中的坏点参数。
stPdafSelect 自动模式选中的 PDAF 参数。

9.16.3.13 Adpcc_fast_mode_attr_t

【说明】定义手动模式的快速模式属性。

【定义】

 typedef struct Adpcc_fast_mode_attr_s
 {
     bool fast_mode_en;
     bool fast_mode_single_en;
     int  fast_mode_single_level;
     bool fast_mode_double_en;
     int  fast_mode_double_level;
     bool fast_mode_triple_en;
     int  fast_mode_triple_level;
 } Adpcc_fast_mode_attr_t;

【成员】

成员名 说明
Fast_mode_en Fast_mode 开关。
fast_mode_single_en 单坏点去除开关。
fast_mode_single_level 单坏点去除强度,范围 [0,10]。
fast_mode_double_en 双坏点去除开关。
fast_mode_double_level 双坏点去除强度,范围 [0,10]。
fast_mode_triple_en 多坏点去除开关。
fast_mode_triple_level 多坏点去除强度,范围 [0,10]。

9.16.3.14 Adpcc_sensor_dpcc_attr_t

【说明】定义手动模式传感器坏点功能属性。

【定义】

 typedef struct Adpcc_sensor_dpcc_attr_s
 {
     bool en;
     int  max_level;
     int  single_level;
     int  double_level;
 } Adpcc_sensor_dpcc_attr_t;

【成员】

成员名 说明
en 传感器 DPCC 开关。
max_level 坏点去除最大强度。
single_level 单坏点去除强度。
double_level 多坏点去除强度。

9.16.3.15 Adpcc_Manual_Attr_t

【说明】定义手动 DPCC 属性。

【定义】

 typedef struct Adpcc_Manual_Attr_s
 {
     unsigned char enable;
     Adpcc_onfly_cfg_t stOnfly;
     Adpcc_bpt_params_select_t   stBpt;
     Adpcc_pdaf_params_select_t  stPdaf;
     Adpcc_sensor_dpcc_attr_t    stSensorDpcc;
 } Adpcc_Manual_Attr_t;

【成员】

成员名称 说明
enable 手动模式 DPCC 开关。
stOnfly 手动模式 ISP DPCC 动态坏点检测与校正参数。
stBptParams 手动模式 ISP DPCC 静态坏点校正参数。
stPdafParams 手动模式 ISP DPCC PDAF SPC 功能参数。
stSensorDpcc 手动模式传感器侧 DPCC 坏点校正参数。

9.16.3.16 Adpcc_onfly_cfg_t

【说明】定义手动 DPCC 基本参数。

【定义】

 typedef struct Adpcc_onfly_cfg_s {
    Adpcc_onfly_mode_t mode;
    Adpcc_fast_mode_attr_t fast_mode;
    Adpcc_basic_cfg_params_t expert_mode;
 } Adpcc_onfly_cfg_t;

【成员】

成员名称 说明
mode 快速模式或专家模式。
fastmode 手动模式的快速模式参数设置。
expert_mode 专家模式参数设置。

9.16.3.17 Adpcc_onfly_mode_t

【说明】定义手动 DPCC 基本参数。

【定义】

 typedef enum Adpcc_onfly_mode_e {
     ADPCC_ONFLY_MODE_FAST        = 0,                   /**< dpcc manual fast
 mode */
     ADPCC_ONFLY_MODE_EXPERT      = 1,                   /**< dpcc manual expert
 mode */
     ADPCC_ONFLY_MODE_MAX                                /**< max */
 } Adpcc_onfly_mode_t;

【成员】

成员名称 说明
ADPCC_ONFLY_MODE_FAST 快速模式。
ADPCC_ONFLY_MODE_EXPERT 专家模式。
ADPCC_ONFLY_MODE_MAX 无效参数设置。

9.16.3.18 CalibDb_Dpcc_Pdaf_t

【说明】定义工具 PDAF SPC 功能属性参数。

【定义】

 typedef struct CalibDb_Dpcc_Pdaf_s
 {
     unsigned char      en;
     unsigned char      point_en[16];
     unsigned short int offsetx;
     unsigned short int offsety;
     unsigned char      wrapx;
     unsigned char      wrapy;
     unsigned short int wrapx_num;
     unsigned short int wrapy_num;
     unsigned char      point_x[16];
     unsigned char      point_y[16];
     unsigned char      forward_med;
 } CalibDb_Dpcc_Pdaf_t;

9.16.3.19 CalibDb_Dpcc_set_RK_t

【说明】定义 RK 算法属性。

【定义】

 typedef struct CalibDb_Dpcc_set_RK_s
 {
     unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char rb_sw_mindis[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char g_sw_mindis[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char sw_dis_scale_min[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char sw_dis_scale_max[CALIBDB_DPCC_MAX_ISO_LEVEL];
 } CalibDb_Dpcc_set_RK_t;

【成员】

成员名称 说明
rb_enable 红、蓝通道坏点检测开关。
g_enable 绿色通道坏点检测开关。
rb_sw_mindis 红、蓝通道坏点阈值 1。
g_sw_mindis 绿色通道坏点阈值 1。
sw_dis_scale_min 坏点阈值 2。
sw_dis_scale_max 坏点阈值 3。

9.16.3.20 CalibDb_Dpcc_set_LC_t

【说明】定义 LC 算法属性。

【定义】

 typedef struct CalibDb_Dpcc_set_LC_s
 {
     unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char rb_line_thr[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char g_line_thr[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char rb_line_mad_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char g_line_mad_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
 } CalibDb_Dpcc_set_LC_t;

【成员】

成员名称 说明
rb_enable 红、蓝通道坏点检测开关。
g_enable 绿色通道坏点检测开关。
rb_line_thr 红、蓝通道坏点阈值 1。
g_line_thr 绿色通道坏点阈值 1。
rb_line_mad_fac 红、蓝通道坏点阈值 2。
g_line_mad_fac 绿色通道坏点阈值 2。

9.16.3.21 CalibDb_Dpcc_set_PG_t

【说明】定义 PG 算法属性。

【定义】

 typedef struct CalibDb_Dpcc_set_PG_s
 {
     unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char rb_pg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char g_pg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
 } CalibDb_Dpcc_set_PG_t;

【成员】

成员名称 说明
rb_enable 红、蓝通道坏点检测开关。
g_enable 绿色通道坏点检测开关。
rb_pg_fac 红、蓝通道坏点阈值。
g_pg_fac 绿色通道坏点阈值。

9.16.3.22 CalibDb_Dpcc_set_RND_t

【说明】定义 RND 算法属性。

【定义】

 typedef struct CalibDb_Dpcc_set_RND_s
 {
     unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char rb_rnd_thr[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char g_rnd_thr[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char rb_rnd_offs[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char g_rnd_offs[CALIBDB_DPCC_MAX_ISO_LEVEL];
 } CalibDb_Dpcc_set_RND_t;

【成员】

成员名称 说明
rb_enable 红、蓝通道坏点检测开关。
g_enable 绿色通道坏点检测开关。
rb_rnd_thr 红、蓝通道坏点阈值 1。
g_rnd_thr 绿色通道坏点阈值 1。
rb_rnd_offs 红、蓝通道坏点阈值 2。
g_rnd_offs 绿色通道坏点阈值 2。

9.16.3.23 CalibDb_Dpcc_set_RG_t

【说明】定义 RK 算法属性。

【定义】

 typedef struct CalibDb_Dpcc_set_RG_s
 {
     unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char rb_rg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char g_rg_fac[CALIBDB_DPCC_MAX_ISO_LEVEL];
 } CalibDb_Dpcc_set_RG_t;

【成员】

成员名称 说明
rb_enable 红、蓝通道坏点检测开关。
g_enable 绿色通道坏点检测开关。
rb_rg_fac 红、蓝通道坏点阈值。
g_rg_fac 绿色通道坏点阈值。

9.16.3.24 CalibDb_Dpcc_set_RO_t

【说明】定义 RO 算法属性。

【定义】

 typedef struct CalibDb_Dpcc_set_RO_s
 {
     unsigned char rb_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char g_enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char rb_ro_lim[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char g_ro_lim[CALIBDB_DPCC_MAX_ISO_LEVEL];
 } CalibDb_Dpcc_set_RO_t;

【成员】

成员名称 说明
rb_enable 红、蓝通道坏点检测开关。
g_enable 绿色通道坏点检测开关。
rb_ro_lim 红、蓝通道坏点阈值。
g_ro_lim 绿色通道坏点阈值。

9.16.3.25 CalibDb_Dpcc_set_t

【说明】定义坏点条件属性。

【定义】

 typedef struct CalibDb_Dpcc_set_s
 {
     CalibDb_Dpcc_set_RK_t  rk;
     CalibDb_Dpcc_set_LC_t  lc;
     CalibDb_Dpcc_set_PG_t  pg;
     CalibDb_Dpcc_set_RND_t rnd;
     CalibDb_Dpcc_set_RG_t  rg;
     CalibDb_Dpcc_set_RO_t  ro;
 } CalibDb_Dpcc_set_t;

【成员】

成员名称 说明
rk RK 算法。
lc LC 算法。
pg PG 算法。
rnd RND 算法。
rg RG 算法。
ro RO 算法。

9.16.3.26 CalibDb_Dpcc_Expert_Mode_t

【说明】定义工具专家模式属性。

【定义】

 typedef struct CalibDb_Dpcc_Expert_Mode_s
 {
     float              iso[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char      stage1_Enable[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char      grayscale_mode;
     unsigned char      rk_out_sel[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char      dpcc_out_sel[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char      stage1_rb_3x3[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char      stage1_g_3x3[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char      stage1_inc_rb_center[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char      stage1_inc_g_center[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char      stage1_use_fix_set[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char      stage1_use_set3[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char      stage1_use_set2[CALIBDB_DPCC_MAX_ISO_LEVEL];
     unsigned char      stage1_use_set1[CALIBDB_DPCC_MAX_ISO_LEVEL];
     CalibDb_Dpcc_set_t set[3];
 } CalibDb_Dpcc_Expert_Mode_t;

【成员】

成员名 说明
iso 环境 ISO。
stage1_Enable 默认值 1。
grayscale_mode 黑白模式开关:0 关闭,1 开启。
rk_out_sel RK 坏点判定模式:0 为模式 1,1 为模式 2,2 为模式 3。
dpcc_out_sel 坏点校正模式:0 中值,1 RK 模式。
stage1_rb_3x3 默认值 0。
stage1_g_3x3 默认值 0。
stage1_inc_rb_center 默认值 1。
stage1_inc_g_center 默认值 1。
stage1_use_fix_set 内置坏点条件开关:0 关闭,1 开启。
stage1_use_set3 set_cell 中第三组坏点判定条件开关:0 关闭,1 开启。
stage1_use_set2 set_cell 中第二组坏点判定条件开关:0 关闭,1 开启。
stage1_use_set1 set_cell 中第一组坏点判定条件开关:0 关闭,1 开启。

9.16.3.27 CalibDb_Dpcc_t

【说明】定义工具 DPCC 属性。

【定义】

 typedef struct CalibDb_Dpcc_s
 {
     int                        enable;
     char                       version[64];
     CalibDb_Dpcc_Fast_Mode_t   fast;
     CalibDb_Dpcc_Expert_Mode_t expert;
     CalibDb_Dpcc_Pdaf_t        pdaf;
     CalibDb_Dpcc_Sensor_t      sensor_dpcc;
 } CalibDb_Dpcc_t;

【成员】

成员名称 说明
enable 开关功能
版本 版本
fast 快速模式。
expert 专家模式。
pdaf PADF SPC 功能模式的坏点条件(PADF 为原文拼写)。
sensor_dpcc 传感器侧 DPCC 坏点校正参数。

9.16.3.28 rk_aiq_dpcc_attrib_t

【说明】定义 DPCC 属性。

【定义】

 typedef struct rk_aiq_dpcc_attrib_s
 {
     AdpccOPMode_t       eMode;
     Adpcc_Auto_Attr_t   stAuto;
     Adpcc_Manual_Attr_t stManual;
     CalibDb_Dpcc_t      stTool;
 } rk_aiq_dpcc_attrib_t;

【成员】

成员名称 说明
eMode API 模式
stAuto 自动 DPCC 模式。
stManual 手动 DPCC 模式。
stTool 工具 DPCC 模式。

9.17 LSC

9.17.1 功能说明

镜头阴影校正解决镜头光学特性及折射不均匀引起的周边阴影。

9.17.2 模块级 API 参考

9.17.2.1 rk_aiq_user_api2_alsc_SetAttrib

【说明】设置镜头阴影校正属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_alsc_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_lsc_attrib_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 镜头阴影校正属性。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_alsc.h。

库文件:librkaiq.so

9.17.2.2 rk_aiq_user_api2_alsc_GetAttrib

【说明】获取镜头阴影校正属性。

【语法】

 XCamReturn
 rk_aiq_user_api2_adebayer_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_lsc_attrib_t *attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr 镜头阴影校正属性。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_alsc.h。

库文件:librkaiq.so

9.17.3 数据类型

9.17.3.1 rk_aiq_lsc_attrib_t

【说明】定义 ISP 镜头阴影校正属性。

【定义】

 typedef struct rk_aiq_lsc_attrib_s {
     bool byPass;
     rk_aiq_lsc_op_mode_t mode;
     rk_aiq_lsc_mlsc_attrib_t stManual;
     rk_aiq_uapi_sync_t sync;
 } rk_aiq_lsc_attrib_t;

【成员】

成员名称 说明
sync 接口同步/异步功能,参见 rk_aiq_uapi_sync_t 定义及“概述/API 说明”一节。
byPass LSC 模块使能:1 关闭,0 启用。
mode 模式设置。
stManual 手动模式参数设置。

9.17.3.2 rk_aiq_lsc_op_mode_t

【说明】定义 ISP 镜头阴影校正工作模式。

【定义】

 typedef enum rk_aiq_lsc_op_mode_s {
     RK_AIQ_LSC_MODE_INVALID                     = 0,        /**< initialization
 value */
     RK_AIQ_LSC_MODE_MANUAL                      = 1,        /**< run manual lens
 shading correction */
     RK_AIQ_LSC_MODE_AUTO                        = 2,        /**< run auto lens
 shading correction */
     RK_AIQ_LSC_MODE_MAX
 } rk_aiq_lsc_op_mode_t;

【成员】

成员名称 说明
RK_AIQ_LSC_MODE_INVALID 无效模式。
RK_AIQ_LSC_MODE_MANUAL 手动模式
RK_AIQ_LSC_MODE_AUTO 自动模式

9.17.3.3 rk_aiq_lsc_table_t

【说明】定义 ISP 镜头阴影校正表。

【定义】

 typedef struct rk_aiq_lsc_table_s {
     unsigned short r_data_tbl[LSC_DATA_TBL_SIZE];
     unsigned short gr_data_tbl[LSC_DATA_TBL_SIZE];
     unsigned short gb_data_tbl[LSC_DATA_TBL_SIZE];
     unsigned short b_data_tbl[LSC_DATA_TBL_SIZE];
 } rk_aiq_lsc_table_t;

【成员】

成员名称 说明
r_data_tbl R 分量校正表,元素数量 [17×17],范围 [1~7.99];高 3 bit 为整数,低 8 bit 为小数。
gr_data_tbl GR 分量校正表,元素数量 [17×17],范围 [1~7.99];高 3 bit 为整数,低 8 bit 为小数。
gb_data_tbl GB 分量校正表,元素数量 [17×17],范围 [1~7.99];高 3 bit 为整数,低 8 bit 为小数。
b_data_tbl B 分量校正表,元素数量 [17×17],范围 [1~7.99];高 3 bit 为整数,低 8 bit 为小数。

9.18 GIC

9.18.1 功能说明

GIC 校正 Gr、Gb 两通道失衡,改善部分场景的图像质量。

9.18.2 模块级 API 参考

9.18.2.1 rk_aiq_user_api2_agic_v2_SetAttrib

【说明】设置 GIC 软件属性。

【语法】

 XCamReturn rk_aiq_user_api2_agic_v2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 const rkaiq_gic_v2_api_attr_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr GIC 软件属性结构。 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_agic.h。

库文件:librkaiq.so

【说明】

Not.

9.18.2.2 rk_aiq_user_api2_agic_v2_GetAttrib

【说明】获取 gamma 软件属性。

【语法】

 XCamReturn rk_aiq_user_api2_agic_v2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rkaiq_gic_v2_api_attr_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr GIC 软件属性结构。 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_agic.h。

库文件:librkaiq.so

【说明】

9.18.3 模块级 API 数据类型

9.18.3.1 rkaiq_gic_api_op_mode_t

【说明】定义 GIC 工作模式。

【定义】

   typedef enum rkaiq_gic_api_op_mode_e {
       RKAIQ_GIC_API_OPMODE_OFF    = 0,
       RKAIQ_GIC_API_OPMODE_AUTO   = 1,
       RKAIQ_GIC_API_OPMODE_MANUAL = 2,
   } rkaiq_gic_api_op_mode_t;

【成员】

成员名称 说明
RKAIQ_GIC_API_OPMODE_OFF GIC 关闭模式
RKAIQ_GIC_API_OPMODE_AUTO API 手动模式。
RKAIQ_GIC_API_OPMODE_MANUAL 手动模式

9.18.3.2 rkaiq_gic_v2_param_selected_t

【说明】定义 RK3588 下的自动/手动属性

【定义】

   typedef struct rkaiq_gic_v2_param_selected_s {
       uint32_t iso;
       uint8_t bypass;
       uint8_t gr_ratio;
       uint16_t min_busy_thre;
       uint16_t min_grad_thr1;
       uint16_t min_grad_thr2;
       uint16_t k_grad1;
       uint16_t k_grad2;
       uint16_t gb_thre;
       uint16_t maxCorV;
       uint16_t maxCorVboth;
       uint16_t dark_thre;
       uint16_t dark_threHi;
       uint16_t k_grad1_dark;
       uint16_t k_grad2_dark;
       uint16_t min_grad_thr_dark1;
       uint16_t min_grad_thr_dark2;
       float NoiseScale;
       float NoiseBase;
       float noiseCurve_0;
       float noiseCurve_1;
       float globalStrength;
       uint16_t diff_clip;
   } rkaiq_gic_v2_param_selected_t;

【成员】

成员名称 说明
iso 环境 ISO
byPass 保留,未使用
gr_ratio 保留,未使用
min_busy_thre 繁忙区域检测能力,范围 [0, 1023],默认值 160
min_grad_thr1 非边缘区域数量阈值 1,用于控制 GIC 强度,范围 [0, 1023],默认值 32
min_grad_thr2 非边缘区域数量阈值 2,用于控制 GIC 强度,范围 [0, 1023],默认值 32
k_grad1 边缘(水平和垂直梯度)响应阈值 1,范围 [0, 15],默认值 5
k_grad2 边缘(水平和垂直梯度)响应阈值 2,范围 [0, 15],默认值 1
gb_thre 缩放系数,范围 [0, 15],默认值 7
maxCorV 限制边缘区域 GB 最大补偿值,范围 [0, 1023],默认值 40
maxCorVboth 限制平坦(非边缘)区域 GB 最大补偿值,范围 [0, 1023],默认值 8
dark_thre 暗区阈值 1,范围 [0, 2047],默认值 120
dark_threHi 暗区阈值 2,范围 [0, 2047],默认值 240
k_grad1_dark 图像暗部边缘(水平和垂直梯度)响应阈值 1,范围 [0, 15],默认值 6
k_grad2_dark 图像暗部边缘(水平和垂直梯度)响应程度阈值 2,范围 [0, 15],默认值 1
min_grad_thr_dark1 图像暗部非边缘区域数量阈值 1,范围 [0, 1023],默认值 64
min_grad_thr_dark2 图像暗部非边缘区域数量阈值 2,范围 [0, 1023],默认值 32
noiseCurve_0 噪声曲线参数 1
noiseCurve_1 噪声曲线参数 2
globalStrength 全局调节 GB 补偿值强度,范围 [0, 2],默认值 1
成员名称 说明
NoiseScale 根据噪声曲线取得当前点噪声标准差,以 noise_std *noise_scale 确定 GB 最大补偿值
NoiseBase 对图像边缘进行惩罚的调节阈值:在第一、第二梯度计算结果中加上 noise_offset 后比较;只要某一方向满足 gradx>2*grady 就判为边缘,不作调节
diff_clip 限制 GB 最大补偿值

9.18.3.3 rkaiq_gic_v2_api_attr_t

【说明】定义 GIC 属性

【定义】

   typedef struct rkaiq_gic_v2_api_attr_s {
       rk_aiq_uapi_sync_t sync;
       uint8_t gic_en;
       rkaiq_gic_api_op_mode_t op_mode;
       uint32_t iso_cnt;
       rkaiq_gic_v2_param_selected_t auto_params[RKAIQ_GIC_MAX_ISO_CNT];
       rkaiq_gic_v2_param_selected_t manual_param;
   } rkaiq_gic_v2_api_attr_t;

【成员】

成员名称 说明
sync rk_aiq_uapi_sync_t 的定义参见“概述/API 说明”。
gic_en 开关
op_mode 工作模式
iso_cnt 自动参数中的 ISO 数量
auto_params 自动参数,每个 ISO 一组,软件根据 ISO 插值自动计算
manual_param 手动参数,固定使用此组参数

9.19 CGC

9.19.1 功能说明

CGC(Color Gamut Compression,色域压缩)用于设置色域压缩参数。

9.19.2 功能级 API 参考

9.19.3 模块级 API 参考

9.19.3.1 rk_aiq_user_api2_acgc_SetAttrib

【说明】

设置 CGC 模块属性

【语法】

 XCamReturn rk_aiq_user_api2_acgc_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_uapi_acgc_attrib_t attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr CGC 模块属性 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_acgc.h

库文件:librkaiq.so

【注意事项】

attr.param.op_mode = RK_AIQ_OP_MODE_AUTO 时使用 AIQ 内置的 CGC 默认参数;attr.param.op_mode = RK_AIQ_OP_MODE_MANUAL 时可配置 CGC 参数。

9.19.3.2 rk_aiq_user_api2_acgc_GetAttrib

【说明】

获取 CGC 模块当前属性

【语法】

 XCamReturn rk_aiq_user_api2_acgc_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
 rk_aiq_uapi_acgc_attrib_t* attr);

【参数】

参数名称 说明 输入/输出
sys_ctx AIQ 上下文指针 输入
attr CGC 模块属性 输出

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api2_acgc.h

库文件:librkaiq.so

9.19.4 模块级 API 数据类型

9.19.4.1 rk_aiq_uapi_acgc_attrib_t

【说明】定义 CGC 模块 API 参数

【定义】

 typedef struct rk_aiq_uapi_acgc_attrib_s {
     rk_aiq_uapi_sync_t sync;
     rk_aiq_acgc_params_t param;
 } rk_aiq_uapi_acgc_attrib_t;

【成员】

成员名称 说明
sync rk_aiq_uapi_sync_t 的定义参见“概述/API 说明”。
rk_aiq_acgc_params_t cgc 参数

9.19.4.2 rk_aiq_acgc_params_t

【说明】定义 CGC 模块参数

【定义】

 typedef struct __cgc_param {
     RKAiqOPMode_t op_mode;
     bool cgc_ratio_en;
     bool cgc_yuv_limit;
 } Cgc_Param_t;
 typedef Cgc_Param_t rk_aiq_acgc_params_t;

【成员】

成员名称 说明
op_mode 模式:RK_AIQ_OP_MODE_AUTO(使用 AIQ 内置参数)或 RK_AIQ_OP_MODE_MANUAL(使用用户可配置参数)
cgc_ratio_en 是否启用色域压缩模式,默认值:FALSE
cgc_yuv_limit 是否输出有限范围;cgc_yuv_limit = FALSE 时旁路 CGC,默认值:FALSE

10. Statistics

10.1 概述

ISP30 支持通过图像数据处理获得 AWB/AE/AF 3A 控制算法所需的相关统计信息,大致如下:

英文原稿技术图 — PDF p.387

10.2 功能说明

10.2.1 AE 统计

AE 硬件统计主要包括以下部分:

基于 RAW 域的 256 段加权直方图统计,以及分块 R/G/B/Y 均值统计;

10.2.1.1 基于 RAW 图像的 AE 统计

模块统计分为分块亮度统计和直方图统计。根据支持的块大小及是否具备独立子窗口统计,统计模式分为 big 和 lite。

big 模式:非独立子窗口分块最大支持 15X15,最小支持 1X1,每块输出 10bit R/B 通道亮度均值和 12bit G 通道均值,默认 15X15 分块;同时可设置 4 个独立子窗口,每个独立子窗口输出 29-bit R/B 通道亮度和及 32-bit G 通道和,软件需除以各独立子窗口的像素数才能得到亮度均值。此模式的加权直方图统计基于分块数量和相应权重,各亮度段有效像素计数为 28bit。

lite 模式:非独立子窗口分块最大支持 5X5,最小支持 1X1,每块输出 10bit R/B 通道亮度均值和 12bit G 通道均值,默认 5X5 分块;不支持设置独立子窗口。此模式的加权直方图统计基于分块数量和相应权重,各亮度段有效像素计数为 28bit。

3588 平台默认非 HDR 曝光模式使用 BIG(15X15 非独立子窗口);HDR 2 帧模式使用 BIG(15X15 非独立子窗口);HDR 3 帧模式的短帧和长帧使用 BIG(15X15 非独立子窗口),中帧使用 LITE(5X5 非独立子窗口)。

10.2.2 AWB 统计

AWB 硬件统计的数据来源:

HDR 多帧模式下,支持从 L/M/S 三个通道中选择一个。

线性模式下只有一个数据通道。

对 Raw-BLC-LSC 之后的数据进行统计。

AWB 硬件统计包括白点统计和分块统计。

白点统计

记录主窗口内 7 种光源、2 种大小白区的 RGins 和 BGains 累加值及数量。

记录子窗口内 4 种光源、2 种大小白区的 RGins 和 BGains 累加值及数量。

累加 4 个 UV 或 XY 域附加框中的 RGin、BGain,并累加 RGins 数量(数量描述按原文保留)。

分块统计:图像划分为 15x15 块,各块统计全部点或白点的 R、G、B 均值。

10.2.3 AF 统计

AFHW Stats 硬件统计:

HDR 多帧模式下,支持从 L/M/S 三个通道中选择一个,也支持以三通道合成后的数据作为输入。

线性模式下只有一个数据通道。

支持水平方向 2 个可配置频带的 FV 输出,以及垂直方向 2 个可配置频带的 FV 输出。

ISP30 AF 硬件统计模块框图

英文原稿技术图 — PDF p.388

10.3 API 参考

10.3.1 rk_aiq_uapi_sysctl_get3AStatsBlk

【说明】

同步获取 3A 统计信息。

【语法】

 XCamReturn
 rk_aiq_uapi_sysctl_get3AStatsBlk(const rk_aiq_sys_ctx_t* ctx, rk_aiq_isp_stats_t
 **stats, int timeout_ms);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
stats 统计结构体指针 输出
timeout_ms 超时时间,-1 表示无限等待直到有统计信息 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api_sysctl.h

库文件:librkaiq.so

10.3.2 rk_aiq_uapi_sysctl_release3AStatsRef

【说明】

释放已获取的 3A 统计信息,与 rk_aiq_uapi_sysctl_get3AStatsBlk 配套使用。

【语法】

 void
 rk_aiq_uapi_sysctl_release3AStatsRef(const rk_aiq_sys_ctx_t* ctx,
 rk_aiq_isp_stats_t *stats);

【参数】

参数名称 说明 输入/输出
ctx AIQ 上下文指针 输入
stats 统计结构体指针 输入

【返回值】

返回值 说明
0 成功
非 0 失败,见错误码表

【依赖】

头文件:rk_aiq_user_api_sysctl.h

库文件:librkaiq.so

参考代码

SDK 路径:external/camera_engine_rkaiq/rkisp_demo/demo/af_algo_demo

10.4 数据类型

10.4.1 rk_aiq_isp_stats_t

【说明】AIQ 3A 统计

【定义】

 typedef struct {
     rk_aiq_isp_aec_stats_t aec_stats;
     rk_aiq_isp_awb_stats2_v3x_t awb_stats_v3x;
     rk_aiq_isp_af_stats_t  af_stats;
 } rk_aiq_isp_stats_t;

【成员】

成员名称 说明
aec_stats AE 统计
rk_aiq_isp_awb_stats2_v3x_t AWB 统计
af_stats AF 统计

10.4.2 RKAiqAecStats_t

【说明】定义 AE 数据信息,详见 AE 章节功能说明。

【定义】

 typedef struct RKAiqAecStats_s {
     RkAiqAecHwStatsRes_t ae_data;
     RKAiqAecExpInfo_t ae_exp;
 } RKAiqAecStats_t;

【成员】

成员名称 说明
ae_data AE 模块硬件统计
ae_exp AE 模块 Sensor 曝光信息

10.4.2.1 RKAiqAecExpInfo_t

【说明】AE 模块曝光参数信息

【定义】

 typedef struct RKAiqAecExpInfo_s {
     RkAiqExpParamComb_t LinearExp;
     RkAiqExpParamComb_t HdrExp[3];
     RkAiqIrisParamComb_t Iris;
     uint16_t line_length_pixels;
     uint32_t frame_length_lines;
     float pixel_clock_freq_mhz;
     CISFeature_t CISFeature;
     RKAiqExpI2cParam_t exp_i2c_params;
 } RKAiqAecExpInfo_t;

【成员】

成员名称 说明
LinearExp 非 HDR 模式曝光参数信息,包括实际曝光值和 RK 格式寄存器值
HdrExp HDR 模式曝光参数信息,包括实际曝光值和 RK 格式寄存器值,最多支持 3 帧曝光
exp_i2c_params 曝光参数的 Sensor 寄存器值,供第三方 AE 方案使用
line_length_pixels hts,其值由 Sensor 配置序列决定
frame_length_lines vts,其值由 Sensor 配置序列决定
pixel_clock_freq_mhz pclk,单位 MHz,其值由 Sensor 配置序列决定

【注意事项】

HdrExp 表示 HDR 模式曝光参数信息,最多支持 3TO1。HDR 2TO1:下标 0 为短帧曝光参数,下标 1 为长帧,下标 2 无效;HDR 3TO1:下标 0 为短帧,下标 1 为中帧,下标 2 为长帧。

10.4.2.1.1 RkAiqExpParamComb_t

【说明】AE 模块曝光参数详细信息

【成员】

 typedef struct {
     RkAiqExpRealParam_t exp_real_params; real value
     RkAiqExpSensorParam_t exp_sensor_params;//RK reg value
 } RkAiqExpParamComb_t;
成员名称 说明
exp_real_params 曝光分量的实际物理值
exp_sensor_params 曝光分量的 Sensor 寄存器值,遵循 RK 曝光设置
 typedef struct RkAiqExpRealParam_s {
     float integration_time;
     float analog_gain;
     float digital_gain;
     float isp_dgain;
     int   iso;
     int   dcg_mode;
 } RkAiqExpRealParam_t;
成员名称 说明
integration_time 曝光积分时间,单位秒(s)
analog_gain Sensor 模拟增益/总增益,单位为倍数
digital_gain Sensor 数字增益,单位为倍数;当 Sensor 数字增益用于补偿模拟增益精度时,配置为 1x,并将整体增益值写入 analog_gain
isp_dgain ISP 数字增益,单位为倍数,目前无效,默认值 1x
iso 总增益值,ISO 表示系统增益,以常量 50 为倍率,ISO = Total gain * 50
dcg_mode 双转换增益
 typedef struct RkAiqExpSensorParam_s {
     unsigned short fine_integration_time;
     unsigned short coarse_integration_time;
     unsigned short analog_gain_code_global;
     unsigned short digital_gain_global;
     unsigned short isp_digital_gain;
 } RkAiqExpSensorParam_t;
成员名称 说明
fine_integration_time Sensor 曝光积分时间的小数行寄存器值,仅在 Sensor 支持小数行时需要
coarse_integration_time Sensor 曝光积分时间对应的寄存器值,单位为行数
analog_gain_code_global Sensor 模拟增益对应的寄存器值
digital_gain_global Sensor 数字增益对应的寄存器值
isp_digital_gain ISP 数字增益寄存器值,暂时无效

【注意事项】

不同 Sensor 的数字增益作用不同,有的用于扩大感光度范围,有的用于补偿模拟增益精度。因此此处暂不单独列出数字增益,其大小和对应寄存器值均合并到模拟增益中。

双转换增益模式有三种状态:-1 表示 Sensor 不支持 DCG,0 表示 LCG,1 表示 HCG。

10.4.2.1.2 RKAiqExpI2cParam_t

【说明】AE 模块 I2c 曝光参数(一般供第三方 AE 使用)

【定义】

 #define MAX_I2CDATA_LEN 64
 typedef struct RKAiqExpI2cParam_s {
     bool           bValid;
     unsigned int   nNumRegs;
     unsigned int   RegAddr[MAX_I2CDATA_LEN];
     unsigned int   AddrByteNum[MAX_I2CDATA_LEN];
     unsigned int   RegValue[MAX_I2CDATA_LEN];
     unsigned int   ValueByteNum[MAX_I2CDATA_LEN];
     unsigned int   DelayFrames[MAX_I2CDATA_LEN];
 } RKAiqExpI2cParam_t;

【成员】

成员名称 说明
bValid I2c 参数有效使能位。true:用 RKAiqExpI2cParam_t 设置寄存器值(一般用于第三方 AE);false:用 RK 格式寄存器参数设置值
nNumRegs 要设置的寄存器值数量
AddrByteNum 寄存器地址位长,最多 64 个元素
RegValue 寄存器值数组,最多 64 个元素
ValueByteNum 寄存器值位长,最多 64 个元素
DelayFrames 寄存器值延迟帧数数组,最多 64 个元素

【注意事项】

仅当第三方 AE 应用为 true 且 bValid 为 true 时,该寄存器参数才有效;否则默认使用 RkAiqExpParamComb_t 中的 RK 格式寄存器参数。

最多可设置 64 个寄存器值。

10.4.2.1.3 RkAiqIrisParamComb_t

【说明】AE 模块光圈参数

【定义】

 typedef struct {
     RkAiqPIrisParam_t   PIris;
     RkAiqDCIrisParam_t  DCIris;
 } RkAiqIrisParamComb_t;
 typedef struct {
     int            step;
     int            gain;
     bool           update;
 } RkAiqPIrisParam_t;
 typedef struct {
     int        pwmDuty; //percent value,range = 0-100
     bool       update;
 } RkAiqDCIrisParam_t;

【成员】

成员名称 子成员 说明
PIris 更新步进增益 P 光圈参数:P 光圈步进寄存器值、步进等效增益值、步进更新标志
DCIris 更新 pwmDuty DC 光圈参数:PWM 占空比值,范围 1~100;DC 光圈参数更新标志

10.4.2.2 RkAiqAecHwStatsRes_t

【说明】AE 模块硬件统计

【定义】

 typedef struct RkAiqAecHwStatsRes_s {
     Aec_Stat_Res_t chn[3];
     Aec_Stat_Res_t extra;
     struct yuvae_stat yuvae;
     struct sihist_stat sihist;
 } RkAiqAecHwStatsRes_t;

【成员】

成员名称 说明
chn[3] AE 模块基于 RAW 图像(BLC、AWB 之后)的统计,兼容 HDR 和非 HDR,最多支持 HDR 3TO1 的 S/M/L 统计
extra AE 模块基于 RAW 图像(Debayer 之前)的统计,在 HDR 模式表示合成帧的统计
yuvae AE 模块基于 gamma 之前 RGB 图像的分块信息【3588 平台不支持】。
sihist AE 模块基于 gamma 之前 RGB 图像的直方图信息【3588 平台不支持】

【注意事项】

Aec_Stat_Res_t chn[3]:表示 HDR Merge 模块之前三路 RAW 数据路径的统计。非 HDR 时下标 0 有效,其他无效;HDR 2TO1 时下标 0 为短帧路径统计,1 为长帧,2 无效;HDR 3TO1 时下标 0 为短帧路径统计,1 为中帧,2 为长帧路径

的统计。RAW 图像统计模块之前有 BLC、AWB 模块,因此其统计受 BLC、AWB 增益影响。Aec_Stat_Res_t extra:HDR 模式下表示 HDR 合成后的 RAW 图像统计;其前有 BLC、AWB、HDRMERGE、TMO 等模块,因此统计受这些模块增益影响。此外,开启 AF 模块时这部分统计无效。

3588 平台不支持基于 gamma 之前 RGB 图像的分块和直方图信息。

10.4.2.2.1 Aec_Stat_Res_t

【说明】AE 模块基于 RAW 图像的统计

【定义】

 typedef struct Aec_Stat_Res_s {
     //rawae
     struct rawaebig_stat rawae_big;
     struct rawaelite_stat rawae_lite;
     //rawhist
     struct rawhist_stat rawhist_big;
     struct rawhist_stat rawhist_lite;
 } Aec_Stat_Res_t;

【成员】

成员名称 说明
rawae_big 基于 RAW 图像的 BIG 模式分块统计
rawae_lite 基于 RAW 图像的 Lite 模式分块统计
rawhist_big 基于 RAW 图像的 BIG 模式直方图统计
rawhist_lite 基于 RAW 图像的 Lite 模式直方图统计

【注意事项】

RAW 图像统计的 BIG 和 LITE 区别详见功能说明。主要区别是亮度均值统计的分块数量,以及是否支持独立子窗口亮度均值统计。基于 RAW 的 BIG 和 LITE 直方图统计具有相同数据结构。

3588 平台默认非 HDR 配置 BIG(15X15 非独立子窗口);HDR 2 帧时每帧均为 BIG(15X15 非独立子窗口);HDR 3 帧时短帧、长帧为 BIG(15X15 非独立子窗口),中帧为 LITE(5X5 非独立子窗口)。

10.4.2.2.2 rawaebig_stat

【说明】基于 RAW 图像的 big 模式统计包括 15X15 个非独立子窗口的 R/G/B 亮度均值,以及 4 个独立子窗口的 R/G/B 亮度和

【定义】

 struct rawaebig_stat {
     unsigned short channelr_xy[RAWAEBIG_WIN_NUM];
     unsigned short channelg_xy[RAWAEBIG_WIN_NUM];
     unsigned short channelb_xy[RAWAEBIG_WIN_NUM];
     unsigned int   channely_xy[RAWAEBIG_WIN_NUM]; //not HW!
     unsigned long int wndx_sumr[RAWAEBIG_SUBWIN_NUM];
     unsigned long int wndx_sumg[RAWAEBIG_SUBWIN_NUM];
     unsigned long int wndx_sumb[RAWAEBIG_SUBWIN_NUM];
     unsigned short wndx_channelr[RAWAEBIG_SUBWIN_NUM]; //not HW!
     unsigned short wndx_channelg[RAWAEBIG_SUBWIN_NUM]; //not HW!
     unsigned short wndx_channelb[RAWAEBIG_SUBWIN_NUM]; //not HW!
     unsigned char wndx_channely[RAWAEBIG_SUBWIN_NUM]; //not HW!
 };
 #define RAWAEBIG_WIN_NUM    225
 #define RAWAEBIG_SUBWIN_NUM  4

【成员】

成员名称 说明
channelr_xy BIG 模式非独立子窗口分块 R 通道亮度均值,有效位数 10bit。
channelg_xy BIG 模式非独立子窗口分块 G 通道亮度均值,有效位数 12bit。
channelb_xy BIG 模式非独立子窗口分块 B 通道亮度均值,有效位数 10bit。
wndx_sumr BIG 模式独立子窗口 R 通道亮度和,有效位数 29bit。
wndx_sumg BIG 模式独立子窗口 G 通道亮度和,有效位数 32bit。
wndx_sumb BIG 模式独立子窗口 B 通道亮度和,有效位数 29bit。

【注意事项】

基于 RAW 的 BIG 模式统计仅包含 R/G/B 三通道;如需 Y 通道统计,可在软件中增加代码,根据 R/G/B 统计值计算。

基于 RAW 的 BIG 模式包含 15X15 个非独立子窗口;非独立子窗口有最小尺寸限制,至少 16X4。

基于 RAW 的 BIG 模式包含 4 个独立子窗口,位置可重叠或不重叠;最大尺寸不得超过 2k x 1k。

结构体中的 channely_xy、wndx_channelr、wndx_channelg、wndx_channelb、wndx_channely 均为软件计算参数,需要在软件中增加代码,根据硬件统计值计算。

10.4.2.2.3 rawaelite_stat

【说明】基于 RAW 图像的 lite 模式统计包括 5X5 个非独立子窗口分块的 R/G/B 亮度均值

【定义】

 struct rawaelite_stat {
     unsigned short channelr_xy[RAWAELITE_WIN_NUM];
     unsigned short channelg_xy[RAWAELITE_WIN_NUM];
     unsigned short channelb_xy[RAWAELITE_WIN_NUM];
     unsigned int   channely_xy[RAWAELITE_WIN_NUM]; not HW!
 };
 #define RAWAELITE_WIN_NUM  25

【成员】

成员名称 说明
channelr_xy Lite 模式非独立子窗口分块 R 通道亮度均值,有效位数 10bit。
channelg_xy Lite 模式非独立子窗口分块 G 通道亮度均值,有效位数 12bit。
channelb_xy Lite 模式非独立子窗口分块 B 通道亮度均值,有效位数 10bit。

【注意事项】

基于 RAW 的 lite 模式仅含 5X5 非独立子窗口 R/G/B 三通道统计;如需 Y,可增加代码根据 R/G/B 统计值计算。非独立子窗口最小尺寸为 16X4。

结构体中的 channely_xy 是软件计算参数,需要增加代码根据硬件统计值计算。

10.4.2.2.4 rawhist_stat

【说明】基于 RAW 图像的直方图统计

【定义】

 struct rawhist_stat {
     unsigned int bins[RAWHIST_BIN_N_MAX];
 };
 #define RAWHIST_BIN_N_MAX  256

【成员】

成员名称 说明
bins 直方图共分 256 段,每段有效位数为 28bit

10.4.3 rk_aiq_isp_awb_stats2_v3x_t

【说明】定义白平衡硬件统计,主要包括白点统计和分块统计

白点统计

记录主窗口内 7 种光源、2 种大小白区的 RGins 和 BGain 累加值及数量;

记录子窗口内 4 种光源、2 种大小白区的 RGin 和 BGain 累加值及数量;

4 个 UV 或 XY 域附加框内的 RGin、BGain 累加值及数量;

白点亮度直方图;

分块统计:图像划分为 15x15 块(见 AWB 分块示意图),每块统计全部点或白点的 R、G、B 均值。

英文原稿技术图 — PDF p.399

图:AWB 分块示意图

【定义】

 typedef struct rk_aiq_isp_awb_stats2_v3x_s {
     //method1
     rk_aiq_awb_stat_wp_res_light_v201_t light[RK_AIQ_AWB_MAX_WHITEREGIONS_NUM];
     int WpNo2[RK_AIQ_AWB_MAX_WHITEREGIONS_NUM];
     //method2
     rk_aiq_awb_stat_blk_res_v201_t   blockResult[RK_AIQ_AWB_GRID_NUM_TOTAL];
     //window in pixel domain
     rk_aiq_awb_stat_wp_res_light_v201_t
 multiwindowLightResult[RK_AIQ_AWB_MAX_WHITEREGIONS_NUM];
     //window in xy or uv domain
     rk_aiq_awb_stat_wp_res_v201_t
 excWpRangeResult[RK_AIQ_AWB_STAT_WP_RANGE_NUM_V201];
     //wpno histogram
     unsigned int WpNoHist[RK_AIQ_AWB_WP_HIST_BIN_NUM];
 } rk_aiq_isp_awb_stats2_v3x_t;

【成员】

成员名称 说明
light 主窗口中不同光源的白点统计结果,最多 RK_AIQ_AWB_MAX_WHITEREGIONS_NUM 种光源;
WpNo2 主窗口内不同光源的 XY 域与 UV 域交集中的白点数,无小数位。
blockResult 图像均匀分块后各块的 RGB 累加图,共 15x15(RK_AIQ_AWB_GRID_NUM_TOTAL)块,见 AWB 分块示意图
multiwindowLightResult 若干子窗口在不同光源下的白点统计(只记录前 4 种光源,全部光源可通过时分复用记录),最多 4 个子窗口
excWpRangeResult 落入 excludeWpRange 区域的点统计(只记录 excludeWpRange 前四个区域),最多 4 个区域
WpNoHist 白点直方图:各 bin 的白点数量,无小数位。统计 XY 大框还是 XY 内框的白点,由寄存器 xyRangeTypeForWpHist 决定。

【注意事项】

如需主窗口全局白点统计结果,可由所有光源下的白点统计结果方便地换算得到。

10.4.4 rk_aiq_awb_stat_wp_res_light_v201_t

【说明】定义某光源下的白点统计结果。

【定义】

 typedef struct rk_aiq_awb_stat_wp_res_light_v201_s {
     rk_aiq_awb_stat_wp_res_v201_t xYType[RK_AIQ_AWB_XY_TYPE_MAX_V201];
 } rk_aiq_awb_stat_wp_res_light_v201_t;

【成员】

成员名称 说明
XYType 某光源下不同大小 XY 框的白点统计,最多 RK_AIQ_AWB_XY_TYPE_MAX_V201 个,即 2 个框。

10.4.5 rk_aiq_awb_stat_wp_res_v201_t

【说明】定义某光源指定尺寸 XY 框下的白点统计,以及非白点区域的非白点统计。

【定义】

 typedef struct rk_aiq_awb_stat_wp_res_v201_s {
     long long WpNo;
     long long RgainValue;
     long long BgainValue;
 } rk_aiq_awb_stat_wp_res_v201_t;

【成员】

成员名称 说明
WpNo 白点数:22 位整数、10 位小数(原文 10ibit)。WpNo = ISP 硬件白点统计 / 2^10。
RgainValue 白点 R 通道累加和:22 位整数、10 位小数。
BgainValue 白点 G 通道累加和:22 位整数、10 位小数。

10.4.6 rk_aiq_awb_stat_blk_res_v201_t

【说明】定义每个 block 的统计结果。

blkMeasureMode = =RK_AIQ_AWB_BLK_STAT_MODE_ALL_V201 时,记录 block 内所有点的累加和;原文双等号间空格保留于英文。

blkMeasureMode = =RK_AIQ_AWB_BLK_STAT_MODE_REALWP_V201 时,记录 block 内所有白点的累加和。

blkMeasureMode 是控制 block 统计内容的寄存器。

【定义】

 typedef struct rk_aiq_awb_stat_blk_res_v201_s {
     long long WpNo;
     long long Rvalue;
     long long Gvalue;
     long long Bvalue;
 } rk_aiq_awb_stat_blk_res_v201_t;

【成员】

成员名称 说明
WpNo block 内点数
Rvalue block 内全部点 R 通道累加。
Gvalue block 内全部点 RG 通道累加(原文 RG 标注)。
Bvalue block 内全部点 RB 通道累加,原文结尾有 and。

10.4.7 rk_aiq_af_algo_stat_v30_t

【说明】定义 AF 统计。

【定义】

 typedef struct {
     unsigned int wndb_luma;
     unsigned int wndb_sharpness;
     unsigned int winb_highlit_cnt;
     unsigned int wnda_luma[RKAIQ_RAWAF_SUMDATA_NUM];
     unsigned int wnda_fv_v1[RKAIQ_RAWAF_SUMDATA_NUM];
     unsigned int wnda_fv_v2[RKAIQ_RAWAF_SUMDATA_NUM];
     unsigned int wnda_fv_h1[RKAIQ_RAWAF_SUMDATA_NUM];
     unsigned int wnda_fv_h2[RKAIQ_RAWAF_SUMDATA_NUM];
     unsigned int wina_highlit_cnt[RKAIQ_RAWAF_SUMDATA_NUM];
     unsigned int int_state;
     struct timeval focus_starttim;
     struct timeval focus_endtim;
     struct timeval zoom_starttim;
     struct timeval zoom_endtim;
     int64_t sof_tim;
     int focusCode;
     int zoomCode;
     bool focusCorrection;
     bool zoomCorrection;
     float angleZ;
 } rk_aiq_af_algo_stat_v30_t;

【成员】

成员名称 说明
wndb_luma 独立窗口亮度值。
wndb_sharpness 独立窗口清晰度值。
winb_highlit_cnt 独立窗口高光计数。
wnda_luma 主窗口 15*15 子窗亮度。
wnda_fv_v1 主窗口 15*15 子窗 V1 清晰度。
wnda_fv_v2 主窗口 15*15 子窗 V2 清晰度。
wnda_fv_h1 主窗口 15*15 子窗 H1 清晰度。
wnda_fv_h2 主窗口 15*15 子窗 H2 清晰度。
wina_highlit_cnt 主窗口 15*15 子窗高光计数。
int_state RK AF 算法内部使用,可忽略。
focus_starttim RK AF 算法内部使用,可忽略。
focus_endtim RK AF 算法内部使用,可忽略。
zoom_starttim RK AF 算法内部使用,可忽略。
zoom_endtim RK AF 算法内部使用,可忽略。
sof_tim 此数据帧的帧开始时间,单位 ns。
focusCode RK AF 算法内部使用,可忽略。
zoomCode RK AF 算法内部使用,可忽略。
focusCorrection RK AF 算法内部使用,可忽略。
zoomCorrection RK AF 算法内部使用,可忽略。
angleZ RK AF 算法内部使用,可忽略。

11. 调试与 FAQ

11.1 获取版本号

AIQ 提供版本发布日期、AIQ 版本、IQ parser 版本及 ISP 各算法模块版本。

11.1.0.1 获取简略版本信息

 strings librkaiq.so | grep -w AIQ
 AIQ: v0.1.6

11.1.0.2 获取完整版本信息

1. SDK 的 AIQ 库默认编译为 Release;需改为 Debug,重新编译并更新到设备。

SDK/external/camera_engine_rkaiq/CMakeLists.txt:
if(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
add_definitions(-DBUILD_TYPE_DEBUG)
endif()

改为:

#if(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
add_definitions(-DBUILD_TYPE_DEBUG)
#endif()

2. 默认日志级别不打印已加载运行的 AIQ 库信息,可设置 xcore 模块日志级别打印版本。

 export persist_camera_engine_log=0x1000000ff2

3. AIQ 启动时打印的版本信息如下:

 ************************** VERSION INFOS **************************
 version release date: 2020-06-05
                  AIQ: v0.1.6
            IQ PARSER: v1.0.0
 RK INTEGRATED ALGO MODULES:
                  AWB: v0.0.9
                  AEC: v0.1.1
                   AF: v0.0.9
                 AHDR: v0.0.9
                  ANR: v0.0.9
               ASHARP: v0.0.9
              ADEHAZE: v0.0.9
               AGAMMA: v0.0.9
               A3DLUT: v0.0.9
                 ABLC: v0.0.9
                 ACCM: v0.0.9
                 ACGC: v0.0.9
                  ACP: v0.0.9
             ADEBAYER: v0.0.1
                ADPCC: v0.0.9
                 AGIC: v0.0.9
                  AIE: v0.0.1
                ALDCH: v0.0.9
                 ALSC: v0.0.9
                 AORB: v0.0.9
                 AR2Y: v0.0.9
                  ASD: v0.0.9
                 AWDR: v0.0.9
 ************************ VERSION INFOS END ************************

11.1.1 版本匹配规则

AIQ、IQ Tool 与 ISP Driver 的匹配规则如下:

v A . B. C

B 为十六进制:bit[0:3] 标识 AIQ/IQ Tool 匹配版本,bit[4:7] 标识 AIQ/ISP driver 匹配版本。例如:

ISP driver:v 1. 0x3.0 匹配 AIQ:v1.0x30.0 与 AIQ:v1.0x40.0(原文示例原样)。

IQ tool:v 1. 0x3.0 匹配 AIQ:v1.0x33.0 与 AIQ:v1.0x30.0。AIQ 的 C 非 0 时可能存在不匹配;建议优先使用 C=0 的 AIQ 版本匹配 IQ Tool。

11.2 AIQ 日志

11.2.1 概述

AIQ 用 64bits 表示所有模块的日志级别,各模块位图及说明如下:

 bit: [63-39]   38      37       36    35   34     33    32    31
 mean:  [U]   [CAMHW][ANALYZER][XCORE][ASD][ACGC][AFEC][AORB][ASHARP]
 bit:  30   29   28     27     26       25      24   23       22
 mean:[AIE][ACP][ACSM][ALDCH][A3DLUT][ADEHAZE][AWDR][AGAMMA][ACCM]
 bit:      21     20    19   18    17    16     15   14  13   12
 mean:[ADEBAYER][AGIC][ALSC][ANR][AHDR][ADPCC][ABLC][AF][AWB][AEC]
 bit:    11-4        3-0
 mean:[sub modules][level]
     [U] means unused now.
     [level] : use 4 bits to define log levels.
     each module log has following ascending levels:
     0: error
     1: warning
     2: info
     3: debug
     4: verbose
     5: low1
     6-7: unused, now the same as debug
     [sub modules] : use bits 4-11 to define the sub modules of each module,
 thespecific meaning of each bit is decided by the module itself. These bitsis
 designed to implement the sub module's log switch.
     [modules] : AEC, AWB, AF ...
     set debug level example:
     eg. set module af log level to debug, and enable all sub modules of af:
     Android:
     setprop persist.vendor.rkisp.log 0x4ff4
     Linux:
     export persist_camera_engine_log=0x4ff4
     And if only want enable the sub module 1 log of af:
     Android:
     setprop persist.vendor.rkisp.log 0x4014
     Linux:
     export persist_camera_engine_log=0x4014

上方位图按原文保留:bit[63-39] 的 U 当前未使用;level 占 4 位,级别递增为 0 error、1 warning、2 info、3 debug、4 verbose、5 low1、6-7 未使用且当前等同 debug。sub modules 用 bit4-11,各位含义由模块决定,用于子模块日志开关;modules 包括 AEC、AWB、AF 等。原文示例先为 AF 开启全部子模块,再仅开启子模块 1,Android 使用 setprop,Linux 使用 export。注意原文将 0x4ff4 称为 debug 示例,但其低 4 位为 4,与上方 verbose 对应;保留原值,使用前核对 SDK。

Linux 中通过环境变量 persist_camera_engine_log 控制各模块日志开关与级别。

模块 Debug 日志 Verbose 日志
AE export persist_camera_engine_log=0x1ff3 export persist_camera_engine_log=0x1ff4
AWB export persist_camera_engine_log=0x2ff3 export persist_camera_engine_log=0x2ff4
AF export persist_camera_engine_log=0x4ff3 export persist_camera_engine_log=0x4ff4
HDR export persist_camera_engine_log=0x20ff3 export persist_camera_engine_log=0x20ff3
NR export persist_camera_engine_log=0x40ff3 export persist_camera_engine_log=0x40ff4
Dehaze export persist_camera_engine_log=0x2000ff3 export persist_camera_engine_log=0x2000ff3
Sharp export persist_camera_engine_log=0x80000ff3 export persist_camera_engine_log=0x80000ff4
CAMHW export
persist_camera_engine_log=0x4000000ff3
export
persist_camera_engine_log=0x4000000ff4
     
     
     

查看当前日志级别的命令:

    [root@RV1126_RV1109:/]# echo $persist_camera_engine_log
    0x4014

11.2.2 AE

11.2.2.1 配置指南

日志级别 说明与开启建议
错误(Error) 默认开启,严重错误。
警告(Warning) 默认关闭,警告错误;算法可能进行异常处理后继续运行。
信息(Info) 默认关闭。基本调试信息,无逐帧输出;事件信息为算法运行状态和帧率,通常只在初始化、切换分辨率、修改配置时打印。用于了解运行状态和帧率。
日志级别 说明与开启建议
调试(Debug) 默认关闭,相对 Info 增加逐帧帧号、匹配曝光、AE 统计亮度及曝光结果。适合连续分析亮度和曝光,以定位闪烁等问题。原文事件信息为空。
详细(Verbose) 默认关闭,相对 Debug 增加算法运行结果的逐帧输出。通常不启用,仅在 Debug 无法判断问题时开启;原文事件信息为空。
子模块位 说明与开启建议
bit[4] AE 参数配置日志。读取 IQ 或 API 设置参数时,可据此核对配置。
bit[5] AE 信息处理日志:按 AE 统计计算环境和图像指标,用于读取统计亮度信息。
bit[6] AE 曝光计算日志,用于读取曝光结果。
bit[7] Airis 光圈算法日志,用于可变光圈问题。
bit[8:11] void

11.2.2.2 日志解读

限于篇幅,原文仅解读 Debug 级别 0x1ff3,即 AE 全部子模块的 Debug 信息。

线性模式 AE LOG

英文原稿技术图 — PDF p.409

图 3-1 线性模式 AE LOG

图 3-1 为线性 AE 日志示例。第 1 行:

Cur-Exp: FrmId=270,gain=0x36a,time=0x576,envChange=0,dcg=-1,pirs=0

当前帧曝光参数。

成员名 说明
FrmId 当前帧帧号
gain 当前帧 sensor 曝光增益寄存器值。
time 当前帧 sensor 曝光时间寄存器值。
envChange 环境亮度是否突变:0 无突变,1 有突变。
dcg 当前帧 DCG:-1 表示 sensor 不支持或内部切换;0 为 LCG,1 为 HCG。
pirs 当前帧 P-iris 步进电机位置。Airis 关闭时无效,无实际含义。

行 2:

Last-Res:FrmId=269,gain=0x356,time=0x576,pirs=0

上次 AE 运行设置的新曝光参数,部分与(1)相同不再重复。对比 Line1、Line2,可判断当前曝光是否与新曝光一致,即新曝光是否生效。第 3 行:

================================= Linear-AE (enter)===============================

进入 AE 控制算法;Linear-AE 表示线性曝光模式。

行 4:

Framenum=270
Cur gain=6.826667,time=0.029987,pirisGain=0,RawMeanluma=29.564444,YuvMeanluma=34.875557,Is Converged=0
成员名 说明
Framenum 当前帧帧号
gain 当前帧 sensor 曝光增益。
time 当前帧 sensor 曝光时间。
pirisGain 当前帧 P-iris 等效增益;Airis 关闭时无效。
RawMeanluma Debayer 前 RAW 图像亮度,已减黑电平并乘 AWB Gain。
YuvMeanluma Gamma 前 RGB 图像亮度,用于判断 debayer 后模块对亮度的影响。
IsConverged 曝光是否收敛:0 未收敛,1 已收敛。

行 5:

AecClmExecute: NewExposure(0.180993) SplitGain(6.033096) SplitIntegrationTime(0.030000) SplitPirisGain(0)
成员名 说明
NewExposure AE 控制算法计算出的新曝光量。
SplitGain 新 sensor 曝光增益。
SplitIntegrationTime 新 sensor 曝光时间。
SplitPirisGain 新 P-iris 等效增益;Airis 关闭时无效。

行 6:

calc result:SetPoint=22.000000,gain=6.023529,time=0.029987,piris=0,reggain=854,regtime=1398

最终设置的新曝光。

成员名 说明
SetPoint 目标亮度值
gain 最终新曝光增益。
time 最终新曝光时间。
piris 最终新 P-iris 等效增益;Airis 关闭时无效。
reggain 最终新曝光增益对应的寄存器值。
regtime 最终新曝光时间对应的寄存器值。

可据此获取当前 RawMeanLuma 及对应目标 setpoint,比较当前亮度与目标后计算新曝光。以下为 HDR 模式 AE LOG:

英文原稿技术图 — PDF p.411

图 3-2 HDR 模式 AE LOG

行 1:

Cur-Exp: FrmId=22,S-gain=0x0,S-time=0x2b6,M-gain=0xb,M-time=0x1a5e,L-gain=0x0,L- time=0x0,envChange=1,dcg=-1--1--1,Piris=0

当前帧曝光参数。

成员名 说明
FrmId 当前帧帧号
S/M/L-gain HDR 各帧 sensor 曝光增益寄存器;双帧 S/M 有效,三帧 S/M/L 有效。
S/M/L-time HDR 各帧 sensor 曝光时间寄存器;双帧 S/M 有效,三帧 S/M/L 有效。
envChange 环境亮度是否突变:0 无突变,1 有突变。
dcg DCG 三值对应短、中、长帧。双帧时前两值对应短、长;三帧对应短、中、长。-1 不支持或内部切换,0 LCG、1 HCG。
pirs 当前帧 P-iris 步进电机位置。Airis 关闭时无效,无实际含义。

行 2:

Last-Res:FrmId=20,S-gain=0x5,S-time=0x8ca,M-gain=0x11,M-time=0x1a5e,L-gain=0x0,L- time=0x0

上次 AE 设置的新曝光,部分字段与(1)相同;比较 Line1/Line2 可判断新曝光是否生效。

行 3:

================================= HDR-AE (enter)===============================

进入 AE 控制算法,HDR-AE 表示 HDR 曝光模式。

行 4:

AecRun: SMeanLuma=9.342692, MMeanLuma=37.698597,LMeanLuma=0.000000,TmoMeanluma=37.571430,Isconverged=0,Longfr m=0
成员名 说明
S/M/LMeanLuma HDR 各帧平均亮度;双帧 S/M,三帧 S/M/L 有效。
TmoMeanluma 当前帧 TMO 输出平均亮度。
Isconverged HDR 各帧曝光是否收敛:0 未收敛,1 已收敛。
Longfrm 长帧模式状态:0 关闭,1 开启。

行 5:

Framenum=22 Cur Piris=0, Sgain=1.000000,Stime=0.002570,mgain=1.462177,mtime=0.025000,lgain=1.000000,ltime=0.000000
成员名 说明
Framenum 当前帧号。
s/m/lgain 当前帧 sensor 曝光增益;双帧 s/m,三帧 s/m/l 有效。
s/m/ltime 当前帧 sensor 曝光时间;双帧 s/m,三帧 s/m/l 有效。
piris 当前帧 P-iris 等效增益;Airis 关闭时无效。

行 6:

S-HighLightLuma=197.250000,S-Target=100.000000,S-GlobalLuma=9.342692,S-Target=19.959433

短帧控制算法 LOG

成员名 说明
S-HighLightLuma 当前短帧高光区域亮度。
S-Target 当前短帧高光区域目标亮度。
S-GlobalLuma 当前短帧全局平均亮度。
S-Target 当前短帧全局目标亮度。

行 7:

L-LowLightLuma=29.626642,L-Target=48.572094,L-GlobalLuma=37.698597,L-Target=77.620155

长帧控制算法 LOG

成员名 说明
L-LowLightLuma 当前长帧暗区亮度
L-Target 当前长帧暗区目标亮度。
L-GlobalLuma 当前长帧全局平均亮度。
L-Target 当前长帧全局目标亮度。

行 8:

calc result:piris=0,sgain=1.000000,stime=0.005081,mgain=1.862087,mtime=0.025000,lgain=0.000000,lti me=0.000000

AE 控制算法输出曝光结果。

成员名 说明
s/m/lgain 最终新 sensor 曝光增益;双帧 s/m,三帧 s/m/l 有效。
s/m/ltime 最终新 sensor 曝光时间;双帧 s/m,三帧 s/m/l 有效。
piris 最终新 P-iris 等效增益;Airis 关闭时无效。

11.2.3 AWB

11.2.3.1 配置指南

日志级别 说明与开启建议
错误(Error) 默认开启,严重错误。
警告(Warning) 默认开启:警告错误,内部可能已作异常处理。
信息(Info) 默认关闭:基本调试信息,逐帧输出 wbgain 结果;原文事件和建议为空。
日志级别 说明与开启建议
debug 默认关闭,相对 Info 增加逐帧白平衡收敛状态、环境亮度、白点数、总色温及概率最高的前四光源等。调用原文所谓 AWS API 后打印属性信息(AWS 拼写保留);限制日志大小时可用此级别获取关键调试信息。
详细(Verbose) 默认关闭,相对 Debug 增加各光源的白点统计(白平衡增益、白点数)及策略中间结果。原文事件项为空;建议使用此级别抓完整调试日志。
子模块位 说明与开启建议
bit[4:11] void

11.2.3.2 日志解读

参见《Rockchip_Color_Optimization_Guide_ISP2x_CN》(原文交叉引用)。

11.2.4 AF

11.2.4.1 配置指南

日志级别 说明与开启建议
错误(Error) 默认开启,严重错误。
警告(Warning) 默认关闭:警告错误,内部可能已作异常处理。
信息(Info) 默认关闭:基本调试信息,逐帧输出对焦搜索最终结果;事件与建议为空。
日志级别 说明与开启建议
debug 默认关闭,相对 Info 增加 FV、马达位置;事件包括对焦触发、清晰位置搜索、变焦、对焦跟随及对焦。建议抓完整调试日志时使用。
详细(Verbose) 默认关闭,原文称相对 Debug 增加内容为 None;逐帧信息、事件及建议为空或 None。
子模块位 说明与开启建议
bit[4:11] void

11.2.4.2 日志解读

11.2.5 MERGE

11.2.5.1 配置指南

日志级别 说明与开启建议
信息(Info) 默认关闭:逐帧与事件尚未使用,建议关闭。
debug 默认关闭:逐帧 Merge 调试信息,事件未用。画面亮度不达预期或 TMO 后对比度不足时开启。
详细(Verbose) 默认关闭:原文称相对 Verbose 增加 Mrerge 曝光信息,事件未用。画面闪烁且 AE 日志确认 TMO 有闪烁时开启,供 RK 调试;Mrerge 为原文拼写。
子模块位 说明与开启建议
bit[4:11] void

11.2.5.2 日志解读

线性模式的 merge 日志级别如下:

英文原稿技术图 — PDF p.417

HDR、长帧为基准时,merge 日志级别为 10000000ff3。

英文原稿技术图 — PDF p.417

名称 说明
FrameID 帧号
HDRFrameNum HDR 帧数
LongFrmMode 长帧模式开关:0 关闭,1 开启。
MergeApiMode API 模式
EnvLv 环境亮度
MoveCoef 运动变量
byPass 当前帧旁路开关:0 关闭,1 开启。
BaseFrm 基准帧模式:0 长帧,1 短帧。
OECurve_smooth 当前帧过曝曲线斜率,范围 [0,200],由 JSON 参数以系数 200 反归一化。
OECurve_offset 当前帧过曝曲线偏移,范围 [108,280]。
MDCurveMS_smooth 当前帧中,原文所述“frame 与短帧”间运动曲线斜率,范围 [0,200],JSON 参数乘系数 200 反归一化。
MDCurveMS_offset 上述“frame 与短帧”间运动曲线偏移,范围 [0.26,100],JSON 参数以系数 100 反归一化。
MDCurveLM_smooth 当前长、中帧运动曲线斜率,范围 [0,200],JSON 参数以系数 200 反归一化。
MDCurveLM_offset 当前长、中帧运动曲线偏移,范围 [0.26,100],JSON 参数以系数 100 反归一化。

HDR、短帧为基准时,merge 日志级别为 10000000ff3。

英文原稿技术图 — PDF p.418

名称 说明
FrameID 帧号
HDRFrameNum HDR 帧数
LongFrmMode 长帧模式开关:0 关闭,1 开启。
MergeApiMode API 模式
EnvLv 环境亮度
MoveCoef 运动变量
byPass 当前帧旁路开关:0 关闭,1 开启。
BaseFrm 基准帧模式:0 长帧,1 短帧。
OECurve_smooth 当前帧过曝曲线斜率,范围 [0,200],由 JSON 参数以系数 200 反归一化。
OECurve_offset 当前帧过曝曲线偏移,范围 [108,280]。
MDCurve_Coef 当前帧控制系数,范围 [0,1],默认 0.05,精度 0.0001。
MDCurve_ms_thd0 当前短帧控制系数,范围 [0,1],默认 0.0,精度 0.1。
MDCurve_lm_thd0 当前长帧控制系数,范围 [0,1],默认 0.0,精度 0.1。

11.2.6 DRC

11.2.6.1 配置指南

日志级别 说明与开启建议
信息(Info) 默认关闭:逐帧与事件尚未使用,建议关闭。
debug 默认关闭:逐帧 DRC 调试信息,事件未用;亮度不达预期或 TMO 后对比度不足时开启。
日志级别 说明与开启建议
详细(Verbose) 默认关闭:原文称相对 Verbose 增加 DRC 曝光信息,事件未用;AE 日志确认闪烁来自 TMO 时开启供 RK 调试。
子模块位 说明与开启建议
bit[4:11] void

11.2.6.2 日志解读

DRC 日志级别为 20ff3 时:

英文原稿技术图 — PDF p.420

名称 说明
FrameID 帧号
HDRFrameNum HDR 帧数
LongFrmMode 长帧模式开关:0 关闭,1 开启。
DRCApiMode API 模式
EnvLv 环境亮度
byPass 当前帧旁路开关:0 关闭,1 开启。
Enable DRC 开关
DrcGain 当前帧 DRC 模块增益,范围 [1,8]。
alpha 当前 DrcGain Alpha,范围 [0,1]。
Clip 当前 DrcGain Clip,范围 [0,64]。
Strength 当前 HiLight 高光区域细节,范围 [0,1]。
CompressMode 当前 CompressSetting 模式。
LocalWeit 当前 Local 权重,范围 [0,1]:0 全局、1 全 Local,默认 0。
LocalAutoEnable 当前自动 LocalWeit 开关,范围 [0,1],默认 1,精度 1。
LocalAutoWeit 当前自动 LocalWeit,范围 [0,1],默认 0.4,精度 0.01。
GlobalContrast 当前全局对比度,范围 [0,1],默认 0,精度 0.01。
LoLitContrast 当前低亮区域对比度(原文 low volume),范围 [0,1],默认 0,精度 0.01。

11.2.7 NR 与锐化

11.2.7.1 配置指南

日志级别 说明与开启建议
error 默认开启,逐帧打印可能导致软件崩溃的严重错误;事件未用,建议开启。
日志级别 说明与开启建议
信息(Info) 默认关闭,输出所有函数调用但不打印寄存器,信息较多;事件未用。效果正常且无错误时不建议开启,通常用 io 命令打印寄存器。
debug 默认关闭,相对 Info 增加含寄存器值的所有调用信息,寄存器打印量较大;事件未用。效果严重异常时开启,供 RK 调试。
子模块位 说明与开启建议
bit[4:11] void

11.2.7.2 日志解读

11.2.8 Dhz&Ehz

11.2.8.1 配置指南

日志级别 说明与开启建议
信息(Info) 默认关闭,逐帧与事件均未使用;建议为空。
debug 默认关闭,相对 Info 增加 DHZ & Ehz 调试信息;事件与建议为空。
日志级别 说明与开启建议
详细(Verbose) 默认关闭,原文称相对 Verbose 增加,但逐帧与事件均未使用,建议为空。
子模块位 说明与开启建议
bit[4:11] void

11.2.8.2 日志解读

Enhance 开启时,Dehaze 日志级别为 2000ff3。

英文原稿技术图 — PDF p.423

名称 说明
FrameID 帧号
byPassProc 当前帧旁路开关:0 关闭,1 开启。
ISO ISO
Dehaze 模块使能 Dehaze 模块开关
Dehaze 使能 去雾功能开关
Enhance 使能 增强功能开关
Hist 使能 Hist 功能开关。
EnvLv 当前帧环境亮度。
enhance_value 当前帧整体对比强度,范围 [0,16],建议 [1,2]。
enhance_chroma 当前帧色度增强调整参数,范围 [0,16],建议 [1,2]。
enhance_value_reg 当前帧整体对比强度的 reg 值。
enhance_chroma_reg 当前帧色度增强参数的 REG 值。

Dehaze 开启且 cfg_alpha=0 时,日志级别为 2000ff3。

英文原稿技术图 — PDF p.424

名称 说明
FrameID 帧号
byPassProc 当前帧旁路开关:0 关闭,1 开启。
ISO ISO
Dehaze 模块使能 Dehaze 模块开关
Dehaze 使能 去雾功能开关
Enhance 使能 增强功能开关
Hist 使能 Hist 功能开关。
cfg_alpha 软件配置占比,范围 [0,1],默认 1,精度 0.01。
EnvLv 当前帧环境亮度。
air_max 当前 AIR 自适应上限,范围 [230,250],默认 250。
air_min 当前 AIR 自适应下限,原文范围 [230,250]、默认 200;默认值在所列范围之外的矛盾保留。
tmax_base 当前 tmax 自适应基准默认 125。对应配置为 200(131)、210(125)、220(119)、230(114)、240(109)、250(105),建议 131-105。
wt_max wt 自适应上限,范围 [0.75,0.9],默认 0.9。

Dehaze 开启且 cfg_alpha=1 时,日志级别为 2000ff3。

英文原稿技术图 — PDF p.424

名称 说明
FrameID 帧号
byPassProc 当前帧旁路开关:0 关闭,1 开启。
ISO ISO
Dehaze 模块使能 Dehaze 模块开关
Dehaze 使能 去雾功能开关
Enhance 使能 增强功能开关
Hist 使能 Hist 功能开关。
cfg_alpha 软件配置占比,范围 [0,1],默认 1,精度 0.01。
EnvLv 当前帧环境亮度。
cfg_air 软件配置 air 大气光系数,范围 [0,255],默认 210。
cfg_tmax 软件配置 tmax 去雾最大值,范围 [0,1],默认 0.2。
cfg_wt 软件配置 wt 去雾强度,范围 [0,1],默认 0.8。

Hist 开启时,Dehaze 日志级别为 2000ff3。

英文原稿技术图 — PDF p.425

名称 说明
FrameID 帧号
byPassProc 当前帧旁路开关:0 关闭,1 开启。
ISO ISO
Dehaze 模块使能 Dehaze 模块开关
Dehaze 使能 去雾功能开关
Enhance 使能 增强功能开关
Hist 使能 Hist 功能开关。
cfg_alpha 软件配置占比,范围 [0,1],默认 1,精度 0.01。
EnvLv 当前帧环境亮度。
hist_para_en 当前帧直方图拉伸控制开关。
hist_gratio 直方图拉伸倍数、均衡化控制系数,范围 [0,32]。
hist_th_off 直方图统计阈值,范围 [0,255],默认 64。
hist_k 直方图自适应阈值倍率,范围 [0,7),默认 2。
hist_min 直方图统计阈值最小值,范围 [0,2],默认 0.016。
hist_scale 直方图均衡化控制系数,范围 [0,32]。
cfg_gratio 软件配置直方图拉伸倍数及均衡化控制系数,范围 [0,32]。

11.2.9 CamHW

11.2.9.1 配置指南

日志级别 说明与开启建议
错误(Error) 默认开启,严重错误。
警告(Warning) 默认关闭:警告错误,算法可能已作异常处理。
日志级别 说明与开启建议
信息(Info) 默认关闭:基本调试信息,逐帧、事件及建议均为空。
调试(Debug) 默认关闭,相对 Info 增加基本调试信息;逐帧、事件及建议为空。
详细(Verbose) 默认关闭,相对 Debug 增加基本调试信息;逐帧与事件为空。存在单次大量输出,谨慎使用。
Low1 默认关闭,相对 Debug 增加基本调试信息;逐帧项为空,事件为函数调用路径,建议为空。
子模块位 说明与开启建议
bit[4] 30 子模块日志开关,负责 HWI 流程控制,建议与下列子模块同时开启。
bit[5] Isp30Params、Isp30PollThread 日志,负责 ISP 参数、数据流、事件等。参数与视频帧不匹配、时序异常、回读离线模式断流等问题时使用。
bit[6] SensorHw 日志负责 sensor 相关部分,适于 CIS 曝光设置等疑点。
bit[7] FlashLight 日志负责补光控制,用于补光问题。
bit[8] LensHw 日志负责镜头电机控制,用于马达控制等问题。
bit[9] 30SpThread 子模块开关,内部模块预留。
bit[10:11] void

11.2.9.2 日志解读

CamHwIsp20 子模块

英文原稿技术图 — PDF p.428

该日志仅在 AIQ 库加载时打印一次,显示 sensor、ISP、ISPP 的连接关系。信息来自 media 拓扑解析,可用于确认 sensor 是否正常检测。

英文原稿技术图 — PDF p.428

上图为 HWI 向 ISP 驱动配置新参数,当前基本逐帧配置,具体字段如下:

成员名 说明
ispparam ens 模块使能位,位定义参见 HWI/ISP20/rk_isp20_hw.H。
en_up 模块使能更新位,对应位为 1 表示需更新使能状态。
cfg_up 模块参数更新位,对应位为 1 表示需更新参数。
device ISP 参数模块对应的视频节点。

英文原稿技术图 — PDF p.429

上图为 HWI 向 ISPP 驱动配置新参数,同样基本逐帧配置;字段含义参考前述 ISP 模块。

Isp20PollThread 子模块

英文原稿技术图 — PDF p.429

回读模式每次开始一帧回读时输出该日志;正常工作期间逐帧打印,含义如下。

成员名 说明
frame RAW 帧 ID,从 0 开始。
sof_ts 帧 SOF 时间戳。
frame_ts 采集到 DDR 完成时的时间戳。
readback ISP 回读次数。

英文原稿技术图 — PDF p.429

该图为回读模式 RAW buf 轮转过程,每帧打印,含义如下:

成员 说明
handle_rx_buf ISP 处理完一帧后,归还给 VICAP/isp_tx。
dev_index 长、中、短帧设备索引;handle_tx_buf 与 handle_rx_buf 的 dev_index 相同表示同一数据。
sequence 帧号,从 0 开始。

SensorHw 子模块

英文原稿技术图 — PDF p.430

图示为线性模式向 sensor 驱动设置新曝光的流程,有新曝光时调用,字段含义如下:

成员 说明
frameid SOF 事件帧号。
handle_sof SOF 事件回调,每帧一次,在此处理曝光设置。
exp_list 大小 曝光列表中尚未设置到驱动的新曝光时间数量。
gain_list 大小 曝光列表中尚未设置到驱动的新增益数量。
working_mode 当前工作模式,0 为 normal。
set_time SOF 消息中是否有新曝光时间需设置到驱动。
set_gain SOF 消息中是否有新增益需设置到驱动。
a-gain, time 新曝光时间、增益寄存器值。

11.3 获取 Raw/YUV 图像

Raw 专指未经图像处理的 CIS 输出。Bayer raw sensor 的 Raw 为 8/12/14 bit Bayer RGB 数据。通常在下列情况需获取 CIS Raw:

1. ISP 处理后的 YUV 输出异常时,可动态截取进入 ISP 的 Raw,以分析是否为 CIS 问题。

2. 调试图像质量效果前,需要采集 CIS Raw,用于模块参数校准。

11.3.1 Raw 数据存储格式

11.3.1.1 非紧凑存储格式

以 4 字节内存片段为例,raw12 内存排列如下:

英文原稿技术图 — PDF p.431

原图的可编辑转录(原图已有中文标签):

内存 word 位 Pixel 像素位
31:20 Pixel 0 11:0
19:16 Pixel 0 - - - -
15:4 Pixel 1 11:0
3:0 Pixel 1 - - - -

11.3.1.2 紧凑存储格式

以 4 字节内存片段为例,raw12 内存排列如下:

英文原稿技术图 — PDF p.431

原图的可编辑转录(原图已有中文标签):

内存 word 位 Pixel 像素位
31:24 Pixel3 7:0
23:12 Pixel2 11:0
11:0 Pixel1 11:0

11.3.1.3 RK-RAW V1.0

英文原稿技术图 — PDF p.431

原图的可编辑转录(原图已有中文标签):

参数名称 数据类型 长度(Byte) 说明
Identifier unsigned short 2 固定 0x8080
Header length unsigned short 2 固定 128
Frame index unsigned int 4 帧索引号
Width unsigned short 2 图像宽度
Height unsigned short 2 图像高度
Bit depth unsigned char 1 图像位宽
Bayer format unsigned char 1 0: BGGR; 1: GBRG; 2: GRBG; 3: RGGB
Number of HDR Frame unsigned char 1 1: 线性模式,短帧;2: 双帧 HDR,长+短;3: 三帧 HDR,长+中+短
Current Frame type unsigned char 1 1 短帧;2 中帧;3 长帧
Storage type unsigned char 1 0 紧凑;1 非紧凑
Line stride unsigned short 2 单位字节
Effective line stride unsigned short 2 单位字节
Reserved unsigned char 107 保留
RAW DATA RAW W * H * BPP RAW DATA

11.3.1.4 RK-RAW V2.0

RK-RAW V2.0 由开始标识、数据块、结束标识组成。

格式块定义

数据块由标识 ID、块长度、块数据三部分组成,每个 ID 有唯一固定值。

英文原稿技术图 — PDF p.432

原图的可编辑转录(原图已有中文标签):

项目 数据类型 长度(Byte) 默认值 说明
起始标识符 u16 2 0xFF00 文件起始
块标识符 u16 2 0xFF01 Raw 信息
块长度 u32 4 -  
块数据        
块标识符 u16 2 0xFF02 Normal 模式 Raw 数据
块长度 u32 4 -  
块数据        
块标识符 u16 2 0xFF03 HDR2/HDR3 短帧 Raw
块长度 u32 4 -  
块数据        
块标识符 u16 2 0xFF04 HDR2 长帧/HDR3 中帧 Raw
块长度 u32 4 -  
块数据        
块标识符 u16 2 0xFF05 HDR3 长帧 Raw
块长度 u32 4 -  
块数据        
块标识符 u16 2 0xFF06 帧统计信息
块长度 u32 4 -  
块数据        
块标识符 u16 2 0xFF07 ISP 寄存器格式
块长度 u32 4 -  
块数据        
块标识符 u16 2 0xFF08 ISP 寄存器
块长度 u32 4 -  
块数据        
块标识符 u16 2 0xFF09 ISPP 寄存器格式
块长度 u32 4 -  
块数据        
块标识符 u16 2 0xFF0a ISPP 寄存器
块长度 u32 4 -  
块数据        
块标识符 u16 2 0xFF0b 平台信息
块长度 u32 4 -  
块数据        
…        
结束标识符 u16 2 0x00FF 文件结尾

图中并非所有块都必需,可选择组合。例如原文称文件可仅含“Raw Blocks”“Raw Blocks”“Frame Statistics Blocks”,并建议至少包含这三块才有意义;重复块名按原文保留,不能猜测替换。

Raw 块定义

英文原稿技术图 — PDF p.432

原图的可编辑转录(原图已有中文标签):

项目 数据类型 长度(Byte) 默认值 说明
版本号 u16 2 0x0200 0x0200=v2.0
Sensor 名 string 32 - Sensor 型号
场景/光源 string 32 - 采集场景/光源
帧号 u32 4 - 帧号
宽度 u16 2 - 图像宽度,像素
高度 u16 2 - 图像高度,像素
位宽 u8 1 - 图像位宽
Bayer 格式 u8 1 - 0 BGGR; 1 GBRG; 2 GRBG; 3 RGGB
HDR 合成帧数 u8 1 - 1 线性;2 长+短;3 长+中+短
存储格式 u8 1 - 0 紧凑;1 非紧凑
行长 u16 2 - 字节
有效行长 u16 2 - 字节
大小端 u8 1 - 0 大端;1 小端

RAW 块定义

该段可存 Raw 图像数据,或指向数据的 buffer fd/虚拟地址。使用 API 时须通过参数指明块内数据类型,详见 rk_aiq_rawbuf_type_t。

英文原稿技术图 — PDF p.433

原图的可编辑转录(原图已有中文标签):

项目 数据类型 长度(Byte) 说明
Raw 数据 - 长宽N;非紧凑 N=2;紧凑 N=bpp/8 Raw 数据,0xFF02–0xFF05

帧统计块定义

英文原稿技术图 — PDF p.433

原图的可编辑转录(原图已有中文标签):

项目 数据类型 长度(Byte) 默认值 说明
版本号 u16 2 0x0200 Raw: 0x0200=v2.0
帧号 u32 4 - 帧号
Normal_Exp float 4 - 线性模式快门时间
Normal_Gain float 4 - 线性曝光增益
Normal_Exp_REG u32 4 - 线性快门 SENSOR 寄存器
Normal_Gain_REG u32 4 - 线性增益 SENSOR 寄存器
HDR_Exp_L float 4 - HDR3 长帧快门时间
HDR_Gain_L float 4 - HDR3 长帧增益
HDR_Exp_L_REG u32 4 - HDR3 长帧快门 SENSOR 寄存器
HDR_Gain_L_REG u32 4 - HDR3 长帧增益 SENSOR 寄存器
HDR_Exp_M float 4 - HDR3 中帧/HDR2 长帧快门时间
HDR_Gain_M float 4 - HDR3 中帧/HDR2 长帧增益
HDR_Exp_M_REG u32 4 - HDR3 中帧/HDR2 长帧快门 SENSOR 寄存器
HDR_Gain_M_REG u32 4 - HDR3 中帧/HDR2 长帧快门 SENSOR 寄存器(原图如此,字段名为 Gain,待核对)
HDR_Exp_S float 4 - HDR3/HDR2 短帧快门时间
HDR_Gain_S float 4 - HDR3/HDR2 短帧增益
HDR_Exp_S_REG u32 4 - HDR3/HDR2 短帧快门 SENSOR 寄存器
HDR_Gain_S_REG u32 4 - HDR3/HDR2 短帧快门 SENSOR 寄存器(原图如此,字段名为 Gain,待核对)
AWB_Rgain float 4 - 白平衡增益
AWB_Bgain float 4 - 白平衡增益

寄存器格式块定义

英文原稿技术图 — PDF p.433

原图的可编辑转录(原图已有中文标签):

项目 数据类型 长度(Byte) 默认值 说明
版本号 u16 2 0x0200 0x0200=v2.0
帧号 u32 4 - 寄存器基地址(原图如此)
基地址 u32 4 - 寄存器基地址
偏移地址 u32 4 - 起始偏移地址
数目 u32 4 - 寄存器数目

寄存器块定义

英文原稿技术图 — PDF p.433

原图的可编辑转录(原图已有中文标签):

项目 数据类型 长度(Byte) 说明
寄存器数据 - - 寄存器数据,0xFF08/0xFF0a

平台信息块定义

英文原稿技术图 — PDF p.433

原图的可编辑转录(原图已有中文标签):

项目 数据类型 长度(Byte) 说明
芯片型号 string 32  
ISP 版本 string 32  
AIQ 版本 string 32  

11.3.2 Raw/YUV 数据获取方法

12. 错误码

错误码 说明
0 成功
-1 失败
-2 参数无效
-3 内存不足
-4 文件操作失败
-5 分析器模块错误
-6 ISP 模块错误
-7 sensor 驱动错误
-8 线程操作错误
-9 IOCTL 操作错误
-10 时序错误
-20 超时
-21 超出范围
-255 未知错误

13. Abbreviations

缩写 全称
CIS 摄像头图像传感器(Camera Image Sensor)
RkAiq Rockchip 自动图像质量(Rockchip Automatical Image Quality,原文拼写)
ISP 图像信号处理(Image Signal Process,原文全称)
IQ 调优 图像质量调优

浏览此主题 → · 入门路线 →