hi_isp_ae_sensor_exp_func
hi_isp_ae_accuracy
说明
定义曝光时间、增益的精度的结构体。
定义
typedef struct {
hi_isp_ae_accuracy_type accu_type;
float accuracy;
float offset;
} hi_isp_ae_accuracy;
成员
| 成员名称 | 描述 |
|---|---|
| accu_type | 精度类型。 |
| accuracy | 精度值。 |
| offset | 曝光时间的偏移量,支持正负偏移量设置,以行为单位,该值配置与sensor强相关。 |
注意事项
- 曝光时间的精度通常都是线性的,都是以行为单位。若曝光时间为线性精度,精度accuracy为大于1的整数,则意味着AE计算出来的曝光行数只能为最小曝光时间加上accuracy的整数倍。该功能可用于计算某些sensor WDR模式下的长/ 短帧曝光时间,如某些sensor曝光行数必须为2n+1,则可以配置最小曝光时间为1或3,配置accuracy为2。
- 曝光时间与sensor增益保持线性关系是AE曝光量分配的前提,即认为曝光量一定的情况下,曝光时间和sensor增益可以相互转换而保持图像亮度基本不变。比如说曝光量为4096,那么分配为曝光时间(2)*增益(2048),也可以分配为曝光时间(4)*增益(1024),这两种情况下图像亮度应该基本不变。若不满足这种线性关系,在高亮环境下,由于曝光时间很短,1行曝光时间的变化也容易使画面发生闪烁。某些sensor,如Panasoni MN34220采用1080p@30fps的初始化序列配置时,曝光时间必须偏移0.8018 行之后才与sensor增益有线性关系,因此增加了offset这个变量,它为float型变量,以行为单位,将offset设置成 0.8018, AE 算法内部即可完成偏移处理。一般sensor的曝光时间和增益不存在这种偏移关系,需在cmos.c中将该值配为0。
父主题: ISP系统控制及3A算法注册
hi_isp_ae_sensor_default
说明
定义AE算法库的初始化参数结构体。
定义
typedef struct {
hi_u8 hist_thresh[HI_ISP_HIST_THRESH_NUM];
hi_u8 ae_compensation;
hi_u32 lines_per500ms;
hi_u32 flicker_freq;
hi_float fps;
hi_u32 hmax_times;
hi_u32 init_exposure;
hi_u32 init_ae_speed;
hi_u32 init_ae_tolerance;
hi_u32 full_lines_std;
hi_u32 full_lines_max;
hi_u32 full_lines;
hi_u32 binning_full_lines;
hi_u32 max_int_time;
hi_u32 min_int_time;
hi_u32 max_int_time_target;
hi_u32 min_int_time_target;
hi_isp_ae_accuracy int_time_accu;
hi_u32 max_again;
hi_u32 min_again;
hi_u32 max_again_target;
hi_u32 min_again_target;
hi_isp_ae_accuracy again_accu;
hi_u32 max_dgain;
hi_u32 min_dgain;
hi_u32 max_dgain_target;
hi_u32 min_dgain_target;
hi_isp_ae_accuracy dgain_accu;
hi_u32 max_isp_dgain_target;
hi_u32 min_isp_dgain_target;
hi_u32 isp_dgain_shift;
hi_u32 max_int_time_step;
hi_bool max_time_step_enable;
hi_u32 max_inc_time_step[HI_ISP_WDR_MAX_FRAME_NUM];
hi_u32 max_dec_time_step[HI_ISP_WDR_MAX_FRAME_NUM];
hi_u32 lf_max_short_time;
hi_u32 lf_min_exposure;
hi_isp_ae_route ae_route_attr;
hi_bool ae_route_ex_valid;
hi_isp_ae_route_ex ae_route_attr_ex;
hi_isp_ae_route ae_route_sf_attr;
hi_isp_ae_route_ex ae_route_sf_attr_ex;
hi_u16 man_ratio_enable;
hi_u32 arr_ratio[HI_ISP_EXP_RATIO_NUM];
hi_isp_iris_type iris_type;
hi_isp_piris_attr piris_attr;
hi_isp_iris_f_no max_iris_fno;
hi_isp_iris_f_no min_iris_fno;
hi_isp_ae_strategy ae_exp_mode;
hi_u16 iso_cal_coef;
hi_u8 ae_run_interval;
hi_u32 exp_ratio_max;
hi_u32 exp_ratio_min;
hi_bool diff_gain_support;
hi_isp_quick_start_param quick_start;
hi_isp_prior_frame prior_frame;
hi_bool ae_gain_sep_cfg;
hi_bool lhcg_support;
hi_u32 sns_lhcg_exp_ratio;
} hi_isp_ae_sensor_default;
成员
| 成员名称 | 描述 |
|---|---|
| hist_thresh | 五段直方图的分割门限值数组,数组内各元素的取值范围为[0,0xff]。推荐使用默认值,线性模式为{0xd,0x28,0x60,0x80},BUILT_IN WDR模式为{0x20,0x40,0x60,0x80},帧合成WDR模式为{0xc,0x18,0x60,0x80}。 text<br>#define HI_ISP_HIST_THRESH_NUM 4<br> |
| ae_compensation | AE 亮度目标值,取值范围为[0,255],建议用0x38~0x40。 |
| lines_per500ms | 每 500ms 的总行数。 |
| flicker_freq | 抗闪频率,数值为当前电源频率的 256 倍。 |
| fps | 基准帧率。 |
| hmax_times | Sensor 读出一行的时间,单位:ns。 |
| init_exposure | 默认初始曝光量,等于曝光时间与曝光增益的乘积,其中曝光时间的单位为微秒(us)。AE 算法采用该值作为初始 5 帧的曝光量,可用于运动 DV 加速启动。 建议关注快速启动的产品形态根据常用场景配置一个合适的初始曝光量,以达到 AE 快速收敛。线性/WDR 模式切换时,也会采用该值作为切换后第一帧的曝光量。合理修改 sensor 初始化序列的曝光时间和增益,将曝光时间(行数)*增益(6bit 小数精度)计算得到曝光量,并赋值给该变量,可使得切换更加平滑。若不设置,该值默认为 0。 |
| init_ae_speed | 默认初始 AE 调节速度,海思 AE 算法采用该值作为初始 100 帧的调节速度,可用于运动 DV 加速启动。 建议关注快速启动的产品形态可将该值配置为128。若不设置,该值默认为0。AE算法内部会将该值钳位至[64,255]。 |
| init_ae_tolerance | 默认初始 AE 曝光容忍偏差,海思 AE 算法采用该值作为初始 100 帧的曝光容忍偏差值,可用于设置得到首次AE 收敛稳定标志的亮度范围。AE 统计亮度第一次落在 [目标亮度- init_ae_tolerance,目标亮度+init_ae_tolerance]范围内时,得到首次 AE 收敛稳定标志。若不设置,该值默认为 0。若在 cmos.c 不对该值赋值或赋值为 0,则 AE 算法内部将其置为ae_compensation /10。AE 算法内部会将该值钳位至(0,255]。 |
| full_lines_std | 基准帧率时 1 帧的有效行数。 |
| full_lines_max | sensor 降帧后 1 帧所能达到的最大行数,一般设为 sensor 所支持的最大行数。 |
| full_lines | sensor 每帧实际生效的总行数。使用海思 AE 算法时,回调 cmos_fps_set 和 cmos_slow_framerate_set 时必须给该值赋值,用于返回每帧实际生效的总行数。 |
| binning_full_lines | sensor 在 binning 模式下的等效曝光总行数,以行为单位。 |
| max_int_time | 最大曝光时间,以行为单位。 |
| min_int_time | 最小曝光时间,以行为单位。 |
| max_int_time_target | 最大曝光时间目标值,以行为单位。 |
| min_int_time_target | 最小曝光时间目标值,以行为单位。 |
| int_time_accu | 曝光时间精度。 |
| max_again | 最大模拟增益,以倍为单位。 |
| min_again | 最小模拟增益,以倍为单位。 |
| max_again_target | 最大模拟增益目标值,以倍为单位。 |
| min_again_target | 最小模拟增益目标值,以倍为单位。 |
| again_accu | 模拟增益精度。 |
| max_dgain | 最大数字增益,以倍为单位。 |
| min_dgain | 最小数字增益,以倍为单位。 |
| max_dgain_target | 最大数字增益目标值,以倍为单位。 |
| min_dgain_target | 最小数字增益目标值,以倍为单位。 |
| dgain_accu | 数字增益精度。 |
| max_isp_dgain_target | 最大 ISP 数字增益目标值,以倍为单位。 |
| min_isp_dgain_target | 最小 ISP 数字增益目标值,以倍为单位。 |
| isp_dgain_shift | ISP 数字增益精度。 |
| max_int_time_step | 自动长帧模式下普通模式和长帧模式之前切换过程中,对短帧曝光时间减小的最大调整步长,以行数为单位。仅在自动长帧模式下有效。 |
| max_time_step_enable | 短帧曝光时间最大步长限定开关,该值为 HI_TRUE 时,短帧曝光时间最大步长限制功能生效。仅在 2 帧行合成WDR 模式下生效。 |
| max_inc_time_step | 目前只开放 max_inc_time_step [0],max_inc_time_step[0]为短帧曝光时间增加的最大步长,以行为单位。即下一帧的曝光行数相比当前帧增加的最大曝光行数不超过 max_inc_time_step [0]。仅在 2 帧行合成 WDR 模式下 max_time_step_enable 开关使能后生效。 HI_ISP_WDR_MAX_FRAME_NUM用于定义WDR合成的最大帧数,表示4。 |
| max_dec_time_step | 目前只开放 max_dec_time_step [0], max_dec_time_step [0]为短帧曝光时间减少的最大步长,以行为单位。即下一帧的曝光行数相比当前帧减少的最大曝光行数不超过 max_dec_time_step [0]。仅在 2 帧行合成 WDR 模式下 max_time_step_enable 开关使能后生效。 HI_ISP_WDR_MAX_FRAME_NUM用于定义WDR合成的最大帧数,表示4。 |
| lf_max_short_time | 自动长帧模式下短帧最大曝光时间。 |
| lf_min_exposure | 自动长帧模式下强制输出长帧的最小曝光量。 |
| ae_route_attr | AE 默认分配路线。 |
| ae_route_ex_valid | AE 扩展分配路线是否生效开关,该值为 HI_TRUE 时使用扩展分配路线,否则使用普通 AE 分配路线。 |
| ae_route_attr_ex | AE 默认扩展分配路线,合理配置可用于优化 WDR 模式图像效果。 |
| ae_route_sf_attr | AE 短帧默认分配路线。 |
| ae_route_sf_attr_ex | AE 短帧默认扩展分配路线,合理配置可用于优化 WDR 模式图像效果。 |
| man_ratio_enable | 多帧合成 WDR 手动曝光比使能,该值为 HI_TRUE 时,曝光比固定,不会根据场景自动更新。 |
| arr_ratio | 多帧合成WDR相邻2帧默认曝光比。当man_ratio_enable为HI_TRUE时,采用 arr_ratio[0]作为S/VS 默认曝光比,arr_ratio[1]作为M/S默认曝光比,arr_ratio[2]作为 L/M默认曝光比。上述VS,S,M,L 分别表示极短帧,短帧,中帧和长帧的曝光时间,2 帧合成时只有VS和S;3帧合成时采用VS,S 和 M;4帧合成时采用VS,S,M 和 L。6bit 小数精度。 数组内各元素取值范围:[0x40, 0xFFF]。 HI_ISP_EXP_RATIO_NUM用于定义WDR曝光比的数目,表示3。 |
| iris_type | 默认镜头类型,DC-Iris 或 P-Iris。默认镜头类型与实际对接镜头类型不一致时,AI 算法无法正常工作。 |
| piris_attr | P-Iris 参数,与具体镜头相关。只有默认镜头类型是 P-Iris 时,才需要用该结构体参数。 |
| max_iris_fno | P-Iris 可用的最大 F 值,与具体使用镜头相关,使用 P-Iris 时必须设置,用于限制实际生效的 max_iris_fno_target 和 min_iris_fno_target,避免光圈目标值落到不合理的范围导致 AE 分配异常。 取值范围为[HI_ISP_IRIS_F_NO_32_0, HI_ISP_IRIS_F_NO_1_0]。 |
| min_iris_fno | P-Iris 可用的最小 F 值,与具体使用镜头相关,使用 P-Iris 时必须设置,用于限制实际生效的 max_iris_fno_target 和 min_iris_fno_target,避免光圈目标值落到不合理的范围导致 AE 分配异常。 取值范围为[HI_ISP_IRIS_F_NO_32_0, HI_ISP_IRIS_F_NO_1_0]。 |
| ae_exp_mode | 默认曝光策略,高光优先或低光优先。建议 FSWDR 模式设置为低光优先,线性模式及 BuiltIn WDR 设置为高光优先。若不设置该值,默认为高光优先。 |
| iso_cal_coef | ISO 标定系数,用于保证拍照所需 DCF 信息中显示的 ISO 是标准的,8bit 精度。 取值范围:[0x0, 0xFFFF],默认值为 0x100。 |
| ae_run_interval | 默认 AE 算法运行间隔,以帧为单位。若不设置,则默认 AE 每帧执行一次。 取值范围:(0x0, 0xFF] |
| exp_ratio_max | 默认最大曝光比,仅在多帧合成 WDR 模式下有效。 - 当 man_ratio_enable 为 HI_FALSE 时, exp_ratio_max 表示最长帧与最短帧曝光时间比值的最大值。即 2 帧合成时表示 S/VS 曝光比的最大值,3 帧合成时表示 M/VS 曝光比的最大值,4 帧合成时表示 L/VS 曝光比的最大值。 - 当 man_ratio_enable 为 HI_TRUE 时,exp_ratio_max 无效。 6bit 小数精度,0x40 表示曝光比为 1 倍。 取值范围:[0x40, 0x4000] |
| exp_ratio_min | 默认最小曝光比,仅在多帧合成 WDR 模式下有效。 - 当 man_ratio_enable 为 HI_FALSE 时,exp_ratio_min 表示长帧曝光时间与短帧曝光时间比值的最小值。 - 当 man_ratio_enable 为 HI_TRUE 时,exp_ratio_min 无效。 6bit 小数精度,0x40 表示曝光比为 1 倍。 取值范围:[0x40, exp_ratio_max] |
| diff_gain_support | sensor 是否支持长短帧不同增益配置,该值为 HI_TRUE 时,sensor 支持长短帧不同 senor 模拟增益、sensor 数字增益配置,该值为 HI_FALSE 时,sensor 不支持长短帧不同 senor 模拟增益、sensor 数字增益配置。 |
| quick_start | 设置不带光敏快启相关参数。 |
| prior_frame | WDR 模式下曝光路线生效的优先帧, 线性模式下此参数需配置为 LONG_FRAME。 |
| ae_gain_sep_cfg | 长短帧增益是否分开分配。 |
| lhcg_support | Sensor 是否使用 LCG+HCG 模式,该值为 HI_TRUE 时, Sensor 使用 LCG+HCG 模式,该值为 HI_FALSE 时, Sensor 使用普通模式。 |
| sns_lhcg_exp_ratio | LCG+HCG 模式的基础曝光比。 |
注意事项
-
线性/WDR 模式切换时,会回调 pfn_cmos_get_ae_default 函数更新 AE 相关默认参数。若 WDR 模式要使用 AE 扩展分配路线而线性模式不需要,建议在 cmos_get_ae_default 函数里面先对 AE 路线清零:ae_route_ex_valid= HI_FALSE,ae_route_attr. total_num= 0,ae_route_attr_ex. total_num= 0,然后视需要在 WDR 分支赋值。
-
海思 AE 算法采用 init_exposure 作为初始 5 帧的曝光量,可用于运动 DV 加速启动。建议关注快速启动的产品形态根据常用场景配置一个合适的初始曝光量,以达到 AE 快速收敛。FSWDR 模式该值对应的是长帧曝光量,FSWDR 模式若要快速启动,最好在 cmos.c 设置为固定曝光比,以减少曝光比调整的时间,待 AE 稳定后再根据需要设置为自动曝光比。若在 cmos.c 未给 init_exposure 赋值或将 init_exposure 赋值为 0,则 AE 算法内部按起始曝光量为 1024 开始计算。
WDR 模式切换时,海思 AE 算法内部会计算切换曝光量以保证切换平滑,如果希望在 WDR 模式切换时init_exposure 生效,可以通过配置 init_ae_speed 为0xFFFFFFFF 实现。
-
对于特定 Sensor,如 OV2718 DCG 模式,内部仅支持固定曝光比,需要配置man_ratio_enable= HI_TRUE,并把 ratio 配置为 Sensor 支持的固定曝光比,如果使用自动曝光比或手动配置为不支持的曝光比,会使图像效果不正常。
-
max_int_time_step 自动长帧模式下普通模式和长帧模式之前切换过程中, 对短帧曝光时间减小的最大调整步长,以行数为单位。仅在自动长帧模式下有效。此参数针对短帧曝光时间减小过快会出现坏帧的 sensor 开放,一般 sensor 可以设定为较大值,则可以受此参数限制。
-
max_time_step_enable,max_inc_time_step [0],max_dec_time_step [0],这部分参数针对 2 合 1 行合成 WDR 模式下,短帧曝光时间前后 2 帧之间增加或者减少有限制的 sensor 开放。
-
lf_max_short_time 为自动长帧模式下短帧曝光时间的最大值,如果此参数设置过小会导致自动长帧模式下亮区噪声表现变差。
-
对于支持 LCG+HCG 模式的 Sensor,如 OV2775,如果使用该模式,需正确配置基础曝光比 sns_lhcg_exp_ratio,并且必须配置prior_frame=HI_ISP_LONG_FRAME,ae_gain_sep_cfg= HI_TRUE,否则会使图像效果不正常。
父主题: ISP系统控制及3A算法注册
hi_isp_ae_sensor_exp_func
说明定义
sensor回调函数结构体。
定义
typedefstruct {
hi_s32 (*pfn_cmos_get_ae_default)(hi_vi_pipe vi_pipe, hi_isp_ae_sensor_default*ae_sns_dft);
hi_void (*pfn_cmos_fps_set)(hi_vi_pipe vi_pipe, hi_floatf32_fps, hi_isp_ae_sensor_default*ae_sns_dft);
hi_void (*pfn_cmos_slow_framerate_set)(hi_vi_pipe vi_pipe, hi_u32full_lines, hi_isp_ae_sensor_default*ae_sns_dft);
hi_void (*pfn_cmos_inttime_update)(hi_vi_pipe vi_pipe, hi_u32int_time);
hi_void (*pfn_cmos_gains_update)(hi_vi_pipe vi_pipe, hi_u32again, hi_u32dgain);
hi_void (*pfn_cmos_again_calc_table)(hi_vi_pipe vi_pipe, hi_u32*again_lin, hi_u32*again_db);
hi_void (*pfn_cmos_dgain_calc_table)(hi_vi_pipe vi_pipe, hi_u32*dgain_lin, hi_u32*dgain_db);
hi_void (*pfn_cmos_get_inttime_max)(hi_vi_pipe vi_pipe, hi_u16man_ratio_enable,
hi_u32*ratio, hi_u32*int_time_max, hi_u32*int_time_min, hi_u32*lf_max_int_time);
hi_void (*pfn_cmos_ae_fswdr_attr_set)(hi_vi_pipe vi_pipe, hi_isp_ae_fswdr_attr*ae_fswdr_attr);
hi_void (*pfn_cmos_ae_quick_start_status_set)(hi_vi_pipe vi_pipe, hi_boolquick_start_status);
hi_void (*pfn_cmos_exp_param_convert)(hi_vi_pipe vi_pipe, hi_isp_ae_convert_param*exp_param);
} hi_isp_ae_sensor_exp_func;
成员
| 成员名称 | 描述 |
|---|---|
| pfn_cmos_get_ae_default | 获取AE算法库的初始值的回调函数指针。 |
| pfn_cmos_fps_set | 设置sensor的帧率。 |
| pfn_cmos_slow_framerate_set | 设置sensor的降帧。 |
| pfn_cmos_inttime_update | 设置sensor的曝光时间。 |
| pfn_cmos_gains_update | 设置sensor的模拟增益和数字增益。 |
| pfn_cmos_again_calc_table | 计算TABLE类型sensor模拟增益。 |
| pfn_cmos_dgain_calc_table | 计算TABLE类型sensor数字增益。 |
| pfn_cmos_get_inttime_max | WDR模式下,计算短帧最大曝光时间的回调函数指针,与sensor强相关。 |
| pfn_cmos_ae_fswdr_attr_set | 2to1LineWDR模式下,设置长帧模式。 |
| pfn_cmos_ae_quick_start_status_set | 设置AE无光敏快启收敛状态。 |
| pfn_cmos_exp_param_convert | 完成不同帧率等曝光量转换曝光参数属性,配套hi_mpi_isp_get_exp_convert提供。 |
注意事项
- 如果回调函数指针不需要赋值,需要置为NULL。
- 在hi_isp_ae_sensor_default中定义了曝光时间和增益的精度,pfn_cmos_inttime_update和pfn_cmos_gains_update中设置的曝光时间和增益都是带精度的值,如何转换成sensor的配置值与sensor强相关,请参阅sensor手册。
- 不使用无光敏快启功能时,pfn_cmos_ae_quick_start_status_set需要设置为NULL。
- quick_start_status是AE无光敏快启收敛状态的标志位。该值为HI_TRUE时,无光敏快启收敛完成。
父主题: ISP系统控制及3A算法注册
hi_isp_ae_sensor_register
说明
定义sensor注册结构体。
定义
typedef struct {
hi_isp_ae_sensor_exp_func sns_exp;
} hi_isp_ae_sensor_register;
成员
| 成员名称 | 描述 |
|---|---|
| sns_exp | Sensor注册的回调函数结构体。 |
父主题: ISP系统控制及3A算法注册
hi_isp_awb_agc_table
说明
定义饱和度初始化参数结构体。
定义
typedef struct {
hi_bool valid;
hi_u8 saturation[HI_ISP_AUTO_ISO_NUM];
} hi_isp_awb_agc_table;
成员
| 成员名称 | 描述 |
|---|---|
| valid | 该结构体的数据是否有效,取值范围为 0、1。 |
| saturation | 根据增益动态调节饱和度的插值数组,数组内元素的取值范围为[0, 255]。 saturation为非单调递减序列。 HI_ISP_AUTO_ISO_NUM用于定义ISO档位数,表示16。 |
父主题: ISP系统控制及3A算法注册
hi_isp_awb_ccm_tab
说明
定义不同色温下自动颜色校正矩阵系数。
定义
typedef struct {
hi_u16 color_temp;
hi_u16 ccm[HI_ISP_CCM_MATRIX_SIZE];
} hi_isp_awb_ccm_tab;
成员
| 成员名称 | 描述 |
|---|---|
| color_temp | 当前配置的CCM对应的色温。 取值范围:[2000, 10000] |
| ccm | 不同色温下的颜色校正矩阵,8bit小数精度。Bit[15]是符号位,0 表示正数,1 表示负数,例如0x8010表示-16。Bit[12],Bit[13],Bit[14]是无效的,即正数从0x0000到0x0FFF,负数从0x8000到0x8FFF,是CCM的合理参数。 取值范围:[0x0, 0xFFFF]。 HI_ISP_CCM_MATRIX_SIZE用于定义CCM矩阵参数个数,表示9。 |
父主题: ISP系统控制及3A算法注册
在线提单