更新时间:2024-06-25 05:48:46下载pdf
图像调试 是指通过改变 图像参数,达到对应 图像效果 的过程。
图像调试 主要适用场景如下:
对主观图像效果不满意:如希望通过增加图像的饱和度使画面更加鲜艳。通过增加图像的锐化使画面纹理边缘更加锐利。通过增加图像的亮度使画面更加明亮等。
对图像一些缺陷进行修复:如摄像机对着部分场景出现画面闪烁。摄像机对着部分场景出现偏色。摄像机对着部分场景出现噪声等。
在 tuyaos-ipc-$CHIPNAME
的根目录,使用 make app_menuconfig
指令可以打开图像风格自定义界面,修改保存之后,使用 make app_config
指令编译修改后的结果,生成配置文件。
该调试方式支持以下功能:
该调试方式目前适配了安凯 AK39EV330L 和富瀚 FH8636/FH8652 平台,其他芯片平台陆续增添中,具体可咨询您的涂鸦客户经理。
该调试方式支持以下功能:
该调试方法所有芯片都支持,但是不同芯片的调试有较大差异,需要对照不同芯片平台的手册进行操作。
部分名词解释:
图像参数的工作原理和实现方案如下:
工作原理:IPC 设备运行时,最重要的图像文件就是 isp.bin
。isp.bin
会在设备上电、设备日夜切换后重新载入,实现对应的图像效果。
针对 isp.bin
文件而言,不同芯片平台的格式不同。例如安凯是 isp.conf
,富瀚是 isp.hex
,君正则是二次封装的 tag.bin
。
实现方案:对 isp.bin
进行修改的方案,目的都是修改 isp.bin
达到理想效果。
通过涂鸦接口调试,是对不同芯片的接口做统一封装,方便开放给您使用。
对于通过涂鸦接口进行图像调试,需要修改配置文件并编译,查看对应的图像效果是否生效。
芯片底层 ISP 参数调试,调试过程中的 ISP 修改会实时生效在设备中,所见即所得。这种方法需要一定的开发能力,有较高图像需求的客户可以使用该方法。
isp.conf
替换到 software/TuyaOS/apps/tuyaos-ipc-ak3918ev330-xxxxx/resource/isp
路径下,保留该路径下原本的 .conf
文件名称。software/TuyaOS/vendor/anyka3918ev300s/tuyaos/components/linux-anyka3918ev300s/drivers/modules
路径下,在该路径下添加或替换驱动。图像组件 的命名是 tkl_media_CHIPNAME
,一般位于 /vendor/CHIPNAME/tuyaos/tuyaos_adapter/src/tkl_media_CHIPNAME
,是图像相关功能的配置入口。
图像组件 包括多个常用的 ISP 功能接口,如 ISP 参数初始化、彩转灰、画面翻转、抗闪烁、日夜切换照度值计算、图像自定义配置生效等。
在设备运行过程中,图像组件主要完成两件事情:
一般情况下,您无需修改图像组件,只需要根据自己的产品需求,调用下述接口即可。
/***********************************************************
* 函数:tkl_vi_isp_init
* 功能:isp 初始化函数
* 参数:IN TKL_VI_CHN_E chn 设备号
IN TKL_ISP_PARAM_INFO_T *pisp_info ISP 可配置参数结构体,包括 ADN/WDR/AWB/denoise 等模块
*
* 返回值:<0 失败,=0 成功
***********************************************************/
OPERATE_RET tkl_vi_isp_init(TKL_VI_CHN_E chn, TKL_ISP_PARAM_INFO_T *pisp_info)
/***********************************************************
* 函数:tkl_vi_isp_load_isp_file
* 功能:载入各个平台的图像参数,通常为 bin 或者 ini 文件
* 参数:IN TKL_ISP_DN_MODE_E irmode,当前日夜模式,0-AUTO 模式,1-白天,2-夜晚。入参 auto 会强制转白天,不支持 auto
*
* 返回值:<0 失败,=0 成功
***********************************************************/
OPERATE_RET tkl_vi_isp_load_isp_file(TKL_ISP_DN_MODE_E irmode)
/***********************************************************
* 函数:tkl_vi_isp_load_user_isp_param
* 功能:载入用户自定义的图像配置,例如画面风格、白平衡/WDR/去噪参数。
此函数配置的图像配置都是静态配置,不需要在 IPC 运行过程中实时计算。
* 参数:IN TKL_VI_CHN_E chn 设备号
IN TKL_ISP_PARAM_INFO_T *pisp_info,init 过程需要使用的 isp 所有可配置参数的索引结构。
*
* 返回值:<0 失败,=0 成功
***********************************************************/
OPERATE_RET tkl_vi_isp_load_user_isp_param(TKL_VI_CHN_E chn, INT32_T irmode)
/***********************************************************
* 函数:tkl_vi_isp_get_mirror_flip
* 功能:获取当前画面翻转状态
* 参数:IN TKL_VI_CHN_E chn 设备通道号
OUT TKL_VI_MIRROR_FLIP_E *direction,0-默认状态,1-mirror, 2-flip, 3-mirror 和 flip
*
* 返回值:<0 失败,=0 成功
***********************************************************/
OPERATE_RET tkl_vi_isp_get_mirror_flip(TKL_VI_CHN_E chn, TKL_VI_MIRROR_FLIP_E *direction)
/***********************************************************
* 函数:tkl_vi_isp_set_mirror_flip
* 功能:设置画面翻转
* 参数:IN TKL_VI_CHN_E chn 设备号
IN TKL_VI_MIRROR_FLIP_E direction,0-默认状态,1-mirror, 2-flip, 3-mirror 和 flip
*
* 返回值:<0 失败,=0 成功
***********************************************************/
OPERATE_RET tkl_vi_isp_set_mirror_flip(TKL_VI_CHN_E chn, TKL_VI_MIRROR_FLIP_E direction)
/***********************************************************
* 函数:tkl_vi_isp_get_antiflicker
* 功能:获取当前抗频闪状态
* 参数:IN TKL_VI_CHN_E chn 设备号
OUT TKL_ISP_FLICKER_TYPE_E *eAntiFlicker, 0-关闭,1-50hz,2-60hz,3-自动抗闪模式
*
* 返回值:<0 失败,=0/1/2 成功
***********************************************************/
OPERATE_RET tkl_vi_isp_get_antiflicker(TKL_VI_CHN_E chn, TKL_ISP_FLICKER_TYPE_E *eAntiFlicker)
/***********************************************************
* 函数:tkl_vi_isp_set_antiflicker
* 功能:设置当前抗频闪配置
* 参数:IN TKL_VI_CHN_E chn 设备号
IN TKL_ISP_FLICKER_TYPE_E eAntiFlicker,0-关闭,1-50hz,2-60hz,3-自动抗闪模式
*
* 返回值:<0 失败,=0 成功
***********************************************************/
OPERATE_RET tkl_vi_isp_set_antiflicker(TKL_VI_CHN_E chn, TKL_ISP_FLICKER_TYPE_E eAntiFlicker)
/***********************************************************
* 函数:tkl_vi_isp_set_color_to_gray
* 功能:设置画面彩转灰、灰转彩
* 参数:IN TKL_VI_CHN_E chn 设备号
IN int grey_flag,当前画面的黑白模式,0-白天全彩,1-夜晚黑白,不支持其他值
*
* 返回值:<0 失败,=0 成功
***********************************************************/
OPERATE_RET tkl_vi_isp_set_color_to_gray(TKL_VI_CHN_E chn, int grey_flag)
/***********************************************************
* 函数:tkl_vi_dnswitch_get_illumin
* 功能:获取日夜切换算法的照度值计算结果,给日夜切换组件使用。
* 参数:IN TKL_VI_CHN_E chn 设备号
IN TKL_ISP_DN_MODE_E irmode,当前日夜模式,0-AUTO 模式,1-白天,2-夜晚。入参 auto 会强制转白天,不支持 auto
OUT INT32_T *illumin_result,日夜切换算法的计算结果,默认是整数,夜视强反光场景会返回 result=1 并伴有串口提示。
* 返回值:<0 失败,=0 成功
***********************************************************/
OPERATE_RET tkl_vi_dnswitch_get_illumin(TKL_VI_CHN_E chn, TKL_ISP_DN_MODE_E irmode, INT32_T *illumin_result)
/***********************************************************
* 函数:tkl_vi_isp_show_fw_version
* 功能:显示当前设备的 isp 参数版本号,每次上电启动时串口输出。
* 参数:ISP_FW_VERSION,宏定义,当前设备的 ISP 参数版本号
ISP_SENSOR_NAME,宏定义,当前设备的 sensor 名称
*
* 返回值:<0 失败,=0 成功
***********************************************************/
OPERATE_RET tkl_vi_isp_show_fw_version(PCHAR_T version, PCHAR_T name)
/******************************************************************************
* 函数:tkl_vi_isp_get_param
* 功能:从平台接口获取 ISP pipeline 各个模块参数,用于图像问题分析,目前仅获取 AE 和 AWB 参数
* 参数:IN TKL_VI_CHN_E chn 设备号
OUT TKL_ISP_LOG_INFO_T *pstISPParam isp 日志功能打开后,需要显示的参数
* 返回值: <0 失败,=0 成功
******************************************************************************/
OPERATE_RET tkl_vi_isp_get_param(TKL_VI_CHN_E chn, TKL_ISP_LOG_INFO_T *pstISPParam)
图像调试完成并编译成功后,需要再确认图像改动是否正常生效,并且要注意在不同场景下观察图像效果。
在单一场景下调试的参数不一定能适用所有环境,其他场景的画质可能会降低,要综合考虑。
按如下步骤排查:
验证 I2C 接口是否正常通信。
I2C 正常通信时,设备上电串口有" “xxxxx Probed success,subdev:xxxxxx” 打印。其中 sensor ID 为驱动中 sensor_probe_id_func 函数的返回值。如不能正确返回 sensor ID,按如下步骤。
sensor I2C 地址的配置,查看 sensor 数据手册中 I2C 地址是否正确写入驱动文件。
硬件测量 I2C 是否有信号。
sensor 复位情况,查看 sensor 数据手册中上电时序,驱动文件中上电时序是否正确。
ISP 参数配置文件中 sensor ID 是否正确。
安凯平台白天和夜视参数保存在一套配置文件 isp.conf
里,调试工具 SubFileId 处显示:
富瀚、联咏等平台白天和夜视参数是两套,需要对应替换参数。
出现偏色问题的原因有很多:
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