Skip to main content

Rockchip Developement Guide ISP30

:::info 文档信息

文档标识:RK-KF-GX-612 · 发布版本:V1.2.3 · 发布日期:2022-2-19 · 页数:357 · 语言:英文

原始文档:Rockchip_Development_Guide_ISP30_CN_v1.2.3.pdf

:::

章节大纲​

  • Rockchip Developement Guide ISP30(P1)
    • 总体概要(P13)
      • 结构图(P13)
      • 工作模式(P14)
      • 性能及约束概述(P14)
    • 概述(P15)
      • 功能描述(P15)
      • RkAiq架构(P16)
      • 软件架构(P16)
      • 软件流程(P17)
      • API说明(P19)
        • rk_aiq_uapi_sync_t(P19)
    • 系统控制(P20)
      • 功能概述(P20)
      • API参考(P21)
        • rk_aiq_uapi2_sysctl_preInit(P21)
        • rk_aiq_uapi2_sysctl_preInit_scene(P21)
        • rk_aiq_uapi2_sysctl_switch_scene(P22)
        • rk_aiq_uapi2_sysctl_init(P23)
        • rk_aiq_uapi2_sysctl_deinit(P24)
        • rk_aiq_uapi2_sysctl_prepare(P24)
        • rk_aiq_uapi2_sysctl_start(P25)
        • rk_aiq_uapi2_sysctl_stop(P26)
        • rk_aiq_uapi2_sysctl_getStaticMetas(P26)
        • rk_aiq_uapi2_sysctl_enumStaticMetas(P27)
        • rk_aiq_uapi2_sysctl_enableAxlib(P27)
        • rk_aiq_uapi2_sysctl_getAxlibStatus(P28)
        • rk_aiq_uapi2_sysctl_getEnabledAxlibCtx(P29)
        • rk_aiq_uapi2_sysctl_setCpsLtCfg(P30)
        • rk_aiq_uapi2_sysctl_getCpsLtInfo(P30)
        • rk_aiq_uapi2_sysctl_queryCpsLtCap(P31)
        • rk_aiq_uapi2_sysctl_getBindedSnsEntNmByVd(P31)
        • rk_aiq_uapi2_sysctl_updateIq(P32)
        • rk_aiq_uapi2_sysctl_getCrop(P33)
      • 数据类型(P33)
        • rk_aiq_working_mode_t(P33)
        • rk_aiq_static_info_t(P34)
        • rk_aiq_sensor_info_t(P34)
        • rk_aiq_module_id_t(P35)
        • rk_aiq_cpsl_cfg_t(P36)
        • rk_aiq_cpsl_info_t(P37)
        • rk_aiq_cpsl_cap_t(P37)
        • rk_aiq_rect_t(P38)
    • 离线帧处理(P39)
      • 概述(P39)
      • 功能框图(P39)
      • 功能描述(P39)
      • RK-RAW格式说明(P40)
      • 支持的RAW格式(P40)
      • API参考(P40)
      • 数据结构(P40)
      • 注意事项(P40)
      • 参考示例(P40)
    • Camera组(P40)
      • 概述(P40)
        • rk_aiq_uapi2_camgroup_create(P40)
        • rk_aiq_uapi2_camgroup_prepare(P41)
        • rk_aiq_uapi2_camgroup_start(P42)
        • rk_aiq_uapi2_camgroup_stop(P42)
        • rk_aiq_uapi2_camgroup_destroy(P43)
        • rk_aiq_uapi2_camgroup_getOverlapMap(P43)
        • rk_aiq_uapi2_camgroup_getOverlapMap(P44)
        • rk_aiq_uapi2_camgroup_getAiqCtxBySnsNm(P44)
        • rk_aiq_uapi2_camgroup_getCamInfos(P45)
        • rk_aiq_uapi2_camgroup_bind(P45)
        • rk_aiq_uapi2_camgroup_unbind(P46)
      • 数据结构(P46)
        • rk_aiq_camgroup_instance_cfg_t(P46)
        • rk_aiq_camgroup_camInfos_t(P46)
        • struct RK_PS_SrcOverlapMap(P47)
    • AE(P47)
      • 概述(P47)
      • 重要概念(P48)
      • 功能描述(P48)
      • 功能级API参考(P48)
        • rk_aiq_uapi2_setAeLock(P48)
        • rk_aiq_uapi2_setExpMode(P48)
        • rk_aiq_uapi2_getExpMode(P49)
        • rk_aiq_uapi2_setManualExp(P49)
        • rk_aiq_uapi2_setExpGainRange(P50)
        • rk_aiq_uapi2_getExpGainRange(P51)
        • rk_aiq_uapi2_setExpTimeRange(P51)
        • rk_aiq_uapi2_getExpTimeRange(P52)
        • rk_aiq_uapi2_setBLCMode(P52)
        • rk_aiq_uapi2_setBLCStrength(P53)
        • rk_aiq_uapi2_setHLCMode(P54)
        • rk_aiq_uapi2_setHLCStrength(P54)
        • rk_aiq_uapi2_setAntiFlickerEn(P55)
        • rk_aiq_uapi2_getAntiFlickerEn(P55)
        • rk_aiq_uapi2_setAntiFlickerMode(P56)
        • rk_aiq_uapi2_getAntiFlickerMode(P56)
        • rk_aiq_uapi2_setExpPwrLineFreqMode(P57)
        • rk_aiq_uapi2_getExpPwrLineFreqMode(P58)
      • 功能级API数据类型(P58)
        • opMode_t(P58)
        • paRange_t(P59)
        • aeMeasAreaType_t(P59)
        • expPwrLineFreq_t(P59)
        • antiFlickerMode_t(P60)
      • 模块级API参考(P60)
        • rk_aiq_user_api2_ae_setExpSwAttr(P60)
        • rk_aiq_user_api2_ae_getExpSwAttr(P65)
        • rk_aiq_user_api2_ae_setLinAeRouteAttr(P66)
        • rk_aiq_user_api2_ae_getLinAeRouteAttr(P67)
        • rk_aiq_user_api2_ae_setHdrAeRouteAttr(P67)
        • rk_aiq_user_api2_ae_getHdrAeRouteAttr(P69)
        • rk_aiq_user_api2_ae_setLinExpAttr(P69)
        • rk_aiq_user_api2_ae_getLinExpAttr(P70)
        • rk_aiq_user_api2_ae_setHdrExpAttr(P71)
        • rk_aiq_user_api2_ae_getHdrExpAttr(P72)
        • rk_aiq_user_api2_ae_setIrisAttr(P72)
        • rk_aiq_user_api2_ae_getIrisAttr(P73)
        • rk_aiq_user_api2_ae_setExpWinAttr(P74)
        • rk_aiq_user_api2_ae_getExpWinAttr(P75)
        • rk_aiq_user_api2_ae_queryExpResInfo(P76)
      • 模块级API数据类型(P76)
        • Uapi_ExpSwAttr_t(P76)
          • Uapi_ExpSwAttr_AdvancedV2_t(P77)
            • Aec_AeRange_t(P78)
            • Aec_LinAeRange_t(P79)
            • Aec_HdrAeRange_t(P79)
          • Uapi_AeAttrV2_t(P80)
            • Uapi_AeSpeedV2_t(P81)
            • Uapi_AeFpsAttrV2_t(P81)
            • Uapi_AntiFlickerV2_t(P82)
          • Uapi_MeAttrV2_t(P83)
            • Uapi_LinMeAttrV2_t(P83)
            • Uapi_HdrMeAttrV2_t(P84)
        • Uapi_LinAeRouteAttr_t(P84)
        • Uapi_HdrAeRouteAttr_t(P85)
        • Uapi_LinExpAttrV2_t(P87)
          • CalibDb_AecDynamicSetpointV2_t(P88)
        • Uapi_HdrExpAttrV2_t(P89)
        • Uapi_IrisAttrV2_t(P90)
          • CalibDb_MIris_AttrV2_t(P90)
          • CalibDb_PIris_AttrV2_t(P91)
          • CalibDb_DCIris_AttrV2_t(P91)
        • Uapi_ExpWin_t(P95)
        • Uapi_ExpQueryInfo_t(P95)
      • 常见问题定位及debug方法(P97)
        • 曝光统计同步测试功能(P97)
        • 曝光变化时出现闪烁(P98)
    • AWB(P100)
      • 概述(P100)
      • 重要概念(P100)
      • 功能描述(P100)
      • 功能级API参考(P100)
        • rk_aiq_uapi2_setWBMode(P100)
        • rk_aiq_uapi2_getWBMode(P101)
        • rk_aiq_uapi2_lockAWB(P101)
        • rk_aiq_uapi2_unlockAWB(P102)
        • rk_aiq_uapi2_setMWBScene(P102)
        • rk_aiq_uapi2_getMWBScene(P103)
        • rk_aiq_uapi2_setMWBGain(P104)
        • rk_aiq_uapi2_getWBGain(P104)
        • rk_aiq_uapi2_setMWBCT(P105)
        • rk_aiq_uapi2_getWBCT(P106)
        • rk_aiq_uapi2_setAwbGainOffsetAttrib(P106)
        • rk_aiq_uapi2_getAwbGainOffsetAttrib(P107)
        • rk_aiq_uapi2_setAwbGainAdjustAttrib(P107)
        • rk_aiq_uapi2_getAwbGainAdjustAttrib(P108)
        • rk_aiq_uapi2_setAwbV30AllAttrib(P109)
        • rk_aiq_uapi2_getAwbV30AllAttrib(P109)
      • 功能级API数据类型(P110)
        • rk_aiq_wb_op_mode_t(P110)
        • rk_aiq_wb_mwb_mode_t(P110)
        • rk_aiq_wb_gain_t(P111)
        • rk_aiq_wb_scene_t(P111)
        • rk_aiq_wb_cct_t(P112)
        • rk_aiq_wb_mwb_attrib_t(P112)
        • rk_aiq_uapiV2_wb_awb_wbGainOffset_t(P113)
        • CalibDbV2_Awb_gain_offset_cfg_t(P113)
        • rk_aiq_uapiV2_wb_awb_wbGainAdjust_t(P114)
        • rk_aiq_uapiV2_wbV30_awb_attrib_t(P115)
        • rk_aiq_uapiV2_wbV30_attrib_t(P115)
      • 模块级API参考(P116)
        • rk_aiq_user_api2_awbV30_SetAllAttrib(P116)
        • rk_aiq_user_api2_awbV30_GetAllAttrib(P117)
        • rk_aiq_user_api2_awb_GetCCT(P117)
        • rk_aiq_user_api2_awb_QueryWBInfo(P118)
        • rk_aiq_user_api2_awb_Lock(P119)
        • rk_aiq_user_api2_awb_Unlock(P119)
        • rk_aiq_user_api2_awb_SetWpModeAttrib(P120)
        • rk_aiq_user_api2_awb_GetWpModeAttrib(P120)
        • rk_aiq_user_api2_awb_SetMwbAttrib(P121)
        • rk_aiq_user_api2_awb_GetMwbAttrib(P122)
        • rk_aiq_user_api2_awb_SetWbGainAdjustAttrib(P122)
        • rk_aiq_user_api2_awb_GetWbGainAdjustAttrib(P123)
        • rk_aiq_user_api2_awb_SetWbGainOffsetAttrib(P124)
        • rk_aiq_user_api2_awb_GetWbGainOffsetAttrib(P124)
      • 模块级API数据类型(P125)
        • rk_aiq_wb_querry_info_t(P125)
        • rk_aiq_wb_op_mode_t(P125)
        • rk_aiq_wb_mwb_attrib_t(P126)
    • AF(P126)
      • 概述(P126)
      • 功能描述(P126)
      • 开发用户AF算法(P127)
      • 功能级API参考(P127)
        • rk_aiq_uapi2_setFocusMode(P127)
        • rk_aiq_uapi2_getFocusMode(P128)
        • rk_aiq_uapi2_setFocusWin(P128)
        • rk_aiq_uapi2_getFocusWin(P129)
        • rk_aiq_uapi2_lockFocus(P129)
        • rk_aiq_uapi2_unlockFocus(P130)
        • rk_aiq_uapi2_oneshotFocus(P130)
        • rk_aiq_uapi2_manualTrigerFocus(P131)
        • rk_aiq_uapi2_trackingFocus(P131)
        • rk_aiq_uapi2_getSearchResult(P132)
        • rk_aiq_uapi2_getZoomRange(P132)
        • rk_aiq_uapi2_setOpZoomPosition(P133)
        • rk_aiq_uapi2_getOpZoomPosition(P133)
        • rk_aiq_uapi2_endOpZoomChange(P134)
        • rk_aiq_uapi2_getFocusRange(P134)
        • rk_aiq_uapi2_setFocusPosition(P135)
        • rk_aiq_uapi2_getFocusPosition(P136)
        • rk_aiq_uapi2_startZoomCalib(P136)
        • rk_aiq_uapi2_resetZoom(P137)
      • 功能级API数据类型(P137)
        • opMode_t(P137)
        • rk_aiq_af_zoomrange(P138)
        • rk_aiq_af_focusrange(P138)
        • rk_aiq_af_result_t(P138)
      • 模块级API参考(P139)
        • rk_aiq_user_api2_af_SetAttrib(P139)
        • rk_aiq_user_api2_af_GetAttrib(P140)
      • 模块级API数据类型(P140)
        • RKAIQ_AF_MODE(P140)
        • RKAIQ_AF_HWVER(P141)
        • rk_aiq_af_algo_meas_v30_t(P141)
        • rk_aiq_af_attrib_t(P146)
      • 其它说明(P147)
        • VCM马达模组驱动验证(P147)
        • 电动马达模组驱动验证(P147)
    • IMGPROC(P148)
      • 概述(P148)
      • Merge(P148)
        • 功能描述(P148)
        • 重要概念(P148)
        • 功能级API参考(P148)
        • 模块级API参考(P148)
          • rk_aiq_user_api2_amerge_SetAttrib(P148)
          • rk_aiq_user_api2_amerge_GetAttrib(P149)
        • 模块级API数据类型(P149)
          • merge_OpMode_t(P149)
          • MergeBaseFrame_t(P150)
          • MergeCurrCtlData_t(P150)
          • mMergeOECurveV21_t(P151)
          • mMergeMDCurveV21_t(P151)
          • mMergeAttrV21_t(P151)
          • mergeAttrV21_t(P152)
          • mLongFrameModeData_t(P152)
          • mMergeMDCurveV30Short_t(P153)
          • mShortFrameModeData_t(P153)
          • mMergeAttrV30_t(P153)
          • mergeAttrV30_t(P154)
          • mergeAttr_t(P154)
      • DRC(P155)
        • 功能描述(P155)
        • 重要概念(P155)
        • 功能级API参考(P155)
          • rk_aiq_uapi2_setDrcGain(P155)
          • rk_aiq_uapi2_getDrcGain(P155)
          • rk_aiq_uapi2_setDrcHiLit(P156)
          • rk_aiq_uapi2_getDrcHiLit(P157)
          • rk_aiq_uapi2_setDrcLocalData(P157)
          • rk_aiq_uapi2_getDrcLocalData(P158)
        • 模块级API参考(P159)
          • rk_aiq_user_api2_adrc_SetAttrib(P159)
          • rk_aiq_user_api2_adrc_GetAttrib(P160)
        • 模块级API数据类型(P160)
          • AdrcVersion_t(P160)
          • Drc_OpMode_t(P161)
          • mDrcGain_t(P161)
          • mDrcHiLit_t(P162)
          • mLocalDataV21_t(P162)
          • mLocalDataV30_t(P163)
          • mDrcLocalV21_t(P163)
          • mDrcLocalV30_t(P164)
          • CompressMode_t(P165)
          • mDrcCompress_t(P165)
          • mdrcAttr_V21_t(P165)
          • mdrcAttr_V30_t(P166)
          • DrcInfo_t(P167)
          • drcAttr_t(P167)
      • Noise Removal(P168)
        • 功能描述(P168)
        • 功能级API参考(P168)
          • rk_aiq_uapi2_setNRMode(P168)
          • rk_aiq_uapi2_getNRMode(P169)
          • rk_aiq_uapi2_setANRStrth(P169)
          • rk_aiq_uapi2_getANRStrth(P170)
          • rk_aiq_uapi2_setMSpaNRStrth(P170)
          • rk_aiq_uapi2_getMSpaNRStrth(P171)
          • rk_aiq_uapi2_setMTNRStrth(P171)
          • rk_aiq_uapi2_getMTNRStrth(P172)
        • 模块级API参考(P173)
          • rk_aiq_user_api2_abayer2dnrV2_SetAttrib(P173)
          • rk_aiq_user_api2_abayer2dnrV2_GetAttrib(P173)
          • rk_aiq_user_api2_abayer2dnrV2_SetStrength(P174)
          • rk_aiq_user_api2_abayer2dnrV2_GetStrength(P174)
          • rk_aiq_user_api2_abayertnrV2_SetAttrib(P175)
          • rk_aiq_user_api2_abayertnrV2_GetAttrib(P176)
          • rk_aiq_user_api2_abayertnrV2_SetStrength(P176)
          • rk_aiq_user_api2_abayertnrV2_GetStrength(P177)
          • rk_aiq_user_api2_aynrV3_SetAttrib(P178)
          • rk_aiq_user_api2_aynrV3_GetAttrib(P178)
          • rk_aiq_user_api2_aynrV3_SetStrength(P179)
          • rk_aiq_user_api2_aynrV3_GetStrength(P179)
          • rk_aiq_user_api2_acnrV2_SetAttrib(P180)
          • rk_aiq_user_api2_acnrV2_GetAttrib(P181)
          • rk_aiq_user_api2_acnrV2_SetStrength(P181)
          • rk_aiq_user_api2_acnrV2_GetStrength(P182)
        • 模块级API数据类型(P183)
          • rk_aiq_bayer2dnr_attrib_v2_t(P183)
          • Abayer2dnr_OPMode_V2_t(P183)
          • Abayer2dnr_Auto_Attr_V2_t(P184)
          • Abayer2dnr_Manual_Attr_V2_t(P184)
          • RK_Bayer2dnr_Params_V2_t(P185)
          • RK_Bayer2dnr_Params_V2_Select_t(P186)
          • RK_Bayer2dnr_Fix_V2_t(P187)
          • rk_aiq_bayer2dnr_strength_v2_t(P189)
          • rk_aiq_bayertnr_attrib_v2_t(P189)
          • Abayertnr_OPMode_V2_t(P189)
          • Abayertnr_Auto_Attr_V2_t(P190)
          • Abayertnr_Manual_Attr_V2_t(P190)
          • RK_Bayertnr_Params_V2_t(P191)
          • RK_Bayertnr_Params_V2_Select_t(P194)
          • RK_Bayertnr_Fix_V2_t(P196)
          • rk_aiq_bayertnr_strength_v2_t(P200)
          • rk_aiq_ynr_attrib_v3_t(P200)
          • Aynr_OPMode_V3_t(P200)
          • Aynr_Auto_Attr_V3_t(P201)
          • Aynr_Manual_Attr_V3_t(P201)
          • RK_YNR_Params_V3_t(P202)
          • RK_YNR_Params_V3_Select_t(P202)
          • RK_YNR_Fix_V3_t(P206)
          • rk_aiq_ynr_strength_v3_t(P211)
          • rk_aiq_cnr_attrib_v2_t(P211)
          • AcnrV2_OPMode_t(P212)
          • Acnr_Auto_Attr_V2_t(P212)
          • Acnr_Manual_Attr_V2_t(P213)
          • RK_CNR_Params_V2_t(P213)
          • RK_CNR_Params_V2_Select_t(P217)
          • RK_CNR_Fix_V2_t(P221)
          • rk_aiq_cnr_strength_v2_t(P224)
      • BLC(P224)
        • 功能描述(P224)
        • 功能级API参考(P224)
          • rk_aiq_user_api2_ablc_SetAttrib(P224)
          • rk_aiq_user_api2_ablc_GetAttrib(P225)
        • 模块级API数据类型(P226)
          • rk_aiq_blc_attrib_t(P226)
          • AblcOPMode_t(P226)
          • AblcParams_t(P227)
          • AblcManualAttr_t(P227)
      • Dehaze&Enhance(P228)
        • 功能描述(P228)
        • 功能级API参考(P228)
          • rk_aiq_uapi2_setMDehazeStrth(P228)
          • rk_aiq_uapi2_getMDehazeStrth(P229)
          • rk_aiq_uapi2_setMEnhanceStrth(P229)
          • rk_aiq_uapi2_getMEnhanceStrth(P230)
        • 模块级API参考(P231)
          • rk_aiq_user_api2_adehaze_setSwAttrib(P231)
          • rk_aiq_user_api2_adehaze_getSwAttrib(P231)
        • 模块级API数据类型(P232)
          • dehaze_api_mode_t(P232)
          • mDehazeDataV21_t(P232)
          • mDehaze_Setting_V21_t(P234)
          • mEnhanceDataV21_t(P235)
          • mEnhance_Setting_V21_t(P235)
          • mHistDataV21_t(P236)
          • mHist_setting_V21_t(P236)
          • mDehazeAttr_t(P237)
          • adehaze_sw_V2_t(P237)
      • CPROC(P238)
        • 功能描述(P238)
        • 功能级API参考(P238)
        • 模块级API参考(P238)
          • rk_aiq_user_api2_acp_SetAttrib(P238)
          • rk_aiq_user_api2_acp_GetAttrib(P239)
        • 模块级API数据类型(P239)
          • acp_attrib_t(P239)
      • IE(P240)
        • 功能描述(P240)
        • 功能级API参考(P240)
        • 模块级API参考(P240)
          • rk_aiq_user_api2_aie_SetAttrib(P240)
          • rk_aiq_user_api2_aie_GetAttrib(P241)
        • 模块级API数据类型(P241)
          • aie_attrib_t(P241)
          • rk_aiq_ie_effect_t(P242)
      • CSM(P242)
        • 功能描述(P242)
        • 功能级API参考(P242)
        • 模块级API参考(P242)
          • rk_aiq_user_api2_acsm_SetAttrib(P242)
          • rk_aiq_user_api2_aie_GetAttrib(P243)
        • 模块级API数据类型(P244)
          • rk_aiq_uapi_acsm_attrib_t(P244)
          • rk_aiq_acsm_params_t(P244)
      • Sharpen(P245)
        • 功能描述(P245)
        • 功能级API参考(P245)
          • rk_aiq_uapi2_setSharpness(P245)
          • rk_aiq_uapi2_getSharpness(P246)
        • 模块级API参考(P246)
          • rk_aiq_user_api2_asharpV4_SetAttrib(P246)
          • rk_aiq_user_api2_asharpV4_GetAttrib(P247)
          • rk_aiq_user_api2_asharpV4_SetStrength(P247)
          • rk_aiq_user_api2_asharpV4_GetStrength(P248)
        • 模块级API数据类型(P249)
          • rk_aiq_sharp_attrib_v4_t(P249)
          • Asharp4_OPMode_t(P249)
          • Asharp_Auto_Attr_V4_t(P250)
          • Asharp_Manual_Attr_V4_t(P250)
          • RK_SHARP_Params_V4_t(P251)
          • RK_SHARP_Params_V4_Select_t(P253)
          • RK_SHARP_Fix_V4_t(P255)
          • rk_aiq_sharp_strength_v4_t(P256)
      • Gamma(P257)
        • 功能描述(P257)
        • 功能级API参考(P257)
          • rk_aiq_uapi2_setGammaCoef(P257)
        • 功能级API数据类型(P258)
        • 模块级API参考(P258)
          • rk_aiq_user_api2_agamma_SetAttrib(P258)
          • rk_aiq_user_api2_agamma_GetAttrib(P259)
        • 模块级API数据类型(P259)
          • rk_aiq_gamma_op_mode_t(P259)
          • Agamma_api_Fast_t(P260)
          • GammaType_t(P260)
          • Agamma_api_manualV21_t(P261)
          • Agamma_api_manualV30_t(P261)
          • rk_aiq_gamma_attrV21_t(P262)
          • rk_aiq_gamma_attrV30_t(P262)
          • rk_aiq_gamma_attr_t(P262)
      • CCM(P263)
        • 功能描述(P263)
        • 功能级API参考(P263)
          • rk_aiq_uapi2_setCCMMode(P263)
          • rk_aiq_uapi2_getCCMMode(P264)
          • rk_aiq_uapi2_setMCcCoef(P264)
          • rk_aiq_uapi2_getMCcCoef(P265)
          • rk_aiq_uapi2_getACcmSat(P265)
          • rk_aiq_uapi2_getACcmMatrixName(P266)
        • 功能级API数据类型(P267)
          • opMode_t(P267)
          • rk_aiq_ccm_matrix_t(P267)
        • 模块级API参考(P267)
          • rk_aiq_user_api2_accm_SetAttrib(P268)
          • rk_aiq_user_api2_accm_GetAttrib(P268)
          • rk_aiq_user_api2_accm_QueryCcmInfo(P269)
        • 模块级API数据类型(P269)
          • rk_aiq_ccm_op_mode_t(P269)
          • rk_aiq_ccm_mccm_attrib_t(P270)
          • rk_aiq_ccm_color_inhibition_t(P270)
          • rk_aiq_ccm_color_saturation_t(P271)
          • rk_aiq_ccm_accm_attrib_t(P271)
          • rk_aiq_ccm_attrib_t(P272)
          • rk_aiq_ccm_querry_info_t(P272)
      • 3DLUT(P273)
        • 功能描述(P273)
        • 功能级API参考(P273)
          • rk_aiq_uapi2_setLut3dMode(P273)
          • rk_aiq_uapi2_getLut3dMode(P274)
          • rk_aiq_uapi2_setM3dLut(P275)
          • rk_aiq_uapi2_getM3dLut(P275)
          • rk_aiq_uapi2_getA3dLutStrth(P276)
          • rk_aiq_uapi2_getA3dLutName(P277)
        • 功能级API数据类型(P277)
          • opMode_t(P277)
          • rk_aiq_lut3d_table_t(P278)
        • 模块级API参考(P278)
          • rk_aiq_user_api2_a3dlut_SetAttrib(P278)
          • rk_aiq_user_api2_a3dlut_GetAttrib(P279)
          • rk_aiq_user_api2_a3dlut_Query3dlutInfo(P279)
        • 模块级API数据类型(P280)
          • rk_aiq_lut3d_op_mode_t(P280)
          • rk_aiq_lut3d_mlut3d_attrib_t(P280)
          • rk_aiq_lut3d_attrib_t(P281)
          • rk_aiq_lut3d_querry_info_t(P281)
      • LDCH(P282)
        • 功能描述(P282)
        • 功能级API参考(P282)
          • rk_aiq_uapi_setLdchEn(P282)
          • rk_aiq_uapi2_setLdchCorrectLevel(P283)
        • 模块级API参考(P283)
          • rk_aiq_user_api2_aldch_SetAttrib(P283)
          • rk_aiq_user_api2_aldch_GetAttrib(P284)
        • 模块级API数据类型(P285)
          • rk_aiq_ldch_attrib_t(P285)
      • DeBayer(P285)
        • 功能描述(P285)
        • 模块级API参考(P285)
          • rk_aiq_user_api_adebayer_SetAttrib(P285)
          • rk_aiq_user_api_adebayer_GetAttrib(P286)
        • 数据类型(P286)
          • rk_aiq_debayer_op_mode_t(P286)
          • adebayer_attrib_manual_t(P287)
          • adebayer_attrib_auto_t(P288)
          • adebayer_attrib_t(P289)
      • DPCC(P290)
        • 功能描述(P290)
        • 模块级API参考(P290)
          • rk_aiq_user_api2_adpcc_SetAttrib(P290)
          • rk_aiq_user_api2_adpcc_GetAttrib(P290)
        • 数据类型(P291)
          • rk_aiq_dpcc_attrib_V20_t(P291)
          • AdpccOPMode_t(P291)
          • Adpcc_basic_params_select_t(P292)
          • Adpcc_basic_params_t(P294)
          • Adpcc_bpt_params_t(P294)
          • dpcc_pdaf_point_t(P295)
          • Adpcc_pdaf_params_t(P295)
          • CalibDb_Dpcc_Fast_Mode_t(P295)
          • CalibDb_Dpcc_Sensor_t(P296)
          • Adpcc_bpt_params_select_t(P297)
          • Adpcc_pdaf_params_select_t(P297)
          • Adpcc_Auto_Attr_t(P297)
          • Adpcc_fast_mode_attr_t(P298)
          • Adpcc_sensor_dpcc_attr_t(P298)
          • Adpcc_Manual_Attr_t(P299)
          • Adpcc_onfly_cfg_t(P299)
          • Adpcc_onfly_mode_t(P300)
          • CalibDb_Dpcc_Pdaf_t(P300)
          • CalibDb_Dpcc_set_RK_t(P301)
          • CalibDb_Dpcc_set_LC_t(P301)
          • CalibDb_Dpcc_set_PG_t(P302)
          • CalibDb_Dpcc_set_RND_t(P302)
          • CalibDb_Dpcc_set_RG_t(P303)
          • CalibDb_Dpcc_set_RO_t(P303)
          • CalibDb_Dpcc_set_t(P304)
          • CalibDb_Dpcc_Expert_Mode_t(P305)
          • CalibDb_Dpcc_t(P305)
          • rk_aiq_dpcc_attrib_t(P306)
      • LSC(P307)
        • 功能描述(P307)
        • 模块级API参考(P307)
          • rk_aiq_user_api2_alsc_SetAttrib(P307)
          • rk_aiq_user_api2_alsc_GetAttrib(P307)
        • 数据类型(P308)
          • rk_aiq_lsc_attrib_t(P308)
          • rk_aiq_lsc_op_mode_t(P308)
          • rk_aiq_lsc_table_t(P309)
      • GIC(P310)
        • 功能描述(P310)
        • 模块级API参考(P310)
          • rk_aiq_user_api2_agic_v2_SetAttrib(P310)
          • rk_aiq_user_api2_agic_v2_GetAttrib(P311)
        • 模块级API数据类型(P311)
          • rkaiq_gic_api_op_mode_t(P311)
          • rkaiq_gic_v2_param_selected_t(P312)
          • rkaiq_gic_v2_api_attr_t(P313)
    • 统计信息(P314)
      • 概述(P314)
      • 功能描述(P315)
        • AE统计信息(P315)
          • 基于raw图的AE统计(P315)
        • AWB统计信息(P315)
        • AF统计信息(P315)
      • API参考(P316)
        • rk_aiq_uapi_sysctl_get3AStatsBlk(P316)
        • rk_aiq_uapi_sysctl_release3AStatsRef(P316)
      • 数据类型(P317)
        • rk_aiq_isp_stats_t(P317)
        • RKAiqAecStats_t(P318)
          • RKAiqAecExpInfo_t(P318)
            • RkAiqExpParamComb_t(P319)
            • RKAiqExpI2cParam_t(P320)
            • RkAiqIrisParamComb_t(P321)
          • RkAiqAecHwStatsRes_t(P322)
            • Aec_Stat_Res_t(P322)
            • rawaebig_stat(P323)
            • rawaelite_stat(P324)
            • rawhist_stat(P325)
        • rk_aiq_isp_awb_stats2_v3x_t(P325)
        • rk_aiq_awb_stat_wp_res_light_v201_t(P326)
        • rk_aiq_awb_stat_wp_res_v201_t(P327)
        • rk_aiq_awb_stat_blk_res_v201_t(P327)
        • rk_aiq_af_algo_stat_v30_t(P328)
    • Debug & FAQ(P329)
      • 如何获取版本号(P329)
        • 获取简略版本信息(P329)
        • 获取完整版本信息(P329)
        • 版本号匹配规则说明(P330)
      • AIQ Log(P331)
        • 概述(P331)
        • AE(P332)
          • 配置指南(P332)
          • log解读(P333)
        • AWB(P338)
          • 配置指南(P338)
          • log解读(P339)
        • AF(P339)
          • 配置指南(P339)
          • log解读(P340)
        • MERGE(P340)
          • 配置指南(P340)
          • log解读(P341)
        • DRC(P343)
          • 配置指南(P343)
          • log解读(P344)
        • NR&Sharp(P344)
          • 配置指南(P344)
          • log解读(P345)
        • Dhz&Ehz(P345)
          • 配置指南(P345)
          • Log解读(P346)
        • CamHW(P349)
          • 配置指南(P349)
          • log解读(P351)
      • 如何采集Raw/YUV图像(P353)
        • Raw数据存储格式(P353)
          • 非紧凑型存储格式(P353)
          • 紧凑型存储格式(P353)
          • RK-RAW V1.0(P353)
          • RK-RAW V2.0(P354)
        • Raw/YUV数据采集方式(P356)
    • 错误码(P356)
    • 缩略语(P356)

在线预览​

若预览无法显示,请直接下载 PDF 后用本地阅读器打开。


总体概要​

结构图​

RK3588 VI作为视频输入模块总称,其中包含:

接口以及数据采集部分:C/DPHY、DVP、CSI、VICAP图像处理部分:ISP-0,ISP-1、FEC-0、FEC-1

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

工作模式​

单ISP单CIS(cmos image sensor):

Raw直通/在线模式:结构图中蓝色箭头指示数据流1.0通路Raw回读/离线模式:结构图中橙色箭头指示数据流1.1,1.2通路

双ISP 2合1模式 for 单CIS:

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

多CIS :

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

性能及约束概述​

支持分辨率及吞吐率:

工作模式吞吐率支持最大分辨率支持最小分辨率
单ISP单CIS16Mega@30fps4672x3504208x128
双ISP 2合1单CIS32Mega@30fps8064x6048\

支持Raw12数据输入。ISP30支持处理Raw12数据。Raw14数据输入将低位丢弃成Raw12处理。位宽不足12bit图像数据输入将低位补0成Raw12处理。支持Bayer color CIS、Mono CIS。支持3合1、2合1 多帧HDR。支持HDR CIS 类型如下:

Multi exposure HDRRK Platform supportCIS应用
Sequential / Framebase HDRISP20: RV1109/RV1126 etc ISP21: RK356X etc ISP30: RK3588OV4689IPC/CVR
Staggered / DOL HDRISP20: RV1109/RV1126 etc ISP21: RK356X etc ISP30: RK3588OS04A10 IMX464 AR0239IPC/CVR
DCG HDRISP20: RV1109/RV1126 etc ISP21: RK356X etc ISP30: RK3588OS04A10 IMX585IPC/CVR
SME HDRNIMX378消费类
BME HDRNIMX258消费类
QBC HDRNOV50C40 IMX586消费类
Lateral overflow HDRNAR0821IPC
Splite-diode pixel HDRNOV10640CVR

Raw直通/在线模式下,ISP30数据输出至DDR通知后级的最小时延:约图像帧传输时间/15。ISP时分复用方式下,单ISP最多支持4路数据源输入。Raw直通/在线模式下,最小图像帧消隐136行,最小图像行消隐 16 像素

概述​

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

ISP30包括硬件算法实现及软件逻辑控制部分,RkAiq即为软件逻辑控制部分的实现。

RkAiq软件模块主要实现的功能为:从ISP驱动获取图像统计,结合IQ Tuning参数,使用一系列算法计算出新的ISP、Sensor等硬件参数,不断迭代该过程,最终达到最优的图像效果。

功能描述​

图1-1 ISP21 系统框图

ISP30总体软硬件框图如图1-1所示。Sensor输出数据流给ISP HW,ISP HW再输出经过一系列图像处理算法后的图像。RkAiq不断从ISP HW获取统计数据,并经过3A等算法生成新的参数反馈给各硬件模块。Tuning tool可在线实时调试参数,调试好后可保存生成新的iq参数文件。

RkAiq架构​

图1-2 RkAiq总体架构图

ISP30 RkAiq软件设计思路如图1-2所示。主要分成以下四个部分:

  1. RkAiq lib 动态库。该库包含了主要的逻辑部分,负责从驱动获取统计,并传送给各个 算法库。2. Integrated algo libs。Rk提供的静态算法库,已默认注册到RkAiq lib动态库。3. customer 3A libs。客户可根据算法库接口定义实现自己的3A算法库,或者其他算法库。将自定义算法库注册给RkAiq lib动态库后,可根据提供的接口选择跑自定义库还是跑Rk库。4. IQ file。iq tuning结果文件,保存的是算法相关参数以及CIS等一些系统静态参数。

软件架构​

图1-3 软件架构框图

ISP30 软件框图如图1-3所示。主要分成以下三层:

  1. 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可直接集成进应用。

  1. user layer。用户应用层。

软件流程​

图1-4 流程图

RkAiq接口调用流程如图1-4所示。图中虚线框部分为可选部分,蓝色字体部分为应用需要配合RkAiq流程所作的配置。

configure media pipeline。可选项,配置ISP30 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区分。RKAiq提供的模块级API支持同步以及异步模式,功能级API默认采用模块级API的同步模式进行封装。同步模式(Sync):该模式为阻塞式API,AIQ基本以视频帧为颗粒度来进行参数的更新,同步模式下,调用API的线程有可能被阻塞的时间 <= 视频帧周期时间。异步模式(ASync):该模式为非阻塞式API,AIQ框架会将API设置参数存储在内部参数缓冲中,待最近一个ISP参数设置时刻在设置给硬件。模块级API同步异步方式使用说明模块级API的第2个形参结构体一般为设置参数集合,称为属性结构体。该结构体内部rk_aiq_uapi_sync_t 成员可以配置当前API的调用模式,详细参考以下数据类型定义:

rk_aiq_uapi_sync_t​

模块sync模式

typedef struct rk_aiq_uapi_sync_s {
rk_aiq_uapi_mode_sync_e sync_mode;
bool done;
} rk_aiq_uapi_sync_t;
成员名称描述
sync mode _@setAttrib:参数更新模式的标志; RK AIQ UAPI MODE DEFAULT: 默认是同步模式. _ _ _ _ RK AIQ UAPI MODE SYNC: 同步模式. _ _ _ _ RK AIQ UAPI MODE ASYNC: 异步模式. _ _ _ _ @getAttrib: RK AIQ UAPI MODE DEFAULT: 默认获取上次设置的属性(sync mode == _ _ _ _ _ RK AIQ UAPI MODE ASYNC),可能还没有生效. _ _ _ _ RK AIQ UAPI MODE SYNC: 获取当前使用的属性. _ _ _ _ RK AIQ UAPI MODE ASYNC: 与 RK AIQ UAPI MODE DEFAULT 相同. _ _ _ _ _ _ _ _
done@done (parsm out): 参数更新状态的标志, true 表示参数已更新,false 表示参数尚未更新。

AIQ API参考代码按照模块进行划分,单独提供API示例,建议客户使用时可以直接参考rkisp_demo/demo/sample

