首页 > 技术知识 > 正文

针对Hi3519DV500的ISP开发说明——AI3DNR算法应用-hi3561

AI3DNR简介

AI3DNR(AI-based 3D Noise Reduce)是一种基于AI的新型的3维降噪算法,它是YUV域的降噪算法。

提供接口及注意事项

ss_mpi_ai3dnr_init:初始化AI3DNR模块。

【注意】

不支持多进程调用。

ss_mpi_ai3dnr_exit:去初始化AI3DNR模块。

【注意】

不支持多进程调用。调用此接口去初始化AI3DNR模块前,需要关闭AI3DNR数据流开关ss_mpi_ai3dnr_load_model:加载AI3DNR的模型文件。

【注意】

调用该接口前必须先调用ss_mpi_ai3dnr_init初始化AI3DNR模块。调用该接口前AI3DNR数据流需要保持关闭状态。相同类型的模型文件,如果图像宽高相等时,不能重复加载。支持多个模型文件的加载,或者同一模型文件、不同分辨率多次加载。不支持多进程调用。ss_mpi_ai3dnr_unload_model:卸载AI3DNR的模型文件。

【注意】

应用程序退出前,需调用此接口释放已加载模型文件的内存资源,或者调用ss_mpi_ai3dnr_exit接口释放AI3DNR的所有资源。不支持多进程调用。调用此接口前需要关闭AI3DNR数据流开关。ss_mpi_ai3dnr_set_cfg:设置AI3DNR算法相关配置参数。

【注意】

调用该接口前必须先调用ss_mpi_ai3dnr_init初始化AI3DNR模块。调用该接口时AI3DNR数据流需要保持关闭状态。ss_mpi_ai3dnr_get_cfg:获取AI3DNR算法相关配置参数。

【注意】

调用该接口前必须先调用ss_mpi_ai3dnr_init初始化AI3DNR模块。

ss_mpi_ai3dnr_enable:使能AI3DNR数据流开关。

【注意】

调用此接口前需要先初始化VI、ISP模块。主进程调用该接口前必须先调用ss_mpi_ai3dnr_init初始化AI3DNR模块,并调用ss_mpi_ai3dnr_load_model接口加载AI3DNR模型文件。其他次进程(例如PQTools)支持使用该接口打开AI3DNR数据流,无需初始化AI3DNR,但需要主进程保证已经调用了ss_mpi_ai3dnr_init初始化过AI3DNR模块。enable ai3dnr前有如下限制条件:

– 对应的vi pipe必须已经创建。

– 需要用户调用函数去分配VB池,VB大小计算使用函数ot_ai3dnr_get_out_buf_size,且分配的VB池需要attach对应的PIPE上。

5. AI3DNR使能之后,延迟2帧生效。

6. AI3DNR仅支持16bit的Bayer图像数据处理。

7. 调用该接口前,需要提前通过ss_mpi_sys_set_vi_aiisp_mode接口配置VI为OT_VI_AIISP_MODE_DEFAULT模式或OT_VI_AIISP_MODE_AI3DNR模式。

ss_mpi_ai3dnr_disable:关闭AI3DNR数据流开关。

【注意】

主进程调用该接口前必须先调用ss_mpi_ai3dnr_init初始化AI3DNR模块,并调用ss_mpi_ai3dnr_load_model接口加载AI3DNR模型文件。其他次进程(例如PQTools)支持使用该接口关闭AI3DNR数据流,无需初始化AI3DNR,但需要主进程保证已经调用了ss_mpi_ai3dnr_init初始化过AI3DNR模块。在VI模块销毁对应的pipe之前,需要先调用该接口关闭AI3DNR功能,否则可能出现VB泄漏。ss_mpi_ai3dnr_set_attr:设置AI3DNR的属性。

【注意】

调用该接口前必须先调用ss_mpi_ai3dnr_init初始化AI3DNR模块,并调用ss_mpi_ai3dnr_load_model接口加载AI3DNR模型文件。使能AI3DNR数据流开关之后才能调用此接口成功设置AI3DNR属性。input_depth和output_depth调试时才设置,正常情况下建议设置为0,设置大于0时,会导致多占用VB,需要分配VB池时在原来基础上多分配 (input_depth+output_depth) 个VB,否则可能会导致卡住。ss_mpi_ai3dnr_get_attr:获取AI3DNR的属性。

【注意】

使能AI3DNR数据流开关之后才能调用此接口成功获取AI3DNR属性。

ss_mpi_ai3dnr_set_smooth:设置AI3DNR的开关平 滑过渡属性。

【注意】

调用该接口前必须先调用ss_mpi_ai3dnr_init初始化AI3DNR模块,并调用ss_mpi_ai3dnr_load_model接口加载AI3DNR模型文件。使能AI3DNR数据流开关之后才能调用此接口成功设置AI3DNR属性。ss_mpi_ai3dnr_get_smooth:获取AI3DNR的开关平 滑过渡属性。

【注意】

使能AI3DNR数据流开关之后才能调用此接口成功获取AI3DNR属性

ss_mpi_ai3dnr_set_thread_attr:设置AI3DNR线程属性。

【注意】

调用该接口支持在调用ss_mpi_ai3dnr_init初始化AI3DNR模块前或开启AI3DNR通路后动态修改。

ss_mpi_ai3dnr_get_thread_attr:获取AI3DNR线程属性。

【注意】

/

ss_mpi_ai3dnr_get_input_frame:获取AI3DNR处理前的输入帧数据。

【注意】

调用该接口前必须先调用ss_mpi_ai3dnr_init初始化AI3DNR模块。调用该接口前必须先调用ss_mpi_ai3dnr_set_attr接口配置队列深度input_depth,只有队列深度大于0,才能获取到图像。调用该接口获取图像,不会AI3DNR的处理,整个pipe通路不会受到影响。当milli_sec设为-1时,表示阻塞模式,程序一直等待,直到获取到图像才返回。如果milli_sec等于0时,表示非阻塞模式。如果milli_sec大于0时,表示超时等待模式,参数的单位是毫秒,指超时时间,在此时间内如果没有获取到图像,则超时返回。ss_mpi_ai3dnr_release_input_frame:释放AI3DNR处理前的输入帧数据。

【注意】

该接口需要与ss_mpi_ai3dnr_get_input_frame配合使用。获取到的图像数据需要调用该接口及时归还,并且要在关闭数据流之前归还,否则可能导致VB异常。ss_mpi_ai3dnr_get_output_frame:获取AI3DNR处理后的输出帧数据。

【注意】

调用该接口前必须先调用ss_mpi_ai3dnr_init初始化AI3DNR模块。调用该接口前必须先调用ss_mpi_ai3dnr_set_attr接口配置队列深度output_depth,只有队列深度大于0,才能获取到图像。调用该接口获取图像,不会AI3DNR的处理,整个pipe通路不会受到影响。当milli_sec设为-1时,表示阻塞模式,程序一直等待,直到获取到图像才返回。如果milli_sec等于0时,表示非阻塞模式。如果milli_sec大于0时,表示超时等待模式,参数的单位是毫秒,指超时时间,在此时间内如果没有获取到图像,则超时返回。ss_mpi_ai3dnr_release_output_frame:释放AI3DNR处理后的输出帧数据。

【注意】

该接口需要与ss_mpi_ai3dnr_get_output_frame配合使用。获取到的图像数据需要调用该接口及时归还,并且要在关闭数据流之前归还,否则可能导致VB异常。

猜你喜欢