前言

  目前而言,君正设备的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)——图像效果调试相关推荐

  1. 君正Zeratul开发(6)——为什么禁止使用system

    (一)前言  在君正Zeratul_T31_开发指南中明确规范,禁止在主程序中使用system 等系统调用接口函数,需要在另外的一个守护进程中去实现system函数的功能.这里有两个问题:1.syst ...

  2. 君正Zeratul开发(5)——快速启动优化

    前言:   Camera 需要快速启动, 以第一时间抓拍到图像,君正官方给的第一帧图像是200ms,实际应用中时间会长不少. 1.尽快运行主程序  主程序应该放置在 rootfs 中并第一时间加载运行 ...

  3. 君正Zeratul开发(2)——uboot启动分析

    前言    boot启动一般分为两个阶段,君正设备的第一阶段uboot spl 程序没有开源,用户编译的是第二阶段的boot,最后将两个阶段的boot合并到一起,写入到boot分区中去,boot分区如 ...

  4. 君正4750开发板使用日记2-Linux环境搭建与内核编译

    为什么80%的码农都做不了架构师?>>>    Linux环境搭建与内核编译 上一篇中把4750开发板与PC的硬件连通了,这一篇记录的是基本的Linux环境的搭建.其实官方文档已经比 ...

  5. 君正x2000开发板usb口读取文件

    ## 标题君正x2000开发板USB口读取文件 (由于word文档无法上传,只复制了文字,操作过程中的图片就不做展示) 开发要求 1.外设的tf卡存储录像抓图文件需要通过USB口在电脑上进行查看.拷贝 ...

  6. 君正X2000开发板开箱测试

    一  上电开机 使用附赠的电源线连接5V电源头和开发板DC电源口,即可开机. 注意:开发板输入电压为5V,切勿输入12V电源 二  连接串口终端 使用附赠的USB Type C接口连接开发板的调试接口 ...

  7. 君正 Halley6 开发板调试SPI LCD

    kernel版本:linux-4.4.94 CPU: X1600 LCD: 3.5 寸TFT(320×240),Model Name LQ035NC111 本⽂以芯⽚x1600, 开发板halley6 ...

  8. adb shell 调试君正板子

    今天接到一个任务,把现有的代码移植到君正的开发板上. 下面就开始吧. 1 首先,代码移植到君正上,需要交叉编译环境. 需求方已经提供了交叉编译的tar包,直接在linux上解压缩. 然后 指定 CC= ...

  9. QT5.15.2源码编译后在君正MIPS架构运行播放实时视频流

    问题背景: 公司新项目需要使用君正T40 soc,平台是 MIPS 架构,但是君正在此平台未开发出图形界面工具,项目需要人机交互,于是需要使用QT实现相关需求. 问题描述: 下载QT5.15.2源码( ...

最新文章

  1. python 开发板 i2s_嵌入式小系统I2S接口调试总结
  2. 十年磨一剑,可重构计算架构将引领未来芯片市场
  3. 对物联网操作系统特征和定位的思考
  4. mysql centos7 默认密码忘记_centos7 mysql忘记密码解决办法
  5. python基础教程是什么-Python基础教程_Python入门知识
  6. Eclipse或SVN—如何在Eclipse中安装SVN客户端插件
  7. 使用Git将项目上传到GitHub(Windows+Linux双教程)
  8. 华硕门店点亮系统_6大关键赋能,点亮导购服务力!
  9. java课堂点名和提问程序_Java程序设计作业.md
  10. 罗翔陈佩斯:从狂妄到自省
  11. android 获取粗略位置_android – 如何使用Wifi或GSM或GPS获取粗略的位置,以哪一个可用?...
  12. NVP2650和NVP2650D的区别是什么?
  13. 了解贝尔曼·福特算法
  14. java获取浏览器url_java 打开浏览器 url
  15. 小程序社交电商案例分享
  16. Maya 2013 下载以及破解教程
  17. 太空射击 第07课: 添加图形
  18. 2020nyist第四场个人赛
  19. 一种低成本的室内定位UWB技术方案
  20. 秒杀抢购活动性能测试记录

热门文章

  1. 2021年怎么用百家号做医疗关键词排名优化
  2. 简述er图的作用_【ER图的含义】作业帮
  3. vivo y73s参数配置 vivo Y73s多少钱
  4. 【区块链 | NFT】NFT游戏怎么开发?详细的开发指南来了【2022】
  5. Maven 解决 maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories 问题
  6. caffe 处理数据集相关代码
  7. Cotex A9中pwm控制器(定时器)--脉冲宽度调制,通过pwm实现蜂鸣器播放猪八戒背媳妇
  8. c语言中读和写的作用,c语言文件读写
  9. C语言学习笔记---初始C语言001
  10. php 登录保存在哪里看,Mac_MAC如何查看使用自动登录后保存的网站软件密码,  我们在登录网站或软件时 - phpStudy...