文件名模块
sample 3dlut module.cpp _ _3DLUT
sample ccm module.cpp _ _CCM
sample csm module.cpp _ _CSM
sample ablc module.cpp _ _BLC
sample abayer2dnr module.cpp _ _BayerNR 2D
sample abayertnr module.cpp _ _BayerNR 3D
sample aynr module.cpp _ _YNR
sample acnr module.cpp _ _CNR
sample asharp module.cpp _ _Sharp
sample amerge module.cpp _ _Merge(HDR)
sample adrc module.cpp _ _DRC
sample adehaze module.cpp _ _Dehaze & Enhance
sample agamma module.cpp _ _Gamma
sample awb module.cpp _ _AWB
sample ae module.cpp _ _AE
sample af module.cpp _ _AF

系统控制​

功能概述​

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

API参考​

rk_aiq_uapi2_sysctl_preInit​

【描述】初始化AIQ前,预设值一些参数,如使用的IQ文件等。

【语法】

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

【参数】

参数名称描述输入/输出
sns ent name _ _sensor entity name输入
modeISP工作模式输入
force iq file _ _强制使用的 iq 文件输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

【注意】

应先于rk_aiq_uapi2_sysctl_init 调用参数 mode 仅用来选择 IQ 文件,并不配置ISP工作模式,工作模式需要在rk_aiq_uapi2_sysctl_prepare 中配置。如果参数 force_iq_file 非空,那么mode参数无效参数 force_iq_file 为全路径该函数不是必须,仅用于 rk_aiq_uapi2_sysctl_init 前更改一些默认的设置

rk_aiq_uapi2_sysctl_preInit_scene​

【描述】初始化AIQ前,选择IQ场景参数。

【语法】

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

【参数】

参数名称描述输入/输出
sns ent name _ _sensor entity name输入
main scene _主场景,值在IQ文件中定义输入
sub scene _子场景,值在IQ文件中定义输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

【注意】

应先于rk_aiq_uapi2_sysctl_init 调用main_scene 需要根据 IQ 文件中主场景数组来选择,默认一般是 “normal” sub_scene 需要根据 IQ 文件中主场景里的子场景数组来选择,默认一般是 “day”由于目前默认选择的场景是 normal-day,如果要跑 hdr-day,或者其他自定义模式,则需要调用该函数进行指定,否则IQ参数可能不正确

rk_aiq_uapi2_sysctl_switch_scene​

【描述】初始化AIQ后,切换IQ场景参数。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ 上下文指针输入
main scene _主场景,值在IQ文件中定义输入
sub scene _子场景,值在IQ文件中定义输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

【注意】

在 rk_aiq_uapi2_sysctl_init 后调用main_scene 需要根据 IQ 文件中主场景数组来选择sub_scene 需要根据 IQ 文件中主场景里的子场景数组来选择该接口涉及IQ动态切换,目前测试不充分,可能出现非预期结果,谨慎使用

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库文件:librkaiq.so

【注意】

应先于其他函数调用。

rk_aiq_uapi2_sysctl_deinit​

【描述】反初始化AIQ上下文环境。

【语法】

void
rk_aiq_uapi2_sysctl_deinit( rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入

【返回值】

返回值描述
无无

【需求】

头文件:rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

【注意】

不应在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);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
widthsensor输出的分辨率宽度,仅用于校验输入
heightsensor输出的分辨率高度,仅用于校验输入
modeISP Pipeline工作模式(NORMAL/HDR)输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

【注意】

应在rk_aiq_uapi2_sysctl_start函数之前调用。如果需要在rk_aiq_uapi2_sysctl_start之后调用本函数,那么先调用rk_aiq_uapi2_sysctl_stop函数,再调用rk_aiq_uapi2_sysctl_prepare重新准备运行环境。

rk_aiq_uapi2_sysctl_start​

【描述】启动AIQ控制系统。AIQ启动后,会不断的从ISP驱动获取3A统计信息,运行3A算法,并应用计算出的新参数。

【语法】

XCamReturn
rk_aiq_uapi2_sysctl_start(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

【注意】

应在rk_aiq_uapi2_sysctl_prepare函数之后调用。

rk_aiq_uapi2_sysctl_stop​

【描述】停止AIQ控制系统。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
keep ext hw st _ _ _stop之后,外部设备设如(ircut/cpsl)的状态是否保持不变输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

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库文件:librkaiq.so

rk_aiq_uapi2_sysctl_enumStaticMetas​

【描述】枚举AIQ获取到的静态信息。

【语法】

XCamReturn
rk_aiq_uapi2_sysctl_enumStaticMetas(int index, rk_aiq_static_info_t*
static_info);

【参数】

参数名称描述输入/输出
index索引号,从0开始输入
static info _静态信息结构体指针输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

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);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
algo type _要操作的算法模块类型输入
lib id _算法库标识ID输入
enable状态设置输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

【注意】

如果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);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
algo type _要操作的算法模块类型输入
lib id _算法库标识ID输入

【返回值】

返回值描述
false关闭状态
true使能状态

【需求】

头文件:rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

rk_aiq_uapi2_sysctl_getEnabledAxlibCtx​

【描述】获取使能算法库的上下文结构体。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
algo type _要操作的算法模块类型输入

【返回值】

返回值描述
NULL获取失败
非NULL获取成功

【需求】

头文件:rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

【注意】

返回的算法上下文结构体将被内部私有函数使用。对于用户自定义的算法库,该函数应在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);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
cfg补光灯配置结构体指针输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

rk_aiq_uapi2_sysctl_getCpsLtInfo​

【描述】获取补光灯控制信息。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
info补光灯配置结构体指针输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

rk_aiq_uapi2_sysctl_queryCpsLtCap​

【描述】查询补光灯的支持能力。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
cap补光灯支持能力查询结构体指针输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

rk_aiq_uapi2_sysctl_getBindedSnsEntNmByVd​

【描述】查询video结点所对应的sensor entity name。

【语法】

const char* rk_aiq_uapi2_sysctl_getBindedSnsEntNmByVd(const char* vd);

【参数】

参数名称描述输入/输出
vdvideo路径,如/dev/video20输入

【返回值】

返回值描述
sensor entity name字符串指针

【注意】

参数必须为ISPP scale结点路径。

【需求】

头文件:rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

rk_aiq_uapi2_sysctl_updateIq​

【描述】动态更新当前所使用的iq参数文件,不需要停止数据流。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
iqfile新的iq文件输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【注意】

iqfile 需要为全路径。更新iq参数,并不意味着能切换运行模式,如需要切换hdr与normal,并不能通过更新iq文件实现;但某些功能的切换却可以通过iq参数的不同配置来实现,如日、夜切换可完全通过iq配置来实现切换。切换iq时,iq中的配置参数将会覆盖掉用户API的设置。如AWB模块,在iq中可配置手动、自动模式,那么执行该函数后,不管当前AWB处于何种模式,最终都会被新iq中的默认配置覆盖掉。

【需求】

头文件:rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

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上下文指针输入
rectcrop参数结构体指针输出

【返回值】

返回值描述
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;
成员名称描述
lefthorizontal output offset
topvertical output offset
widthhorizontal output size
heightvertical output size

离线帧处理​

概述​

RKAIQ提供离线RAW帧处理功能,即RK自定义的RAW格式文件经RKAIQ解析后送ISP处理,输出为可显示正常效果的图像的功能。

注意:离线帧处理功能还未测试通过。

功能框图​

离线帧处理框图

功能描述​

支持RK-RAW文件输入。使用文件输入接口,调用进程将被阻塞,直到文件处理完成并成功输出。支持RK-RAW buffer输入,异步处理模式。使用buffer输入接口,调用进程不会阻塞,buffer处理完成后将调用回调函数(如有注册回调函数)。支持RK-RAW buffer输入,同步处理模式。使用buffer输入接口,调用进程将被阻塞,直到buffer处理完成并成功输出。

RK-RAW格式说明​

参见《RK 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文件的加载路径下。

参考示例​

离线帧处理API的使用方法请参考rkisp_demo,路径为YOUR_SDK_DIR/external/camera_engine_rkaiq/rkisp_demo。

Camera组​

概述​

如环视等应用场景,需要将多个Camera归为一组做统一管理,曝光等参数需要统一设置等。Camera组相关API,可通过创建组,将多个Camera归类为同一组。Camera组API基于单Camera的AIQ API实现,如无特殊说明,适用于单个AIQ的API也同样适用于Camera组,AIQ内部实现会根据传递的Context类型将请求分发给Camera组或者单Camera。

rk_aiq_uapi2_camgroup_create​

【描述】创建Camera组,会为每个Camera创建独立的 AIQ ctx,然后交给 Group Ctx 管理

【语法】

rk_aiq_camgroup_ctx_t*
rk_aiq_uapi2_camgroup_create (rk_aiq_camgroup_instance_cfg_t* cfg);

【参数】

参数名称描述输入/输出
cfg配置参数输入

【返回值】

返回值描述
rk aiq camgroup ctx t* _ _ _ _组运行环境
NULL失败

【需求】

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

【注意】

与 rk_aiq_uapi2_sysctl_init 相区分,rk_aiq_uapi2_sysctl_init 创建单camera的 AIQ 运行环境。使用 rk_aiq_uapi2_sysctl_init 创建运行环境的sensor entity,不得再用rk_aiq_uapi2_camgroup_create 创建组运行环境,反之亦然。由于默认选择的IQ场景是 normal-day,如果需要为HDR或者其他模式,需要使用rk_aiq_uapi2_sysctl_preInit_scene 进行预先设置

rk_aiq_uapi2_camgroup_prepare​

【描述】根据选择的pipeline模式,生成初始化参数以及建立pipeline。会调用每个Camera对应AIQ ctx的rk_aiq_uapi2_sysctl_prepare。

【语法】

XCamReturn
rk_aiq_uapi2_camgroup_prepare (rk_aiq_camgroup_ctx_t* camgroup_ctx,
rk_aiq_working_mode_t mode);

【参数】

参数名称描述输入/输出
camgroup ctx _组运行环境输入
modepipeline工作模式输入

【返回值】

返回值描述
0成功
非0参见错误码

【需求】头文件:rk_aiq_user_api2_camgroup.h库文件:librkaiq.so

rk_aiq_uapi2_camgroup_start​

【描述】运行Camera组。会调用每个Camera对应AIQ ctx的 rk_aiq_uapi2_sysctl_start。

【语法】

XCamReturn
rk_aiq_uapi2_camgroup_start (rk_aiq_camgroup_ctx_t* camgroup_ctx);

【参数】

参数名称描述输入/输出
camgroup ctx _组运行环境输入

【返回值】

返回值描述
0成功
非0失败,参见错误码

【需求】

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

rk_aiq_uapi2_camgroup_stop​

【描述】停止Camera组。会调用每个Camera对应AIQ ctx的 rk_aiq_uapi2_sysctl_stop。

【语法】

XCamReturn
rk_aiq_uapi2_camgroup_stop (rk_aiq_camgroup_ctx_t* camgroup_ctx);

【参数】

参数名称描述输入/输出
camgroup ctx _组运行环境输入

【返回值】

返回值描述
0成功
非0失败,参见错误码

【需求】

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

rk_aiq_uapi2_camgroup_destroy​

【描述】销毁Camera组。会调用每个Camera对应AIQ ctx的 rk_aiq_uapi2_sysctl_deinit。

【语法】

XCamReturn
rk_aiq_uapi2_camgroup_destroy (rk_aiq_camgroup_ctx_t* camgroup_ctx);

【参数】

参数名称描述输入/输出
camgroup ctx _组运行环境输入

【返回值】

返回值描述
0成功
非0失败,参见错误码

【需求】

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

rk_aiq_uapi2_camgroup_getOverlapMap​

【描述】环视应用场景下,从CameraGroup上下文获取各camera的重叠区域信息。

【语法】

struct RK_PS_SrcOverlapMap*
rk_aiq_uapi2_camgroup_getOverlapMap (rk_aiq_camgroup_ctx_t* camgroup_ctx);

【参数】

参数名称描述输入/输出
camgroup ctx _组运行环境输入

【返回值】

返回值描述
struct RK PS SrcOverlapMap* _ _重叠区域信息结构体指针
NULL失败

【需求】

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

rk_aiq_uapi2_camgroup_getOverlapMap​

【描述】环视应用场景下,从文件获取各camera的重叠区域信息。

【语法】

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

【参数】

参数名称描述输入/输出
map file _存储重叠信息的文件输入
overlapMap存储获取到的重叠信息输入,输出

【返回值】

返回值描述
0成功
非0失败,参见错误码

【需求】

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

rk_aiq_uapi2_camgroup_getAiqCtxBySnsNm​

【描述】通过组内 Sensor 实体名获取对应的单个Camera的AIQ上下文。

【语法】

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

【参数】

参数名称描述输入/输出
camgroup ctx _组运行环境输入
sns entity name _ _组内sensor实体名称输入

【返回值】

返回值描述
rk aiq sys ctx t* _ _ _ _获取到的AIQ运行环境
NULL失败

【需求】

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

rk_aiq_uapi2_camgroup_getCamInfos​

【描述】获取组内camera的信息,如Sensor实体名称等。

【语法】

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

【参数】

参数名称描述输入/输出
camgroup ctx _组运行环境输入
camInfos获取到的组内camera信息输出

【返回值】

返回值描述
0成功
非0失败,参见错误码

【需求】

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

rk_aiq_uapi2_camgroup_bind​

【描述】预留接口,未实现。

rk_aiq_uapi2_camgroup_unbind​

【描述】预留接口,未实现。

数据结构​

rk_aiq_camgroup_instance_cfg_t​

Camera Group 配置参数

typedef struct rk_aiq_camgroup_instance_cfg_s {
const char* sns_ent_nm_array[RK_AIQ_CAM_GROUP_MAX_CAMS];
int sns_num;
const char* config_file_dir;
/* followings are relative path to config_file_dir */
const char* single_iq_file;
const char* group_iq_file;
const char* overlap_map_file;
} rk_aiq_camgroup_instance_cfg_t;
成员名称描述
sns ent nm array _ _ _需要加入组管理的Sensor实体 数组
sns num _需要加入组管理的Sensor实体个数
config file dir _ _指定IQ文件路径
single iq file _ _指定IQ文件名称,可为NULL,NULL时由AIQ自动选择
group iq file _ _指定Camera组IQ配置文件,目前暂不使用
overlap map file _ _指定Camera重叠信息文件 ,可为NULL

rk_aiq_camgroup_camInfos_t​

Camera 组内各Camera信息

typedef struct rk_aiq_camgroup_camInfos_s {
int valid_sns_num;
const char* sns_ent_nm[RK_AIQ_CAM_GROUP_MAX_CAMS];
int sns_camPhyId[RK_AIQ_CAM_GROUP_MAX_CAMS];
} rk_aiq_camgroup_camInfos_t;
成员名称描述
valid sns num _ _组内包含的Sensor实体数量
sns ent nm _ _组内包含的Sensor实体名称数组
sns camPhyId _组内包含的Sensor实体对应的物理ID数组

struct RK_PS_SrcOverlapMap​

定义Camera重叠区域信息

struct RK_PS_SrcOverlapMap
{
char versionInfo[64];
RK_PS_SrcOverlapPosition srcOverlapPositon[8];
unsigned char overlapMap[15 * 15 * 8];
};
成员名称描述
versionInfo版本信息
srcOverlapPositon各Camera的安装时的旋转方向,可为0,90,180,270度
overlapMap8个camera每个统计块的重叠信息,具体如下: 每个相机的统计数据是15*15列,总共8个相机(编号07),实际不足8个相 机的,相应位置用0补齐。按行存储,存完8个相机的第一行后,紧接着存 第二行。以此类推。 取值范围为0255,完全不重叠则值为0,完全重叠则值为255,部分重叠 根据占比进行插值 camera0 row0; camera1 row0; camera2 row0; camera3 row0; camera4 row0; camera5 row0; camera6 row0; camera7 row0; camera0 row1; camera1 row1; camera2 row1; camera3 row1; camera4 row1; camera5 row1; camera6 row1; camera7 row1; ...... camera0 row14; camera1 row14; camera2 row14; camera3 row14; camera4 row14; camera5 row14; camera6 row14; camera7 row14;

AE​

概述​

AE 模块实现的功能是:根据自动测光系统获得当前图像的曝光量,再自动配置镜头光圈、 sensor 快门及增益来获得最佳的图像质量。

重要概念​

曝光时间: sensor 积累电荷的时间,是 sensor pixel 从开始曝光到电量被读出的这段时间。曝光增益:对 sensor 的输出电荷的总的放大系数,一般有数字增益和模拟增益,模拟增益引入的噪声会稍小,所以一般优先用模拟增益。光圈:光圈是镜头中可以改变通光孔径大小的机械装置。抗闪烁:由于电灯的电源工频与 sensor 的帧率不匹配而导致的画面闪烁,一般通过限定曝光时间和修改 sensor 的帧率来达到抗闪烁的效果。

功能描述​

AE 模块由AE 统计信息及 AE 控制策略的算法两部分组成。

功能级API参考​

rk_aiq_uapi2_setAeLock​

【描述】

设置ae曝光锁定功能

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
on锁定使能输入

【返回值】

返回值描述
0成功
非0

rk_aiq_uapi2_setExpMode​

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

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
mode曝光模式输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【注意】

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

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getExpMode​

【描述】获取曝光模式。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
mode曝光模式输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setManualExp​

【描述】使用手动曝光模式,并且设置增益和曝光时间。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
gain曝光增益输入
time曝光时间输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setExpGainRange​

【描述】设置增益范围。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
gain曝光增益范围输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getExpGainRange​

【描述】获取增益范围。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
gain曝光增益范围输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setExpTimeRange​

【描述】设置曝光时间范围。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
time曝光时间范围输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getExpTimeRange​

【描述】获取曝光时间范围。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
time曝光时间范围输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setBLCMode​

【描述】背光补偿开关、区域设置。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
on开关输入
areaType补偿区域选择输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【注意】

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

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setBLCStrength​

【描述】设置暗区提升强度。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
strength提升强度,范围[1,100]输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【注意】

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

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setHLCMode​

【描述】强光抑制开关。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
on开关输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【注意】

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

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setHLCStrength​

【描述】设置强光抑制强度。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
strength抑制强度,范围[1,100]输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【注意】

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

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setAntiFlickerEn​

【描述】设置抗工频闪烁开关

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
on功能开关参数输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getAntiFlickerEn​

【描述】设置抗工频闪烁开关

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
on功能开关参数输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setAntiFlickerMode​

【描述】设置抗闪模式。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
mode抗闪模式输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getAntiFlickerMode​

【描述】获取抗闪模式。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
mode抗闪模式输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setExpPwrLineFreqMode​

【描述】设置抗闪频率。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
freq抗闪频率输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getExpPwrLineFreqMode​

【描述】获取抗闪频率。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
freq抗闪频率输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

功能级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);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
expSwAttrAE公共功能控制参数结构体输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h库文件:librkaiq.so

【举例】

设置手动曝光属性

曝光分量包括sensor曝光时间、sensor曝光增益、isp数字增益。设置手动曝光模式之后,还需要分别设置各曝光分量的手动状态(ManualGainEn、ManualTimeEn、ManualIspDgainEn)及其对应手动值。手动曝光模式下,要求所有曝光分量为手动状态,设置的各曝光分量的值,会受到sensor及镜头的限制。如设置的曝光分量值超过sensor的限制,算法内部会自动进行校正。

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

设置自动曝光属性

自动曝光可以设置曝光分量的作用范围,若设置的曝光分量范围超过sensor的限制,算法内部会自动进行校正。

【注】设置曝光分量range的参数与获取曝光分量range的参数不同

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

设置半手动曝光属性

半手动曝光是曝光分量(sensor曝光时间、sensor曝光增益、isp数字增益)中至少有一个曝光分量为手动状态,其他曝光分量为自动状态,否则将报错退出。例如,为了实现曝光增益手动,曝光时间、isp数字增益自动的半自动曝光功能,有以下两种实现方式:方式一,在手动曝光模式中,将曝光时间、isp数字增益的手动使能设为false,设置曝光增益的手动使能为true,并设置对应手动值;方式二,在自动曝光模式下,将曝光增益的最大最小值均设为需要固定的值。

【注】方式一:HDR曝光模式下,所有帧的手动行为是同步的(即各帧的对应曝光分量手动行为一致),同时需保证长帧最大曝光大于短帧最大曝光,长帧最小曝光大于短帧最小曝光;方式二:HDR曝光模式下,各帧的手动行为允许不一致(如短帧增益手动,长帧增益可为自动),同时需保证长帧最大曝光大于短帧最大曝光,长帧最小曝光大于短帧最小曝光。

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

设置固定帧率或自动降帧

固定帧率模式下,允许设置的帧率不得超过驱动定义的最大帧率,如超过会有log提醒,且帧率设置失效。

//set fixed framemode
Uapi_ExpSwAttrV2_t expSwAttr;
ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
expSwAttr.stAuto.stFrmRate.isFpsFix = true;
expSwAttr.stAuto.stFrmRate.FpsValue = 25; /*fps = 25*/
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);
//set auto framemode
Uapi_ExpSwAttrV2_t expSwAttr;
ret = rk_aiq_user_api2_ae_getExpSwAttr(ctx, &expSwAttr);
expSwAttr.stAuto.stFrmRate.isFpsFix = false;
/*一般自动降帧模式由tuning人员事先配置好最低帧率和切换帧率对应的gain值*/
ret = rk_aiq_user_api2_ae_setExpSwAttr(ctx, expSwAttr);

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

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

设置抗闪功能

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

设置AE权重

设置15X15权重,算法内部根据硬件实际分块规格,进行权重的压缩。目前有两种设置权重的方式:方式一直接修改json中的权重;方式二:通过stadvanced修改权重,若消除使能,即可还原回json中的权重(推荐使用这种方式)。

针对人脸应用建议使用方式二,出现人脸时expSwAttr.stAdvanced.enable = true,使用expSwAttr.stAdvanced结构体中的权重,人脸消失时expSwAttr.stAdvanced.enable = false,使用原权重。

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

rk_aiq_user_api2_ae_getExpSwAttr​

【描述】获取 AE 曝光软件属性。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
pExpSwAttrAE曝光软件属性结构体指针输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h库文件:librkaiq.so

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);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
linAeRouteAttrAE曝光分配策略结构体输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h库文件:librkaiq.so

【举例】

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

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);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
pLinAeRouteAttrAE曝光分配策略结构体指针输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h库文件:librkaiq.so

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);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
hdrAeRouteAttrAE曝光分配策略结构体输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h库文件:librkaiq.so

【举例】Uapi_HdrAeRouteAttr_t stHdrRoute;

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

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);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
pHdrAeRouteAttrAE曝光分配策略结构体指针输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h库文件:librkaiq.so

rk_aiq_user_api2_ae_setLinExpAttr​

【描述】设置AE线性模式曝光参数。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
linExpAttrAE曝光参数结构体输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h库文件:librkaiq.so

【举例】

设置AE线性模式曝光参数,包括但不局限于:设置调整亮度力度Evbias,设置背光补偿功能BackLightCtrl,设置强光抑制功能OverExpCtrl等。值得注意的是,背光补偿和强光抑制不能同时使能。

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

rk_aiq_user_api2_ae_getLinExpAttr​

【描述】获取AE线性模式曝光参数。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
pLinExpAttrAE曝光参数结构体指针输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h库文件:librkaiq.so

rk_aiq_user_api2_ae_setHdrExpAttr​

【描述】设置AE HDR模式曝光参数。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
hdrExpAttrAE曝光参数结构体输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h库文件:librkaiq.so

【举例】

设置AE HDR模式曝光参数,包括但不局限于:设置曝光比为手动或自动,调整亮度力度Evbias。

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

rk_aiq_user_api2_ae_getHdrExpAttr​

【描述】获取AE HDR模式曝光参数。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
pHdrExpAttrAE曝光参数结构体指针输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h库文件:librkaiq.so

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);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
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);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
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库文件:librkaiq.so

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);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
ExpWin窗口属性参数输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h库文件:librkaiq.so

【举例】

根据人脸位置修改AE统计坐标,实现针对人脸区域进行亮度统计

【注】设置统计坐标时,需保证ExpWin.h_offs+ExpWin.h_size<=pic_width,ExpWin.v_offs+ExpWin.v_size<=pic_height

Uapi_ExpWin_t ExpWin;
//假设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);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
ExpWin窗口属性参数输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h库文件:librkaiq.so

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);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
pExpResInfoAE内部状态信息结构体指针输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_ae.h、rk_aiq_uapi2_ae_int.h库文件:librkaiq.so

模块级API数据类型​

Uapi_ExpSwAttr_t​

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

typedef struct Uapi_ExpSwAttrV2_s {
rk_aiq_uapi_sync_t                 sync;
uint8_t                           Enable;
CalibDb_CamRawStatsModeV2_t       RawStatsMode;
CalibDb_CamHistStatsModeV2_t       HistStatsMode;
CalibDb_CamYRangeModeV2_t         YRangeMode;
uint8_t                   AecRunInterval;
RKAiqOPMode_t             AecOpType;
Cam15x15UCharMatrix_t     GridWeights;
Uapi_AeAttrV2_t           stAuto;
Uapi_MeAttrV2_t           stManual;
Uapi_ExpSwAttr_AdvancedV2_t   stAdvanced;
} Uapi_ExpSwAttrV2_t;
成员名称描述
sync参考rk aiq uapi sync t定义,参见 “概述/API说明” 章节 _ _ _ _
EnableAec使能开关。1,开启Aec算法;0,关闭Aec算法,曝光保持在关闭前的 值。
RawStatsModeAec模块亮度统计模式。共四种模式分别为: CAM RAWSTATSV2 MODE Y/R/G/B,默认为Y模式。 _ _ _
HistStatsModeAec模块直方图统计模式。共五种模式分别为: CAM HISTV2 MODE Y/R/G/B,默认为Y模式。 _ _ _
YRangeModeAec模块Y通道Range模式。共两种模式分别为 CAM YRANGEV2 MODE FULL/LIMITED,默认为FULL模式。 _ _ _
AecRunIntervalAe算法运行间隔,取值范围[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优先使用参数结构体

【相关数据类型】

rk_aiq_uapi_sync_t 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,优先使用该结构体中的参数
GridWeightsAE权重,大小为15X15。
SetAeRangeEn置1,设置自动曝光分量range;置0,不设置自动曝光分量range,以调试文 件为准
SetLinAeRange线性曝光的自动曝光分量range参数值(并非最终生效range)
SetHdrAeRangeHDR曝光的自动曝光分量range参数值(并非最终生效range)

【注意事项】

Uapi_ExpSwAttrV2_t 结构体中定义了一组AE权重,权重个数为15X15。算法内部根据硬件实际配置权重个数,进行权重的扩展。如有类似人脸曝光的需求,可使用Uapi_ExpSwAttr_AdvancedV2_t中定义的一组AE权重,其权重个数为15X15。算法内部根据硬件实际配置权重个数,进行权重的压缩。如需使用Uapi_ExpSwAttr_Advanced_t中定义的一组AE权重,需要打开使能enable,将其置1。通过api设置AE参数范围时,需要将SetAeRangeEn置1,否则默认使用调试文件中的自动曝光参数范围。曝光参数范围的设置,按照曝光模式的不同,分为SetLinAeRange和SetHdrAeRange两套。其中SetHdrAeRange内支持各帧自动曝光参数范围的设置。另,最终生效的曝光时间及增益range需要在stAuto结构体中查询,此处仅为设置的range,而非最终生效range。

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曝光时间范围,设置最大值和最小值,以毫秒为单位
stGainRangeSensor 模拟增益范围,设置最大值和最小值
stIspDGainRangeISP数字增益范围,设置最大值和最小值
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分别为短 帧、中帧、长帧。
stGainRangeSensor 模拟增益范围,设置最大值和最小值,数组0/1/2分别为短帧、中 帧、长帧。
stIspDGainRangeISP数字增益范围,设置最大值和最小值,数组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线性模式自动曝光量范围结构体(最终生效的线性曝光range)
HdrAeRangeHdr模式自动曝光量范围结构体(最终生效的hdr曝光range)

【注意事项】

LinAeRange/HdrAeRange为算法内部经过校验校正后实际使用的参数范围。当api设置的AE参数范围超过sensor限制的参数范围时,会使用sensor限制的参数范围。sensor限制的参数范围,详见Rockchip_Tuning_Guide_ISP30_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种帧率,分别为:AECV2 FLICKER FREQUENCY OFF(抗 _ _ _ 闪使能位enable置0时有效)、AECV2 FLICKER FREQUENCY 50HZ、 _ _ _ AECV2 FLICKER FREQUENCY 60HZ,默认为 _ _ _ AECV2 FLICKER FREQUENCY 50HZ(工频50赫兹)。 _ _ _
Mode抗闪模式,共包含两种抗闪模式:AECV2 ANTIFLICKER NORMAL MODE(普通 _ _ _ 抗闪模式)、AECV2 ANTIFLICKER AUTO MODE(自动抗闪模式) _ _ _

【注意事项】

关闭抗闪功能,需将抗闪使能位enable置0,算法内部自动配置Frequency=AECV2_FLICKER_FREQUENCY_OFF;如抗闪使能位enable置1时,抗闪频率配置为AECV2_FLICKER_FREQUENCY_OFF,该频率值将配置无效,使用默认值AECV2_FLICKER_FREQUENCY_50HZ。AECV2_ANTIFLICKER_NORMAL_MODE为普通抗闪模式,曝光时间可以根据亮度进行调节,最小曝光时间固定为 1/120 sec( 60Hz)或 1/100 sec(50Hz),不受曝光时间最小值的限制。有灯光的环境:曝光时间可与光源频率相匹配,能够防止图像闪烁。高亮度的环境:亮度越高,要求曝光时间就最短。而普通抗闪模式的最小曝光时间不能匹配光源频率,产生过曝。AECV2_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 struct Uapi_LinAeRouteAttr_s {
rk_aiq_uapi_sync_t sync;
CalibDb_LinAeRoute_AttrV2_t Params;
} Uapi_LinAeRouteAttr_t;
成员名称描述
TimeDotsensor曝光时间节点,单位为s
GainDotsensor曝光增益节点
IspgainDotIsp数字增益节点
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 struct Uapi_HdrAeRouteAttr_s {
rk_aiq_uapi_sync_t sync;
CalibDb_HdrAeRoute_AttrV2_t Params;
} Uapi_HdrAeRouteAttr_t;
成员名称描述
Frm0/1/2TimeDot曝光时间节点,单位为秒。Hdr 2帧模式时,仅Frm0/1TimeDot有 效;Hdr 3帧模式时,Frm0/1/2TimeDot皆有效。Frm0~3依次为曝光 量从短至长的帧序号。
Frm0/1/2GainDotsensor增益节点。Hdr 2帧模式时,仅Frm0/1GainDot有效;Hdr 3帧 模式时,Frm0/1/2GainDot皆有效。此处增益值为实际值,单位为 1x。Frm0~3依次为曝光量从短至长的帧序号。
Frm0/1/2IspDGainDotIsp数字增益节点。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 struct Uapi_LinExpAttrV2_s {
rk_aiq_uapi_sync_t sync;
CalibDb_LinearAE_AttrV2_t Params;
} Uapi_LinExpAttrV2_t;
成员名称描述
RawStatsEn线性曝光使用Raw域统计亮度功能使能
EvBias自动曝光调节时,曝光量的偏差百分比,单位为%,参考取值范围为 [-200,+200]
ToleranceIn/Out自动曝光调节时,画面亮度的容忍度。单位为%,取值范围为[0,100]
StrategyMode自动曝光策略模式,高光优先或低光优先【暂时无效】
DySetpoint自动曝光调节的动态目标亮度值属性,随曝光量动态变化
BackLightCtrl背光补偿功能参数
OverExpCtrl强光抑制功能参数

【注意事项】

曝光量偏差EvBias,用于特殊场景下对(固定/动态)目标亮度值(SetPoint/IRSetPoint)进行微调。真实生效目标亮度为(SetPoint)*[1+abs(EvBias)/100]^[EvBias/abs(EvBias)]。如设置EvBias=100时,目标亮度为默认参数的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 struct Uapi_HdrExpAttrV2_s {
rk_aiq_uapi_sync_t sync;
CalibDb_HdrAE_AttrV2_t Params;
} Uapi_HdrExpAttrV2_t;
成员名称描述
ToleranceIn/Out自动曝光调节时,画面亮度的容忍度。单位为%,取值范围为[0,100]
LongfrmMode长帧模式参数
StrategyMode自动曝光策略模式,高光优先或低光优先 (AECV2 STRATEGY MODE LOWLIGHT PRIOR/AECV2 STRATEGY MODE HIGHLIGHT PRIOR) _ _ _ _ _ _ _ _
Evbias自动曝光调节时,曝光量的偏差百分比,单位为%,参考取值范围为[-200,+200]
ExpRatioCtrlHdrAE曝光比控制模块,仅在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 struct Uapi_IrisAttrV2_s {
rk_aiq_uapi_sync_t           sync;
CalibDb_AecIrisCtrlV2_t       Params;
} Uapi_IrisAttrV2_t;
成员名称描述
Enable自动光圈控制功能的使能
IrisType光圈类型,P(即P-iris光圈)或DC(即DC-iris光圈)
IrisOpType光圈控制模式:分为自动(RK AIQ OP MODE AUTO)模式/手动 _ _ _ _ (RK AIQ OP MODE MANUAL)模式 _ _ _ _
ManualAttr手动光圈参数
PIrisAttrP光圈属性参数
DCIrisAttrDC光圈属性参数

CalibDb_MIris_AttrV2_t

手动光圈参数

typedef struct CalibDb_MIris_AttrV2_s {
int PIrisGainValue;
int DCIrisHoldValue;
} CalibDb_MIris_AttrV2_t;
成员名称描述
PIrisGainValue手动P光圈等效增益值,参数值受P光圈设备限制,取值范围为[1,1024]
DCIrisHoldValueDC光圈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;
成员名称描述
TotalStepP-iris步进电机总步数,具体大小与P-iris镜头有关。
EffcStepP-iris步进电机的可用步数,具体大小与P-iris镜头有关。
ZeroIsMaxP-iris步进电机step0是否对应最大光圈位置,具体取值与P-iris镜头有关。该值为 0,代表步进电机位置为step0时,光圈开到最小;该值为1,代表步进电机位置为 step0时,光圈开到最大。
StepTableP-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)等效增益
0201.0625124156.653144
1200.7595114253.438136
2198.5835064350.282128
3195.8694994447.188120
4192.8794914544.159112
5189.6774834641.197105
6186.2934744738.30798
7182.7444654835.4990
8179.0354564932.75183
9175.2714465030.09377
10171.4844375127.51970
11167.6814275225.03464
12163.8654175322.64258
13160.0364085420.34752
14156.1983985518.15446
15152.3513885616.06841
16148.4993785714.09636
17144.6423685812.24531
18140.7833595910.52227
19136.925349608.93523
20133.069339617.48419
21129.217329626.16916
22125.371319634.98713
23121.535309643.93610
24117.709300653.0148
25113.897290662.226
26110.1280671.554
27106.321271681.0033
28102.562261690.5771
2998.826252700.2681
Step孔径面积(mm2)等效增益Step孔径面积(mm2)等效增益
3095.115242710.0750
3191.43123372close0
3287.77722473close0
3384.15621474close0
3480.56920575close0
3577.0219676close0
3673.5118777close0
3770.04317878close0
3866.62117079close0
3963.24716180close0
4059.923153

Uapi_ExpWin_t​

定义AE统计窗口属性参数

typedef struct window {
uint16_t h_offs;
uint16_t v_offs;
uint16_t h_size;
uint16_t v_size;
} window_t;
typedef struct Uapi_ExpWin_s {
rk_aiq_uapi_sync_t           sync;
window                       Params;
} Uapi_ExpWin_t;
成员名称描述
h offs _窗口左上角相对坐标原点的水平偏移值,这里的坐标原点指sensor感光区域左上角
v offs _窗口左上角相对坐标原点的垂直偏移值,这里的坐标原点指sensor感光区域左上角
h size _窗口水平方向尺寸
v size _窗口竖直方向尺寸

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自动曝光是否收敛
IsExpMaxISP曝光是否达到最大值
LumaDeviation线性模式下,AEC的目标值与实际画面亮度的差值,该值为正,表示实 际亮度大于目标亮度;该值为负,表示实际亮度小于目标亮度;该值为 0,表示实际画面亮度在目标值的容忍度范围内。
HdrLumaDeviationHdr模式下,各帧的亮度目标值与实际画面亮度的差值,该值为正,表示 实际亮度大于目标亮度;该值为负,表示实际亮度小于目标亮度;该值 为0,表示实际画面亮度在目标值的容忍度范围内。2帧模式下,仅0、1 有效,分别表示短、长帧;3帧模式下,0-2皆有效,分别表示短、中、 长帧。
MeanLuma线性模式下,当前画面的平均亮度。
HdrMeanLumaHDR模式下,各帧当前画面的平均亮度。2帧模式下,数组仅0、1成员 有效,分别表示短、长帧;3帧模式下,数组0-2成员皆有效,分别表示 短、中、长帧。
CurExpInfo当前曝光参数,包括sensor曝光时间、sensor曝光增益值。按照曝光模 式,分为LinearExp和HdrExp[3] 2套曝光参数。
Piris光圈
LinePeriodsPerFieldsensor的VTS
PixelPeriodsPerLinesensor的HTS
PixelClockFreqMHZsensor的像素时钟频率(单位:兆赫兹)

常见问题定位及debug方法​

若出现画面亮度闪烁、过冲、亮度不符合预期等问题时,建议通过抓取有问题场景的AE LOG进行分析,有助于快速定位问题、提高工作效率。

曝光统计同步测试功能​

标定ISP模块前,需要驱动人员或tuning人员填写调试IQ XML中的SensorInfo参数。这个模块的涉及到曝光参数的设置,如设置错误可能发生曝光出错、闪烁等现象。建议配置完sensorinfo参数之后,开启SyncTest功能进行自测。sensorinfo参数含义说明参考《Rockchip_Tuning_Guide_ISP30》。

SyncTest功能通过循环设置N组不同曝光值,可测试sensor的曝光时间和曝光增益、及DCG切换生效帧数是否正确,还可用于测试曝光的线性度,从而确认曝光时间和曝光增益的寄存器值转换公式及相关参数是否正确。

SyncTest功能参数介绍如下:

【描述】

曝光与统计的同步测试功能,支持按照给定间隔帧数,循环设置N组不同的曝光值,用于debug及验证曝光分量(曝光时间、曝光增益)的生效帧数及sensor曝光参数设置是否正确。

成员名称描述
Enable曝光与统计同步测试功能的使能
IntervalFrm曝光切换间隔帧数
AlterExp曝光切换参数

AlterExp

根据模式的不同,分为LinearAE和HdrAE两套参数。

