概述
前言
目前而言,君正设备的isp 图像效果还是君正的工程师在负责开发调试,如果需要添加一款新的摄像头,一般也是将新摄像头的驱动,从ISVP 版本移植到Zeratul平台。这里主要介绍:(1)摄像头驱动移植;(2)快启图像效果优化;(3)宽动态效果
(一) Sensor驱动移植
 Zeratul平台 是从ISVP平台优化过来的,所以很多Sensor 驱动也是需要从ISVP平台移植到Zeratul平台。其中分为两个步骤:以gc2053 Sensor为例:
Step 1 添加sensor.hex
Step 2 添加 tag 内容
1、 内核 sensor 驱动部分:
gc2053 文件下 sensor 的驱动源码以及编译所需的 Makefile 文件
2、 tag 所需文件部分:
libz_gc2053.c 起始 AE 等内容的定义
gc2053_t31_init.c 初始化 sensor 寄存器列表
riscv_fw_gc2053.bin riscv 固件
gc2053_t31.bin sensor 效果文件
(二)光敏参数调整
(1)硬件光敏
1.1 什么叫做起始 EV
普通 IPC 在开机使用的时候, 画面有一个由暗变亮的过程, 这个过程称之为 AE收敛过程。 电池 IPC 由于每次启动都是冷启动, 如果不做特殊处理, 必然也会存在这样一个收敛过程, 这个对于用户体检极差。
为了缩短这个过程, 我们提供个一个方法, 在开机的时候, 可以设置一个起始的曝光参数, 收敛就从设置的起始曝光参数开始收敛, 这样就会缩短 AE 收敛过程。 设置的这个曝光参数, 我们称之为起始 EV 参数。
1.2 T31 RISCV
T31 平台包含 RISCV 小核, 可以提供一些辅助处理, 当前我们把 ISP 的 AE、AWB功能移植到了 RISCV 上面, 由于我们的系统是 linux 系统, 从 BootLoader 到 linux 内核启动需要一定的时间, 在 RISCV 的加持下, 可以并行初始化 ISP、 Sensor, 并对AE、 AWB 进行收敛, 内核期间 ISP 驱动注册的时候, 图像效果可以从 RISCV 斜街过来, 这样内核拿到的图像数据基本是稳定可用的。
1.3 起始 EV 参数代码位置
起始 EV 参数存放在 TAG 分区中, 在 BootLoader 阶段, 通过 ADC 得到光敏信息并且与 TAG 中的 EV 参数进行匹配, 得到起始 EV 值, 这个 EV 值会被 RISCV 使用,作为 RISCV 的起点。
起始 AE 信息存放在 tools/make_tag/sensor_start_ae_table 目录下
libz_sensor.c 为白天 ADC 和 EV 对应关系表。
struct vol_start_value_table table_day[] 为白天模式对应关系表
struct vol_start_value_table table_night[] 为夜视模式下对应关系表
1.4 起始 EV 参数表格如何创建
我们需要在 BootLoader 中获取 ADC 值来匹配 EV 值, 由于从上电到 BootLoader启动速度很快, 部分光敏其实在这个时候还不是很稳定, 所以我们按照之前 T20、 T30的方式在系统起来后, 通过工具来获得 ADC 和 EV 对应关系, 其实与实际使用情况是不准确的, 为了达到更准确的效果, 我们再建立表格的时候, 就需要用 BootLoader中读取的 ADC 值作为起始 AE 参数。 与真实环境一致
软件中我们需要打开打印信息,只需要将 BootLoader 中的ADC 值, 以及 dmesg 中稳定后的 EV 值保存到起始 EV 表格中即可。
1.5 白天模式
取一个均匀光源, 放到暗室中, 不要有外界光线干预, 如下图放置设备, 镜头可以尽量贴紧。
然后调节光源的亮度, 可用照度计记录对应的照度值, 从暗到亮, 逐步调节, 调节之后, 待亮度稳定后, 开关设备, 通过串口读取 ADC 和 EV 值保存即可。
1.6 夜视环境
由于一般的光敏对红外光不敏感, 也就是红外灯开或者关, 光敏的 ADC 值基本不变, 所以夜视情况针对不同的使用场景, 效果会不一样。 在夜视情况下, 无法做到统一。 所以一般我们会选择一个较为适中的情况进行测量。
在暗室中选择一个场景, 将设备与目标参照物放置一定距离, 如 5 米。 然后将设备切到夜视模式, 打开红外和 IRCUT, 然后将均匀光源放置到某个角落, 避免光线直射到光敏上, 或者直射到镜头里面, 造成采样不准。
在这种情况下, 调节均匀光源光线强度, 然后记录 ADC 和 EV 值即可。
(2)软光敏
2.1 软光敏的利弊
使用软光敏的利:
可节省一颗硬件光敏元器件, 产品外壳无需开孔以及增加透镜, 对于具有一定防水属性的产品, 无需考虑开孔处的防水处理。整体来说, 可节省一定的硬件成本。
使用软光敏的弊:
由于软光敏需要依赖图像信息来判断日夜情况, 需要用 2~4 帧左右用来统计luma 信息, Sensor 配置一般是隔帧生效, 所以设置新的曝光参数后需要 2~4 帧才真正生效。 所以前面有 4 ~ 8 帧是无法使用的, 对出图速度有一定影响。
由于软光敏是基于 ISP 的统计信息来进行日夜切换处理, 且 ISP 统计信息对Sensor 的效果参数具有一定的依赖性, 所以每调试一个版本的 IQ 效果, 软光敏参数也需要对应重新调试, 整个软光敏调试可能会贯穿整个项目周期。
由于快起日夜判断和启动后进入应用程序的日夜判断方式有差别, 所以在日夜判断的阈值调试相对麻烦, 主要表现出来的问题是, 快起和应用程序阈值不一致导致某些临界场景启动后出现频繁切换的问题。
综合起来, 低功耗类产品建议增加硬件光敏。 开发难度以及用户体验会更好。
2.2 原理
软光敏基于快起系统实现原理:
Sensor 固定一组曝光参数, 在不同的环境光下启动并完成收敛, 此时可以获得起始的平均亮度信息和收敛后的 EV 参数。 把这两个参数在不同光照下进行收集,得到起始 EV 的映射表格。 在建表的同时, 可以使用照度计把当前环境光的照度记录下来。
在启动过程中, Sensor 同样需要固定曝光参数, 在某一场景下, 会获得一个起始平均亮度值(luma), 通过 luma 值在映射表格中找到对应的 EV 值, 然后重新配置曝光参数即可。
日夜切换也是通过 luma 值来判断, 在建表的时候, 已经将照度信息记录下来并与 luma 值一一对应, 所以可以根据照度信息选择一个 luma 值当作日夜切换阈值即可。
软光敏应用层切换原理:
应用层切换与快起方法有差异, 白天切夜视, 主要依赖的画面亮度信息。 夜视切白天, 亮度无法作为判断标准, 由于开启了红外灯, bgain 值会相对较大, 所以夜视切白天, 依赖亮度以及 bgain 参数作为判断依据。
建议快起和应用层日夜切换阈值可以以照度计为准, 得到相同照度下的不同参数配置。 防止日夜频繁切换问题。
2.3 流程
建表流程和启动流程:
(三)宽动态
君正Zeratul平台的宽动态功能(wdr)开发的比较晚,gc2093的WDR功能目前是可以使用,但是效果并没有优化到最佳。
宽动态功能实际也是君正自己的工程师在开发,如果需要使用宽动态功能,需要替换他们的imp-t31-wdr和tx-isp-t31-wdr 文件
应用:
1.可以使用命令查看是否已经启动了宽动态功能:
cat /proc/jz/isp/isp-m0
2.目前的宽动态功能在晚上效果非常差,需要在晚上的时候关闭宽动态功能。可以使用IMP_ISP_WDR_ENABLE 接口进行关闭
3.宽动态适用于强光和弱光交替的场景,它会将强光进行抑制,然后提升软光除的曝光,它对图像是有优化效果的,如果是使用宽动态进行拍照的话,强弱光交替的地方,容易产生纹波一样的效果。
######################2022.08.28######################
该博客将停止更新
新的文章内容和附件工程文件
请到 liwen01 博客首页信息查询
liwen01 2022.08.28 日更新
######################2022.08.28######################
最后
以上就是长情斑马为你收集整理的君正Zeratul开发(4)——图像效果调试前言(一) Sensor驱动移植(二)光敏参数调整(三)宽动态的全部内容,希望文章能够帮你解决君正Zeratul开发(4)——图像效果调试前言(一) Sensor驱动移植(二)光敏参数调整(三)宽动态所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复