本文为平台参考,完整保留 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 结构框图

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 功能说明

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

图 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 软件架构

图 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 软件流程

图 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 功能框图

离线帧处理框图
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 设置正确。

6.8.2 曝光变化时闪烁
曝光变化时闪烁可能有以下原因:
(1)CISExpUpdate 的 gain、time 生效帧数错误。原文 LOG 仅截取每帧关键行。

红框标出亮度错误:曝光增减时,亮度变化方向却相反。亮度突变发生在曝光时间和增益都变化后的第二帧,且趋势跟随曝光时间,因此可判断 gain、time 生效帧数不对,二者未同步生效,导致亮度与曝光不匹配。修改 gain、time 帧数可解决。可用 AE syncTest
设置两组不同增益与时间的曝光并反复切换,从 LOG 检查是否复现。
(2)驱动错误造成亮度来回振荡、不能收敛,常见于高亮场景。原文 LOG 仅截取每帧关键行。

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

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

左侧 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 信息统计模块框图。

ch0/ch1/ch2 分别对应 HDR 的 S/M/L 帧;debayer 为 HDR 合成帧。
windowA 输出主要包括 15*15 的 V1/V2/H1/H2 FV、亮度及高光计数。
windowB 主要输出一个 FV、亮度及高光计数。
8.3 用户 AF 算法开发

参考代码位置: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 控制算法所需的相关统计信息,大致如下:

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 硬件统计模块框图

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 均值。

图: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

图 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:

图 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 日志级别如下:

HDR、长帧为基准时,merge 日志级别为 10000000ff3。

| 名称 | 说明 |
|---|---|
| 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。

| 名称 | 说明 |
|---|---|
| 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 时:

| 名称 | 说明 |
|---|---|
| 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。

| 名称 | 说明 |
|---|---|
| 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。

| 名称 | 说明 |
|---|---|
| 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。

| 名称 | 说明 |
|---|---|
| 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。

| 名称 | 说明 |
|---|---|
| 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 子模块

该日志仅在 AIQ 库加载时打印一次,显示 sensor、ISP、ISPP 的连接关系。信息来自 media 拓扑解析,可用于确认 sensor 是否正常检测。

上图为 HWI 向 ISP 驱动配置新参数,当前基本逐帧配置,具体字段如下:
| 成员名 | 说明 |
|---|---|
| ispparam ens | 模块使能位,位定义参见 HWI/ISP20/rk_isp20_hw.H。 |
| en_up | 模块使能更新位,对应位为 1 表示需更新使能状态。 |
| cfg_up | 模块参数更新位,对应位为 1 表示需更新参数。 |
| device | ISP 参数模块对应的视频节点。 |

上图为 HWI 向 ISPP 驱动配置新参数,同样基本逐帧配置;字段含义参考前述 ISP 模块。
Isp20PollThread 子模块

回读模式每次开始一帧回读时输出该日志;正常工作期间逐帧打印,含义如下。
| 成员名 | 说明 |
|---|---|
| frame | RAW 帧 ID,从 0 开始。 |
| sof_ts | 帧 SOF 时间戳。 |
| frame_ts | 采集到 DDR 完成时的时间戳。 |
| readback | ISP 回读次数。 |

该图为回读模式 RAW buf 轮转过程,每帧打印,含义如下:
| 成员 | 说明 |
|---|---|
| handle_rx_buf | ISP 处理完一帧后,归还给 VICAP/isp_tx。 |
| dev_index | 长、中、短帧设备索引;handle_tx_buf 与 handle_rx_buf 的 dev_index 相同表示同一数据。 |
| sequence | 帧号,从 0 开始。 |
SensorHw 子模块

图示为线性模式向 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 内存排列如下:

原图的可编辑转录(原图已有中文标签):
| 内存 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 内存排列如下:

原图的可编辑转录(原图已有中文标签):
| 内存 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

原图的可编辑转录(原图已有中文标签):
| 参数名称 | 数据类型 | 长度(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 有唯一固定值。

原图的可编辑转录(原图已有中文标签):
| 项目 | 数据类型 | 长度(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 块定义

原图的可编辑转录(原图已有中文标签):
| 项目 | 数据类型 | 长度(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。

原图的可编辑转录(原图已有中文标签):
| 项目 | 数据类型 | 长度(Byte) | 说明 |
|---|---|---|---|
| Raw 数据 | - | 长宽N;非紧凑 N=2;紧凑 N=bpp/8 | Raw 数据,0xFF02–0xFF05 |
帧统计块定义

原图的可编辑转录(原图已有中文标签):
| 项目 | 数据类型 | 长度(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 | - | 白平衡增益 |
寄存器格式块定义

原图的可编辑转录(原图已有中文标签):
| 项目 | 数据类型 | 长度(Byte) | 默认值 | 说明 |
|---|---|---|---|---|
| 版本号 | u16 | 2 | 0x0200 | 0x0200=v2.0 |
| 帧号 | u32 | 4 | - | 寄存器基地址(原图如此) |
| 基地址 | u32 | 4 | - | 寄存器基地址 |
| 偏移地址 | u32 | 4 | - | 起始偏移地址 |
| 数目 | u32 | 4 | - | 寄存器数目 |
寄存器块定义

原图的可编辑转录(原图已有中文标签):
| 项目 | 数据类型 | 长度(Byte) | 说明 |
|---|---|---|---|
| 寄存器数据 | - | - | 寄存器数据,0xFF08/0xFF0a |
平台信息块定义

原图的可编辑转录(原图已有中文标签):
| 项目 | 数据类型 | 长度(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 调优 | 图像质量调优 |