成员名称描述
TimeValue曝光时间值
GainValue曝光增益值
IspDgainValueIsp数字增益值
DcgModeDcg模式值
PIrisGainValueP-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库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_uapi2_getWBMode​

【描述】获取白平衡工作模式。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
mode白平衡工作模式输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_uapi2_lockAWB​

【描述】锁定当前白平衡参数。

【语法】

XCamReturn rk_aiq_uapi2_lockAWB(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_uapi2_unlockAWB​

【描述】解锁已被锁定的白平衡参数。

【语法】

XCamReturn rk_aiq_uapi2_unlockAWB(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_uapi2_setMWBScene​

【描述】设置白平衡场景。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
scene白平衡场景输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_uapi2_getMWBScene​

【描述】获取白平衡场景。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
scene白平衡场景输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_uapi2_setMWBGain​

【描述】设置手动白平衡增益系数。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
gain白平衡增益系数输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_uapi2_getWBGain​

【描述】获取白平衡增益系数。手动白平衡和自动白平衡均用该函数

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
gain白平衡增益系数输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_uapi2_setMWBCT​

【描述】设置手动白平衡色温参数。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
ct白平衡色温参数输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_uapi2_getWBCT​

【描述】获取白平衡色温。自动和手动均用该函数

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
ct白平衡色温输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_uapi2_setAwbGainOffsetAttrib​

【描述】设置自动白平衡gain的偏移。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attrwbgain偏移参数输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

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上下文指针输入
attrwbgain偏移参数输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_uapi2_setAwbGainAdjustAttrib​

【描述】设置自动白平衡模式下的色调调整参数。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr白平衡色调调整参数输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_uapi2_getAwbGainAdjustAttrib​

【描述】获取自动白平衡模式下的色调调整参数。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr白平衡色调调整参数输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_uapi2_setAwbV30AllAttrib​

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

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr白平衡API支持的全部参数。输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_uapi2_getAwbV30AllAttrib​

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

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attrwbgain偏移参数输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

功能级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;
成员名称描述
rgainR通道增益
grgainG通道增益
gbgainGB通道增益
bgainB通道增益

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模式对应的参数配置

rk_aiq_uapiV2_wb_awb_wbGainOffset_t​

定义自动白平衡gain偏移

typedef struct rk_aiq_uapiV2_wb_awb_wbGainOffset_s{
rk_aiq_uapi_sync_t sync;
CalibDbV2_Awb_gain_offset_cfg_t gainOffset;
}rk_aiq_uapiV2_wb_awb_wbGainOffset_t;
成员名称描述
sync参考rk aiq uapi sync t定义说明,参见 “概述/API说明” 章节 _ _ _ _
gainOffset参靠后面CalibDbV2 Awb gain offset cfg t描述 _ _ _ _ _

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,分别代表不使能、使能
offsetwbgain与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 {
rk_aiq_uapi_sync_t sync;
bool enable;
rk_aiq_uapiV2_wb_awb_wbGainAdjustLut_t *lutAll;
int lutAll_len;
} rk_aiq_uapiV2_wb_awb_wbGainAdjust_t;
成员名称描述
sync参考rk aiq uapi sync t定义说明,参见 “概述/API说明” 章节 _ _ _ _
enable色调调整使能 取值0或1,分别代表不使能、使能
lutAll不同的环境亮度可以配置不同的输出色温表
lutAll len _指定色温表的个数
lutAll.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_wbV30_awb_attrib_t​

定义自动白平衡api参数

typedef struct rk_aiq_uapiV2_wbV30_awb_attrib_s {
rk_aiq_uapiV2_wb_awb_wbGainAdjust_t wbGainAdjust;
CalibDbV2_Awb_gain_offset_cfg_t wbGainOffset;
} rk_aiq_uapiV2_wbV30_awb_attrib_t;
成员名称描述
stAuto.wbGainAdjust参考前述CalibDbV2 Awb gain offset cfg t _ _ _ _ _
stAuto.wbGainOffset参考前述rk aiq uapiV2 wb awb wbGainAdjust t _ _ _ _ _ _

rk_aiq_uapiV2_wbV30_attrib_t​

定义白平衡API支持的全部参数。

typedef struct rk_aiq_uapiV2_wbV30_attrib_s {
rk_aiq_uapi_sync_t sync;
bool byPass;
rk_aiq_wb_op_mode_t mode;
rk_aiq_wb_mwb_attrib_t stManual;
rk_aiq_uapiV2_wbV30_awb_attrib_t stAuto;
} rk_aiq_uapiV2_wbV30_attrib_t;
成员名称描述
sync参考rk aiq uapi sync t说明,参见 “概述/API说明” 章节 _ _ _ _
bypass取值0或1 0表示做白平衡校正,使用的白平衡增益由表格后面的参数控制控制 1表示不执行白平衡校正
mode自动或手动白平衡模式控制参数,参考前述rk aiq wb op mode t _ _ _ _ _
stManual手动白平衡参数,参考前述rk aiq wb mwb attrib t _ _ _ _ _
stAuto自动白平衡参数,参考前述rk aiq uapiV2 wbV21 awb attrib t _ _ _ _ _ _

模块级API参考​

rk_aiq_user_api2_awbV30_SetAllAttrib​

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

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr白平衡API支持的全部参数输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_awb.h、rk_aiq_uapi2_awb_int.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_user_api2_awbV30_GetAllAttrib​

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

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr白平衡API支持的全部参数输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_awb.h、rk_aiq_uapi2_awb_int.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_user_api2_awb_GetCCT​

【描述】获取白平衡色温。自动和手动均用该函数

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
cct白平衡的色温参数输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_awb.h、rk_aiq_uapi2_awb_int.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_user_api2_awb_QueryWBInfo​

【描述】获取白平衡增益系数,色温。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
wb querry info _ _颜色相关状态参数输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_awb.h、rk_aiq_uapi2_awb_int.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_user_api2_awb_Lock​

【描述】锁定当前白平衡参数。

【语法】

XCamReturn
rk_aiq_user_api2_awb_Lock(const rk_aiq_sys_ctx_t* sys_ctx);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_awb.h、rk_aiq_uapi2_awb_int.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_user_api2_awb_Unlock​

【描述】解锁已被锁定的白平衡参数。

【语法】

XCamReturn
rk_aiq_user_api2_awb_Lock(const rk_aiq_sys_ctx_t* sys_ctx);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_awb.h、rk_aiq_uapi2_awb_int.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_user_api2_awb_SetWpModeAttrib​

【描述】设置白平衡工作模式。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr白平衡工作模式输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_awb.h、rk_aiq_uapi2_awb_int.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_user_api2_awb_GetWpModeAttrib​

【描述】获取白平衡工作模式。【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr白平衡工作模式输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_awb.h、rk_aiq_uapi2_awb_int.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_user_api2_awb_SetMwbAttrib​

【描述】设置手动白平衡参数。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr手动白平衡参数输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_awb.h、rk_aiq_uapi2_awb_int.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

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库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_user_api2_awb_SetWbGainAdjustAttrib​

【描述】设置自动白平衡模式下的色调调整参数。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr色调调整参数输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_awb.h、rk_aiq_uapi2_awb_int.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_user_api2_awb_GetWbGainAdjustAttrib​

【描述】获取自动白平衡模式下的色调调整参数。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr色调调整参数输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_awb.h、rk_aiq_uapi2_awb_int.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_user_api2_awb_SetWbGainOffsetAttrib​

【描述】设置自动白平衡gain的偏移

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr色调调整参数输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_awb.h、rk_aiq_uapi2_awb_int.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

rk_aiq_user_api2_awb_GetWbGainOffsetAttrib​

【描述】获取自动白平衡gain的偏移

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr色调调整参数输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_awb.h、rk_aiq_uapi2_awb_int.h库文件:librkaiq.so

【示例】

参考sample_awb_module.cpp

模块级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相关环境亮度

rk_aiq_wb_op_mode_t​

定义白平衡工作模式

typedef struct rk_aiq_uapiV2_wb_opMode_s {
rk_aiq_uapi_sync_t sync;
rk_aiq_wb_op_mode_t mode;
} rk_aiq_uapiV2_wb_opMode_t;
成员名称描述
sync参考rk aiq uapi sync t说明,参见 “概述/API说明” 章节 _ _ _ _
mode参考rk aiq wb op mode t说明 _ _ _ _ _

rk_aiq_wb_mwb_attrib_t​

定义手动白平衡属性

typedef struct rk_aiq_wb_mwb_attrib_s {
rk_aiq_uapi_sync_t sync;
rk_aiq_wb_mwb_mode_t mode;
union MWBPara_u {
rk_aiq_wb_gain_t gain;
rk_aiq_wb_scene_t scene;
rk_aiq_wb_cct_t cct;
} para;
} rk_aiq_wb_mwb_attrib_t;
成员名称描述
sync参考rk aiq uapi sync t定义,参见 “概述/API说明” 章节 _ _ _ _
mode模式选择
para模式对应的参数配置

AF​

概述​

AF模块的功能是指调整相机镜头,使被拍物成像清晰的过程。

功能描述​

AF 模块由AF 信息统计及AF控制算法两部分组成。下图为AF信息统计模块框图其中,ch0/ch1/ch2对应hdr模式下S/M/L帧,debayer为hdr模式下的合成帧。

windowA的输出主要包含15*15的V1/V2/H1/H2 FV信息、亮度信息和高亮计数。

windowB的输出主要包含一个FV信息、亮度信息和高亮计数。

开发用户AF算法​

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

功能级API参考​

rk_aiq_uapi2_setFocusMode​

【描述】 配置对焦模式。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
mode对焦模式输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getFocusMode​

【描述】 获取当前对焦模式。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
mode对焦模式输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setFocusWin​

【描述】 设置自动对焦窗口。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
rect对焦窗口,取值范围由sensor输入大小确定输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getFocusWin​

【描述】 设置自动对焦窗口。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
rect对焦窗口输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_lockFocus​

【描述】 锁定自动对焦,对焦暂停动作。

【语法】

XCamReturn rk_aiq_uapi2_lockFocus(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_unlockFocus​

【描述】 解锁自动对焦,对焦继续动作。

【语法】

XCamReturn rk_aiq_uapi2_unlockFocus(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_oneshotFocus​

【描述】 触发单次对焦,对焦完成后,不会继续对焦。【语法】

XCamReturn rk_aiq_uapi2_oneshotFocus(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_manualTrigerFocus​

【描述】 手动触发对焦,对焦完成后,继续监视画面是否模糊,如果画面模糊,再次执行对焦。

【语法】

XCamReturn rk_aiq_uapi2_manualTrigerFocus(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_trackingFocus​

【描述】 继续监视画面是否模糊,如果画面模糊,再次执行对焦,一般执行rk_aiq_uapi2_oneshotFocus后使用。

【语法】

XCamReturn rk_aiq_uapi2_trackingFocus(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getSearchResult​

【描述】 获取对焦结果。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
result对焦结果,具体参考结构体rk aiq af result t的说明 _ _ _ _输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getZoomRange​

【描述】 获取变焦范围值,用于限制rk_aiq_uapi_setOpZoomPosition输入的zoom code参数。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
rangezoom可移动范围,具体参考结构体rk aiq af zoomrange _ _ _输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setOpZoomPosition​

【描述】 设置zoom位置,修改变焦位置。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
poszoom position,取值范围由rk aiq uapi2 getZoomRange确定 _ _ _输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getOpZoomPosition​

【描述】 获取zoom位置。【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
poszoom position输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_endOpZoomChange​

【描述】 结束zoom设备位置的设置,在rk_aiq_uapi_setOpZoomPosition之后调用,被调用后执行聚焦动作。

【语法】

XCamReturn rk_aiq_uapi2_endOpZoomChange(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getFocusRange​

【描述】 获取聚焦范围值,用于限制rk_aiq_uapi_setFocusPosition输入的focus code参数。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
rangefocus可移动范围,具体参考结构体rk aiq af focusrange _ _ _输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setFocusPosition​

【描述】 设置手动对焦模式下的对焦位置。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
code对焦code值,取值范围由rk aiq uapi2 getFocusRange确定 _ _ _输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getFocusPosition​

【描述】 获取当前对焦位置。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
code对焦code值输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_startZoomCalib​

【描述】 执行电动马达模组校正。

【语法】

XCamReturn rk_aiq_uapi2_startZoomCalib(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_resetZoom​

【描述】 执行电动马达模组复位。

【语法】

XCamReturn rk_aiq_uapi2_resetZoom(const rk_aiq_sys_ctx_t* ctx);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

功能级API数据类型​

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_af_zoomrange​

【说明】 定义zoom取值范围

typedef struct {
int min_pos;
int max_pos;
float min_fl;
float max_fl;
} rk_aiq_af_zoomrange;
成员名称描述
min pos _zoom最小值
max pos _zoom最大值
min fl _最小焦距
max fl _最大焦距

rk_aiq_af_focusrange​

【说明】 定义focus取值范围

typedef struct {
int min_pos;
int max_pos;
} rk_aiq_af_focusrange;
成员名称描述
min pos _focus最小值
max pos _focus最大值

rk_aiq_af_result_t​

【说明】 定义af搜索结果

typedef enum rk_aiq_af_sec_stat_e
{
RK_AIQ_AF_SEARCH_INVAL   = 0,
RK_AIQ_AF_SEARCH_RUNNING = 1,
RK_AIQ_AF_SEARCH_END     = 2
} rk_aiq_af_sec_stat_t;
typedef struct {
rk_aiq_af_sec_stat_t stat;
int32_t final_pos;
} rk_aiq_af_result_t;
成员名称描述
stat对焦状态
final pos _最终focus位置

模块级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_af.h库文件:librkaiq.so

rk_aiq_user_api2_af_GetAttrib​

【描述】获取对焦属性。

【语法】

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

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr对焦的参数属性输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_af.h库文件:librkaiq.so

模块级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调用后, 自动触发一次对焦

RKAIQ_AF_HWVER​

定义对焦工作模式

typedef enum _RKAIQ_AF_HWVER
{
RKAIQ_AF_HW_V20 = 0,
RKAIQ_AF_HW_V30,
RKAIQ_AF_HW_VMAX
} RKAIQ_AF_HWVER;
成员名称描述
RKAIQ AF HW V20 _ _ _AF硬件版本 2.0
RKAIQ AF HW V30 _ _ _AF硬件版本 3.0

rk_aiq_af_algo_meas_v30_t​

定义AF信息统计工作模式

typedef struct {
unsigned char af_en;
unsigned char rawaf_sel;
unsigned char gamma_en;
unsigned char gaus_en;
unsigned char v1_fir_sel;
unsigned char hiir_en;
unsigned char viir_en;
unsigned char v1_fv_outmode;   // 0 square, 1 absolute
unsigned char v2_fv_outmode;   // 0 square, 1 absolute
unsigned char h1_fv_outmode;   // 0 square, 1 absolute
unsigned char h2_fv_outmode;   // 0 square, 1 absolute
unsigned char ldg_en;
unsigned char accu_8bit_mode;   // fix to 1
unsigned char ae_mode;
unsigned char y_mode;           // fix to 0
unsigned char line_en[RKAIQ_RAWAF_LINE_NUM];
unsigned char line_num[RKAIQ_RAWAF_LINE_NUM];
unsigned char window_num;
unsigned short wina_h_offs;
unsigned short wina_v_offs;
unsigned short wina_h_size;
unsigned short wina_v_size;
unsigned short winb_h_offs;
unsigned short winb_v_offs;
unsigned short winb_h_size;
unsigned short winb_v_size;
unsigned short gamma_y[RKAIQ_RAWAF_GAMMA_NUM];
// [old version param]
unsigned short thres;
unsigned char shift_sum_a;
unsigned char shift_sum_b;
unsigned char shift_y_a;
unsigned char shift_y_b;
/**********[Vertical IIR (v1 & v2)]************/
short v1_iir_coe[9];
short v1_fir_coe[3];
short v2_iir_coe[3];
short v2_fir_coe[3];
/**********[Horizontal IIR (h1 & h2)]************/
short h1_iir1_coe[6];
short h2_iir1_coe[6];
short h1_iir2_coe[6];
short h2_iir2_coe[6];
/**********[Focus value statistic param]**********/
// level depended gain
// input8 lumi, output8bit gain
unsigned char h_ldg_lumth[2];   //luminance thresh
unsigned char h_ldg_gain[2];     //gain for [minLum,maxLum]
unsigned short h_ldg_gslp[2];   //[slope_low,-slope_high]
unsigned char v_ldg_lumth[2];
unsigned char v_ldg_gain[2];
unsigned short v_ldg_gslp[2];
// coring
unsigned short v_fv_thresh;
unsigned short h_fv_thresh;
// left shift, more needed if outmode=square
unsigned char v1_fv_shift; //only for sel1
unsigned char v2_fv_shift;
unsigned char h1_fv_shift;
unsigned char h2_fv_shift;
/**********[High light]**********/
unsigned short highlit_thresh;
} rk_aiq_af_algo_meas_v30_t;
成员名称描述
af en _是否使能AF 信息统计,0为关闭,1为打开
rawaf sel _选择AF信息统计的通道,取值范围0-3,对应hdr模式的长/中/短/合成帧通道 选择,一般AF选择中帧通道,非hdr模式设置为0,hdr模式设置为1
gamma en _gamma模块使能开关,0为关闭,1为打开
gaus en _需固定设置为1
v1 fir sel _ _需固定设置为1
hiir en _H1/H2通道使能开关,0为关闭,1为打开
viir en _V1/V2通道使能开关,0为关闭,1为打开。需要注意gamma en打开时, _ viir en必须设置为1 _
v1 fv outmode _ _V1通道FV输出模式选择,0为平方模式,1为绝对值模式
v2 fv outmode _ _V2通道FV输出模式选择,0为平方模式,1为绝对值模式
h1 fv outmode _ _H1通道FV输出模式选择,0为平方模式,1为绝对值模式
h2 fv outmode _ _H2通道FV输出模式选择,0为平方模式,1为绝对值模式
ldg en _LDG功能使能开关,0为关闭,1为打开
accu 8bit mode _ _需固定设置为1
ae mode _当ae mode设置为1,RAWAF使能15x15亮度均值统计,复用了RAWAE BIG _ _ 模块的逻辑
y mode _需固定设置为0
line en _目前暂未生效
line num _目前暂未生效
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 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
threswin b(独立窗口)的AF统计阈值,计算出的fv值小于该值时,fv值改为0,可减 少噪声的影响,取值范围为0-0xFFFF
shift sum a _ _目前无法使用,固定设置为0即可
shift sum b _ _win b(独立窗口)的fv值的shit bit值,会按照该值将fv值向右移位,避免得到 的fv值溢出,取值范围为0-7
shift y a _ _目前无法使用,固定设置为0即可
shift y b _ _win b(独立窗口)的luma值的shit bit值,会按照该值将luma值向右移位,避 免得到的luma值溢出,取值范围为0-7
v1 iir coe[9] _ _用于V1通道的3X3 IIR系数,按照AF滤波器系数生成工具的输出进行设置
v1 fir coe[3] _ _用于V1通道的1x3 FIR系数,按照AF滤波器系数生成工具的输出进行设置
v2 iir coe[3] _ _用于V2通道的1x3 IIR系数,按照AF滤波器系数生成工具的输出进行设置
v2 fir coe[3] _ _用于V2通道的1x3 FIR系数,按照AF滤波器系数生成工具的输出进行设置
h1 iir1 coe[6] _ _用于H1通道的1X6 IIR1系数,按照AF滤波器系数生成工具的输出进行设置
h2 iir1 coe[6] _ _用于H2通道的1X6 IIR1系数,按照AF滤波器系数生成工具的输出进行设置
h1 iir2 coe[6] _ _用于H1通道的1X6 IIR2系数,按照AF滤波器系数生成工具的输出进行设置
h2 iir2 coe[6] _ _用于H2通道的1X6 IIR2系数,按照AF滤波器系数生成工具的输出进行设置
h ldg lumth[2] _ _用于H1/H2通道的ldg模块的亮度阈值系数,0为左边暗区设置,1为右边高 亮区设置,取值范围为0~255
h ldg gain[2] _ _用于H1/H2通道的ldg模块的最小gain值,0为左边暗区设置,1为右边高亮区 设置,取值范围为0~255
h ldg gslp[2] _ _用于H1/H2通道的ldg模块的斜率系数,0为左边暗区设置,1为右边高亮区 设置,取值范围为0~65535
v ldg lumth[2] _ _用于V1/V2通道的ldg模块的亮度阈值系数,0为左边暗区设置,1为右边高亮 区设置,取值范围为0~255
v ldg gain[2] _ _用于V1/V2通道的ldg模块的最小gain值,0为左边暗区设置,1为右边高亮区 设置,取值范围为0~255
v ldg gslp[2] _ _用于V1/V2通道的ldg模块的最小gain值,0为左边暗区设置,1为右边高亮区 设置,取值范围为0~255
v fv thresh _ _用于V1/V2通道的AF统计阈值,计算出的fv值小于该值时,fv值改为0,可减 少噪声的影响,取值范围为0-0x0FFF
h fv thresh _ _用于H1/H2通道的AF统计阈值,计算出的fv值小于该值时,fv值改为0,可减 少噪声的影响,取值范围为0-0x0FFF
成员名称描述
v1 fv shift _ _用于V1通道的fv值的shit bit值,会按照该值将fv值向右移位,避免得到的fv 值溢出,取值范围为0-7
v2 fv shift _ _用于V2通道的fv值的shit bit值,会按照该值将fv值向右移位,避免得到的fv 值溢出,取值范围为0-7
h1 fv shift _ _用于H1通道的fv值的shit bit值,会按照该值将fv值向右移位,避免得到的fv 值溢出,取值范围为0-7
h2 fv shift _ _用于H2通道的fv值的shit bit值,会按照该值将fv值向右移位,避免得到的fv 值溢出,取值范围为0-7
highlit thresh _表示高亮统计的阈值,当高于该值则认为是高亮点,纳入统计,只累加每个 区域的高亮点的个数,取值范围为0-0x0FFF

rk_aiq_af_attrib_t​

对焦配置信息

typedef struct rk_aiq_af_attrib_s {
rk_aiq_uapi_sync_t sync;
RKAIQ_AF_MODE AfMode;
RKAIQ_AF_HWVER AfHwVer;
bool contrast_af;
bool laser_af;
bool pdaf;
int h_offs;
int v_offs;
unsigned int h_size;
unsigned int v_size;
short fixedModeDefCode;
short macroModeDefCode;
short infinityModeDefCode;
union {
rk_aiq_af_algo_meas_v20_t manual_meascfg;
rk_aiq_af_algo_meas_v30_t manual_meascfg_v30;
};
} rk_aiq_af_attrib_t;
成员名称描述
sync同步异步API相关信息,参考rk aiq uapi sync t定义,参见 “概述/API _ _ _ _ 说明” 章节
AfMode对焦模式
contrast af _使能反差对焦
laser af _使能激光对焦
pdaf使能相位对焦
h offs _对焦窗口起始水平坐标
v offs _对焦窗口起始垂直坐标
h size _对焦窗口宽度
v size _对焦窗口高度
fixedModeDefCode固定对焦模式下对焦code值
macroModeDefCode微距对焦模式下终止code值,对焦范围为0-该值
infinityModeDefCode远距距对焦模式下起始code值,对焦范围为该值-64
manual meascfg _AF2.0 自定义对焦统计信息配置
manual meascfg v30 _ _AF3.0 自定义对焦统计信息配置

其它说明​

VCM马达模组驱动验证​

  1. 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。

  1. 不同方向移动vcm,最终停留位置是否稳定。

对焦模式切换为手动模式,选取一个position,从0移动到该位置和从64移动到该位置,比较两次的图像清晰程度是否一致,AF 统计值 是否接近。

  1. 移动镜头所需要的时间是否正确。

电动马达模组驱动验证​

  1. 多次单步移动和一次多步移动最终停留位置是否相同1)首先选定一个zoom/focus马达位置,使图像达到最清晰的状态,记录当前马达位置,并抓取一张图像A;2)让zoom或focus马达后退一定的步数,然后单步移动zoom或focus马达,直到到达记录的zoom/focus马达位置,抓取一张图像B;3)让zoom或focus马达再次后退一定的步数,一次移动zoom或focus马达,到达记录的zoom/focus马达位置,抓取一张图像C;4)比较图像A、图像B和图像C的清晰程度是否一致,视野范围是否一致;2) 马达随机移动最终停留位置是否相同1)首先选定一个zoom/focus马达位置,使图像达到最清晰的状态,记录当前马达位置,并抓取一张图像A;2)其次通过脚本让zoom或focus马达随机移动,移动400到500次后,回到最初的zoom/focus马达位置,抓取一张图像B;3)比较图像A与图像B,判断清晰程度是否一致,视野范围是否一致;

  2. 马达同时移动最终停留位置是否相同1)首先选定一个zoom/focus马达位置,使图像达到最清晰的状态,记录当前马达位置,并抓取一张图像A;2)其次通过脚本让zoom和focus马达同时进行随机移动,移动400到500次后,回到最初的zoom/focus马达位置,抓取一张图像B;3)比较图像A与图像B,判断清晰程度是否一致,视野范围是否一致;

IMGPROC​

概述​

imgproc 是指影响图像效果的模块。

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上下文指针输入
attrmerge的参数属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_amerge.h库文件:librkaiq.so

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上下文指针输入
attrmerge的参数属性输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_amerge.h库文件:librkaiq.so

模块级API数据类型​

merge_OpMode_t

定义merge工作模式

typedef enum merge_OpModeV21_e {
MERGE_OPMODE_API_OFF = 0,
MERGE_OPMODE_MANU = 1,
} merge_OpModeV21_t;
成员名称描述
MERGE OPMODE API OFF _ _ _api关闭模式,此时算法处于AUTO模式,使用Json文件中参数
MERGE OPMODE MANU _ _手动模式

MergeBaseFrame_t

定义融合时基准帧属性

typedef enum MergeBaseFrame_e {
BASEFRAME_LONG = 0,
BASEFRAME_SHORT = 1,
} MergeBaseFrame_t;
成员名称描述
BASEFRAME LONG _融合时,以长帧为基准
BASEFRAME SHORT _融合时,以短帧为基准

MergeCurrCtlData_t

定义Merge控制参数属性

typedef struct MergeCurrCtlData_s {
float Envlv;
float MoveCoef;
} MergeCurrCtlData_t;
成员名称描述
Envlv当前环境亮度,取值范围:[0,1],精度0.000001
MoveCoef当前运动系数,取值范围:[0,1],精度0.000001,本值暂时为定值。

mMergeOECurveV21_t

定义手动Merge过曝曲线属性

typedef struct mMergeOECurveV21_s {
float Smooth;
float Offset;
} mMergeOECurveV21_t;
成员名称描述
Smooth过曝曲线的斜率,取值范围[0,1],默认值为0.4,精度0.01。
Offset过曝曲线的偏移值,取值范围[108,280],默认值为210,精度0.1。

mMergeMDCurveV21_t

定义长帧模式下运动曲线属性

typedef struct mMergeMDCurveV21_s {
float LM_smooth;
float LM_offset;
float MS_smooth;
float MS_offset;
} mMergeMDCurveV21_t;
成员名称描述
LM smooth _长帧和中帧之间运动曲线斜率,取值范围为[0,1],默认值为0.4,精度0.01。在 RK356x平台下,该值无效。
LM offset _长帧和中帧之间运动曲线偏移值,取值范围为[0.26,1],默认值为0.38,精度 0.01。在RK356x平台下,该值无效。
MS smooth _中帧和短帧之间运动曲线斜率,取值范围为[0,1],默认值为0.4,精度0.01。
MS offset _中帧和短帧之间运动曲线偏移值,取值范围为[0.26,1],默认值为0.38,精度 0.01。

mMergeAttrV21_t

定义RK3588中手动merge属性

typedef struct mMergeAttrV21_s {
mMergeOECurveV21_t OECurve;
mMergeMDCurveV21_t MDCurve;
} mMergeAttrV21_t;
成员名称描述
OECurve过曝曲线参数
MDCurve运动曲线参数

mergeAttrV21_t

RK356x芯片下merge属性配置

typedef struct mergeAttrV21_s {
merge_OpModeV21_t opMode;
mMergeAttrV21_t stManual;
MergeCurrCtlData_t CtlInfo;
} mergeAttrV21_t;
成员名称描述
opMode模式选择
stManual手动merge属性
CtlInfo控制量参数

mLongFrameModeData_t

定义长帧模式下,控制参数属性

typedef struct mLongFrameModeData_s {
mMergeOECurveV21_t OECurve;
mMergeMDCurveV21_t MDCurve;
} mLongFrameModeData_t;
成员名称描述
OECurve过曝曲线参数
MDCurve运动曲线参数

mMergeMDCurveV30Short_t

定义短帧模式下,运动曲线属性

typedef struct mMergeMDCurveV30Short_s{
float Coef;
float ms_thd0;
float lm_thd0;
} mMergeMDCurveV30Short_t;
成员名称描述
Coef控制系数,取值范围[0,1],默认值为0.05,精度0.0001。
ms thd0 _中短帧控制系数,取值范围[0,1],默认值为0.0,精度0.1。
lm thd0 _长中帧控制系数,取值范围[0,1],默认值为0.0,精度0.1。

mShortFrameModeData_t

定义短帧模式下,控制参数属性

typedef struct mShortFrameModeData_s {
mMergeOECurveV21_t OECurve;
mMergeMDCurveV30Short_t MDCurve;
} mShortFrameModeData_t;
成员名称描述
OECurve过曝曲线参数
MDCurve运动曲线参数

mMergeAttrV30_t

定义RK3588中手动merge属性

typedef struct mMergeAttrV30_s {
MergeBaseFrame_t BaseFrm;
mLongFrameModeData_t LongFrmModeData;
mShortFrameModeData_t ShortFrmModeData;
} mMergeAttrV30_t;
成员名称描述
BaseFrm融合基准帧
LongFrmModeData基准值为长帧时,控制数据数据
ShortFrmModeData基准值为短帧时,控制数据数据

mergeAttrV30_t

RK3588芯片下merge属性配置

typedef struct mergeAttrV30_s {
merge_OpModeV21_t opMode;
mMergeAttrV30_t stManual;
MergeCurrCtlData_t CtlInfo;
} mergeAttrV30_t;
成员名称描述
opMode模式选择
stManual手动merge属性
CtlInfo控制量参数

mergeAttr_t

merge属性配置

typedef struct mergeAttr_s {
rk_aiq_uapi_sync_t sync;
mergeAttrV21_t attrV21;
mergeAttrV30_t attrV30;
} mergeAttr_t;
成员名称描述
sync参考rk aiq uapi sync t定义,参见 “概述/API说明” 章节 _ _ _ _
attrV21RK356x芯片下merge属性,在RK3588芯片中无效
attrV30RK3588芯片下merge属性,在RK356x芯片中无效

DRC​

功能描述​

DRC(动态范围压缩, High Dynamic Range Compression),其作用是将高比特位的图像压缩到低比特位图像。

重要概念​

在线性或者HDR模式下均可使用DRC。

功能级API参考​

rk_aiq_uapi2_setDrcGain

【描述】

设置DrcGain相关参数。

【语法】

XCamReturn rk_aiq_uapi2_setDrcGain(const rk_aiq_sys_ctx_t* ctx, float Gain,
float Alpha, float Clip);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
GainGain值 取值范围:[1,8]输入
AlphaAlpha值 取值范围:[0,1]输入
ClipClip值 取值范围:[0,64]输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getDrcGain

【描述】

获取DrcGain相关参数。【语法】

XCamReturn rk_aiq_uapi2_getDrcGain(const rk_aiq_sys_ctx_t* ctx, float Gain,
float Alpha, float Clip);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
GainGain值 取值范围:[1,8]输出
AlphaAlpha值 取值范围:[0,1]输出
ClipClip值 取值范围:[0,64]输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setDrcHiLit

【描述】

设置DrcHiLit参数。

【语法】

XCamReturn rk_aiq_uapi2_setDrcHiLit(const rk_aiq_sys_ctx_t* ctx, float
Strength);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
Strength强度 取值范围:[0,1]输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getDrcHiLit

【描述】

获取DrcHiLit参数。

【语法】

XCamReturn rk_aiq_uapi2_getDrcHiLit(const rk_aiq_sys_ctx_t* ctx, float
Strength);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
Strength强度 取值范围:[0,1]输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setDrcLocalData

【描述】

设置DrcLocalData相关参数。

在调用本api时不需要调用rk_aiq_uapi2_enableDrc。同时,本api不能与DRC其他功能级设置api同时调用。

【语法】

XCamReturn rk_aiq_uapi2_setDrcLocalData(const rk_aiq_sys_ctx_t* ctx, float
LocalWeit, float GlobalContrast, float LoLitContrast,int LocalAutoEnable, float
LocalAutoWeit);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
LocalWeitLocalWeit值 取值范围:[0,1]输入
GlobalContrastGlobalContrast值 取值范围:[0,1]输入
LoLitContrastLoLitContrast值 取值范围:[0,1]输入
LocalAutoEnable自动Local开关 取值范围:[0,1]输入
LocalAutoWeit自动LocalWeit值 取值范围:[0,1]输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getDrcLocalData

【描述】

获取DrcLocalData相关参数。

【语法】

XCamReturn rk_aiq_uapi2_getDrcLocalData(const rk_aiq_sys_ctx_t* ctx, float*
LocalWeit, float* GlobalContrast, float* LoLitContrast,int* LocalAutoEnable,
float* LocalAutoWeit);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
LocalWeitLocalWeit值 取值范围:[0,1]输出
GlobalContrastGlobalContrast值 取值范围:[0,1]输出
LoLitContrastLoLitContrast值 取值范围:[0,1]输出
ocalAutoEnable自动Local开关 取值范围:[0,1]输出
LocalAutoWeit自动LocalWeit值 取值范围:[0,1]输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

模块级API参考​

rk_aiq_user_api2_adrc_SetAttrib

【描述】设置DRC软件属性。

【语法】

XCamReturn
rk_aiq_user_api2_adrc_SetAttrib(RkAiqAlgoContext* ctx,
drc_attrib_t attr);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
attrDRC软件属性结构体输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_adrc.h库文件:librkaiq.so

rk_aiq_user_api2_adrc_GetAttrib

【描述】获取DRC软件属性。

【语法】

XCamReturn
rk_aiq_user_api2_adrc_GetAttrib(RkAiqAlgoContext* ctx,
drc_attrib_t* attr);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
attrDRC软件属性结构体输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_adrc.h库文件:librkaiq.so

模块级API数据类型​

AdrcVersion_t

定义DRC版本属性

typedef enum AdrcVersion_e {
ADRC_VERSION_356X = 0,
ADRC_VERSION_3588 = 1,
ADRC_VERSION_MAX
} AdrcVersion_t;
成员名称描述
ADRC VERSION 356X _ _RK356x
ADRC VERSION 3588 _ _RK3588
ADRC VERSION MAX _ _最大版本模式

Drc_OpMode_t

定义DRC工作模式

typedef enum drc_OpMode_e {
DRC_OPMODE_API_OFF = 0,
DRC_OPMODE_MANU = 1,
DRC_OPMODE_DRC_GAIN = 2,
DRC_OPMODE_HILIT = 3,
DRC_OPMODE_LOCAL_TMO = 4,
} drc_OpMode_t;
成员名称描述
DRC OPMODE API OFF _ _ _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值,取值范围[1,8],默认值为1,精度0.01
Alpha手动Alpha值,取值范围[0,1],默认值为0.2,精度0.01
Clip手动Clip值,取值范围[0,64],默认值为16,精度0.01

mDrcHiLit_t

定义手动Drc HiLit参数属性

typedef struct mDrcHiLit_s {
float Strength;
} mDrcHiLit_t;
成员名称描述
Strength手动Strength值,取值范围[0,1],默认值为0,精度0.01

mLocalDataV21_t

定义RK356x下,手动Drc Local参数属性

typedef struct mLocalDataV21_s {
float LocalWeit;
float GlobalContrast;
float LoLitContrast;
} mLocalDataV21_t;
成员名称描述
LocalWeit手动LocalWeit值,取值范围[0,1],默认值为1,精度0.01
GlobalContrast手动GlobalContrast值,取值范围[0,1],默认值为0,精度0.01
LoLitContrast手动LoLitContrast值,取值范围[0,1],默认值为0,精度0.01

mLocalDataV30_t

定义RK356x下,手动Drc Local参数属性

typedef struct mLocalDataV30_s {
float LocalWeit;
int LocalAutoEnable;
float LocalAutoWeit;
float GlobalContrast;
float LoLitContrast;
} mLocalDataV30_t;
成员名称描述
LocalWeit手动LocalWeit值,取值范围[0,1],默认值为1,精度0.01。
LocalAutoEnable自动LocalWeit开关,取值范围[0,1],默认值为1,精度1。
LocalAutoWeit自动LocalWeit值,取值范围[0,1],默认值为0.4,精度0.01。
GlobalContrast手动GlobalContrast值,取值范围[0,1],默认值为0,精度0.01。
LoLitContrast手动LoLitContrast值,取值范围[0,1],默认值为0,精度0.01。

mDrcLocalV21_t

定义RK356x下,手动Drc Local参数属性

typedef struct mDrcLocalV21_s {
mLocalDataV21_t LocalData;
float curPixWeit;
float preFrameWeit;
float Range_force_sgm;
float Range_sgm_cur;
float Range_sgm_pre;
int Space_sgm_cur;
int Space_sgm_pre;
} mDrcLocalV21_t;
成员名称描述
LocalData手动LocalData设置
curPixWeit当前点的双边权重,取值范围[0,1],默认值为0.37,精度0.001。
preFrameWeit前帧双边权重,取值范围[0,1],默认值为0.8,精度0.001。
Range force sgm _ _双边值域 sigma 的倒数,取值范围[0,1],默认值为0,精度0.0001。
Range sgm cur _ _前帧双边空域sigma的倒数,取值范围[0,1],默认值为0.2,精度0.0001。
Range sgm pre _ _前一帧双边空域sigma的倒数,取值范围[0,1],默认值为0.2,精度 0.0001。
Space sgm cur _ _当前帧双边值域sigma的倒数,取值范围[0,4095],默认值为4068,精度 1。
Space sgm pre _ _前一帧双边值域sigma的倒数,取值范围[0,4095],默认值为3068,精度 1。

mDrcLocalV30_t

定义RK3588下,手动Drc Local参数属性

