Rockchip Developement Guide ISP21
:::info 文档信息
文档标识:RK-KF-GX-601 · 发布版本:V2.1.0 · 发布日期:2020-08-24 · 页数:220 · 语言:英文
原始文档:Rockchip_Development_Guide_ISP21_CN_v2.1.0.pdf
:::
章节大纲
- Rockchip Developement Guide ISP21(P1)
- 概述(P10)
- 功能描述(P10)
- RkAiq架构(P10)
- 软件架构(P10)
- 软件流程(P11)
- API说明(P13)
- 系统控制(P13)
- 功能概述(P13)
- API参考(P13)
- rk_aiq_uapi2_sysctl_init(P13)
- rk_aiq_uapi2_sysctl_deinit(P14)
- rk_aiq_uapi2_sysctl_prepare(P14)
- rk_aiq_uapi2_sysctl_start(P15)
- rk_aiq_uapi2_sysctl_stop(P16)
- rk_aiq_uapi2_sysctl_getStaticMetas(P16)
- rk_aiq_uapi2_sysctl_enumStaticMetas(P17)
- rk_aiq_uapi2_sysctl_setModuleCtl(P18)
- rk_aiq_uapi2_sysctl_getModuleCtl(P18)
- rk_aiq_uapi2_sysctl_enableAxlib(P19)
- rk_aiq_uapi2_sysctl_getAxlibStatus(P20)
- rk_aiq_uapi2_sysctl_getEnabledAxlibCtx(P20)
- rk_aiq_uapi2_sysctl_setCpsLtCfg(P21)
- rk_aiq_uapi2_sysctl_getCpsLtInfo(P21)
- rk_aiq_uapi2_sysctl_queryCpsLtCap(P22)
- rk_aiq_uapi2_sysctl_getBindedSnsEntNmByVd(P23)
- rk_aiq_uapi2_sysctl_updateIq(P23)
- rk_aiq_uapi2_sysctl_getCrop(P24)
- 数据类型(P24)
- rk_aiq_working_mode_t(P24)
- rk_aiq_static_info_t(P25)
- rk_aiq_sensor_info_t(P25)
- rk_aiq_module_id_t(P26)
- rk_aiq_cpsl_cfg_t(P27)
- rk_aiq_cpsl_info_t(P28)
- rk_aiq_cpsl_cap_t(P28)
- rk_aiq_rect_t(P29)
- 离线帧处理(P30)
- 概述(P30)
- 功能框图(P30)
- 功能描述(P30)
- RK-RAW格式说明(P31)
- 如何获取RK RAW文件(P31)
- 支持的RAW格式(P31)
- API参考(P31)
- 数据结构(P31)
- 注意事项(P31)
- 参考示例(P31)
- AE(P31)
- 概述(P31)
- 重要概念(P32)
- 功能描述(P32)
- 功能级API参考(P32)
- rk_aiq_uapi2_setExpMode(P32)
- rk_aiq_uapi2_getExpMode(P32)
- rk_aiq_uapi2_setManualExp(P33)
- rk_aiq_uapi2_setExpGainRange(P34)
- rk_aiq_uapi2_getExpGainRange(P34)
- rk_aiq_uapi2_setExpTimeRange(P35)
- rk_aiq_uapi2_getExpTimeRange(P35)
- rk_aiq_uapi2_setBLCMode(P36)
- rk_aiq_uapi2_setBLCStrength(P36)
- rk_aiq_uapi2_setHLCMode(P37)
- rk_aiq_uapi2_setHLCStrength(P38)
- rk_aiq_uapi2_setAntiFlickerEn(P38)
- rk_aiq_uapi2_getAntiFlickerEn(P39)
- rk_aiq_uapi2_setAntiFlickerMode(P39)
- rk_aiq_uapi2_getAntiFlickerMode(P40)
- rk_aiq_uapi2_setExpPwrLineFreqMode(P41)
- rk_aiq_uapi2_getExpPwrLineFreqMode(P41)
- 功能级API数据类型(P42)
- opMode_t(P42)
- paRange_t(P42)
- aeMeasAreaType_t(P43)
- expPwrLineFreq_t(P43)
- antiFlickerMode_t(P43)
- 模块级API参考(P44)
- rk_aiq_user_api2_ae_setExpSwAttr(P44)
- rk_aiq_user_api2_ae_getExpSwAttr(P47)
- rk_aiq_user_api2_ae_setLinAeRouteAttr(P48)
- rk_aiq_user_api2_ae_getLinAeRouteAttr(P49)
- rk_aiq_user_api2_ae_setHdrAeRouteAttr(P50)
- rk_aiq_user_api2_ae_getHdrAeRouteAttr(P52)
- rk_aiq_user_api2_ae_setLinExpAttr(P53)
- rk_aiq_user_api2_ae_getLinExpAttr(P53)
- rk_aiq_user_api2_ae_setHdrExpAttr(P54)
- rk_aiq_user_api2_ae_getHdrExpAttr(P54)
- rk_aiq_user_api2_ae_setIrisAttr(P55)
- rk_aiq_user_api2_ae_getIrisAttr(P55)
- rk_aiq_user_api2_ae_setExpWinAttr(P57)
- rk_aiq_user_api2_ae_getExpWinAttr(P58)
- rk_aiq_user_api2_ae_queryExpResInfo(P58)
- 模块级API数据类型(P59)
- Uapi_ExpSwAttr_t(P59)
- Uapi_ExpSwAttr_AdvancedV2_t(P60)
- Aec_AeRange_t(P61)
- Aec_LinAeRange_t(P61)
- Aec_HdrAeRange_t(P62)
- Uapi_AeAttrV2_t(P63)
- Uapi_AeSpeedV2_t(P64)
- Uapi_AeFpsAttrV2_t(P64)
- Uapi_AntiFlickerV2_t(P65)
- Uapi_MeAttrV2_t(P66)
- Uapi_LinMeAttrV2_t(P66)
- Uapi_HdrMeAttrV2_t(P67)
- Uapi_LinAeRouteAttr_t(P67)
- Uapi_HdrAeRouteAttr_t(P68)
- Uapi_LinExpAttrV2_t(P70)
- CalibDb_AecDynamicSetpointV2_t(P71)
- Uapi_HdrExpAttrV2_t(P71)
- Uapi_IrisAttrV2_t(P72)
- CalibDb_MIris_AttrV2_t(P73)
- CalibDb_PIris_AttrV2_t(P73)
- CalibDb_DCIris_AttrV2_t(P74)
- Uapi_ExpWin_t(P78)
- Uapi_ExpQueryInfo_t(P78)
- 常见问题定位及debug方法(P80)
- 曝光统计同步测试功能(P80)
- 曝光变化时出现闪烁(P81)
- AWB(P82)
- 概述(P83)
- 重要概念(P83)
- 功能描述(P83)
- 功能级API参考(P83)
- rk_aiq_uapi2_setWBMode(P83)
- rk_aiq_uapi2_getWBMode(P83)
- rk_aiq_uapi2_lockAWB(P84)
- rk_aiq_uapi2_unlockAWB(P85)
- rk_aiq_uapi2_setMWBScene(P85)
- rk_aiq_uapi2_getMWBScene(P86)
- rk_aiq_uapi2_setMWBGain(P86)
- rk_aiq_uapi2_getWBGain(P87)
- rk_aiq_uapi2_setMWBCT(P87)
- rk_aiq_uapi2_getWBCT(P88)
- rk_aiq_uapi2_setAwbGainOffsetAttrib(P88)
- rk_aiq_uapi2_getAwbGainOffsetAttrib(P89)
- rk_aiq_uapi2_setAwbGainAdjustAttrib(P90)
- rk_aiq_uapi2_getAwbGainAdjustAttrib(P90)
- rk_aiq_uapi2_setAwbV21AllAttrib(P91)
- rk_aiq_uapi2_getAwbV21AllAttrib(P91)
- 功能级API数据类型(P92)
- rk_aiq_wb_op_mode_t(P92)
- rk_aiq_wb_mwb_mode_t(P92)
- rk_aiq_wb_gain_t(P93)
- rk_aiq_wb_scene_t(P93)
- rk_aiq_wb_cct_t(P94)
- rk_aiq_wb_mwb_attrib_t(P94)
- CalibDbV2_Awb_gain_offset_cfg_t(P95)
- rk_aiq_uapiV2_wb_awb_wbGainAdjust_t(P95)
- rk_aiq_uapiV2_wbV21_awb_attrib_t(P96)
- rk_aiq_uapiV2_wbV21_attrib_t(P96)
- 模块级API参考(P97)
- rk_aiq_user_api2_awb_GetCCT(P97)
- rk_aiq_user_api2_awb_QueryWBInfo(P98)
- rk_aiq_user_api2_awb_SetMwbAttrib(P98)
- rk_aiq_user_api2_awb_GetMwbAttrib(P99)
- 模块级API数据类型(P99)
- rk_aiq_wb_querry_info_t(P99)
- AF(P100)
- 概述(P100)
- 重要概念(P100)
- 功能描述(P100)
- 开发用户AF算法(P100)
- 功能级API参考(P101)
- rk_aiq_uapi2_setFocusMeasCfg(P101)
- rk_aiq_uapi2_setFocusMode(P101)
- rk_aiq_uapi2_getFocusMode(P102)
- rk_aiq_uapi2_setFixedModeCode(P102)
- rk_aiq_uapi2_getFixedModeCode(P103)
- rk_aiq_uapi2_setFocusWin(P103)
- rk_aiq_uapi2_getFocusWin(P104)
- rk_aiq_uapi2_lockFocus(P104)
- rk_aiq_uapi2_unlockFocus(P105)
- rk_aiq_uapi2_oneshotFocus(P105)
- rk_aiq_uapi2_manualTrigerFocus(P106)
- rk_aiq_uapi2_trackingFocus(P106)
- rk_aiq_uapi2_setVcmCfg(P107)
- rk_aiq_uapi2_getVcmCfg(P107)
- rk_aiq_uapi2_setOpZoomPosition(P108)
- rk_aiq_uapi2_getOpZoomPosition(P108)
- 功能级API数据类型(P109)
- rk_aiq_af_algo_meas_t(P109)
- opMode_t(P111)
- rk_aiq_lens_vcmcfg(P112)
- 模块级API参考(P112)
- rk_aiq_user_api2_af_SetAttrib(P112)
- rk_aiq_user_api2_af_GetAttrib(P113)
- 模块级API数据类型(P113)
- RKAIQ_AF_MODE(P113)
- rk_aiq_af_attrib_t(P114)
- 其它说明(P115)
- VCM驱动验证(P115)
- Normal模式提高对焦速度(P116)
- IMGPROC(P116)
- 概述(P116)
- FEC(P116)
- 功能描述(P116)
- 重要概念(P116)
- 功能级API参考(P116)
- rk_aiq_uapi2_setFecEn(P116)
- rk_aiq_uapi2_setFecCorrectDirection(P117)
- rk_aiq_uapi2_setFecBypass(P118)
- rk_aiq_uapi2_setFecCorrectLevel(P118)
- 模块级API参考(P119)
- rk_aiq_user_api2_afec_SetAttrib(P119)
- rk_aiq_user_api2_afec_GetAttrib(P119)
- 模块级API数据类型(P120)
- fec_correct_direction_t(P120)
- rk_aiq_fec_attrib_t(P120)
- 性能优化(P121)
- LDCH(P123)
- 功能描述(P123)
- 功能级API参考(P123)
- rk_aiq_uapi2_setLdchEn(P123)
- rk_aiq_uapi2_setLdchCorrectLevel(P124)
- 模块级API参考(P124)
- rk_aiq_user_api2_aldch_SetAttrib(P124)
- rk_aiq_user_api2_aldch_GetAttrib(P125)
- 模块级API数据类型(P125)
- rk_aiq_ldch_attrib_t(P125)
- Merge(P126)
- 功能描述(P126)
- 重要概念(P126)
- 功能级API参考(P126)
- 模块级API参考(P126)
- rk_aiq_user_api2_amerge_SetAttrib(P126)
- rk_aiq_user_api2_amerge_GetAttrib(P127)
- 模块级API数据类型(P127)
- merge_OpMode_t(P127)
- mgeCtrlData_t(P128)
- amgeAttr_t(P128)
- mmgeAttr_t(P129)
- mmergeAttr_t(P129)
- MergeCurrCtlData_t(P130)
- MergeCurrRegData_t(P130)
- MergeOECurveV20_t(P131)
- MergeMDCurveV20_t(P131)
- MergeV20_t(P132)
- CalibDbV2_merge_t(P133)
- mergeAttr_t(P133)
- DRC(P134)
- 功能描述(P134)
- 重要概念(P134)
- 功能级API参考(P134)
- rk_aiq_uapi2_enableDrc(P134)
- rk_aiq_uapi2_disableDrc(P134)
- rk_aiq_uapi2_setDrcGain(P135)
- rk_aiq_uapi2_getDrcGain(P136)
- rk_aiq_uapi2_setDrcHiLit(P136)
- rk_aiq_uapi2_getDrcHiLit(P137)
- rk_aiq_uapi2_setDrcLocalTMO(P138)
- rk_aiq_uapi2_getDrcLocalTMO(P138)
- rk_aiq_uapi2_setDrcCompress(P139)
- rk_aiq_uapi2_getDrcCompress(P140)
- 功能级API数据类型(P140)
- CompressMode_t(P140)
- mDrcCompress_t(P141)
- 模块级API参考(P141)
- rk_aiq_user_api2_adrc_SetAttrib(P141)
- rk_aiq_user_api2_adrc_GetAttrib(P141)
- 模块级API数据类型(P142)
- drc_OpMode_t(P142)
- mDrcGain_t(P143)
- mDrcHiLit_t(P143)
- mDrcLocal_t(P143)
- CompressMode_t(P144)
- mDrcCompress_t(P144)
- mdrcAttr_t(P145)
- DrcInfo_t(P145)
- drcAttr_t(P145)
- Noise Removal(P146)
- 功能描述(P146)
- 功能级API参考(P146)
- rk_aiq_uapi2_setNRMode(P146)
- rk_aiq_uapi2_getNRMode(P147)
- rk_aiq_uapi2_setANRStrth(P147)
- rk_aiq_uapi2_getANRStrth(P148)
- rk_aiq_uapi2_setMSpaNRStrth(P148)
- rk_aiq_uapi2_getMSpaNRStrth(P149)
- rk_aiq_uapi2_setMTNRStrth(P149)
- rk_aiq_uapi2_getMTNRStrth(P150)
- 模块级API参考(P150)
- rk_aiq_user_api2_abayernrV2_SetAttrib(P151)
- rk_aiq_user_api2_abayernrV2_GetAttrib(P151)
- rk_aiq_user_api2_aynrV2_SetAttrib(P152)
- rk_aiq_user_api2_aynrV2_GetAttrib(P153)
- rk_aiq_user_api2_acnrV1_SetAttrib(P153)
- rk_aiq_user_api2_acnrV1_GetAttrib(P154)
- 模块级API数据类型(P155)
- rk_aiq_bayernr_attrib_v2_t(P155)
- Abayernr_Auto_Attr_V2_t(P155)
- Abayernr_Manual_Attr_V2_t(P156)
- rk_aiq_ynr_attrib_v2_t(P156)
- Aynr_Auto_Attr_V2_t(P157)
- Aynr_Manual_Attr_V2_t(P157)
- rk_aiq_cnr_attrib_v1_t(P158)
- Acnr_Auto_Attr_V1_t(P158)
- Acnr_Manual_Attr_V1_t(P159)
- Defog(P159)
- 功能描述(P159)
- 功能级API参考(P159)
- rk_aiq_uapi2_setDhzMode(P159)
- rk_aiq_uapi2_getDhzMode(P160)
- rk_aiq_uapi2_setMDhzStrth(P161)
- rk_aiq_uapi2_getMDhzStrth(P161)
- rk_aiq_uapi2_enableDhz(P162)
- rk_aiq_uapi2_disableDhz(P162)
- 模块级API参考(P163)
- rk_aiq_user_api2_adehaze_setSwAttrib(P163)
- rk_aiq_user_api2_adehaze_getSwAttrib(P163)
- ACM(P164)
- 功能描述(P164)
- API参考(P164)
- rk_aiq_uapi2_setBrightness(P164)
- rk_aiq_uapi2_getBrightness(P165)
- rk_aiq_uapi2_setContrast(P165)
- rk_aiq_uapi2_getContrast(P166)
- rk_aiq_uapi2_setSaturation(P166)
- rk_aiq_uapi2_getSaturation(P167)
- rk_aiq_uapi2_setHue(P167)
- rk_aiq_uapi2_getHue(P168)
- Sharpen(P169)
- 功能描述(P169)
- 功能级API参考(P169)
- rk_aiq_uapi2_setSharpness(P169)
- rk_aiq_uapi2_getSharpness(P169)
- 模块级API参考(P170)
- rk_aiq_user_api2_asharpV3_SetAttrib(P170)
- rk_aiq_user_api2_asharpV3_GetAttrib(P171)
- 模块级API数据类型(P171)
- rk_aiq_sharp_attrib_v3_t(P171)
- Asharp_Auto_Attr_V3_t(P172)
- Asharp_Manual_Attr_t(P172)
- Gamma(P173)
- 功能描述(P173)
- 功能级API参考(P173)
- rk_aiq_uapi2_setGammaCoef(P173)
- 功能级API数据类型(P173)
- rk_aiq_gamma_op_mode_t(P173)
- rk_gamma_curve_type_t(P174)
- rk_gamma_curve_usr_define1_para_t(P174)
- rk_gamma_curve_usr_define2_para_t(P175)
- Agamma_api_manual_t(P175)
- CalibDb_Gamma_t(P176)
- rk_aiq_gamma_attr_t(P176)
- 模块级API参考(P177)
- rk_aiq_user_api2_agamma_SetAttrib(P177)
- rk_aiq_user_api2_agamma_GetAttrib(P177)
- DPCC(P178)
- 功能描述(P178)
- 模块级API参考(P178)
- rk_aiq_user_api2_adpcc_SetAttrib(P178)
- rk_aiq_user_api2_adpcc_GetAttrib(P178)
- 模块级API数据类型(P179)
- AdpccOPMode_t(P179)
- Adpcc_basic_params_select_t(P180)
- Adpcc_basic_params_t(P182)
- Adpcc_bpt_params_t(P182)
- dpcc_pdaf_point_t(P183)
- Adpcc_pdaf_params_t(P183)
- CalibDb_Dpcc_Fast_Mode_t(P183)
- CalibDb_Dpcc_Sensor_t(P184)
- Adpcc_bpt_params_select_t(P184)
- Adpcc_pdaf_params_select_t(P184)
- Adpcc_Auto_Attr_t(P185)
- Adpcc_fast_mode_attr_t(P185)
- Adpcc_sensor_dpcc_attr_t(P186)
- Adpcc_Manual_Attr_t(P186)
- CalibDb_Dpcc_Pdaf_t(P187)
- CalibDb_Dpcc_set_RK_t(P187)
- CalibDb_Dpcc_set_LC_t(P188)
- CalibDb_Dpcc_set_PG_t(P189)
- CalibDb_Dpcc_set_RND_t(P189)
- CalibDb_Dpcc_set_RG_t(P190)
- CalibDb_Dpcc_set_RO_t(P190)
- CalibDb_Dpcc_set_t(P191)
- CalibDb_Dpcc_Expert_Mode_t(P191)
- CalibDb_Dpcc_t(P192)
- rk_aiq_dpcc_attrib_t(P193)
- ASD(P193)
- 模块级API参考(P193)
- rk_aiq_user_api2_asd_GetAttrib(P194)
- 数据类型(P194)
- asd_attrib_t(P194)
- 模块级API参考(P193)
- Demosaic(P194)
- 功能描述(P195)
- 模块级API参考(P195)
- rk_aiq_user_api2_adebayer_SetAttrib(P195)
- rk_aiq_user_api2_adebayer_GetAttrib(P195)
- 数据类型(P196)
- adebayer_attrib_t(P196)
- 统计信息(P197)
- 概述(P197)
- 功能描述(P197)
- AE统计信息(P197)
- 基于raw图的AE统计(P197)
- 基于RGB图的AE统计(P197)
- AWB统计信息(P197)
- AF统计信息(P197)
- AE统计信息(P197)
- API参考(P198)
- 数据类型(P198)
- rk_aiq_isp_stats_t(P198)
- RKAiqAecStats_t(P198)
- RKAiqAecExpInfo_t(P198)
- RkAiqExpParamComb_t(P199)
- RkAiqAecHwStatsRes_t(P200)
- Aec_Stat_Res_t(P201)
- rawaebig_stat(P201)
- rawaelite_stat(P202)
- rawhist_stat(P203)
- yuvae_stat(P203)
- sihist_stat(P204)
- rk_aiq_awb_stat_res_v200_t(P204)
- rk_aiq_awb_stat_wp_res_light_v200_t(P205)
- rk_aiq_awb_stat_wp_res_v200_t(P205)
- rk_aiq_awb_stat_blk_res_v200_t(P205)
- rk_aiq_af_algo_stat_t(P206)
- Debug & FAQ(P207)
- 如何获取版本号(P207)
- 获取简略版本信息(P207)
- 获取完整版本信息(P207)
- 版本号匹配规则说明(P208)
- AIQ Log(P208)
- Log开关(P208)
- Log解读(P210)
- AE(P210)
- AF(P214)
- AWB(P217)
- 动态抓取raw/yuv图像(P217)
- 抓取raw图原理说明(P217)
- 抓raw图步骤(P217)
- 运行rkisp_demo,抓raw及对应的yuv图像步骤(P218)
- 旧版IQ文件XML转JSON(P218)
- 如何获取版本号(P207)
- 错误码(P219)
- 缩略语(P219)
- 概述(P10)
在线预览
若预览无法显示,请直接下载 PDF 后用本地阅读器打开。
概述
ISP21 包含了一系列的图像处理算法模块,主要包括:暗电流矫正、坏点矫正、3A、HDR、镜头阴影矫正、镜头畸变矫正、3DLUT、去噪(包括RAW域去噪,多帧降噪,颜色去噪等)、锐化等。
ISP21包括硬件算法实现及软件逻辑控制部分,RkAiq即为软件逻辑控制部分的实现。
RkAiq软件模块主要实现的功能为:从ISP驱动获取图像统计,结合IQ Tuning参数,使用一系列算法计算出新的ISP、Sensor等硬件参数,不断迭代该过程,最终达到最优的图像效果。
功能描述
isp21_system
ISP21总体软硬件框图如图1-1所示。Sensor输出数据流给ISP HW,ISP HW再输出经过一系列图像处理算法后的图像。RkAiq不断从ISP HW获取统计数据,并经过3A等算法生成新的参数反馈给各硬件模块。Tuning tool可在线实时调试参数,调试好后可保存生成新的iq参数文件。
RkAiq架构
ISP21 RkAiq软件设计思路如图1-2所示。主要分成以下四个部分:
- RkAiq lib 动态库。该库包含了主要的逻辑部分,负责从驱动获取统计,并传送给各个 算法库。2. Integrated algo libs。Rk提供的静态算法库,已默认注册到RkAiq lib动态库。3. customer 3A libs。客户可根据算法库接口定义实现自己的3A算法库,或者其他算法库。将自定义算法库注册给RkAiq lib动态库后,可根据提供的接口选择跑自定义库还是跑Rk库。4. IQ file。iq tuning结果文件,保存的是算法相关参数以及CIS等一些系统静态参数。
软件架构
图1-3 软件架构框图
ISP21 软件框图如图1-3所示。主要分成以下三层:
- kernel layer。该层包含所有Camera系统的硬件驱动,主要有ISP驱动、sensor驱动、vcm驱动、flashlight驱动、IrCutter驱动等等。驱动都基于V4L2及Media框架实现。2. framework layer。该层为RkAiq lib的集成层,Rkaiq lib有两种集成方式:
IspServer 方式该方式Rkaiq lib跑在 IspServer独立进程,客户端通过dbus与之通信。此外,该方式可为v4l-ctl等现有第三方应用,在不修改源码的情况下,提供具有ISP调试效果的图像。直接集成方式RkAiq lib可直接集成进应用。
- user layer。用户应用层。
软件流程
图1-4 流程图
RkAiq接口调用流程如图1-4所示。图中虚线框部分为可选部分,蓝色字体部分为应用需要配合RkAiq流程所作的配置。
configure media pipeline。可选项,配置ISP21 pipeline,如sensor输出分辨率等等,驱动已有默认配置。rk_aiq_uapi2_sysctl_init。初始化RkAiq,包括IQ tuning参数及各算法库初始化。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。RkAiq不断从ISP驱动获取统计数据,调用3A等算法计算新参数,并应用新参数到驱动。PC Online Tuning Tool。PC端可通过Tuning Tool在线调整参数。video capture stop。停止RkAiq流程前需要先停止数据流部分。rk_aiq_uapi2_sysctl_stop。停止 RkAiq running 流程。可调整参数后再启动或者直接再启动。rk_aiq_uapi2_sysctl_deinit。反初始化RkAiq。
API说明
RKAiq提供的API分为两个级别:功能级别API 与 模块级别API。其中功能级别API是基于模块级别API封装而成,主要是面对产品应用基于该模块的一些简单功能设计。模块级别API提供对该模块的详细参数设置以及查询,未对功能进行API区分。
系统控制
功能概述
系统控制部分包含了AIQ 公共属性配置,初始化 AIQ、运行 AIQ、退出AIQ,设置 AIQ各模块等功能。
API参考
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 entity name | 输入 |
| iq file dir _ _ | 标定参数文件路径 | 输入 |
| err cb _ | 出错回调函数,可为NULL | 输入 |
| metas cb _ | meta数据回调函数,可为NULL | 输入 |
| 返回值 | 描述 |
|---|---|
| rk aiq sys ctx t* _ _ _ _ | AIQ上下文指针 |
头文件:rk_aiq_user_api2_sysctl.h
【注意】
应先于其他函数调用。
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
【注意】
不应在AIQ处于start状态调用。
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
【注意】
应在rk_aiq_uapi2_sysctl_start函数之前调用。如果需要在rk_aiq_uapi2_sysctl_start之后调用本函数,那么先调用rk_aiq_uapi2_sysctl_stop函数,再调用rk_aiq_uapi2_sysctl_prepare重新准备运行环境。
rk_aiq_uapi2_sysctl_start
【描述】启动AIQ控制系统。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
【注意】
应在rk_aiq_uapi2_sysctl_prepare函数之后调用。
rk_aiq_uapi2_sysctl_stop
【描述】停止AIQ控制系统。
XCamReturn
rk_aiq_uapi2_sysctl_stop(const rk_aiq_sys_ctx_t* ctx);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_sysctl.h
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 entity name | 输入 |
| static info _ | 静态信息结构体指针 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_sysctl.h
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
rk_aiq_uapi2_sysctl_setModuleCtl
【描述】AIQ模块开关设置。
XCamReturn
rk_aiq_uapi2_sysctl_setModuleCtl(const rk_aiq_sys_ctx_t* ctx, rk_aiq_module_id_t
mId, bool mod_en);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| mId | 模块ID | 输入 |
| mod en _ | true为开启,false为关闭 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_sysctl.h
rk_aiq_uapi2_sysctl_getModuleCtl
【描述】AIQ模块状态查询。
XCamReturn
rk_aiq_uapi2_sysctl_getModuleCtl(const rk_aiq_sys_ctx_t* ctx, rk_aiq_module_id_t
mId, bool *mod_en);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| mId | 模块ID | 输入 |
| mod en _ | 当前状态 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_sysctl.h
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
【注意】
如果lib_id等同于当前运行的算法库,本函数可以在除未初始化外的任何状态下调用。其他情况,仅在prepared状态下调用,并且algo_type所标识的算法库将被lib_id标识的新算法库替代。
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
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 | 获取失败 |
| 非NULL | 获取成功 |
头文件:rk_aiq_user_api2_sysctl.h
【注意】
返回的算法上下文结构体将被内部私有函数使用。对于用户自定义的算法库,该函数应在rk_aiq_uapi2_sysctl_enableAxlib之后调用,否则将返回NULL。
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
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
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
rk_aiq_uapi2_sysctl_getBindedSnsEntNmByVd
【描述】查询video结点所对应的sensor entity name。
const char* rk_aiq_uapi2_sysctl_getBindedSnsEntNmByVd(const char* vd);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| vd | video路径,如/dev/video20 | 输入 |
| 返回值 | 描述 |
|---|---|
| sensor entity name | 字符串指针 |
【注意】
参数必须为ISPP scale结点路径。
头文件:rk_aiq_user_api2_sysctl.h
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的设置。如AWB模块,在iq中可配置手动、自动模式,那么执行该函数后,不管当前AWB处于何种模式,最终都会被新iq中的默认配置覆盖掉。
头文件:rk_aiq_user_api2_sysctl.h
rk_aiq_uapi2_sysctl_getCrop
【描述】获取crop参数。
XCamReturn
rk_aiq_uapi2_sysctl_getCrop(const rk_aiq_sys_ctx_t* sys_ctx, rk_aiq_rect_t
*rect);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| rect | crop参数结构体指针 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
数据类型
rk_aiq_working_mode_t
AIQ pipeline工作模式
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所支持的模式,若设置的模式不支持则设置无效。
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 _ _ _ _ |
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节点号 |
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 _ _ | 伽玛 |
| 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 _ _ | 鱼眼校正 |
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] |
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] |
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 _ | 红外灯的强度范围 |
rk_aiq_rect_t
定义crop参数结构体
typedef struct rk_aiq_rect_s {
int left;
int top;
int width;
int height;
} rk_aiq_rect_t;
| 成员名称 | 描述 |
|---|---|
| left | horizontal output offset |
| top | vertical output offset |
| width | horizontal output size |
| height | vertical output size |
离线帧处理
概述
RKAIQ提供离线RAW帧处理功能,即RK自定义的RAW格式文件经RKAIQ解析后送ISP处理,输出为可显示正常效果的图像的功能。
注意:离线帧处理功能还未测试通过。
功能框图
离线帧处理框图
功能描述
支持RK-RAW文件输入。使用文件输入接口,调用进程将被阻塞,直到文件处理完成并成功输出。支持RK-RAW buffer输入,异步处理模式。使用buffer输入接口,调用进程不会阻塞,buffer处理完成后将调用回调函数(如有注册回调函数)。支持RK-RAW buffer输入,同步处理模式。使用buffer输入接口,调用进程将被阻塞,直到buffer处理完成并成功输出。
RK-RAW格式说明
参见《RK RAW文件格式》说明文档
如何获取RK RAW文件
请参考"抓raw图步骤"章节
支持的RAW格式
支持raw8/raw10/raw12,支持BGGR/GBRG/GRBG/RGGB四种bayer格式。
API参考
数据结构
注意事项
使用RK Raw数据处理功能,在创建AIQ Context时,rk_aiq_uapi2_sysctl_init接口的参数sns_ent_name须为“FakeCamera”。Raw数据的处理依赖IQ XML效果文件,XML文件生成时的分辨率应与传入的RK Raw帧数据的分辨率一致。效果文件须命名为FakeCamera.xml,放置于XML文件的加载路径下。如果不接real camera,想要使用RK Raw数据处理功能,那么kernel dts中的ISP节点里不要配置输入port。若当前已配置一个real camera sensor,假设real camera sensor连接在ISP0&ISPP0上;如果要使用RK Raw数据处理功能,那么需要在kernel中使能ISP1&ISPP1,使得创建的fake camera sensor能够正常使用。如果real camera sensor和fake camera sensor需要同时使用并且其分辨率不同,那么kernel dts文件中的ISPP节点里需要配置最大分辨率信息,具体配置方式请参见文档《Rockchip_Driver_Guide_ISP2x_CN》。
参考示例
离线帧处理API的使用方法请参考rkisp_demo,路径为YOUR_SDK_DIR/external/camera_engine_rkaiq/rkisp_demo。
AE
概述
AE 模块实现的功能是:根据自动测光系统获得当前图像的曝光量,再自动配置镜头光圈、 sensor 快门及增益来获得最佳的图像质量。
重要概念
曝光时间: sensor 积累电荷的时间,是 sensor pixel 从开始曝光到电量被读出的这段时间。曝光增益:对 sensor 的输出电荷的总的放大系数,一般有数字增益和模拟增益,模拟增益引入的噪声会稍小,所以一般优先用模拟增益。光圈:光圈是镜头中可以改变通光孔径大小的机械装置。抗闪烁:由于电灯的电源工频与 sensor 的帧率不匹配而导致的画面闪烁,一般通过限定曝光时间和修改 sensor 的帧率来达到抗闪烁的效果。
功能描述
AE 模块由AE 统计信息及 AE 控制策略的算法两部分组成。
功能级API参考
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
功能级API数据类型
opMode_t
定义自动手动模式
typedef enum opMode_e {
OP_AUTO = 0,
OP_MANUALl = 1,
OP_INVAL
} opMode_t;
| 成员名称 | 描述 |
|---|---|
| OP AUTO _ | 自动模式 |
| OP MANUALl _ | 手动模式 |
| OP INVAL _ | 无效值 |
paRange_t
定义参数范围
typedef struct paRange_s {
float max;
float min;
} paRange_t;
| 成员名称 | 描述 |
|---|---|
| max | 上限值 |
| min | 下限值 |
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 _ _ _ | 中心区域 |
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赫兹 |
| EXP PWR LINE FREQ 60HZ _ _ _ _ | 60赫兹 |
antiFlickerMode_t
定义抗闪模式
typedef enum antiFlickerMode_e {
ANTIFLICKER_NORMAL_MODE = 0,
ANTIFLICKER_AUTO_MODE = 1,
} antiFlickerMode_t;
| 成员名称 | 描述 |
|---|---|
| ANTIFLICKER NORMAL MODE _ _ | 普通模式 |
| ANTIFLICKER AUTO MODE _ _ | 自动选择模式 |
模块级API参考
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
【举例】
设置手动曝光属性曝光分量包括sensor曝光时间、sensor曝光增益、isp数字增益、光圈。设置手动模式之后,还需要分别设置各曝光分量的手动状态(ManualGainEn、ManualTimeEn、ManualIspDgainEn、ManualIrisEn)及对应手动值。手动模式下,要求至少有一个曝光分量为手动状态,否则将报错退出。手动模式下设置的各曝光分量的值,会受到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.stLinMe.ManualGainEn = true;
expSwAttr.stManual.stLinMe.ManualTimeEn = true;
expSwAttr.stManual.stLinMe.ManualIspDgainEn = true;
expSwAttr.stManual.stLinMe.GainValue = 1.0f; /*gain = 1x*/
expSwAttr.stManual.stLinMe.TimeValue = 0.02f; /*time = 1/50s*/
expSwAttr.stManual.stLinMe.IspDGainValue = 1.0f;/*IspDgain = 1x*/
//HdrAE
expSwAttr.stManual.stHdrMe.ManualGainEn = true;
expSwAttr.stManual.stHdrMe.ManualTimeEn = true;
expSwAttr.stManual.stHdrMe.ManualIspDgainEn = true;
expSwAttr.stManual.stHdrMe.GainValue[0] = 1.0f; /*sframe gain = 1x*/
expSwAttr.stManual.stHdrMe.TimeValue[0] = 0.02f; /*sframe time = 1/50s*/
expSwAttr.stManual.stHdrMe.IspDGainValue[0] = 1.0f;/*sframe IspDgain = 1x*/
....
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
设置自动曝光属性
Uapi_ExpSwAttrV2_t expSwAttr;
ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
expSwAttr.AecOpType = RK_AIQ_OP_MODE_AUTO;
//set gain range
expSwAttr.stAuto.SetAeRangeEn = true;/*必须使能*/
expSwAttr.stAuto.stLinAeRange.stGainRange.Max = 32.0f; /*gain_max = 32x*/
expSwAttr.stAuto.stLinAeRange.stGainRange.Min = 1.0f; /*gain_min = 1x*/
expSwAttr.stAuto.stHdrAeRange.stGainRange[0].Max = 32.0f; /*sframe gain_max =
32x*/
expSwAttr.stAuto.stHdrAeRange.stGainRange[0].Min = 1.0f; /*sframe gain_min =
1x*/
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
//set ae speed
expSwAttr.stAuto.stAeSpeed.DampOver = 0.2f;
expSwAttr.stAuto.stAeSpeed.DampUnder = 0.5f;
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
//set fixed framemode
expSwAttr.stAuto.stFrmRate.isFpsFix = true;
expSwAttr.stAuto.stFrmRate.FpsValue = 25; /*fps = 25*/
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
//set auto framemode
expSwAttr.stAuto.stFrmRate.isFpsFix = false;
/*一般自动降帧模式由tuning人员事先配置好最低帧率和切换帧率对应的gain值*/
//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.stAntiFlicker.enable = true;
expSwAttr.stAntiFlicker.Frequency = AEC_FLICKER_FREQUENCY_50HZ;
expSwAttr.stAntiFlicker.Mode = AEC_ANTIFLICKER_AUTO_MODE;
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
设置AE权重
设置5X5权重,算法内部根据硬件实际分块规格,进行权重的扩展
Uapi_ExpSwAttr_t expSwAttr;
ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
//set aec 5x5 weight
uint8_t DayGridWeights[25]={
0, 1, 1, 1, 0,
1, 2, 3, 2, 1,
3, 5, 7, 5, 3,
2, 3, 4, 4, 2,
1, 2, 2, 2, 1
};
uint8_t NightGridWeights[25]={
0, 1, 1, 1, 0,
1, 2, 3, 2, 1,
3, 5, 7, 5, 3,
2, 3, 4, 4, 2,
1, 2, 2, 2, 1
};
for(int i=0;i<25;i++){
expSwAttr.DayGridWeights.uCoeff[i] = DayGridWeights[i];
expSwAttr.DayGridWeights.uCoeff[i] = DayGridWeights[i];
}
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
设置15X15权重,算法内部根据硬件实际分块规格,进行权重的压缩
Uapi_ExpSwAttr_t expSwAttr;
ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
expSwAttr.stAdvanced.enable = true; //important! true means preferring to use
these parameters
uint8_t DayGridWeights[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
};
uint8_t NightGridWeights[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
};
memcpy(expSwAttr.stAdvanced.DayGridWeights,DayGridWeights,sizeof(expSwAttr.stAdv
anced.DayGridWeights));
memcpy(expSwAttr.stAdvanced.NightGridWeights,NightGridWeights,sizeof(expSwAttr.s
tAdvanced.DayGridWeights));
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
rk_aiq_user_api2_ae_getExpSwAttr
【描述】获取 AE 曝光软件属性。
XCamReturn
rk_aiq_user_api2_ae_getExpSwAttr(const rk_aiq_sys_ctx_t* ctx,
Uapi_ExpSwAttr_t* pExpSwAttr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| pExpSwAttr | AE曝光软件属性结构体指针 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h
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
【举例】
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};
if(len != LinAeRouteAttr.TimeDot_len) {
LinAeRouteAttr.TimeDot_len = len;
LinAeRouteAttr.GainDot_len = len;
LinAeRouteAttr.IspDGainDot_len = len;
LinAeRouteAttr.PIrisDot_len = len;
if(LinAeRouteAttr.TimeDot != NULL)
free(LinAeRouteAttr.TimeDot);
LinAeRouteAttr.TimeDot = (float*)malloc(LinAeRouteAttr.TimeDot_len *
sizeof(float));
if(LinAeRouteAttr.GainDot != NULL)
free(LinAeRouteAttr.GainDot);
LinAeRouteAttr.GainDot = (float*)malloc(LinAeRouteAttr.GainDot_len *
sizeof(float));
if(LinAeRouteAttr.IspDGainDot != NULL)
free(LinAeRouteAttr.IspDGainDot);
LinAeRouteAttr.IspDGainDot = (float*)malloc(LinAeRouteAttr.IspDGainDot_len *
sizeof(float));
if(LinAeRouteAttr.PIrisDot != NULL)
free(LinAeRouteAttr.PIrisDot);
LinAeRouteAttr.PIrisDot = (int*)malloc(LinAeRouteAttr.PIrisDot_len *
sizeof(int));
}
for(int j = 0; j < LinAeRouteAttr.TimeDot_len; j++) {
LinAeRouteAttr.GainDot[j] = LinAeRouteAttr.GainDot[j];
LinAeRouteAttr.IspDGainDot[j] = LinAeRouteAttr.IspDGainDot[j];
LinAeRouteAttr.TimeDot[j] = LinAeRouteAttr.TimeDot[j];
LinAeRouteAttr.PIrisDot[j] = LinAeRouteAttr.PIrisDot[j];
}
memcpy(LinAeRouteAttr.TimeDot,TimeDot,len*sizeof(float));
memcpy(LinAeRouteAttr.GainDot,GainDot,len*sizeof(float));
memcpy(LinAeRouteAttr.IspDGainDot,IspGainDot,len*sizeof(float));
memcpy(LinAeRouteAttr.PIrisDot,PirisDot,len*sizeof(int));
rk_aiq_user_api2_ae_setLinAeRouteAttr(sys_ctx,LinAeRouteAttr);
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
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
【举例】
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};
if(len != stHdrRoute.Frm0TimeDot_len) {
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;
if(stHdrRoute.Frm0TimeDot != NULL)
free(stHdrRoute.Frm0TimeDot);
stHdrRoute.Frm0TimeDot = (float*)malloc(stHdrRoute.Frm0TimeDot_len *
sizeof(float));
if(stHdrRoute.Frm0GainDot != NULL)
free(stHdrRoute.Frm0GainDot);
stHdrRoute.Frm0GainDot = (float*)malloc(stHdrRoute.Frm0GainDot_len *
sizeof(float));
if(stHdrRoute.Frm0IspDGainDot != NULL)
free(stHdrRoute.Frm0IspDGainDot);
stHdrRoute.Frm0IspDGainDot = (float*)malloc(stHdrRoute.Frm0IspDGainDot_len *
sizeof(float));
if(stHdrRoute.Frm1TimeDot != NULL)
free(stHdrRoute.Frm1TimeDot);
stHdrRoute.Frm1TimeDot = (float*)malloc(stHdrRoute.Frm1TimeDot_len *
sizeof(float));
if(stHdrRoute.Frm1GainDot != NULL)
free(stHdrRoute.Frm1GainDot);
stHdrRoute.Frm1GainDot = (float*)malloc(stHdrRoute.Frm1GainDot_len *
sizeof(float));
if(stHdrRoute.Frm1IspDGainDot != NULL)
free(stHdrRoute.Frm1IspDGainDot);
stHdrRoute.Frm1IspDGainDot = (float*)malloc(stHdrRoute.Frm1IspDGainDot_len *
sizeof(float));
if(stHdrRoute.Frm2TimeDot != NULL)
free(stHdrRoute.Frm2TimeDot);
stHdrRoute.Frm2TimeDot = (float*)malloc(stHdrRoute.Frm2TimeDot_len *
sizeof(float));
if(stHdrRoute.Frm2GainDot != NULL)
free(stHdrRoute.Frm2GainDot);
stHdrRoute.Frm2GainDot = (float*)malloc(stHdrRoute.Frm2GainDot_len *
sizeof(float));
if(stHdrRoute.Frm2IspDGainDot != NULL)
free(stHdrRoute.Frm2IspDGainDot);
stHdrRoute.Frm2IspDGainDot = (float*)malloc(stHdrRoute.Frm2IspDGainDot_len *
sizeof(float));
if(stHdrRoute.PIrisDot != NULL)
free(stHdrRoute.PIrisDot);
stHdrRoute.PIrisDot = (int*)malloc(stHdrRoute.PIrisDot_len * sizeof(int));
}
for(int j = 0; j < stHdrRoute.Frm0TimeDot_len; j++) {
stHdrRoute.Frm0TimeDot[j] = stHdrRoute.Frm0TimeDot[j];
stHdrRoute.Frm0GainDot[j] = stHdrRoute.Frm0GainDot[j];
stHdrRoute.Frm0IspDGainDot[j] = stHdrRoute.Frm0IspDGainDot[j];
stHdrRoute.Frm1TimeDot[j] = stHdrRoute.Frm1TimeDot[j];
stHdrRoute.Frm1GainDot[j] = stHdrRoute.Frm1GainDot[j];
stHdrRoute.Frm1IspDGainDot[j] = stHdrRoute.Frm1IspDGainDot[j];
stHdrRoute.Frm2TimeDot[j] = stHdrRoute.Frm2TimeDot[j];
stHdrRoute.Frm2GainDot[j] = stHdrRoute.Frm2GainDot[j];
stHdrRoute.Frm2IspDGainDot[j] = stHdrRoute.Frm2IspDGainDot[j];
stHdrRoute.PIrisDot[j] = stHdrRoute.PIrisDot[j];
}
ret = rk_aiq_user_api2_ae_setHdrAeRouteAttr(ctx,stHdrRoute);
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
rk_aiq_user_api2_ae_setLinExpAttr
【描述】设置AE线性模式曝光参数。
XCamReturn
rk_aiq_user_api2_ae_setLinExpAttr(const rk_aiq_sys_ctx_t* ctx, const
Uapi_LinExpAttr_t linExpAttr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| linExpAttr | AE曝光参数结构体 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h
rk_aiq_user_api2_ae_getLinExpAttr
【描述】获取AE线性模式曝光参数。
XCamReturn
rk_aiq_user_api2_ae_getLinExpAttr(const rk_aiq_sys_ctx_t* ctx,
Uapi_LinExpAttr_t* pLinExpAttr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| pLinExpAttr | AE曝光参数结构体指针 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h
rk_aiq_user_api2_ae_setHdrExpAttr
【描述】设置AE HDR模式曝光参数。
XCamReturn
rk_aiq_user_api2_ae_setHdrExpAttr(const rk_aiq_sys_ctx_t* ctx, const
Uapi_HdrExpAttr_t hdrExpAttr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| hdrExpAttr | AE曝光参数结构体 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h
rk_aiq_user_api2_ae_getHdrExpAttr
【描述】获取AE HDR模式曝光参数。
XCamReturn
rk_aiq_user_api2_ae_getHdrExpAttr(const rk_aiq_sys_ctx_t* ctx,
Uapi_HdrExpAttr_t* pHdrExpAttr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| pHdrExpAttr | AE曝光参数结构体指针 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h
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_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 | 失败,详见错误码表 |
【举例】
设置光圈控制参数
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.StepTabl
e));
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);
头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h
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
【举例】
根据人脸位置修改AE统计坐标,实现针对人脸区域进行亮度统计
Uapi_ExpWin_t ExpWin;
//假设sensor分辨率为2688X1520 人脸相对于画面左上角的横向偏移为100个pixel,纵向偏移为100个
pixel,人脸尺寸为边长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);
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
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
模块级API数据类型
Uapi_ExpSwAttr_t
AE公共功能控制参数结构体
typedef struct Uapi_ExpSwAttrV2_s {
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;
| 成员名称 | 描述 |
|---|---|
| enable | Aec使能开关。1,开启Aec算法;0,关闭Aec算法,曝光保持在关闭前的 值。 |
| RawStatsMode | Aec模块亮度统计模式。共四种模式分别为: Y/R/G/B,默认为Y模式。 |
| HistStatsMode | Aec模块直方图统计模式。共五种模式分别为: Y/R/G/B/RGB,默认为Y模 式。 |
| YRangeMode | Aec模块Y通道Range模式。共两种模式分别为FULL/LIMITED,默认为FULL模 式。 |
| AecRunInterval | Ae算法运行间隔,取值范围[0,255],默认值为0。取值为0时,每帧运行AE; 取值为1时,每隔1帧运行AE;以此类推。 |
| AecOpType | 曝光模式,分为自动曝光(RK AIQ OP MODE AUTO)模式/手动 _ _ _ _ (RK AIQ OP MODE MANUAL)曝光模式。默认为AUTO模式。手动曝光模式 _ _ _ _ 需要与stManual一起配合,进行手动曝光值的设置。 |
| GridWeights | 窗口(直方图)权重,包含15*15个数组元素 |
| stAuto | 自动曝光参数结构体 |
| stManual | 手动曝光参数结构体 |
| stAdvanced | 优先使用参数结构体 |
【相关数据类型】
Uapi_ExpSwAttr_AdvancedV2_t Uapi_AeAttrV2_t Uapi_MeAttrV2_t
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,设置自动曝光分量range;置0,不设置自动曝光分量range,以调试文 件为准 |
| SetLinAeRange | 线性曝光的自动曝光分量range参数值 |
| SetHdrAeRange | HDR曝光的自动曝光分量range参数值 |
【注意事项】
Uapi_ExpSwAttrV2_t 结构体中定义了一组AE权重,权重个数为15X15。算法内部根据硬件实际配置权重个数,进行权重的扩展。如有类似人脸曝光的需求,可使用Uapi_ExpSwAttr_AdvancedV2_t中定义的一组AE权重,其权重个数为15X15。算法内部根据硬件实际配置权重个数,进行权重的压缩。如需使用Uapi_ExpSwAttr_Advanced_t中定义的一组AE权重,需要打开使能enable,将其置1。通过api设置AE参数范围时,需要将SetAeRangeEn置1,否则默认使用调试文件中的自动曝光参数范围。曝光参数范围的设置,按照曝光模式的不同,分为stLinAeRange和stHdrAeRange两套。其中stHdrAeRange内支持各帧自动曝光参数范围的设置。
Aec_AeRange_t
定义AE参数范围
typedef struct Aec_AeRange_s {
float Min;
float Max;
} Aec_AeRange_t;
| 成员名称 | 描述 |
|---|---|
| Min | 下限值 |
| Max | 上限值 |
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曝光分解路线做校正,节点最大值/最小值改为设置的曝光分量最大值/最小值;若超过sensor或ISP的限制,则各曝光分量实际最大值/最小值以AecRoute曝光分解路线节点最大值和最小值为准。
Aec_HdrAeRange_t
定义AE HDR模式的参数范围
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个成员的数组。2帧HDR模式下,仅成员0、1有效、分别表示短帧和长帧对应的曝光分量范围;3帧HDR模式下,0-2皆有效,分别表示短、中、长帧对应的曝光分量范围。各曝光分量最大值/最小值为默认值0时,设置的曝光分量范围不生效,此时各曝光分量实际最大值/最小值以算法校正过的曝光分解路线节点最小值和最大值决定。各曝光分量最大值/最小值不为0时,设置的曝光分量范围生效,当设置的曝光分量范围不超过sensor或ISP的限制,则各曝光分量实际最大值/最小值以设置的曝光分量范围为准,并对曝光分解路线做校正,节点最大值/最小值改为设置的曝光分量最大值/最小值;若超过sensor或ISP的限制,则各曝光分量实际最大值/最小值以曝光分解路线节点最大值和最小值为准。
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 | 线性模式自动曝光量范围结构体 |
| HdrAeRange | Hdr模式自动曝光量范围结构体 |
【注意事项】
LinAeRange/HdrAeRange为算法内部经过校验校正后实际使用的参数范围。当api设置的AE参数范围超过sensor限制的参数范围时,会使用sensor限制的参数范围。sensor限制的参数范围,详见Rockchip_Tuning_Guide_ISP21_CN.pdf 文档中的AE模块sensorinfo参数。设置自动曝光分量range需api调用上文Uapi_ExpSwAttr_AdvancedV2_t中的参数,将SetAeRangeEn置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] |
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时,使用 设定的帧率值。 |
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 | 抗闪频率属性,共包含3种帧率,分别为:AEC FLICKER FREQUENCY OFF(抗闪 _ _ _ 使能位enable置0时有效)、AEC FLICKER FREQUENCY 50HZ、 _ _ _ AEC FLICKER FREQUENCY 60HZ,默认为AEC FLICKER FREQUENCY 50HZ(工 _ _ _ _ _ _ 频50赫兹)。 |
| Mode | 抗闪模式,共包含两种抗闪模式:AEC ANTIFLICKER NORMAL MODE(普通抗 _ _ _ 闪模式)、AEC ANTIFLICKER AUTO MODE(自动抗闪模式) _ _ _ |
【注意事项】
关闭抗闪功能,需将抗闪使能位enable置0,算法内部自动配置Frequency=AEC_FLICKER_FREQUENCY_OFF;如抗闪使能位enable置1时,抗闪频率配置为AEC_FLICKER_FREQUENCY_OFF,该频率值将配置无效,使用默认值AEC_FLICKER_FREQUENCY_50HZ。AEC_ANTIFLICKER_NORMAL_MODE为普通抗闪模式,曝光时间可以根据亮度进行调节,最小曝光时间固定为 1/120 sec( 60Hz)或 1/100 sec(50Hz),不受曝光时间最小值的限制。有灯光的环境:曝光时间可与光源频率相匹配,能够防止图像闪烁。高亮度的环境:亮度越高,要求曝光时间就最短。而普通抗闪模式的最小曝光时间不能匹配光源频率,产生过曝。AEC_ANTIFLICKER_AUTO_MODE为自动抗闪模式,曝光时间可以根据亮度进行调节,最小曝光时间可达到 sensor 的最小曝光时间。与普通抗闪模式的差别主要在高亮度的环境体现。高亮度的环境:最小曝光时间可以达到 sensor 的最小曝光时间,能够有效抑制过曝,但此时抗闪失效。
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
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皆无效。
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皆为成员个数为3的数组。Hdr 2帧模式下,数组[0-1]成员有效,分别表示短、长帧;Hdr 3帧模式下,数组[0-2]成员皆有效,分别对应短、中、长帧。手动/半手动模式下,手动曝光时间和增益会受自动模式下的最大/最小曝光时间和增益限制。超出自动曝光限制的范围之后,将使用自动模式下最大/最小值替代。RK356X目前不支持ISP数字增益,故ManualIspDgainEn、IspDGainValue皆无效。
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 CalibDb_LinAeRoute_AttrV2_t Uapi_LinAeRouteAttr_t;
| 成员名称 | 描述 |
|---|---|
| TimeDot | sensor曝光时间节点,单位为s |
| GainDot | sensor曝光增益节点 |
| IspgainDot | Isp数字增益节点 |
| PIrisGainDot | 光圈等效增益节点 |
【注意事项】
曝光分解曲线节点个数没有限制,但建议不要少于6个
节点的曝光量是曝光时间、sensor增益、ISP数字增益、光圈等效增益等各分量的乘积。节点曝光量必须单调递增,即后一个节点的曝光量必须大于前一个节点的曝光量。第一个节点的曝光量最小,第二个节点的曝光量最大。节点中曝光时间分量的单位为秒,最小值允许为0,实际最小曝光时间代码内部会根据sensor限制进行校正。光圈分量仅支持P-Iris, 不支持DC-Iris。P-iris等效增益分量仅在Airis自动光圈功能使能时有效,否则默认光圈固定为初始值大小。P-iris等效增益的计算详见AecIrisCtrl模块。设置的曝光分解路线节点不是最终生效的曝光分解路线。系统最终各曝光分量的实际最大/小值由曝光分解节点和手动配置的曝光分量最大/小值共同决定。先对曝光分解路线节点最大/小值做第一次校正,当节点最大/小值不超过sensor或isp的限制时,节点最大/小值不变;当节点最大/小值超过sensor或isp的限制时,节点最大/小值以sensor或isp的限制为准。当手动配置的曝光分量最大/小值为0时,最终生效的曝光分解路线以第一次校正的分解路线为准;当手动配置的曝光分量最大/小值不为0时,且设置的最大/小值不超过sensor或isp的限制时,对曝光分解路线做第二次校正,节点最大/小值以手动设置的范围为准;若设置曝光分量的最大/小值超过sensor或isp的限制时,曝光分解路线曝光分量的节点最大/小值以第一次校正结果为准。如果相邻节点的曝光量增加,则应该只有一个曝光分量增加,其他曝光分量固定。增加的分量决定该段路线的分配策略。例如增益分量增加,其他分量固定,那么该段路线的分配策略是增益优先。RK356X目前暂不支持ISP数字增益,故IspgainDot无效。
Uapi_HdrAeRouteAttr_t
定义AE HDR曝光分解路径属性
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 CalibDb_HdrAeRoute_AttrV2_t Uapi_HdrAeRouteAttr_t;
| 成员名称 | 描述 |
|---|---|
| Frm0/1/2TimeDot | 曝光时间节点,单位为秒。Hdr 2帧模式时,仅Frm0/1TimeDot有 效;Hdr 3帧模式时,Frm0/1/2TimeDot皆有效。Frm0~3依次为曝光 量从短至长的帧序号。 |
| Frm0/1/2GainDot | sensor增益节点。Hdr 2帧模式时,仅Frm0/1GainDot有效;Hdr 3帧 模式时,Frm0/1/2GainDot皆有效。此处增益值为实际值,单位为 1x。Frm0~3依次为曝光量从短至长的帧序号。 |
| Frm0/1/2IspDGainDot | Isp数字增益节点。Hdr 2帧模式时,仅Frm0/1IspDGainDot有效; Hdr 3帧模式时,Frm0/1/2IspDGainDot皆有效。此处增益值为实际 值,单位为1x。Frm0~3依次为曝光量从短至长的帧序号。 |
| PIrisDot | 光圈等效增益节点,此处增益值为实际值,单位为1x |
【注意事项】
曝光分解曲线节点个数不限,建议至少设置6个节点,才可实现曝光分解的平滑。需要注意的是:HDR 2帧模式下,仅需设置Frm0/1TimeDot、Frm0/1GainDot、Frm0/1IspDGainDot,分别对应实际的短、长帧;HDR 3帧模式下,需设置Frm0/1/2TimeDot、Frm0/1/2GainDot、Frm0/1/2IspDGainDot,分别对应短、中、长帧。设置HDR模式下各帧的sensor曝光时间时,需要合理分配曝光时间,各帧曝光时间的总和不能超过帧率所允许的最大曝光时间!
节点的曝光量是曝光时间、sensor增益、ISP数字增益、光圈等效增益等各分量的乘积。节点曝光量必须单调递增,即后一个节点的曝光量必须大于前一个节点的曝光量。第一个节点的曝光量最小,第二个节点的曝光量最大。节点中曝光时间分量的单位为秒,最小值允许为0,实际最小曝光时间代码内部会根据sensor限制进行校正。光圈分量仅支持P-Iris, 不支持DC-Iris。P-iris等效增益分量仅在Airis自动光圈功能使能时有效,否则默认光圈固定为初始值大小。P-iris等效增益的计算详见AecIrisCtrl模块。设置的曝光分解路线节点不是最终生效的曝光分解路线。系统最终各曝光分量的实际最大/小值由曝光分解节点和手动配置的曝光分量最大/小值共同决定。先对曝光分解路线节点最大/小值做第一次校正,当节点最大/小值不超过sensor或isp的限制时,节点最大/小值不变;当节点最大/小值超过sensor或isp的限制时,节点最大/小值以sensor或isp的限制为准。当手动配置的曝光分量最大/小值为0时,最终生效的曝光分解路线以第一次校正的分解路线为准;当手动配置的曝光分量最大/小值不为0时,且设置的最大/小值不超过sensor或isp的限制时,对曝光分解路线做第二次校正,节点最大/小值以手动设置的范围为准;若设置曝光分量的最大/小值超过sensor或isp的限制时,曝光分解路线曝光分量的节点最大/小值以第一次校正结果为准。如果相邻节点的曝光量增加,则应该只有一个曝光分量增加,其他曝光分量固定。增加的分量决定该段路线的分配策略。例如增益分量增加,其他分量固定,那么该段路线的分配策略是增益优先。356X目前暂不支持ISP数字增益,故Frm0/1/2ispDGainDot皆无效。
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 CalibDb_LinearAE_AttrV2_t 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时,目标亮度为默认参数的2倍;EvBias=-100时,目标亮度为默认参数的1/2。自动曝光画面亮度的容忍度为Tolerance,当自动曝光收敛时画面亮度值B应在 [真实生效目标亮度X(1-Tolerance/100), 真实生效目标亮度 X(1+Tolerance/100)] 范围内。ToleranceIn/Out设置较大,一方面会影响AE的响应速度,一方面会影响EvBias值。当EvBias调整的间隔值低于ToleranceIn/Out,有可能导致亮度调整不生效。StrategyMode暂无效。
【相关数据类型】
CalibDb_AecDynamicSetpointV2_t CalibDb_AecBacklightV2_t CalibDb_AecOverExpCtrlV2_t
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个节点,以防曝光过渡不平滑。 |
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 CalibDb_HdrAE_AttrV2_t Uapi_HdrExpAttrV2_t;
| 成员名称 | 描述 |
|---|---|
| ToleranceIn/Out | 自动曝光调节时,画面亮度的容忍度。单位为%,取值范围为[0,100] |
| LongfrmMode | 长帧模式参数 |
| StrategyMode | 自动曝光策略模式,高光优先或低光优先 |
| Evbias | 自动曝光调节时,曝光量的偏差百分比,单位为%,取值范围为[-200,+200] |
| ExpRatioCtrl | HdrAE曝光比控制模块,仅在Hdr模式多帧合成下有效 |
| LframeCtrl | 长帧控制参数 |
| MframeCtrl | 中帧控制参数,仅在HDR 3帧模式下有效 |
| SframeCtrl | 短帧控制参数 |
【相关数据类型】
CalibDb_LFrameCtrlV2_t CalibDb_MFrameCtrlV2_t CalibDb_SFrameCtrlV2_t
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 CalibDb_AecIrisCtrlV2_t 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光圈属性参数 |
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值,参数值与DC光圈设备有关,取值范围为[0,100] |
【注意事项】
IrisOpType = RK_AIQ_OP_MODE_MANUAL,手动光圈使能。当光圈类型为P光圈时,仅PirisGainValue有效;当光圈类型为DC光圈时,仅DCIrisHoldValue有效。DCIrisHoldValue,手动模式下直接设置电机的PWM占空比值,取值范围[0,100]。手动模式下若设置为HoldValue值(即AecIrisCtrl中ClosePwmDuty到OpenPwmDuty区间内的值),则DC光圈孔径维持在当前大小;若设置的值大于OpenPwmDuty,则光圈处于打开状态,该值越大打开的速度越大;若设置的值小于ClosePwmDuty,则光圈处于关闭状态,该值越小关闭的速度越大。
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步进电机总步数,具体大小与P-iris镜头有关。 |
| EffcStep | P-iris步进电机的可用步数,具体大小与P-iris镜头有关。 |
| ZeroIsMax | P-iris步进电机step0是否对应最大光圈位置,具体取值与P-iris镜头有关。该值为 0,代表步进电机位置为step0时,光圈开到最小;该值为1,代表步进电机位置为 step0时,光圈开到最大。 |
| StepTable | P-iris步进电机位置与光圈等效增益的映射表,具体数值与P-iris镜头有关。 |
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占空比,具体大小与DC-iris镜头、电路特性有关,单位为%。该值 越小,所支持的光圈关闭速度越快,但容易导致光圈振荡。取值范围 [0,100],默认值为0。 |
| MaxPwmDuty | 最大PWM占空比,具体大小与DC-iris镜头、电路特性有关,单位为%。该值 越大,所支持的光圈打开速度越快,该值过小,可能导致光圈尚未达到最大时 就退出光圈控制。取值范围[0,100],默认值为100。 |
| OpenPwmDuty | 光圈打开时的PWM占空比阈值,当光圈PWM占空比高于(不含) OpenPwmDuty时,光圈处于打开状态。具体大小与DC-iris镜头有关,单位 为%。 |
| ClosePwmDuty | 光圈关闭时的PWM占空比阈值,当光圈PWM占空比小于(不含) ClosePwmDuty时,光圈处于关闭状态。具体大小与DC-iris镜头有关,单位 为%。 |
【注意事项】
自动光圈功能关闭时,对于DC-iris光圈,默认会打开到最大;对于P-iris光圈,默认会打开到最大光圈所对应的步进电机位置。如想改变上述光圈位置,可至AecInitValue模块中修改InitPIrisGainValue、InitDCIrisDutyValue。自动光圈Airis算法的基本控制流程如下:针对DC-iris镜头,Airis根据当前亮度与目标亮度的偏差值,控制DC-iris镜头的光圈大小。当曝光达到最小值时,且当前亮度超出目标亮度容忍度范围,将退出AE控制,曝光时间及曝光增益固定不变,进入AIris控制范围。若当前画面亮度稳定且DC-iris的PWM占空值大于OpenPwmDuty时,认为当前光圈达到最大,退出AIris光圈控制,控制权交由AE。针对P-iris镜头,光圈控制通过AecRoute模块进行。P-iris镜头的光圈大小换算为等效增益,参与曝光分解计算。P-iris的步进电机位置与光圈等效增益映射表StepTable一般根据镜头厂家提供的步进电机位置与光圈孔径对应关系制作。P-iris的控制是通过AE的AecRoute模块来控制的,该模块将光圈孔径大小换算成等效增益,因此要求P-iris的光圈控制需要具有较好的线性度。等效增益的取值范围为[1,1024],用等效增益1024表示F1.0,等效增益512表示F1.4,以此类推,等效增益1表示F32.0。制作表时,需要将步进电机位置对应的光圈孔径换算为等效增益,填入StepTable中,并固定按照步进电机位置递增(即step0、step1……stepN)的顺序填入。TotalStep表示P-iris步进电机总步数,具体大小与P-iris镜头有关。EffcStep表示 P-iris步进电机的可用步数,一般要求小于TotalStep。因为为靠近光圈关闭端的位置,其对应等效增益的值误差较大,光圈调节过程中容易出现振荡,所以通常不会使用光圈关闭端附近的步进位置。表4-1为P-iris步进电机位置与光圈孔径和等效增益的对应表,以此表为例来说明StepTable该如何设置。表4-1中第1-2、4-5列的步进电机位置step和光圈孔径面积的对应关系为某镜头原厂提供。该款P-iris镜头的步进电机调节总步数为81,step0时对应的光圈孔径最大,标称最大光圈数为1.4。光圈数为1.4时对应的等效增益为512,故step0处对应的等效增益为512。其他孔径面积对应的等效增益,此处以step3为例,计算方式如下:step3的孔径面积为195.869,对应等效增益= 512*(195.869/201.062)= 499(四舍五入)。以此类推,其他步进电机位置对应的等效增益值也可据此算出。从表1-1中可知,步进电机位置靠近关闭端时,对应的孔径面积很小,与最大的孔径面积相差可达几千倍,对应的等效增益值误差较大,因此建议靠近光圈关闭端的步进电机位置不要使用,以免因为误差导致曝光振荡。将表中各步进电机位置对应的等效增益按照步进电机位置递增(即step0、step1……stepN)的顺序填入StepTable。DC-iris的OpenPwmDuty与ClosePwmDuty取值需要进行实测,其具体值与DC-iris镜头相关。对于部分镜头,存在当PWM占空比大于OpenPwmDuty时,光圈执行打开操作;当PWM占空比小于OpenPwmDuty时,光圈执行关闭操作;当PWM占空比大于等于ClosePwmDuty且小于等于OpenPwmDuty时,光圈稳定在当前位置,该区间内的值皆为HoldValue。另存在某些镜头,只存在一个光圈开关的阈值,即当PWM占空比大于该阈值时,光圈执行打开操作;当PWM占空比小于该阈值时,光圈执行关闭操作;当PWM占空比等于该阈值时,光圈稳定在当前位置,该阈值即为HoldValue。此时可令ClosePwmDuty = OpenPwmDuty = HoldValue。光圈的手动模式参数设置与曝光的手动模式一致。需要使用手动光圈功能时,需将AecOpType设置为手动模式,并使能AecManualCtrl模块中的ManualIrisEn参数。当IrisType为P-iris时,仅PirisGainValue有效;当IrisType为P-iris时时,仅DCIrisValue有效。
表4-1 P-iris步进电机位置与光圈孔径和等效增益的对应表
| Step | 孔径面积(mm2) | 等效增益 | Step | 孔径面积(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 |
| 29 | 98.826 | 252 | 70 | 0.268 | 1 |
| Step | 孔径面积(mm2) | 等效增益 | Step | 孔径面积(mm2) | 等效增益 |
|---|---|---|---|---|---|
| 30 | 95.115 | 242 | 71 | 0.075 | 0 |
| 31 | 91.431 | 233 | 72 | close | 0 |
| 32 | 87.777 | 224 | 73 | close | 0 |
| 33 | 84.156 | 214 | 74 | close | 0 |
| 34 | 80.569 | 205 | 75 | close | 0 |
| 35 | 77.02 | 196 | 76 | close | 0 |
| 36 | 73.51 | 187 | 77 | close | 0 |
| 37 | 70.043 | 178 | 78 | close | 0 |
| 38 | 66.621 | 170 | 79 | close | 0 |
| 39 | 63.247 | 161 | 80 | close | 0 |
| 40 | 59.923 | 153 |
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 window Uapi_ExpWin_t;
| 成员名称 | 描述 |
|---|---|
| h offs _ | 窗口左上角相对坐标原点的水平偏移值,这里的坐标原点指sensor感光区域左上角 |
| v offs _ | 窗口左上角相对坐标原点的垂直偏移值,这里的坐标原点指sensor感光区域左上角 |
| h size _ | 窗口水平方向尺寸 |
| v size _ | 窗口竖直方向尺寸 |
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,表示实际画面亮度在目标值的容忍度范围内。2帧模式下,仅0、1 有效,分别表示短、长帧;3帧模式下,0-2皆有效,分别表示短、中、 长帧。 |
| MeanLuma | 线性模式下,当前画面的平均亮度。 |
| HdrMeanLuma | HDR模式下,各帧当前画面的平均亮度。2帧模式下,数组仅0、1成员 有效,分别表示短、长帧;3帧模式下,数组0-2成员皆有效,分别表示 短、中、长帧。 |
| CurExpInfo | 当前曝光参数,包括sensor曝光时间、sensor曝光增益值。按照曝光模 式,分为LinearExp和HdrExp[3] 2套曝光参数。 |
| Piris | 光圈 |
| LinePeriodsPerField | sensor的VTS |
| PixelPeriodsPerLine | sensor的HTS |
| PixelClockFreqMHZ | sensor的像素时钟频率(单位:兆赫兹) |
常见问题定位及debug方法
若出现画面亮度闪烁、过冲、亮度不符合预期等问题时,建议通过抓取有问题场景的AE LOG进行分析,有助于快速定位问题、提高工作效率。
曝光统计同步测试功能
标定ISP模块前,需要驱动人员或tuning人员填写调试IQ XML中的SensorInfo参数。这个模块的涉及到曝光参数的设置,如设置错误可能发生曝光出错、闪烁等现象。建议配置完sensorinfo参数之后,开启SyncTest功能进行自测。sensorinfo参数含义说明参考《Rockchip_Tuning_Guide_ISP21》。
SyncTest功能通过循环设置N组不同曝光值,可测试sensor的曝光时间和曝光增益、及DCG切换生效帧数是否正确,还可用于测试曝光的线性度,从而确认曝光时间和曝光增益的寄存器值转换公式及相关参数是否正确。
SyncTest功能参数介绍如下:
【描述】
曝光与统计的同步测试功能,支持按照给定间隔帧数,循环设置N组不同的曝光值,用于debug及验证曝光分量(曝光时间、曝光增益)的生效帧数及sensor曝光参数设置是否正确。
| 成员名称 | 描述 |
|---|---|
| Enable | 曝光与统计同步测试功能的使能 |
| IntervalFrm | 曝光切换间隔帧数 |
| AlterExp | 曝光切换参数 |
AlterExp
根据模式的不同,分为LinearAE和HdrAE两套参数。
| 成员名称 | 描述 |
|---|---|
| TimeValue | 曝光时间值 |
| GainValue | 曝光增益值 |
| IspDgainValue | Isp数字增益值 |
| DcgMode | Dcg模式值 |
| PIrisGainValue | P-iris等效增益值 |
如参数设置正确,LOG示例如下(仅截取LOG中的关键信息)。红框所示为曝光切换位置,可见亮度并无发生突变且与曝光值相匹配,无延迟或提前线性,此时可基本判断sensorinfo参数设置正确。
曝光变化时出现闪烁
可能导致曝光变化时出现闪烁的几种原因:
(1)CISExpUpdate模块中的gain、time生效时刻帧数错误。常见LOG示例如下(仅截取每帧关键LOG行):
红框所标为亮度出错位置,可见随着曝光增长或降低,对应亮度与曝光变化趋势相反。通过观察,可发现亮度突变都发生在曝光时间和曝光增益同时变化后的第二帧。亮度的变化趋势与曝光时间变化趋势一致,因此可以判断gain、time的生效帧数出错,曝光时间和曝光增益的变化并未同时生效,导致亮度和曝光不匹配。可以通过修改gain、time生效帧数解决此问题。上述问题可以使用AE的syncTest功能进行复现,设置两组曝光(曝光增益和曝光时间不同),令其来回切换,查看LOG可知是否复现。
(2)驱动错误导致的亮度来回震荡无法收敛,常发生在高亮场景,常见LOG示例如下(仅截取每帧关键LOG行)如图,可观察到曝光在59ms和44ms之间来回震荡,具体查看59ms和44ms对应的亮度均值会发现,二者的亮度之比与曝光之比差距较大,线性度有问题。第一步需要进行sensor的驱动检测,在驱动打印曝光寄存器值,查看寄存器值是否与log中的曝光一致。上述问题可以使用AE的syncTest功能进行复现,设置多组曝光(包含出现问题的曝光),令其来回切换,查看LOG中每帧曝光对应的亮度变化是否满足线性。
(3)AE后续模块导致的闪烁,常见LOG示例如下(仅截取每帧关键LOG行):
从LOG中可知左侧SMeanLuma和MMeanLuma递减的过程中,TmoMeanluma模块输出的亮度发生了突变,发生这种情况时需至TMO模块进行debug。
AWB
概述
AWB模块的功能是通过改变拍摄设备的色彩通道的增益,对色温环境所造成的颜色偏差和拍摄设备本身所固有的色彩通道增益的偏差进行统一补偿,从而让获得的图像能正确反映物体的真实色彩。
重要概念
色温:色温是按绝对黑体来定义的, 光源的辐射在可见区和绝对黑体的辐射完全相同时,此时黑体的温度就称此光源的色温。白平衡:在不同色温的光源下,白色在传感器中的响应会偏蓝或偏红。白平衡算法通过调整 R, G, B 三个颜色通道的强度,使白色真实呈现。
功能描述
AWB 模块有WB 信息统计及 AWB 策略控制算法两部分组成。
功能级API参考
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
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
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
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
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
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
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
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
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
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
rk_aiq_uapi2_setAwbGainOffsetAttrib
【描述】设置自动白平衡gain的偏移。
XCamReturn rk_aiq_uapi2_setAwbGainOffsetAttrib(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
rk_aiq_uapi2_getAwbGainOffsetAttrib
【描述】获取自动白平衡gain的偏移
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
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
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
rk_aiq_uapi2_setAwbV21AllAttrib
【描述】设置白平衡API支持的全部参数。
XCamReturn rk_aiq_uapi2_setAwbV21AllAttrib(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_uapiV2_wbV21_attrib_t attr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | wbgain偏移参数 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_getAwbV21AllAttrib
【描述】获取白平衡API支持的全部参数。
XCamReturn rk_aiq_uapi2_getAwbV21AllAttrib(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_uapiV2_wbV21_attrib_t *attr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | wbgain偏移参数 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
功能级API数据类型
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 _ _ _ _ | 白平衡自动模式 |
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 _ _ _ _ | 场景 |
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通道增益 |
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 _ _ _ | 阴影 |
rk_aiq_wb_cct_t
定义白平衡增益参数
typedef struct rk_aiq_wb_cct_s {
float CCT;
float CCRI;
} rk_aiq_wb_cct_t;
| 成员名称 | 描述 |
|---|---|
| CCT | 相关色温 |
| CCRI | 相关显色指数 |
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 | 模式选择 |
| para | 模式对应的参数配置 |
CalibDbV2_Awb_gain_offset_cfg_t
定义自动白平衡gain偏移
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通道的偏移 取值范围由wbgain与offset相加值确定,wbgain与offset相加后范围在[0,8] (ISP21) |
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 {
bool enable;
rk_aiq_uapiV2_wb_awb_wbGainAdjustLut_t *lutAll;
int lutAll_len;
} rk_aiq_uapiV2_wb_awb_wbGainAdjust_t;
| 成员名称 | 描述 |
|---|---|
| enable | 色调调整使能 取值0或1,分别代表不使能、使能 |
| lutAll | 不同的环境亮度可以配置不同的输出色温表 |
| lutAll len _ | 指定色温表的个数 |
| lutAll.lumaValue | 环境亮度 取值范围0-255000 |
| 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色调调整章节
rk_aiq_uapiV2_wbV21_awb_attrib_t
定义自动白平衡api参数
typedef struct rk_aiq_uapiV2_wbV21_awb_attrib_s {
rk_aiq_uapiV2_wb_awb_wbGainAdjust_t wbGainAdjust;
CalibDbV2_Awb_gain_offset_cfg_t wbGainOffset;
} rk_aiq_uapiV2_wbV21_awb_attrib_t;
| 成员名称 | 描述 |
|---|---|
| stAuto.wbGainAdjust | 参考前述CalibDbV2 Awb gain offset cfg t _ _ _ _ _ |
| stAuto.wbGainOffset | 参考前述rk aiq uapiV2 wb awb wbGainAdjust t _ _ _ _ _ _ |
rk_aiq_uapiV2_wbV21_attrib_t
定义白平衡API支持的全部参数。
typedef struct rk_aiq_uapiV2_wbV21_attrib_s {
bool byPass;
rk_aiq_wb_op_mode_t mode;
rk_aiq_wb_mwb_attrib_t stManual;
rk_aiq_uapiV2_wbV21_awb_attrib_t stAuto;
} rk_aiq_uapiV2_wbV21_attrib_t;
| 成员名称 | 描述 |
|---|---|
| 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 _ _ _ _ _ _ |
模块级API参考
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
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
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
rk_aiq_user_api2_awb_GetMwbAttrib
【描述】获取手动白平衡参数。
XCamReturn
rk_aiq_user_api2_awb_GetMwbAttrib(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
模块级API数据类型
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 | 增益 |
| cctGloabl | 全局色温参数 |
| awbConverged | 白平衡是否收敛 |
| LVValue | 相关环境亮度 |
AF
概述
AF模块的功能是指调整相机镜头,使被拍物成像清晰的过程。
重要概念
VCM:音圈马达或音圈电机
功能描述
AF 模块由AF 信息统计及AF控制算法两部分组成。下图为AF信息统计模块框图
其中,ch0/ch1/ch2对应hdr模式下S/M/L帧,debayer为hdr模式下的合成帧。FV Calc 使用固定算子计算图像水平方向和垂直方向的边缘信息。
windowA的输出主要包含15*15的FV信息,亮度信息未提供,需要将AE窗口设置成与AF一致,然后直接借用AE 15x15的亮度统计信息。
windowsB的输出主要包含一个FV信息和亮度信息。
开发用户AF算法
功能级API参考
rk_aiq_uapi2_setFocusMeasCfg
【描述】配置AF 信息统计,一般自行实现af算法时调用。
XCamReturn rk_aiq_uapi2_setFocusMeasCfg(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_af_algo_meas_t* meascfg);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| meascfg | AF信息统计配置 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
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
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
rk_aiq_uapi2_setFixedModeCode
【描述】 设置手动对焦模式下的对焦位置。
XCamReturn rk_aiq_uapi2_setFixedModeCode(const rk_aiq_sys_ctx_t* ctx, unsigned
short code);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| code | 对焦code值,取值范围0-64 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_getFixedModeCode
【描述】 获取当前对焦位置。
XCamReturn rk_aiq_uapi2_getFixedModeCode(const rk_aiq_sys_ctx_t* ctx, unsigned
short *code);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| code | 对焦code值 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_setFocusWin
【描述】 设置自动对焦窗口。
XCamReturn rk_aiq_uapi2_setFocusWin(const rk_aiq_sys_ctx_t* ctx, paRect_t
*rect);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| rect | 对焦窗口 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
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
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
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
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
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
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
rk_aiq_uapi2_setVcmCfg
【描述】 对vcm驱动进行配置。
XCamReturn rk_aiq_uapi2_setVcmCfg(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_lens_vcmcfg* cfg);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| cfg | vcm配置 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_getVcmCfg
【描述】 获取当前vcm驱动配置。
XCamReturn rk_aiq_uapi2_getVcmCfg(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_lens_vcmcfg* cfg);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| cfg | vcm配置 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_setOpZoomPosition
【描述】 设置zoom设备的位置。
XCamReturn rk_aiq_uapi2_setOpZoomPosition(const rk_aiq_sys_ctx_t* ctx, int pos);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| pos | zoom position,取值范围0-2000 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_getOpZoomPosition
【描述】 设置zoom设备的位置。
XCamReturn rk_aiq_uapi2_getOpZoomPosition(const rk_aiq_sys_ctx_t* ctx, int
*pos);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| pos | zoom position,取值范围0-2000 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
功能级API数据类型
rk_aiq_af_algo_meas_t
定义AF信息统计工作模式
typedef struct {
unsigned char contrast_af_en;
unsigned char rawaf_sel;
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 char gamma_flt_en;
unsigned short gamma_y[RKAIQ_RAWAF_GAMMA_NUM];
unsigned char gaus_flt_en;
unsigned char gaus_h0;
unsigned char gaus_h1;
unsigned char gaus_h2;
unsigned char line_en[RKAIQ_RAWAF_LINE_NUM];
unsigned char line_num[RKAIQ_RAWAF_LINE_NUM];
unsigned short afm_thres;
unsigned char lum_var_shift[RKAIQ_RAWAF_WIN_NUM];
unsigned char afm_var_shift[RKAIQ_RAWAF_WIN_NUM];
} rk_aiq_af_algo_meas_t;
| 成员名称 | 描述 |
|---|---|
| contrast af en _ _ | 是否使能AF 信息统计,0为关闭,1为打开 |
| rawaf sel _ | 选择AF信息统计的通道,取值范围0-3,对应hdr模式的长/中/短/合成帧通道 选择,一般AF选择中帧通道,非hdr模式设置为0,hdr模式设置为1 |
| window num _ | 生效的窗口数,window num为1时,wina(主窗口)生效;window num为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 _ _ |
| winb v size _ _ | winb(独立窗口)的窗口高度,该值必须小于图像高度-2-wina v offs _ _ |
| gamma flt en _ _ | gamma模块使能开关,0为关闭,1为打开 |
| gamma y _ | gamma table的y值,取值范围0-1023;x坐标分段为0 to 1023: 16 16 16 16 32 32 32 32 64 64 64 128 128 128 128 128 |
| gaus flt en _ _ | 高斯滤波模块使能开关,0为关闭,1为打开 |
| gaus h0 _ | 高斯滤波3x3系数h0,3x3系数最中间的系数值,取值范围为0-255 |
| gaus h1 _ | 高斯滤波3x3系数h1,3x3系数最中间系数的上下左右四个系数值,取值范围 为0-127 |
| gaus h2 _ | 高斯滤波3x3系数h2,3x3系数中其它的系数值,取值范围为0-127 |
| line en _ | 目前暂未生效 |
| line num _ | 目前暂未生效 |
| afm thres _ | AF统计阈值,计算出的sharpness值小于该值时,sharpness值改为0,可减 少噪声的影响,取值范围为0-0xFFFF |
| lum var shift _ _ | luminance值的shit bit值,会按照该值将luminance值向右移位,避免得到的 sharpness值溢出,取值范围为0-7 |
| afm var shift _ _ | sharpness值的shit bit值,会按照该值将sharpness值向右移位,避免得到的 sharpness值溢出,取值范围为0-7 |
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 _ _ | 半自动对焦模式,set zoom position api调用后执行一次自动对焦 |
rk_aiq_lens_vcmcfg
【说明】 定义vcm驱动的配置
typedef struct {
int start_ma;
int rated_ma;
int step_mode;
} rk_aiq_lens_vcmcfg;
| 成员名称 | 描述 |
|---|---|
| start ma _ | vcm启动电流,单位为mA |
| rated ma _ | vcm截止电流,单位为mA |
| step mode _ | Linear slope control模式下使用的step control和step period值 |
模块级API参考
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_awb.h、rk_aiq_uapi2_awb_int.h
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、rk_aiq_uapi2_af_int.h
模块级API数据类型
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 _ _ _ _ _ | 半自动对焦模式,set zoom position调用后, 自动触发一次对焦 |
rk_aiq_af_attrib_t
对焦配置信息
typedef struct rk_aiq_af_attrib_s {
RKAIQ_AF_MODE AfMode;
bool contrast_af;
bool laser_af;
bool pdaf;
bool GammaEnable;
bool GausEnable;
int h_offs;
int v_offs;
unsigned int h_size;
unsigned int v_size;
unsigned short fixedModeDefCode;
unsigned short macroModeDefCode;
unsigned short infinityModeDefCode;
rk_aiq_af_algo_meas_t manual_meascfg;
} rk_aiq_af_attrib_t;
| 成员名称 | 描述 |
|---|---|
| AfMode | 对焦模式 |
| contrast af _ | 使能反差对焦 |
| laser af _ | 使能激光对焦 |
| pdaf | 使能相位对焦 |
| h offs _ | 对焦窗口起始水平坐标 |
| v offs _ | 对焦窗口起始垂直坐标 |
| h size _ | 对焦窗口宽度 |
| v size _ | 对焦窗口高度 |
| fixedModeDefCode | 固定对焦模式下对焦code值 |
| macroModeDefCode | 微距对焦模式下终止code值,对焦范围为0-该值 |
| infinityModeDefCode | 远距距对焦模式下起始code值,对焦范围为该值-64 |
| manual meascfg _ | 自定义对焦统计信息配置 |
其它说明
VCM驱动验证
- vcm驱动的起动电流、终止电流是否设置正确,
首先要从模组厂获取起动电流、终止电流的相关信息。
其次选取几个模组,确认这些信息是否正确,方法如下:
dts中将起始电流,终止电流设置为VCM可支持的最大范围。
对焦模式切换为手动模式,从64开始逐步调整vcm position,当lens开始移动,远焦物体(10米以上)清晰时,记录当前的position值,
起始电流为(vcm_max_mA - vcm_min_mA) * (64 - curPos) / 64 。
继续调整vcm位置,当近焦物体(10cm或20cm)清晰时,记录当前的position值,
终止电流为(vcm_max_mA - vcm_min_mA) * (64 - curPos) / 64。2) 不同方向移动vcm,最终停留位置是否稳定。
对焦模式切换为手动模式,选取一个position,从0移动到该位置和从64移动到该位置,比较两次的图像清晰程度是否一致,AF 统计值是否接近。
Normal模式提高对焦速度
sensor不通过vicap直接连到isp,且使用非HDR模式时,在应用启动前可设置export normal_no_read_back=1,启用直通模式,
这样sensor数据不用存到ddr再回读到isp,减小有效的AF统计值获取时间,提高对焦速度。
IMGPROC
概述
imgproc 是指影响图像效果的模块。
FEC
功能描述
光学系统、电子扫描系统失真而引起的斜视畸变、枕形、桶形畸变等,都可能使图像产生几何特性失真。图像的畸变矫正是以某种变换方式将畸变图像转换为理想图像的过程。
该模块对x和y方向的图像畸变进行校正。
重要概念
畸变实际上指的是拍摄出来的物体相对于物体本身而言的失真。
功能级API参考
rk_aiq_uapi2_setFecEn
【描述】 鱼眼畸变校正功能开关。
XCamReturn rk_aiq_uapi2_setFecEn(const rk_aiq_sys_ctx_t* ctx, bool en);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| en | 校正开关 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
【注意】
该接口只能在rk_aiq_uapi2_sysctl_prepare之前调用有效,即不能在AIQ运行的状态下开关。若需要动态开关畸变校正效果,可以使用rk_aiq_uapi2_setFecBypass接口。开启鱼眼畸变校正后,会增加DDR带宽和CPU负载,对摄像头的采集帧率可能会有影响。
头文件:rk_aiq_user_api2_afec.h、rk_aiq_uapi2_afec_int.h
rk_aiq_uapi2_setFecCorrectDirection
【描述】 设置鱼眼畸变校正方向。
XCamReturn
rk_aiq_uapi2_setFecCorrectDirection(const rk_aiq_sys_ctx_t* ctx, const
fec_correct_direction_t direction)
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| direction | 校正方向 | 输入 |
typedef enum fec_correct_direction_e {
FEC_CORRECT_DIRECTION_X = 0x1,
FEC_CORRECT_DIRECTION_Y,
FEC_CORRECT_DIRECTION_XY
} fec_correct_direction_t;
| 成员名称 | 描述 |
|---|---|
| FEC CORRECT DIRECTION X _ _ _ | 只校正X方向 |
| FEC CORRECT DIRECTION Y _ _ _ | 只校正Y方向 |
| FEC CORRECT DIRECTION XY _ _ _ | XY方向都校正 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
【注意】
该接口只能在rk_aiq_uapi2_sysctl_prepare之前调用有效,即不能在AIQ运行的状态下开关。
头文件:rk_aiq_user_api2_afec.h、rk_aiq_uapi2_afec_int.h
rk_aiq_uapi2_setFecBypass
【描述】 鱼眼畸变校正bypss开关,使能后,fec不进行校正。
XCamReturn rk_aiq_uapi2_setFecBypass(const rk_aiq_sys_ctx_t* ctx, bool bypass);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| bypass | 校正效果开关 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_afec.h、rk_aiq_uapi2_afec_int.h
rk_aiq_uapi2_setFecCorrectLevel
【描述】 设置鱼眼畸变校正等级。
XCamReturn rk_aiq_uapi2_setFecCorrectLevel(const rk_aiq_sys_ctx_t* ctx, int
correctLevel);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| correctLevel | 校正等级 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_afec.h、rk_aiq_uapi2_afec_int.h
模块级API参考
rk_aiq_user_api2_afec_SetAttrib
【描述】设置fec属性。
XCamReturn
rk_aiq_user_api2_afec_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_fec_attrib_t attr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | fec的参数属性 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_afec.h、rk_aiq_uapi2_afec_int.h
rk_aiq_user_api2_afec_GetAttrib
【描述】获取fec属性。
XCamReturn
rk_aiq_user_api2_afec_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_fec_attrib_t attr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | fec的参数属性 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_afec.h、rk_aiq_uapi2_afec_int.h
模块级API数据类型
fec_correct_direction_t
fec校正方向
typedef enum fec_correct_direction_e {
FEC_CORRECT_DIRECTION_X = 0x1,
FEC_CORRECT_DIRECTION_Y,
FEC_CORRECT_DIRECTION_XY
} fec_correct_direction_t;
| 成员名称 | 描述 |
|---|---|
| FEC CORRECT DIRECTION X _ _ _ | 只校正X方向 |
| FEC CORRECT DIRECTION Y _ _ _ | 只校正Y方向 |
| FEC CORRECT DIRECTION XY _ _ _ | XY方向都校正 |
rk_aiq_fec_attrib_t
fec属性配置
typedef struct rk_aiq_fec_cfg_s {
unsigned int en;
int bypass;
int correct_level;
fec_correct_direction_t direction;
} rk_aiq_fec_cfg_t;
| 成员名称 | 描述 |
|---|---|
| en | 使能/关闭fec |
| bypass | bypass fec |
| correct level _ | 设置fec校正级别(0-255) |
| direction | 设置fec校正方向 |
性能优化
fec模块的处理速度受ddr带宽影响,不优化的情况下,fec在5Mega和8Mega摄像头支持的帧率为
| sensor | Maximum fps |
|---|---|
| imx415 3840*2160 Raw10bit NORMAL | 17fps |
| imx415 3840*2160 Raw10bit HDR2 | 15fps |
| imx335 2592*1944 Raw10bit NORMAL | 22fps |
| imx335 2592*1944 Raw10bit HDR2 | 20fps |
优化fec处理速度方案如下1. ispp video buffer使用cma内存,修改如下内核dts修改ispp使用cma buffer,size根据实际sensor分辨率分配
diff --git a/arch/arm/boot/dts/rv1126-ipc.dtsi
b/arch/arm/boot/dts/rv1126-ipc.dtsi
index d9c69e9..3580f0b 100644
--- a/arch/arm/boot/dts/rv1126-ipc.dtsi
+++ b/arch/arm/boot/dts/rv1126-ipc.dtsi
@@ -169,7 +169,7 @@
};
&rkispp_mmu {
- status = "okay";
+ status = "disabled";
};
&rkvdec {
diff --git a/arch/arm/boot/dts/rv1126.dtsi
b/arch/arm/boot/dts/rv1126.dtsi
index 59b97244..77a8f81 100644
--- a/arch/arm/boot/dts/rv1126.dtsi
+++ b/arch/arm/boot/dts/rv1126.dtsi
@@ -320,7 +320,7 @@
isp_reserved: isp {
compatible = "shared-dma-pool";
reusable;
- size = <0x10000000>;
+ size = <0x20000000>;
};
ramoops: ramoops@8000000 {
@@ -1962,7 +1962,8 @@
assigned-clock-rates = <500000000>, <250000000>,
<400000000>;
power-domains = <&power RV1126_PD_ISPP>;
- iommus = <&rkispp_mmu>;
+ /* iommus = <&rkispp_mmu>; */
+ memory-region = <&isp_reserved>;
status = "disabled";
};
app确认Streaming I/O 方式为Memory Mapping 方式
memset(&reqbuf, 0, sizeof(reqbuf));
reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
reqbuf.memory = V4L2_MEMORY_MMAP;
reqbuf.count = 20;
if (-1 == ioctl (fd, VIDIOC_REQBUFS, &reqbuf)) {
if (errno == EINVAL)
printf("Video capturing or mmap-streaming is not
supported\\n");
else
perror("VIDIOC_REQBUFS");
exit(EXIT_FAILURE);
- fec只校正y方向的畸变用户可以通过调用uapi配置,fec只校正y方向。该方案的畸变校正方式为: ldch校x方向 + fec校正y方向
// 此函数需要在rkaiq 执行prepare之前调用,才会生效
rk_aiq_uapi2_setFecCorrectDirection(ctx, FEC_CORRECT_DIRECTION_Y);
- 确认isp/ispp频率isp clk :600M, isp aclk:500M, qos: 0x101 ispp clk:500M, isp aclk:500M , qos m0:0x202, m1: 0x302
# cat /sys/kernel/debug/clk/clk_summary |grep isp
clk_isp_div 0 0 0 142857143 0 0
50000
clk_isp_np5 0 1 0 500000000 0 0
50000
clk_isp 0 2 0 500000000 0 0
50000
clk_ispp_np5 0 0 0 111111112 0 0
50000
clk_ispp_div 0 1 0 500000000 0 0
50000
clk_ispp 0 2 0 500000000 0 0
50000
aclk_isp 0 2 0 594000000 0 0
50000
hclk_isp 0 2 0 297000000 0 0
50000
aclk_pdispp_np5 0 0 0 475200000 0 0
50000
aclk_pdispp_div 0 1 0 594000000 0 0
50000
aclk_pdispp 0 2 0 594000000 0 0
50000
aclk_pdispp_niu 0 0 0 594000000 0
0 50000
aclk_ispp 0 4 0 594000000 0 0
50000
hclk_pdispp 0 1 0 297000000 0 0
50000
hclk_pdispp_niu 0 0 0 297000000 0
0 50000
hclk_ispp 0 4 0 297000000 0 0
50000
LDCH
功能描述
光学系统、电子扫描系统失真而引起的斜视畸变、枕形、桶形畸变等,都可能使图像产生几何特性失真。图像的畸变矫正是以某种变换方式将畸变图像转换为理想图像的过程。
该模块只对x方向的图像畸变进行校正。
功能级API参考
rk_aiq_uapi2_setLdchEn
【描述】 水平畸变校正功能开关。
XCamReturn rk_aiq_uapi2_setLdchEn(const rk_aiq_sys_ctx_t* ctx, bool en);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| en | 校正开关 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_aldch.h、rk_aiq_uapi2_aldch_int.h
rk_aiq_uapi2_setLdchCorrectLevel
【描述】 设置水平畸变校正等级。
XCamReturn rk_aiq_uapi2_setLdchCorrectLevel(const rk_aiq_sys_ctx_t* ctx, int
correctLevel);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| correctLevel | 校正等级 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_aldch.h、rk_aiq_uapi2_aldch_int.h
模块级API参考
rk_aiq_user_api2_aldch_SetAttrib
【描述】设置fec属性。
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、rk_aiq_uapi2_aldch_int.h
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、rk_aiq_uapi2_aldch_int.h
模块级API数据类型
rk_aiq_ldch_attrib_t
ldch属性配置
typedef struct rk_aiq_ldch_cfg_s {
unsigned int en;
int correct_level;
} rk_aiq_ldch_cfg_t;
| 成员名称 | 描述 |
|---|---|
| en | 使能/关闭ldch |
| correct level _ | 设置ldch校正级别(0-255) |
Merge
功能描述
Merge是将多帧图像合成为一帧的模块。
重要概念
在且仅在HDR模式下生效。
功能级API参考
模块级API参考
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
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
模块级API数据类型
merge_OpMode_t
定义merge工作模式
typedef enum merge_OpMode_s {
MERGE_OPMODE_API_OFF = 0,
MERGE_OPMODE_AUTO = 1,
MERGE_OPMODE_MANU = 2,
MERGE_OPMODE_TOOL = 3,
} merge_OpMode_t;
| 成员名称 | 描述 |
|---|---|
| MERGE OPMODE API OFF _ _ _ | api关闭模式 |
| MERGE OPMODE AUTO _ _ | 自动模式 |
| MERGE OPMODE MANU _ _ | 手动模式 |
| MERGE OPMODE TOOL _ _ | TOOL模式,可调整全部参数 |
mgeCtrlData_t
定义自动Merge参数属性
typedef struct mgeCtrlData_s {
float stCoef;
float stCoefMax;
float stCoefMin;
int stSmthMax;
int stSmthMin;
int stOfstMax;
int stOfstMin;
} mgeCtrlData_t;
| 成员名称 | 描述 |
|---|---|
| stCoef | 当前控制参数 |
| stCoefMax | 控制参数最大值 |
| stCoefMin | 控制参数最小值 |
| stSmthMax | 曲线斜率最大值 |
| stSmthMin | 曲线斜率最小值 |
| stOfstMax | 曲线偏移值最大值 |
| stOfstMin | 曲线偏移值最小值 |
amgeAttr_t
定义自动Merge属性
typedef struct amgeAttr_s {
mgeCtrlData_t stMDCurveLM;
mgeCtrlData_t stMDCurveMS;
mgeCtrlData_t stOECurve;
} amgeAttr_t;
| 成员名称 | 描述 |
|---|---|
| stMDCurveLM | 长中帧运动曲线参数,在RK356x平台下,该值无效。 |
| stMDCurveMS | 中短帧运动曲线参数 |
| stOECurve | 过曝曲线参数 |
mmgeAttr_t
定义手动Merge工作模式
typedef struct mmgeAttr_s {
float OECurve_smooth;
float OECurve_offset;
float MDCurveLM_smooth;
float MDCurveLM_offset;
float MDCurveMS_smooth;
float MDCurveMS_offset;
float dampOE;
float dampMDLM;
float dampMDMS;
} mmgeAttr_t;
| 成员名称 | 描述 |
|---|---|
| OECurve smooth _ | 过曝曲线斜率 |
| OECurve offset _ | 过曝曲线偏移值 |
| MDCurveLM smooth _ | 长中帧运动曲线斜率,在RK356x平台下,该值无效。 |
| MDCurveLM offset _ | 长中帧运动曲线偏移值,在RK356x平台下,该值无效。 |
| MDCurveMS smooth _ | 中短帧运动曲线斜率 |
| MDCurveMS offset _ | 中短帧运动曲线偏移值 |
| dampOE | 过曝曲线平滑系数 |
| dampMDLM | 长中帧运动曲线平滑系数,在RK356x平台下,该值无效。 |
| dampMDMS | 中短帧运动曲线平滑系数 |
mmergeAttr_t
定义手动merge属性
typedef struct mmergeAttr_s {
bool bUpdateMge;
mmgeAttr_t stMgeManual;
} mmergeAttr_t;
| 成员名称 | 描述 |
|---|---|
| bUpdateMge | 更新Merge参数开关 |
| stMgeManual | 手动Merge参数 |
MergeCurrCtlData_t
定义当前控制量属性
typedef struct MergeCurrCtlData_s {
float Envlv;
float MoveCoef;
} MergeCurrCtlData_t;
| 成员名称 | 描述 |
|---|---|
| Envlv | 环境亮度 |
| MoveCoef | 运动系数 |
MergeCurrRegData_t
定义当前被控制量属性
typedef struct MergeCurrRegData_s{
float OECurve_smooth;
float OECurve_offset;
float MDCurveLM_smooth;
float MDCurveLM_offset;
float MDCurveMS_smooth;
float MDCurveMS_offset;
} MergeCurrRegData_t;
| 成员名称 | 描述 |
|---|---|
| OECurve smooth _ | 过曝曲线斜率 |
| OECurve offset _ | 过曝曲线偏移值 |
| MDCurveLM smooth _ | 长中帧运动曲线斜率 |
| MDCurveLM offset _ | 长中帧运动曲线偏移值 |
| MDCurveMS smooth _ | 中短帧运动曲线斜率 |
| MDCurveMS offset _ | 中短帧运动曲线偏移值 |
MergeOECurveV20_t
定义过曝曲线属性
typedef struct MergeOECurveV20_s{
float* EnvLv;
int EnvLv_len;
float* Smooth;
int Smooth_len;
float* Offset;
int Offset_len;
} MergeOECurveV20_t;
| 成员名称 | 描述 |
|---|---|
| EnvLv | 环境亮度,取值范围[0,1],0:全黑,1:最亮。 |
| EnvLv len _ | EnvLv数组长度 |
| Smooth | 过曝曲线的斜率,取值范围[0,1],默认值为0.4 |
| Smooth len _ | Smooth数组长度 |
| Offset | 过曝曲线的偏移值,取值范围[108,280],默认值为210 |
| Offset len _ | Offset数组长度 |
MergeMDCurveV20_t
定义运动曲线属性
typedef struct MergeMDCurveV20_s{
float* MoveCoef;
int MoveCoef_len;
float* LM_smooth;
int LM_smooth_len;
float* LM_offset;
int LM_offset_len;
float* MS_smooth;
int MS_smooth_len;
float* MS_offset;
int MS_offset_len;
} MergeMDCurveV20_t;
| 成员名称 | 描述 |
|---|---|
| MoveCoef | 画面运动程度,取值范围[0,1],其中0代表完全静止,1代表完全运动 |
| MoveCoef len _ | MoveCoef数组长度 |
| LM smooth _ | 在RK356x平台下,该值无效。 |
| LM smooth len _ _ | LM smooth数组长度 _ |
| LM offset _ | 在RK356x平台下,该值无效。 |
| LM offset len _ _ | LM offset数组长度 _ |
| MS smooth _ | 长帧和短帧之间运动曲线斜率,取值范围为[0,1],默认值为0.4。 |
| MS smooth len _ _ | MS smooth数组长度 _ |
| MS offset _ | 长帧和短帧之间运动曲线偏移值,取值范围为[0.26,1],默认值为0.38。 |
| MS offset len _ _ | MS offset数组长度 _ |
MergeV20_t
定义merge调试参数属性
typedef struct MergeV20_s{
MergeOECurveV20_t OECurve;
MergeMDCurveV20_t MDCurve;
float ByPassThr;
float OECurve_damp;
float MDCurveLM_damp;
float MDCurveMS_damp;
} MergeV20_t;
| 成员名称 | 描述 |
|---|---|
| OECurve | 过曝曲线 |
| MDCurve | 运动曲线 |
| ByPassThr | 当控制量变化百分比小于该值,不更新参数 |
| OECurve damp _ | 过曝曲线damp系数 |
| MDCurveLM damp _ | 暂未生效 |
| MDCurveMS damp _ | 长短帧间运动曲线damp系数 |
CalibDbV2_merge_t
merge属性配置
typedef struct CalibDbV2_merge_s {
MergeV20_t MergeTuningPara;
} CalibDbV2_merge_t;
| 成员名称 | 描述 |
|---|---|
| MergeTuningPara | merge调试参数 |
mergeAttr_t
merge属性配置
typedef struct mergeAttr_s {
merge_OpMode_t opMode;
amergeAttr_t stAuto;
mmergeAttr_t stManual;
MergeCurrCtlData_t CtlInfo;
MergeCurrRegData_t RegInfo;
CalibDbV2_merge_t stTool;
} mergeAttr_t;
| 成员名称 | 描述 |
|---|---|
| opMode | 模式选择 |
| stAuto | 自动模式参数 |
| stManual | 手动模式参数 |
| CtlInfo | 控制量参数 |
| RegInfo | 被控制量参数 |
| stTool | TOOL模式参数 |
DRC
功能描述
DRC(动态范围压缩, High Dynamic Range Compression),其作用是将高比特位的图像压缩到低比特位图像。
重要概念
在线性或者HDR模式下均可使用DRC。
功能级API参考
rk_aiq_uapi2_enableDrc
【描述】
开启DRC模块。通过本api开启DRC功能后,生效参数为Json文件中参数。
XCamReturn rk_aiq_uapi2_enableDrc(const rk_aiq_sys_ctx_t* ctx);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_disableDrc【描述】
关闭DRC模块。
XCamReturn rk_aiq_uapi2_disableDrc(const rk_aiq_sys_ctx_t* ctx);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_setDrcGain
【描述】
设置DrcGain相关参数。
在调用本api时不需要调用rk_aiq_uapi2_enableDrc。同时,本api不能与DRC其他功能级设置api同时调用。
XCamReturn rk_aiq_uapi2_setDrcGain(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
rk_aiq_uapi2_getDrcGain
【描述】
获取DrcGain相关参数。
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
rk_aiq_uapi2_setDrcHiLit
【描述】
设置DrcHiLit参数。
在调用本api时不需要调用rk_aiq_uapi2_enableDrc。同时,本api不能与DRC其他功能级设置api同时调用。
XCamReturn rk_aiq_uapi2_setDrcHiLit(const rk_aiq_sys_ctx_t* ctx, float
Strength);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| Strength | 强度 取值范围:[0,1] | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_getDrcHiLit
【描述】
获取DrcHiLit参数。
XCamReturn rk_aiq_uapi2_getDrcHiLit(const rk_aiq_sys_ctx_t* ctx, float
Strength);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| Strength | 强度 取值范围:[0,1] | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_setDrcLocalTMO
【描述】
设置DrcLocalTMO相关参数。
在调用本api时不需要调用rk_aiq_uapi2_enableDrc。同时,本api不能与DRC其他功能级设置api同时调用。
XCamReturn rk_aiq_uapi2_setDrcLocalTMO(const rk_aiq_sys_ctx_t* ctx, float
LocalWeit, float GlobalContrast, float LoLitContrast);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| LocalWeit | LocalWeit值 取值范围:[0,1] | 输入 |
| GlobalContrast | GlobalContrast值 取值范围:[0,1] | 输入 |
| LoLitContrast | LoLitContrast值 取值范围:[0,1] | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_getDrcLocalTMO
【描述】
获取DrcLocalTMO相关参数。
XCamReturn rk_aiq_uapi2_getDrcLocalTMO(const rk_aiq_sys_ctx_t* ctx, float
LocalWeit, float GlobalContrast, float LoLitContrast);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| LocalWeit | LocalWeit值 取值范围:[0,1] | 输出 |
| GlobalContrast | GlobalContrast值 取值范围:[0,1] | 输出 |
| LoLitContrast | LoLitContrast值 取值范围:[0,1] | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_setDrcCompress
【描述】
设置DrcCompress相关参数。
在调用本api时不需要调用rk_aiq_uapi2_enableDrc。同时,本api不能与DRC其他功能级设置api同时调用。
XCamReturn rk_aiq_uapi2_setDrcCompress(const rk_aiq_sys_ctx_t* ctx,
mDrcCompress_t* pIn);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| pIn | DrcCompress参数 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_getDrcCompress
【描述】
设置DrcCompress相关参数。
XCamReturn rk_aiq_uapi2_getDrcCompress(const rk_aiq_sys_ctx_t* ctx,
mDrcCompress_t* pIn);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| pIn | DrcCompress参数 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
功能级API数据类型
CompressMode_t
定义手动模式下,DrcCompress曲线工作模式
typedef enum CompressMode_s {
COMPRESS_AUTO = 0,
COMPRESS_MANUAL = 1,
} CompressMode_t;
| 成员名称 | 描述 |
|---|---|
| COMPRESS AUTO _ | 自动模式 |
| COMPRESS MANUAL _ | 手动模式 |
mDrcCompress_t
定义DrcCompress相关参数
typedef struct mDrcCompress_s {
CompressMode_t Mode;
uint16_t Manual_curve[17];
} mDrcCompress_t;
| 成员名称 | 描述 |
|---|---|
| Mode | 模式 |
| Manual curve _ | 手动模式下曲线 |
模块级API参考
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
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
模块级API数据类型
drc_OpMode_t
定义DRC工作模式
typedef enum drc_OpMode_s {
DRC_OPMODE_API_OFF = 0,
DRC_OPMODE_MANU = 1,
DRC_OPMODE_AUTO = 2,
DRC_OPMODE_DRC_GAIN = 3,
DRC_OPMODE_HILIT = 4,
DRC_OPMODE_LOCAL_TMO = 5,
DRC_OPMODE_COMPRESS = 6,
} drc_OpMode_t;
| 成员名称 | 描述 |
|---|---|
| DRC OPMODE API OFF _ _ _ | api关闭模式 |
| DRC OPMODE MANU _ _ | 手动模式 |
| DRC OPMODE AUTO _ _ | 自动模式 |
| DRC OPMODE DRC GAIN _ _ _ | DrcGain模式,调整DrcGain部分参数 |
| DRC OPMODE HILIT _ _ | HiLit模式,调整HiLit部分参数 |
| DRC OPMODE LOCAL TMO _ _ _ | LocalTMO模式,调整LocalTMO部分参数 |
| DRC OPMODE COMPRESS _ _ | Compress模式,调整Compress部分参数 |
mDrcGain_t
定义手动DrcGain参数属性
typedef struct mDrcGain_s {
float DrcGain;
float Alpha;
float Clip;
} mDrcGain_t;
| 成员名称 | 描述 |
|---|---|
| DrcGain | 手动DrcGain值 |
| Alpha | 手动Alpha值 |
| Clip | 手动Clip值 |
mDrcHiLit_t
定义手动DrcHiLit参数属性
typedef struct mDrcHiLit_s {
float Strength;
} mDrcHiLit_t;
| 成员名称 | 描述 |
|---|---|
| Strength | 手动Strength值 |
mDrcLocal_t定义手动DrcHiLit参数属性
typedef struct mDrcLocal_s {
float LocalWeit;
float GlobalContrast;
float LoLitContrast;
} mDrcLocal_t;
| 成员名称 | 描述 |
|---|---|
| LocalWeit | 手动LocalWeit值 |
| GlobalContrast | 手动GlobalContrast值 |
| LoLitContrast | 手动LoLitContrast值 |
CompressMode_t
定义手动模式下,DrcCompress曲线工作模式
typedef enum CompressMode_s {
COMPRESS_AUTO = 0,
COMPRESS_MANUAL = 1,
} CompressMode_t;
| 成员名称 | 描述 |
|---|---|
| COMPRESS AUTO _ | 手动模式下,Compress曲线自动模式 |
| COMPRESS MANUAL _ | 手动模式下,Compress曲线手动模式 |
mDrcCompress_t
定义手动DrcCompress参数属性
typedef struct mDrcCompress_s {
CompressMode_t Mode;
uint16_t Manual_curve[17];
} mDrcCompress_t;
| 成员名称 | 描述 |
|---|---|
| Mode | 开关功能 |
| Manual curve _ | 手动模式下,手动Compress曲线 |
mdrcAttr_t
定义手动模式下drc属性
typedef struct mdrcAttr_s {
mDrcGain_t DrcGain;
mDrcHiLit_t HiLit;
mDrcLocal_t Local;
mDrcCompress_t Compress;
} mdrcAttr_t;
| 成员名称 | 描述 |
|---|---|
| DrcGain | 手动模式下,DrcGain参数 |
| HiLit | 手动模式下,HiLit参数 |
| Local | 手动模式下,Local参数 |
| Compress | 手动模式下,Compress参数 |
DrcInfo_t
定义DRC参考信息属性
typedef struct DrcInfo_s {
float EnvLv;
} DrcInfo_t;
| 成员名称 | 描述 |
|---|---|
| EnvLv | 当前环境亮度 |
drcAttr_t
定义DRC属性
typedef struct drcAttr_s {
bool Enable;
drc_OpMode_t opMode;
mdrcAttr_t stManual;
DrcInfo_t Info;
} drcAttr_t;
| 成员名称 | 描述 |
|---|---|
| Enable | 开关功能 |
| opMode | api模式 |
| stManual | 手动模式参数 |
| Info | DRC参考信息 |
Noise Removal
功能描述
图像噪声是指存在于图像数据中的不必要的或多余的干扰信息。图像去噪是减少数字图像中噪声的过程。
功能级API参考
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 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
rk_aiq_uapi2_setANRStrth
【描述】 设置普通去噪强度。
XCamReturn rk_aiq_uapi2_setANRStrth(const rk_aiq_sys_ctx_t* ctx, unsigned int
level);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| level | 去噪强度 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_getANRStrth
【描述】 获取普通去噪强度。
XCamReturn rk_aiq_uapi2_getANRStrth(const rk_aiq_sys_ctx_t* ctx, unsigned int*
level);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| level | 去噪强度 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
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 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
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 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
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 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
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 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
模块级API参考
rk_aiq_user_api2_abayernrV2_SetAttrib
【描述】设置bayernr算法属性。
XCamReturn
rk_aiq_user_api2_abayernrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayernr_attrib_v2_t* attr)
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | 去噪的参数属性 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
【注意】
此attr属性参数为软件算法最终使用参数结构体,而非json对应参数结构体。json有些参数还需要转换成算法值。但是两者参数基本相同,差异较小。
头文件:rk_aiq_user_api2_abayernr_v2.h、RkAiqHandleIntV21.h
rk_aiq_user_api2_abayernrV2_GetAttrib
【描述】获取bayernr去噪算法属性。
XCamReturn
rk_aiq_user_api2_abayernrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ynr_attrib_v2_t* attr)
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | 去噪的参数属性 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
【注意】
此attr属性参数为软件算法最终使用参数结构体,而非json对应参数结构体。json有些参数还需要转换成算法值。但是两者参数基本相同,差异较小。
头文件:rk_aiq_user_api2_abayernr_v2.h、RkAiqHandleIntV21.h
rk_aiq_user_api2_aynrV2_SetAttrib
【描述】设置ynr去噪算法属性。
XCamReturn
rk_aiq_user_api2_aynrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ynr_attrib_v2_t* attr)
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | 去噪的参数属性 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
【注意】
此attr属性参数为软件算法最终使用参数结构体,而非json对应参数结构体。json有些参数还需要转换成算法值。但是两者参数基本相同,差异较小。
头文件:rk_aiq_user_api2_aynr_v2.h、RkAiqHandleIntV21.h rk_aiq_user_api2_aynrV2_GetAttrib
【描述】获取ynr去噪算法属性。
XCamReturn
rk_aiq_user_api2_aynrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ynr_attrib_v2_t* attr)
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | 去噪的参数属性 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
【注意】
此attr属性参数为软件算法最终使用参数结构体,而非json对应参数结构体。json有些参数还需要转换成算法值。但是两者参数基本相同,差异较小。
头文件:rk_aiq_user_api2_aynr_v2.h、RkAiqHandleIntV21.h
rk_aiq_user_api2_acnrV1_SetAttrib
【描述】设置cnr去噪算法属性。
XCamReturn
rk_aiq_user_api2_acnrV1_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_cnr_attrib_v1_t* attr)
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | 去噪的参数属性 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
【注意】
此attr属性参数为软件算法最终使用参数结构体,而非json对应参数结构体。json有些参数还需要转换成算法值。但是两者参数基本相同,差异较小。
头文件:rk_aiq_user_api2_acnr_v1.h、RkAiqHandleIntV21.h
rk_aiq_user_api2_acnrV1_GetAttrib
【描述】获取ynr去噪算法属性。
XCamReturn
rk_aiq_user_api2_acnrV1_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ynr_attrib_v2_t* attr)
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | 去噪的参数属性 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
【注意】
此attr属性参数为软件算法最终使用参数结构体,而非json对应参数结构体。json有些参数还需要转换成算法值。但是两者参数基本相同,差异较小。
头文件:rk_aiq_user_api2_acnr_v1.h、RkAiqHandleIntV21.h
模块级API数据类型
rk_aiq_bayernr_attrib_v2_t
定义bayernr去噪模块的属性参数
typedef struct rk_aiq_bayernr_attrib_v2_s {
Abayernr_OPMode_t eMode;
Abayernr_Auto_Attr_V2_t stAuto;
Abayernr_Manual_Attr_V2_t stManual;
} rk_aiq_bayernr_attrib_v2_t;
| 成员名称 | 描述 |
|---|---|
| eMode | bayernr模块模式属性。 |
| stAuto | bayernr自动模式,对应不同iso不同配置参数。 |
| stManual | bayernr手动模式,全局使用一个配置参数。 |
Abayernr_Auto_Attr_V2_t
定义bayernr去噪模块的自动模式参数。
typedef struct Abayernr_Auto_Attr_V2_s
{
//all ISO params and select param
int bayernr2DEn;
int bayernr3DEn;
RK_Bayernr_2D_Params_V2_t st2DParams;
RK_Bayernr_3D_Params_V2_t st3DParams;
RK_Bayernr_2D_Params_V2_Select_t st2DSelect;
RK_Bayernr_3D_Params_V2_Select_t st3DSelect;
} Abayernr_Auto_Attr_V2_t;
| 成员名称 | 描述 |
|---|---|
| bayernr2DEn | bayernr2d, 模块使能位。 |
| bayernr3DEn | bayernr3的,模块使能位. |
| st2DParams | bayernr2d不同iso对应不同配置参数。 |
| st3DParams | bayernr3d不同iso对应不同配置参数。 |
| st2DSelect | bayernr2d当前配置参数。 |
| st3DSelect | bayernr3d当前配置参数。 |
Abayernr_Manual_Attr_V2_t
定义bayernr去噪模块的手动参数配置
typedef struct Abayernr_Manual_Attr_V2_s
{
int bayernr2DEn;
int bayernr3DEn;
RK_Bayernr_2D_Params_V2_Select_t st2DSelect;
RK_Bayernr_3D_Params_V2_Select_t st3DSelect;
} Abayernr_Manual_Attr_V2_t;
| 成员名称 | 描述 |
|---|---|
| bayernr2DEn | bayernr2d模块使能位 |
| bayernr3DEn | bayernr3d模块使能位 |
| st2DSelect | bayernr2d手动模式参数配置 |
| st3DSelect | bayernr3d手动模式参数配置 |
rk_aiq_ynr_attrib_v2_t
定义ynr模块算法属性参数。
typedef struct rk_aiq_ynr_attrib_v2_s {
Aynr_OPMode_t eMode;
Aynr_Auto_Attr_V2_t stAuto;
Aynr_Manual_Attr_V2_t stManual;
} rk_aiq_ynr_attrib_v2_t;
| 成员名称 | 描述 |
|---|---|
| eMode | ynr模块模式属性。 |
| stAuto | ynr自动模式,对应不同iso不同配置参数。 |
| stManual | ynr手动模式,全局使用一个配置参数。 |
Aynr_Auto_Attr_V2_t
ynr模块自动算法参数配置。
typedef struct Aynr_Auto_Attr_V2_s
{
//all ISO params and select param
int ynrEn;
RK_YNR_Params_V2_t stParams;
RK_YNR_Params_V2_Select_t stSelect;
} Aynr_Auto_Attr_V2_t;
| 成员名称 | 描述 |
|---|---|
| ynrEn | yrnr模块使能位 |
| stParams | ynr自动算法不同iso对应不同配置参数。 |
| stSelect | ynr自动算法当前配置参数。 |
Aynr_Manual_Attr_V2_t
定义bayernr去噪模块的手动参数配置
typedef struct Aynr_Manual_Attr_V2_s
{
int ynrEn;
RK_YNR_Params_V2_Select_t stSelect;
} Aynr_Manual_Attr_V2_t;
| 成员名称 | 描述 |
|---|---|
| ynrEn | ynr模块使能位 |
| stSelect | ynr手动模式参数配置 |
rk_aiq_cnr_attrib_v1_t
定义cnr模块算法属性参数。
typedef struct rk_aiq_cnr_attrib_v1_s {
Acnr_OPMode_t eMode;
Acnr_Auto_Attr_V1_t stAuto;
Acnr_Manual_Attr_V1_t stManual;
} rk_aiq_cnr_attrib_v1_t;
| 成员名称 | 描述 |
|---|---|
| eMode | cnr模块模式属性。 |
| stAuto | cnr自动模式,对应不同iso不同配置参数。 |
| stManual | cnr手动模式,全局使用一个配置参数。 |
Acnr_Auto_Attr_V1_t
ynr模块自动算法参数配置。
typedef struct Acnr_Auto_Attr_V1_s
{
//all ISO params and select param
int cnrEn;
RK_CNR_Params_V1_t stParams;
RK_CNR_Params_V1_Select_t stSelect;
} Acnr_Auto_Attr_V1_t;
| 成员名称 | 描述 |
|---|---|
| cnrEn | cnr模块使能位 |
| stParams | cnr自动算法不同iso对应不同配置参数。 |
| stSelect | cnr自动算法当前配置参数。 |
Acnr_Manual_Attr_V1_t
定义bayernr去噪模块的手动参数配置
typedef struct Acnr_Manual_Attr_V1_s
{
int cnrEn;
RK_CNR_Params_V1_Select_t stSelect;
} Acnr_Manual_Attr_V1_t;
| 成员名称 | 描述 |
|---|---|
| cnrEn | cnr模块使能位 |
| stSelect | cnr手动模式参数配置 |
Defog
功能描述
Defog 是通过动态的改变图象的对比度和亮度来实现的去雾增强。
功能级API参考
rk_aiq_uapi2_setDhzMode
【描述】
设置去雾工作模式。
XCamReturn rk_aiq_uapi2_setDhzMode(const rk_aiq_sys_ctx_t* ctx, opMode_t mode);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| mode | 模式 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_getDhzMode
【描述】
获取当前去雾工作模式。
XCamReturn rk_aiq_uapi2_getDhzMode(const rk_aiq_sys_ctx_t* ctx, opMode_t* mode);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| mode | 模式 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h rk_aiq_uapi2_setMDhzStrth
【描述】
设置去雾工作强度。
XCamReturn rk_aiq_uapi2_setMDhzStrth(const rk_aiq_sys_ctx_t* ctx, bool on,
unsigned int level);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| on | 开关 | 输入 |
| level | 强度 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_getMDhzStrth
【描述】
获取去雾工作强度。
XCamReturn rk_aiq_uapi2_getMDhzStrth(const rk_aiq_sys_ctx_t* ctx, bool *on,
unsigned int *level);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| on | 开关 | 输出 |
| level | 强度 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_enableDhz
【描述】
开启去雾功能。
XCamReturn rk_aiq_uapi2_enableDhz(const rk_aiq_sys_ctx_t* ctx);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_disableDhz
【描述】
关闭去雾功能。
XCamReturn rk_aiq_uapi2_disableDhz(const rk_aiq_sys_ctx_t* ctx);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
模块级API参考
rk_aiq_user_api2_adehaze_setSwAttrib
【描述】
设置去雾参数。
XCamReturn rk_aiq_user_api2_adehaze_setSwAttrib(const rk_aiq_sys_ctx_t*
sys_ctx, adehaze_sw_t attr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | 去雾参数 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
rk_aiq_user_api2_adehaze_getSwAttrib
【描述】
获取当前去雾参数。
XCamReturn rk_aiq_user_api2_adehaze_getSwAttrib(const rk_aiq_sys_ctx_t*
sys_ctx, adehaze_sw_t *attr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | 去雾参数 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
ACM
功能描述
ACM(Auto Color Managment) 提供基本的喜好色调节功能,通过对一定区间内的亮度、对比度、饱和度、色度的调节,达到对喜好色的调节。
API参考
rk_aiq_uapi2_setBrightness
【描述】
设置亮度等级。
XCamReturn rk_aiq_uapi2_setBrightness(const rk_aiq_sys_ctx_t* ctx, unsigned int
level);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| level | 亮度值等级 取值范围:[0,255] 默认值为128 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h rk_aiq_uapi2_getBrightness
【描述】
获取亮度等级。
XCamReturn rk_aiq_uapi2_getBrightness(const rk_aiq_sys_ctx_t* ctx, unsigned int*
level);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| level | 当前亮度等级 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_setContrast
【描述】
设置对比度等级。
XCamReturn rk_aiq_uapi2_setContrast(const rk_aiq_sys_ctx_t* ctx, unsigned int
level);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| level | 对比度等级 取值范围:[0,255] 默认值为128 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_getContrast
【描述】
获取对比度等级。
XCamReturn rk_aiq_uapi2_getContrast(const rk_aiq_sys_ctx_t* ctx, unsigned int
*level);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| level | 当前对比度等级 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_setSaturation
【描述】
设置饱和度等级。
XCamReturn rk_aiq_uapi2_setSaturation(const rk_aiq_sys_ctx_t* ctx, unsigned int
level);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| level | 饱和度等级 取值范围:[0,255] 默认值为128 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_getSaturation
【描述】
获取饱和度等级。
XCamReturn rk_aiq_uapi2_getSaturation(const rk_aiq_sys_ctx_t* ctx, unsigned int*
level);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| level | 当前饱和度等级 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_setHue
【描述】设置色度等级。
XCamReturn rk_aiq_uapi2_setHue(const rk_aiq_sys_ctx_t* ctx, unsigned int level);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| level | 色度等级 取值范围:[0,255] 默认值为128 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
rk_aiq_uapi2_getHue
【描述】
获取色度等级。
XCamReturn rk_aiq_uapi2_getHue(const rk_aiq_sys_ctx_t* ctx, unsigned int*
level);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| level | 当前色度等级 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
Sharpen
功能描述
Sharpen 模块用于增强图像的清晰度,包括调节图像边缘的锐化属性和增强图像的细节和纹理。
功能级API参考
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
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
模块级API参考
rk_aiq_user_api2_asharpV3_SetAttrib
【描述】设置锐化算法属性。
XXCamReturn
rk_aiq_user_api2_asharpV3_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_sharp_attrib_v3_t* attr)
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | 锐化的参数属性 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
【注意】
此attr属性参数为软件算法最终使用参数结构体,而非IQ对应参数结构体。IQ有些参数还需要转换成算法值。但是两者参数基本相同,差异较小。头文件:rk_aiq_user_api2_asharp_v3.h、RkAiqHandleIntV21.h
rk_aiq_user_api2_asharpV3_GetAttrib
【描述】获取锐化算法属性。
XCamReturn
rk_aiq_user_api2_asharpV3_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_sharp_attrib_v3_t* attr)
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | 锐化的参数属性 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
【注意】
此attr属性参数为软件算法最终使用参数结构体,而非IQ对应参数结构体。IQ有些参数还需要转换成算法值。但是两者参数基本相同,差异较小。
头文件:rk_aiq_user_api2_asharp_v3.h、RkAiqHandleInt.h
模块级API数据类型
rk_aiq_sharp_attrib_v3_t
定义锐化模块的参数
typedef struct rk_aiq_sharp_attrib_v3_s {
Asharp3_OPMode_t eMode;
Asharp_Auto_Attr_V3_t stAuto;
Asharp_Manual_Attr_V3_t stManual;
} rk_aiq_sharp_attrib_v3_t;
| 成员名称 | 描述 |
|---|---|
| eMode | 锐化模块属性 |
| stAuto | 锐化模块自动模式参数 |
| stManual | 锐化模块手动模式参数 |
Asharp_Auto_Attr_V3_t
定义锐化模块的自动属性
typedef struct Asharp_Auto_Attr_V3_s
{
//all ISO params and select param
RK_SHARP_Params_V3_t stParams;
RK_SHARP_Params_V3_Select_t stSelect;
} Asharp_Auto_Attr_V3_t;
| 成员名称 | 描述 |
|---|---|
| stParams | sharp模块各个iso对应算法属性参数 |
| stSelect | sharp模块根据当前iso计算出来属性参数 |
Asharp_Manual_Attr_t
定义锐化模块的手动属性
typedef struct Asharp_Manual_Attr_V3_s
{
RK_SHARP_Params_V3_Select_t stSelect;
} Asharp_Manual_Attr_V3_t;
| 成员名称 | 描述 |
|---|---|
| RK SHARP Params V3 Select t _ _ _ _ _ | sharp手动设置算法参数 |
Gamma
功能描述
Gamma 模块对图像进行亮度空间非线性转换以适配输出设备。
功能级API参考
rk_aiq_uapi2_setGammaCoef
【描述】
设置伽玛。
XCamReturn rk_aiq_uapi2_setGammaCoef(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_gamma_attrib_t gammaAttr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| ctx | AIQ上下文指针 | 输入 |
| gammaAttr | Gamma软件属性结构体 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_imgproc.h
Api中Gamma曲线未按照场景进行切换,若场景变化,请重新通过api设置gamma曲线。
功能级API数据类型
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_TOOL = 2,
} rk_aiq_gamma_op_mode_t;
| 成员名称 | 描述 |
|---|---|
| RK AIQ GAMMA MODE OFF _ _ _ _ | Api关闭模式 |
| RK AIQ GAMMA MODE MANUAL _ _ _ _ | Api自动模式 |
| RK AIQ GAMMA MODE TOOL _ _ _ _ | Api工具模式 |
rk_gamma_curve_type_t
定义手动模式下Gamma曲线工作模式
typedef enum rk_gamma_curve_type_s {
RK_GAMMA_CURVE_TYPE_DEFUALT = 0,
RK_GAMMA_CURVE_TYPE_SRGB = 1,
RK_GAMMA_CURVE_TYPE_HDR = 2,
RK_GAMMA_CURVE_TYPE_USER_DEFINE1 = 3,
RK_GAMMA_CURVE_TYPE_USER_DEFINE2 = 4,
} rk_gamma_curve_type_t;
| 成员名称 | 描述 |
|---|---|
| RK GAMMA CURVE TYPE DEFUALT _ _ _ _ | 使用IQ文件中Gamma曲线 |
| RK GAMMA CURVE TYPE SRGB _ _ _ _ | 使用sRGB标准Gamma 2.2曲线 |
| RK GAMMA CURVE TYPE HDR _ _ _ _ | 使用HDR模式Gamma曲线 |
| RK GAMMA CURVE TYPE USER DEFINE1 _ _ _ _ _ | 使用用户定义Gamma曲线1 |
| RK GAMMA CURVE TYPE USER DEFINE2 _ _ _ _ _ | 使用用户定义Gamma曲线2 |
rk_gamma_curve_usr_define1_para_t
定义手动模式下用户定义Gamma曲线1属性
typedef struct rk_gamma_curve_usr_define1_para_s {
float coef1;
float coef2;
} rk_gamma_curve_usr_define1_para_t;
| 成员名称 | 描述 |
|---|---|
| coef1 | 控制Gamma曲线形状 |
| coef2 | 控制Gamma曲线零点斜率 |
rk_gamma_curve_usr_define2_para_t
定义手动模式下用户定义Gamma曲线2属性
typedef struct rk_gamma_curve_usr_define2_para_s {
int gamma_out_segnum;
int gamma_out_offset;
int gamma_table[45];
} rk_gamma_curve_usr_define2_para_t;
| 成员名称 | 描述 |
|---|---|
| gamma out segnum _ _ | 定义Gamma曲线X轴间距,0:非等间距,1:等间距 |
| gamma out offset _ _ | Gamma曲线偏移值 |
| gamma table _ | Gamma曲线 |
Agamma_api_manual_t
定义手动Gamma属性
typedef struct Agamma_api_manual_s {
bool en;
rk_gamma_curve_type_t CurveType;
rk_gamma_curve_usr_define1_para_t user1;
rk_gamma_curve_usr_define2_para_t user2;
} Agamma_api_manual_t;
| 成员名称 | 描述 |
|---|---|
| en | 开关功能 |
| CurveType | 曲线种类 |
| user1 | 用户定义Gamma曲线1 |
| user2 | 用户定义Gamma曲线2 |
CalibDb_Gamma_t
定义工具模式下Gamma属性
typedef struct CalibDb_Gamma_s {
unsigned char gamma_en;
unsigned char gamma_out_segnum;
unsigned char gamma_out_offset;
float curve_normal[45];
float curve_hdr[45];
float curve_night[45];
} CalibDb_Gamma_t;
| 成员名称 | 描述 |
|---|---|
| gamma en _ | 开关功能 |
| gamma out segnum _ _ | 定义Gamma曲线X轴间距,0:非等间距,1:等间距 |
| gamma out offset _ _ | Gamma曲线偏移值 |
| curve normal _ | 线性模式下Gamma曲线 |
| curve hdr _ | HDR模式下Gamma曲线 |
| curve night _ | 夜视模式下Gamma曲线 |
rk_aiq_gamma_attr_t
定义Gamma属性
typedef struct rk_aiq_gamma_attr_s {
rk_aiq_gamma_op_mode_t mode;
Agamma_api_manual_t stManual;
CalibDb_Gamma_t stTool;
int Scene_mode;
} rk_aiq_gamma_attr_t;
| 成员名称 | 描述 |
|---|---|
| mode | Api模式 |
| stManual | 手动Gamma参数 |
| stTool | 工具Gamma参数 |
| Scene mode _ | 场景模式 |
模块级API参考
rk_aiq_user_api2_agamma_SetAttrib
【描述】设定 Gamma软件属性。
XCamReturn
rk_aiq_user_api2_agamma_SetAttrib(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
Api中Gamma曲线未按照场景进行切换,若场景变化,请重新通过api设置gamma曲线。
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
DPCC
功能描述
模块级API参考
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_t *attr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | DPCC软件属性结构体 | 输入 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_adpcc.h
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_t *attr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | DPCC软件属性结构体 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_adpcc.h
模块级API数据类型
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 _ _ _ |
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;
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基本参数属 |
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;
dpcc_pdaf_point_t
typedef struct dpcc_pdaf_point_s
{
unsigned char y;
unsigned char x;
} dpcc_pdaf_point_t;
该模块还未实现
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;
该模块还未实现
CalibDb_Dpcc_Fast_Mode_t
定义自动模式下Fast mode属性
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] |
CalibDb_Dpcc_Sensor_t
定义自动模式下Fast mode属性
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 _ | 去除多个坏点力度 |
Adpcc_bpt_params_select_t
定义自动模式下选择的Fast mode属性
typedef Adpcc_bpt_params_t Adpcc_bpt_params_select_t;
Adpcc_pdaf_params_select_t定义自动模式下选择的PDAF模式属性
typedef Adpcc_pdaf_params_t Adpcc_pdaf_params_select_t
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 | 自动模式下Sensor坏点功能参数 |
| stBasicSelect | 自动模式下选择的基本参数 |
| stBptSelect | 自动模式下选择的坏点参数 |
| stPdafSelect | 自动模式下选择的PDAF模式参数 |
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] |
Adpcc_sensor_dpcc_attr_t
定义手动模式下Sensor坏点功能属性
typedef struct Adpcc_sensor_dpcc_attr_s
{
bool en;
int max_level;
int single_level;
int double_level;
} Adpcc_sensor_dpcc_attr_t;
| 成员名称 | 描述 |
|---|---|
| en | sensor dpcc开关功能 |
| max level _ | 去除坏点最大力度 |
| single level _ | 去除单个坏点力度 |
| double level _ | 去除多个坏点力度 |
Adpcc_Manual_Attr_t定义手动DPCC属性
typedef struct Adpcc_Manual_Attr_s
{
Adpcc_basic_params_select_t stBasic;
Adpcc_bpt_params_select_t stBpt;
Adpcc_pdaf_params_select_t stPdaf;
Adpcc_fast_mode_attr_t stFastMode;
Adpcc_sensor_dpcc_attr_t stSensorDpcc;
} Adpcc_Manual_Attr_t;
| 成员名称 | 描述 |
|---|---|
| stBasicParams | 手动模式下基本参数 |
| stBptParams | 手动模式下坏点参数 |
| stPdafParams | 手动模式下PDAF模式参数 |
| stFastMode | 手动模式下快速模式参数 |
| stSensorDpcc | 手动模式下Sensor坏点功能参数 |
CalibDb_Dpcc_Pdaf_t
定义工具PDAF模式属性
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;
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 |
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 |
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 _ _ | 绿通道坏点阈值 |
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 |
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 _ _ | 绿通道坏点阈值 |
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 _ _ | 绿通道坏点阈值 |
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算法 |
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:打开 _ |
| set | 坏点判断条件 |
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 | 开关功能 |
| version | 版本 |
| fast | 快速模式 |
| expert | 专家模式 |
| pdaf | PADF模式下坏点条件 |
| sensor dpcc _ | Sensor自带坏点矫正设置 |
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模式 |
ASD
模块级API参考
rk_aiq_user_api2_asd_GetAttrib
【描述】
获取当前环境亮度的计算结果。
XCamReturn rk_aiq_user_api2_asd_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
asd_attrib_t* attr);
| 参数名称 | 描述 | 输入/输出 |
|---|---|---|
| sys ctx _ | AIQ上下文指针 | 输入 |
| attr | 计算结果 | 输出 |
| 返回值 | 描述 |
|---|---|
| 0 | 成功 |
| 非0 | 失败,详见错误码表 |
头文件:rk_aiq_user_api2_asd.h
数据类型
asd_attrib_t
当前环境亮度的计算结果
typedef struct asd_attrib_s {
float cur_m2r;
} asd_attrib_t;
| 成员名称 | 描述 |
|---|---|
| cur m2r _ | 当前平均亮度 计算方法为: exp val ratio = cur exp val / max exp va _ _ _ _ _ _ cur m2r = mean luma / exp val ratio _ _ _ _ |
Demosaic
功能描述
去马赛克主要指将输入的 Bayer 数据转化成 RGB 域数据。
模块级API参考
rk_aiq_user_api2_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、rk_aiq_uapi2_adebayer_int.h
rk_aiq_user_api2_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_user_api2_adebayer.h、rk_aiq_uapi2_adebayer_int.h
数据类型
adebayer_attrib_t
定义ISP去马赛克属性。
typedef struct adebayer_attrib_s {
unsigned char enable;
unsigned char enhance_strength[9];
unsigned char low_freq_thresh;
unsigned char high_freq_thresh;
} adebayer_attrib_t;
| 成员名称 | 描述 |
|---|---|
| enable | Demosaic模块使能 0:关闭 1: 使能 |
| enhance strength[9] _ | 不同ISO下的细节纹理增强强度 index 0 - ISO 50 index 1 - ISO 100 index 2 - ISO 200 index 3 - ISO 400 index 4 - ISO 800 index 5 - ISO 1600 index 6 - ISO 3200 index 7 - ISO 6400 index 8 - ISO 12800 值越大细节细碎度和清晰度越好,同时伪细节也会相应增强 |
| low freq thresh _ _ | 低频权重选取阈值 值越大选取低频权重的概率越小 |
| high freq thresh _ _ | 高频权重选取阈值 值越大选取高频权重的概率越小 |
统计信息
概述
ISP提供的3A统计信息以及相关配置
功能描述
AE统计信息
AE硬件统计信息主要包含以下几个部分:基于raw图的256段带权重直方图统计信息、基于raw图的分块R/G/B/Y 均值统计信息;基于gamma前RGB图的32段带权重直方图统计信息、基于gamma前RGB图的分块R/G/B/Y 均值统计信息。
基于raw图的AE统计
该模块统计分为分块亮度统计和直方图统计。根据支持的分块大小和是否含有子窗口统计,统计模式又可分为big模式、lite模式。big模式:最大支持全局15X15分块,最小支持1X1分块,每个分块均可输出10bit R/B通道亮度均值和12bit G通道均值,默认采用15X15分块;在全局分块的基础上,支持独立设置4个子窗口,每个子窗口均可输出29bit R/B通道亮度总和和32bit G通道总和,亮度均值需要在软件中除以每个子窗口的像素数求得。该模式下的带权重直方图统计,根据分块数和对应分配的权重,进行256段8bit亮度统计,每个亮度分段内像素数的有效bit数为28bit。lite模式:最大支持5X5分块,最小支持1X1分块,每个分块均可输出10bit R/B通道亮度均值和12bit G通道均值,默认采用5X5分块;不支持独立设置子窗口。该模式下的带权重直方图统计,根据分块数和对应分配的权重,进行256段8bit亮度统计,每个亮度分段内像素数的有效bit数为28bit。
基于RGB图的AE统计
该模块统计分为分块亮度统计和直方图统计。分块亮度统计,最大支持15X15分块,最小支持1x1分块,每个分块均可输出10bit R/B通道亮度均值和12bit G通道均值,默认采用15X15分块;在全局分块的基础上,支持独立设置4个子窗口,每个子窗口均可输出32bit Y通道亮度总和,亮度均值需要在软件中除以每个子窗口的像素数求得。直方图统计,最大支持15X15分块,最新支持5X5分块,该模式下的带权重直方图统计,根据分块数和对应分配的权重,进行32段8bit亮度统计,每个亮度分段内像素数的有效bit数为16bit。
AWB统计信息
AWB硬件统计信息包含全局统计信息和区域统计信息。
全局统计信息:图像全局AWB统计窗口内分色温区域的R,G,B均值,以及有效统计点的个数,色温区域支持7个色温。
分块统计信息:图像全局AWB统计窗口内15x15分块,每个分块的R,G,B均值。
AF统计信息
AF硬件统计信息包含2个主窗口统计信息以及1个主窗口中分块统计信息。
主窗口统计信息:AF统计主窗口内AF统计信息。
分块统计信息:AF统计主窗口内15x15分块的统计信息。
API参考
数据类型
rk_aiq_isp_stats_t
AIQ 3A统计信息
typedef struct {
rk_aiq_isp_aec_stats_t aec_stats;
rk_aiq_awb_stat_res_v200_t awb_stats_v200;
rk_aiq_isp_af_stats_t af_stats;
} rk_aiq_isp_stats_t;
| 成员名称 | 描述 |
|---|---|
| aec stats _ | ae统计信息 |
| awb stats v200 _ _ | awb统计信息 |
| af stats _ | af统计信息 |
RKAiqAecStats_t
定义AE数据信息,详细内容参见AE章节的功能描述。
typedef struct RKAiqAecStats_s {
RkAiqAecHwStatsRes_t ae_data;
RKAiqAecExpInfo_t ae_exp;
} RKAiqAecStats_t;
| 成员名称 | 描述 |
|---|---|
| RkAiqAecHwStatsRes t _ | AE模块硬件统计信息 |
| RKAiqAecExpInfo t _ | AE模块sensor曝光信息 |
RKAiqAecExpInfo_t
AE模块曝光参数信息
typedef struct RKAiqAecExpInfo_s {
RkAiqExpParamComb_t LinearExp;
RkAiqExpParamComb_t HdrExp[3];
unsigned short line_length_pixels;
unsigned short frame_length_lines;
float pixel_clock_freq_mhz;
} RKAiqAecExpInfo_t;
| 成员名称 | 描述 |
|---|---|
| LinearExp | 非HDR模式的曝光参数信息 |
| HdrExp | HDR模式的曝光参数信息 |
| 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表示长帧曝光参数。
RkAiqExpParamComb_t
AE模块曝光参数信息详细内容
typedef struct {
RkAiqExpRealParam_t exp_real_params; //real value
RkAiqExpSensorParam_t exp_sensor_params;//reg value
} RkAiqExpParamComb_t;
typedef struct RkAiqExpRealParam_s {
float integration_time;
float analog_gain;
float digital_gain;
float isp_dgain;
int iso;
int dcg_mode;
} RkAiqExpRealParam_t;
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;
| 成员名称 | 描述 |
|---|---|
| integration time _ | 曝光积分时间,单位为秒 |
| analog gain _ | sensor的模拟增益/Total增益 |
| digital gain _ | sensor的数字增益,暂时无效。数字增益大小合并到analog gain _ |
| isp dgain _ | isp的数字增益,暂时无效 |
| iso | 感光度,暂时无效 |
| dcg mode _ | dual conversion gain模式 |
| fine integration time _ _ | fine曝光积分时间寄存器值,暂时无效 |
| coarse integration time _ _ | 曝光积分时间寄存器值【行数】 |
| analog gain code global _ _ _ | sensor模拟增益寄存器值 |
| digital gain global _ _ | sensor数字增益寄存器值,暂时无效 |
| isp digital gain _ _ | isp数字增益寄存器值,暂时无效 |
【注意事项】
不同sensor的数字增益作用不同,有的是用于增大感光度范围,有的是用于补足模拟增益的精度。因此目前先不将数字增益单独列出,其大小和对应寄存器值全部并入模拟增益中。dual conversion gain模式共有三种状态,值为-1代表sensor不支持dcg,值为0代表LCG,值为1代表HCG
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;
| 成员名称 | 描述 |
|---|---|
| Aec Stat Res t _ _ _ | AE模块基于raw图的统计信息,兼容HDR与非HDR模式,至多支持HDR 3TO1 S/M/L的统计信息。 |
| yuvae stat _ | AE模块基于gamma前RGB图的分块信息 |
| sihist stat _ | AE模块基于gamma前RGB图的直方图信息 |
【注意事项】
Aec_Stat_Res_t chn[3]: 代表HDR Merge模块前3个Raw数据通路的统计信息。非HDR模式,对应下标为0,其他下标均无效;HDR 2TO1模式,对应下标为0时表示短帧数据通路统计信息、下标1表示长帧数据通路统计信息,下标2无效;HDR 3TO1模式,对应下标为0时表示短帧数据通路统计信息、下标1表示中帧数据通路统计信息、下标2表示长帧数据通路统计信息。基于raw图的统计模块之前有BLC AWB模块,因此基于raw图的统计信息受BLC、AWB的增益值影响。Aec_Stat_Res_t extra:HDR模式下,extra表示HDR合成后经debayer的raw图统计信息。该统计模块之前有BLC、 AWB、 HDRMERGE、 TMO模块,因此该模块的统计信息受BLC、 AWB、HDRMERGE、TMO的增益影响。
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;
| 成员名称 | 描述 |
|---|---|
| rawaebig stat _ | 基于raw图的big模式分块统计信息 |
| rawaelite stat _ | 基于raw图的lite模式分块统计信息 |
| rawhist stat _ | 基于raw图的直方图统计信息 |
【注意事项】
有关基于raw图统计的big、lite模式区别详见功能描述模块。由于big与lite模式的主要区别在于分块统计均值亮度的块数及是否支持子窗口均值亮度统计,故此处基于raw图的big、lite模式直方图统计具有相同的数据结构。
rawaebig_stat
基于raw图的big模式统计信息,包含全局窗口分块R/G/B均值亮度、子窗口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 3通道的统计信息,如需Y通道统计信息,可在软件中添加代码根据R/G/B统计值计算。基于raw图的big模式全局窗口分块统计信息为做了除法的均值亮度统计信息,但子窗口为整个窗口的亮度和信息,需要在软件添加代码计算子窗口的均值亮度统计信息。结构体中的channely_xy、wndx_channelr、 wndx_channelg、wndx_channelb、wndx_channely参数皆为软件计算参数,需要添加代码,根据硬件统计值计算求得。
rawaelite_stat
基于raw图的lite模式统计信息,包含全局窗口分块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 _ | big模式全局窗口分块的r通道均值亮度信息。有效比特数:10bit。 |
| channelg xy _ | big模式全局窗口分块的g通道均值亮度信息。有效比特数:12bit。 |
| channelb xy _ | big模式全局窗口分块的b通道均值亮度信息。有效比特数:10bit。 |
【注意事项】
基于raw图的lite模式统计信息,仅包含R/G/B 3通道的统计信息,如需Y通道统计信息,可在软件中添加代码根据R/G/B统计值计算。结构体中的channely_xy为软件计算参数,需要添加代码,根据硬件统计值计算求得。
rawhist_stat
基于raw图的直方图统计信息
struct rawhist_stat {
unsigned int bins[RAWHIST_BIN_N_MAX];
};
#define RAWHIST_BIN_N_MAX 256
| 成员名称 | 描述 |
|---|---|
| bins | 直方图的分段,共256段,有效bit数:28bit |
yuvae_stat
基于gamma前RGB图的分块均值亮度统计信息,包含全局窗口分块Y通道均值亮度、子窗口Y通道亮度总和
struct yuvae_stat {
unsigned long int ro_yuvae_sumy[YUVAE_SUBWIN_NUM];
unsigned char mean[YUVAE_WIN_NUM];
};
#define YUVAE_SUBWIN_NUM 4
#define YUVAE_WIN_NUM 225
| 成员名称 | 描述 |
|---|---|
| ro yuvae sumy _ _ | 子窗口的Y通道亮度总和,有效bit数:32bit |
| mean | 全局窗口分块Y通道均值亮度,有效bit数:8bit |
【注意事项】
基于raw图的lite模式统计信息,仅包含R/G/B 3通道的统计信息,如需Y通道统计信息,可在软件中添加代码根据R/G/B统计值计算。结构体中的channely_xy为软件计算参数,需要添加代码,根据硬件统计值计算求得。
sihist_stat
基于gamma前RGB图的直方图计信息
struct sihist_stat {
unsigned int bins[SIHIST_BIN_N_MAX];
};
#define SIHIST_BIN_N_MAX 32
| 成员名称 | 描述 |
|---|---|
| bins | 直方图的分段,共32段,有效比特数:16bit |
rk_aiq_awb_stat_res_v200_t
定义白平衡硬件统计信息
typedef struct rk_aiq_awb_stat_res_v200_s {
rk_aiq_awb_stat_wp_res_light_v200_t light[RK_AIQ_AWB_MAX_WHITEREGIONS_NUM];
rk_aiq_awb_stat_blk_res_v200_t blockResult[RK_AIQ_AWB_GRID_NUM_TOTAL];
rk_aiq_awb_stat_wp_res_light_v200_t
multiwindowLightResult[RK_AIQ_AWB_MAX_WHITEREGIONS_NUM];
rk_aiq_awb_stat_wp_res_v200_t
excWpRangeResult[RK_AIQ_AWB_STAT_WP_RANGE_NUM_V200];
} rk_aiq_awb_stat_res_v200_t;
| 成员名称 | 描述 |
|---|---|
| light | 主窗口下不同光源下的白点统计结果,最多 RK AIQ AWB MAX WHITEREGIONS NUM个光源; _ _ _ _ _ |
| blockResult | 每个块的RGB累加,图像进行不重叠同尺寸的 15x15(RK AIQ AWB GRID NUM TOTAL)分块 _ _ _ _ _ |
| multiwindowLightResult | 几个子窗口内不同光源下的白点统计结果,最多 RK AIQ AWB MAX WHITEREGIONS NUM个光源; _ _ _ _ _ |
| excWpRangeResult | 落在非白点区域里的非白点统计结果,最多 RK AIQ AWB STAT WP RANGE NUM V200个非白点区域 _ _ _ _ _ _ _ |
【注意事项】
如果用户希望获取主窗口全局的白点统计结果,根据所有光源下的白点统计结果可以简单换算得到。
rk_aiq_awb_stat_wp_res_light_v200_t
定义某个光源下的白点统计结果
typedef struct rk_aiq_awb_stat_wp_res_light_v200_s {
rk_aiq_awb_stat_wp_res_v200_t xYType[RK_AIQ_AWB_XY_TYPE_MAX_V200];
} rk_aiq_awb_stat_wp_res_light_v200_t;
| 成员名 称 | 描述 |
|---|---|
| xYType | 某个光源下不同大小的XY框的白点统计结果,最多 RK AIQ AWB XY TYPE MAX V200个框 _ _ _ _ _ _ |
rk_aiq_awb_stat_wp_res_v200_t
定义某个光源某个大小的XY框下的白点统计结果,后非白点区域里的非白点统计结果
typedef struct rk_aiq_awb_stat_wp_res_v200_s {
unsigned int WpNo;
unsigned int Rvalue;
unsigned int Gvalue;
unsigned int Bvalue;
} rk_aiq_awb_stat_wp_res_v200_t;
| 成员名称 | 描述 |
|---|---|
| WpNo | (非)白点数量 |
| Rvalue | (非)白点R通道的累加和 |
| Gvalue | (非)白点G通道的累加和 |
| Bvalue | (非)白点B通道的累加和 |
rk_aiq_awb_stat_blk_res_v200_t
定义每个块的统计结果
typedef struct rk_aiq_awb_stat_blk_res_v200_s {
unsigned int Rvalue;
unsigned int Gvalue;
unsigned int Bvalue;
bool isWP[RK_AIQ_AWB_STORE_LS_WPFLAG_NUM];
} rk_aiq_awb_stat_blk_res_v200_t;
| 成员名 称 | 描述 |
|---|---|
| isWP | 块内是否包含某个光源白点的标志,最多纪录 RK AIQ AWB STORE LS WPFLAG NUM个光源的标志 _ _ _ _ _ _ |
| Rvalue | 块内所有点R通道的累加和 |
| Gvalue | 块内所有点RG通道的累加和 |
| Bvalue | 块内所有点RB通道的累加和 |
rk_aiq_af_algo_stat_t
定义AF统计信息
typedef struct {
unsigned int roia_sharpness;
unsigned int roia_luminance;
unsigned int roib_sharpness;
unsigned int roib_luminance;
unsigned int global_sharpness[RKAIQ_RAWAF_SUMDATA_NUM];
struct timeval focus_starttim;
struct timeval focus_endtim;
int64_t sof_tim;
} rk_aiq_af_algo_stat_t;
| 成员名称 | 描述 |
|---|---|
| roia sharpness _ | 主窗口的清晰度值; |
| roia luminance _ | 主窗口的亮度值; |
| roib sharpness _ | 独立窗口的清晰度值; |
| roib luminance _ | 独立窗口的亮度值; |
| global sharpness _ | 主窗口下15*15子窗口的清晰度值; |
| focus starttim _ | 最近一次VCM移动的起始时间; |
| focus endtim _ | 最近一次VCM移动的结束时间; |
| sof tim _ | 本次数据帧的帧开始时间,单位ns; |
【注意事项】
roia_sharpness/roia_luminance/roib_sharpness/roib_luminance/global_sharpness为AF硬件统计信息。focus_starttim/focus_endtim/sof_tim为VCM移动时间和数据帧的帧开始时间,辅助确认VCM是否移动结束,AF硬件统计信息是否可靠。
Debug & FAQ
如何获取版本号
aiq提供了版本发布日期、aiq版本、iq解析器版本及isp各个算法模块的版本信息;
获取简略版本信息
strings librkaiq.so | grep -w AIQ
AIQ: v0.1.6
获取完整版本信息
- SDK中aiq库默认编译为Release版本,需要改成Debug版本,重新编译aiq库后更新到设备。
SDK/external/camera_engine_rkaiq/CMakeLists.txt:
9 if(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
10 add_definitions(-DBUILD_TYPE_DEBUG)
11 endif()
改成:
9 #if(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
10 add_definitions(-DBUILD_TYPE_DEBUG)
11 #endif()
- 默认打印级别下,加载运行的aiq库不会打印,可以设置xcore模块的log级别,以打印aiq版本信息:
export persist_camera_engine_log=0x1000000ff2
- 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 ************************
版本号匹配规则说明
AIQ与IQ Tool、ISP Driver的版本匹配规则如下:
v A . B. C
其中B为16进制表示,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,有可能出现版本不匹配的情况,针对IQ Tool匹配建议优先采用C版本号为0的AIQ版本。
AIQ Log
Log开关
- aiq采用64bits表示所有模块的log级别,表示各个模块的位图及说明如下:
bit: [63-39] 38 37 36 35 34 33 32 31
mean: [U] [CAMHW][ANALYZER][XCORE][ASD][AFEC][ACGC][AORB][ASHARP]
bit: 30 29 28 27 26 25 24 23 22
mean:[AIE][ACP][AR2Y][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
- 模块log级别配置:如上说明,linux环境下通过设置环境变量persist_camera_engine_log来控制各个模块的开关级别。例如开启af模块的log开关,并且级别为verbose,则bit[14] = 1, bit[3-0] = 4, 所以在应用程序执行前执行:
export persist_camera_engine_log=0x4014
查看当前log级别可通过如下命令:
[root@RV1126_RV1109:/]# echo $persist_camera_engine_log
0x4014
- 各模块开关列表
| 模块 | Debug log | Verbose log |
|---|---|---|
| AE | export persist camera engine log=0x1ff3 _ _ _ | export persist camera engine log=0x1ff4 _ _ _ |
| AF | export persist camera engine log=0x4ff3 _ _ _ | export persist camera engine log=0x4ff4 _ _ _ |
| AWB | export persist camera engine log=0x2ff3 _ _ _ | export persist camera engine log=0x2ff4 _ _ _ |
| NR | export persist camera engine log=0x40fff _ _ _ |
Log解读
AE
由于篇幅限制,此处仅对debug等级的log进行内容解读。
线性模式AE LOG
图3-1 线性模式AE LOG如图3-1所示为线性模式的AE LOG示例。Line1:
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不支持dcg模式 或 sensor内部进行dcg 模式的切换;0:LCG模式;1:HCG模式 |
| pirs | 当前帧对应的p-iris光圈步进电机位置。若Airis功能关闭,该参数无效,无意 义。 |
Line2:
Last-Res:FrmId=269,gain=0x356,time=0x576,pirs=0上次运行AE设置的新曝光参数,部分参数与(1)中含义一致,此处不再赘述。通过比较Line1与Line2的曝光参数LOG信息,可知当前曝光是否与新曝光一致,即新曝光是否已经生效。Line3:
================================= Linear-AE (enter)===============================
进入AE控制算法模块,Linear-AE表示当前为线性曝光模式。Line4:
Framenum=270 Cur gain=6.826667,time=0.029987,pirisGain=0,RawMeanluma=29.564444,YuvMeanluma=3 4.875557,IsConverged=0
| 成员名称 | 描述 |
|---|---|
| Framenum | 当前帧的帧号 |
| gain | 当前帧对应的sensor曝光增益值 |
| time | 当前帧对应的sensor曝光时间值 |
| pirisGain | 当前帧对应的p-iris光圈等效增益值。若Airis功能关闭,该参数无效,无 意义。 |
| RawMeanluma | 当前帧对应的debayer前raw图亮度,已扣除黑电平,并乘上awb gain。 |
| YuvMeanluma | 当前帧对应的gamma前RGB图亮度,用于判断debayer后的模块对亮度 的影响。 |
| IsConverged | 当前帧曝光是否已经收敛。0:曝光未收敛;1:曝光已收敛 |
Line 5:
AecClmExecute: NewExposure(0.180993) SplitGain(6.033096) SplitIntegrationTime(0.030000) SplitPirisGain(0)
| 成员名称 | 描述 |
|---|---|
| NewExposure | AE控制算法得出的新曝光量值 |
| SplitGain | 新sensor曝光增益 |
| SplitIntegrationTime | 新sensor曝光时间 |
| SplitPirisGain | 新p-iris光圈等效增益值。若Airis功能关闭,该参数无效,无意 义。 |
Line6:
calc result:SetPoint=22.000000,gain=6.023529,time=0.029987,piris=0,reggain=854,regtime=
最终设置的新曝光
| 成员名称 | 描述 |
|---|---|
| SetPoint | 目标亮度值 |
| gain | 最终的新曝光增益值 |
| time | 最终的新曝光时间值 |
| piris | 最终的新p-iris光圈等效增益值。若Airis功能关闭,该参数无效,无意义。 |
| reggain | 最终的新曝光增益值对应的寄存器值 |
| regtime | 最终的新曝光时间值对应的寄存器值 |
综上,可得知当前帧的画面亮度RawMeanLuma,以及对应的目标亮度setpoint。通过比较画面亮度和目标亮度,计算新曝光。Hdr模式AE LOG:
图3-2 Hdr模式AE LOG Line1:
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曝光增益寄存器值。HDR 2帧模式时,S/M有 效;HDR 3帧模式时,S/M/L皆有效。 |
| S/M/L-time | 当前Hdr各帧对应的sensor曝光时间寄存器值。HDR 2帧模式时,S/M有 效;HDR 3帧模式时,S/M/L皆有效。 |
| envChange | 当前帧是否发生环境亮度突变。0:环境亮度无突变;1:环境亮度突变 |
| dcg | 当前帧对应的dcg模式,分别对应短中长3帧。Hdr 2帧模式时,前两个数值 有效,分别代表短长帧的dcg模式;Hdr 3帧模式时,三个数值分别代表短中 长的dcg模式。-1:sensor不支持dcg模式 或 sensor内部进行dcg模式的切 换;0:LCG模式;1:HCG模式 |
| pirs | 当前帧对应的p-iris光圈步进电机位置。若Airis功能关闭,该参数无效,无意 义。 |
Line2:
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的曝光参数LOG信息,可知当前曝光是否与新曝光一致,即新曝光是否已经生效。Line3:
================================= HDR-AE (enter)===============================
进入AE控制算法模块,HDR-AE表示当前为HDR曝光模式。Line4:
AecRun: SMeanLuma=9.342692, MMeanLuma=37.698597,LMeanLuma=0.000000,TmoMeanluma=37.571430,Isconverg ed=0,Longfrm=0
| 成员名称 | 描述 |
|---|---|
| S/M/LMeanLuma | 当前Hdr各帧的亮度均值。HDR 2帧模式时,S/M有效;HDR 3帧模式 时,S/M/L皆有效。 |
| TmoMeanluma | 当前帧TMO模块输出的亮度均值。 |
| Isconverged | 当前Hdr各帧曝光量是否收敛。0:曝光未收敛;1:曝光已收敛。 |
| Longfrm | 当前帧的长帧模式状态。0:长帧模式关闭;1:长帧模式开启。 |
Line5:
Framenum=22 Cur Piris=0, Sgain=1.000000,Stime=0.002570,mgain=1.462177,mtime=0.025000,lgain=1.000000,lti me=0.000000
| 成员名称 | 描述 |
|---|---|
| Framenum | 当前帧的帧号 |
| s/m/lgain | 当前帧对应的sensor曝光增益值。HDR 2帧模式时,s/m有效;HDR 3帧模 式时,s/m/l皆有效。 |
| s/m/ltime | 当前帧对应的sensor曝光时间值。HDR 2帧模式时,s/m有效;HDR 3帧模 式时,s/m/l皆有效。 |
| piris | 当前帧对应的p-iris光圈等效增益值。若Airis功能关闭,该参数无效,无意 义。 |
Line6:
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 | 当前短帧全局区域目标亮度。 |
Line7:
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 | 当前长帧全局区域目标亮度。 |
Line8:
calc result:piris=0,sgain=1.000000,stime=0.005081,mgain=1.862087,mtime=0.025000,lgain =0.000000,ltime=0.000000
AE控制算法输出的曝光结果
| 成员名称 | 描述 |
|---|---|
| s/m/lgain | 最终新sensor曝光增益值。HDR 2帧模式时,s/m有效;HDR 3帧模式时, s/m/l皆有效。 |
| s/m/ltime | 最终新sensor曝光时间值。HDR 2帧模式时,s/m有效;HDR 3帧模式时, s/m/l皆有效。 |
| piris | 最终新p-iris光圈等效增益值。若Airis功能关闭,该参数无效,无意义。 |
AF
1)每帧的AF统计值
rk_aiq_algo_af_itf.cpp:465: AFProcessing: sharpness roia: 2454915276 - 16253362 roib: 4770628 - 7350891 vcm_stable: 1, 1618759, 1618375, 1618382, 30.006588, sof_tim 1618712, zoom_stable 1
| 成员名称 | 描述 |
|---|---|
| roia | window A的FV值和亮度值 |
| roib | window B的FV值和亮度值 |
| vcm stable _ | vcm移动是否结束标记: 0: 未结束 1:结束 当前时刻, 单位ms vcm移动起始时刻,单位ms vcm移动结束时刻,单位ms 当前帧曝光时间,单位ms |
| sof tim _ | 当前帧的帧数据传输起始时刻,单位ms |
| zoom stable _ | zoom缩放是否结束 |
vcm_stable的判断方法
if (sof_time >= vcm_end_time + exposure_time + extraDelay)
vcm_stable = true;
else
vcm_stable = false;
extraDelay在IQ xml中指定,可正,可负,可为零
vcm_start_time、vcm_end_time从vcm驱动查询得到
zoom_stable的判断方法
if (cur_time >= zoom_end_time)
zoom_stable = true;
else
zoom_stable = false;
zoom_start_time、zoom_end_time从zoom驱动查询得到
2)对焦触发:
af_trigger.cpp:158: curSharpness: 178.780685, triggered: 1, sceneChanged 1
当前帧FV值与上次成功对焦的FV值的变化大于TrigThers,且连续StableFrames帧的FV变化小于StableThers时,触发对焦。
TrigThers、StableFrames、StableThers由IQ xml指定
3)搜索路径:
af_trigger.cpp:921: Search list is:
af_trigger.cpp:933: ->index: 0 pos: 64 stage: 1
af_trigger.cpp:938: index: 1 pos: 56 stage: 1
af_trigger.cpp:938: index: 2 pos: 48 stage: 1 af_trigger.cpp:938: index: 3 pos: 40 stage: 1
af_trigger.cpp:938: index: 4 pos: 32 stage: 1
af_trigger.cpp:938: index: 5 pos: 24 stage: 1
af_trigger.cpp:938: index: 6 pos: 16 stage: 1
af_trigger.cpp:938: index: 7 pos: 8 stage: 1
af_trigger.cpp:938: index: 8 pos: 0 stage: 1
4)显示当前iso值,并根据iso值更新相关配置
af.cpp:1615: AfCalcMeasCfgByIso: current iso = 599, again 11.999999, dgain 1.000000! af.cpp:171: AfUpdateMeasIsoCfg: iso = 800
5)粗调结果
6)细调结果
XCAM INFO (807) af_search.cpp:25: --> SearchIdx 1 route(search fine) is: XCAM INFO (807) af_search.cpp:32: stage: 0, index: 0, pos: 8, sharpness: 196.762360, dSharpness: 0.000000, abs_dSharpness: 0.000000, skip: 0, quick_focus: 0 XCAM INFO (807) af_search.cpp:32: stage: 0, index: 1, pos: 4, sharpness: 207.176315, dSharpness: 0.025781, abs_dSharpness: 0.000000, skip: 0, quick_focus: 0 XCAM INFO (807) af_search.cpp:32: stage: 0, index: 2, pos: 0, sharpness: 206.649445, dSharpness: -0.001273, abs_dSharpness: -0.001273, skip: 0, quick_focus: 1 XCAM INFO (807) af_search.cpp:38: MaxSharpnessPos 4, MaxSharpness: 207.176315, MinSharpness: 177.747253 7)对焦结果
af_search.cpp:1010: AfSearching: Found focus(pos: 4 sharpness: 207.176315, distance: 0.000 0)!
AWB
参考《Rockchip_Color_Optimization_Guide_ISP2x_CN》
动态抓取raw/yuv图像
抓取raw图原理说明
1.目前软件isp的数据流粗略流程为:
sensor(raw) -> csi-tx -> isp-rx -> ... -> isp-> ... ->ispp -> ... -> out-yuv, 其中csi-tx -> isp-rx的raw图数据可以在aiq的hwi层获取到。
aiq根据/tmp/.capture_cnt中间文件获取用户想保存raw文件的帧数,aiq将对应帧数的raw图写入/tmp目录下。
2.这种抓raw方式仅在isp回读模式下支持。
抓raw图步骤
- 运行rkaiq。2. echo要抓取的raw图帧数, 例如抓取3帧
linux系统下执行: echo 3 > /tmp/.capture_cnt
android系统下执行:echo 3 > /data/.capture_cnt
- 在/tmp/capture_image或/data/capture_image目录下会生成抓取的raw图及对应的meta信息
linux系统下:
[root@RV1126_RV1109:/]# ls -l /tmp/capture_image/raw_2017-08-15_20-40-58/
total 35932
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame476_2688x1520_long.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame476_2688x1520_short.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame477_2688x1520_long.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame477_2688x1520_short.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame478_2688x1520_long.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame478_2688x1520_short.raw
-rw-r--r-- 1 root root 381 Aug 15 20:40 meta_data
android系统下:
[root@RV1126_RV1109:/]# ls -l /data/capture_image/raw_2017-08-15_20-40-58/
total 35932
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame476_2688x1520_long.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame476_2688x1520_short.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame477_2688x1520_long.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame477_2688x1520_short.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame478_2688x1520_long.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame478_2688x1520_short.raw
-rw-r--r-- 1 root root 381 Aug 15 20:40 meta_data
运行rkisp_demo,抓raw及对应的yuv图像步骤
- 加--sync-to-raw参数,运行rkisp_demo,只有rkisp_demo支持
rkisp_demo --device /dev/video14 --width 1280 --height 720 --vop --rkaiq --hdr 2
--sync-to-raw
- echo要抓取的raw/yuv图帧数, 例如抓取3帧
linux系统下执行: echo 3 > /tmp/.capture_cnt
android系统下执行:echo 3 > /data/.capture_cnt
- 在/tmp/capture_image或/data/capture_image目录下会生成抓取的raw图/meta信息/yuv图像
linux系统下:
[root@RV1126_RV1109:/]# ls -l /tmp/capture_image/raw_2017-08-15_20-40-58/
total 35932
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame476_2688x1520_long.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame476_2688x1520_short.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame477_2688x1520_long.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame477_2688x1520_short.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame478_2688x1520_long.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame478_2688x1520_short.raw
-rw-r--r-- 1 root root 381 Aug 15 20:40 meta_data
android系统下:
[root@RV1126_RV1109:/]# ls -l /data/capture_image/raw_2017-08-15_20-40-58/
total 35932
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame476_2688x1520_long.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame476_2688x1520_short.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame477_2688x1520_long.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame477_2688x1520_short.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame478_2688x1520_long.raw
-rw-r--r-- 1 root root 6128640 Aug 15 20:40 frame478_2688x1520_short.raw
-rw-r--r-- 1 root root 381 Aug 15 20:40 meta_data
- 如上所示,raw图/meta信息/yuv图像是一一对应
旧版IQ文件XML转JSON
转换工具路径:
rk_aiq/tools/iqConverTer/bin/iqConverTer
转换工具代码路径:
rk_aiq/tools/iqConverTer/src/
工具编译:
# 设置环境变量,ISP PLATFORM为isp平台编号,如RV1126为20,RK356X为21
source ../../build/linux/envsetup.sh <ISP PLATFORM>
./make-x86.sh
编译完成后会在以下目录生成转换工具:
rk_aiq/tools/iqConverTer/build/release/bin
执行转换程序:
# 第一个参数为旧的XML格式的IQ文件,第二个参数为输出的JSON格式的IQ文件
./build/release/bin/iqConverTer old.xml new.json
转换失败的处理方法:
# 由于我们的XML文件可能在多个平台上编辑过,导致换行等格式信息上存在一些不标准或者不统一的情况,
我们可以通过以下几个命令来修复
# 需要先安装xmllint工具
# 修复完再次进行转换即可
xmllint --format old.xml > ./new.xml
find -type f -name "*.xml" | xargs -i sed -i "/^[1-9]/ s/^/\ /" {}
错误码
| 错误代码 | 描述 |
|---|---|
| 0 | 成功 |
| -1 | 失败 |
| -2 | 参数无效 |
| -3 | 内存不足 |
| -4 | 文件操作失败 |
| -5 | ANALYZER模块出错 |
| -6 | ISP模块出错 |
| -7 | sensor驱动出错 |
| -8 | 线程操作出错 |
| -9 | IOCTL操作出错 |
| -10 | 时序出错 |
| -20 | 超时 |
| -21 | 超出范围 |
| -255 | 未知错误 |
缩略语
| 缩写 | 全称 |
|---|---|
| CIS | Camera Image Sensor |
| RkAiq | Rockchip Automatical Image Quality |
| ISP | Image Signal Process |
| IQ Tuning | Image Quality Tuning |