typedef struct mDrcLocalV30_s {
mLocalDataV30_t LocalData;
float curPixWeit;
float preFrameWeit;
float Range_force_sgm;
float Range_sgm_cur;
float Range_sgm_pre;
int Space_sgm_cur;
int Space_sgm_pre;
} mDrcLocalV30_t;
成员名称描述
LocalData手动LocalData设置
curPixWeit当前点的双边权重,取值范围[0,1],默认值为0.37,精度0.001
preFrameWeit前帧双边权重,取值范围[0,1],默认值为0.8,精度0.001
Range force sgm _ _双边值域 sigma 的倒数,取值范围[0,1],默认值为0,精度0.0001
Range sgm cur _ _前帧双边空域sigma的倒数,取值范围[0,1],默认值为0.2,精度0.0001
Range sgm pre _ _前一帧双边空域sigma的倒数,取值范围[0,1],默认值为0.2,精度0.0001
Space sgm cur _ _当前帧双边值域sigma的倒数,取值范围[0,4095],默认值为4068,精度1
Space sgm pre _ _前一帧双边值域sigma的倒数,取值范围[0,4095],默认值为3068,精度1

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_V21_t

定义RK356x芯片下手动Drc属性

typedef struct mdrcAttr_V21_s {
bool Enable;
mDrcGain_t DrcGain;
mDrcHiLit_t HiLight;
mDrcLocalV21_t LocalSetting;
mDrcCompress_t CompressSetting;
int Scale_y[ADRC_Y_NUM];
float Edge_Weit;
bool OutPutLongFrame;
int IIR_frame;
} mdrcAttr_V21_t;
成员名称描述
Enable手动Drc开关
DrcGain手动DrcGain设置
HiLight手动HiLit设置
LocalSetting手动Local设置
CompressSetting压缩曲线设置
Scale y _增益修正scale表,取值范围[0,2048],精度1.
Edge Weit _边缘响应scale值,取值范围[0,1],默认值0.02,精度0.01。用于降低高对 比度边缘Artifact。
OutPutLongFrame只输出长帧开关,0:关闭,1:开启。
IIR frame _IIR滤波器帧数,取值范围[1,1000],默认值为2。

mdrcAttr_V30_t

定义RK3588芯片下手动Drc属性

typedef struct mdrcAttr_V30_s {
bool Enable;
mDrcGain_t DrcGain;
mDrcHiLit_t HiLight;
mDrcLocalV30_t LocalSetting;
mDrcCompress_t CompressSetting;
int Scale_y[ADRC_Y_NUM];
float Edge_Weit;
bool OutPutLongFrame;
int IIR_frame;
} mdrcAttr_V30_t;
成员名称描述
Enable手动Drc开关
DrcGain手动DrcGain设置
HiLight手动HiLit设置
LocalSetting手动Local设置
CompressSetting压缩曲线设置
Scale y _增益修正scale表,取值范围[0,2048],精度1.
Edge Weit _边缘响应scale值,取值范围[0,1],默认值0.02,精度0.01。用于降低高对 比度边缘Artifact。
OutPutLongFrame只输出长帧开关,0:关闭,1:开启。
IIR frame _IIR滤波器帧数,取值范围[1,1000],默认值为2。

DrcInfo_t

定义DRC控制参数属性

typedef struct DrcInfo_s {
float EnvLv;
} DrcInfo_t;
成员名称描述
EnvLv当前环境亮度

drcAttr_t

定义DRC属性

typedef struct drcAttr_s {
rk_aiq_uapi_sync_t sync;
AdrcVersion_t Version;
drc_OpMode_t opMode;
mdrcAttr_V21_t stManualV21;
mdrcAttr_V30_t stManualV30;
mDrcGain_t stDrcGain;
mDrcHiLit_t stHiLit;
mLocalDataV21_t stLocalDataV21;
mLocalDataV30_t stLocalDataV30;
DrcInfo_t Info;
} drcAttr_t;
成员名称描述
sync参考rk aiq uapi sync t定义,参见 “概述/API说明” 章节 _ _ _ _
Version版本信息
opModeapi模式
stManualV21RK356x芯片下手动Drc属性
stManualV30RK3588芯片下手动Drc属性
stDrcGainDrcGain属性
stHiLitHiLit属性
stLocalDataV21RK356x芯片下LocalData属性
stLocalDataV30RK3588芯片下LocalData属性
Info控制参数信息

Noise Removal​

功能描述​

图像噪声是指存在于图像数据中的不必要的或多余的干扰信息。图像去噪是减少数字图像中噪声的过程。

功能级API参考​

rk_aiq_uapi2_setNRMode

【描述】 设置去噪模式。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
mode工作模式输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getNRMode

【描述】 获取当前去噪模式。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
mode工作模式输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setANRStrth

【描述】 设置普通去噪强度。

【语法】

XCamReturn rk_aiq_uapi2_setANRStrth(const rk_aiq_sys_ctx_t* ctx, unsigned int
level);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
level去噪强度,取值范围0.0-100.0, 默认值50。输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getANRStrth

【描述】 获取普通去噪强度。

【语法】

XCamReturn rk_aiq_uapi2_getANRStrth(const rk_aiq_sys_ctx_t* ctx, unsigned int*
level);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
level去噪强度,取值范围0.0-100.0, 默认值50。输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setMSpaNRStrth

【描述】 设置空域去噪强度。

【语法】

XCamReturn rk_aiq_uapi2_setMSpaNRStrth(const rk_aiq_sys_ctx_t* ctx, bool on,
unsigned int level);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
on开关输入
level去噪强度,取值范围0.0-100.0, 默认值50。输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getMSpaNRStrth

【描述】 获取空域去噪强度。

【语法】

XCamReturn rk_aiq_uapi2_getMSpaNRStrth(const rk_aiq_sys_ctx_t* ctx, bool *on,
unsigned int *level);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
on开关输出
level去噪强度,取值范围0.0-100.0, 默认值50。输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setMTNRStrth

【描述】 设置时域去噪强度。【语法】

XCamReturn rk_aiq_uapi2_setMTNRStrth(const rk_aiq_sys_ctx_t* ctx, bool on,
unsigned int level);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
on开关输入
level去噪强度,取值范围0.0-100.0, 默认值50。输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getMTNRStrth

【描述】 获取时域去噪强度。

【语法】

XCamReturn rk_aiq_uapi2_getMTNRStrth(const rk_aiq_sys_ctx_t* ctx, bool *on,
unsigned int *level);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
on开关输出
level去噪强度,取值范围0.0-100.0, 默认值50。输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

模块级API参考​

rk_aiq_user_api2_abayer2dnrV2_SetAttrib

【描述】设置去噪算法属性。

【语法】

XCamReturn
rk_aiq_user_api2_abayer2dnrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayer2dnr_attrib_v2_t* attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr去噪的参数属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_abayer2dnr_v2.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_abayer2dnrV2_GetAttrib

【描述】获取去噪算法属性。

【语法】

XCamReturn
rk_aiq_user_api2_abayer2dnrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayer2dnr_attrib_v2_t* attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr去噪的参数属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_abayer2dnr_v2.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_abayer2dnrV2_SetStrength

【描述】设置去噪力度。

【语法】

XCamReturn
rk_aiq_user_api2_abayer2dnrV2_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayer2dnr_strength_v2_t *pStrength)

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
pStrength去噪强度相关结构体,结构体中percent取值范围0.0-1.0输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_abayer2dnr_v2.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_abayer2dnrV2_GetStrength【描述】获取去噪力度。

【语法】

XCamReturn
rk_aiq_user_api2_abayer2dnrV2_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayer2dnr_strength_v2_t *pStrength);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
pPercnt去噪强度结构体指针,结构体中percent取值范围0.0-1.0输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_abayer2dnr_v2.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_abayertnrV2_SetAttrib

【描述】设置去噪算法属性。

【语法】

XCamReturn
rk_aiq_user_api2_abayertnrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayertnr_attrib_v2_t* attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr去噪的参数属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_abayertnr_v2.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_abayertnrV2_GetAttrib

【描述】获取去噪算法属性。

【语法】

XCamReturn
rk_aiq_user_api2_abayertnrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayertnr_attrib_v2_t* attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr去噪的参数属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_abayertnr_v2.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_abayertnrV2_SetStrength

【描述】设置去噪力度。

【语法】

XCamReturn
rk_aiq_user_api2_abayertnrV2_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayertnr_strength_v2_t *pStrength);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
pStrength去噪强度结构体指针,结构体中percent取值范围0.0-1.0输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_abayertnr_v2.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_abayertnrV2_GetStrength

【描述】获取去噪力度。

【语法】

XCamReturn
rk_aiq_user_api2_abayertnrV2_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_bayertnr_strength_v2_t *pStrength);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
pStrength去噪强度结构体指针,结构体中percent取值范围0.0-1.0输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_abayertnr_v2.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_aynrV3_SetAttrib

【描述】设置去噪算法属性。

【语法】

XCamReturn
rk_aiq_user_api2_aynrV3_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ynr_attrib_v3_t* attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr去噪的参数属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_aynr_v3.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_aynrV3_GetAttrib

【描述】获取去噪算法属性。

【语法】

XCamReturn
rk_aiq_user_api2_aynrV3_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ynr_attrib_v3_t* attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr去噪的参数属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_aynr_v3.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_aynrV3_SetStrength

【描述】设置去噪力度。

【语法】

XCamReturn
rk_aiq_user_api2_aynrV3_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ynr_strength_v3_t* pStrength);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
pStrength去噪强度结构体指针,结构体中percent取值范围0.0-1.0输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_aynr_v3.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_aynrV3_GetStrength【描述】获取去噪力度。

【语法】

XCamReturn
rk_aiq_user_api2_aynrV3_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ynr_strength_v3_t* pStrength);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
pStrength去噪强度结构体指针,结构体中percent取值范围0.0-1.0输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_aynr_v3.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_acnrV2_SetAttrib

【描述】设置去噪算法属性。

【语法】

XCamReturn
rk_aiq_user_api2_acnrV2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_cnr_attrib_v2_t* attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr去噪的参数属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_acnr_v2.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_acnrV2_GetAttrib

【描述】获取去噪算法属性。

【语法】

XCamReturn
rk_aiq_user_api2_acnrV2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_cnr_attrib_v2_t* attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr去噪的参数属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_acnr_v2.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_acnrV2_SetStrength

【描述】设置去噪力度。

【语法】

XCamReturn
rk_aiq_user_api2_acnrV2_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_cnr_strength_v2_t *pStrength);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
pStrength去噪强度结构体指针,结构体中percent取值范围0.0-1.0输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_acnr_v2.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_acnrV2_GetStrength

【描述】获取去噪力度。

【语法】

XCamReturn
rk_aiq_user_api2_acnrV2_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_cnr_strength_v2_t *pStrength);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
pStrength去噪强度结构体指针,结构体中percent取值范围0.0-1.0输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】头文件:rk_aiq_user_api2_acnr_v2.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

模块级API数据类型​

rk_aiq_bayer2dnr_attrib_v2_t

定义去噪模块的参数

typedef struct rk_aiq_bayer2dnr_attrib_v2_s {
rk_aiq_uapi_sync_t sync;
Abayer2dnr_OPMode_V2_t eMode;
Abayer2dnr_Auto_Attr_V2_t stAuto;
Abayer2dnr_Manual_Attr_V2_t stManual;
} rk_aiq_bayer2dnr_attrib_v2_t;
成员名称描述
sync同步异步模式选择,参见 “概述/API说明” 章节
eModebayer2dnr去噪模块模式
stAutobayer2dnr去噪模块自动模式参数
stManualbayer2dnr去噪模块手动模式参数

Abayer2dnr_OPMode_V2_t

定义去噪模块的模式

typedef enum Abayer2dnr_OPMode_V2_e {
ABAYER2DNR_OP_MODE_INVALID = 0,
ABAYER2DNR_OP_MODE_AUTO = 1,
ABAYER2DNR_OP_MODE_MANUAL = 2,
ABAYER2DNR_OP_MODE_REG_MANUAL = 3,
ABAYER2DNR_OP_MODE_MAX
} Abayer2dnr_OPMode_V2_t;
成员名称描述
ABAYER2DNR OP MODE INVALID _ _ _bayer域 2dnr去噪模块无效模式
ABAYER2DNR OP MODE AUTO _ _ _bayer域 2dnr去噪模块自动模式
ABAYER2DNR OP MODE MANUAL _ _ _bayer域 2dnr去噪模块手动模式的算法设置
ABAYER2DNR OP MODE REG MANUAL _ _ _ _bayer域 2dnr去噪模块手动模式的寄存器设置
ABAYER2DNR OP MODE MAX _ _ _bayer域 2dnr去噪模块模式最大值,是一个无效模 式

Abayer2dnr_Auto_Attr_V2_t

定义去噪模块的自动属性

typedef struct Abayer2dnr_Auto_Attr_V2_s
{
RK_Bayer2dnr_Params_V2_t st2DParams;
RK_Bayer2dnr_Params_V2_Select_t st2DSelect;
} Abayer2dnr_Auto_Attr_V2_t;
成员名称描述
st2DParamsbayer2dnr模块各个iso对应算法属性参数
st2DSelectbayer2dnr模块根据当前iso计算出来属性参数

Abayer2dnr_Manual_Attr_V2_t

定义去噪模块的手动属性

typedef struct Abayer2dnr_Manual_Attr_V2_s
{
RK_Bayer2dnr_Params_V2_Select_t st2DSelect;
RK_Bayer2dnr_Fix_V2_t st2Dfix;
} Abayer2dnr_Manual_Attr_V2_t;
成员名称描述
st2DSelectbayer2dnr手动模式下算法参数值
st2Dfixbayer2dnr手动模式下寄存器值

RK_Bayer2dnr_Params_V2_t

定义去噪模块的自动模式各个iso对应算法属性参数

typedef struct RK_Bayer2dnr_Params_V2_s
{
int enable;
float iso[RK_BAYER2DNR_V2_MAX_ISO_NUM];
int lumapoint[16];
int sigma[RK_BAYER2DNR_V2_MAX_ISO_NUM][16];
float filter_strength[RK_BAYER2DNR_V2_MAX_ISO_NUM];
float edgesofts[RK_BAYER2DNR_V2_MAX_ISO_NUM];
float ratio[RK_BAYER2DNR_V2_MAX_ISO_NUM];
float weight[RK_BAYER2DNR_V2_MAX_ISO_NUM];
int gauss_guide[RK_BAYER2DNR_V2_MAX_ISO_NUM];
int pix_diff[RK_BAYER2DNR_V2_MAX_ISO_NUM];
int diff_thld[RK_BAYER2DNR_V2_MAX_ISO_NUM];
} RK_Bayer2dnr_Params_V2_t;
成员名称参数类型描述
enable调试参数模块开关使能。1:模块打开,0:模块关闭。
ISO调试参数不同iso档位,对应不同调试参数。目前仅支持13档。
lumapoint标定数据不同pixel亮度,对应不同噪声sigma曲线点。共16个点。
sigma标定数据不同pixel亮度,对应不同噪声sigma曲线点。共16个点。
gauss guide _调试参数高斯导向是否使能。1:使能。0:关闭。
filter strength _调试参数去噪力度参数。取值范围[0, 16], 值越大,去噪力度越大。
edgesofts调试参数影响空域权重。取值范围[1, 16],默认值为1。
ratio调试参数软阈值权重。取值范围[0, 1.0]。值越小,去噪力度越大。
weight调试参数滤波输出权重,值越大,去噪力度越大。
pix diff _调试参数双边滤波的 5x5 窗口像素差值门限;默认配置值 0x3fff.
diff thld _调试参数双边滤波的计算欧式距离的平方差门限,默认配置值 0x3ff;

RK_Bayer2dnr_Params_V2_Select_t

定义去噪模块的手动模式下算法属性

typedef struct RK_Bayer2dnr_Params_V2_Select_s
{
int enable;
int lumapoint[16];
int sigma[16];
float filter_strength;
float edgesofts;
float ratio;
float weight;
int gauss_guide;
int pix_diff;
int diff_thld;
} RK_Bayer2dnr_Params_V2_Select_t;
成员名称参数类型描述
enable调试参数模块开关使能。1:模块打开,0:模块关闭。
lumapoint标定数据不同pixel亮度,对应不同噪声sigma曲线点。共16个点。
sigma标定数据不同pixel亮度,对应不同噪声sigma曲线点。共16个点。
gauss guide _调试参数高斯导向是否使能。1:使能。0:关闭。
filter strength _调试参数去噪力度参数。取值范围[0, 16], 值越大,去噪力度越大。
edgesofts调试参数影响空域权重。取值范围[1, 16],默认值为1。
ratio调试参数软阈值权重。取值范围[0, 1.0]。值越小,去噪力度越大。
weight调试参数滤波输出权重,值越大,去噪力度越大。
pix diff _调试参数双边滤波的 5x5 窗口像素差值门限;默认配置值 0x3fff.
diff thld _调试参数双边滤波的计算欧式距离的平方差门限,默认配置值 0x3ff;

RK_Bayer2dnr_Fix_V2_t

定义去噪模块的手动模式下寄存器配置

typedef struct RK_Bayer2dnr_Fix_V2_s {
//ISP_BAYNR_3A00_CTRL
uint8_t baynr_lg2_mode;
uint8_t baynr_gauss_en;
uint8_t baynr_log_bypass;
uint8_t baynr_en;
// ISP_BAYNR_3A00_DGAIN0-2
uint16_t baynr_dgain[3];
// ISP_BAYNR_3A00_PIXDIFF
uint16_t baynr_pix_diff;
// ISP_BAYNR_3A00_THLD
uint16_t baynr_diff_thld;
uint16_t baynr_softthld;
// ISP_BAYNR_3A00_W1_STRENG
uint16_t bltflt_streng;
uint16_t baynr_reg_w1;
// ISP_BAYNR_3A00_SIGMAX0-15
uint16_t sigma_x[16];
// ISP_BAYNR_3A00_SIGMAY0-15
uint16_t sigma_y[16];
// ISP_BAYNR_3A00_WRIT_D
uint16_t weit_d[3];
uint16_t lg2_lgoff;
uint16_t lg2_off;
uint32_t dat_max;
} RK_Bayer2dnr_Fix_V2_t;
参数位 宽参数说明
baynr gauss en _ _1高斯3x3导向滤波开关使能位; 1:打开滤波; 0:关闭滤波; 默认配置值为0;
baynr log bypass _ _1log变换是否执行的控制位,hdr时硬件内部强制关闭; 1:打开log变换bypass,就是关闭log变换; 0:关闭log变换bypass,就是打开log转换; 默认值为0;
baynr en _1Bayer 降噪的开关使能位; 1: 打开降噪; 0: 关闭降噪; 默认配置值为 0;
baynr dgain _18HDR 模式下,对应三帧的增益的参数,小数 10bit.
baynr pix diff _ _14双边滤波的 5x5 窗口像素差值门限; 默认配置值 0x3fff
baynr diff thld _ _10双边滤波的计算欧式距离的平方差门限, 默认配置值 0x3ff;
baynr softthld _10软阈值的权重值,值越大阈值越大,保留的噪声越多, 小数位 10bit,默认配置值 0xa;
bltflt streng _12双边滤波的降噪强度; 小数 8bit; 默认配置值 0xa3
baynr reg w1 _ _10滤波输出权重值,值越大使用滤波输出值越多,越小使用原始值越多. 小数位 10bit, 默认配置值 0x3ff;
sigma x _16噪声曲线的 16 个亮度水平等级,配置时要保证两个值的 插值为 2 的幂次方;
sigma y _16噪声曲线的 16 个噪声 sigma 等级; 配置参数由标定得到.
weit d _10空域权重值,分别表示不同位置的权重值. 小数 10bit; 默认配置值分别是 0x178, 0x249, 0x31d;

rk_aiq_bayer2dnr_strength_v2_t

定义去噪模块的去噪强度配置结构体

typedef struct rk_aiq_bayer2dnr_strength_v2_s {
rk_aiq_uapi_sync_t sync;
float percent;
} rk_aiq_bayer2dnr_strength_v2_t;
成员名称描述
sync同步异步模式选择,参见 “概述/API说明” 章节
percent去噪强度,取值范围0.0-1.0。

rk_aiq_bayertnr_attrib_v2_t

定义去噪模块参数

typedef struct rk_aiq_bayertnr_attrib_v2_s {
rk_aiq_uapi_sync_t sync;
Abayertnr_OPMode_V2_t eMode;
Abayertnr_Auto_Attr_V2_t stAuto;
Abayertnr_Manual_Attr_V2_t stManual;
} rk_aiq_bayertnr_attrib_v2_t;
成员名称描述
sync同步异步模式选择,参见 “概述/API说明” 章节
eModebayertnr去噪模块模式
stAutobayertnr去噪模块自动模式参数
stManualbayertnr去噪模块手动模式参数

Abayertnr_OPMode_V2_t

定义去噪模块的模式

typedef enum Abayertnr_OPMode_V2_e {
ABAYERTNRV2_OP_MODE_INVALID = 0,
ABAYERTNRV2_OP_MODE_AUTO = 1,
ABAYERTNRV2_OP_MODE_MANUAL = 2,
ABAYERTNRV2_OP_MODE_REG_MANUAL = 3,
ABAYERTNRV2_OP_MODE_MAX
} Abayertnr_OPMode_V2_t;
成员名称描述
ABAYERTNRV2 OP MODE INVALID _ _ _bayer域 tnr去噪模块无效模式
ABAYERTNRV2 OP MODE AUTO _ _ _bayer域 tnr去噪模块自动模式
ABAYERTNRV2 OP MODE MANUAL _ _ _bayer域 tnr去噪模块手动模式的算法设置
ABAYERTNRV2 OP MODE REG MANUAL _ _ _ _bayer域 tnr去噪模块手动模式的寄存器设置
ABAYERTNRV2 OP MODE MAX _ _ _bayer域 tnr去噪模块模式最大值,是一个无效模 式

Abayertnr_Auto_Attr_V2_t

定义去噪模块的自动属性

typedef struct Abayertnr_Auto_Attr_V2_s
{
int bayernr3DEn;
RK_Bayertnr_Params_V2_t st3DParams;
RK_Bayertnr_Params_V2_Select_t st3DSelect;
} Abayertnr_Auto_Attr_V2_t;
成员名称描述
bayernr3DEnbayer3dnr模块使能开关
st3DParamsbayer3dnr模块自动模式各个iso对应算法属性参数
st3DSelectbayer3dnr模块根据当前iso计算出来属性参数

Abayertnr_Manual_Attr_V2_t

定义去噪模块的手动属性

typedef struct Abayertnr_Manual_Attr_V2_s
{
int bayernr3DEn;
RK_Bayertnr_Params_V2_Select_t st3DSelect;
RK_Bayertnr_Fix_V2_t st3DFix;
} Abayertnr_Manual_Attr_V2_t;
成员名称描述
bayernr3DEnbayer3dnr模块使能开关
st3DSelectbayer3dnr手动模式下算法参数值
st3Dfixbayer3dnr手动模式下寄存器值

RK_Bayertnr_Params_V2_t

定义去噪模块的自动模式各个iso对应算法属性参数

typedef struct RK_Bayertnr_Params_V2_s
{
int enable;
float iso[RK_BAYERNR_V2_MAX_ISO_NUM];
//calib
int lumapoint[16];
int sigma[RK_BAYERNR_V2_MAX_ISO_NUM][16];
int lumapoint2[16];
int lo_sigma[RK_BAYERNR_V2_MAX_ISO_NUM][16];
int hi_sigma[RK_BAYERNR_V2_MAX_ISO_NUM][16];
//tuning
int thumbds[RK_BAYERNR_V2_MAX_ISO_NUM];
int lo_enable[RK_BAYERNR_V2_MAX_ISO_NUM];
int hi_enable[RK_BAYERNR_V2_MAX_ISO_NUM];
int lo_med_en[RK_BAYERNR_V2_MAX_ISO_NUM];
int lo_gsbay_en[RK_BAYERNR_V2_MAX_ISO_NUM];
int lo_gslum_en[RK_BAYERNR_V2_MAX_ISO_NUM];
int hi_med_en[RK_BAYERNR_V2_MAX_ISO_NUM];
int hi_gslum_en[RK_BAYERNR_V2_MAX_ISO_NUM];
int global_pk_en[RK_BAYERNR_V2_MAX_ISO_NUM];
int global_pksq[RK_BAYERNR_V2_MAX_ISO_NUM];
float lo_filter_strength[RK_BAYERNR_V2_MAX_ISO_NUM];
float hi_filter_strength[RK_BAYERNR_V2_MAX_ISO_NUM];
float soft_threshold_ratio[RK_BAYERNR_V2_MAX_ISO_NUM];
float hi_wgt_comp[RK_BAYERNR_V2_MAX_ISO_NUM];
float clipwgt[RK_BAYERNR_V2_MAX_ISO_NUM];
float hidif_th[RK_BAYERNR_V2_MAX_ISO_NUM];
} RK_Bayertnr_Params_V2_t;
成员名称参数类 型描述
Enable调试参 数模块使能开关
iso调试参 数不同iso档位,对应不同调试参数。目前仅支持13档
lumapoint / sigma标定参 数不同亮度对应的噪声曲线值。共16个点。 lumapoint对应pixel亮度,sigma对应噪声曲线值
lumapoint2 / lo sigma _标定参 数不同亮度对应的噪声曲线值。共16个点。 lumapoint2对应像素亮度,lo sigma对应噪声曲线值 _
lumapoint2 / hi sigma _标定参 数不同亮度对应的噪声曲线值。共16个点。 lumapoint2对应像素亮度,hi sigma对应噪声曲线值 _
thumbds调试参 数下采样比例
lo enable _调试参 数低频运动判断是否打开, 1打开,0关闭。默认打开。
hi enable _调试参 数高频运动判断是否打开, 1打开,0关闭。默认打开。
lo med en _ _调试参 数内部低频子模块开关, 1打开,0关闭。默认打开。
lo gsbay en _ _调试参 数内部低频子模块开关, 1打开,0关闭。默认打开。
lo gslum en _ _调试参 数内部低频子模块开关, 1打开,0关闭。默认打开。
hi med en _ _调试参 数内部高频子模块开关, 1打开,0关闭。默认打开。
hi gslum en _ _调试参 数内部高频子模块开关, 1打开,0关闭。默认打开。
global pk en _ _调试参 数时域降噪是否使用全局 pk, 1使用,0不使用。 目前暂只能用0.
global pksq _调试参 数全局 pk 的平方值,当global pk en为 1 的时候才用它. _ _ 默认值1024,取值范围[0, 268435455]
lo filter strength _ _调试参 数高频运动判断力度。最终影响hi sigma进而影响时域去噪力 度。 默认值1, 取值范围[0.0, 16.0]
hi filter strength _ _调试参 数高频运动判断力度。最终影响hi sigma进而影响时域去噪力 度。 默认值1, 取值范围[0.0, 16.0]
成员名称参数类 型描述
soft threshold ratio _ _调试参 数软阈值权重。值越大,保留噪声越多 取值范围[0.0 1.0],默认值0。
hi wgt comp _ _调试参 数叠加权重回补的比例系数值,只在高频打开的时候才有用; 默认值0.16, 取值范围[0.0, 1.0]。
clipwgt调试参 数图像叠加的权重限制值。 默认值0.03215, 取值范围[0.0, 1.0]。
hidif th _调试参 数高频差异阈值。 默认值32767, 取值范围[0, 65535]。

RK_Bayertnr_Params_V2_Select_t

定义去噪模块的手动模式下算法属性结构体

typedef struct RK_Bayertnr_Params_V2_Select_s
{
int enable;
//calib
int lumapoint[16];
int sigma[16];
int lumapoint2[16];
int lo_sigma[16];
int hi_sigma[16];
//tuning
int thumbds;
int lo_enable;
int hi_enable;
int lo_med_en;
int lo_gsbay_en;
int lo_gslum_en;
int hi_med_en;
int hi_gslum_en;
int global_pk_en;
int global_pksq;
float lo_filter_strength;
float hi_filter_strength;
float soft_threshold_ratio;
float clipwgt;
float hi_wgt_comp;
float hidif_th;
} RK_Bayertnr_Params_V2_Select_t;
成员名称参数类 型描述
Enable调试参 数模块使能开关
lumapoint / sigma标定参 数不同亮度对应的噪声曲线值。共16个点。 lumapoint对应pixel亮度,sigma对应噪声曲线值
lumapoint2 / lo sigma _标定参 数不同亮度对应的噪声曲线值。共16个点。 lumapoint2对应像素亮度,lo sigma对应噪声曲线值 _
lumapoint2 / hi sigma _标定参 数不同亮度对应的噪声曲线值。共16个点。 lumapoint2对应像素亮度,hi sigma对应噪声曲线值 _
thumbds调试参 数下采样比例
lo enable _调试参 数低频运动判断是否打开, 1打开,0关闭。默认打开。
hi enable _调试参 数高频运动判断是否打开, 1打开,0关闭。默认打开。
lo med en _ _调试参 数内部低频子模块开关, 1打开,0关闭。默认打开。
lo gsbay en _ _调试参 数内部低频子模块开关, 1打开,0关闭。默认打开。
lo gslum en _ _调试参 数内部低频子模块开关, 1打开,0关闭。默认打开。
hi med en _ _调试参 数内部高频子模块开关, 1打开,0关闭。默认打开。
hi gslum en _ _调试参 数内部高频子模块开关, 1打开,0关闭。默认打开。
global pk en _ _调试参 数时域降噪是否使用全局 pk, 1使用,0不使用。 目前暂只能用0.
global pksq _调试参 数全局 pk 的平方值,当global pk en为 1 的时候才用它. _ _ 默认值1024,取值范围[0, 268435455]
lo filter strength _ _调试参 数高频运动判断力度。最终影响hi sigma进而影响时域去噪力 度。 默认值1, 取值范围[0.0, 16.0]
hi filter strength _ _调试参 数高频运动判断力度。最终影响hi sigma进而影响时域去噪力 度。 默认值1, 取值范围[0.0, 16.0]
soft threshold ratio _ _调试参 数软阈值权重。值越大,保留噪声越多 取值范围[0.0 1.0],默认值0。
成员名称参数类 型描述
hi wgt comp _ _调试参 数叠加权重回补的比例系数值,只在高频打开的时候才有用; 默认值0.16, 取值范围[0.0, 1.0]。
clipwgt调试参 数图像叠加的权重限制值。 默认值0.03215, 取值范围[0.0, 1.0]。
hidif th _调试参 数高频差异阈值。 默认值32767, 取值范围[0, 65535]。

RK_Bayertnr_Fix_V2_t

定义去噪模块的手动模式下寄存器配置

typedef struct RK_Bayertnr_Fix_V2_s {
// BAY3D_BAY3D_CTRL 0x2c00
uint8_t bay3d_exp_sel;
uint8_t bay3d_soft_st;
uint8_t bay3d_soft_mode;
uint8_t bay3d_bwsaving_en;
uint8_t bay3d_loswitch_protect;
uint8_t bay3d_glbpk_en;
uint8_t bay3d_logaus3_bypass_en;
uint8_t bay3d_logaus5_bypass_en;
uint8_t bay3d_lomed_bypass_en;
uint8_t bay3d_hichnsplit_en;
uint8_t bay3d_hiabs_pssel;
uint8_t bay3d_higaus_bypass_en;
uint8_t bay3d_himed_bypass_en;
uint8_t bay3d_lobypass_en;
uint8_t bay3d_hibypass_en;
uint8_t bay3d_bypass_en;
uint8_t bay3d_en_i;
// BAY3D_BAY3D_KALRATIO 0x2c04
uint16_t bay3d_softwgt;
uint16_t bay3d_hidif_th;
// BAY3D_BAY3D_GLBPK2 0x2c08
uint32_t bay3d_glbpk2;
// BAY3D_BAY3D_WGTLMT 0x2c10
uint16_t bay3d_wgtlmt;
uint16_t bay3d_wgtratio;
// BAY3D_BAY3D_SIG_X0 0x2c14 - 0x2c30
uint16_t bay3d_sig0_x[16];
// BAY3D_BAY3D_SIG0_Y0 0x2c34 - 0x2c50
uint16_t bay3d_sig0_y[16];
// BAY3D_BAY3D_SIG_X0 0x2c54 - 0x2c70
uint16_t bay3d_sig1_x[16];
// BAY3D_BAY3D_SIG1_Y0 0x2c74 - 0x2c90
uint16_t bay3d_sig1_y[16];
// BAY3D_BAY3D_SIG2_Y0 0x2c94 - 0x2cb0
uint16_t bay3d_sig2_y[16];
//BAY3D_BAY3D_LODIF_STAT0 0x2cb4 -0x2cb8
uint64_t ro_sum_lodif;
//BAY3D_BAY3D_LODIF_STAT0 0x2cbc -0x2cc0
uint64_t ro_sum_hidif0;
//BAY3D_BAY3D_MI_ST 0x2CC8
uint8_t sw_bay3dmi_st_linemode;
uint8_t sw_bay3d_mi2cur_linecnt;
} RK_Bayertnr_Fix_V2_t;
参数位 宽参数说明
bay3d soft st _ _1软件模式的启动脉冲位,开启的时候写 1.
bay3d soft mode _ _1软件模式的使能位. 1: 打开软件模式;> 0: 关闭软件模式; 默认配置值 0x0;
bay3d bwsaving en _ _1带宽优化使能位,非 hdr 才有效. 1: 打开优化; 0: 关闭优化; 默认配置值 0x0;
bay3d loswitch protect _ _1
bay3d glbpk en _ _1Bayer 时域降噪是否使用全局 pk; 1: 使用全局的 pk 值; 0: 使用局部的 pk 值; 默认配置值为 1;
bay3d logaus3 bypass en _ _ _1低频在后级亮度域上是否做高斯滤波; 1: 不做; 0: 做; 默认配置值 0x0;
bay3d logaus5 bypass en _ _ _1低频在前级 bayer 域上是否做高斯滤波; 1: 不做; 0: 做; 默认配置值 0x0;
bay3d lomed bypass en _ _ _1低频是否做中值滤波; 1: 不做; 0: 做; 默认配置值 0x0;
bay3d hichnsplit en _ _1高频判断时选择它的高斯滤波是在 bayer 域或亮度域上做, 只开高频的运动判断时,打开这个使能位; 1: 在 bayer 域高斯滤波; 0: 在亮度域做高斯滤波; 默认配置值 0x0;
bay3d hiabs pssel _ _1高频判断时在高斯滤波前是否做绝对值,只开高频的运动判 断时,打开这个使能位; 1: 做; 0: 不做; 默认配置值 0x0;
bay3d higaus bypass en _ _ _1高频是否做高斯滤波; 1: 不做; 0: 做; 默认配置值 0x0;
参数位 宽参数说明
bay3d himed bypass en _ _ _1高频是否做中值滤波; 1: 不做; 0: 做; 默认配置值 0x0;
bay3d lobypass en _ _1高频运动判断是否打开; 1: 关闭; 0: 打开; 默认配置值 0x0;
bay3d hibypass en _ _1高频运动判断是否打开; 1: 关闭; 0: 打开; 默认配置值 0x0;
bay3d bypass en _ _1Bayer 时域降噪的 bypass 使能位; 1: 打开 bypass,相当于 bayer3d 不做. 0: 关闭 bypass; 默认配置值为 0;
bay3d en i _ _1Bayer 时域降噪的开关使能位; 1: 打开时域降噪; 0: 关闭时域降噪; 默认配置值为 0;
bay3d softwgt _10软阈值的权重值,值越大阈值越大,保留的噪声越多. 小数位 10bit,默认配置值 0x100;
bay3d hidif th _ _16统计高频差异值个数的阈值.默认配置值 0xffff
bay3d glbpk2 _28全局 pk 的平方值,当 pk en 为 0 的时候才用它.默认配置值 _ 0x800;
bay3d wgtlmt _10图像叠加的权重限制值. 小数位为 10 位, 默认配置值 0x380;
bay3d wgtratio _10叠加权重回补的比例系数值,只在高频打开的时候才有用; 小数位为 10 位, 默认配置值 0x0;
bay3d sig0 x0-15 _ _16噪声曲线的 16 个亮度水平等级,配置时要保证两个值的 差值为 2 的幂次方;
bay3d sig0 y0-15 _ _14噪声曲线的 16 个噪声 sigma 等级;配置参数由标定得到.
bay3d sig1 x0-15 _ _16高低频的噪声曲线的 16 个亮度水平等级,配置时要保证 两个值的差值为 2 的幂次方;
bay3d sig1 y0-15 _ _14高频的噪声曲线的 16 个噪声 sigma 等级;配置参数由标定 得到.
bay3d sig2 y0-15 _ _14低频的噪声曲线的 16 个噪声 sigma 等级;配置参数由标定 得到.

rk_aiq_bayertnr_strength_v2_t

定义去噪模块的去噪强度配置结构体

typedef struct rk_aiq_bayertnr_strength_v2_s {
rk_aiq_uapi_sync_t sync;
float percent;
} rk_aiq_bayertnr_strength_v2_t;
成员名称描述
sync同步异步模式选择,参见 “概述/API说明” 章节
percent去噪强度,取值范围0.0-1.0。

rk_aiq_ynr_attrib_v3_t

定义去噪模块的参数

typedef struct rk_aiq_ynr_attrib_v3_s {
rk_aiq_uapi_sync_t sync;
Aynr_OPMode_V3_t eMode;
Aynr_Auto_Attr_V3_t stAuto;
Aynr_Manual_Attr_V3_t stManual;
} rk_aiq_ynr_attrib_v3_t;
成员名称描述
sync同步异步模式选择,参见 “概述/API说明” 章节
eModeynr去噪模块模式
stAutoynr去噪模块自动模式参数
stManualynr去噪模块手动模式参数

Aynr_OPMode_V3_t

定义去噪模块的模式

typedef enum Aynr_OPMode_V3_e {
AYNRV3_OP_MODE_INVALID = 0,
AYNRV3_OP_MODE_AUTO = 1,
AYNRV3_OP_MODE_MANUAL = 2,
AYNRV3_OP_MODE_REG_MANUAL = 3,
AYNRV3_OP_MODE_MAX
} Aynr_OPMode_V3_t;
成员名称描述
AYNRV3 OP MODE INVALID _ _ _y域 ynr去噪模块无效模式
AYNRV3 OP MODE AUTO _ _ _y域 ynr去噪模块自动模式
AYNRV3 OP MODE MANUAL _ _ _y域 ynr去噪模块手动模式的算法设置
AYNRV3 OP MODE REG MANUAL _ _ _ _y域 ynr去噪模块手动模式的寄存器设置
AYNRV3 OP MODE MAX _ _ _y域 ynr去噪模块模式最大值,是一个无效模式

Aynr_Auto_Attr_V3_t

定义去噪模块的自动属性

typedef struct Aynr_Auto_Attr_V3_s
{
RK_YNR_Params_V3_t stParams;
RK_YNR_Params_V3_Select_t stSelect;
} Aynr_Auto_Attr_V3_t;
成员名称描述
stParamsynr模块各个iso对应算法属性参数
stSelectynr模块根据当前iso计算出来属性参数

Aynr_Manual_Attr_V3_t

定义去噪模块的手动属性

typedef struct Aynr_Manual_Attr_V3_s
{
RK_YNR_Params_V3_Select_t stSelect;
RK_YNR_Fix_V3_t stFix;
} Aynr_Manual_Attr_V3_t;
成员名称描述
stSelectynr手动模式下算法参数值
stFixynr手动模式下寄存器值

RK_YNR_Params_V3_t

定义YNR去噪模块自动模式各个iso对应算法属性参数

typedef struct RK_YNR_Params_V3_s
{
int enable;
char version[64];
float iso[RK_YNR_V3_MAX_ISO_NUM];
RK_YNR_Params_V3_Select_t arYnrParamsISO[RK_YNR_V3_MAX_ISO_NUM];
} RK_YNR_Params_V3_t;
成员名称描述
enableynr模块使能开关
versionynr模块版本号
iso不同iso档位,对应不同调试参数。目前仅支持13档
RK YNR Params V3 Select t _ _ _ _ _ynr模块算法参数

RK_YNR_Params_V3_Select_t

定义去噪模块的手动模式下算法属性

typedef struct RK_YNR_Params_V3_Select_s
{
int enable;
float lci;
float hci;
float sigma[YNR_V3_ISO_CURVE_POINT_NUM];
short lumaPoint[YNR_V3_ISO_CURVE_POINT_NUM];
float lo_lumaPoint[6];
float lo_ratio[6];
float hi_lumaPoint[6];
float hi_ratio[6];
// low frequency
float rnr_strength[17];
int ynr_bft3x3_bypass;
int ynr_lbft5x5_bypass;
int ynr_lgft3x3_bypass;
int ynr_flt1x1_bypass;
int ynr_sft5x5_bypass;
float low_bf1;
float low_bf2;
float low_thred_adj;
float low_peak_supress;
float low_edge_adj_thresh;
float low_lbf_weight_thresh;
float low_center_weight;
float low_dist_adj;
float low_weight;
float low_filt1_strength;
float low_filt2_strength;
float low_bi_weight;
// high frequency
float base_filter_weight1;
float base_filter_weight2;
float base_filter_weight3;
float high_thred_adj;
float high_weight;
float high_direction_weight[8];
float hi_min_adj;
float hi_edge_thed;
//local gain control
float ynr_global_gain_alpha;
float ynr_global_gain;
float ynr_adjust_thresh;
float ynr_adjust_scale;
} RK_YNR_Params_V3_Select_t;
成员名称参数 类型描述
enable调试 参数ynr模块使能开关,1:模块打开,0:模块关闭。
lci标定 数据影响低频噪声sigma影响因子。值越大,噪声sigma越大,去 噪力度越强。
hci标定 数据影响高频噪声sigma影响因子。值越大,噪声sigma越大,去 噪力度越强。
sigma标定 数据噪声sigma曲线。
lumaPoint标定 数据不同pixel亮度,对应不同噪声sigma曲线点。共16个点。
rnr strength _调试 参数图像中心,按照圆的半径r方向,设置不同去噪力度。 主要是为lsc这种噪声进行配置的。 取值范围[0, 16.0 ],默认值1。
ynr bft3x3 bypass _ _调试 参数模块内部子模块bypass功能 0:功能使能 1:功能bypass 一般情况,全部子模块都打开使能,这几个值设置为0。
ynr lbft5x5 bypass _ _调试 参数模块内部子模块bypass功能 0:功能使能 1:功能bypass 一般情况,全部子模块都打开使能,这几个值设置为0。
ynr lgft3x3 bypass _ _调试 参数模块内部子模块bypass功能 0:功能使能 1:功能bypass 一般情况,全部子模块都打开使能,这几个值设置为0。
ynr flt1x1 bypass _ _调试 参数模块内部子模块bypass功能 0:功能使能 1:功能bypass 一般情况,全部子模块都打开使能,这几个值设置为0。
ynr sft5x5 bypass _ _调试 参数模块内部子模块bypass功能 0:功能使能 1:功能bypass 一般情况,全部子模块都打开使能,这几个值设置为0。
low bf1 _调试 参数原图3x3双边滤波力度,值越大,去噪越强。 取值范围[0.01, 32],默认值1。
low bf2 _调试 参数上一帧小图5x5双边滤波力度,值越大,去噪越强。 取值范围[0.01, 32],默认值1。
low thred adj _ _调试 参数低频软阈值的调整力度,值越大,低频降噪力度越大。 取值范围[0, 31],默认值0.5。
成员名称参数 类型描述
low peak supress _ _调试 参数控制去除孤立噪声的力度,值越小,去噪力度越大。 取值范围[0, 1],默认值0.5。
low edge adj thresh _ _ _调试 参数小图边缘检测的调整系数的门限,用于限制调整系数所能取 到的最大值。 值越小,去噪力度越大,图像越模糊。取值范围[0, 1023]整 数,默认值7。
low lbf weight thresh _ _ _调试 参数用于对 5x5 的双边滤波的权重进行限制, 该值越大,则低频 降噪力度越弱。 取值范围[0.0,1.0]。默认值0.25。
low center weight _ _调试 参数5x5 双边滤波时中心点的权重,该值越小,则降噪力度越 强。 取值范围[0,1],默认值0.5。
low dist adj _ _调试 参数双边滤波距离权重调整因子。值越小,去噪越强。 取值范围[0, 127.0],默认值8.0。
low weight _调试 参数低频去噪结果的权重,值越大,低频降噪力度越大。 取值范围[0, 1],默认值0.5。
low filt1 strength _ _调试 参数对原图进行高斯滤波的滤波核权重。 取值范围[0,1.0],默认值0.7。
low filt2 strength _ _调试 参数对双边滤波的结果进行高斯滤波的滤波核权重。 取值范围[0,1.0],默认值0.85。
low bi weight _ _调试 参数软阈值处理中使用的第一步双边滤波权重,该值越大,则降 噪力度也越大。 取值范围[0, 1],默认值0.3。
base filter weight1 _ _调试 参数方向滤波器的系数 。一般不太需要调整。
high thred adj _ _调试 参数软阈值的调整系数,该值越大,则高频降噪的力度也越大。 取值范围[0, 31.0],默认值1.0。
high weight _调试 参数高频去噪权重,注意该值表示的是保留的高频分量的比例, 值越小,则表示降噪力度越强. 取值范围[0, 1],默认值0.78。
high direction weight _ _调试 参数各个方向的权重设置, 某一方向上该值越大,表示沿着该方 向的降噪力度越强。
hi min adj _ _调试 参数所有差异值减去的最小差异值的比例,该值越大,则边缘越 锐利。 取值范围[0.0, 1.0],默认值0.9
hi edge thed _ _调试 参数对差异值作限制的门限,该值越小,则高频降噪力度越大。 取值范围[0, 255]的整数,默认值100。
成员名称参数 类型描述
ynr global gain alpha _ _ _调试 参数ynr去噪local模式和global模式插值力度配置。 一般使用默认值,不用配置,全部使用local gain的方式。 取值范围[0.0 1.0],默认值0
ynr global gain _ _调试 参数ynr去噪local模式和global模式插值力度配置。 一般使用默认值,不用配置,全部使用local gain的方式。 gain取值范围[0.0 64.0]。默认值1。
ynr adjust thresh _ _调试 参数对大于阈值ynr adjust thresh的噪声进行去噪力度控制。 _ _ 运动区域噪声比较大,设定合适阈值,使运动区域ynr去噪力 度加大。 取值范围[0.0, 1.0], 默认值1。
ynr adjust scale _ _调试 参数对大于阈值ynr adjust thresh的噪声进行去噪力度控制。 _ _ 运动区域噪声比较大,设定合适阈值,使运动区域ynr去噪力 度加大。 取值范围[0, 16.0], 默认值1
lo lumaPoint / _ lo ratio _调试 参数不同pixel亮度,对低频sigma进行微调。
hi lumaPoint / _ hi ratio _调试 参数不同pixel亮度,对高频sigma进行微调。

RK_YNR_Fix_V3_t

定义去噪模块的手动模式下寄存器配置

typedef struct RK_YNR_Fix_V3_s {
// YNR_2700_GLOBAL_CTRL (0x0000)
uint8_t ynr_rnr_en;
uint8_t ynr_gate_dis;
uint8_t ynr_thumb_mix_cur_en;
uint8_t ynr_global_gain_alpha;
uint16_t ynr_global_gain;
uint8_t ynr_flt1x1_bypass_sel;
uint8_t ynr_sft5x5_bypass;
uint8_t ynr_flt1x1_bypass;
uint8_t ynr_lgft3x3_bypass;
uint8_t ynr_lbft5x5_bypass;
uint8_t ynr_bft3x3_bypass;
uint8_t ynr_en;
// YNR_2700_RNR_MAX_R (0x0004)
uint8_t ynr_local_gainscale;
uint16_t ynr_rnr_max_r;
// YNR_2700_RNR_MAX_R (0x0008)
uint16_t ynr_rnr_center_coorv;
uint16_t ynr_rnr_center_coorh;
// YNR_2700_RNR_MAX_R (0x000c)
uint8_t ynr_localgain_adj;
uint16_t ynr_localgain_adj_thresh;
// YNR_2700_LOWNR_CTRL0 (0x0010)
uint16_t ynr_low_bf_inv[2];
// YNR_2700_LOWNR_CTRL1 (0x0014)
uint8_t ynr_low_peak_supress;
uint16_t ynr_low_thred_adj;
// YNR_2700_LOWNR_CTRL2 (0x0018)
uint16_t ynr_low_dist_adj;
uint16_t ynr_low_edge_adj_thresh;
// YNR_2700_LOWNR_CTRL3 (0x001c)
uint8_t ynr_low_bi_weight;
uint8_t ynr_low_weight;
uint16_t ynr_low_center_weight;
// YNR_2700_HIGHNR_CTRL0 (0x0020)
uint8_t ynr_hi_min_adj;
uint16_t ynr_high_thred_adj;
// YNR_2700_HIGHNR_CTRL1 (0x0024)
uint8_t ynr_high_retain_weight;
uint8_t ynr_hi_edge_thed;
// YNR_2700_HIGHNR_BASE_FILTER_WEIGHT (0x0028)
uint8_t ynr_base_filter_weight[3];
// YNR_2700_HIGHNR_BASE_FILTER_WEIGHT (0x002c)
uint32_t ynr_frame_full_size;
uint16_t ynr_lbf_weight_thres;
// YNR_2700_GAUSS1_COEFF (0x0030)
uint16_t ynr_low_gauss1_coeff[3];
// YNR_2700_GAUSS2_COEFF (0x0034)
uint16_t ynr_low_gauss2_coeff[3];
// YNR_2700_DIRECTION_W_0_3 (0x0038 - 0x003c)
uint8_t ynr_direction_weight[8];
// YNR_2700_SGM_DX_0_1 (0x0040 - 0x0060)
uint16_t ynr_luma_points_x[17];
// YNR_2700_LSGM_Y_0_1 (0x0070- 0x0090)
uint16_t ynr_lsgm_y[17];
// YNR_2700_HSGM_Y_0_1 (0x00a0- 0x00c0)
uint16_t ynr_hsgm_y[17];
// YNR_2700_RNR_STRENGTH03 (0x00d0- 0x00e0)
uint16_t ynr_rnr_strength[17];
} RK_YNR_Fix_V3_t;
成员名称位宽 (整 数.小 数)描述
ynr low bf inv[0] _ _ _5.9用于控制去噪力度,注意这个寄存器配置的值力度的倒 数,所以该值越小,去 噪的力度越大。 该值为 512 表示 1 倍的去噪力度, 256 表示 2 倍的去 噪力度。 取值范围 [1, 16383]
ynr low bf[1] _ _5.9用于控制去噪力度,注意这个寄存器配置的值力度的倒 数,所以该值越小,去噪的力度越大。 该值为 512 表示 1 倍的去噪力度, 256 表示 2 倍的去 噪力度
ynr low thred adj _ _ _5.6低频软阈值的调整力度,越大则低频降噪力度越强 取值范围[0, 2047]
ynr low peak supress _ _ _1.7控制去除较大的孤立噪声的力度,该值越 大则力度越 强。 取值范围[0, 128]
ynr low edge adj thresh _ _ _ _11.0小图边缘检测的调整系数的门限,用于限制调整系数所 能取到的最大值。 取值范围[1, 1024]
ynr low center weight _ _ _1.105x5 双边滤波时中心点的权重,该值越小,则降噪力度 越强。 取值范围[1, 1024]
sw ynr lbf weight thres _ _ _ _10.0用于对 5x5 的双边滤波的权重进行限制,该值越大,则 低频降噪力度越弱。 取值范围[0, 1023]
ynr low dist adj _ _ _7.2双边滤波距离权重调整因子 取值范围[1, 511]
ynr low weight _ _1.7低频去噪结果的权重,该值越大则低频降噪力度越大。 取值范围[0, 128]
ynr low gauss1 coeff[3] _ _ _1.8对原图进行高斯滤波的滤波核权重 取值范围[0, 256]
ynr low gauss2 coeff[3] _ _ _1.8对双边滤波的结果进行高斯滤波的高斯滤 波核权重 取值范围[0, 256]
ynr low bi weight _ _ _1.7软阈值处理中使用的第一步双边滤波权重,该值越大, 则降噪力度也越大。 取值范围[0, 128]
ynr base filter weight[3] _ _ _1.6方向滤波器的系数 取值范围[0, 64]
成员名称位宽 (整 数.小 数)描述
ynr high thred adj _ _ _5.6软阈值的调整系数,该值越大,则高频降噪的力度也越 大。 取值范围 [0, 2047]
ynr high retain weight _ _ _1.7高频去噪权重,注意该值表示的是保留的高频分量的比 例,因此,该值越大,则表示降噪力度越弱。 取值范围 [0, 128]
ynr direction weight[8] _ _1.4各个方向的权重设置, 某一方向上该值越大,表示沿 着该方向的降噪力度越强。 取值范围 [0,16]
ynr hi min adj _ _ _0.6所有差异值减去的最小差异值的比例,该值越大,则边 缘越锐利。 取值范围 [6,60]
ynr hi edge thed _ _ _10.0对差异值作限制的门限,该值越小,则高频降噪力度越 大。 取值范围 [0,1023]
ynr rnr max r _ _ _14.0用于径向降噪力度调整,用于存放 1/((rows/2)^2+ (cols/2)^2)的值,其中前面 9 bit 是尾数 M,后面 5 bit 是指数 E 取值范围 [1, 16383]
ynr rnr strength[17] _ _4.4用于控制径向的降噪力度,一共有 17个数据点,分为 16 段,表示从图像中心点到图像的四个角的去噪力 度。 取值范围 [0, 15]
ynr global gain _ _6.4外部配置的全局 gain,用于控制 YNR整体的降噪力 度,值越大则降噪力度越强。 取值范围 [0, 1023]
ynr global gain alpha _ _ _1.3用于控制 gain 模块传递的 gain 值和外部配置的 gain 值的使用比例,该值越大则使用外部全局 gain 的比例 越大。 取值范围 [0, 8]
ynr bft3x3 bypass _ _1为 1 时关掉 3x3 双边滤波 取值范围 0或1
ynr lbft5x5 bypass _ _1为 1 时关掉 5x5 双边滤波 取值范围 0或1
ynr lgft3x3 bypass _ _1为 1 时关掉针对 5x5 双边滤波结果再做的 3x3 高斯滤 波
ynr flt1x1 bypass _ _1为 1 时关掉低频软阈值处理 取值范围 0或1
成员名称位宽 (整 数.小 数)描述
ynr sft5x5 bypass _ _1为 1 时关掉 5x5 的高频降噪 取值范围 0或1

rk_aiq_ynr_strength_v3_t

定义去噪模块的去噪强度配置结构体

typedef struct rk_aiq_ynr_strength_v3_s {
rk_aiq_uapi_sync_t sync;
float percent;
} rk_aiq_ynr_strength_v3_t;
成员名称描述
sync同步异步模式选择,参见 “概述/API说明” 章节
percent去噪强度,取值范围0.0-1.0。

rk_aiq_cnr_attrib_v2_t

定义去噪模块参数

typedef struct rk_aiq_cnr_attrib_v2_s {
rk_aiq_uapi_sync_t sync;
AcnrV2_OPMode_t eMode;
Acnr_Auto_Attr_V2_t stAuto;
Acnr_Manual_Attr_V2_t stManual;
} rk_aiq_cnr_attrib_v2_t;
成员名称描述
sync同步异步模式选择,参见 “概述/API说明” 章节
eModecnr 去噪模块模式
stAutocnr 去噪模块自动模式参数
stManualcnr 去噪模块手动模式参数

AcnrV2_OPMode_t

定义去噪模块的模式属性

typedef enum AcnrV2_OPMode_e {
ACNRV2_OP_MODE_INVALID = 0,
ACNRV2_OP_MODE_AUTO = 1,
ACNRV2_OP_MODE_MANUAL = 2,
ACNRV2_OP_MODE_REG_MANUAL = 3,
ACNRV2_OP_MODE_MAX
} AcnrV2_OPMode_t;
成员名称描述
ACNRV2 OP MODE INVALID _ _ _uv域 cnr去噪模块无效模式
ACNRV2 OP MODE AUTO _ _ _uv域 cnr去噪模块自动模式
ACNRV2 OP MODE MANUAL _ _ _uv域 cnr去噪模块手动模式的算法设置
ACNRV2 OP MODE REG MANUAL _ _ _ _uv域 cnr去噪模块手动模式的寄存器设置
ACNRV2 OP MODE MAX _ _ _uv域 cnr去噪模块模式最大值,是一个无效模式

Acnr_Auto_Attr_V2_t

定义去噪模块的自动属性

typedef struct Acnr_Auto_Attr_V2_s
{
//all ISO params and select param
RK_CNR_Params_V2_t stParams;
RK_CNR_Params_V2_Select_t stSelect;
} Acnr_Auto_Attr_V2_t;
成员名称描述
stParamscnr模块各个iso对应算法属性参数
stSelectcnr模块根据当前iso计算出来属性参数

Acnr_Manual_Attr_V2_t

定义去噪模块的手动属性

typedef struct Acnr_Manual_Attr_V2_s
{
RK_CNR_Params_V2_Select_t stSelect;
RK_CNR_Fix_V2_t stFix;
} Acnr_Manual_Attr_V2_t;
成员名称描述
stSelectcnr手动模式下算法参数值
stSelectcnr手动模式下寄存器值

RK_CNR_Params_V2_t

定义去噪模块的自动模式各个iso对应算法属性参数

typedef struct RK_CNR_Params_V2_s
{
int enable;
float iso[RK_CNR_V2_MAX_ISO_NUM];
int hf_bypass[RK_CNR_V2_MAX_ISO_NUM];
int lf_bypass[RK_CNR_V2_MAX_ISO_NUM];
// gain
float global_gain[RK_CNR_V2_MAX_ISO_NUM];
float global_gain_alpha[RK_CNR_V2_MAX_ISO_NUM];
float local_gain_scale[RK_CNR_V2_MAX_ISO_NUM];
// strength adj by gain
int gain_adj_strength_ratio[RK_CNR_V2_MAX_ISO_NUM]
[RKCNR_V2_SGM_ADJ_TABLE_LEN];
//
float color_sat_adj[RK_CNR_V2_MAX_ISO_NUM];
float color_sat_adj_alpha[RK_CNR_V2_MAX_ISO_NUM];
// step1
// median filter
float hf_spikes_reducion_strength[RK_CNR_V2_MAX_ISO_NUM];
// bilateral filter
float hf_denoise_strength[RK_CNR_V2_MAX_ISO_NUM];
float hf_color_sat[RK_CNR_V2_MAX_ISO_NUM];
float hf_denoise_alpha[RK_CNR_V2_MAX_ISO_NUM];
int hf_bf_wgt_clip[RK_CNR_V2_MAX_ISO_NUM];
// step2
// median filter
float thumb_spikes_reducion_strength[RK_CNR_V2_MAX_ISO_NUM];
// bilateral filter
float thumb_denoise_strength[RK_CNR_V2_MAX_ISO_NUM];
float thumb_color_sat[RK_CNR_V2_MAX_ISO_NUM];
// step3
// bilateral filter
float lf_denoise_strength[RK_CNR_V2_MAX_ISO_NUM];
float lf_color_sat[RK_CNR_V2_MAX_ISO_NUM];
float lf_denoise_alpha[RK_CNR_V2_MAX_ISO_NUM];
// bilateral filter kernels
float kernel_5x5[5];
} RK_CNR_Params_V2_t;
参数名称参 数 类 型参数说明
Enable调 试 参 数模块开关使能。1:模块打开,0:模块关闭。
iso调 试 参 数不同iso档位,对应不同调试参数。目前仅支持13 档。
hf bypass _调 试 参 数高频降噪bypass. 0:不bypass, 1:bypass.
lf bypass _调 试 参 数低频降噪bypass.0:不bypass, 1:bypass.
global gain _调 试 参 数cnr去噪local模式和global模式插值力度配置。一般 使用默认值,不用配置,全部使用local gain的方 式。 取值范围[0.0 64.0],默认值1。
global gain alpha _ _调 试 参 数cnr去噪local模式和global模式插值力度配置。一般 使用默认值,不用配置,全部使用local gain的方 式。 取值范围[0.0 1.0],默认值0。
global gain scale _ _调 试 参 数放大cnr去噪力度,一般用默认值,不太去调整。 取值范围[0, 128],默认值1。
gain adj strength ratio _ _ _调 试 参 数根据 local gain 值调整滤波强度。值越小,去噪力 度越强。 取值范围[1, 255],默认值255.
color sat adj _ _调 试 参 数基于梯度调整双边滤波的 uv 比例,1~255。值越 小,去彩噪越好。 取值范围[1, 255]。默认值40。
color sat adj alpha _ _ _调 试 参 数color sat adj 调整的比例。值越大,去彩噪越好。 _ _ 取值范围[0, 1.0]。默认值0.8。
参数名称参 数 类 型参数说明
hf spikes reducion strength _ _ _调 试 参 数高频中值滤波强度。值越大,中值滤波越强。 取值范围[0, 1.0]。默认值0.5。
hf denoise strength _ _调 试 参 数高频双边滤波强度。值越大,去彩噪越好。 取值范围[1, 1023]。默认值10。
hf color sat _ _调 试 参 数高频双边滤波的 uv 比例因子。值越小,色彩饱和 度下降越多。 取值范围[0.0, 7.9]。默认值1.5。
hf denoise alpha _ _调 试 参 数高频双边滤波中心点的权重。 取值范围[0.0, 1.0]。默认值0。
hf bf wgt clip _ _ _调 试 参 数高频最小去噪力度。值越大,去噪越强。 取值范围[0, 255]。默认值0。
thumb spikes reducion strength _ _ _调 试 参 数缩略图中值滤波强度。值越大,中值滤波越强。 取值范围[0.0, 1.0]。默认值0.5。
thumb denoise strength _ _调 试 参 数缩略图双边滤波强度。值越大,去彩噪越好。 取值范围[1, 1023]。默认值8。
thumb color sat _ _调 试 参 数缩略图双边滤波的 uv 比例因子,色彩饱和度下降 越多。 取值范围[0.0, 7.9]。默认值4。
lf denoise strength _ _调 试 参 数低频双边滤波强度。值越大,去彩噪越好。 取值范围[1, 1023]。默认值8。
lf color sat _ _调 试 参 数低频双边滤波的 uv 比例因。值越小,色彩饱和度 下降越多。 取值范围[0.0, 7.9]。默认值4。
参数名称参 数 类 型参数说明
lf denoise alpha _ _调 试 参 数低频双边滤波中心点的权重。 取值范围[0.0, 1.0]。默认值0.5。
kernel 5x5 _调 试 参 数5x5双边滤波核。

RK_CNR_Params_V2_Select_t

定义去噪模块的手动模式下算法属性

typedef struct RK_CNR_Params_V2_Select_s
{
int enable;
// bypass
int hf_bypass;
int lf_bypass;
// gain
// gain
float global_gain;
float global_gain_alpha;
float local_gain_scale;
// strength adj by gain
int gain_adj_strength_ratio[RKCNR_V2_SGM_ADJ_TABLE_LEN];
//
float color_sat_adj;
float color_sat_adj_alpha;
// step1
// median filter
float hf_spikes_reducion_strength;
// bilateral filter
float hf_denoise_strength;
float hf_color_sat;
float hf_denoise_alpha;
int hf_bf_wgt_clip;
// step2
// median filter
float thumb_spikes_reducion_strength;
// bilateral filter
float thumb_denoise_strength;
float thumb_color_sat;
// step3
// bilateral filter
float lf_denoise_strength;
float lf_color_sat;
float lf_denoise_alpha;
// bilateral filter kernels
float kernel_5x5[5];
} RK_CNR_Params_V2_Select_t;
参数名称参 数 类 型参数说明
Enable调 试 参 数模块开关使能。1:模块打开,0:模块关闭。
iso调 试 参 数不同iso档位,对应不同调试参数。目前仅支持13 档。
hf bypass _调 试 参 数高频降噪bypass. 0:不bypass, 1:bypass.
lf bypass _调 试 参 数低频降噪bypass.0:不bypass, 1:bypass.
global gain _调 试 参 数cnr去噪local模式和global模式插值力度配置。一般 使用默认值,不用配置,全部使用local gain的方 式。 取值范围[0.0 64.0],默认值1。
global gain alpha _ _调 试 参 数cnr去噪local模式和global模式插值力度配置。一般 使用默认值,不用配置,全部使用local gain的方 式。 取值范围[0.0 1.0],默认值0。
global gain scale _ _调 试 参 数放大cnr去噪力度,一般用默认值,不太去调整。 取值范围[0, 128],默认值1。
gain adj strength ratio _ _ _调 试 参 数根据 local gain 值调整滤波强度。值越小,去噪力 度越强。 取值范围[1, 255],默认值255.
color sat adj _ _调 试 参 数基于梯度调整双边滤波的 uv 比例,1~255。值越 小,去彩噪越好。 取值范围[1, 255]。默认值40。
color sat adj alpha _ _ _调 试 参 数color sat adj 调整的比例。值越大,去彩噪越好。 _ _ 取值范围[0, 1.0]。默认值0.8。
参数名称参 数 类 型参数说明
hf spikes reducion strength _ _ _调 试 参 数高频中值滤波强度。值越大,中值滤波越强。 取值范围[0, 1.0]。默认值0.5。
hf denoise strength _ _调 试 参 数高频双边滤波强度。值越大,去彩噪越好。 取值范围[1, 1023]。默认值10。
hf color sat _ _调 试 参 数高频双边滤波的 uv 比例因子。值越小,色彩饱和 度下降越多。 取值范围[0.0, 7.9]。默认值1.5。
hf denoise alpha _ _调 试 参 数高频双边滤波中心点的权重。 取值范围[0.0, 1.0]。默认值0。
hf bf wgt clip _ _ _调 试 参 数高频最小去噪力度。值越大,去噪越强。 取值范围[0, 255]。默认值0。
thumb spikes reducion strength _ _ _调 试 参 数缩略图中值滤波强度。值越大,中值滤波越强。 取值范围[0.0, 1.0]。默认值0.5。
thumb denoise strength _ _调 试 参 数缩略图双边滤波强度。值越大,去彩噪越好。 取值范围[1, 1023]。默认值8。
thumb color sat _ _调 试 参 数缩略图双边滤波的 uv 比例因子,色彩饱和度下降 越多。 取值范围[0.0, 7.9]。默认值4。
lf denoise strength _ _调 试 参 数低频双边滤波强度。值越大,去彩噪越好。 取值范围[1, 1023]。默认值8。
lf color sat _ _调 试 参 数低频双边滤波的 uv 比例因。值越小,色彩饱和度 下降越多。 取值范围[0.0, 7.9]。默认值4。
参数名称参 数 类 型参数说明
lf denoise alpha _ _调 试 参 数低频双边滤波中心点的权重。 取值范围[0.0, 1.0]。默认值0.5。
kernel 5x5 _调 试 参 数5x5双边滤波核。

RK_CNR_Fix_V2_t

定义去噪模块的手动模式下寄存器配置

typedef struct RK_CNR_Fix_V2_s {
//ISP_CNR_2800_CTRL
uint8_t cnr_thumb_mix_cur_en;
uint8_t cnr_lq_bila_bypass;
uint8_t cnr_hq_bila_bypass;
uint8_t cnr_exgain_bypass;
uint8_t cnr_en_i;
// ISP_CNR_2800_EXGAIN
uint8_t cnr_global_gain_alpha;
uint16_t cnr_global_gain;
// ISP_CNR_2800_GAIN_PARA
uint8_t cnr_gain_iso;
uint8_t cnr_gain_offset;
uint8_t cnr_gain_1sigma;
// ISP_CNR_2800_GAIN_UV_PARA
uint8_t cnr_gain_uvgain1;
uint8_t cnr_gain_uvgain0;
// ISP_CNR_2800_LMED3
uint8_t cnr_lmed3_alpha;
// ISP_CNR_2800_LBF5_GAIN
uint8_t cnr_lbf5_gain_y;
uint8_t cnr_lbf5_gain_c;
// ISP_CNR_2800_LBF5_WEITD0_4
uint8_t cnr_lbf5_weit_d[5];
// ISP_CNR_2800_HMED3
uint8_t cnr_hmed3_alpha;
// ISP_CNR_2800_HBF5
uint8_t cnr_hbf5_weit_src;
uint8_t cnr_hbf5_min_wgt;
uint16_t cnr_hbf5_sigma;
// ISP_CNR_2800_LBF3
uint8_t cnr_lbf5_weit_src;
uint16_t cnr_lbf3_sigma;
//ISP_CNR_2800_SIGMA0-SIGMA3
uint8_t cnr_sigma_y[13];
} RK_CNR_Fix_V2_t;
参数名称参数说明
cnr thumb mix cur en _ _ _ _当前帧缩略图混合上一帧图像使能信号: 1'b1:mix 启用 1'b0:mix 是禁用的 回读的是显示寄存器。
cnr lq bila bypass _ _ _低频双边 3x3 滤波器旁路使能信号 1'b1:bypass is enable, out data 等于 in data 在这个 3x3 过滤器 _ _ 中。 1'b0:bypass 被禁用。 回读的是显示寄存器。
cnr hq bila bypass _ _ _高频5x5双边滤波器bypass信号 1:bypass is enable, out data 等于 in data 在这个 5x5 过滤器中。 _ _ 0:bypass 被禁用。 回读的是显示寄存器。
cnr exgain bypass _ _sw cnr exgain bypass _ _ _ 外部增益bypass使能信号 1:bypass 使能,外部增益值固定为 sw cnr egain mux _ _ _ 0:bypass 禁用,使用外部增益。 当前版本不支持绕过禁用。 回读的是显示寄存器。
cnr en i _ _CNR 模块使能信号 1: 使能; 0: 失能
cnr global gain _ _cnr去噪local模式和global模式插值力度配置。一般使用默认值,不 用配置,全部使用local gain的方式。 取值范围[0.0 64.0],默认值1。
cnr global gain alpha _ _ _cnr去噪local模式和global模式插值力度配置。一般使用默认值,不 用配置,全部使用local gain的方式。 取值范围[0.0 1.0],默认值0。
cnr gain iso _ _放大外部增益,范围0~128
cnr gain offset _ _增益校准中低通滤波器的增益偏移,范围0~16
cnr gain 1sigma _ _在增益校准中放大高通滤波器的输出数据
cnr gain uvgain1 _ _uvgain参数1
cnr gain uvgain0 _ _uvgain参数0
cnr lmed3 alpha _ _in data在低频中值滤波器中的权重,范围从0~16 _
cnr lbf5 gain y; _ _ _lbf5x5 双边滤波器的 y 增益
cnr lbf5 gain c; _ _ _lbf5x5 双边滤波器的 uv 增益
cnr lbf5 weit d[0] _ _ _pix12的空间权重,范围1~128
cnr lbf5 weit d[1] _ _ _pix7,11,13,17的空间权重,范围0~128
cnr lbf5 weit d[2] _ _ _pix6,8,16,18的空间权重,范围0~128
cnr lbf5 weit d[3] _ _ _距离4或5的空间权重,范围0~128
参数名称参数说明
cnr lbf5 weit d[4] _ _ _pix0,4,20,24的空间权重,范围0~128
cnr hmed3 alpha _ _in data在高频中值滤波器中的权重,范围从0~16 _
cnr hbf5 weit src _ _ _hbf5x5的in data权重,范围0~128 _
cnr hbf5 min wgt _ _ _hbf5x5 weit r 下限 _
cnr hbf5 sigma _ _hbf5x5 的sigma值
cnr lbf5 weit src _ _ _lbf3x3的in data权重,范围0~128 _
cnr lbf3 sigma _ _lbf3x3 的sigma值

rk_aiq_cnr_strength_v2_t

定义去噪模块的去噪强度配置结构体

typedef struct rk_aiq_cnr_strength_v2_s {
rk_aiq_uapi_sync_t sync;
float percent;
} rk_aiq_cnr_strength_v2_t;
成员名称描述
sync同步异步模式选择,参见 “概述/API说明” 章节
percent去噪强度,取值范围0.0-1.0。

BLC​

功能描述​

功能级API参考​

rk_aiq_user_api2_ablc_SetAttrib

【描述】设置blc参数属性

【语法】

XCamReturn
rk_aiq_user_api2_ablc_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_blc_attrib_t *attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attrblc参数属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_ablc.h、RkAiqHandleInt.h、rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

rk_aiq_user_api2_ablc_GetAttrib

【描述】获取BLC参数属性

【语法】

XCamReturn
rk_aiq_user_api2_ablc_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_blc_attrib_t *attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attrblc参数属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_ablc.h、RkAiqHandleInt.h、rk_aiq_user_api2_sysctl.h库文件:librkaiq.so

模块级API数据类型​

rk_aiq_blc_attrib_t

blc模块参数

typedef struct rk_aiq_blc_attrib_s {
rk_aiq_uapi_sync_t sync;
AblcOPMode_t eMode;
AblcParams_t stBlc0Auto;
AblcParams_t stBlc1Auto;
AblcManualAttr_t stBlc0Manual;
AblcManualAttr_t stBlc1Manual;
} rk_aiq_blc_attrib_t;
成员名称描述
sync同步异步模式选择,参见 “概述/API说明” 章节
eModeblc模块模式
stBlc0Autoblc0 自动模式参数
stBlc0Manualblc0 手动模式参数
stBlc1Autoblc1 自动模式参数
stBlc1Manualblc1 手动模式参数

AblcOPMode_t

定义去噪模块的模式属性

typedef enum AblcOPMode_e {
ABLC_OP_MODE_OFF = 0,
ABLC_OP_MODE_AUTO = 1,
ABLC_OP_MODE_MANUAL = 2,
ABLC_OP_MODE_MAX
} AblcOPMode_t;
成员名称描述
ABLC OP MODE OFF _ _ _BLC 模块无效模式
ABLC OP MODE AUTO _ _ _BLC 模块自动模式
ABLC OP MODE MANUAL _ _ _BLC 模块手动模式的算法设置
ABLC OP MODE MAX _ _ _BLC 模块模式最大值,是一个无效模式

AblcParams_t

blc模块自动模式参数

typedef struct AblcParams_s {
bool enable;
int len;
float* iso;
float* blc_r;
float* blc_gr;
float* blc_gb;
float* blc_b;
} AblcParams_t;
成员名称描述
enable模块使能开关 1:使能; 0:失能;
leniso对应数组长度
isoiso等级
blc r _不同iso对应,blc值。blc的数组指针
blc gr _不同iso对应,blc值。blc的数组指针
blc gb _不同iso对应,blc值。blc的数组指针
blc b _不同iso对应,blc值。blc的数组指针

AblcManualAttr_t

blc模块手动模式参数

typedef struct AblcSelect_s {
bool enable;
short int blc_r;
short int blc_gr;
short int blc_gb;
short int blc_b;
} AblcSelect_t;
typedef AblcSelect_t AblcManualAttr_t;
成员名称描述
enable模块使能开关 1:使能; 0:失能;
blc r _blc模块r通道属性
blc gr _blc模块gr通道属性
blc gb _blc模块gb通道属性
blc b _blc模块b通道属性

Dehaze&Enhance​

功能描述​

Dehaze&Enhance包含2种模式:

Dehaze 是通过动态的改变图象的对比度和亮度来实现的去雾增强。Enhance提升图像局部区域的对比度。其中 Dehaze 与 Enhance功能互斥

功能级API参考​

rk_aiq_uapi2_setMDehazeStrth

【描述】

设置手动去雾力度。

设置后API模式为DEHAZE_API_DEHAZE_MANUAL。

【语法】

XCamReturn rk_aiq_uapi2_setMDehazeStrth(const rk_aiq_sys_ctx_t* ctx, unsigned
int level);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
level等级,,取值范围[1,100],默认值为50,精度1。输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getMDehazeStrth

【描述】

获取手动去雾力度。

若当前API模式不是DEHAZE_API_DEHAZE_MANUAL,则无非获取到等级。

【语法】

XCamReturn rk_aiq_uapi2_getMDehazeStrth(const rk_aiq_sys_ctx_t* ctx, unsigned
int* level);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
level等级,,取值范围[1,100],默认值为50,精度1。输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setMEnhanceStrth

【描述】

设置手动Enhance等级。设置后API模式为DEHAZE_API_ENHANCE_MANUAL。

【语法】

XCamReturn rk_aiq_uapi2_setMEnhanceStrth(const rk_aiq_sys_ctx_t* ctx, unsigned
int level);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
level等级,,取值范围[1,100],默认值为50,精度1。输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_getMEnhanceStrth

【描述】

获取手动Enhance等级。

若当前API模式不是DEHAZE_API_ENHANCE_MANUAL,则无非获取到等级。

【语法】

XCamReturn rk_aiq_uapi2_getMEnhanceStrth(const rk_aiq_sys_ctx_t* ctx, unsigned
int *level);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
level等级,,取值范围[1,100],默认值为50,精度1。输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

模块级API参考​

rk_aiq_user_api2_adehaze_setSwAttrib

【描述】

设置去雾参数。

【语法】

XCamReturn rk_aiq_user_api2_adehaze_setSwAttrib(const rk_aiq_sys_ctx_t*
sys_ctx, adehaze_sw_V2_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_V2_t *attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr去雾参数输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

模块级API数据类型​

dehaze_api_mode_t

定义dehaze模块工作模式

typedef enum dehaze_api_mode_e {
DEHAZE_API_BYPASS = 0,
DEHAZE_API_MANUAL = 1,
DEHAZE_API_DEHAZE_AUTO = 2,
DEHAZE_API_DEHAZE_MANUAL = 3,
DEHAZE_API_DEHAZE_OFF = 4,
DEHAZE_API_ENHANCE_MANUAL = 5,
DEHAZE_API_ENHANCE_AUTO = 6,
DEHAZE_API_ENHANCE_OFF = 7,
} dehaze_api_mode_t;
成员名称描述
DEHAZE API BYPASS _ _api关闭模式
DEHAZE API MANUAL _ _手动dehaze模块模式
DEHAZE API DEHAZE AUTO _ _ _自动Dehaze功能模式,此时Dehaze功能开启,Enhance 功能关闭,自动Dehaze功能参数由Json决定
DEHAZE API DEHAZE MANUAL _ _ _手动Dehaze功能模式,此时Dehaze功能开启,Enhance 功能关闭,手动Dehaze功能参数由stDehazeManu决定
DEHAZE API DEHAZE OFF _ _ _Dehaze功能关闭模式,此时Dehaze功能关闭,自动 Enhance功能开关以及功能参数由Json决定
DEHAZE API ENHANCE MANUAL _ _ _手动Enahnce功能模式,此时Dehaze功能关闭,Enhance 功能开启,手动Enhance功能参数由stEnhanceManu决定
DEHAZE API ENHANCE AUTO _ _ _自动Enahnce功能模式,此时Dehaze功能关闭,Enhance 功能开启,自动Enahnce功能参数由Json决定
DEHAZE API ENHANCE OFF _ _ _Enhance功能关闭模式,此时Enhance功能关闭,自动 Dehaze功能开关以及功能参数由Json决定

mDehazeDataV21_t

定义手动DehazeData属性

typedef struct mDehazeDataV21_s {
float dc_min_th;
float dc_max_th;
float yhist_th;
float yblk_th;
float dark_th;
float bright_min;
float bright_max;
float wt_max;
float air_min;
float air_max;
float tmax_base;
float tmax_off;
float tmax_max;
float cfg_wt;
float cfg_air;
float cfg_tmax;
float dc_weitcur;
float bf_weight;
float range_sigma;
float space_sigma_pre;
float space_sigma_cur;
} mDehazeDataV21_t;
成员名称描述
dc min th _ _wt自适应的统计范围,取值范围[16, 120],默认值64,精度0.1。
dc max th _ _wt自适应高曝区统计范围,取值范围[170, 255],默认值192,精度0.1。
yhist th _y分量高曝区统计范围,取值范围[170, 255],默认值249,精度0.1。
yblk th _y分量块数目比例阈值,取值范围[0.002, 0.01],默认值0.002,精度0.1。
dark th _wt自适应y分量块最小值阈值,取值范围[230, 250],默认值250,精度 0.1。
bright min _air自适应阈值的最小值,取值范围[160, 200],默认值180,精度0.1。
bright max _air自适应阈值的最大值,取值范围[210, 250],默认值240,精度0.1。
wt max _wt自适应的最大值限制,取值范围[0.75, 0.9],默认值0.9,精度0.001。
air min _air自适应的最小值限制,取值范围[200, 220],默认值200,精度0.001。
air max _air自适应的最大值限制,取值范围[230, 250],默认值250,精度0.001。
tmax base _tmax自适应基础值,默认125,对应配置如下,200(131),210(125), 220(119),230(114),240(109),250(105),推荐131-105
tmax off _tmax自适应的固定值,取值范围[0.1, 0.5],默认值0.1,精度0.1。
tmax max _tmax自适应的最大值,取值范围[0.1, 0.5],默认值0.5,精度0.1。
cfg wt _软件配置wt,图像去雾力度,取值范围[0, 1],默认值0.8,精度0.001。
cfg air _软件配置air,大气光系数,取值范围[0, 255],默认值210,精度0.001。
cfg tmax _软件配置tmax,去雾的最大值,取值范围[0, 1],默认值0.2,精度0.001。
bf weight _两个双边滤波的合成权重,取值范围[0, 1],默认值0.5,精度0.1。
dc weitcur _dark channel部分的双边权重,取值范围[0, 1],默认值1,精度0.1。
range sigma _双边滤波值域 sigma 值,取值范围[0, 1],默认值0.4,精度0.1。
space sigma pre _ _以 IIR 数据为参考时,双边滤波空域 sigma 值,取值范围[0, 1],默认值 0.4,精度0.1。
space sigma cur _ _以当前数据为参考时,双边滤波空域 sigma 值,取值范围[0, 1],默认值 0.8,精度0.1。

mDehaze_Setting_V21_t

定义手动dehaze功能属性

typedef struct mDehaze_Setting_V21_s {
bool en;
bool air_lc_en;
float stab_fnum;
float sigma;
float wt_sigma;
float air_sigma;
float tmax_sigma;
float pre_wet;
mDehazeDataV21_t DehazeData;
} mDehaze_Setting_V21_t;
成员名称描述
en开关功能
air lc en _ _是否使用 airlight base 对 airlight 进行最小值截止开关
stab fnum _帧稳定的最大值,取值范围[0,31],默认值8,精度0.01。
sigmaiir控制的sigma,取值范围[0,255],默认值6,精度1。
wt sigma _帧间wt滤波系数,取值范围[0,255],默认值8,精度1。
air sigma _帧间air滤波系数,取值范围[0,255],默认值12,精度1。
tmax sigma _帧间tmax滤波系数,取值范围[0,1],默认值0.01,精度0.0001。
pre wet _参考数据 IIR 滤波系数,取值范围[0,1],默认值0.01,精度0.0001。
DehazeDatadehaze调试参数

mEnhanceDataV21_t

定义手动EnhanceData属性

typedef struct mEnhanceDataV21_s {
float enhance_value;
float enhance_chroma;
} mEnhanceDataV21_t;
成员名称描述
enhance value _通用对比度力度,取值范围[0,16],默认值1.0,精度0.001。
enhance chroma _色度的增强调节参数,取值范围[0,16],默认值1.0,精度0.001。

mEnhance_Setting_V21_t定义手动enhance功能属性

typedef struct mEnhance_Setting_V21_s {
bool en;
float enhance_curve[CALIBDB_ADEHAZE_ENHANCE_CURVE_KNOTS_NUM];
mEnhanceDataV21_t EnhanceData;
} mEnhance_Setting_V21_t;
成员名称描述
enenhance功能开关
enhance curve _低频曲线
EnhanceDataenhance调试参数

mHistDataV21_t

定义手动HistData属性

typedef struct mHistDataV21_s {
float hist_gratio;
float hist_th_off;
float hist_k;
float hist_min;
float hist_scale;
float cfg_gratio;
} mHistDataV21_t;
成员名称描述
hist gratio _直方图拉伸倍数,直方图均衡控制系数,取值范围[0, 32],默认值,精度0.01。
hist th off _ _直方图统计阈值,取值范围[0, 255],默认值64,精度0.01。
hist k _直方图自适应阈值放大倍数,取值范围[0, 7),默认值2,精度0.01。
hist min _直方图统计阈值的最小值,取值范围[0,2),默认值0.016,精度0.01。
hist scale _直方图均衡控制系数,取值范围[0, 32],默认值0.9,精度0.01。
cfg gratio _软件配置直方图拉伸倍数,直方图均衡控制系数,取值范围[0, 32),默认值1,精 度0.01。

mHist_setting_V21_t定义手动hist功能属性

typedef struct mHist_setting_V21_s {
bool en;
bool hist_para_en;
mHistDataV21_t HistData;
} mHist_setting_V21_t;
成员名称描述
enhist功能开关
hist para en _ _直方图拉伸控制开关
HistDatahist调试参数

mDehazeAttr_t

定义手动dehaze模块属性

typedef struct mDehazeAttr_s {
bool Enable;
float cfg_alpha;
mDehaze_Setting_V21_t dehaze_setting;
mEnhance_Setting_V21_t enhance_setting;
mHist_setting_V21_t hist_setting;
} mDehazeAttr_t;
成员名称描述
Enable开关功能
cfg alpha _手动软件配置占比,取值范围[0,1],默认值1,精度0.01。
dehaze setting _手动dehaze功能参数
enhance setting _手动enhance功能参数
hist setting _手动hist功能参数

adehaze_sw_V2_t

定义dehaze属性

typedef struct adehaze_sw_V2_s {
rk_aiq_uapi_sync_t sync;
dehaze_api_mode_t mode;
mDehazeAttr_t stManual;
DehazeManuAttr_t stDehazeManu;
EnhanceManuAttr_t stEnhanceManu;
} adehaze_sw_V2_t;
成员名称描述
sync参考rk aiq uapi sync t定义,参见 “概述/API说明” 章节 _ _ _ _
modeAPI模式
stManual手动dehaze模块参数
stDehazeManu手动dehaze功能参数
stEnhanceManu手动enhance功能参数

CPROC​

功能描述​

CPROC(Color Processing) 提供基本的喜好色调节功能,通过对一定区间内的亮度、对比度、饱和度、色度的调节,达到对喜好色的调节,该模块作用于YUV域图像。

功能级API参考​

模块级API参考​

rk_aiq_user_api2_acp_SetAttrib

【描述】

设置cproc模块属性

【语法】

XCamReturn rk_aiq_user_api2_acp_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
acp_attrib_t attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attrcproc模块属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_acp.h库文件:librkaiq.so

rk_aiq_user_api2_acp_GetAttrib

【描述】

获取cproc模块当前属性

【语法】

XCamReturn rk_aiq_user_api2_acp_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
acp_attrib_t* attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attrcproc模块属性输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_acp.h库文件:librkaiq.so

模块级API数据类型​

acp_attrib_t

定义cproc模块的参数

typedef struct acp_attrib_s {
uint8_t brightness; /* 0 ~ 255 */
uint8_t contrast; /* 0 ~ 255 */
uint8_t saturation; /* 0 ~ 255 */
uint8_t hue; /* 0 ~ 255 */
} acp_attrib_t;
成员名称描述
brightness亮度,范围:[0,255],对应范围:[-128,127],默认值 128
contrast对比度,范围:[0,255] , 对应倍数:[0, 1.992],默认值为 128
saturation饱和度,范围:[0,255], 对应倍数:[0, 1.992],默认值为 128
hue色度,范围:[0,255] ,对应度数[-90,87.188] ,默认值 128

IE​

功能描述​

IE(Image Effect) 提供图像的特殊效果设置,如黑白效果等。该模块作用于YUV域图像。

功能级API参考​

模块级API参考​

rk_aiq_user_api2_aie_SetAttrib

【描述】

设置IE模块属性

【语法】

XCamReturn rk_aiq_user_api2_aie_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
aie_attrib_t attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attrIE模块属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_aie.h库文件:librkaiq.so

rk_aiq_user_api2_aie_GetAttrib

【描述】

获取IE模块当前属性

【语法】

XCamReturn rk_aiq_user_api2_aie_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
aie_attrib_t* attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attrIE模块属性输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_aie.h库文件:librkaiq.so

模块级API数据类型​

aie_attrib_t

定义IE模块的参数

typedef struct aie_attrib_s {
rk_aiq_ie_effect_t mode;
} aie_attrib_t;
成员名称描述
mode效果类型

rk_aiq_ie_effect_t

定义IE效果类型

typedef enum rk_aiq_ie_effect_e {
RK_AIQ_IE_EFFECT_NONE,
RK_AIQ_IE_EFFECT_BW,
RK_AIQ_IE_EFFECT_NEGATIVE,
RK_AIQ_IE_EFFECT_SEPIA,
RK_AIQ_IE_EFFECT_EMBOSS,
RK_AIQ_IE_EFFECT_SKETCH,
RK_AIQ_IE_EFFECT_SHARPEN, /*!< deprecated */
} rk_aiq_ie_effect_t;
成员名称描述
RK AIQ IE EFFECT NONE _ _ _ _无特殊效果
RK AIQ IE EFFECT BW _ _ _ _黑白效果
RK AIQ IE EFFECT NEGATIVE _ _ _ _负片效果
RK AIQ IE EFFECT SEPIA _ _ _ _深褐色效果
RK AIQ IE EFFECT EMBOSS _ _ _ _浮雕效果
RK AIQ IE EFFECT SKETCH _ _ _ _素描效果
RK AIQ IE EFFECT SHARPEN _ _ _ _不支持

CSM​

功能描述​

CSM(Color Space Matrix) 可设置RGB到YUV转换时的参数。

功能级API参考​

模块级API参考​

rk_aiq_user_api2_acsm_SetAttrib

【描述】

设置CSM模块属性【语法】

XCamReturn rk_aiq_user_api2_acsm_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapi_acsm_attrib_t attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attrCSM模块属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_acsm.h库文件:librkaiq.so

rk_aiq_user_api2_aie_GetAttrib

【描述】

获取IE模块当前属性

【语法】

XCamReturn rk_aiq_user_api2_acsm_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_uapi_acsm_attrib_t* attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attrCSM模块属性输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】头文件:rk_aiq_user_api2_acsm.h库文件:librkaiq.so

模块级API数据类型​

rk_aiq_uapi_acsm_attrib_t

定义CSM模块的参数

typedef struct rk_aiq_uapi_acsm_attrib_s {
rk_aiq_uapi_sync_t sync;
rk_aiq_acsm_params_t param;
} rk_aiq_uapi_acsm_attrib_t;
成员名称描述
sync参考rk aiq uapi sync t定义,参见 “概述/API说明” 章节 _ _ _ _
rk aiq acsm params t _ _ _ _csm参数

rk_aiq_acsm_params_t

定义CSM模块参数

typedef struct __csm_param {^M
// M4_BOOL_DESC("op_mode", "RKAiqOPMode_t", "RK_AIQ_OP_MODE_AUTO")
RKAiqOPMode_t op_mode;
// M4_NUMBER_DESC("full_range", "u8", M4_RANGE(0,1), "1", M4_DIGIT(0),
0)^M
bool full_range;
// M4_NUMBER_DESC("y_offset", "u16", M4_RANGE(0,63), "0", M4_DIGIT(0),
0)^M
unsigned short y_offset;^M
// M4_NUMBER_DESC("y_offset", "u16", M4_RANGE(0,255), "0", M4_DIGIT(0),
0)^M
unsigned short c_offset;^M
// M4_ARRAY_DESC("coeff", "u32", M4_SIZE(3,3), M4_RANGE(0,511), "0",
M4_DIGIT(4), M4_DYNAMIC(0))
unsigned int coeff[RK_AIQ_CSM_COEFF_NUM];
} Csm_Param_t;
成员名称描述
op mode _模式,RK AIQ OP MODE AUTO 或者 RK AIQ OP MODE MANUAL,AUTO时由 _ _ _ _ _ _ _ _ AIQ决定,目前为芯片default值
full range _是否输出 full range,默认值:TRUE
y offset _亮度偏移值,范围:[0,63],默认值:0
c offset _色度偏移值,范围:[0,255],默认值:0
coeffRGB到YUV的3x3转换矩阵,范围:[0,511],默认值: [ 0x021, 0x040, 0x00d, 0x1ed, 0x1db, 0x038, 0x038, 0x1d1, 0x1f7]

Sharpen​

功能描述​

Sharpen 模块用于增强图像的清晰度,包括调节图像边缘的锐化属性和增强图像的细节和纹理。

功能级API参考​

rk_aiq_uapi2_setSharpness

【描述】

设置锐化等级。

【语法】

XCamReturn rk_aiq_uapi2_setSharpness(const rk_aiq_sys_ctx_t* ctx, unsigned int
level);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
level锐化等级取值范围:[0,100]默认值为50输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so rk_aiq_uapi2_getSharpness

【描述】

获取锐化等级。

【语法】

XCamReturn rk_aiq_uapi2_getSharpness(const rk_aiq_sys_ctx_t* ctx, unsigned int*
level);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
level锐化等级输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

模块级API参考​

rk_aiq_user_api2_asharpV4_SetAttrib

【描述】设置锐化算法属性。

【语法】

XCamReturn
rk_aiq_user_api2_asharpV4_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_sharp_attrib_v4_t* attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr去噪的参数属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_asharp_v4.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_asharpV4_GetAttrib

【描述】获取锐化算法属性。

【语法】

XCamReturn
rk_aiq_user_api2_asharpV4_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_sharp_attrib_v4_t* attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr去噪的参数属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_asharp_v4.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_asharpV4_SetStrength

【描述】设置锐化力度。

【语法】

XCamReturn
rk_aiq_user_api2_asharpV4_SetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_sharp_strength_v4_t *pStrength);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
pStrength锐化强度结构体指针,结构体中percent取值范围0.0-1.0输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_asharp_v4.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

rk_aiq_user_api2_asharpV4_GetStrength

【描述】获取锐化力度。

【语法】

XCamReturn
rk_aiq_user_api2_asharpV4_GetStrength(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_sharp_strength_v4_t *pStrength);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
pStrength锐化强度结构体指针,结构体中percent取值范围0.0-1.0输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】头文件:rk_aiq_user_api2_asharp_v4.h、RkAiqHandleIntV3x.h库文件:librkaiq.so

模块级API数据类型​

rk_aiq_sharp_attrib_v4_t

定义锐化模块的参数

typedef struct rk_aiq_sharp_attrib_v4_s {
rk_aiq_uapi_sync_t sync;
Asharp4_OPMode_t eMode;
Asharp_Auto_Attr_V4_t stAuto;
Asharp_Manual_Attr_V4_t stManual;
} rk_aiq_sharp_attrib_v4_t;
成员名称描述
sync同步异步模式选择,参见 “概述/API说明” 章节
eMode锐化模块属性
stAuto锐化模块自动模式参数
stManual锐化模块手动模式参数

Asharp4_OPMode_t

typedef enum Asharp4_OPMode_e {
ASHARP4_OP_MODE_INVALID = 0,
ASHARP4_OP_MODE_AUTO = 1,
ASHARP4_OP_MODE_MANUAL = 2,
ASHARP4_OP_MODE_REG_MANUAL = 3,
ASHARP4_OP_MODE_MAX
} Asharp4_OPMode_t;
成员名称描述
ASHARP4 OP MODE INVALID _ _ _锐化模块无效模式
ASHARP4 OP MODE AUTO _ _ _锐化模块自动模式
ASHARP4 OP MODE MANUAL _ _ _锐化模块手动模式的算法设置
ASHARP4 OP MODE REG MANUAL _ _ _ _锐化模块手动模式的寄存器设置
ASHARP4 OP MODE MAX _ _ _锐化模块模式最大值,是一个无效模式

Asharp_Auto_Attr_V4_t

定义锐化模块的自动模式各个iso对应算法属性参数

typedef struct Asharp_Auto_Attr_V4_s
{
RK_SHARP_Params_V4_t stParams;
RK_SHARP_Params_V4_Select_t stSelect;
} Asharp_Auto_Attr_V4_t;
成员名称描述
stParamssharp模块各个iso对应算法属性参数
stSelectsharp模块根据当前iso计算出来属性参数

Asharp_Manual_Attr_V4_t

定义锐化模块的手动属性

typedef struct Asharp_Manual_Attr_V4_s
{
RK_SHARP_Params_V4_Select_t stSelect;
RK_SHARP_Fix_V4_t stFix;
} Asharp_Manual_Attr_V4_t;
成员名称描述
stSelectsharp手动设置算法参数
stFixsharp手动模式下寄存器值

RK_SHARP_Params_V4_t

定义锐化模块的手动属性

typedef struct RK_SHARP_Params_V4_s
{
int enable;
int iso[RK_SHARP_V4_MAX_ISO_NUM];
short luma_point       [RK_SHARP_V4_LUMA_POINT_NUM];
short luma_sigma       [RK_SHARP_V4_MAX_ISO_NUM]
[RK_SHARP_V4_LUMA_POINT_NUM];
float pbf_gain         [RK_SHARP_V4_MAX_ISO_NUM];
float pbf_add           [RK_SHARP_V4_MAX_ISO_NUM];
float pbf_ratio         [RK_SHARP_V4_MAX_ISO_NUM];
float gaus_ratio       [RK_SHARP_V4_MAX_ISO_NUM];
float sharp_ratio       [RK_SHARP_V4_MAX_ISO_NUM];
short hf_clip       [RK_SHARP_V4_MAX_ISO_NUM][RK_SHARP_V4_LUMA_POINT_NUM];
float bf_gain           [RK_SHARP_V4_MAX_ISO_NUM];
float bf_add           [RK_SHARP_V4_MAX_ISO_NUM];
float bf_ratio         [RK_SHARP_V4_MAX_ISO_NUM];
short local_sharp_strength [RK_SHARP_V4_MAX_ISO_NUM]
[RK_SHARP_V4_LUMA_POINT_NUM];
float prefilter_coeff[RK_SHARP_V4_MAX_ISO_NUM][RK_SHARP_V4_PBF_DIAM *
RK_SHARP_V4_PBF_DIAM];
float GaussianFilter_coeff   [RK_SHARP_V4_MAX_ISO_NUM][RK_SHARP_V4_RF_DIAM *
RK_SHARP_V4_RF_DIAM];
float hfBilateralFilter_coeff   [RK_SHARP_V4_MAX_ISO_NUM]
[RK_SHARP_V4_BF_DIAM * RK_SHARP_V4_BF_DIAM];
} RK_SHARP_Params_V4_t;
参数名称参数 类型简要说明
Enable调试 参数Sharp模块使能开关。 1:模块打开,0:模块关闭。
iso调试 参数不同iso档位,对应不同调试参数。目前仅支持13档。
pbf gain _调试 参数预滤波 sigma 乘以的比例,值越大,滤波越强,噪声越 小,细节更少。 取值范围[0.0, 2.0], 默认值1.0 。
pbf add _调试 参数预滤波 sigma 叠加的偏移,值越大,滤波越强,噪声越 小,细节更少。 取值范围[0, 1023], 默认值0。
pbf ratio _调试 参数预滤波融合权重,值越大,滤波越强,噪声越小,细节更 少。 取值范围[0.0, 1.0], 默认值0.5。
gaus ratio _调试 参数高频双边滤波的导向图像为高斯滤波与原图融合的结果。 值越大,高斯双边滤波的导向权重更大。 取值范围[0.0, 1.0], 默认值0。
sharp ratio _调试 参数锐化强度,值越大,锐化越强。 取值范围[0.0, 16], 默认值6。
bf gain _调试 参数高频双边滤波 sigma 乘以的比例, 值越大,滤波越强, 噪声越小,细节更少。 取值范围[0.0, 2.0], 默认值1.0 。
bf add _调试 参数高频双边滤波 sigma 叠加的偏移。值越大,滤波越强,噪 声越小,细节更少。 取值范围[0, 1023], 默认值0。
bf add _调试 参数高频双边滤波融合权重。值越大,滤波越强,噪声越小, 细节更少。 取值范围[0.0, 1.0], 默认值0.5。
luma point / _ luma sigma _调试 参数不同pixel亮度,对应不同噪声sigma曲线。 luma point为曲线亮度值,取值范围[0, 1023] 。 _ luma sigma为噪声强度值,取值范围[0, 1023] 。 _
luma point / hf clip _ _调试 参数不同pixel亮度高频值 clip 的范围。 值越大,允许的最大锐化强度越强。 取值范围[0, 1023]。默认值256。
luma point / _ local sharp strength _ _调试 参数计算不同pixel亮度,高频叠加权重的比例。 值越大,允许叠加的高频越大,图像越锐化。 取值范围[0, 1023]。默认值512。
prefilter coeff _调试 参数预滤波算子。
参数名称参数 类型简要说明
GaussianFilter coeff _调试 参数高斯滤波算子。
hfBilateralFilter coeff _调试 参数高频双边滤波算子。

RK_SHARP_Params_V4_Select_t

定义锐化模块的手动模式下算法属性

typedef struct RK_SHARP_Params_V4_Select_s
{
int enable;
short luma_point   [RK_SHARP_V4_LUMA_POINT_NUM];
short luma_sigma   [RK_SHARP_V4_LUMA_POINT_NUM];
float pbf_gain     ;
float pbf_add       ;
float pbf_ratio     ;
float gaus_ratio   ;
float sharp_ratio   ;
short hf_clip       [RK_SHARP_V4_LUMA_POINT_NUM];
float bf_gain       ;
float bf_add       ;
float bf_ratio     ;
short local_sharp_strength       [RK_SHARP_V4_LUMA_POINT_NUM];
float prefilter_coeff[RK_SHARP_V4_PBF_DIAM * RK_SHARP_V4_PBF_DIAM];
float GaussianFilter_coeff   [RK_SHARP_V4_RF_DIAM * RK_SHARP_V4_RF_DIAM];
float hfBilateralFilter_coeff   [RK_SHARP_V4_BF_DIAM *
RK_SHARP_V4_BF_DIAM];
} RK_SHARP_Params_V4_Select_t;
参数名称参数 类型简要说明
Enable调试 参数Sharp模块使能开关。 1:模块打开,0:模块关闭。
iso调试 参数不同iso档位,对应不同调试参数。目前仅支持13档。
pbf gain _调试 参数预滤波 sigma 乘以的比例,值越大,滤波越强,噪声越 小,细节更少。 取值范围[0.0, 2.0], 默认值1.0 。
pbf add _调试 参数预滤波 sigma 叠加的偏移,值越大,滤波越强,噪声越 小,细节更少。 取值范围[0, 1023], 默认值0。
pbf ratio _调试 参数预滤波融合权重,值越大,滤波越强,噪声越小,细节更 少。 取值范围[0.0, 1.0], 默认值0.5。
gaus ratio _调试 参数高频双边滤波的导向图像为高斯滤波与原图融合的结果。 值越大,高斯双边滤波的导向权重更大。 取值范围[0.0, 1.0], 默认值0。
sharp ratio _调试 参数锐化强度,值越大,锐化越强。 取值范围[0.0, 16], 默认值6。
bf gain _调试 参数高频双边滤波 sigma 乘以的比例, 值越大,滤波越强, 噪声越小,细节更少。 取值范围[0.0, 2.0], 默认值1.0 。
bf add _调试 参数高频双边滤波 sigma 叠加的偏移。值越大,滤波越强,噪 声越小,细节更少。 取值范围[0, 1023], 默认值0。
bf add _调试 参数高频双边滤波融合权重。值越大,滤波越强,噪声越小, 细节更少。 取值范围[0.0, 1.0], 默认值0.5。
luma point / _ luma sigma _调试 参数不同pixel亮度,对应不同噪声sigma曲线。 luma point为曲线亮度值,取值范围[0, 1023] 。 _ luma sigma为噪声强度值,取值范围[0, 1023] 。 _
luma point / hf clip _ _调试 参数不同pixel亮度高频值 clip 的范围。 值越大,允许的最大锐化强度越强。 取值范围[0, 1023]。默认值256。
luma point / _ local sharp strength _ _调试 参数计算不同pixel亮度,高频叠加权重的比例。 值越大,允许叠加的高频越大,图像越锐化。 取值范围[0, 1023]。默认值512。
prefilter coeff _调试 参数预滤波算子。
参数名称参数 类型简要说明
GaussianFilter coeff _调试 参数高斯滤波算子。
hfBilateralFilter coeff _调试 参数高频双边滤波算子。

RK_SHARP_Fix_V4_t

定义锐化模块的手动模式下寄存器配置

typedef struct RK_SHARP_Fix_V4_s
{
// SHARP_SHARP_EN (0x0000)
uint8_t sharp_clk_dis;
uint8_t sharp_exgain_bypass;
uint8_t sharp_center_mode;
uint8_t sharp_bypass;
uint8_t sharp_en;
// SHARP_SHARP_RATIO (0x0004)
uint8_t sharp_sharp_ratio;
uint8_t sharp_bf_ratio;
uint8_t sharp_gaus_ratio;
uint8_t sharp_pbf_ratio;
// SHARP_SHARP_LUMA_DX (0x0008)
uint8_t sharp_luma_dx[7];
// SHARP_SHARP_PBF_SIGMA_INV_0 (0x000c - 0x0014)
uint16_t sharp_pbf_sigma_inv[8];
// SHARP_SHARP_BF_SIGMA_INV_0 (0x0018 - 0x0020)
uint16_t sharp_bf_sigma_inv[8];
// SHARP_SHARP_SIGMA_SHIFT (0x00024)
uint8_t sharp_bf_sigma_shift;
uint8_t sharp_pbf_sigma_shift;
// SHARP_SHARP_EHF_TH_0 (0x0028 - 0x0030)
uint16_t sharp_ehf_th[8];
// SHARP_SHARP_CLIP_HF_0 (0x0034 - 0x003c)
uint16_t sharp_clip_hf[8];
// SHARP_SHARP_PBF_COEF (0x00040)
uint8_t sharp_pbf_coef[3];
// SHARP_SHARP_BF_COEF (0x00044)
uint8_t sharp_bf_coef[3];
// SHARP_SHARP_GAUS_COEF (0x00048 - 0x0004c)
uint8_t sharp_gaus_coef[6];
} RK_SHARP_Fix_V4_t;
参数名称参数说明
sharp clk dis _ _sharp模块clk gate设置,暂不支持此设置, 默认为0。
sharp exgain bypass _ _外部local gain模块是否bypass,暂不支持此设置,默认为0.
sharp center mode _ _是否以图像中心点为坐标进行锐化。暂不支持配置,默认是为0.
sharp bypass _锐化模块bypass 1 :bypass ; 0 :not bypass
sharp en _锐化模块使能 1:enable ; 0 :disable
sharp sharp ratio _ _sharp ratio:锐化强度, 0~15.9 _
sharp bf ratio _ _双边滤波融合权重, 0~1.0
sharp gaus ratio _ _gaus ratio:高斯滤波融合权重,取值范围[0.0, 1.0] _
sharp pbf ratio _ _双边预滤波融合权重 取值范围[0.0, 1.0], 默认值0.5
sharp luma dx7 _ _点6和点7之间的距离。实际距离等于2^sw sharp luma dx7。 _ _ _
sharp luma dx6 _ _点5和点6之间的距离。实际距离等于2^sw sharp luma dx6。 _ _ _
sharp luma dx5 _ _点4和点5之间的距离。实际距离等于2^sw sharp luma dx5。 _ _ _
sharp luma dx4 _ _点3和点4之间的距离。实际距离等于2^sw sharp luma dx4。 _ _ _
sharp luma dx3 _ _点2和点3之间的距离。实际距离等于2^sw sharp luma dx3。 _ _ _
sharp luma dx2 _ _点1和点2之间的距离。实际距离等于2^sw sharp luma dx2。 _ _ _
sharp luma dx1 _ _0点和1点之间的距离。实际距离等于2^sw sharp luma dx1。 _ _ _ 注意:总距离必须等于 1024。
sharp pbf sigma inv _ _ _Sharp pbf sigma inverse
sharp bf sigma inv _ _ _Sharp bf sigma inverse
sharp pbf coef _ _锐化模块双边与滤波滤波核
sharp bf coef _ _双边滤波核
sharp gaus coef _ _高斯滤波核

rk_aiq_sharp_strength_v4_t

定义锐化模块的去噪强度配置结构体

typedef struct rk_aiq_sharp_strength_v4_s {
rk_aiq_uapi_sync_t sync;
float percent;
} rk_aiq_sharp_strength_v4_t;
成员名称描述
sync同步异步模式选择,参见 “概述/API说明” 章节
percent锐化强度,取值范围0.0-1.0。

Gamma​

功能描述​

Gamma 模块对图像进行亮度空间非线性转换以适配输出设备。RK3588支持49点log域gamma曲线,其横坐标为:

int X_isp30[49] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32,
40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 448, 512, 640,
768, 896, 1024, 1280, 1536, 1792, 2048, 2304, 2560, 2816, 3072, 3328, 3584,
3840, 4095};

功能级API参考​

rk_aiq_uapi2_setGammaCoef

【描述】

通过GammaCoef和SlopeAtZero快速设置gamma曲线。其gamma曲线生成方式如下:

for(int i = 0; i < 49; i++) {
Y_isp30[i] = 4095 * pow(X_isp30[i] / 4095, 1 / GammaCoef + SlopeAtZero);
Y_isp30[i] = LIMIT_VALUE(Y_isp30[i], 4095, 0);
}

【语法】

XCamReturn rk_aiq_uapi2_setGammaCoef(const rk_aiq_sys_ctx_t* ctx, float
GammaCoef, float SlopeAtZero);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
GammaCoefgamma系数,取值范围[0,100],默认值2.2,精度0.01输入
SlopeAtZero暗区斜率,取值范围[-0.05,0.05],默认值0,精度0.001输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

Api中Gamma曲线未按照场景进行切换,若场景变化,请重新通过api设置gamma曲线。

功能级API数据类型​

模块级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上下文指针输入
attrGamma软件属性结构体输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】头文件:rk_aiq_user_api2_agamma.h库文件:librkaiq.so

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上下文指针输入
attrGamma软件属性结构体输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_agamma.h库文件:librkaiq.so

模块级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_FAST = 2,
} rk_aiq_gamma_op_mode_t;
成员名称描述
RK AIQ GAMMA MODE OFF _ _ _ _Api关闭模式
RK AIQ GAMMA MODE MANUAL _ _ _ _Api手动模式
RK AIQ GAMMA MODE FAST _ _ _ _Api快速模式

Agamma_api_Fast_t

定义快速模式下Gamma属性

通过GammaCoef和SlopeAtZero快速设置gamma曲线。其gamma曲线生成方式如下:

for(int i = 0; i < 49; i++) {
Y_isp30[i] = 4095 * pow(X_isp30[i] / 4095, 1 / GammaCoef + SlopeAtZero);
Y_isp30[i] = LIMIT_VALUE(Y_isp30[i], 4095, 0);
}
typedef struct Agamma_api_Fast_s {
bool en;
float GammaCoef;
float SlopeAtZero;
} Agamma_api_Fast_t;
成员名称描述
en开关功能
GammaCoefgamma系数,取值范围[0,100],默认值2.2,精度0.01
SlopeAtZero暗区斜率,取值范围[-0.05,0.05],默认值0,精度0.001

GammaType_t

定义Gamma曲线X轴间距类型属性

typedef enum GammaType_e {
GAMMATYPE_LOG = 0,
GAMMATYPE_EQU = 1,
} GammaType_t;
成员名称描述
GAMMATYPE LOG _非等间距
GAMMATYPE EQU _等间距

Agamma_api_manualV21_t

定义RK356x下手动Gamma属性

typedef struct Agamma_api_manualV21_s {
bool Gamma_en;
GammaType_t Gamma_out_segnum;
uint16_t Gamma_out_offset;
uint16_t Gamma_curve[CALIBDB_AGAMMA_KNOTS_NUM];
} Agamma_api_manualV21_t;
成员名称描述
Gamma en _开关功能
Gamma out segnum _ _手动Gamma曲线X轴间距类型,默认值GAMMATYPE LOG _
Gamma out offset _ _手动Gamma曲线修正系数,取值范围[-2048,2048],默认值0,精度 1。
Gamma curve _手动Gamma曲线,取值范围[0,4095],精度1。

Agamma_api_manualV30_t

定义RK3588下手动Gamma属性

typedef struct Agamma_api_manualV30_s {
bool Gamma_en;
uint16_t Gamma_out_offset;
uint16_t Gamma_curve[CALIBDB_AGAMMA_KNOTS_NUM_V30];
} Agamma_api_manualV30_t;
成员名称描述
Gamma en _开关功能
Gamma out offset _ _手动Gamma曲线修正系数,取值范围[-2048,2048],默认值0,精度1。
Gamma curve _手动Gamma曲线,取值范围[0,4095],精度1。

rk_aiq_gamma_attrV21_t

定义RK356x下Gamma属性

typedef struct rk_aiq_gamma_attrV21_s {
rk_aiq_gamma_op_mode_t mode;
Agamma_api_manualV21_t stManual;
Agamma_api_Fast_t stFast;
} rk_aiq_gamma_attrV21_t;
成员名称描述
modeAPI模式
stManual手动Gamma参数
stFast快速模式参数

rk_aiq_gamma_attrV30_t

定义RK3588下Gamma属性

typedef struct rk_aiq_gamma_attrV30_s {
rk_aiq_gamma_op_mode_t mode;
Agamma_api_manualV30_t stManual;
Agamma_api_Fast_t stFast;
} rk_aiq_gamma_attrV30_t;
成员名称描述
modeAPI模式
stManual手动Gamma参数
stFast快速模式参数

rk_aiq_gamma_attr_t

定义Gamma属性

typedef struct rk_aiq_gamma_attr_s {
rk_aiq_uapi_sync_t sync;
rk_aiq_gamma_attrV21_t atrrV21;
rk_aiq_gamma_attrV30_t atrrV30;
} rk_aiq_gamma_attr_t;
成员名称描述
sync参考rk aiq uapi sync t定义,参见 “概述/API说明” 章节 _ _ _ _
atrrV21RK356x芯片下手动gamma属性
atrrV30RK3588芯片下手动gamma属性

CCM​

功能描述​

CCM (Color Correction Matrix) 模块对图像进行颜色校正处理。

功能级API参考​

rk_aiq_uapi2_setCCMMode

【描述】设置CCM工作模式。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
mode工作模式; 取值范围:{OP AUTO, OP MANUAL} _ _输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】参考 sample_accm_module.cpp 中 "sample_set_ccm_manual" / "sample_set_ccm_auto" 设置手动/自动模式。

rk_aiq_uapi2_getCCMMode

【描述】获取CCM工作模式。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
mode工作模式; 取值范围:{OP AUTO, OP MANUAL} _ _输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考 sample_accm_module.cpp 中 "sample_get_ccm_mode" 获取工作模式。

rk_aiq_uapi2_setMCcCoef

【描述】设置Manual模式下的CCM矩阵,包括色彩校正矩阵和R/G/B通道偏移。

【语法】

XCamReturn rk_aiq_uapi2_setMCcCoef(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_ccm_matrix_t *mccm);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
mccmManual模式下的CCM矩阵,包括色彩校正矩阵和R/G/B通道偏移输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考 sample_accm_module.cpp 中 "sample_set_ccm_manual_matrix" 设置手动CCM矩阵。

rk_aiq_uapi2_getMCcCoef

【描述】获取CCM矩阵,包括色彩校正矩阵和R/G/B通道偏移。

【语法】

XCamReturn rk_aiq_uapi2_getMCcCoef(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_ccm_matrix_t *mccm);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
mccmCCM矩阵,包括色彩校正矩阵和R/G/B通道偏移输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考 sample_accm_module.cpp 中 "sample_get_ccm_manual_matrix" 获取CCM矩阵。

rk_aiq_uapi2_getACcmSat

【描述】获取自动模式下的CCM饱和度。

【语法】

XCamReturn rk_aiq_uapi2_getACcmSat(const rk_aiq_sys_ctx_t* ctx,  float
*finalsat);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
finalsat饱和度,手动模式为0输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考 sample_accm_module.cpp 中 "sample_get_accm_sat" 获取自动模式下CCM饱和度。

rk_aiq_uapi2_getACcmMatrixName

【描述】获取自动模式下CCM矩阵名。

【语法】

XCamReturn rk_aiq_uapi2_getACcmMatrixName(const rk_aiq_sys_ctx_t* ctx, char
**ccm_name);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
ccm name _CCM矩阵名输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考 sample_accm_module.cpp 中 "sample_get_accm_matrix_name" 获取自动模式下CCM饱和度。

功能级API数据类型​

opMode_t

定义CCM工作模式。

typedef enum opMode_e {
OP_AUTO = 0,
OP_MANUAL = 1,
OP_INVAL
} opMode_t;
成员名称描述
OP AUTO _自动模式
OP MANUAL _手动模式
OP INVAL _无效值

rk_aiq_ccm_matrix_t

定义CCM矩阵。

typedef struct rk_aiq_ccm_matrix_s {
float ccMatrix[9];
float ccOffsets[3];
} rk_aiq_ccm_matrix_t;
成员名称描述
ccMatrix手动模式下色彩校正矩阵; 取值范围:[-8, 7.992]
ccOffsets手动模式下R\G\B分量偏移; 取值范围:[-4096, 4095]

模块级API参考​

rk_aiq_user_api2_accm_SetAttrib

【描述】设置CCM属性。

【语法】

XCamReturn
rk_aiq_user_api2_accm_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ccm_attrib_t attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attrCCM的属性参数输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_accm.h、rk_aiq_uapi_accm_int.h库文件:librkaiq.so

【示例】

参考 sample_accm_module.cpp 中 "sample_ccm_setCcmAttr" 等设置CCM属性。

rk_aiq_user_api2_accm_GetAttrib

【描述】获取CCM属性。

【语法】

XCamReturn
rk_aiq_user_api2_accm_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ccm_attrib_t *attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attrCCM的参数属性输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_accm.h、rk_aiq_uapi_accm_int.h库文件:librkaiq.so

【示例】

参考 sample_accm_module.cpp 中 "sample_ccm_setCcmAttr" 等获取CCM属性。

rk_aiq_user_api2_accm_QueryCcmInfo

【描述】查询CCM信息。

【语法】

XCamReturn
rk_aiq_user_api2_accm_QueryCcmInfo(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_ccm_querry_info_t *ccm_querry_info);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
ccm querry info _ _CCM的查询内容输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_accm.h、rk_aiq_uapi_accm_int.h库文件:librkaiq.so

【示例】

参考 sample_accm_module.cpp 中 "sample_ccm_setCcmAttr" 查询CCM信息。

模块级API数据类型​

rk_aiq_ccm_op_mode_t

定义CCM工作模式。

typedef enum rk_aiq_ccm_op_mode_s {
RK_AIQ_CCM_MODE_INVALID = 0,
RK_AIQ_CCM_MODE_MANUAL = 1,
RK_AIQ_CCM_MODE_AUTO = 2,
RK_AIQ_CCM_MODE_TOOL = 3,
RK_AIQ_CCM_MODE_MAX
} rk_aiq_ccm_op_mode_t;
成员名称描述
RK AIQ CCM MODE INVALID _ _ _ _CCM无效模式
RK AIQ CCM MODE MANUAL _ _ _ _CCM手动模式
RK AIQ CCM MODE AUTO _ _ _ _CCM自动模式
RK AIQ CCM MODE TOOL _ _ _ _CCM工具模式(暂时无用)

rk_aiq_ccm_mccm_attrib_t

定义手动CCM属性。

typedef struct rk_aiq_ccm_mccm_attrib_s {
float ccMatrix[9];
float ccOffsets[3];
float y_alpha_curve[17];
float low_bound_pos_bit;
} rk_aiq_ccm_mccm_attrib_t;
成员名称描述
ccMatrix色彩校正矩阵; 取值范围:[-8, 7.992]
ccOffsetsR\G\B分量偏移; 取值范围:[-4096, 4095]
y alpha curve _ _像素点亮度(12bit)相关颜色校正强度调节曲线的强度配置; 取值范围:[0x0, 0x400]; 0x400表示1倍强度,0x0表示不校正
low bound pos bit _ _ _像素点亮度(12bit)相关颜色校正强度调节曲线拐点亮度值,即可调节 亮度区间为:[0, 2^low bound pos bit] 和 [4095- _ _ _ 2^low bound pos bit, 4095]; _ _ _ 取值范围:[0,10]

rk_aiq_ccm_color_inhibition_t定义CCM色彩抑制水平。

typedef struct rk_aiq_ccm_color_inhibition_s {
float sensorGain[RK_AIQ_ACCM_COLOR_GAIN_NUM];
float level[RK_AIQ_ACCM_COLOR_GAIN_NUM];
} rk_aiq_ccm_color_inhibition_t;
成员名称描述
sensorGain曝光增益分量
level色彩抑制水平; 取值范围:[0,100]; 默认值为0

rk_aiq_ccm_color_saturation_t

定义自动CCM色彩饱和度水平。

typedef struct rk_aiq_ccm_color_saturation_s {
float sensorGain[RK_AIQ_ACCM_COLOR_GAIN_NUM];
float level[RK_AIQ_ACCM_COLOR_GAIN_NUM];
} rk_aiq_ccm_color_saturation_t;
成员名称描述
sensorGain曝光增益分量
level色彩饱和度水平; 取值范围:[0,100]; 默认值为100

rk_aiq_ccm_accm_attrib_t

定义自动CCM属性。

typedef struct rk_aiq_ccm_accm_attrib_s {
rk_aiq_ccm_color_inhibition_t color_inhibition;
rk_aiq_ccm_color_saturation_t color_saturation;
} rk_aiq_ccm_accm_attrib_t;
成员名称描述
color inhibition _CCM色彩抑制水平
color saturation _CCM色彩饱和度水平

rk_aiq_ccm_attrib_t

定义CCM属性。

typedef struct rk_aiq_ccm_attrib_s {
rk_aiq_uapi_sync_t sync;
bool byPass;
rk_aiq_ccm_op_mode_t mode;
rk_aiq_ccm_mccm_attrib_t stManual;
rk_aiq_ccm_accm_attrib_t stAuto;
CalibDbV2_Ccm_Para_V2_t stTool;
} rk_aiq_ccm_attrib_t;
成员名称描述
sync同步/异步信号,参考rk aiq uapi sync t定义说明,参见 “概述/API说明” 章节 _ _ _ _
byPass跳过模块处理; true 跳过CCM,false CCM使能
mode工作模式选择; 取值范围:{RK AIQ CCM MODE MANUAL,RK AIQ CCM MODE AUTO},分别 _ _ _ _ _ _ _ _ 表示手动和自动模式
stManual手动模式下属性参数配置
stAuto自动模式下属性参数配置
stTool工具模式下参数配置,无需配置

rk_aiq_ccm_querry_info_t

定义CCM查询信息

typedef struct rk_aiq_ccm_querry_info_s {
bool ccm_en;
float ccMatrix[9];
float ccOffsets[3];
float y_alpha_curve[CCM_CURVE_DOT_NUM];
float low_bound_pos_bit;
float color_inhibition_level;
float color_saturation_level;
float finalSat;
char ccmname1[25];
char ccmname2[25];
} rk_aiq_ccm_querry_info_t;
成员名称描述
ccm en _CCM使能 true 使能,false 不使能
ccMatrixCCM生效校正矩阵; 取值范围:[-8,7.992]
ccOffsets生效R\G\B分量偏移; 取值范围:[-4096,4095]
y alpha curve _ _像素点亮度(12bit)相关颜色校正强度调节曲线的强度配置; 取值范围:[0x0, 0x400]; 0x400表示1倍强度,0x0表示不校正
low bound pos bit _ _ _像素点亮度(12bit)相关颜色校正强度调节曲线拐点亮度值,即可调 节亮度区间为:[0, 2^low bound pos bit] 和 [4095- _ _ _ 2^low bound pos bit, 4095]; _ _ _ 取值范围:[0,10]
color inhibition level _ _CCM色彩抑制水平(仅支持自动模式)
color saturation level _ _CCM色彩饱和度水平(仅支持自动模式)
finalSat当前矩阵对应的饱和度值(仅支持自动模式)
ccmname1用于插值计算当前矩阵的标定矩阵名(仅支持自动模式)
ccmname2用于插值计算当前矩阵的标定矩阵名(仅支持自动模式)

3DLUT​

功能描述​

3DLUT (3D look up table) 模块对图像进行RGB空间的颜色映射处理。

功能级API参考​

rk_aiq_uapi2_setLut3dMode

【描述】设置3DLUT工作模式。【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
mode工作模式; 取值范围:{OP AUTO, OP MANUAL} _ _输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考 sample_a3dlut_module.cpp 中 "sample_set_a3dlut_manual" / "sample_set_a3dlut_auto" 设置手动/自动模式。

rk_aiq_uapi2_getLut3dMode

【描述】获取3DLUT工作模式。

【语法】

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

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
mode工作模式输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考 sample_a3dlut_module.cpp 中 "sample_get_a3dlut_mode" 设置手动/自动模式。

rk_aiq_uapi2_setM3dLut

【描述】设置3DLUT手动3D查找表。

【语法】

XCamReturn rk_aiq_uapi2_setM3dLut(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_lut3d_table_t *mlut);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
mlut3D查找表输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考 sample_a3dlut_module.cpp 中 "sample_set_a3dlut_manual_lut" 设置3DLUT手动3D查找表。

rk_aiq_uapi2_getM3dLut

【描述】获取3DLUT 3D查找表。

【语法】

XCamReturn rk_aiq_uapi2_getM3dLut(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_lut3d_table_t *mlut);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
mlut3D查找表输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考 sample_a3dlut_module.cpp 中 "sample_get_a3dlut_lut" 获取3DLUT 3D查找表。

rk_aiq_uapi2_getA3dLutStrth

【描述】获取3DLUT调节强度。

【语法】

XCamReturn rk_aiq_uapi2_getA3dLutStrth(const rk_aiq_sys_ctx_t* ctx, float
alpha);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
alpha3DLUT调节强度输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考 sample_a3dlut_module.cpp 中 "sample_get_a3dlut_strength" 获取3DLUT调节强度。

rk_aiq_uapi2_getA3dLutName

【描述】获取自动模式下3DLUT表名。

【语法】

XCamReturn rk_aiq_uapi2_getA3dLutName(const rk_aiq_sys_ctx_t* ctx, char *name);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
name3DLUT表名输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

【示例】

参考 sample_a3dlut_module.cpp 中 "sample_get_a3dlut_lutname" 获取自动模式下3DLUT表名。

功能级API数据类型​

opMode_t

定义3DLUT工作模式。

typedef enum opMode_e {
OP_AUTO = 0,
OP_MANUALl = 1,
OP_INVAL
} opMode_t;
成员名称描述
OP AUTO _自动模式
OP MANUALl _手动模式
OP INVAL _无效值

rk_aiq_lut3d_table_t

定义3DLUT 3D查找表。

typedef struct rk_aiq_lut3d_table_s{
unsigned short look_up_table_r[729];
unsigned short look_up_table_g[729];
unsigned short look_up_table_b[729];
} rk_aiq_lut3d_table_t;
成员名称描述
look up table r _ _ _手动模式下R通道查找表; 取值范围:[0x0, 0x3ff]
look up table g _ _ _手动模式下G通道查找表; 取值范围:[0x0, 0xfff]
look up table b _ _ _手动模式下B通道查找表; 取值范围:[0x0, 0x3ff]

模块级API参考​

rk_aiq_user_api2_a3dlut_SetAttrib

【描述】设置3DLUT属性。

【语法】

XCamReturn rk_aiq_user_api2_a3dlut_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_lut3d_attrib_t attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr3DLUT的参数属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_a3dlut.h、rk_aiq_uapi_a3dlut_int.h库文件:librkaiq.so

【示例】

参考 sample_a3dlut_module.cpp 中 "sample_3dlut_set3dlutAttr" 等设置3DLUT属性。

rk_aiq_user_api2_a3dlut_GetAttrib

【描述】获取3DLUT属性。

【语法】

XCamReturn
rk_aiq_user_api2_a3dlut_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_lut3d_attrib_t *attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr3DLUT的参数属性输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_a3dlut.h、rk_aiq_uapi_a3dlut_int.h库文件:librkaiq.so

【示例】

参考 sample_a3dlut_module.cpp 中 "sample_3dlut_get3dlutAttr" 等获取3DLUT属性。

rk_aiq_user_api2_a3dlut_Query3dlutInfo

【描述】查询3DLUT信息。

【语法】

XCamReturn
rk_aiq_user_api2_a3dlut_Query3dlutInfo(const RkAiqAlgoContext *ctx,
rk_aiq_lut3d_querry_info_t *lut3d_querry_info );

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
lut3d querry info _ _3DLUT的查询内容输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_a3dlut.h、rk_aiq_uapi_a3dlut_int.h库文件:librkaiq.so

【示例】

参考 sample_a3dlut_module.cpp 中 "sample_query_a3dlut_info" 查询3DLUT信息。

模块级API数据类型​

rk_aiq_lut3d_op_mode_t

定义3DLUT工作模式

typedef enum rk_aiq_lut3d_op_mode_s {
RK_AIQ_LUT3D_MODE_INVALID = 0,
RK_AIQ_LUT3D_MODE_MANUAL = 1,
RK_AIQ_LUT3D_MODE_AUTO = 2,
RK_AIQ_LUT3D_MODE_MAX
} rk_aiq_lut3d_op_mode_t;
成员名称描述
RK AIQ LUT3D MODE INVALID _ _ _ _3DLUT无效模式
RK AIQ LUT3D MODE MANUAL _ _ _ _3DLUT手动模式
RK AIQ LUT3D MODE AUTO _ _ _ _3DLUT自动模式

rk_aiq_lut3d_mlut3d_attrib_t定义手动3DLUT属性

typedef struct rk_aiq_lut3d_mlut3d_attrib_s {
unsigned short look_up_table_r[729];
unsigned short look_up_table_g[729];
unsigned short look_up_table_b[729];
} rk_aiq_lut3d_mlut3d_attrib_t;
成员名称描述
look up table r _ _ _手动模式下R通道查找表; 取值范围:[0x0, 0x3ff]
look up table g _ _ _手动模式下G通道查找表; 取值范围:[0x0, 0xfff]
look up table b _ _ _手动模式下B通道查找表; 取值范围:[0x0, 0x3ff]

rk_aiq_lut3d_attrib_t

定义3DLUT属性

typedef struct rk_aiq_lut3d_attrib_s {
rk_aiq_uapi_sync_t sync;
bool byPass;
rk_aiq_lut3d_op_mode_t mode;
rk_aiq_lut3d_mlut3d_attrib_t stManual;
} rk_aiq_lut3d_attrib_t;
成员名称描述
sync同步/异步信号,参考rk aiq uapi sync t定义说明,参见 “概述/API说明” 章节 _ _ _ _
byPass跳过模块处理; true 跳过3DLUT,false 3DLUT使能
mode工作模式选择; 取值范围:{RK AIQ LUT3D MODE MANUAL,RK AIQ LUT3D MODE AUTO}, _ _ _ _ _ _ _ _ 分别表示手动和自动模式
stManual手动模式下属性参数配置

rk_aiq_lut3d_querry_info_t定义3DLUT查询信息

typedef struct rk_aiq_lut3d_querry_info_s {
bool lut3d_en;
float alpha;
char name[25];
unsigned short look_up_table_r[729];
unsigned short look_up_table_g[729];
unsigned short look_up_table_b[729];
} rk_aiq_lut3d_querry_info_t;
成员名称描述
lut3d en _3DLUT使能; true 使能,false 不使能
alpha3DLUT调节强度; 取值范围:[0, 1.0],值越大强度越大; 手动模式下为1.0
name3DLUT表名,仅支持自动模式
look up table r _ _ _R通道查找表; 取值范围:[0x0, 0x3ff]
look up table g _ _ _G通道查找表; 取值范围:[0x0, 0xfff]
look up table b _ _ _B通道查找表; 取值范围:[0x0, 0x3ff]

LDCH​

功能描述​

LDCH对存在失真的图像进行复原性处理,该模块只对水平方向的图像畸变进行校正。

功能级API参考​

rk_aiq_uapi_setLdchEn

【描述】 水平畸变校正功能开关。

【语法】

XCamReturn rk_aiq_uapi2_setLdchEn(const rk_aiq_sys_ctx_t* ctx, bool en);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
en校正开关输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

rk_aiq_uapi2_setLdchCorrectLevel

【描述】 设置水平畸变校正等级。

【语法】

XCamReturn rk_aiq_uapi2_setLdchCorrectLevel(const rk_aiq_sys_ctx_t* ctx, int
correctLevel);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
correctLevel校正等级,取值范围:[0~255]输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_imgproc.h库文件:librkaiq.so

模块级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上下文指针输入
attrldch的参数属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_aldch.h库文件:librkaiq.so

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上下文指针输入
attrldch的参数属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_aldch.h库文件:librkaiq.so

模块级API数据类型​

rk_aiq_ldch_attrib_t

ldch属性配置

typedef struct rk_aiq_ldch_cfg_s {
rk_aiq_uapi_sync_t sync;
unsigned int en;
int correct_level;
} rk_aiq_ldch_cfg_t;
成员名称描述
sync接口同步/异步功能,参考rk aiq uapi sync t定义说明,参见 “概述/API说明” _ _ _ _ 章节
en使能/关闭ldch
correct level _设置ldch校正级别:[0~255]

DeBayer​

功能描述​

DeBayer完成将由 sensor 采集到的,带有 CFA 属性的图像通过插值算法还原成为具有完整像素信息的RGB图像。

该模块支持Bayer raw数据,包含 RGGB、BGGR、GRBG、GBRG 四种 pattern 模式。暂不支持 其他CFA数据,例如:RCCB, RGB-IR等CFA。

模块级API参考​

rk_aiq_user_api_adebayer_SetAttrib

【描述】设置去马赛克属性。

【语法】

XCamReturn
rk_aiq_user_api2_adebayer_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
adebayer_attrib_t attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr去马赛克属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_adebayer.h库文件:librkaiq.so

rk_aiq_user_api_adebayer_GetAttrib

【描述】获取去马赛克属性。

【语法】

XCamReturn
rk_aiq_user_api2_adebayer_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
adebayer_attrib_t *attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr去马赛克属性输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_uapi2_adebayer_int.h库文件:librkaiq.so

数据类型​

rk_aiq_debayer_op_mode_t

定义debayer工作模式。

typedef enum rk_aiq_debayer_op_mode_s {
RK_AIQ_DEBAYER_MODE_INVALID = 0,        /**<
initialization value */
RK_AIQ_DEBAYER_MODE_MANUAL = 1,        /**< run manual
lens shading correction */
RK_AIQ_DEBAYER_MODE_AUTO = 2,        /**< run auto
lens shading correction */
RK_AIQ_DEBAYER_MODE_MAX
} rk_aiq_debayer_op_mode_t;
成员名称描述
RK AIQ DEBAYER MODE INVALID _ _ _ _Debayer无效模式
RK AIQ DEBAYER MODE MANUAL _ _ _ _Debayer手动模式
RK AIQ DEBAYER MODE AUTO _ _ _ _Debayer自动模式

adebayer_attrib_manual_t

定义debayer手动模式下的可配置属性。

typedef struct adebayer_attrib_manual_s {
int8_t filter1[5];
int8_t filter2[5];
uint8_t gain_offset;
uint8_t sharp_strength;
uint8_t hf_offset;
uint8_t offset;
uint8_t clip_en;
uint8_t filter_g_en;
uint8_t filter_c_en;
uint8_t thed0;
uint8_t thed1;
uint8_t dist_scale;
uint8_t cnr_strength;
uint8_t shift_num;
} adebayer_attrib_manual_t;
成员名称描述
filter1低频梯度滤波器; 取值范围:[-8,7]
filter2高频梯度滤波器; 取值范围:[-8,7]
gain offset _计算G通道插值系数中锐化权重时梯度的偏移值; 取值范围:[0,15]
sharp strength _G通道插值锐化力度,值越大,锐化力度越大; 取值范围:[0,4]
hf offset _插值方向性控制: 值越小,平坦区域容易出现伪纹理;值越大,边缘区域越 容易出现锯齿现象。 取值范围:[0,4095]
offsetG通道clip的offset。值越大, clip范围越大。 取值范围:[0,65535]
clip en _G通道插值 clip 开关,0:关闭,1:打开;
filter g en _ _G通道散点去除开关,0:关闭,1:打开;
filter c en _ _伪色去除开关,0:关闭,1:打开;
thed0控制高低频权重选取,值越大选取高频权重概率越小; 取值范围:[0,16]
thed1控制高低频权重选取,值越大选取低频权重概率越小; 取值范围:[0,16]
dist scale _控制高低频权重选取,值越大选取高频权重概率越小; 取值范围:[0,16]
cnr strength _伪色去除力度,值越大,力度越大; 取值范围:[0,9]
shift num _色差图滤波时上下限加减的偏移值移位大小,值越小,色差 clip 的范围越 大; 取值范围[0,4]

adebayer_attrib_auto_t

定义debayer自动模式下的可配置属性。

typedef struct adebayer_attrib_auto_s {
uint8_t sharp_strength[9];
uint8_t low_freq_thresh;
uint8_t high_freq_thresh;
} adebayer_attrib_auto_t;
成员名称描述
enhance strength[9] _不同ISO下的细节纹理增强强度 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 值越大细节细碎度和清晰度越好,同时伪细节也会相应增强 取值范围:[0~7]
low freq thresh _ _低频权重选取阈值 值越大选取低频权重的概率越小 取值范围:[0~15]
high freq thresh _ _高频权重选取阈值 值越大选取高频权重的概率越小 取值范围:[0~15]

adebayer_attrib_t

定义debayer可配置属性。

typedef struct adebayer_attrib_s {
rk_aiq_uapi_sync_t sync;
uint8_t enable;
rk_aiq_debayer_op_mode_t mode;
adebayer_attrib_manual_t stManual;
adebayer_attrib_auto_t stAuto;
} adebayer_attrib_t;
成员名称描述
sync同步/异步接口模式,参考rk aiq uapi sync t定义说明,参见 “概述/API说明” 章节 _ _ _ _
enabledebayer模块使能开关,0:bypass,1:打开;
modedebayer工作模式
stManualdebaye手动控制模式下的配置属性
stAutodebayer自动控制模式下的配置属性

DPCC​

功能描述​

检测并消除图像中的坏点。建议详见《Rockchip_Tuning_Guide_ISP30》文档中4.6章节"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_V20_t *attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attrDPCC软件属性结构体输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_adpcc.h库文件:librkaiq.so

rk_aiq_user_api2_adpcc_GetAttrib

【描述】获取 DPCC软件属性。

【语法】

XCamReturn
rk_aiq_user_api2_adpcc_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_dpcc_attrib_V20_t *attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attrDPCC软件属性结构体输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_adpcc.h库文件:librkaiq.so

数据类型​

rk_aiq_dpcc_attrib_V20_t

定义坏点消除属性。

typedef struct rk_aiq_dpcc_attrib_V20_s {
AdpccOPMode_t eMode;
Adpcc_Auto_Attr_t stAuto;
Adpcc_Manual_Attr_t stManual;
rk_aiq_uapi_sync_t sync;
} rk_aiq_dpcc_attrib_V20_t;
成员名称描述
eMode定义DPCC工作模式,详见AdpccOPMode t说明 _
stAuto自动模式的参数设定
stManual手动模式的参数设定
sync接口同步/异步功能,参考rk aiq uapi sync t定义说明,参见 “概述/API说明” 章节 _ _ _ _

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;
成员名称描述
arBasicDPCC基本参数属

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;
成员名称描述
ensensor 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;
成员名称描述
ensensor dpcc开关功能
max level _去除坏点最大力度
single level _去除单个坏点力度
double level _去除多个坏点力度

Adpcc_Manual_Attr_t

定义手动DPCC属性

typedef struct Adpcc_Manual_Attr_s
{
unsigned char enable;
Adpcc_onfly_cfg_t stOnfly;
Adpcc_bpt_params_select_t stBpt;
Adpcc_pdaf_params_select_t stPdaf;
Adpcc_sensor_dpcc_attr_t stSensorDpcc;
} Adpcc_Manual_Attr_t;
成员名称描述
enable手动模式DPCC开关
stOnfly手动模式下ISP DPCC模块动态坏点检测以及校正功能参数
stBptParams手动模式下ISP DPCC模块静态坏点校正功能参数
stPdafParams手动模式下ISP DPCC模块PDAF SPC功能参数
stSensorDpcc手动模式下Sensor端DPCC 模块坏点校正功能参数

Adpcc_onfly_cfg_t

定义手动DPCC基本参数

typedef struct Adpcc_onfly_cfg_s {
Adpcc_onfly_mode_t mode;
Adpcc_fast_mode_attr_t fast_mode;
Adpcc_basic_cfg_params_t expert_mode;
} Adpcc_onfly_cfg_t;
成员名称描述
mode快速模式或者专家模式
fastmode手动模式下快速模式参数设置
expert mode _手动模式下专家模式参数设置

Adpcc_onfly_mode_t

定义手动DPCC基本参数

typedef enum Adpcc_onfly_mode_e {
ADPCC_ONFLY_MODE_FAST = 0,                   /**< dpcc manual fast
mode */
ADPCC_ONFLY_MODE_EXPERT = 1,                   /**< dpcc manual expert
mode */
ADPCC_ONFLY_MODE_MAX /**< max */
} Adpcc_onfly_mode_t;
成员名称描述
ADPCC ONFLY MODE FAST _ _ _快速模式
ADPCC ONFLY MODE EXPERT _ _ _专家模式
ADPCC ONFLY MODE MAX _ _ _无效参数设置

CalibDb_Dpcc_Pdaf_t

定义工具PDAF SPC功能属性参数

typedef struct CalibDb_Dpcc_Pdaf_s
{
unsigned char en;
unsigned char point_en[16];
unsigned short int offsetx;
unsigned short int offsety;
unsigned char wrapx;
unsigned char wrapy;
unsigned short int wrapx_num;
unsigned short int wrapy_num;
unsigned char point_x[16];
unsigned char point_y[16];
unsigned char forward_med;
} CalibDb_Dpcc_Pdaf_t;

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;
成员名称描述
rkRK算法
lcLC算法
pgPG算法
rndRND算法
rgRG算法
roRO算法

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专家模式
pdafPADF SPC功能模式下坏点条件
sensor dpcc _Sensor端DPCC模块坏点校正参数

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;
成员名称描述
eModeapi模式
stAuto自动DPCC模式
stManual手动DPCC模式
stTool工具DPCC模式

LSC​

功能描述​

镜头阴影校正(Lens Shading Correction)是为了解决由于lens的光学特性,由于镜头对于光学折射不均匀导致的镜头周围出现阴影的情况。

模块级API参考​

rk_aiq_user_api2_alsc_SetAttrib

【描述】设置镜头阴影校正属性。

【语法】

XCamReturn
rk_aiq_user_api2_alsc_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_lsc_attrib_t attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr镜头阴影校正属性输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_alsc.h库文件:librkaiq.so

rk_aiq_user_api2_alsc_GetAttrib

【描述】获取镜头阴影校正属性。

【语法】

XCamReturn
rk_aiq_user_api2_adebayer_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rk_aiq_lsc_attrib_t *attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attr镜头阴影校正属性输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_alsc.h库文件:librkaiq.so

数据类型​

rk_aiq_lsc_attrib_t

定义ISP镜头阴影校正属性。

typedef struct rk_aiq_lsc_attrib_s {
bool byPass;
rk_aiq_lsc_op_mode_t mode;
rk_aiq_lsc_mlsc_attrib_t stManual;
rk_aiq_uapi_sync_t sync;
} rk_aiq_lsc_attrib_t;
成员名称描述
sync接口同步/异步功能,参考rk aiq uapi sync t定义说明,参见 “概述/API说明” 章节 _ _ _ _
bypassLSC模块使能 1:关闭 0: 使能
mode模式设置
stManual手动模式下的参数设置

rk_aiq_lsc_op_mode_t

定义ISP镜头阴影校正工作模式。

typedef enum rk_aiq_lsc_op_mode_s {
RK_AIQ_LSC_MODE_INVALID = 0,        /**< initialization
value */
RK_AIQ_LSC_MODE_MANUAL = 1,        /**< run manual lens
shading correction */
RK_AIQ_LSC_MODE_AUTO = 2,        /**< run auto lens
shading correction */
RK_AIQ_LSC_MODE_MAX
} rk_aiq_lsc_op_mode_t;
成员名称描述
RK AIQ LSC MODE INVALID _ _ _ _无效模式
RK AIQ LSC MODE MANUAL _ _ _ _手动模式
RK AIQ LSC MODE AUTO _ _ _ _自动模式

rk_aiq_lsc_table_t

定义ISP镜头阴影校正表。

typedef struct rk_aiq_lsc_table_s {
unsigned short r_data_tbl[LSC_DATA_TBL_SIZE];
unsigned short gr_data_tbl[LSC_DATA_TBL_SIZE];
unsigned short gb_data_tbl[LSC_DATA_TBL_SIZE];
unsigned short b_data_tbl[LSC_DATA_TBL_SIZE];
} rk_aiq_lsc_table_t;
成员名称描述
r data tbl _ _R分量校正表 元素个数为[17x17] 取值范围[1~7.99] 高3bit整数位低8bit小数位
gr data tbl _ _GR分量校正表 元素个数为[17x17] 取值范围[1~7.99] 高3bit整数位低8bit小数位
gb data tbl _ _GB分量校正表 元素个数为[17x17] 取值范围[1~7.99] 高3bit整数位低8bit小数位
b data tbl _ _B分量校正表 元素个数为[17x17] 取值范围[1~7.99] 高3bit整数位低8bit小数位

GIC​

功能描述​

GIC 模块用于矫正Gr与Gb两个通道的失衡,提高部分场景的图像质量。

模块级API参考​

rk_aiq_user_api2_agic_v2_SetAttrib

【描述】设定GIC软件属性。

【语法】

XCamReturn rk_aiq_user_api2_agic_v2_SetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
const rkaiq_gic_v2_api_attr_t* attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ上下文指针输入
attrGIC软件属性结构体输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_agic.h库文件:librkaiq.so

无。

rk_aiq_user_api2_agic_v2_GetAttrib

【描述】获取 Gamma软件属性。

【语法】

XCamReturn rk_aiq_user_api2_agic_v2_GetAttrib(const rk_aiq_sys_ctx_t* sys_ctx,
rkaiq_gic_v2_api_attr_t* attr);

【参数】

参数名称描述输入/输出
sys ctx _AIQ 上下文指针输入
attrGIC 软件属性结构体输出

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api2_agic.h库文件:librkaiq.so

模块级API数据类型​

rkaiq_gic_api_op_mode_t

定义GIC工作模式

typedef enum rkaiq_gic_api_op_mode_e {
RKAIQ_GIC_API_OPMODE_OFF = 0,
RKAIQ_GIC_API_OPMODE_AUTO = 1,
RKAIQ_GIC_API_OPMODE_MANUAL = 2,
} rkaiq_gic_api_op_mode_t;
成员名称描述
RKAIQ GIC API OPMODE OFF _ _ _ _GIC 关闭模式
RKAIQ GIC API OPMODE AUTO _ _ _ _Api手动模式
RKAIQ GIC API OPMODE MANUAL _ _ _ _手动模式

rkaiq_gic_v2_param_selected_t

定义RK3588下自动/手动的属性

typedef struct rkaiq_gic_v2_param_selected_s {
uint32_t iso;
uint8_t bypass;
uint8_t gr_ratio;
uint16_t min_busy_thre;
uint16_t min_grad_thr1;
uint16_t min_grad_thr2;
uint16_t k_grad1;
uint16_t k_grad2;
uint16_t gb_thre;
uint16_t maxCorV;
uint16_t maxCorVboth;
uint16_t dark_thre;
uint16_t dark_threHi;
uint16_t k_grad1_dark;
uint16_t k_grad2_dark;
uint16_t min_grad_thr_dark1;
uint16_t min_grad_thr_dark2;
float NoiseScale;
float NoiseBase;
float noiseCurve_0;
float noiseCurve_1;
float globalStrength;
uint16_t diff_clip;
} rkaiq_gic_v2_param_selected_t;
成员名称描述
iso环境iso
bypass预留,暂不使用
gr ratio _预留,暂不使用
min busy thre _ _busy区域检测能力,取值范围[0, 1023],默认值160
min grad thr1 _ _非边缘区域的数量阈值1,GIC强度控制值,取值范围[0, 1023],默认值 32
min grad thr2 _ _非边缘区域的数量阈值2,GIC强度控制值,取值范围[0, 1023],默认值 32
k grad1 _边缘(水平、垂直梯度)的响应程度阈值1,取值范围[0, 15],默认值5
k grad2 _边缘(水平、垂直梯度)的响应程度阈值2,取值范围[0, 15],默认值1
gb thre _缩放的比例系数,取值范围[0, 15],默认值7
maxCorV限制边缘区域gb的最大补偿值,取值范围[0, 1023],默认值40
maxCorVboth限制平坦(非边缘) 区域gb最大补偿值,取值范围[0, 1023],默认值8
dark thre _定义暗部区域的阈值1,取值范围[0, 2047],默认值120
dark threHi _定义暗部区域的阈值2,取值范围[0, 2047],默认值240
k grad1 dark _ _图像暗部的边缘(水平、垂直梯度)响应程度阈值1,取值范围[0, 15], 默认值6
k grad2 dark _ _图像暗部的边缘(水平、垂直梯度)响应程度阈值2,取值范围[0, 15], 默认值1
min grad thr dark1 _ _ _图像暗部的非边缘区域的数量阈值1,取值范围[0, 1023],默认值64
min grad thr dark2 _ _ _图像暗部的非边缘区域的数量阈值2,取值范围[0, 1023],默认值32
noiseCurve 0 _噪声曲线参数1
noiseCurve 1 _噪声曲线参数2
globalStrength全局控制调整gb补偿值的强度,取值范围[0, 2],默认值1
NoiseScale根据噪声曲线获取当前点噪 声标准差, 利用 noise std *noise scale来 _ _ 确定最大gb补偿值
NoiseBase惩罚图像边缘调整阈值,根据第一梯度和第二梯度计算结果 加上 noise offset,然后进行比较只要一个方向gradx>2*grady 就认为是边 _ 缘,不做调整
diff clip _限制最大gb的最大补偿值

rkaiq_gic_v2_api_attr_t

定义GIC属性

typedef struct rkaiq_gic_v2_api_attr_s {
rk_aiq_uapi_sync_t sync;
uint8_t gic_en;
rkaiq_gic_api_op_mode_t op_mode;
uint32_t iso_cnt;
rkaiq_gic_v2_param_selected_t auto_params[RKAIQ_GIC_MAX_ISO_CNT];
rkaiq_gic_v2_param_selected_t manual_param;
} rkaiq_gic_v2_api_attr_t;
成员名称描述
sync参考rk aiq uapi sync t定义,参见 “概述/API说明” 章节 _ _ _ _
gic en _开关
op mode _工作模式
iso cnt _自动参数中的ISO个数
auto params _自动参数,每个iso一组,软件自动根据iso插值计算
manual param _手动参数,固定使用改组参数

#####

统计信息​

概述​

概述

ISP30支持对图像数据处理获取到AWB / AE / AF 3A控制算法需要的相关的统计信息,大致框图如下:

功能描述​

AE统计信息​

AE硬件统计信息主要包含以下几个部分:

基于raw域的256段加权直方图统计信息、分块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。3588平台,默认非HDR曝光模式,配置BIG模式(15X15非独立子窗口);HDR 2帧模式,各帧皆为BIG模式(15X15非独立子窗口);HDR 3帧模式,短帧和长帧为BIG模式(15X15非独立子窗口),中帧为LITE模式(5X5非独立子窗口)

AWB统计信息​

AWB硬件统计数据源:

HDR多帧模式下,支持选择L / M / S 3个通道中的其中1个通道。

线性模式下,仅有1个通道数据。在Raw-BLC-LSC之后的数据上进行统计

AWB硬件统计信息包含白点统计信息和分块统计信息

白点统计信息记录主窗口内7个光源2种大小的白区里的RGin,BGain累加值及个数记录子窗口内4个光源2种大小的白区里的RGin,BGain累加值及个数4个UV或XY域附加框里的RGin,BGain累加值及个数分块统计信息图像15x15分块,每个块所有点或白点的R,G,B均值

AF统计信息​

AFHW Stats硬件统计:

HDR多帧模式下,支持选择L / M / S 3个通道中的其中1个通道。同时支持3通道合成后的数据作为输入。线性模式下,仅有1个通道数据。支持水平方向2个可配置频段的FV输出,垂直方向上2个可配置频段的FV输出

ISP30 AF硬件统计模块框图

API参考​

rk_aiq_uapi_sysctl_get3AStatsBlk​

【描述】

同步获取3A统计信息。

【语法】

XCamReturn
rk_aiq_uapi_sysctl_get3AStatsBlk(const rk_aiq_sys_ctx_t* ctx, rk_aiq_isp_stats_t
**stats, int timeout_ms);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
stats统计信息结构体指针输出
timeout ms _超时时间,-1意思是无限等待,直到有统计数据输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api_sysctl.h库文件:librkaiq.so

rk_aiq_uapi_sysctl_release3AStatsRef​

【描述】

释放获取的3A统计信息,与rk_aiq_uapi_sysctl_get3AStatsBlk配套使用。【语法】

void
rk_aiq_uapi_sysctl_release3AStatsRef(const rk_aiq_sys_ctx_t* ctx,
rk_aiq_isp_stats_t *stats);

【参数】

参数名称描述输入/输出
ctxAIQ上下文指针输入
stats统计信息结构体指针输入

【返回值】

返回值描述
0成功
非0失败,详见错误码表

【需求】

头文件:rk_aiq_user_api_sysctl.h库文件:librkaiq.so

参考代码

sdk: external/camera_engine_rkaiq/rkisp_demo/demo/af_algo_demo

数据类型​

rk_aiq_isp_stats_t​

AIQ 3A统计信息

typedef struct {
rk_aiq_isp_aec_stats_t aec_stats;
rk_aiq_isp_awb_stats2_v3x_t awb_stats_v3x;
rk_aiq_isp_af_stats_t af_stats;
} rk_aiq_isp_stats_t;
成员名称描述
aec stats _ae统计信息
rk aiq isp awb stats2 v3x t _ _ _ _ _ _awb统计信息
af stats _af统计信息

RKAiqAecStats_t​

定义AE数据信息,详细内容参见AE章节的功能描述。

typedef struct RKAiqAecStats_s {
RkAiqAecHwStatsRes_t ae_data;
RKAiqAecExpInfo_t ae_exp;
} RKAiqAecStats_t;
成员名称描述
ae data _AE模块硬件统计信息
ae exp _AE模块sensor曝光信息

RKAiqAecExpInfo_t

AE模块曝光参数信息

typedef struct RKAiqAecExpInfo_s {
RkAiqExpParamComb_t LinearExp;
RkAiqExpParamComb_t HdrExp[3];
RkAiqIrisParamComb_t Iris;
uint16_t line_length_pixels;
uint32_t frame_length_lines;
float pixel_clock_freq_mhz;
CISFeature_t CISFeature;
RKAiqExpI2cParam_t exp_i2c_params;
} RKAiqAecExpInfo_t;
成员名称描述
LinearExp非HDR模式的曝光参数信息,包含曝光实际值和RK格式的寄存器值
HdrExpHDR模式的曝光参数信息,包含曝光实际值和RK格式的寄存器值,至 多支持3帧曝光
exp i2c params _ _曝光参数的sensor寄存器值,第三方AE方案使用的曝光寄存器值参数
line length pixels _ _hts,其值由sensor的配置序列决定
frame length lines _ _vts,其值由sensor的配置序列决定
pixel clock freq mhz _ _ _pclk,单位MHz,其值由sensor的配置序列决定

【注意事项】

HdrExp表示HDR模式下的曝光参数信息,至多支持3TO1。HDR 2TO1: 下标0表示短帧曝光参数,下标1表示长帧曝光参数,下标2无效;HDR 3TO1:下标0表示短帧曝光参数,下标1表示中帧曝光参数,下标2表示长帧曝光参数。

RkAiqExpParamComb_t

AE模块曝光参数信息详细内容

typedef struct {
RkAiqExpRealParam_t exp_real_params; //real value
RkAiqExpSensorParam_t exp_sensor_params;//RK reg value
} RkAiqExpParamComb_t;
成员名称描述
exp real params _ _曝光分量的实际物理值
exp sensor params _ _曝光分量的sensor寄存器值,遵循RK曝光设置方式
typedef struct RkAiqExpRealParam_s {
float integration_time;
float analog_gain;
float digital_gain;
float isp_dgain;
int iso;
int dcg_mode;
} RkAiqExpRealParam_t;
成员名称描述
integration time _曝光积分时间,单位为秒(s)
analog gain _sensor的模拟增益/Total增益,单位为倍数
digital gain _sensor的数字增益,单位为倍数,当sensor的数字增益起弥补模拟增益精度 作用时,配置为1x,整体增益值写入analog gain中 _
isp dgain _isp数字增益,单位为倍数,目前暂无效,默认值为1x
iso总增益值,iso表示系统增益,以常数50乘以倍数为单位,iso = total增益 *50
dcg mode _dual conversion gain模式
typedef struct RkAiqExpSensorParam_s {
unsigned short fine_integration_time;
unsigned short coarse_integration_time;
unsigned short analog_gain_code_global;
unsigned short digital_gain_global;
unsigned short isp_digital_gain;
} RkAiqExpSensorParam_t;
成员名称描述
fine integration time _ _sensor曝光积分时间的小数行寄存器值,仅当sensor支持小数行 时,需要填写
coarse integration time _ _sensor曝光积分时间对应的寄存器值,单位为行数
analog gain code global _ _ _sensor模拟增益对应的寄存器值
digital gain global _ _sensor数字增益对应的寄存器值
isp digital gain _ _isp数字增益寄存器值,暂时无效

【注意事项】

不同sensor的数字增益作用不同,有的是用于增大感光度范围,有的是用于补足模拟增益的精度。因此目前先不将数字增益单独列出,其大小和对应寄存器值全部并入模拟增益中。dual conversion gain模式共有三种状态,值为-1代表sensor不支持dcg,值为0代表LCG,值为1代表HCG

RKAiqExpI2cParam_t

AE模块I2c曝光参数(一般为第三方AE使用)

#define MAX_I2CDATA_LEN 64
typedef struct RKAiqExpI2cParam_s {
bool           bValid;
unsigned int   nNumRegs;
unsigned int   RegAddr[MAX_I2CDATA_LEN];
unsigned int   AddrByteNum[MAX_I2CDATA_LEN];
unsigned int   RegValue[MAX_I2CDATA_LEN];
unsigned int   ValueByteNum[MAX_I2CDATA_LEN];
unsigned int   DelayFrames[MAX_I2CDATA_LEN];
} RKAiqExpI2cParam_t;
成员名称描述
bValidI2c参数生效使能位 true:使用RKAiqExpI2cParam t设置寄存器值(一般为第三方AE使用); _ false:使用RK格式的寄存器参数进行寄存器值设置
nNumRegs设置的寄存器值数量
RegAddr寄存器地址数组,元素最大个数为64
AddrByteNum寄存器地址的比特长度,元素最大个数为64
RegValue寄存器值数组,元素最大个数为64
ValueByteNum寄存器值的比特长度,元素最大个数为64
DelayFrames寄存器值延迟生效帧数数组,元素最大个数为64

【注意事项】

该寄存器参数仅在第三方AE应用,且bValid为true时才有效,否则默认使用RkAiqExpParamComb_t中的RK格式寄存器参数可支持设置的寄存器值最大个数为64

RkAiqIrisParamComb_t

AE模块光圈参数

typedef struct {
RkAiqPIrisParam_t   PIris;
RkAiqDCIrisParam_t DCIris;
} RkAiqIrisParamComb_t;
typedef struct {
int           step;
int           gain;
bool           update;
} RkAiqPIrisParam_t;
typedef struct {
int       pwmDuty; //percent value,range = 0-100
bool       update;
} RkAiqDCIrisParam_t;
成员名称子成员描述
PIrisstep gain updateP光圈参数: P光圈步进寄存器值 P光圈步进等效增益值 P光圈步进更新标志
DCIrispwmDuty updateDC光圈参数: PWM占空比值,取值范围:1~100 DC光圈参数更新标志

RkAiqAecHwStatsRes_t

AE模块硬件统计信息

typedef struct RkAiqAecHwStatsRes_s {
Aec_Stat_Res_t chn[3];
Aec_Stat_Res_t extra;
struct yuvae_stat yuvae;
struct sihist_stat sihist;
} RkAiqAecHwStatsRes_t;
成员名 称描述
chn[3]AE模块基于raw图(BLC和AWB之后)的统计信息,兼容HDR与非HDR模式,至多支 持HDR 3TO1 S/M/L的统计信息。
extraAE模块基于raw图(Debayer之前)的统计信息,HDR模式下,其表示合成帧的统计信 息
yuvaeAE模块基于gamma前RGB图的分块信息【3588平台不支持】
sihistAE模块基于gamma前RGB图的直方图信息【3588平台不支持】

【注意事项】

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合成后的raw图统计信息。该统计模块之前有BLC、 AWB、 HDRMERGE、 TMO等模块,因此该模块的统计信息受BLC、 AWB、HDRMERGE、TMO等模块的增益影响。此外AF模块开启时,该部分统计信息无效。针对3588平台不支持基于gamma前RGB图的分块信息和直方图信息

Aec_Stat_Res_t AE模块基于raw图的统计信息

typedef struct Aec_Stat_Res_s {
//rawae
struct rawaebig_stat rawae_big;
struct rawaelite_stat rawae_lite;
//rawhist
struct rawhist_stat rawhist_big;
struct rawhist_stat rawhist_lite;
} Aec_Stat_Res_t;
成员名称描述
rawae big _基于raw图的big模式分块统计信息
rawae lite _基于raw图的lite模式分块统计信息
rawhist big _基于raw图的big模式直方图统计信息
rawhist lite _基于raw图的lite模式直方图统计信息

【注意事项】

有关基于raw图统计的big、lite模式区别详见功能描述模块。需注意:big与lite模式的主要区别在于分块统计均值亮度的块数及是否支持独立子窗口均值亮度统计。基于raw图的big、lite模式直方图统计具有相同的数据结构。3588平台,默认非HDR曝光模式,配置BIG模式(15X15非独立子窗口);HDR 2帧模式,各帧皆为BIG模式(15X15非独立子窗口);HDR 3帧模式,短帧和长帧为BIG模式(15X15非独立子窗口),中帧为LITE模式(5X5非独立子窗口)

rawaebig_stat

基于raw图的big模式统计信息,包含15X15个非独立子窗口的R/G/B均值亮度、4个独立子窗口的R/G/B亮度总和

struct rawaebig_stat {
unsigned short channelr_xy[RAWAEBIG_WIN_NUM];
unsigned short channelg_xy[RAWAEBIG_WIN_NUM];
unsigned short channelb_xy[RAWAEBIG_WIN_NUM];
unsigned int channely_xy[RAWAEBIG_WIN_NUM]; //not HW!
unsigned long int wndx_sumr[RAWAEBIG_SUBWIN_NUM];
unsigned long int wndx_sumg[RAWAEBIG_SUBWIN_NUM];
unsigned long int wndx_sumb[RAWAEBIG_SUBWIN_NUM];
unsigned short wndx_channelr[RAWAEBIG_SUBWIN_NUM]; //not HW!
unsigned short wndx_channelg[RAWAEBIG_SUBWIN_NUM]; //not HW!
unsigned short wndx_channelb[RAWAEBIG_SUBWIN_NUM]; //not HW!
unsigned char wndx_channely[RAWAEBIG_SUBWIN_NUM]; //not HW!
};
#define RAWAEBIG_WIN_NUM   225
#define RAWAEBIG_SUBWIN_NUM 4
成员名称描述
channelr xy _big模式非独立子窗口分块的r通道均值亮度信息。有效比特数:10bit。
channelg xy _big模式非独立子窗口分块的g通道均值亮度信息。有效比特数:12bit。
channelb xy _big模式非独立子窗口分块的b通道均值亮度信息。有效比特数:10bit。
wndx sumr _big模式独立子窗口的r通道亮度和信息。有效比特数:29bit。
wndx sumg _big模式独立子窗口的g通道亮度和信息。有效比特数:32bit。
wndx sumb _big模式独立子窗口的b通道亮度和信息。有效比特数:29bit。

【注意事项】

基于raw图的big模式统计信息,仅包含R/G/B 3通道的统计信息,如需Y通道统计信息,可在软件中添加代码根据R/G/B统计值计算。基于raw图的big模式统计信息,包含15X15个非独立子窗口,非独立子窗口有最小尺寸限制,要求最小尺寸为16X4。基于raw图的big模式统计信息,包含4个独立子窗口,其位置可重叠也可不重叠,有最大尺寸要求,不得超过2k x 1k。结构体中的channely_xy、wndx_channelr、 wndx_channelg、wndx_channelb、wndx_channely参数皆为软件计算参数,需要软件添加代码,根据硬件统计值计算求得。

rawaelite_stat

基于raw图的lite模式统计信息,包含5X5个非独立子窗口分块R/G/B均值亮度

struct rawaelite_stat {
unsigned short channelr_xy[RAWAELITE_WIN_NUM];
unsigned short channelg_xy[RAWAELITE_WIN_NUM];
unsigned short channelb_xy[RAWAELITE_WIN_NUM];
unsigned int channely_xy[RAWAELITE_WIN_NUM]; //not HW!
};
#define RAWAELITE_WIN_NUM 25
成员名称描述
channelr xy _lite模式非独立子窗口分块的r通道均值亮度信息。有效比特数:10bit。
channelg xy _lite模式非独立子窗口分块的g通道均值亮度信息。有效比特数:12bit。
channelb xy _lite模式非独立子窗口分块的b通道均值亮度信息。有效比特数:10bit。

【注意事项】基于raw图的lite模式统计信息,仅包含5X5的非独立子窗口R/G/B 3通道的统计信息,如需Y通道统计信息,可在软件中添加代码根据R/G/B统计值计算。非独立子窗口有最小尺寸限制,要求最小尺寸为16X4。结构体中的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

rk_aiq_isp_awb_stats2_v3x_t​

定义白平衡硬件统计信息,主要包含白点统计信息和分块统计信息

白点统计信息记录主窗口内7个光源2种大小的白区里的RGin,BGain累加值及个数;记录子窗口内4个光源2种大小的白区里的RGin,BGain累加值及个数;4个UV或XY域附加框里的RGin,BGain累加值及个数;白点亮度直方图;分块统计信息图像15x15分块(如AWB分块示意图所示),每个块所有点或白点的R,G,B均值

图 AWB分块示意图

typedef struct rk_aiq_isp_awb_stats2_v3x_s {
//method1
rk_aiq_awb_stat_wp_res_light_v201_t light[RK_AIQ_AWB_MAX_WHITEREGIONS_NUM];
int WpNo2[RK_AIQ_AWB_MAX_WHITEREGIONS_NUM];
//method2
rk_aiq_awb_stat_blk_res_v201_t blockResult[RK_AIQ_AWB_GRID_NUM_TOTAL];
//window in pixel domain
rk_aiq_awb_stat_wp_res_light_v201_t
multiwindowLightResult[RK_AIQ_AWB_MAX_WHITEREGIONS_NUM];
//window in xy or uv domain
rk_aiq_awb_stat_wp_res_v201_t
excWpRangeResult[RK_AIQ_AWB_STAT_WP_RANGE_NUM_V201];
//wpno histogram
unsigned int WpNoHist[RK_AIQ_AWB_WP_HIST_BIN_NUM];
} rk_aiq_isp_awb_stats2_v3x_t;
成员名称描述
light主窗口下不同光源下的白点统计结果,最多 RK AIQ AWB MAX WHITEREGIONS NUM个光源; _ _ _ _ _
WpNo2主窗口下不同光源下的xy域和uv域交集的白点个数,没有小数位。
blockResult每个块的RGB累加 图像采用均匀分块方式,共 15x15(RK AIQ AWB GRID NUM TOTAL)块,如AWB分块示意 _ _ _ _ _ 图所示
multiwindowLightResult几个子窗口内不同光源下的白点统计结果(只记录前4个光源,可以 用时分复用方法记录所有光源),最多4个子窗口
excWpRangeResult落在excludeWpRange区域里的点的统计结果(只会记录 excludeWpRange前四个区域),最多4个区域
WpNoHist白点直方图每个bin的白点个数,没有小数位。 统计的是XY大框还是XY中框的白点由寄存器 xyRangeTypeForWpHist确定。

【注意事项】

如果用户希望获取主窗口全局的白点统计结果,根据所有光源下的白点统计结果可以简单换算得到。

rk_aiq_awb_stat_wp_res_light_v201_t​

定义某个光源下的白点统计结果

typedef struct rk_aiq_awb_stat_wp_res_light_v201_s {
rk_aiq_awb_stat_wp_res_v201_t xYType[RK_AIQ_AWB_XY_TYPE_MAX_V201];
} rk_aiq_awb_stat_wp_res_light_v201_t;
成员名 称描述
xYType某个光源下不同大小的XY框的白点统计结果,最多 RK AIQ AWB XY TYPE MAX V201个框,即2个框 _ _ _ _ _ _

rk_aiq_awb_stat_wp_res_v201_t​

定义某个光源某个大小的XY框下的白点统计结果,后非白点区域里的非白点统计结果

typedef struct rk_aiq_awb_stat_wp_res_v201_s {
long long WpNo;
long long RgainValue;
long long BgainValue;
} rk_aiq_awb_stat_wp_res_v201_t;
成员名称描述
WpNo白点数量,22bit整数位,10ibit小数位。其中 WpNo = ISP硬件统计白点数 / 2^10.
RgainValue白点R通道的累加和,22bit整数位,10ibit小数位
BgainValue白点G通道的累加和,22bit整数位,10ibit小数位

rk_aiq_awb_stat_blk_res_v201_t​

定义每个块的统计结果。

若blkMeasureMode = =RK_AIQ_AWB_BLK_STAT_MODE_ALL_V201, 记录的结果为块内所有点的累加和;

若blkMeasureMode = =RK_AIQ_AWB_BLK_STAT_MODE_REALWP_V201, 记录的结果为块内所有白点的累加和;

其中blkMeasureMode 为控制块统计内容的寄存器。

typedef struct rk_aiq_awb_stat_blk_res_v201_s {
long long WpNo;
long long Rvalue;
long long Gvalue;
long long Bvalue;
} rk_aiq_awb_stat_blk_res_v201_t;
成员名称描述
WpNo块内点的个数
Rvalue块内所有点R通道的累加和
Gvalue块内所有点RG通道的累加和
Bvalue块内所有点RB通道的累加和

rk_aiq_af_algo_stat_v30_t​

定义AF统计信息

typedef struct {
unsigned int wndb_luma;
unsigned int wndb_sharpness;
unsigned int winb_highlit_cnt;
unsigned int wnda_luma[RKAIQ_RAWAF_SUMDATA_NUM];
unsigned int wnda_fv_v1[RKAIQ_RAWAF_SUMDATA_NUM];
unsigned int wnda_fv_v2[RKAIQ_RAWAF_SUMDATA_NUM];
unsigned int wnda_fv_h1[RKAIQ_RAWAF_SUMDATA_NUM];
unsigned int wnda_fv_h2[RKAIQ_RAWAF_SUMDATA_NUM];
unsigned int wina_highlit_cnt[RKAIQ_RAWAF_SUMDATA_NUM];
unsigned int int_state;
struct timeval focus_starttim;
struct timeval focus_endtim;
struct timeval zoom_starttim;
struct timeval zoom_endtim;
int64_t sof_tim;
int focusCode;
int zoomCode;
bool focusCorrection;
bool zoomCorrection;
float angleZ;
} rk_aiq_af_algo_stat_v30_t;
成员名称描述
wndb luma _独立窗口的亮度值
wndb sharpness _独立窗口的清晰度值
winb highlit cnt _ _独立窗口的高亮计数值
wnda luma _主窗口下15*15子窗口的亮度值
wnda fv v1 _ _主窗口下15*15子窗口的V1清晰度值
wnda fv v2 _ _主窗口下15*15子窗口的V2清晰度值
wnda fv h1 _ _主窗口下15*15子窗口的H1清晰度值
wnda fv h2 _ _主窗口下15*15子窗口的H2清晰度值
wina highlit cnt _ _主窗口下15*15子窗口的高亮计数值
int state _RK AF算法使用,可以忽略
focus starttim _RK AF算法使用,可以忽略
focus endtim _RK AF算法使用,可以忽略
zoom starttim _RK AF算法使用,可以忽略
zoom endtim _RK AF算法使用,可以忽略
sof tim _本次数据帧的帧开始时间,单位ns
focusCodeRK AF算法使用,可以忽略
zoomCodeRK AF算法使用,可以忽略
focusCorrectionRK AF算法使用,可以忽略
zoomCorrectionRK AF算法使用,可以忽略
angleZRK AF算法使用,可以忽略

Debug & FAQ​

如何获取版本号​

aiq提供了版本发布日期、aiq版本、iq解析器版本及isp各个算法模块的版本信息;

获取简略版本信息

strings librkaiq.so | grep -w AIQ
AIQ: v0.1.6

获取完整版本信息

  1. 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()
  1. 默认打印级别下,加载运行的aiq库不会打印,可以设置xcore模块的log级别,以打印aiq版本信息:
export persist_camera_engine_log=0x1000000ff2
  1. 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​

概述​

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

如上说明,linux环境下通过设置环境变量persist_camera_engine_log来控制各个模块的开关级别。

模块Debug logVerbose log
AEexport persist camera engine log=0x1ff3 _ _ _export persist camera engine log=0x1ff4 _ _ _
AWBexport persist camera engine log=0x2ff3 _ _ _export persist camera engine log=0x2ff4 _ _ _
AFexport persist camera engine log=0x4ff3 _ _ _export persist camera engine log=0x4ff4 _ _ _
HDRexport persist camera engine log=0x20ff3 _ _ _export persist camera engine log=0x20ff3 _ _ _
NRexport persist camera engine log=0x40ff3 _ _ _export persist camera engine log=0x40ff4 _ _ _
Dehazeexport persist camera engine log=0x2000ff3 _ _ _export persist camera engine log=0x2000ff3 _ _ _
Sharpexport persist camera engine log=0x80000ff3 _ _ _export persist camera engine log=0x80000ff4 _ _ _
CAMHWexport persist camera engine log=0x4000000ff3 _ _ _export persist camera engine log=0x4000000ff4 _ _ _

查看当前log级别可通过如下命令:

[root@RV1126_RV1109:/]# echo $persist_camera_engine_log
0x4014

AE​

配置指南

Log level描述以及使能建议
Error默认使能 严重错误
Warning默认未使能 警告错误,算法内部可能针对该错误进行了异常处理,算法仍可继续运行
Info默认未使能 基本调试信息: 逐帧输出信息:无 事件信息:算法中运行状态信息及帧率相关信息,一般仅在初始化、切换分辨率、修 改配置参数时打印 建议: 用于获知算法运行状态及帧率值
Debug默认未使能 基本调试信息(相对Info等级增加): 逐帧输出信息:帧号、 帧匹配曝光量、帧匹配AE统计信息(图像亮度)及曝光结果值 事件信息: 建议: 通过连续的图像亮度、曝光量等信息来调试图像亮度闪烁等问题
Verbose默认未使能 基本调试信息(相对Debug等级增加): 逐帧输出信息:算法相关运算结果信息 事件信息: 建议: 一般不开启,当debug等级无法判断问题时再开启
Sub modules bit描述以及使能建议
bit[4]与AE参数配置相关的log等级 建议: 读取IQ或API设置参数时,可根据该等级log查看配置参数是否正确。
bit[5]AE信息处理模块日志开关,该模块根据AE统计计算环境以及图像相关指 标。 建议: 读取和统计值相关的亮度信息
bit[6]AE曝光量计算模块日志开关。 建议: 读取和曝光结果相关的信息
bit[7]与Airis光圈算法相关的log等级, 建议: 可变光圈相关问题。
bit[8:11]无效

log解读由于篇幅限制,此处仅对debug等级(0x1ff3,对应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)

成员名称描述
NewExposureAE控制算法得出的新曝光量值
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功能关闭,该参数无效,无意义。

AWB​

配置指南

Log level描述以及使能建议
Error默认使能 严重错误
Warning默认使能 警告错误,算法内部可能针对该错误进行了异常处理.
Info默认未使能 基本调试信息: 逐帧输出信息:wbgain结果 事件信息: 建议:
debug默认未使能 基本调试信息(相对Info等级增加): 逐帧输出信息:白平衡收敛状态,环境亮度,白点数量,总的色温信息,概率大的前 四个光源的概率等等 事件信息:awb的api调用后的相关属性信息打印 建议:当对输出log大小有限制时,可以采用该等级获取关键log信息用于debug
Verbose默认未使能 基本调试信息(相对Debug等级增加): 逐帧输出信息:各个光源白点统计信息(白平衡增益,白点数量),及策略相关的中 间量结果等等 事件信息: 建议:推荐使用该等级抓完整的log用于debug
Sub modules bit描述以及使能建议
bit[4:11]无效

log解读

参考《Rockchip_Color_Optimization_Guide_ISP2x_CN》

AF​

配置指南

Log level描述以及使能建议
Error默认使能 严重错误
Warning默认未使能 警告错误,算法内部可能针对该错误进行了异常处理.
Info默认未使能 基本调试信息: 逐帧输出信息:对焦搜索算法最终结果 事件信息: 建议:
debug默认未使能 基本调试信息(相对Info等级增加): 逐帧输出信息:FV统计值,马达移动位置信息 事件信息: 对焦触发、清晰位置搜索、变焦、跟焦、对焦 建议: 推荐使用该等级抓完整的log用于debug
Verbose默认未使能 基本调试信息(相对Debug等级增加): 无 逐帧输出信息: 事件信息: 建议:无
Sub modules bit描述以及使能建议
bit[4:11]无效

log解读

MERGE​

配置指南

Log level描述以及使能建议
Info默认未使能 基本调试信息: 逐帧输出信息:暂未使用 事件信息:暂未使用 建议:关闭
debug默认未使能 基本调试信息: 逐帧输出信息:Merge调试信息 事件信息:暂未使用 建议:当画面亮度不符合预期,或者TMO之后对比度不够时候开启
Verbose默认未使能 基本调试信息(相对Verbose等级增加): 逐帧输出信息:Mrerge曝光相关信息 事件信息:暂未使用 建议:当画面出现闪烁,且从AE log中确认是TMO在闪烁时开启,供RK人员debug 使用
Sub modules bit描述以及使能建议
bit[4:11]无效

log解读

当模式为线性时,merge日志等级如下:

当模式为HDR且基准帧为长帧时,merge日志等级为10000000ff3时

名称描述
FrameID帧号
HDRFrameNumHDR帧数
LongFrmMode长帧模式开关,0:关闭,1:开启
MergeApiModeAPI模式
EnvLv环境亮度
MoveCoef运动变量
bypass当前帧bypass开关,0:关闭,1:开启
BaseFrm基准帧模式,0:长帧模式,1:短帧模式
OECurve smooth _当前帧过曝曲线的斜率,取值范围[0,200],由json中参数逆归一化得 到,系数200。
OECurve offset _当前帧过曝曲线的偏移值,取值范围[108,280]。
MDCurveMS smooth _当前帧中帧和短帧之间运动曲线斜率,取值范围为[0,200],由json中参 数逆归一化得到,系数200。
MDCurveMS offset _当前帧中帧和短帧之间运动曲线偏移值,取值范围为[0.26,100],由 json中参数逆归一化得到,系数100。
MDCurveLM smooth _当前帧长帧和中帧之间运动曲线斜率,取值范围为[0,200],由json中参 数逆归一化得到,系数200。
MDCurveLM offset _当前帧长帧和中帧之间运动曲线偏移值,取值范围为[0.26,100],由 json中参数逆归一化得到,系数100。

当模式为HDR且基准帧为短帧时,merge日志等级为10000000ff3时

名称描述
FrameID帧号
HDRFrameNumHDR帧数
LongFrmMode长帧模式开关,0:关闭,1:开启
MergeApiModeAPI模式
EnvLv环境亮度
MoveCoef运动变量
bypass当前帧bypass开关,0:关闭,1:开启
BaseFrm基准帧模式,0:长帧模式,1:短帧模式
OECurve smooth _当前帧过曝曲线的斜率,取值范围[0,200],由json中参数逆归一化得到, 系数200。
OECurve offset _当前帧过曝曲线的偏移值,取值范围[108,280]。
MDCurve Coef _当前帧控制系数,取值范围[0,1],默认值为0.05,精度0.0001。
MDCurve ms thd0 _ _当前帧中短帧控制系数,取值范围[0,1],默认值为0.0,精度0.1。
MDCurve lm thd0 _ _当前帧长中帧控制系数,取值范围[0,1],默认值为0.0,精度0.1

DRC​

配置指南

Log level描述以及使能建议
Info默认未使能 基本调试信息: 逐帧输出信息:暂未使用 事件信息:暂未使用 建议:关闭
debug默认未使能 基本调试信息: 逐帧输出信息:DRC调试信息 事件信息:暂未使用 建议:当画面亮度不符合预期,或者TMO之后对比度不够时候开启
Verbose默认未使能 基本调试信息(相对Verbose等级增加): 逐帧输出信息:DRC曝光相关信息 事件信息:暂未使用 建议:当画面出现闪烁,且从AE log中确认是TMO在闪烁时开启,供RK人员debug 使用
Sub modules bit描述以及使能建议
bit[4:11]无效

log解读

DRC日志等级为20ff3时

名称描述
FrameID帧号
HDRFrameNumHDR帧数
LongFrmMode长帧模式开关,0:关闭,1:开启
DRCApiModeAPI模式
EnvLv环境亮度
bypass当前帧bypass开关,0:关闭,1:开启
EnableDRC开关
DrcGain当前帧DRC模块增益,取值范围[1,8]。
Alpha当前帧DrcGain Alpha值,取值范围[0,1]。
Clip当前帧DrcGain Clip值,取值范围[0,64]。
Strength当前帧HiLight高光区域细节,取值范围[0,1]。
CompressMode当前帧CompressSetting模式。
LocalWeit当前帧Local权重,取值范围[0,1],0:Global,1:全Local,默认值0。
LocalAutoEnable当前帧自动LocalWeit开关,取值范围[0,1],默认值为1,精度1。
LocalAutoWeit当前帧自动LocalWeit值,取值范围[0,1],默认值为0.4,精度0.01。
GlobalContrast当前帧全局对比度,取值范围[0,1],默认值为0,精度0.01。
LoLitContrast当前帧低量区对比度,取值范围[0,1],默认值为0,精度0.01。

NR&Sharp​

配置指南

Log level描述以及使能建议
error默认使能 基本调试信息: 逐帧输出信息:严重错误地方,可能会导致软件崩溃的打印 事件信息:暂未使用 建议:开启
Info默认未使能 基本调试信息: 逐帧输出信息:所有函数调用信息,没有寄存器值打印。整体信息较多。 事件信息:暂未使用 建议:效果没有异常出错时候,不建议打开此项。一般建议使用io命令打印寄存器 值。
debug默认未使能 基本调试信息(相对Info等级增加): 逐帧输出信息:所有函数调用信息,包括寄存器值打印,寄存器值打印信息较多。 事件信息:暂未使用 建议:当效果出现严重错误时候,建议打开此项,提供给rk debug使用。
Sub modules bit描述以及使能建议
bit[4:11]无效

log解读

Dhz&Ehz​

配置指南

Log level描述以及使能建议
Info默认未使能 基本调试信息: 逐帧输出信息:暂未使用 事件信息:暂未使用 建议:
debug默认未使能 基本调试信息(相对Info等级增加): 逐帧输出信息:Dhz&Ehz调试信息 事件信息: 建议:**
Verbose默认未使能 基本调试信息(相对Verbose等级增加): 逐帧输出信息:暂未使用 事件信息:暂未使用 建议:
Sub modules bit描述以及使能建议
bit[4:11]无效

Log解读

当Enhance功能开启时,Dehaze日志等级为2000ff3时

名称描述
FrameID帧号
byPassProc当前帧bypass开关,0:关闭,1:开启
ISOISO
Dehaze module enDehaze模块开关
Dehaze enDehaze功能开关
Enhance enEnhance功能开关
Hist enHist功能开关
EnvLv当前帧环境亮度
enhance value _当前帧通用对比度力度,取值范围[0,16],推荐范围[1, 2]。
enhance chroma _当前帧色度的增强调节参数,取值范围[0,16],推荐范围[1, 2]。
enhance value reg _ _当前帧通用对比度力度reg值。
enhance chroma reg _ _当前帧色度的增强调节参数reg值。

当Dehaze功能开启且cfg_alpha=0时,Dehaze日志等级为2000ff3时

名称描述
FrameID帧号
byPassProc当前帧bypass开关,0:关闭,1:开启
ISOISO
Dehaze module enDehaze模块开关
Dehaze enDehaze功能开关
Enhance enEnhance功能开关
Hist enHist功能开关
cfg alpha _软件配置占比,取值范围[0,1],默认值1,精度0.01。
EnvLv当前帧环境亮度
air max _当前帧air自适应的最大值限制,取值范围[230, 250],默认值250。
air min _当前帧air自适应的最小值限制,取值范围[230, 250],默认值200。
tmax base _当前帧tmax自适应基础值,默认125,对应配置如下,200(131),210(125), 220(119),230(114),240(109),250(105),推荐131-105
wt max _当前帧wt自适应的最大值限制,取值范围[0.75, 0.9],默认值0.9。

当Dehaze功能开启且cfg_alpha=1时,Dehaze日志等级为2000ff3时

名称描述
FrameID帧号
byPassProc当前帧bypass开关,0:关闭,1:开启
ISOISO
Dehaze module enDehaze模块开关
Dehaze enDehaze功能开关
Enhance enEnhance功能开关
Hist enHist功能开关
cfg alpha _软件配置占比,取值范围[0,1],默认值1,精度0.01。
EnvLv当前帧环境亮度
cfg air _当前帧软件配置air,大气光系数,取值范围[0, 255],默认值210。
cfg tmax _当前帧软件配置tmax,去雾的最大值,取值范围[0, 1],默认值0.2。
cfg wt _当前帧软件配置wt,图像去雾力度,取值范围[0, 1],默认值0.8。

当Hist功能开启时,Dehaze日志等级为2000ff3时

名称描述
FrameID帧号
byPassProc当前帧bypass开关,0:关闭,1:开启
ISOISO
Dehaze module enDehaze模块开关
Dehaze enDehaze功能开关
Enhance enEnhance功能开关
Hist enHist功能开关
cfg alpha _软件配置占比,取值范围[0,1],默认值1,精度0.01。
EnvLv当前帧环境亮度
hist para en _ _当前帧直方图拉伸控制开关。
hist gratio _当前帧直方图拉伸倍数,直方图均衡控制系数,取值范围[0, 32]。
hist th off _ _当前帧直方图统计阈值,取值范围[0, 255],默认值64。
hist k _当前帧直方图自适应阈值放大倍数,取值范围[0, 7),默认值2。
hist min _当前帧直方图统计阈值的最小值,取值范围[0,2),默认值0.016。
hist scale _当前帧直方图均衡控制系数,取值范围[0, 32]。
cfg gratio _当前帧软件配置直方图拉伸倍数,直方图均衡控制系数,取值范围[0, 32)。

CamHW​

配置指南

Log level描述以及使能建议
Error默认使能 严重错误
Warning默认未使能 警告错误,算法内部可能针对该错误进行了异常处理.
Info默认未使能 基本调试信息: 逐帧输出信息: 事件信息: 建议:
Debug默认未使能 基本调试信息(相对Info等级增加): 逐帧输出信息: 事件信息: 建议:
Verbose默认未使能 基本调试信息(相对Debug等级增加): 逐帧输出信息: 事件信息: 建议:存在单次大量信息输出,谨慎使用
Low1默认未使能 基本调试信息(相对Debug等级增加): 逐帧输出信息: 事件信息:函数调用路径信息 建议:
Sub modules bit描述以及使能建议
bit[4]30 子模块log开关。 负责 HWI 流程控制部分。 建议: 有以下各子模块问题时建议一起使能。
bit[5]Isp30Params 及 Isp30PollThread 子模块log开关。 负责 isp 参数、数据流、事件等处理部分。 建议: 疑似参数与视频帧未匹配、时序设置异常等问题 回读离线模式下,数据流断流等问题
bit[6]SensorHw 子模块log开关。 负责 camera sensor 相关部分。 建议: 疑似CIS曝光设置等问题
bit[7]FlashLight 子模块log开关。 负责补光灯控制部分。 建议: 补光灯控制问题。
bit[8]LensHw 子模块log开关。 负责镜头马达控制部分。 建议: 马达控制等问题
bit[9]30SpThread 子模块开关。 内部模块保留使用。
bit[10:11]无效

log解读

CamHwIsp20 子模块

上图log 仅在 AIQ 库加载时的打印一次,从中能得到camera sensor、isp 及 ispp 之间的链接关系,该信息从解析media节点拓扑结构得到,从该信息可知道camera sensor是否正常探测到。

上图log表示的是hwi层往isp驱动配置新参数,目前基本每一帧都会配置,具体含义如下表所示:

成员名称描述
ispparam ens模块使能位,模块bit位定义具体参考 hwi/isp20/rk isp20 hw.h _ _
en up _模块使能更新位,对应位为1表示该模块使能位需要更新
cfg up _模块参数更新位,对应位为1表示该模块参数需要更新
deviceISP参数模块对应的video节点

上图log表示的是hwi层往ispp驱动配置新参数,目前基本每一帧也都会配置,具体说明前述isp模块。

Isp20PollThread 子模块**

上图log为回读模式时启动一帧回读,只要工作在回读模式,正常运行时每一帧都会打印,具体含义如下表:

成员描述
frame帧ID,表示第几帧RAW,从0开始。
sof ts _该帧 SOF的时间戳
frame ts _采集到ddr的完成时刻时间戳
readbackisp回读次数

上图log为回读模式时RAW buf的轮转过程,只要工作在回读模式时,每一帧都会打印该log,具体含义如下表:

成员描述
handle rx buf _ _isp处理完一帧,还给vicap/isp tx _
dev index _长、中及短帧设备索引号,handle tx buf 及 handle rx buf 的log中 _ _ _ _ dev index相同时,表示同一路数据 _
sequence帧号,从0开始

SensorHw 子模块上图log为线性模式时设置新曝光到sensor驱动流程,有新曝光时才会调用,具体含义如下表:

成员描述
frameidsof 事件帧号
handle sof _sof 事件回调函数,每一帧回调一次,曝光设置在该回调中处理
exp list size _曝光列表中还有多少个新曝光时间未设置到驱动
gain list size _曝光列表中有多少个新曝光增益未设置到驱动
working mode _当前工作模式, 0 为 normal
set time _该sof消息中是否有新曝光时间需要设置到驱动
set gain _该sof消息中是否有新曝光增益需要设置到驱动
a-gain, time新的曝光时间、增益寄存器值

如何采集Raw/YUV图像​

Raw数据特指CIS原始输出的数据,未经过任何图像处理。针对Bayer raw sensor, Raw数据即8/12/14 bit bayer rgb 数据。一般情况下,以下几种情况需要获取CIS Raw数据:

1. ISP处理后的YUV数据输出异常的情况下,希望动态截存此时ISP输入的Raw数据分析问题是否是CIS
问题
2. 图像质量效果调试前,需要采集CIS Raw数据进行模组参数的标定

Raw数据存储格式​

非紧凑型存储格式

对于raw12数据在内存中的存储排列方式,以4字节的内存片段为例,数据的存储方式如下所示:

紧凑型存储格式

对于raw12数据在内存中的存储排列方式,以4字节的内存片段为例,数据的存储方式如下所示:

RK-RAW V1.0 RK-RAW V2.0

RK-RAW V2.0 格式由起始标识符、数据块以及结束标识符构成。

格式数据块定义

数据块有三部分组成:标识符ID,块长度,块数据。每个标识符ID都有唯一的固定值。

图表中的数据块并不都是必需的,可以选择其中的几个数据块组合使用。例如,一个RKRawV2文件可能只包含'Raw信息块'、‘Raw数据块’和‘帧统计信息块’,我们建议至少包含这三个数据块,因为这样的文件才有意义。Raw信息块定义

Raw数据块定义

该数据段中可以存放Raw图像数据,也可以存放指向Raw图像数据的buffer fd或虚拟地址。在使用相关API的时候需要传参指明该数据块中存储的类型,具体请参见rk_aiq_rawbuf_type_t。

帧统计信息块定义

寄存器格式块定义

寄存器块定义平台信息块定义

Raw/YUV数据采集方式​

错误码​

错误代码描述
0成功
-1失败
-2参数无效
-3内存不足
-4文件操作失败
-5ANALYZER模块出错
-6ISP模块出错
-7sensor驱动出错
-8线程操作出错
-9IOCTL操作出错
-10时序出错
-20超时
-21超出范围
-255未知错误

缩略语​

缩写全称
CISCamera Image Sensor
RkAiqRockchip Automatical Image Quality
ISPImage Signal Process
IQ TuningImage Quality Tuning