跳转至

图像质量调试工具使用指南

前言

概述

PQTools图像质量调试工具使用指南主要辅助调试人员进行图像效果及差异化的调节,本文重点阐述相关的调试操作方法。

说明:

本文以Hi3519DV500描述为例,未有特殊说明,Hi3516DV500与Hi3519DV500、Hi3516CV608与Hi3516CV610内容一致。 Hi3511CV100仅支持“4 点播工具使用”章节。

产品版本

与本文档相对应的产品版本如下。

产品名称

产品版本

Hi3519D

V500

Hi3516D

V500

Hi3516C

V608

Hi3516C

V610

Hi3511C

V100

读者对象

本文档(本指南)主要适用于以下工程师:

  • 技术支持工程师
  • 软件开发工程师

修改记录

文档版本

发布日期

修改说明

00B01

2026-06-30

第1次临时版本发布。

概述

工具概述

PQ向客户提供一系列专业图像质量调试工具(以下简称PQTools),包括方便的在线调试工具(Tuning Tool),连接单板后可以直接进行ISP等各模块的参数调节,同时通过实时预览点播工具(PQStream)观看设置完参数后的效果;还针对常用调试的场景提供各类数据分析等(Analysis Tool),对客户调节提供更客观的分析。

工具的架构如图1所示。

图 1 工具架构图

工具从使用场景上来分主要分为:

  • 标定工具(Calibration Tool):用于自动生成各个支持ISP模块的算法参数。现阶段该工具是个独立工具。
  • 在线调试工具(Tuning Tool):用于各类参数的精细及差异化的调节,实时生效,可以通过预览看到图像质量的效果。
  • 分析工具(Analysis Tool):辅助在线调试工具,提供常用的数据、图表,实时调节同时实时分析。
  • 抓拍工具(Dump Tool):抓拍工具,支持抓拍YUV、RAW、JPEG文件。

工具从交付上来看,分为PC端及板端两大部分,PC端包括在线调试工具、另外以插件的形式提供各种分析工具和标定工具;板端为ittb_control进程,主要负责在线参数调节。

环境准备说明

软硬件需求

  • 硬件需求

    • 安装有前言产品版本所列芯片,并具有网络端口的单板硬件。
    • 台式计算机或便携式计算机。
    • 网络连接线(若使用局域网络,则还需要路由器等网络交换设备)或者串口连接线。
    • 用于运行PQTools工具的计算机显示器分辨率宽度不小于1024,高度不小于768。
  • 软件需求

    用于运行PQTools工具的计算机须安装Windows 10或以上版本的64位Windows操作系统。

    使用DIS Debug Tool前,请安装Python3.9.11(64位)

    • 自动安装Python(推荐):

      请执行SetupPythonEnv.exe安装程序(位于PQTools发布包中),按照安装引导即可完成Python安装和相关组件配置。

      在安装软件的欢迎界面单击“Next”按钮,进入Python版本检测和安装界面,如果Windows上没有安装3.9.x(64bit)版本的Python,status状态显示为Mismatch, 即版本不匹配,需要单击右侧蓝色的Install按钮进行Python3.9.11的安装, 如图1所示。

      图 1 Python检测和安装界面

      Python安装成功后,默认安装在系统盘当前用户的路径下, 界面会刷新为图2。如果PC上已经安装符合要求的Python,则会直接显示图2。

      图 2 Python版本检测OK界面

      继续单击"Next"按钮,执行Python 组件(numpy,scipy,csaps,opencv-python)检查、下载安装以及Python环境变量检测、配置,如图3。

      图 3 Python组件安装和系统环境变量配置

      执行该程序时请保证计算机可连接Internet网络;如果不能连接网络,请手动安装Python组件(numpy,scipy,csaps,opencv-python)。

      在Python安装成功后,重启PQTools,方可正常使用。

    • 手动安装Python:

      请下载Python3.9.11安装包(64位),下载网站:https://www.python.org/downloads/release/python-3911/,win用户选择如图4红色框所示。

      图 4 下载提示

      安装并配置系统路径如图5和图6所示。

      该路径只为示例,具体按照实际Python路径配置环境变量。

      图 5 系统路径配置(Path)

      图 6 系统路径配置(PYTHONHOME)

      Python安装成功后,请使用 pip install 安装numpy, scipy, csaps ,opencv-python四个组件。

须知:

PQTools工具部分功能不支持中文路径,在使用工具及工具过程载入的文件的过程中避免出现包含中文的文件路径。目前因为算法调用工具Python目录内容,对于工具路径算法内有限制:

  • 桌面及桌面以下路径
  • 中文路径
  • 数字开头的路径

物理链路连接

PQTools工具分为客户端(即PC端软件)和服务端(即板端软件),使用网络或者串口通讯进行交互。可使用以下三种连接方式中的任意一种来完成物理链路的连接。

  • 计算机与单板直接连接

    将网络连接线的两端分别接入单板和计算机的网络端口。

  • 使用局域网络

    • 将网络连接线的两端分别接入单板网络端口与路由器客户端口。
    • 若计算机使用有线网络,则将另一根网络连接线的两端分别接入计算机的网络端口与路由器客户端口;若使用无线网络,则请参照当前路由器的设置(或网络管理员分配给您的网络设置)将计算机接入无线热点。
  • 计算机与单板用串口连接

    将串口连接线的两端分别接入单板串口和计算机的串口。

PQTools发布包目录说明

Hi35XXXX_PQ_Vx.x.x.x.tgz

此版本使用请参考“Linux系统下板端软件的安装与运行”章节。解压后包的目录结构如图1所示。

图 1 解压后的目录结构

  • configs目录,包含ittb_stream运行各种业务场景的sensor配置文件(如果不需要运行ittb_stream,可删除该目录以节省板端空间;如果只运行个别场景,可删除该目录下其他场景的sensor配置文件以节省板端空间)
  • libs目录,包含ittb_control和ittb_stream运行的动态库文件(默认提供所有已支持场景的sensor库,如果只运行个别场景,可删除该目录下其他场景的sensor库以节省板端空间)
  • config.cfg是ittb_control和ittb_stream运行所需的配置文件
  • PQTools.sh是运行ittb_control和ittb_stream的脚本文件
  • ittb_control和ittb_stream是业务程序文件
  • StartControl.sh是快速重启ittb_control的脚本文件

说明:

config.cfg部分参数配置说明 [Default] Port=4321 ---------------------------- PC端PQTools与板端ittb_control网口连接端口号 UartEn=0 ---------------------------- PC端PQTools与板端ittb_control串口连接,具体使用详见欢迎界面的串口连接单板 UartDev=/dev/ttyAMA0 [iniserver] Port=2333 ---------------------------- PC端PQStream与板端ittb_stream网口连接端口号,一般不需要修改 [PRINT] PrintLevel = 6 ---------------------------- 板端程序打印等级,数值高打印信息详细 [UseXVR] xvr=0 ---------------------------- 媒体业务只启动VPSS未启动VI模块时,打开此开关,支持调试VPSS模块参数 [Use3A] 3a=1 ---------------------------- ittb_control使用SDK提供的3A库的开关 [UseLibrary] AE_En=1 ---------------------------- ittb_control 加载AE库开关 AE_Lib=./libs/libss_mpi_ae.so ------------ ittb_control 加载AE库路径 AWB_En=1 ---------------------------- ittb_control 加载AWB库开关 AWB_Lib=./libs/libss_mpi_awb.so ------------ ittb_control 加载AWB库路径 [FPNSaveRaw] ---------------------------- PC端PQTools FPN标定保存RAW开关及路径 enable=0 Path=./ [JPEG] JpegChn=7 ---------------------------- PC端PQTools 抓取JPEG图片使用的VENC通道号 [Other] RawExtraInfo=0 -------------------- PC端PQTools 抓取RAW文件同时抓取/proc/umap/rc信息,默认关闭 [Method] -------------------- ittb_control批量抓灌数据,具体使用详见外接存储设备抓灌说明 Method = 0 ……

Hi35XXXX_ext_api_Vx.x.x.x.tgz

此发布包用于将PQTools工具部分功能编译到用户业务中的小型化场景。解压后包的目录结构如图1所示。

图 1 解压后的目录结构

  • libbin目录,包含bin功能的头文件和库文件,以及编译sample供用户参考。
  • libcontrol目录,包含control功能的头文件和库文件,以及编译sample供用户参考。
  • 编译libbin与libcontrol的sample前,需要修改对应Makefile中的SDK_DIR变量。
  • config.cfg,control功能运行所需的配置文件(如果将libcontrol编译到用户业务中,需要将此文件放在运行目录)。

Linux系统下板端软件的安装与运行

烧录芯片固件并配置板端工具运行环境步骤,烧写镜像文件到单板,并配置好网络。

  1. 把发布包中的Hi35XXXX_SDK_VX.X.X.X.tgz解压,将ko目录(Hi3519DV500为smp/a55_linux/source/out/ko,Hi3516CV610为smp/a7_linux/source/out/ko)放置到文件系统中,或者nfs mount到单板文件系统上。
  2. 运行ko目录中的loadXXXX脚本,运行前需要设置loadXXXX脚本mem_process_isolation参数为0,关闭进程隔离。
  3. 把发布包中的Hi35XXXX_PQ_VX.X.X.X.tgz解压,将目录Hi35XXXX_PQ_VX.X.X.X拷贝到文件系统中,或者nfs mount 到单板文件系统中。
  4. 板端的工具使用./PQTools.sh -s运行stream进程,使用./PQTools.sh -c运行control进程,使用./PQTools.sh -a运行stream和control进程。

    脚本分为两个部分:

    • 运行前准备

      killall ittb_stream; #杀死ittb_stream进程

      DLL_PATH=${LD_LIBRARY_PATH}:${PWD}/libs; #指定库路径

      export LD_LIBRARY_PATH=${DLL_PATH}; #export 库

    说明:

    • 当客户起自己的媒体业务时,板端只需执行./PQTools.sh -c命令运行control进程,即可使用PQTools工具调试。
    • 按规定的格式起板端配置好的ini业务,如:./PQTools.sh -a sensor 3,表示同时起ittb_control和ittb_stream业务,sensor表示configs目录下对应ini所在的目录名,数字3表示config_entry.ini中对应的ini业务编号。
    • LD_LIBRARY_PATH即Linux环境变量名,该环境变量用于指定除默认路径外,系统查找共享库(动态链接库)时应首先检查的额外路径。
    • 工具里使用了自己编译好的动态库,而这些动态库放在发布包的libs文件夹下。当执行函数动态链接时,如果此文件不在目录’/lib’and‘/usr/lib’下,那么就需要指定环境变量LD_LIBRARY_PATH。
    • 运行可执行程序

      ./ittb_stream &

      说明:

      如果外部的点播工具已经配置了LD_LIBRARY_PATH,则直接运行ittb_stream可执行程序即可。

    须知:

    工具依赖SDK点播业务,为保证工具功能完整性,启动工具前请确保ISP业务、VPSS业务、VENC业务已经成功启动。 板端若以非ittb_stream+ittb_control 方式运行调试,在切换媒体业务前需先退出ittb_control进程。

PC端软件的安装

PQTools工具PC端软件是绿色软件,直接使用解压缩工具(如WinRAR、WinZip等)将PQTools工具压缩包(zip格式)解压缩到任意的可写目录,即可使用。

快速入门

欢迎界面

用户每次运行PQTools.exe启动工具时,工具会弹出欢迎界面,引导用户快速新建调试表格与连接单板,如图1所示。

图 1 欢迎界面图例

若希望通过此界面快速展开图像质量调试,请执行以下操作:

  1. 选定正确的调试表格模板。在“Load Template”的下拉框中,选择与被调试芯片名称一致,且版本号匹配的模板。
  2. 连接单板:如果用网络连接单板,“Connection Type”下拉框选择“Network”,并在“IP Address”一栏中输入单板使用的IP地址;在“Port”一栏中输入运行板端程序时指定的端口号码(默认为4321)。

    如果用串口连接单板,需要执行以下操作:

    • 先修改板端版本包的config.cfg文件中的[Default] UartEn,从0改为1。
    • 修改config.cfg文件中的[Default] UartDev,默认为/dev/ttyAMA0,如果改串口通信,则需要通过如下方法关闭串口控制台(注意:关闭之后无法再通过串口终端来操作单板,所以请务必保证单板的启动脚本中有媒体业务和ittb_control的启动流程):

      用该命令注释掉/etc/inittab中的控制台初始化动作,然后重启单板:

      sed -i "s/^::respawn:\/sbin\/getty/#::respawn:\/sbin\/getty/g" /etc/inittab 
       reboot
      
    • 工具界面的“Connection Type”下拉框选择“Serial Port”,并选择相应的COM口来连接板端。

以上操作执行完毕后,单击“OK”按钮,工具将读取选定的模板生成调试表,并自动建立计算机与单板间的网络连接。且若网络连接成功建立,工具还将自动从板端读取所有调试项的值。若串口打开成功,工具只会自动读取工具当前显示页面的调试项的值。

说明:

  • 默认情况下,工具会记住用户每次输入的所有信息。若用户只是将参数用于一次临时的调试,并不希望工具记住,请将“Remember the selections”前的复选框勾选取消。
  • 如果用户不希望每次打开工具时弹出欢迎窗口,请勾选“Do not show this dialog when start PQ Tools”。若勾选此项,则下一次用户启动工具时,欢迎窗口将不再出现,而是直接显示工具主界面。

工具主界面

工具主界面如图1所示。

图 1 工具主界面图例

PQTools工具的主界面按功能的不同分为以下几个区域:

① 工具栏:提供一些常用的操作的快捷按钮

② 调试表面板:显示当前打开的调试表文件所包含的所有可调试项

③ 调试区域:单击左侧的树节点,此区域会显示选中节点对应的调试页面

④ 高级功能区域:显示通讯日志。勾选“Save log to file”复选框,支持将日志保存至logs目录中。勾选“Auto read param”按钮,支持自动读常用参数并显示在状态栏。

⑤ 菜单栏:包含自动保存xml功能。

⑥ 状态栏:显示一些功能信息。

常用操作

新建调试表

通过工具栏的“新建”()按钮可以创建一个调试表格,并将其用于图像质量调试。单击“新建”按钮,工具会弹出“Create a new PQ Table”对话框,如图1所示。

图 1 创建调试表格对话框

在下拉框中选择对应的调试表格模板,单击“OK”按钮,工具将建立调试表格。建立后,在主界面的调试表面板区,会显示当前调试表格的树形结构(详细描述请参见"界面及功能说明")。

保存调试数据文件

如果需要将当前的调试表以及板端读取到的调试数据保存到文件中,请单击工具栏上的“保存”按钮()。此时工具将弹窗支持选择保存的模块,如图1,选择模块点击OK选定路径后,工具将当前调试表的数据进行保存。

保存的文件格式为.xml。默认不勾选 Only Save Data,xml文件包含所使用调试表的结构,勾选只保存调试表的数据。

图 1 导出xml模式选择

打开调试数据文件

如果需要加载保存的调试数据文件,请单击工具栏上的“打开”按钮(),此时工具将弹出对话框,让用户选择要打开的数据文件。

工具打开调试数据文件时,会读取文件中保存的调试表结构并将其显示在调试表面板。

须知:

  • 导入xml文件后,切换可调项界面不会自动获取板端数据,可调项界面显示导入文件的数据。
  • 导入xml文件后,单击主界面或可将参数设置到板端,或者切换到可调项界面单击调试页上的将此组数据设置到板端。
  • PQTools当前版本导出的数据文件格式为.xml。
  • 打开文件时,可通过弹窗选择仅加载数据还是新建调试表,仅加载数据只刷新调试表界面的数据,新建调试表相当于重新打开工具,会同时刷新外挂插件,还原到初始状态。
撤销与重做

如果某一次调试操作需要被撤销,单击工具栏上的“撤销”按钮()即可完成。要重做被撤销的操作,请单击工具栏上的“重做”按钮()。

打开外挂插件/外挂程序

工具栏的下拉框()列出了所有当前可用的外挂插件与程序。单击下拉框,选择需要使用的插件/程序即可。

工具只加载当前芯片支持的插件。

须知:

  • 工具退出时,被打开的插件会同时被关闭。
  • 由于一些外挂程序依赖连接参数,因此打开外挂的应用程序时,若工具没有与单板建立网络连接,则打开操作将被阻止。
连接单板

单击工具栏上的“连接”()按钮,工具将弹出单板连接向导对话框如图1所示。

图 1 单板连接向导

用户在“IP Address”的下拉框中输入单板的IP地址(也可以单击下拉按钮选择之前连接过的单板的IP地址)并在“Port”文本框中输入端口号后,单击“Connect”,工具就会尝试连接单板。

若单板连接成功,则工具栏的“连接”按钮()将被禁用,“断开”按钮()会被激活。

断开与单板的连接

在已经连接单板的状态下,单击工具栏的“断开”按钮(),即可中断与计算机单板的网络连接。

工具调试表设置

单击工具栏的“设置”按钮(),打开工具调试表设置对话框。

图 1 工具调试表设置对话框

工具版本号查看

单击工具栏的“关于”按钮(),工具将弹出对话框如图1所示。对话框中显示工具的版本信息。

图 1 工具版本号显示框

自动保存xml

单击菜单栏的"Auto Save Xml"按钮(),工具将弹窗如图1所示。

图 1 Auto Save Xml

  • 支持下拉框设置间隔时间1、5、10、30、60分钟。
  • 支持状态栏显示已保存多少个xml文件、剩下多少秒保存。
  • 支持日志栏显示保存路径。
  • 默认保存在exe同级目录AutoSaveXml\年_月_日 目录下。
  • 保存成功1000个文件之后停止自动保存,并弹窗提醒。
  • 重新导入xml,刷新界面后,自动保存会停止。
自动读参数

如图1所示,勾选日志栏的"Auto read param"按钮,支持自动读参数并显示在状态栏中,涉及的参数及所在结构体为isp_exp_info:exp_time、short_exp_time(为0时不显示)、a_gain、d_gain、isp_d_gain、iso、fps、ave_lum(不支持从FE获取,不显示)、isp_wb_info:color_temp。

图 1 Auto read param

界面及功能说明

在线调试界面及功能说明

调试结构界面

新建调试表或打开调试数据文件以后,左侧的调试表面板将显示出当前调试表的结构,如图1或图2所示。

图 1 Hi3516CV610调试表

图 2 Hi3519DV500调试表

按照被调试功能大类的不同,调试表中设立了很多的调试页面。单击这些调试页的节点,工具会在右侧的调试区域显示调试页中包含的内容,如图3所示:选择使用频率显示可调项,默认“BASIC”显示基础可调项,选择"ADVANCED"显示全部可调项。单击按钮,支持将展开的可调项收起。

图 3 打开调试表中的调试页

使用工具栏上的图4可以通过关键字快速定位调试项。在搜索框中输入关键字(关键字不区分大小写)以后,按下回车键(或单击放大镜按钮),工具将自动定位到下一个包含该关键字的字段,并打开其所属的调试页面,如图5所示。

图 4 搜索框

图 5 使用搜索功能

图 6 曲线页面

在调试表左侧中支持以下功能:

  • 选中一个或多个模块,鼠标拖动改变顺序。
  • 选中一个或多个模块,鼠标右键点击"Turn To Basic"、"Turn To Advanced"设置使用频率,如图7。模块全选中或全不选,弹窗提醒。
  • 鼠标右键点击"Restore PQ Table"恢复加载xml时的默认配置,如图7。

图 7 设置频率和恢复默认

须知:

  • 如果搜索字段是曲线的名字,可跳转到对应的曲线页面;
  • 不支持搜索3DNR参数,在3DNR页面中搜索3DNR参数。

读写通路设置

对于支持多Sensor通路的环境,通过TOP页面的Mode Handle项来配置,如图1、图2所示。

图 1 Hi3519DV500 Sensor通路配置

图 2 Hi3516CV610 Sensor通路配置

多Sensor场景下:

  • 抓取不同Sensor的YUV文件时,需要根据配置文件中Sensor使用的ViPipe来设置Top页面对应的ViPipe编号,然后使用抓拍工具抓取对应Sensor的YUV数据图像,切换YUV抓取来源的Sensor只和ViPipe有关。
  • 通过ISP各项功能调试不同Sensor的图像质量相关参数时,也需要根据配置文件中Sensor使用的ViPipe来设置Top页面对应的ViPipe编号,然后进行参数调试,查看图像效果变化,切换不同Sensor的图像质量调试时,通过ViPipe在不同的Sensor中间切换。

读写参数时,一些错误日志可以忽略。例如图3,读参数时出现了"[DPU/Match] [ERROR] [0xFF0F0002][10] get SDK mpi function failed!"错误日志,代表DPU模块的Match参数读写失败,如果板端未配置该模块,则忽略此错误;如果配置了此模块,请根据板端打印与 /dev/logmpp 内容排查错误原因。

"invalid error type!"、"set SDK mpi function failed!"等错误同上。

图 3 读参数错误日志

须知:

  • 新建调试表功能和切换调试页面引发的自动数据读取受此设置影响。
  • 具备独立通道选择功能的插件,读写通道不受主界面上通道设置的影响。

寄存器/算法参数调整

在调试表树结构中单击图标可以打开“寄存器/算法参数”调试页(3DNR X和Gamma除外)。这些页对应的调试界面如图1所示。

图 1 寄存器/算法参数调试页(以曝光参数为例)

根据每个页面的调试子功能的不同,一个调试页面中的所有算法参数还会被分成若干个分组。

部分分组由于设备接口限制会具有一些特殊属性。这些属性会在每个分组名称的右侧进行标注。目前工具提供的分组特殊属性有:

  • Indi-Read:当用户单击“Read Page”或“Read All”时,本组寄存器/算法参数不进行读取操作,但仍可以通过该组的“Read”按钮进行读取;
  • Indi-Write:当用户单击“Write Page”或“Write All”时,本组寄存器/算法参数不进行写入操作,但仍可以通过该组的“Write”按钮进行写入。

具有特殊属性的寄存器/算法参数组示例如图2所示。

图 2 具有特殊属性的寄存器/算法参数组示例(以FPN为例)

寄存器/算法参数的查看与修改

每个组内都包含有寄存器与算法参数,其中标有“”的参数行代表可写参数,标有“”的参数行代表只读参数。参数按照其内部形式与取值范围的不同,被分为以下四类,并以不同的控件呈现,如表1所示。

表 1 寄存器/算法参数的调试项类型

类型

说明

控件操作

数值

参数的形式是具有一定取值范围的实数

使用以下调试面板:

可通过文本框查看当前值。修改值可以通过以下三种方式:

  • 在文本框中输入值
  • 单击文本框右侧的小箭头按钮微调
  • 拖动最右侧的滑动条

比特

参数在0和1之间取值

通过复选框查看并设定值,复选框选中时取1,未选中时取0

布尔

参数的形式为二选一

通过单选框查看并设定值:

枚举

参数的形式是多项(一般>1)中取其一

通过下拉框查看并设定值:

矩阵

参数的形式是一个多字节序列

调试页面会显示一个打开矩阵的按钮:

单击该按钮,会弹出一个对话框,矩阵的值会显示在对话框内的表格控件中:

用户修改表格中的值,单击空白处或者关闭对话框,即可完成矩阵值的修改。

矩阵若是只读的,用户将无法修改表格内的值,且此时打开矩阵的按钮显示文本为“View this Matrix”。

Dimension用于三维矩阵选择第三维。对于一、二维矩阵,此下拉框仅显示为‘0’,表示没有第三维的选择。

用户可以使用Import&Export导入导出矩阵。

支持批量文本复制粘贴。

支持批量文本编辑,注意:最后一个选中的单元格内容要修改后才能触发。

浮点形式变换

部分的寄存器/算法参数分组中的某些参数具有浮点形式,它们比起实际的数值形式表意更加清晰(如曝光参数中的增益值)。在这种情况下,可以通过分组的“浮点形式变换”按钮()使这些参数切换到增益数值,如图1所示。

图 1 参数的浮点形式变换

显示浮点数的状态下,若用户再单击一次浮点形式变换按钮,则这些参数将恢复原始数值的显示。

从板端读取数据

在已经连接到板端工具的情况下,单击每个分组内的“Read”按钮(),工具就会读取组内每一项参数在单板上的数值,并显示在工具上。

将数据写入到板端

在已经连接到板端工具的情况下,单击每个分组内的“Write”按钮(),工具会将组内每一个可写参数项的当前显示值写到板端。

数据的暂存与恢复

工具对每个调试项分组提供两组数据暂存空间,用户可以利用暂存空间临时保存调整的值进行复原或比较操作。

  • 单击“To Set”按钮(或),可以将分组内当前调整好的值暂存起来。
  • 单击“Load Set”按钮(或),可以将暂存的值恢复到分组界面上。
数据的显示方式转换

选择列表的项,Group页面上的数据将以十进制形式显示。选择,将以十六进制形式显示。

物理/虚拟寄存器的添加与调试

PQTools工具的XML格式中,对于算法参数接口和寄存器采取了不同的定义格式,因此用户并不能直接通过复制XML中已有的定义来自行添加寄存器。以下介绍如何在XML中添加寄存器到界面进行调试。

  1. 用文本编辑器(如Notepad等)打开工具的XML文件,搜索字符串“ <REG_DEF>”,找到寄存器的定义单元。XML中已经包含一些预定义的寄存器定义节点(仅作为示例,不对应任何PQ参数)

    图 1 寄存器定义示例

  2. GROUP为寄存器组的定义,ID为这个寄存器组的名称(定义后,将显示在寄存器组的标题栏中)。根据需要增加寄存器组。

  3. REGISTER为寄存器的定义,其所支持的属性如表1所示,根据需要添加:

    表 1 寄存器的属性字段

    属性

    存在必要性

    表示含义

    ID

    必须

    寄存器的名称。定义后,将显示在寄存器的标题栏中。

    ADDRTYPE

    必须

    寄存器的地址类型。

    0:物理地址

    1:虚拟地址

    默认地址类型为虚拟地址,此时该项可以选择性配置,当地址类型为物理地址时,该项必须配置。

    ADDRESS

    必须

    寄存器的地址。

    地址类型为虚拟地址时:高12bit表示mod,0x00A表示AE,0x00B表示AWB,0x00C表示ISP(客户自研3A应配置为0x00C);低20bit表示offset,即参数项在mod中的偏移(客户自研3A应配置为 VREG_AE_OFFSET/VREG_AWB_OFFSET/VREG_AF_OFFSET+参数项offset)。

    VREG_AE_OFFSET、VREG_AWB_OFFSET、VREG_AF_OFFSET的值见mpp/cbb/isp/user/firmware/include/isp_ext_config.h

    注:可参考图1 寄存器定义示例进行设置

    ACCESS

    必须

    寄存器的可访问性,由下列字母中的一个或多个组成:

    R:表示寄存器可读

    W:表示寄存器可写

    H:表示寄存器须从界面隐藏

    TYPE

    必须

    该寄存器的数据类型。目前可支持以下类型:

    OSAL_BOOL:布尔类型,等同于32位有符号整型。设置为此类型时,工具界面将显示此寄存器为布尔型界面。

    OSAL_S32:32位有符号整型

    OSAL_U32:32位无符号整型

    对于OSAL_S32类型与OSAL_U32类型,若有效比特位只有1位(LSB与MSB相同),则工具会将此寄存器显示为比特型;否则显示为数值型。

    COUNT

    可选

    如果寄存器为多地址连续(可理解为数组),此处可以填入元素个数。需要定义为多维数组的情况,数字间用逗号隔开。

    定义此项后,工具上将以矩阵型显示该寄存器。

    请注意填入的数字为不带0x的十六进制数。

    ADDITIONAL

    可选

    如果寄存器为矩阵型且值为|sum|,在矩阵的最后一列会显示每行数据的和。

    LSB

    可选

    寄存器有效位域的最低位。如不存在该定义,取默认值0

    MSB

    可选

    寄存器有效位域的最高位。如不存在该定义,取默认值(数据类型支持的最大位数 - 1)

    RANGE

    可选

    寄存器在数据类型和比特数的范围限制之上进一步限制的范围。

    格式为[最小值, 最大值](中括号可以用小括号替换,表示边界值不可取)。

    不存在时取数据类型和比特数限制的默认范围。

    RADIX

    可选

    寄存器默认以哪种进制显示,可取值10或16。不存在时默认取10。

    COMMENT

    可选

    关于该寄存器的说明。鼠标悬停在寄存器界面上时,会在状态栏显示相应的提示。

  4. 找到<FUNCTIONS>的XML节点,添加以下子节点(可以从已有的FUNCTION节点复制添加):

    其中RegGroup需要替换成步骤2中定义的寄存器组名。在Hi3516CV610上需要添加FREQUENCY ="BASIC"或可调项使用频率下拉框选择"ADVANCED"寄存器组才会显示在界面上。

  5. 保存XML文件,用PQTools工具重新打开这个编辑过的XML文件。

    说明:

    板端添加物理/虚拟寄存器读写请参考ISP的firmware中寄存器相关代码。

须知:

所有xml的页面参数不会自动刷新,有需要刷新数据时单击各页面里的“Read”或页面上方的“ReadPage”,如:Defect Pixel的DP Static Calibrate,在进行坏点标定时把EnableDetect设为Enable状态,标定结束SDK内部会把EnableDetect参数设为Disable状态,用户要获取当前的标定结果就需要单击页面里的“Read”进行刷新。 设置ADDRTYPE=0,添加物理寄存器调试时,注意不要添加无效寄存器或非法寄存器,可能会导致单板端不可预期的错误。

调试数据的批量读写与自动写入

每新建一个调试表或打开一个数据文件,读写控制面板就会显示在界面上,如图1所示。

图 1 读写控制面板

读写控制面板包含以下功能入口(所有的读写操作均需要在已连接单板状态下进行):

  • 全部读取按钮():单击此按钮时,工具会读取调试表内所有调试项在板端的当前数值。新建调试表(未打开自动读取)或导入BIN文件后,建议执行一次全部读取操作。
  • 全部写入按钮():单击此按钮时,工具会将调试表内所有调试项在工具中的暂存值写入到板端。
  • 自动写入开关(关闭状态,打开状态):开关打开时,每修改一个可写的调试项,工具就会将该调试项的新值写入板端。建议打开此功能,以保证调试值能立即生效。
  • 页读取按钮():单击此按钮时,工具会读取当前打开的调试页内所有调试项在板端的当前数值。若当前打开的页面为GAMMA等支持数据读取的特殊调试页面,则会触发相应调试页的数据读取动作。
  • 页写入按钮():单击此按钮时,工具会将当前打开的调试页内所有调试项在工具中的暂存值写入到板端。若当前打开的页面为GAMMA等特殊调试页面,则会触发相应调试页的数据写入动作。
  • Basic读取按钮():单击此按钮时,工具会读取调试表内所有Basic调试项在板端的当前数值。
  • Basic写入按钮():单击此按钮时,工具会将调试表内所有Basic调试项在工具中的暂存值写入到板端。
  • 读写失败时可调项界面对应结构体字体变红,如图2图所示,读写成功后可恢复。支持鼠标右键点“Remove All Highlights”去除全部高亮,点“Remove Current Highlights”去除当前结构体高亮,如图3所示。

    图 2 读写失败高亮

    图 3 取消高亮

曲线可视化调试

通用曲线功能说明
曲线的基本调整方法

曲线标题支持复制。

曲线上有一定数量的控制点,用于改变曲线的走向。

用户将鼠标指向控制点时,鼠标指针会变为垂直调整形态(),此时按住鼠标左键并上下移动鼠标或单击键盘上下键,可以改变控制点的垂直位置,并观察此时曲线的变化。

在鼠标指针处于精确选择状态()的情况下,在曲线上单击鼠标左键,则工具会将当前鼠标位置映射到对应曲线上的点,并将该点变为控制点。

在鼠标指针指向控制点的状态下单击鼠标右键,则指向的控制点会被重置为普通点,不再具有控制曲线的功能。

  • 单击“”按钮,工具会从板端读取曲线数据,并刷新曲线显示。
  • 单击“”按钮,工具会将曲线数据写入到板端。

如果按钮是点亮状态,调整后的参数会自动写到板端。

曲线的高级控制

图 1 曲线示例一

图 2 曲线示例二

图 3 曲线示例三

  1. Import Export

    • 单击“Save Data File”,可以将当前调整的曲线数据保存到本地文件中。
    • 单击“Load Data File”,可以从文件中读取曲线数据,恢复到当前曲线的数据集中,并显示恢复后的曲线。

    工具支持保存以下三种格式的数据文件:

    • 浮点型,保存在文本文件中的是每个数据的浮点形式(当前值与最大值的比例),取小数点后六位,范围为0.0到1.0之间;
    • 十进制整数形式,保存在文本文件中的是每个曲线数据的十进制表示形式,与界面上对应点位的值相同,取值范围为0到最大值之间;
    • 十六进制形式,保存在文本文件中的是每个曲线数据的十六进制表示形式,数据取值和范围与十进制相同。
  2. Adjust

    • 在X文本框中输入数值后,可以查看曲线对应横轴坐标上的点的纵轴值。
    • 若当前X、Y文本框内值对应的点不是控制点时,单击“Add CtrlPt”按钮,可以将这个点变为控制点。
    • 若当前X、Y文本框内值对应的点是控制点,在Y文本框输入新值后单击“Set”按钮,可以将当前控制点的纵轴值设置为刚输入的新值。
    • 鼠标在坐标系中移动时,“Position”字符串显示X和Y的位置,鼠标移出坐标系则显示“Out of chart”,曲线左上角同时显示该X、Y值。
  3. Control Points

    通过该区域的滑动条,用户可以快速设置曲线上控制点的数量。

  4. Reference Set

    对每条曲线提供Set1~Set5 5组暂存值,单击“Save”按钮将当前界面曲线上的值存入Set,单击“Use”按钮将已存入Set的值设置到当前界面曲线上。未进行“Save”的Set的“Use”按钮不可操作。

  5. Reset

    单击“Reset All Curves”按钮,支持从Templates\ChipName\DefaultCurveData目录下的xml文件中获取数据刷新曲线,该xml与选择芯片平台时加载的xml文件同名。当xml不存在时弹窗提醒。

  6. Switch

    • 通过“Gain”下拉框,用户可在不同倍率之间切换坐标系纵轴最大值。
    • 通过“Line”下拉框,用户可在多条曲线之间切换显示。
  7. Curve Info

    单击“Curve Info”按钮可显示当前曲线信息。

Gamma可视化调试

在调试表树结构中单击Gamma打开。Gamma页对应的调试界面,如图1所示。

图 1 Gamma可视化调试界面

  • 通过设置enable参数项为Enable选中状态使能Gamma。
  • 通过Gamma COEFFI的滑条,或在滑条上方的文本框中输入数值,用户可以将可见的Gamma曲线恢复为标准的Gamma曲线(受当前选定的系数影响。系数范围为0.01到20.00)
  • 通过Slope at zero 的滑条,或在滑条上方的文本框中输入数值,用户可以调节gamma曲线的零点斜率的值(受当前选定的系数影响。系数范围为0.001到20.000)
  • 勾选“Force Correctness on Drag”复选框的情况下,每次拖动控制点时,控制点的纵轴取值最大不能大于右边一个控制点的纵轴值,最小不能小于左侧一个控制点的纵轴值。

其它功能参考"通用曲线功能说明"。

DRC可视化调试

针对某些具备DRC模块的芯片,PQTools提供了DRC可视化调试功能。在左侧的调试表树视图中找到带有DRC标识的页面,单击即可打开DRC模块调试界面。

DRC使能

在DRC寄存器修改界面设置[enable]参数项为Enable选中状态。

图 1 DRC寄存器设置界面

DRC色调映射曲线调试

PQTools工具提供了DRC色调映射曲线调试功能,通过2个或更多(取决于芯片)参数来调整DRC色调映射曲线的走向。

图 1 DRC色调映射界面

调整曲线图右侧的变量,配合观察左侧曲线走势,即可完成调整。

打开DRC可视化调整页面单击“Tone Mapping”页签,首先显示的即为色调映射曲线调试,如图1所示。图中的 Export 按钮用于从板端导出Tone Mapping曲线的各个点的纵坐标值,并保存到一个txt格式的可编辑文件中,供User-defined TM页面导入。

DRC色调TM曲线调试

开启PQTools调试表,在DRC页面将主标签页切换到User-defined TM,即为色调TM曲线调试,已开放鼠标左键按下框选曲线图像放大,及放大状态下右键按住拖动功能(框选时从左到右为放大,从右向左为还原),如图1所示。曲线是单调非递减的,最大值点固定在(1, 1)。

图 1 DRC色调TM调试界面

请参考"通用曲线功能说明"。

饱和度修正曲线调试

PQTools工具提供了饱和度修正曲线的调整功能。在DRC页面将主标签页切换到Correction LUT,即可看到该功能界面,如图1所示。

图 1 DRC饱和度修正曲线界面

请参考"通用曲线功能说明"。

局部细节回叠曲线

PQTools工具提供了局部细节回叠曲线的调整功能。在DRC页面将主标签页切换到Local Mixing,即可看到该功能界面,如图1所示。

图 1 DRC局部细节回叠曲线界面

请参考"通用曲线功能说明"。

说明:

本小节仅Hi3519DV500支持。

BCNR细节恢复曲线调试

PQTools工具提供了BCNR细节恢复曲线的调整功能。在DRC页面将主标签页切换到Detail Restore Lut,即可看到该功能界面,如图1所示。

图 1 BCNR细节恢复曲线界面

请参考"通用曲线功能说明"。

说明:

仅Hi3516CV610支持。

CLUT可视化调试

在左侧的调试表树视图中找到CLUT标签,单击即可打开CLUT可视化调试界面。

说明:

Hi3516CV610不支持CLUT。

CLUT在线调优基本原理

CLUT在线调优基于捕获的CLUT模块输入图像,根据用户指定的目标方向,建立输入图像和目标图像在RGB空间的3D映射表。和CLUT离线标定工具相比,在线调优工具减弱了各个颜色之间的相互干扰。

Cap Image Online功能

捕获CLUT模块在线输入图像。在捕获过程中,工具会自动对ISP PIPE多个模块的参数进行调整,用户会观察到预览页面图像变化。捕获完成后,会自动恢复捕获前的默认配置。推荐用户在捕获图像上选择色彩源,通过拉动HSV结点或设置RGB值方式给出色彩目标。在CLUT调优过程中,需要实时观测预览输出,判断调优是否已达标。捕获图像是CLUT模块输入图像,调节CLUT参数,已捕获的图像不会发生改变。

图 1 CLUT在线调优界面

HSV可视化界面调优
  1. 使能CLUT,将强度设置为1024 (1x),CLUT表清零。

    图 1 默认强度确认

  2. 在捕获图像上通过画框或者取点方式取RGB对的输入,同时在左侧HSV色彩空间显示源的位置,在右侧的源和目标映射区域,显示源和目标的RGB值、HSV值(目标色默认值与源相同)。

    图 2 取色

  3. 选择HSV色彩空间源点附近的多个点,准备对该区域进行调整。

    图 3 选择调整区域

  4. 拖动HSV色彩空间源点附近的多个点到目标方向,松开鼠标,观察预览输出是否达标,如果没有,继续调整目标位置。同时观察对其他色调的影响是否可接受,如果不能接受,需要重新选择源点范围。

    以红色调整到偏橙的方向为例,将源附近的多个点向90度方向拉动,红色偏橙。

    图 4 拉动红色区域结点

    图 5 调整前后色彩差异 (左图是调整前,右图是调整后)

    观察目标图,红色效果符合预期,但肤色偏黄,需要重新选择源点范围,避免肤色被调整。如图6,保持红色框内颜色不动,可降低对肤色的影响。

    图 6 Hue 15度方向结点不动,避免肤色调整 (左图Hue 15调整,右图Hue 15不调整)

    图 7 效果对比 (左图Hue 15调整,右图Hue 15不调整)

  5. 重复步骤4,完成其他颜色的调节。建议通过Export HSV将本次调试过程导出,后续可通过Import HSV加载历史HSV调试过程,在之前基础上,继续Clut调整。

    图 8 HSV导入、导出控件

  6. Import Clut Lut支持将Clut LUT导入,在HSV页面会显示Clut Lut对颜色做了哪些调整。通过HSV页面调节Clut,同时保存HSV.txt和Clut Lut,再通过 Import HSV导入HSV.txt,和通过Import Clut Lut导入Clut LUT,在HSV页面显示会有偏差。推荐仅用Import Clut Lut功能做辅助判断,不做为后续调整的基础。

    图 9 HSV导入和Clut导入差异。左图是HSV导入,右图是Clut导入。

  7. 勾选Single Move选项,支持对HSV单个结点进行调整,相邻其他结点位置固定。

    图 10 Single Move示例

  8. 取消Single Move选项,Show Tab支持在Hue, Sat维度通过填表方式生成Clut表。用户手动填表需要考虑相邻结点的平滑性。

    图 11 Table 操作界面

RGB对调优
  1. 选择Zone0,在捕获图像上通过画框或者取点方式取RGB对的输入,同时在左侧HSV色彩空间显示源的位置,在右侧的源和目标映射区域,显示源和目标的RGB值、HSV值(目标色默认值与源相同)。

    图 1 RGB对调优

  2. 设置Zone0的目标值。支持通过手动输入或者上下翻键方式设定目标RGB值或HSV值。源、目标的RGB和HSV是对应的,调整目标RGB值,HSV会自动更新;调整目标HSV值,RGB会自动更新。

    图 2 设置目标值

  3. 单击Use按键,左侧HSV图根据用户期望调整的方向,调整HSV结点位置。

    图 3 调试生效

  4. 观察Stream输出色彩是否达标,如果没有,继续调整目标位置。

    图 4 Zone0蓝色调整效果 (左图是调整前,右图是调整后)

  5. 修改目标值,继续对蓝色块进行调优。

    图 5 Zone0蓝色再次调整目标值

  6. Hue Exp参数对应RGB映射对在色调维度的范围,取值越大,色调维度被调整的结点越多;当不希望其他颜色被影响时,可调小Hue Exp取值。在调整幅度较大时,适当增大Hue Exp可避免放大噪声。

  7. Sat Exp参数对应RGB映射对在饱和度维度的范围,取值越大,饱和度维度被调整的结点越多;在灰色区域被影响时,可调小Sat Exp取值。
  8. Bright Exp参数对应RGB映射对在亮度维度的范围,取值越大,亮度维度被调整的结点越多。希望亮、暗区域也进行色彩调整时,可适当调大Bright Exp范围,但也会一定程度增大暗区的噪声。

    图 6 RGB对调试相关参数

  9. 完成Zone0 RGB对的调节后,可选择Zone1,继续其他颜色的调优。要求按顺序选择Zone。

    图 7 多个RGB对调试

  10. 完成调试目标后,通过Export HSV按钮,可保存当前的RGB对调试设置和HSV映射表,后续可通过Import HSV基于历史调优结果继续。离线Clut标定工具通过Import RGB对方式也可以导入该结果,通过离线标定工具进行Clut调优。用户可比较2个工具的标定结果做选择。

    图 8 离线Clut工具导入在线RGB对,进行Clut Calibration

须知:

打开工具连接单板后会自动获取Gamma表,如果修改了Gamma表数据,需要点Reload Gamma按钮刷新。

Sharpen可视化调试

PQTools提供了专用的页面,供用户以图形化的方式调整Sharpen功能中的Luma Weight矩阵。

在左侧的调试表树视图中找到YUV Sharpen、BayerShpAttr或Sharpen标识,单击打开寄存器界面后再单击Curve。

以YUV Sharpen曲线为例进行说明。

Sharpen使能

在Sharpen寄存器修改界面设置[enable]参数项为Enable选中状态。

图 1 Sharpen寄存器设置界面

曲线调试

图 1 Sharpen Luma Weight调试界面

  • Hi3516CV610支持曲线:luma_wgt、texture_strength、edge_strength、edge_gain_by_rly、edge_rly_by_mot、edge_rly_by_luma、mf_gain_by_mot、hf_gain_by_mot、lmf_gain_by_mot。
  • Hi3519DV500支持曲线:LumaWgt、TextureStr、EdgeStr。

功能介绍:

① 曲线数据导出按钮:只需单击按钮并设置自己想要的名称即可将sharpen数据按照isp_sharpen_attr(具体请见《ISP开发参考》)结构体形式导出成头文件,默认文件名为sharpen_str.h;

② 档位切换下拉框:通过下拉框一键切换Sharpen所有曲线Manual、ISO档位;

③ Copy To Manual(ISOxxx --> Manual):一键拷贝对应ISO所有数据到Manual上,包括所有曲线以及isp_sharpen_attr中的数据;

④ Copy From Manual(Manual --> ISOxxx):一键拷贝Manual所有数据到对应ISO上,包括所有曲线以及isp_sharpen_attr中的数据;

⑤ Reset All Curves:支持从Templates\ChipName\DefaultCurveData目录下的xml中获取数据,并刷新当前页签下的全部曲线,该xml必须与工具当前加载的xml文件同名。xml不存在时弹窗提醒。

⑥ 曲线跳转下拉框:从下拉框中选择任意曲线,界面将跳转到该曲线所在位置。

注:当②是“Manual”时,③和④按钮不会显示。

其它功能请参考"通用曲线功能说明"。

CA可视化调试

PQTools提供了CA曲线调试功能。

在左侧的调试表树视图中找到带有ChromaAdjust或CA标识的页面,单击即可打开CA模块调试界面。

CA使能

在CA寄存器修改界面设置Enable参数为选中状态。

图 1 CA寄存器设置界面

CA曲线调试

图 1 CA曲线调试界面

请参考"通用曲线功能说明"。

Color Palette功能

说明:

Hi3516CV610/Hi3516CV608不支持。

导入*.pal格式的色板文件,以方便快速导入YUV数据。*.pal文件格式见工具包Plugins\Data\ColorPaletteSample目录下的glowbow.pal文件。该功能页面默认不显示,由XML文件中PQTOOLS_XML\FUNCTION(ID="ChromaAdjust")\PARAMETERS\KEY="CP"参数值控制。

图 1 Color Palette功能界面

使用步骤:

  1. 在XML文件中,将PQTOOLS_XML\FUNCTION\PARAMETERS\KEY="CP"参数值改为VALUE="TRUE";
  2. 单击Browse按钮进行文件浏览;单击Delete按钮删除对应Color Palette;
  3. 单击记录项,颜色条显示对应色板,左侧页签的调试项Y、U、V数据更新,单击Write Page按钮,参数下发板端。
LDCI可视化调试

在左侧的调试表树视图中找到带有LDCI标识的页面,单击即可打开LDCI模块调试界面。

LDCI使能

在LDCI寄存器修改界面设置Enable参数为选中状态。

图 1 LDCI寄存器设置界面

LDCI LPF Coef曲线调试

图 1 LDCI LPF Coef曲线调试界面

调节gauss_lpf_sigma参数值,LDCI LPF Coef曲线即随之变化。

如果工具栏上是使能状态,修改后的参数会设置到板端。

LDCI HePosWgt、HeNegWgt曲线调试

图 1 LDCI HePosWgt、HeNegWgt曲线调试界面

调节he_pos_wgt结构体的wgt、sigma、mean三个参数,HePosWgt曲线即随之改变。如果工具栏上是使能状态,参数设置到板端。

调节he_neg_wgt结构体的wgt、sigma、mean三个参数,HeNegWgt曲线即随之改变,如果工具栏上是使能状态,参数设置到板端。

通过Data Item下拉框选择手动和自动模式,手动模式和自动模式的曲线调法相同。

Dehaze可视化调试

在左侧的调试表树视图中找到带有Dehaze标识的页面,单击即可打开Dehaze模块调试界面。

Dehaze使能

图 1 Dehaze寄存器设置界面

在Dehaze寄存器设置界面设置[enable]参数项为Enable选中状态

Dehaze曲线调试

图 1 Dehaze曲线调试界面

通过Dehaze COEFFI的滑条,或在滑条左边的文本框中输入数值,用户可以将可见的Dehaze曲线恢复为标准的Dehaze曲线(受当前选定的系数影响。系数范围为0.01到20.00)

其它功能请参考"通用曲线功能说明"。

MCF可视化调试

须知:

MCF调试必须在MCF业务时才能使用。目前仅支持Hi3519DV500解决方案。

在左侧的调试表树视图中找到带有MCF ALG标识的页面,单击即可打开MCF模块调试界面。

图 1 MCF 曲线调试界面

共有4个页签,UV曲线仅Alpha页签支持可调,其余3条LF、MF、HF曲线4个页签都支持可调。

MCF曲线无特殊使用方式,使用方法请参考 "通用曲线功能说明"。

3DNR曲线可视化调试

须知:

使用3DNR Curve界面前需修改3DNR Attr页面对应参数组中的参数:

  • op_mode设置为OP_TYPE_MANUAL,可设置MANUAL组(“Write Page”跳过AUTO组,提示“skip auto!”);
  • op_mode设置为OP_TYPE_AUTO,可设置AUTO组(“Write Page”跳过MANUAL组,提示“skip manual”)。

Hi3519DV500:在左侧的调试表树视图中找到带有3DNR Attr、VI 3DNR、VPSS 3DNR标识的页面,单击即可打开3DNR曲线调试界面。

Hi3516CV610:在左侧的调试表树视图中找到带有3DNR X标识的页面,单击打开后再单击Curve或双箭头按钮即可打开3DNR曲线调试界面。

图 1 VI 3DNR曲线调试界面

  • 单击“Export All”按钮把Manual和Auto所有模式的曲线的值导出到一个txt文件中。
  • 单击“Import All”按钮从一个txt文件导入数据到Manual和Auto所有模式的曲线中。
  • 下拉框“Curve Name”选择跳转到指定曲线。

其他参考 "通用曲线功能说明"。

AIBNR曲线可视化调试

须知:

Hi3516CV610不支持

图 1 AIBNR曲线调试界面

功能参考"通用曲线功能说明"。

BNR曲线可视化调试

在左侧的调试表树视图中找到带有BNR标识的页面,单击即可打开BNR模块调试界面。

图 1 Hi3519DV500 BNR曲线调试界面

图 2 Hi3516CV610 BNR曲线调试界面

功能介绍:

① 档位切换下拉框:通过下拉框切换noisesd_lut曲线档位;

② Copy To Manual(ISOxxx --> Manual):一键拷贝对应ISO所有数据到Manual上,包括noisesd_lut曲线、isp_nr_snr_attr和isp_nr_md_attr中的数据;

③ Copy From Manual(Manual --> ISOxxx):一键拷贝Manual所有数据到对应ISO上,包括noisesd_lut曲线、isp_nr_snr_attr和isp_nr_md_attr中的数据;

④ Reset All Curves:支持从Templates\ChipName\DefaultCurveData目录下的xml中获取数据,并刷新当前页签下的全部曲线,该xml必须与工具当前加载的xml文件同名。xml不存在时弹窗提醒。

⑤ 曲线跳转下拉框:从下拉框中选择任意曲线,界面将跳转到该曲线所在位置。

注:当①是“Manual”时,②和③按钮不会显示。

其他功能参考"通用曲线功能说明"。

  • Hi3519DV500:BNR、MIX_GAIN。
  • Hi3516CV610:noisesd_lut(支持manual、auto切换)、coring_ratio。寄存器设置界面,isp_nr_common_attr结构体中ref_mode数值变化时,isp_nr_wdr_attr、isp_nr_snr_attr、isp_nr_md_attr结构体部分参数联动隐藏。
MeshShading曲线可视化调试

在左侧的调试表树视图中找到带有MeshShading标识的页面,单击即可打开MeshShading模块调试界面。

须知:

MeshShading可视化调试仅用于特殊场景(如红外)下提高图像四周亮度,四个通道的增益都一样,普通模式请使用MeshShading标定。

图 1 MeshShading曲线调试界面

Offset X和Offset Y是设置MeshShading分块的中心点,Hi3519DV500的取值范围是Offset X:[0,32],Offset Y:[0,32],Hi3516CV610的取值范围是Offset X:[0,32],Offset Y:[0,18],都取0时为图像左上角的分块,都取最大值为图像右下角分块,以此类推,Hi3519DV500默认取[16,16],Hi3516CV610默认取[16,9]。

在界面上修改Offset X和Offset Y的值,软件计算出中心到边缘的最大值X,该值是调试曲线的横坐标Distance From Center,X为一个归一化的值,X的取值范围:[128, 256],X取128时,Offset取的是中心块,X取256时,Offset取的是任意四周上的块。

界面上Resolution Width和Resolution Height的值,是从isp_pub_attr结构体中的wnd_rect.width和wnd_rect.height获取的,仅做参考用。

通过下拉框选择MeshScale,刷新对应的值到曲线上,不同的MeshScale会对应不同的默认值(1倍增益),请在选取合适的MeshScale后再调试曲线,切换MeshScale会导致增益表刷新,之前调试的结果丢失。

改变Offset X/Offset Y后,必须调试曲线后增益值才会刷新。

单击“Save ShadingLut Data File”按钮,生成一个默认文件名为alg_lsc_calib_info的.h文件,文件中保存的数据按照结构体格式,保存了isp_shading_lut_attr结构体中的x_grid_width,y_grid_width和lsc_gain_lut的值。

其他功能参考"通用曲线功能说明"。

VO RGB Gamma曲线可视化调试

须知:

Hi3516CV610不支持。

图 1 VO RGB Gamma曲线调试界面

功能参考Gamma可视化调试。

VO MIPI Gamma曲线可视化调试

须知:

Hi3516CV610不支持。

图 1 VO MIPI Gamma曲线调试界面

功能参考Gamma可视化调试。

Thermo曲线可视化调试

须知:

Hi3516CV610不支持。

图 1 Thermo曲线调试界面

  • 通过移动clip的滑条,或在滑条左侧的文本框中输入数值,表示抑制单个像素值数量占整体像素值比例。值越小,生成的曲线使图像整体对比度越强,噪声越大,易损失亮区暗区细节,值越大,生成的图像整体对比度越差,噪声越小。取值:[1, 4096]。
  • 通过移动fusion_ratio的滑条,或在滑条左侧的文本框中输入数值,表示生成thermo调节曲线时自定义线性曲线的占比,取值:[0, 100]。
  • 其它功能参考"通用曲线功能说明"。
Thermo Info曲线可视化调试

须知:

Hi3516CV610不支持

图 1 Thermo Info曲线调试界面

  • 只支持从板端读数据,不支持写数据到板端;
  • 支持导入导出曲线数据,查看曲线变化趋势。

3DNR可视化调试

与其他寄存器和算法模块不同,3DNR功能复杂且限制较多,因此进行了单独设计。以下均以Hi3519DV500的VI 3DNR X接口为例说明。

在调试表中单击名称以3DNR_X起始的调试页,即可打开3DNR调试界面,如图1所示。

图 1 Hi3519DV500 VI 3DNR X_MANUAL调试界面

图 2 Hi3519DV500 VI 3DNR X_AUTO调试界面

左侧的树形控件列出了在当前页面下可以调整的3DNR模式(一级节点),以及模式下可调整的3DNR数据集(二级节点)。每一个3DNR模式(或处于该模式下的数据集)节点被单击时,界面右侧均会显示该模式的调试界面。

对于调试界面:

  • 数据集自上而下排列,并具备独立的标题栏:

    • 单击数据集标题栏中的“Export”按钮,可以导出数据集中的调试数据到以.txt结尾的文件(数据格式按数据参数的界面显示)中,以明文形式保存;
    • 单击数据集标题栏中的“Import”按钮,可以导入之前导出的txt数据。
    • 如图2所示,自动模式下,单击“Export Auto All”按钮,可以将整个Auto模式页面的数据导出到文本文件(每组Auto数据格式按数据参数的界面显示,增加ThreeDNRCount、IsoThresh、3DnrParam_*等字段和部分注释)中,单击“Import Auto All”按钮,可将导出的整体数据导入到界面显示。
    • 对于自动模式(左侧列表中名称以AUTO结尾的模式),每个数据集具备ISO值。在数据集标题栏的右侧可以编辑ISO值。
    • “To Set1”,“To Set2”和“Load Set1”,“Load Set2”两组按钮,可以保存两组设置参数,方便用户调试。单击“To Set1”按钮将界面的设置参数缓存起来,单击“Load Set1”按钮将缓存的设置参数显示在界面,“To Set2”和“Load Set2”操作相同。
    • “Import INI”,“Export INI”按钮支持导入导出ini文件,“Import Struct”,“Export Struct”按钮支持导入导出struct文件,如图3所示,只有Hi3516CV610支持。

    图 3 Hi3516CV610导入导出ini和struct文件

  • 多个输入框对应1个变量标记的情形,表示该变量本身为数组,或者是某个作为数组的结构体中的成员。对应数组下标从小到大的变化,文本框从左到右排列;

  • 文本框为淡黄色背景的,表示对应的参数为可以更改的参数。这些值的各种组合,对应3DNR的各种能力和风格;
  • 文本框为灰色背景的,表示对应的参数不建议设置,这些成员通常应该取默认值,在某些极端情况下也许取其他值效果更好些;
  • 文本框为白色背景且无法编辑的,表示对应的参数不应被设置,它们在任何情况下都应该取默认值。工具上无法修改这类参数的值。
  • 文本框背景为其他颜色的,代表某类参数,用不同颜色标记方便查找。
  • 支持键盘操作:Tab键切换文本框,支持“↑”“↓”增减参数值。
  • 当存在有Auto页面时,Manual页面新增两个按钮:

    • 单击“Copy From Auto”按钮,可以将Auto模式选中的ISO档所有的数据包括可调项和曲线,拷贝到Manual模式中;
    • 单击“Copy To Auto”按钮,可以将Manual模式所有的数据包括可调项和曲线,拷贝到Auto模式选中的ISO档中。

    图 4 Manual和Auto一键互相拷贝界面

  • 3DNR的具体调试建议请参照文档《Hi35xxVxxx 3DNR参数配置说明》。

  • 支持单击“Curve”按钮打开曲线调节界面或单击“==>>”按钮跳转到对应曲线。如图5所示,仅Hi3516CV610支持。
  • 鼠标移至编辑框会有注释弹出。
  • 首行首列标签固定,方便查看文本框所在区域,单击文本框,对应标签高亮。

图 5 打开曲线调节界面

在左侧的树形控件上右键单击3DNR模式节点,可以进行模式相关的操作,如图6所示。

图 6 VI 3DNR X模式右键调试界面

  • Add Data Set:在该模式下追加一个新的数据集(至列表末尾),若所选模式为自动模式,则新数据集的ISO值与其上一个数据集相同;
  • Sort:对模式下所有数据集按ISO从小到大的顺序进行排序;
  • Read:单独对所选模式进行板端读取操作;
  • Write:单独对所选模式进行板端写入操作;
  • Export:整体数据导出,以明文形式保存,导出格式支持按结构体(3DNRX_STRUCT_TYPE)和界面排布(3DNRX_DEBUG_TYPE)两种;
  • Import:整体数据导入。

在左侧的树形控件上右键单击数据集节点,可以进行数据集相关的操作,如图7所示。

图 7 VI 3DNR X数据右键调试界面

  • Insert Data Set:在所选数据集的下方插入一个新的数据集,若所选模式为自动式,则新数据集的ISO值与所选数据集相同;
  • Delete Data Set:删除所选数据集。
  • Search:在页面左上角的编辑框中输入要查询的字段,不区分大小写,单击“Search”按钮或按下“Enter”键,如果可调项名字中包含搜索的字段,将该可调项名字设置为橙色,并将界面滚动到该可调项所在位置如图8所示。

图 8 VI 3DNR X搜索页面

在PQTools工具的读写工具栏上单击“Read Page”按钮,可以对全部的3DNR模式执行板端读取操作;单击“Write Page”按钮,可以对全部的3DNR模式执行板端写入操作。

须知:

  • 每个模式下的数据集都有一定的数量限制(一般对于手动模式是只有1个,自动模式为多个)当一个模式下数据集数量达到其最大值时,用户将无法添加新的数据集;而当一个模式下只剩1个数据集时,该数据集无法删除;
  • 对于自动模式,若数据集间的ISO值不为自上而下的递增状态,则将该模式下的调试数据写入板端时可能会失败。因此建议用户在将自动模式的数据写入板端前,先对该模式执行排序动作。
  • 对于自动模式,如果工具从板端读取数据全为0,界面不显示Auto模式下的可调项,此时操作“Write”板端报错,需操作“Add Data Set”添加第一组数据集(参数默认最小有效值,自动写入板端)。
  • 使用3DNR可视化页面前需修改3DNR Attr页面对应参数组中的参数:op_mode设置为OP_TYPE_MANUAL,可设置3DNR可视化页面的MANUAL组(“Write Page”跳过AUTO组,提示“skip auto!”);op_mode设置为OP_TYPE_AUTO,可设置AUTO组,(“Write Page”跳过MANUAL组,提示“skip manual”)。
  • 设置3DNRAttr中op_mode的Auto或Manual模式后可以调试3DNR对应的参数并生效,若只选择op_mode的Auto或Manual模式3DNR对应的参数并不生效,重新Read后op_mode显示当前生效的模式。
  • 导出的3DNR文件支持参数修改后导入,但不能改变数据解析结构。
  • 3DNR界面排布是根据芯片特性进行排布,各芯片界面存在差异。
  • 板端不会同时保存Auto和Manual模式的数据,所以重新打开PC端工具时,只会读取到一种模式的数据。

FPN矫正

在左侧的调试表树视图中找到带有FPN标识的页面,单击即可看到FPN标定矫正页面如图1。

图 1 FPN标定矫正页面

FPN矫正功能使用前必须优先进行标定操作生成矫正用数据,工具可以通过配置板端版本路径中的config.cfg文件 FPNSaveRaw 来决定是否将标定产生的RAW数据保存成文件。不使能时,保存在工具申请的内存中。

FPN矫正页分为三个 group 如图1。

分别为:

  • fpn_calibrate:设置标定参数及标定。设置好参数后单击Write即可。
  • fpn_correction:使用上一步生成的标定数据结果进行FPN矫正。选择op_type,设置Strength数值及Enable为Enable状态后,单击Write按钮进行板端业务FPN矫正。
  • fpn_correction_attr:在使用PQTools工具或者其他方式进行过一次矫正操作后,可以通过此group进行FPN效果细节参数的调节。

MCF在线标定

在左侧的调试表树视图中找到带有MCF Calibrate标识的页面,单击即可看到MCF在线标定矫正页面如图1所示。

图 1 MCF在线标定矫正页面

MCF在线标定分为两个 group,分别为:

  • Mcf Cal Param:设置标定参数,设置好参数后单击Write即可。
  • MCFCalibrate:使用Mcf Cal Param参数进行MCF标定得出结果,只支持读取。

须知:

  • 若MCF两路分辨率不同时,通过设置mcfRefFrame选择参考帧类型。在MCFCalibrate标定时,先通过VGS转化为与参考帧匹配分辨率后再进行标定得出结果。
  • 若mcfSetCalDataEn为勾选状态,MCFCalibrate标定的结果将设置到当前的媒体业务。
  • Hi3516CV610/Hi3516CV608不支持。

CCM标定

CCM在线调优基本原理

CCM在线调优是对离线标定的补充。在离线标定完成后,CCM在线调优基于离线标定的结果和捕获的CCM模块输入图像,根据用户指定的目标方向,刷新当前色温CCM系数。和CCM离线标定工具相比,在线调优工具纳入其他模块对色彩的影响,保证最终输出图色彩达到客户预期。

Cap Image Online功能

捕获CCM模块在线输入图像。在捕获过程中,工具会自动对ISP PIPE多个模块的参数进行调整,用户会观察到预览页面图像变化。捕获完成后,会自动恢复捕获前的默认配置。推荐用户在捕获图像上选择区域RGB均值作为源,通过拉动HSV或者给定RGB值作为目标。在CCM调优过程中,需要实时观测预览输出,判断调优是否已达标。捕获图像是CCM模块输入图像,调节CCM参数,已捕获的图像不会发生改变。特定光源调优完成后,再次调优特定光源下CCM,务必重新捕获在线图像。

图 1 CCM在线调优界面

CCM可视化界面调优
  1. 选择当前RAW图对应的光源色温,色温列表来自CCM参数设置。标定完成后,该色温下的基础CCM矩阵会被刷新。注意过暗、过亮、饱和度过低的色块不适合做标定。

    图 1 选择光源

  2. 在捕获图像上通过画框或者取点方式取RGB对的输入,同时在左侧HSV色彩空间显示源的位置。在左侧HSV色彩空间中,可拖动点设置颜色,Original点(源色点)仅可通过右键拖动调整位置。

    图 2 取色

  3. 在右侧的源和目标映射区域,显示源和目标的RGB值、HSV值(目标色默认值与源相同)。以降低红色饱和度为例,通过HSV输入框,降低目标的饱和度。

    图 3 设置目标值

  4. 选择CCM标定误差的计算标准,单击Calibrate完成CCM矩阵计算。

    图 4 选择标定误差

    图 5 效果对比: 左图离线标定CCM矩阵效果,右图降低红色饱和度效果

  5. CCM调整任一颜色,对其他颜色表现是有影响的。用户可通过权重设置,在各个颜色间做平衡。

    图 6 权重设置表

  6. Reset表示放弃当前的标定,重新进行标定,Reset在Finish CT Calibration前有效。标定完成后,单击Finish CT Calibration按钮,当前色温下的CCM矩阵被刷新。

    图 7 标定完成

  7. Finish CT Calibration后,需要对当前色温进行再次标定,需要再次执行选择色温,Capture在线图。

  8. 支持对当前色温下CCM做色调,饱和度调整,色彩调整达到预期后,单击Finish CT Calibration,刷新当前色温下的CCM矩阵值。Calibrate和HS Corr相互独立。

    图 8 色调饱和度调整

ISP标定工具

从PQTools工具主界面工具栏中的附加组件下拉框中选择“ISP Calibration Tool”,即可打开标定工具。

概述

由于镜头和图像传感器市场成熟度高,市场上有大量不同光学特征的镜头以及不同电气特征的传感器。ISP中某些模块无法自动对这些特征统一补偿,使得图像的效果与期望效果有一定偏差。因此本标定工具主要以目前仪器设备获得的图像、期望图像等为输入,协助仪器设备最终的输出能够更好地逼近期望效果。

PQTools工具提供了黑电平(BLC、DYNABLC)、NR、ACS、MLSC、CCM、AWB、CLUT等8个ISP模块的参数标定功能。根据各自的算法原理,它们之间有如图1的顺序关系。

图 1 标定模块的流程关系

其中,AWB和CCM标定模块之间不互相依赖,在LSC(MLSC)标定结束后即可进行; NR标定模块在黑电平确认后即可进行,不受其它标定模块影响。

具体的标定操作要求和建议可参考SDK文档《ISP 图像调优指南》。

须知:

标定工具下发板端,通过主界面TOP->Mode Handle设置通路,参考"读写通路设置"。 仅支持非紧凑RAW标定。

标定工具的界面与基本操作

图 1 标定工具界面

如图1所示,绿框区域为导入需要标定的RAW的基本信息及列表,蓝框区域为输入的RAW的基本属性及BLC参数设定,红框区域为各标定算法工作区域。

设置RAW基本属性

在软硬件配置相同的情况下,标定所使用的所有RAW文件,其分辨率、位宽、分量排序的参数通常都是相同的。使用标定工具时,可以通过蓝框区域的Edit Options按钮进行RAW文件的统一配置。如图1所示。

图 1 RAW文件配置对话框

用户需要设置:

  • RAW图像的宽度(最小120,最大8192,必须是2的倍数,标定LSC时必须是4的倍数,否则shading功能会不正常)
  • RAW图像的高度(最小120,最大8192,必须是2的倍数,标定LSC时必须是4的倍数,否则shading功能会不正常)
  • RAW图像的位宽(支持10bits、12bits、14bits、16bits)
  • 分量排序(RGGB、GRBG、GBRG、BGGR)
  • 红外分量替换(IR Pattern,仅用于标定RGBIR sensor,可选择替换常规sensor的Gr或Gb分量。如果基于常规sensor标定,请选择No IR)

设置以后,单击“OK”按钮保存。之后导入的所有RAW文件均会按此设置来进行操作。

须知:

用户导入了任何RAW数据之后,将不能再更改RAW的基本属性。如果需要更改,请删除所有已经导入的RAW数据。

导入RAW文件

完成RAW的基本属性设置后,可通过绿框区域中的“Open RAW Files”按钮,导入标定所需的RAW文件。单击按钮后,选定需要导入的RAW文件,并单击“OK”按钮。之后,工具会弹出确认对话框,如图1所示。

图 1 导入确认对话框

该对话框会列出所有即将被导入的RAW文件的路径,并提供用户选择RAW数据场景的接口。用户可以从以下几种场景中选择一个指定给导入的RAW文件:

  • Color Check 24:24色卡场景,可用于NR、CLUT、AWB、CCM标定;
  • Color Check 140:140色卡场景,可用于AWB和CLUT算法标定;
  • Black:全黑场景,用于黑电平标定(BLC);
  • Flat Field:平坦场景,用于MLSC、ACS标定。

勾选“Use Same Roi”,可沿用上一次导入RAW时的Roi设置。用户指定场景后,单击“OK”按钮,即可导入文件。被导入的RAW数据将在工具主界面左边的列表中显示。

图 2 列表显示导入的RAW数据

列表除显示导入的RAW数据的基本信息,还提供了一些操作接口:

  • 第一列可进行勾选,以被标定模块导入使用;勾选“Select All”可选择所有RAW。
  • Tag列为RAW数据的别名,可单击进行修改(默认为导入RAW的文件名)。
  • PV列为预览按钮,单击可预览图像。对于Flat Field场景的RAW数据,工具显示其黑白图像,否则显示插值运算后的彩色图像;对于24或140色卡场景的RAW数据,还可以进行色卡选框,选框调节默认为“Coarse”模式,可统一调节所有选框的大小和位置。Coarse复选框未勾选时为“Fine”模式,此模式下可独立调节单个选框的大小和位置,也可多个选框一起调节大小,支持选中X、Y滑块后可按键盘上下或左右键精调红色方框的大小,支持单击“Import ROI”、“Export ROI”按钮导入导出红色方框的大小和位置。

    注意:“Coarse”模式下,将导出来的文件再导入,实际生效的roi区域的值与导入的值会存在细微的误差。建议使用“Fine”模式进行导出导入。

  • Temp.列为色温值,可预先设置,并导入到AWB和CCM标定中使用。

  • CR列功能详情见使用标定结果矫正其他RAW的功能。
  • Del列为删除按钮,可以将导入的RAW数据从列表中清除。
标定配置保存导入

保存导入功能支持用户保存和导入标定工具现场配置(标定配置,文件路径,间接数据,辅助数据等),原则上只保存和导入用户手动输入数据,不保存和导入标定后生成的数据。

  • 单击“Save”按钮,将配置信息保存到文件名格式为“芯片名_ISPCalibration_时间戳.xml”的xml文件中。
  • 单击“Load”按钮,将选择的配置文件导入工具后,工具恢复之前的配置。
  • 保存的XML文件的格式不可修改,可以修改参数值(不建议修改)。

黑电平的标定

黑电平标定基本原理

模拟信号很微弱时,有可能不被A/D转换出来,导致光线很暗时,图像细节丢失。因此,Sensor会在A/D转换前,给模拟信号一个固定的偏移量,保证输出的数字信号保留更多的图像细节。

黑电平校正模块就是通过标定的方式,确定这个偏移量的具体值。后续的ISP处理模块,需要先减掉该偏移值,才能保证数据的线性一致性。

须知:

因为黑电平数值与后续的图像的插值处理密切相关,因此工具目前进行了操作限制:若RAW数据列表中存在24色卡或140色卡场景的RAW数据时,将不能进行黑电平的更改。因此若用户需要更改或标定黑电平值,请在导入色卡RAW文件之前完成。

黑电平标定支持的模式

在ISP标定工具中,黑电平支持两种形式的标定:手动输入黑电平模式以及使用黑帧进行自动黑电平标定模式。

如果在进行标定之前,事先已获取了sensor的黑电平参数(通过Sensor介绍文档,或者使用其他黑电平标定工具获得),则可单击标定工具右上角的Black Level Settings按钮,在弹出的对话框中,直接输入各分量的值。之后的其他标定模块在进行标定时,工具会根据需求自动调用此数值。手动输入黑电平模式的界面如图1所示。

图 1 黑电平设置对话框

黑电平标定序列采集要求

如果事先未获取到sensor的黑电平参数,或者需要获得更精确的黑电平数值,本标定工具亦提供了自动标定黑电平的模式。在标定之前需要用户手动采集黑电平标定所需输入的RAW,采集步骤如下:

  1. 将设备的光圈完全关闭,或者使用镜头盖将镜头输入遮挡,确保无光线进入;
  2. 通过PQTools的Exposure Attr标签,手动设置整个系统的增益为1x。具体操作方法如下为:将Exposure和Exposure Manual选框中的所有op_type设置为OP_TYPE_MANUAL,同时将Exposure Manual选框中的a_gain、d_gain、isp_d_gain手动设置为1024;
  3. 使用Dump Tool抓取一个RAW文件。

通过以上三步,即可得到黑电平标定需要的RAW。采集到的RAW如图1所示。

图 1 黑电平输入RAW示意图

黑电平标定步骤

采集到标定算法所需的RAW后,用户可按照以下方法进行黑电平自动模式的标定:

  1. 按照"标定工具的界面与基本操作"节的描述,在标定工具主界面导入RAW文件,选择为Black场景,并勾选。
  2. 单击Black Level Calibration按钮,在弹出的对话框中单击确定。
黑电平标定结果说明

完成标定步骤后,标定工具左下角的状态栏中会显示Ready字样,此时打开Black Level Settings对话框,会发现原先为0的各分量黑电平上已经有值,如图1所示。

图 1 黑电平标定结果示意图

生成的黑电平值与RAW数据位宽匹配。当前标定工具不支持自动导入黑电平,因此用户需要手动将标定结果配置到对应的xxx_cmos_ex.h文件以及PQTools中,具体用法请参考《ISP开发参考》。

NR标定

NR标定基本原理

噪声是图像传感器的主要参数。对于任何一个图像传感器,每个像素都存在一定的感光模拟误差和模数转换误差,因此输出的数据也存在误差,一般意义上称为图像传感器噪声。

影响图像传感器系统的噪声主要有散粒噪声、热噪声和固定模式噪声等形式。为了使得NR运行中更加精准地区分噪声和细节,需要一个模型来描述图像传感器本身的噪声特性。

为了得到图像传感器的噪声模型,需要在灯箱环境下拍摄24色卡。 在一个ISO值下,拍摄得到的24色卡中每个色块对应一个亮度值,通过对每个色块的“亮度均值”和“亮度方差”进行分析,可以建立“亮度 — 亮度分布密集程度”这样的模型去描述图像传感器的噪声特性。若每个非过曝色块内亮度分布非常集中,则说明该图像传感器整体噪声小。当然,对于不同的ISO值,噪声强度是不一样的,所以需要进一步知道各个ISO下的噪声强度。

在NR运行时,若当处理块内“亮度方差”与“标定值(色卡块内的平坦区域)”接近,则表示当前处理块内不存在“可靠”细节,反之,则认为存在“可靠”细节。

NR标定模式介绍

新升级的标定算法支持适配HNR/BayerNR的简单模式simple mode。在简单模式下,采集标定数据的时候,dgain固定设为1倍,只需要采集ISO100到again打满的ISO档位下的RAW数据进行标定即可。简单模式不仅数据采集更加方便,而且能够避免之前标定工具在高ISO下受噪声截断影响带来的标定结果不准确的问题,所以我们推荐使用新的简单模式进行标定。

NR标定序列采集要求

NR的标定数据采集的重要点如下:

  1. 前期准备包括:D65光源下的灯箱、需要标定的镜头+sensor、标准24色卡。色卡如图1所示。

    图 1 标准24色卡

  2. 将色卡固定在灯箱里面,灯箱照度保持在400lux左右,保持照度均匀。将镜头固定,调整镜头与色卡的距离,使得拍摄到的色卡覆盖整个成像屏幕的1/2左右,如图1所示。

  3. ISO设置:

    将镜头光圈调节到最大,操作人员设置所需要的ISO值,然后调节曝光时间,使拍摄的色卡左下方色块的G分量亮度达到最大值(跟位宽有关,12bit为4095)的80%(比如,dump出一帧RAW,用imageJ打开,用鼠标框出亮色块,ctrl+H快捷键查看色块的直方图分布,计算色块的最大亮度与实际的最大亮度比值)。

    注意:左下方色块不能出现过曝,即所有亮度值都小于最大值。

  4. 亮帧图像采集:

    当图像满足步骤2中要求时,抓取N帧RAW数据(建议N取30帧),N帧RAW存放在同一个文件里,名字按照filename_bright_isoxxx.raw的方式命名(filename表示原文件名,xxx为测得RAW的ISO值)。注意:拍摄过程中,请不要移动镜头和色卡,色卡附近不要有人、物体移动,以免影响环境光使抓取的RAW数据帧与帧之间数据不一样。

  5. 暗帧图像采集:

    保持ISO不变,通过下述方法降低大约4EV曝光量(任选一种):光照强度减小为原来的1/16;曝光时间减小为原来的1/16;光圈大小减小为原来的1/4;在镜头前盖上1/16减光片。然后抓取N帧RAW数据(建议N取30帧),文件命名filename_dark_isoxxx.raw,拍摄注意点与亮帧图像采集相同。

  6. 重复步骤3-5,直到获得所有需要的ISO范围。ISO取值范围为[100左右],[200左右],[400左右], [800左右],[1600左右], [3200左右],[6400左右],[12800左右],[25600左右],[51200左右],[102400左右],[204800左右],ISO的取值范围覆盖尽量广。

    注意,新的NR标定工具推荐使用简单模式,这时只用采集到again 打满对应的ISO即可,后续ISO可不用采集(比如again max=62416,这时只需要采集到ISO=6095即可)。

  7. 黑帧图像采集:

    采集完各个ISO档位的亮帧和暗帧数据后,需要采集黑帧数据,将所有外界光源关闭,并完全遮挡住镜头(可以使用镜头盖),和步骤6相同的ISO采集数据。ISO档位要求从ISO100采集到对应again打满的ISO档位。文件命名可参考filename_black_iso150.raw。

须知:

  • 拍摄过程中,请不要移动镜头和色卡,色卡附近不要有人、物体移动,以免影响环境光,从而影响RAW数据质量。
  • 由于NR标定算法需求,每个ISO档下固定需要采集亮,暗,黑帧数据(simple mode),帧数分别不低于30帧,最高帧数不高于500帧,由于帧数过多会导致标定时间较长,所以标定数据的帧数建议取30帧。
  • 同一ISO档,NR同时参考亮暗帧标定时,亮暗帧的标定结果会进行融合,最后标定结果仍是一组参数,而不是分开的两组参数。
NR标定工具界面介绍

采集图像后,打开ISP标定工具,并切换至NR页面,即可看到NR标定工具的界面。

图 1 NR标定工具界面(Hi3516CV610)

图 2 NR标定工具界面(Hi3519DV500)

NR标定工具界面可以划分如下三个区域:

  • RAW图像显示区域:在图中绿色框区域,对选中的RAW图像进行显示。用户可以根据图像显示手动调节标定区域,使得红色标定框位于各个色卡范围内;按钮“Import Bright Raw”用于导入亮帧RAW数据,按钮“Import Dark Raw”用于导入暗帧RAW数据,按钮“Import Black Raw”用于导入黑帧RAW数据,被导入的RAW数据名称会显示在下方红色方框的对应区域内。另外,支持从文件名中解析亮帧和暗帧RAW文件,通过“Dark”,“Bright”,“Black”判断RAW属性,解析暗亮帧RAW文件支持全大写,全小写和首字母大写,如果单击导入按钮时文件属性不匹配会报错提示。Again Max值可以使用“Get Again Max”按钮从板端获取,也支持手动输入配置;DCG全称是Dual Conversion Gain,如果sensor支持Low Conversion Gain或者High Conversion Gain并且在标定过程中开启了,需要配置开启时对应ISO值,否则设置为0,DCG需要大于或等于0,小于Again Max对应的ISO值。
  • 标定RAW数据列表区域:在图中红色方框区域,会显示被导入进行标定的RAW数据文件名称,对应的ISO值以及RAW数据的帧数。导入的亮暗帧文件会分Bright和Dark显示,并会根据输入文件的ISO值对应进行配对。黑帧会在Black显示,不与亮暗帧配对。
  • 标定结果显示区域:在图中蓝色框区域,能够进行标定的操作和标定结果的查看。单击“Calibrate”开始进行标定,“Save NR K Curve”和“Export Header”分别用于导出标定过程量(曲线数据)和导出标定结果,标定完成后,标定过程量会以折线图的形式显示在图中。 按钮AIBNR Result judge 弹出标定结果评分页面。

    须知:

    • 工具界面上配置的Again Max(ISO Value)需要按照sensor最大模拟增益对应的ISO值进行配置,单击Get Again Max按钮从板端获取的值会自动转换成ISO值。
    • 导入的RAW文件命名ISO值前需要加上"ISO"标识,Import之后才会自动识别显示出ISO值,否则Import后要手动输入ISO值。如果Import RAW文件后ISO值不识别,建议先导入全部RAW数据之后再设置ISO值。
    • DCG值由sensor的寄存器配置决定,sensor手册中会有DCG相关寄存器的描述,客户应当阅读sensor手册并读取DCG相应的寄存器值来确定具体DCG值,如果不提供,我们不能从数据中知道该信息,只能通过标定的结果大致判断是否存在DCG。
NR标定步骤

使用标定工具进行NR标定的步骤如下:

  1. 参见"黑电平的标定"章节,确定待标定设备的黑电平值;
  2. 在工具最左侧的RAW文件列表中,导入刚抓拍好的黑帧RAW图像和24色卡类型RAW图像;
  3. 勾选参与标定的RAW图像,并在NR标定界面单击“Import Bright Raw ”和“Import Dark Raw”和“Import Black Raw”按钮分别将它们引入到标定界面,每种类型至少导入3档ISO文件才支持标定;
  4. 修改每个24色卡类型RAW文件的24色卡选框、ISO值(如文件名中带有_isoxxx字样的标识,工具可自动解析其ISO值)和帧数。文件帧数可以被自动识别,也可以手动输入。
  5. 单击标定界面右上角的“Calibration”按钮。

标定结束后,工具将显示标定出的ISO/K曲线图,如图1所示。

图 1 NR标定结果

须知:

标定噪声时如果报错提示某个ISO档的暗帧数据过亮,建议先对比各个ISO档的数据来确认一下暗帧数据的亮度是否正常。

NR标定结果的显示和导出

标定结束后,用户可以单击“Export Header”按钮,将当前的标定结果保存为.h文件。该.h文件中的内容可以配置到xxx_cmos_ex.h文件,具体用法参考《ISP开发参考》。

标定完成后,工具会显示ISO/K曲线,客户可以进行标定结果的比对和查看,也可以单击“Save NR K Curve”导出ISO/K数据。

图 1 NR标定在线生效功能

图 2 Import Header导入的标定结果数据

Hi3516CV610新增NR标定在线生效功能(如图1所示)。单击“Import Header”按钮,可将当前标定结果的.h文件导入PQTools工具,并弹窗显示导入的标定结果数据(如图2所示)。最后,单击“Apply To Board”按钮,将NR标定结果成功下发板端即可在线生效NR标定参数。

须知:

新版本标定工具的标定结果的形式有所变化,工具对原始各个ISO档位的kb值进行拟合后,分别将kb各自的拟合参数进行输出。

NR标定结果说明

NR标定的结果是用来估计噪声水平的,标定结果直接影响到NR的去噪效果,以图1为例,左图没有对噪声模型参数b做标定,右图对噪声模型参数b做了标定,可以看到,右图中的颗粒噪声明显改善。

图 1 NR 标定图像效果的影响

须知:

如果估计的噪声水平比较低,调节BNR时效果不明显,去噪不充分;如果估计的噪声水平比较大,去噪效果明显,但是容易造成模糊;因此需要先进行NR标定,配好标定结果后,再去调BNR。

NR标定结果验证

为了对噪声模型标定结果进行验证,标定工具支持在线对标定参数进行验证,具体方式为:标定工具在线连接板子,获取板端标定参数,并计算出当前ISO的kb值,绘制出kb曲线,同时支持客户在线抓RAW(最小2帧),并在RAW上面选取相关区域进行噪声方差计算,将计算结果和标定参数理论计算值进行对比,给出相应的误差比例,当误差比例过大时,说明当前标定参数不准确,建议客户重新进行噪声模型参数标定。

进行NR标定结果验证的步骤如下:

  1. NR标定结果验证是连接单板在线分析的,使用之前需要先在单板上运行业务, PQ工具连接到单板;
  2. 从PQ工具主界面工具栏的外挂插件下拉框中选择“RAW YUV Analyzer”,选择右上角Online debug进入NR标定结果验证界面;
  3. 单击Online debug下方的BITS下拉框选择(8-16)bits,单击Prepare Data抓拍RAW图像,等待抓拍后的图像载入界面。如果图像载入前就已有划定的ROI区域,在图像载入界面后,会重新计算每个区域的均值和方差,并刷新到左侧列表;
  4. 用鼠标左键单击划定合适的平坦区域,左侧列表会显示该区域的均值和方差结果,(如果默认的图像大小划定区域困难,滑动鼠标滚轮来缩放或调整图像,Clear All ROI按钮可以清空左侧列表和图像的划定区域);
  5. 单击左下角的Create Chart,工具将显示NR标定结果曲线和验证区域的结果图像,如图1显示。

图 1 NR 标定结果验证

如 图1所示,在线抓RAW验证后,可以观察红色的采样点和蓝色的理论标定曲线之间的吻合程度,如果偏离较远,说明标定参数可能存在问题。客户也可以参考工具计算给出的最大相对误差比例max_err,如果max_err>50%,建议客户重新审视标定参数的正确性。

NR标定结果评分

为了客观评价NR的标定结果对当前的这个Sensor适用性,工具增加了标定结果评分功能。

图 1 NR标定结果评分界面

NR标定结束后单击AIBNR Result Judge按钮弹出评价窗口如图1所示。

  • 正常标定结束,默认显示当前标定结果评分。
  • 支持导入历史导出头文件结果进行评分。通过Result From下拉菜单进行切换,单击Browse导入文件。
  • File Path显示导入文件路径,不可修改。
  • 选择Bin Name模型名称、Mode模式。
  • 支持修改入参 Min ISO 以及 Max ISO 来重新进行评分。
  • 评分分为三档:SUPPORT(正常可用), RISK(有一定风险),NOT SUPPORT(不支持)。当评分不是SUPPORT时, 请参考最下方建议进行处理。
  • 单击Browse导入文件,切换Bin Name、Mode,修改Min ISO、Max ISO会刷新评分。
K Curve To Header使用说明

K Curve To Header功能支持把Save NR K Curve保存的文件,转换成Export Header导出文件的格式。NR标定参数是由kb值计算得到的,因此当无法找到NR标定结果文件时,如果能提供kb值文件,那么就可以由kb值文件计算得到NR标定结果。注意:由于保存在文件中的kb值存在精度损失,因此转换得到的NR标定结果一般会有一点差异,但是这个差异一般很小,不影响NR标定结果的使用。

MLSC标定

MLSC标定基本原理

通过研究发现,在Lens Shading现象中,目标点的亮度衰减趋势符合余弦四次方定律。对于同一个镜头模组,其成像亮度只会随着成像点和光轴之间的成像角度变化而变化。并且其变化趋势为:与成像角度的余弦值的四次方成正比,正比系数通过镜头的透镜直径以及焦距确定。

因此对于同一镜头模组,其标定结果需要满足以下两个条件:

  • 标定结果可以有效反映出亮度衰减趋势;
  • 标定结果可以用来恢复图像区域中所有目标点的亮度。因此本模块的标定结果需要使用Mesh的网格方式进行储存。

同时需要注意的是,由于不同光源或者不同色温下光的频谱不同,加上IR-cut Filter的影响,所以即使是同一镜头模组,其在不同光源下的Color Shading特征曲线亦不相同,因此为满足在不同光源或色温下的Color Shading的校正要求,需要在不同光源或色温下对MLSC进行校正。

由于Color Shading的影响,对于某些Color Shading现象比较严重的镜头或者sensor,在做AWB标定之前需要对AWB的标定采集序列进行MLSC校正,以校正结果作为AWB标定算法的输入才能得到准确的AWB标定结果。

MLSC标定序列采集要求

MLSC进行标定时,需要多光源的灰度图像。具体的采集要求如下:

  • MLSC模块的标定序列采集对象要求必须是亮度分布平坦且均匀的光源,同时采集对象必须保持平滑无纹理。理想情况下应采用辉度箱、积分球、DNP灯箱进行采集,其他可以作为MLSC标定序列采集对象的场景有:灯箱灰内壁(无明显划痕或污迹)、透过毛玻璃而达到均匀分布的光源。如果条件所限,也可以是任意能达到亮度均匀分布的灰度平面(类似白墙),但是标定的准确程度可能会受到影响。
  • 如果采集对象为灯箱灰内壁,由于灯箱光源分布在内壁上有一定可能性分布不均匀,故最好保持镜头对准光源中心处,并尽量保证镜头捕获区域光源分布平坦。
  • 采集序列格式为RAW格式,只需1帧即可,采集过程中,光源照度在400 lux左右,镜头中心亮度需保持为最大值(255)的70%,并且使用需要标定的镜头。
  • 对于需要在不同光源下使用的场景,需要在不同光源下进行标定,常用的光源有TL84、CWF、A、D65、D50等,用户请根据使用需求选择光源进行标定。
  • 对于不同镜头模组,需要进行重复标定。

具体的采集步骤如下:

  1. 将镜头对准目标区域,并保证环境不被干扰;
  2. 调节光源亮度,使得镜头中心亮度平均值为最大值的70%;
  3. 使用Dump Tool进行RAW数据的采集,只需1帧即可;
  4. 更换光源,重复上述步骤。

采集后的MLSC标定序列如图1所示。

图 1 MLSC标定序列图像

MLSC标定工具界面介绍

将ISP标定工具的主功能标签页切换到MLSC,即可看到MLSC标定的界面。MLSC标定的主界面如图1所示。

图 1 MLSC界面

如主界面图1所示,MLSC标定工具主要可以分为三部分:控制区(1绿色方框所示)、显示区(2蓝色方框所示)、列表区(3红色方框所示)。

  • 控制区:工具进行标定的主要功能均由此处入口,以下将一一描述。
  • 显示区:显示输入图像以及MLSC标定后的输出图像。
  • 列表区:打开的输入图像均会在此处显示,并提供下发标定结果至板端的功能。
MLSC标定步骤

在本芯片中,MLSC标定算法增加了适配鱼眼镜头的标定功能。具体请参考"使用MLSC标定鱼眼镜头图像"节内容。

针对普通镜头的标定步骤如下:

  • 参见"黑电平的标定"章节,确定待标定设备的黑电平值;
  • 在工具最左侧的RAW Data列表中,导入Flat Field场景的RAW文件。图像导入后,在列表区会显示被导入图像的别名,并提供相关功能按钮(相关功能按钮请参考附件)。同时显示区将显示最后一个被导入的RAW图像,如图1所示;

图 1 导入RAW数据后的MLSC界面

  • 输入标定参数:MeshScale的值,MeshScale的具体取值方法和含义请参考附录内容;
  • 参数配置完成后,可勾选Show Grids on Image勾选框,确认在显示区图像上看到(GridSizeX-1)x(GridSizeY-1)的网格方块,其中Hi3519DV500为32x32、Hi3516CV610为32x18;
  • 单击“Calibrate”按钮即可进行MLSC标定。

须知:

在对普通镜头的图像进行标定时,请不要勾选FishEyeEn,参数CenterX、CenterY、Radius是与鱼眼镜头图像标定相关的参数,请参考"使用MLSC标定鱼眼镜头图像"节使用MLSC标定鱼眼镜头图像的描述。

MLSC标定结果说明

标定结束后,工具会生成MLSC标定参数,并且显示区会切换至Output页签,显示标定参数作用于输入图像后的输出图像,可根据输出图像大致判断校正的准确程度,然后修改参数进行调试,附录2中将介绍如何验证校正结果的准确性。

如果同时导入多张图像一次性标定,标定完成后,工具会在列表区将所有标定结果显示出来,此时单击列表区中的图像,会在显示区显示对应的输出图像。

标定后的MLSC界面如图1所示。

图 1 MLSC标定结果说明

由于MLSC标定算法在整个标定流程中的特殊位置,标定工具提供了以下标定结果的使用功能:

  • 标定结果导出功能
  • 使用特定标定结果矫正其他RAW文件的功能
  • 将标定结果下发至板端的功能

须知:

在使用MLSC标定结果之前可参考"附录2:MLSC标定结果的有效性验证"中有关验证标定结果正确性的方法,确认正确后即可进行其他RAW的矫正。

标定结果导出功能

在对图像进行标定后,可以单击“Export Head File”和“Export Data File”按钮将标定参数导出为本地文件:

  • 导出.h文件,生成文件包含一个结构体定义:

    isp_shading_attr记录了每幅图像的增益值以及LSC校正参数(包括MeshScale和横纵方向上分区大小划分XGridWidth,YGridWidth)。

  • 导出data文件,生成若干txt文件,包含所有RAW数据各颜色通道的Mesh Shading表格。

若需将数据应用至各类sensor的xxx_cmos_ex.h(Hi3516DV500)或xxx_cmos_param.h(Hi3516CV610)文件,直接修改文件中结构体isp_cmos_lsc的定义,具体用法请参考《ISP开发参考》。

须知:

如果列表中存在还未进行标定的RAW数据(多见于标定后再导入新的RAW数据到MLSC界面),将不能导出头文件。

使用标定结果矫正其他RAW的功能

本功能主要用于AWB和CCM等算法的标定。

标定完成后,可以使用任意一个RAW文件上的标定结果对标定工具导入的其他RAW文件进行Shading校正(如AWB和CCM使用的RAW,在某些Shading严重的镜头下需要先进行Shading校正)。操作步骤如下:

  1. 在MLSC标定工具的RAW文件列表中,单击CR一栏中的按钮。
  2. 在弹出的对话框中,单击ReadParamFromBoard按钮从板端获取isp_shading_lut_attr标定数据,勾选Use Board Lut按钮,后续校正将使用该板端数据矫正RAW文件,若不勾选则使用标定后的标定数据矫正RAW文件;
  3. 在下拉框选择需要进行校正的RAW数据项(须提前导入标定工具);根据需要,可以勾选Save As按钮,将校正生成的RAW文件保存到设置的路径下;
  4. 在编辑框对即将生成的校正后RAW数据命名;
  5. 单击“OK”按钮。

之后标定工具的RAW文件列表中会出现刚刚命名的RAW数据,单击PV一栏中的按钮即可看到Shading校正后的效果。

将标定结果下发板端的功能

标定完成后,选取一个已完成标定的RAW数据项,单击AP一栏中的按钮,即可将这个RAW文件上标定出的Shading矩阵下发到板端,板端上的两组数据都取相同图像上的值。

使用MLSC标定鱼眼镜头图像

MLSC标定算法在本芯片中亦增加了针对鱼眼镜头图像标定的功能。相较于普通镜头的标定流程,使用标定鱼眼镜头的功能时需要额外注意的情况如下:

  • 标定序列采集要求:由于鱼眼镜头FOV角度极大,因此用来标定的序列图像请使用积分球等设备采集;
  • 标定步骤要求:MLSC标定算法针对鱼眼镜头的标定序列进行了算法优化。因此在进行标定鱼眼镜头序列标定的时候需要勾选控制区中的“FishEyeEn”选择框。并设置CenterX、CenterY和Radius三个参数。

  • 鱼眼镜头标定输入参数

  • 鱼眼镜头标定步骤

鱼眼镜头标定输入参数

请参考"鱼眼标定工具"鱼眼标定工具参考小节所述,获取鱼眼镜头的Center和Radius参数,并填入控制区中对应位置:

  • CenterX:鱼眼图像光学中心点的横坐标。
  • CenterY:鱼眼图像光学中心点的纵坐标。
  • Radius:鱼眼图像的参考半径,可不严格按照实际的半径来设置,参考半径是标定算法用来控制对鱼眼图像边缘校正的强度。当设置的半径过大时,边缘会过度校正,有白色块出现;当设置过小时,边缘会存在校正不足的可能。该参数需要根据标定出来的实际结果来进行调试,取最优的半径。
鱼眼镜头标定步骤

以3000x3000分辨率的鱼眼图为例,如图1所示,未设置参数时,CenterX/Y默认取图像的几何中心点,Radius默认取宽的一半。

图 1 MLSC鱼眼标定示意图1

取鱼眼标定工具获取的标定结果Center: (1555, 1558) Radius: 1558填入,单击Calibrate进行校正,如图2所示。

图 2 MLSC鱼眼标定示意图2

如图3所示,可以看到边缘部分有过亮区域,手动调节Radius,比如改为1458,单击Calibrate,过亮区域消失,但是同时要注意,Radius设置过小,边缘会校正不足。

图 3 MLSC鱼眼标定示意图3

鱼眼镜头的标定结果使用方法与普通镜头结果一致,可参考"MLSC标定结果说明"节内容。

附录1:MLSC参数说明
  • MeshScale:为校正增益精度控制参数。

    当MeshScale取值为0~3时,增益精度从高到低,同时增益的取值范围从小变大;当为4~7时,精度从高到低,增益的取值范围从小变大,与取值为0~3不同的是,此时增益最小值为1倍增益。

    具体MeshScale的取值和增益精度/增益取值范围对应关系如表1所示。

表 1 MeshScale的取值和增益精度/增益取值范围对应关系

MeshScale

增益表的数据格式

增益取值范围

1倍增益对应增益配置值

0

u1.9

[0,2)

512

1

u2.8

[0,4)

256

2

u3.7

[0,8)

128

3

u4.6

[0,16)

64

4

u0.10

[1,2)

0

5

u1.9

[1,3)

0

6

u2.8

[1,5)

0

7

u3.7

[1,9)

0

须知:

在能够完全校正的情况下,增益精度MeshScale应该尽量选择精度高的档位,提高校正的准确度,例如当MeshScale为0或4时都能校正,应当选择4。对于某些镜头阴影特别严重的极端情况下,存在无法完全校正的可能,当选择较大增益倍数(如MeshScale为3)校正时,可能会出现暗条纹或格子,此时需要降低增益倍数来提高精度(设MeshScale为 2或7),重新标定,直到暗条纹或格子消失为止。

  • GridSizeX & GridSizeY:这两个参数无法配置,仅在界面上作为显示当前图像分区数目使用。GridSizeX和GridSizeY分别表示横向与纵向上区域的划分的大小,表示有33 x 33个标定的点。
附录2:MLSC标定结果的有效性验证

有两种方法可以查看MLSC标定结果是否正确,在实际操作中可根据具体条件进行选择。

  • Method 1

    将标定结果下发板端后,可以用PQTools的点播工具查看标定的结果,可粗略观察中心区域与左右两边亮度和颜色的图像质量,将鼠标放置图像上会显示当前像素点的值(工具左下角),比较这些点的差异。

  • Method 2

    将标定结果下发板端后,使用Dump Tool导出JPG或BMP格式的图,使用专业的图像质量测试工具进行测试,如Imatest当中的Flat-Field模块可用来测试Shading的亮度与颜色偏差的指标,亮度平整度在98%以上,色度偏差ΔC最大小于1,可认为指标达标,偏差在人眼能够察觉的范围之下。

    当出现偏差较大时,请首先检查黑电平是否配置正确,BayerPattern是否配置正确,若还是有偏差,则检查MeshScale设置的增益范围是否够用,不够则需要重新进行标定。

ACS标定

ACS标定基本原理

由于不同光源或者不同色温下光源的频谱不同,同时较小的镜头模组的CRA角度较大,加上IR-cut Filter的影响,在不同光源下的Color Shading特征曲线表现不一致,导致了Color Shading的产生。这种情况下,MLSC标定无法完全解决Color Shading问题。为了校正有Color Shading的镜头和sensor组合,在不同光源下,需要进行ACS(Auto Color Shading)标定。

为了准确获取镜头和sensor在各种光源下的Color Shading特征曲线,需要在各种光源下进行RAW数据采集,常用的光源类型有:H,A,D50,D65,TL84,D75,CWF,U30,U35,10K。

ACS标定序列采集要求

ACS进行标定时,需要各类光源的灰度图像,基本的采集要求和MLSC标定的采集要求一致,同时也有一些特定的采集要求:

  • 请首先确认镜头模组的shading衰减曲线在RAW图上是呈左右和上下对称的,这种情况下采集的环境必须是理想的平坦光源,对于不对称的镜头模组,标定的效果会不太理想,同时影响后续的产线标定。
  • ACS模块的标定序列采集对象必须是亮度分布平坦且均匀的光源,在7到10种光源下进行标定。建议选择A、D50、D65、TL84、D75、CWF这6种光源作为必选,其他如H、U30、U35、10k等可根据产品的应用场景和需求额外选择,确保总的参与标定的光源种类大于等于7种。
  • 为了保证在多种光源下采集的RAW图的平坦均匀性,有两种方式:
    • 方法一,取一张灰卡,让光源均匀照射在灰卡上,用照度计测量镜头视场内中心与四周的照度,使其差异在5%以内,并拍摄灰卡;
    • 方法二,让镜头正对光源,用毛玻璃扩散片(Diffuser)盖住镜头,采集数据。

具体的采集步骤如下:

  1. 将镜头对准目标区域,并保证拍摄区域光照的均匀性;
  2. 保证亮度足够并且不过曝,使用Dump Tool进行RAW数据的采集,只需1帧即可,把采集下来的RAW文件命名加上对应的光源;
  3. 更换光源,重复上述步骤,直到采集完所需的光源为止。

一个典型的Color Shading标定场景(未进行LSC校正)在点播工具下如图1所示:

图 1 ACS标定序列图像

ACS标定工具界面介绍

将ISP标定工具的主功能标签页切换到ACS,即可看到ACS标定的界面。ACS标定的主界面如图1所示。

图 1 ACS界面

如图1所示,ACS标定工具主要可以分为三部分:

  • 控制区(1绿色方框所示):工具进行标定的主要功能均由此处入口,以下将一一描述。
  • 显示区(2蓝色方框所示):显示ACS标定结果。
  • 列表区(3红色方框所示):显示标定用的RAW文件,可显示LightType,进行选择或删除操作。
ACS标定步骤

在本芯片中,针对镜头的标定步骤如下:

  1. 参见"黑电平的标定"章节,确定待标定设备的黑电平值;
  2. 在工具最左侧的RAW Data列表中,导入Flat Field场景的RAW文件。可识别RAW文件名进行LightType选择。图像导入后,在列表区会显示被导入图像的别名,并提供相关功能按钮(相关功能按钮请参考附件)。同时显示区将显示标定结果,如图1所示。
  3. 在列表区勾选Color列的RAW文件进行标定,默认导入即勾选。

说明:

RAW文件名带'_H', '_A', '_D50', '_D65', '_TL84', '_D75', '_CWF', '_U30', '_U35', '_10K'字段,导入时LightType可自动识别。 ACS标定是离线标定,不下发板端。

图 1 ACS标定结果

输入标定参数:

  • R_Min:[-1.0000,1.0000], 默认值-0.5000;
  • R_Step: [0.0000,1.0000], 默认值0.1000;

  • B_Min: [-1.0000,1.0000], 默认值0.0000;

  • B_Step: [0.0000,1.0000], 默认值0.1500;
  • Color那一栏通常需要全选;
  • 参数配置完成后,可进行ACS Color Shading标定,此时其余按钮灰显;
  • 单击“Calibrate Color Shading”按钮即可进行ACS Color标定。
  • 标定完成后,可以单击“Export Head Data”按钮导出头文件。
ACS标定调试

为了使ACS标定的结果更加准确,标定一次后,需要根据光源点的分布表来调整R_Min,R_Step,B_Min,B_Step四个参数,光源分布表是标定后的模型所能够校正的光源范围的集合,横坐标是B分量,纵坐标是R分量。

图 1 ACS标定后的光源分布表

光源的分布越集中,说明可校正的标定光源外的范围越大,但是校正的精度会降低;光源分布越分散,说明可校正的标定光源外的范围越小,但是校正的精度会提高。

总体的调试策略是调整这四个参数,调整标定光源的分布,达到校正范围与校正精度之间的平衡。N点表示的是最接近没有Color Shading时的情况,当在光源点坐标范围内,也就是不在边界线上时,表示是无Color Shading的情况。

R_Min,R_Step两个参数控制R分量上光源的平移和缩放,B_Min,B_Step两个参数控制B分量上光源的平移和缩放。当Min参数从小变大时,R纵坐标光源点整体会向下移动,B横坐标整体会向左移动;当Step参数增大时,光源点的分布就更集中,Step参数减小时,光源点的分布就更分散。

参数调整对光源点分布表的影响如图1所示。

图 2 R_Min增大

图 3 R_Step增大

图 4 R_Step减小

图 5 B_Min增大,R_Min增大

图 6 B_Step增大

ACS标定结果说明

标定结束后,工具会生成ACS标定参数,参数无下发板端功能,需手动配置到xxx_cmos_ex.h(Hi3516DV500)或xxx_cmos_param.h(Hi3516CV610)文件中编译并运行查看效果,可以单击“Export Head Data”按钮将标定参数导出为本地头文件:

  • 导出.h文件,生成文件包含一个结构体定义:
  • ot_isp_cmos_acs,其中包含了ACS模块的开关,ACS模块的校正强度,标定参数结构体ot_isp_acs_calib_param,Y_Shading Lut表结构体ot_isp_acs_y_shading_lut,Color Shading Lut表结构体ot_isp_acs_color_shading_lut。

需将数据应用至各类sensor的xxx_cmos_ex.h(Hi3516DV500)或xxx_cmos_param.h(Hi3516CV610)文件,直接在文件中添加结构体ot_isp_cmos_acs的定义,具体用法请参考《ISP开发参考》。

AWB标定

AWB标定基本原理

AWB标定,即根据sensor在数个标准光源下的白点特征(R/G,B/G),计算最佳普朗克拟合曲线和色温拟合曲线。采用这个办法,可以获得较为理想的AWB算法的输入。

AWB标定序列采集要求

AWB标定算法所需RAW可以在室内实验室环境下采集(光源类型和光照亮度需可控),具体采集时需要准备的环境如下所示:

  • 采集设备:标准X-Rite 24色卡、照度为600Lux的多种均匀光源(左右两侧双光源,光源与色卡平面的夹角在25°- 45°),需要标定的设备、色温计等。在光源类型的选择上,请尽量满足高(6500K以上),中(5000K左右)、低(2300K左右)色温至少各有一组。最基本的需要使用D75(7500K)、D50(5000K)和A(2856K)三组光源;
  • 室内标定之前,可在室外自然光环境采集5000K附近的24色卡RAW,以提高标定的准确性;
  • 推荐在实验室灯箱场景抓取八组不同色温下24色卡的RAW(D50、D75、A、TL84、10K、U35、CWF、D65) 以及室外场景抓取D50色温24色卡的RAW。
  • 采集之前需要通过设置Exposure Attr中的compensation参数调整画面目标亮度,使得最亮灰阶(Block 19)的G分量亮度在饱和值的0.8倍左右(即使用PQStream点播工具预览时,该色块的RGB值为204左右);
  • 为尽量保证标定结果准确,采集RAW时请尽量使24色卡画面占据60%以上的画面内容,采集帧数1帧即可,采集时需要记录实际环境色温;
  • 由于AWB标定结果会受到镜头Shading影响,为尽量保证标定结果准确,对能明显观察到镜头阴影的设备,请将采集下来的RAW进行Shading矫正后再进行AWB标定。具体操作方法请参考"MLSC标定"节所述内容。

确保以上条件同时满足后,采集下来的RAW即可输入给AWB标定算法进行处理。AWB标定算法输入RAW示意如图1。

图 1 AWB标定算法输入RAW示意

AWB标定工具的界面说明

将标定工具的主功能标签页切换到AWB,即可看到AWB标定的界面。工具的界面如图1所示。

图 1 AWB标定工具界面

工具界面主要分为4部分:

  • White Pixel Distribution图表(绿色区域):位于工具左上角,显示各个导入的图像样本的白区R/G、B/G值位置;
  • Planckian Curve图表(蓝色区域):位于工具右上角,显示标定完成后的普朗克曲线;
  • 操作区域(红色区域):位于工具中间,提供用户导入RAW文件,设置标定参数、启动标定和向单板写数据的操作接口。同时也显示标定后的色温曲线参数值和增益值。本区域中,P1、P2、Q、A、B、C六个值为标定结果输出值,用来描述普朗克曲线,R Gain、B Gain两个值为标定输入值,在Mode为Semi-Auto时可设置,用来描述中心色温的R Gain、B Gain值,并能进行RAW标定数据的导入导出,和下发板端操作。
  • RAW文件配置表(黑色区域):可以对导入的RAW文件设置权重,色温,并配置白区。标定完成后,还会显示对应光源下的色温和Shift值,对AWB的RAW文件配置进行导入导出,导入导出参数有文件名、KI值、输入色温、R/G、B/G值。
AWB标定步骤

标定工具支持AWB的自动标定与半自动标定,自动标定和半自动标定的主要区别在于是否需要手动输入R Gain和B Gain的值。

  1. 在标定工具主界面指定黑电平,或进行一次黑电平标定。
  2. 参照"设置RAW基本属性"章节的描述,在标定工具主界面导入需要进行AWB标定的RAW数据,并进行勾选。要求导入至少3个不同光源的RAW文件。
  3. 选择Mode下拉框为Auto。(如果需要进行半自动标定,请选择Semi-Auto)
  4. 在AWB标定界面导入勾选的RAW数据,并设置各个RAW数据的权重,色温。权重默认值为1,取值范围为0~15,权重值越高,则该色温在AWB普朗克曲线拟合过程中的倾向度越高。色温即为采集RAW数据过程中记录的实际色温值。
  5. 使用工具在各个RAW数据中勾选白区,具体勾选过程请参考附录内容。
  6. 选择3个RAW为关键光源 (Key Illuminant, KI),作为标定起始点。推荐选择A、D50、D75三个光源为KI。
  7. 如果选择标定模式为Semi-Auto,请在操作区域R Gain、B Gain输入框手动设置R Gain和B Gain的值。
  8. 单击“Calibrate Curve”按钮。
CrCb参数标定步骤

CrCb标定主要利用最大色温和最小色温的R/G、B/G的值进行标定,得出4组CrCb数组的值。ISO100对应的CrCb值是通过当前参与标定的RAW数据计算白色区域的R/G、B/G值得到。cr_max[0]和cb_min[0]分别对应低色温的R/G、B/G;cr_min[0]和cb_max[0]分别对应高色温的R/G、B/G。通过设置ISO100 Gain调节Cr、Cb范围稍大于RAW图统计的R/G、B/G取值范围。通过设置Slope参数,以ISO100的值为基础计算不同ISO下的设定值,单调递增或递减。最终得到R/G、B/G取值范围随ISO增大而扩大的趋势。

  1. 在标定工具主界面指定黑电平,或进行一次黑电平标定。
  2. 参照“设置RAW基本属性”设置RAW基本属性章节的描述,在标定工具主界面导入需要进行AWB标定的RAW数据,并进行勾选。要求输入至少3个不同光源的RAW文件。
  3. 使用工具在各个RAW数据中勾选白区并设置相应RAW数据的色温值,具体勾选过程请参考附录内容。
  4. 设置合适的ISO100 Gain值和Slope值,单击“Calibrate CrCb”按钮。
AWB标定结果说明

所有的RAW文件都选择好白区以后,即可进行标定。单击“Calibrate Curve”按钮后,等待一小段时间,标定即可完成。标定完成后,以下的结果会被给出:

  • Planckian Curve图表中输出普朗克曲线,并标出每个RAW文件在该图表中的位置;
  • R Gain,B Gain以及色温曲线的6个参数(P1,P2,Q,A,B,C)值也将给出(如果是半自动标定,则R Gain和B Gain的值与用户输入相同);
  • 基于上述标定参数,输出每个RAW文件对应的Shift值和色温期望值(Es Temp. )。|Shift|绝对值越小,色温期望值与真实色温误差越小,表示标定参数越准确。

图 1 AWB标定结果

须知:

标定算法需要3个关键光源才能运行。因此用户选定的关键光源不为3个时,单击“Calibrate Curve”按钮将无法进行标定。

AWB算法支持下发板端功能,完成标定后,单击“XX Apply To Board”按钮,可以将标定结果下发至板端。发送的数据将立即生效。

附录:为RAW文件样本勾选白区

单击RAW文件配置表(工作区黑色区域)中对应RAW文件在WZ(White Zone)一栏中的按钮,可以打开白区框选对话框,如图1所示。

图 1 白区勾选窗口

按住鼠标右键并拖动鼠标,可以移动图像;使用鼠标滚轮可以缩放图像。

在图像显示的区域使用鼠标左键,可框选图像中的区域。对于24色卡场景,一般选择20-23色块作为白区;对于实际拍摄的自然场景,选择其中的白色部分。选框时,使选框尽可能大(但需要保证所有像素颜色几乎相同),这样可以使取到的R/G和B/G更加精确,从而得到更准确的标定结果。选定白区后的效果如图2所示。

图 2 白区勾选

选定白区后,左侧的列表会显示选定白区的R/G与B/G比值,显示的序号与右侧选框对应。若选择了不需要的选框,或选框错误,可以在列表中单击对应序号右侧的删除按钮将其删除。

如图3所示,请注意如果不同亮度的B/G值差异明显(>0.1),需要确认黑电平设置是否合理。

选择完毕后单击“Close”按钮关闭白区勾选对话框。工具将自动计算该RAW文件的R/G和B/G的算术平均值,并显示在列表中,并在White Pixel Distribution图表中标示该RAW文件所处的位置。

图 3 白区勾选完毕

CCM标定

CCM标定工具原理

CCM标定的原理是,使用sensor抓拍到的24色卡场景下前18个色块的实际颜色信息和其期望值,计算3x3的CCM矩阵。输入颜色经CCM矩阵处理得到的颜色与其期望值差距越小,则CCM矩阵就越理想。

CCM标定序列采集需求
  • 采集设备准备:标准X-Rite 24色卡,照度为600Lux均匀光源(左右两侧双光源,光源与色卡平面的夹角在25°- 45°)。
  • 调整AE目标亮度,PQStream点播工具显示页面上查看第20色块的G值在201附近,第21色块的G值在163附近就表示曝光合适。
  • 采集中性灰RAW图像,检查镜头阴影程度。Shading较严重时,需要先标定Shading系数,24色卡图像需要先进行Shading校正后,再进行CCM标定。
CCM标定工具的界面与功能

将标定工具的主功能标签页切换到CCM,即可看到CCM标定的界面。

图 1 CCM标定工具界面

CCM标定工具主要分为四部分:

  • 标定区域:上方的标签页,包含“Calibration”与“Result”两个页面,执行CCM标定功能和CCM手动调整功能。
  • 记录区域:暂存标定结果,并将用户选择的标定结果发送到板端。
  • 结果区域:色调、饱和度修正值,显示校正后图像,CCM结果(浮点型和整型两种形式)还有颜色误差分析。
  • 图像微调区域:对CCM矩阵进行数据输入,仅能输入浮点类型数据,并对图像进行微调。
CCM标定步骤

进行CCM标定,请遵循以下流程(后面章节中,将进行各个操作流程的说明):

  1. 参照"设置RAW基本属性"章节的描述,在标定工具主界面导入需要进行CCM标定的RAW数据。
  2. 导入RAW文件(24色卡限定)。
  3. 选取24色区域,操作方法请参考附录1。
  4. 配置标定参数(Gamma,参考LAB,色块权重,差异标准,AutoGain,AutoWbGain,R Gain,B Gain,Display Gain),参数意义请参考附录2。
  5. 单击“Calibrate”按钮进行标定,获得结果CCM。
  6. 在Result页面进行手动色调/饱和度调整,直到获取的CCM满足要求,并能单击Show Color Analysis 查看图像差异结果分析。
CCM标定结果说明

当24色选框完成,并配置好所有的标定参数后,即可单击“Calibrate”进行标定。标定完成后,工具自动跳转到Result 页面,并显示校正后图像,CCM(浮点型和整型两种形式)和色调、饱和度修正值,如图1所示。

图 1 初步标定完成

显示颜色差异结果

可单击“Show Color Analysis”按钮显示当前图像和原图像的差异结果,如图1所示。

图 1 CCM图像颜色差异分析

测量的结果是显示RAW数据经过当前CCM参数,得到的源图像与LAB Customization中设定的目标图像的差异。一般来说,源图像的圆形和目标图像的方形会比较接近。用户可以不断调节方形的位置来引导CCM参数的标定。

如果需要测量源图像和标准色卡值之间的误差,请使用PQTools Color Checker工具。

手动调整

如果查看校正后的图像发现效果不理想,还可以进行手动调整。在“Result”页面调整色调(Hue Corr)和饱和度(Sat Corr)修正值,并单击“Manual Adjust”,可以重新计算CCM并进行图像校正。单击“Import Matrix CCM”可把Matrix CCM的值导入到Manual CCM的矩阵中,进行手动调整图像。重复上述操作,直到获得满意图像即可。

导出当前标定结果

单击CCM标定界面上的“Export Current Result”可将当前标定的数据导出成一系列文件。在弹出的目录选择对话框选择好输出路径后,工具将保存一系列文件,如图1,包括:

  • 输入图像(经过Demosaic处理)
  • 输出图像(经过Demosaic和CCM校正处理)
  • CCM标定结果矩阵(包含浮点,10进制和16进制3种形式),若手动进行CCM矩阵的输入,也可在结果导出中导出输入的CCM矩阵的浮点和转换后的10进制和16进制数。

    图 1 当前标定结果导出内容

导出全部标定结果

单击CCM标定界面上的“Export All Result”可导出当前标定数据的输入图像,输出图像,和所有记录的CCM标定结果矩阵(如果没有记录,则只有当前标定结果的矩阵),包括:

  • 当前标定的输入图像(经过Demosaic处理)
  • 当前标定的输出图像(经过Demosaic和CCM校正处理)
  • 当前CCM标定结果矩阵和所有记录的CCM标定结果矩阵(包含浮点,10进制和16进制3种形式)以及手动输入的CCM矩阵值(包含浮点,10进制和16进制3种形式)
记录功能

当用户调整到一组合适的CCM,可将其暂存起来。单击对话框上的“Record Current Calibration”按钮,可将当前标定的所有信息在程序中暂时记录下来。记录后,下方列表会显示一条CCM信息:

图 1 记录功能

在Color Temp. 一栏,可以为该记录设置色温,一般与输入图像采集时的色温相对应。

单击Use一栏的环状箭头按钮,可以将对应的记录(包括使用的图像,标定参数等)恢复到标定界面,可以继续利用这些参数进行标定或手动调整。恢复后,工具将立即使用恢复的参数执行一次标定。

如果不需要再用到特定的记录,单击记录右侧Del一栏中的删除按钮可将记录删除。如需要删除全部的记录,请单击“Clear Record List”按钮。

标定结果下发到板端

当用户标定并记录了多组参数后,可以选出其中的七组以下(含7组)数据,将这些记录中的结果CCM发送到单板。采取以下步骤:

  1. 设置TabNum,默认为3,范围[3,7],其含义为板端生效的CCM组数。
  2. 在记录列表最左侧的复选框上,勾选1组到7组需要下发到板端的CCM标定结果。
  3. 修正Group号,Group号的意义为板端生效的CCM的第几组,Group的取值范围[0, TabNum-1]且不能有相同。例如TabNum为3时,Group号为0,1,2。
  4. 为勾选的记录设置色温值。
  5. 单击界面上的“Apply Selected CCM”按钮。

标定结果也可以配置到xxx_cmos_ex.h(Hi3516DV500)或xxx_cmos_param.h(Hi3516CV610)文件,具体用法参考《ISP开发参考》。

须知:

选择下发板端的记录必须满足以下条件,下发才能成功并生效:Group与色温成反比。前一组(Group号小)的色温值与后一组(Group号大)的色温值需符合如下规则:Tpre*(100 - 6.25) >Tpost*(100 + 6.25)即高色温值的15/16需大于低色温值的17/16。

附录1:选择24色区域

导入RAW图像后,可在右侧的图像区域选择24色区域。拖动四角色块中央的红色手柄,即可改变24色框的排布,将24个方框对准RAW图像的24色区域即可。如图1所示。

图 1 24色选框

移动图片区域左侧的Patch Size X或Patch Size Y滑块,可以改变各个选框的水平和垂直大小,支持选中X、Y滑块后可按键盘上下或左右键精调红色方框的大小。调整时,使选框尽可能大(但需要每个框内,所有像素颜色几乎相同),这样可以使取到的颜色更加精确,从而得到更准确的标定结果,支持单击“Import ROI”、“Export ROI”按钮导入导出红色方框的大小和位置。

如果导入RAW默认的24色卡排布不是4行6列,是6行4列,左上角的方框对应棕色块,左下角对应白色块,对应关系如图2所示。

图 2 24色框与24色区域对应关系

附录2:配置标定参数

请按照以下基本步骤设置标定参数:

  1. 设置ISP Gamma:在ISP Gamma的下拉框中选择需要的Gamma预设值(目前支持sRGB和Rec709,BT.2020),也支持自定义。请用户输入ISP当前生效的Gamma表。
  2. 设置显示Gamma:在Target Gamma的下拉框中选择需要的Gamma预设值(目前支持sRGB和Rec709),也支持自定义。
  3. 设置LAB参考值:在LAB Reference的下拉框中选择需要的LAB预设值(目前支持D65条件下的Xrite标准值)。也支持自定义,可自定义输入色卡中的值并进行标定。
  4. 在6x4的表格中配置色块的权重。色块的位置与表格中的位置对应,取值范围为0到16.0的浮点数,保留一位小数。
  5. 选择差异衡量的标准(支持CIE2000和CIE76)以及差异矩阵(DeltaCab与DeltaEab)。推荐使用“CIE76 DeltaEab”和“CIE2000 DeltaCab”两种组合进行标定。
  6. 选择是否AutoGain,当选择AutoGain时,会对RAW的值和目标值做亮度补偿。
  7. 输入Display Gain值,对结果生成的图像进行校正。

  8. 自定义ISP Gamma的方法

    在ISP Gamma的下拉框中选择Customize…,并在随后弹出的文件选择对话框中选择一个Gamma文本文件用于导入(例如可以选择:PQTools\Plugins\Data\ColorCalibrationPicture\gamma257.txt)。文本文件的格式必须是以下三种之一才可以被工具识别:

    • 一列排列的浮点数,数据的排列必须由小到大,且最大值为1.0
    • 一列排列的10进制正整数,数据的排列必须由小到大。工具以最大值为归一化的标准值。
    • 一列排列的16进制数,数据的排列必须由小到大。工具以最大值为归一化的标准值。

      若文件成功导入,则工具在标定时使用该文件内保存的Gamma数据。

  9. 自定义LAB参考值的方法

    在 LAB Reference的下拉框中选择Customize,打开LAB自定义对话框,如图1所示。

图 1 LAB自定义对话框

图 2 LAB单击颜色弹框选择

用户可以用5种方式自定义LAB参考值:

  • 直接在表格中输入值。
  • 导入文本文件:单击Import From右侧的“Text File”按钮,选择一个txt文件后即可将其中的值导入至该对话框。选择的文本文件必须是一系列浮点数,并且用逗号或空格隔开,行列数可任意。
  • 导入imatest 3.x 的Color Check功能生成的CSV文件:单击Import From右侧的“Imatest CSV”按钮,选择一个由imatest 3.x工具导出的csv文件后,即可导入其中的LAB数据。可选择导入ideal或meas数据。
  • 从图片框选:单击Import From右侧的“Image”按钮,选择一张jpg或bmp图片(例如可以选择:PQTools\Plugins\Data\ColorCalibrationPicture\target_A.jpg)。之后在打开的对话框中进行24色框选即可。方法与之前CCM标定工具上的框选一致。
  • 可单击列表中的颜色,弹出调色板,如图1所示,调色板是当前L亮度下的一定范围内的颜色,用户单击选框中颜色,画出一个矩形框,选择颜色,获得LAB值。
  • 单击“Export LAB”按钮可以导出当前的LAB值,生成txt文件,可用于导入Text File。

设置完成后单击“OK”。之后标定工具在标定时,会使用用户自定义的LAB数据。

标定BT.2020下的CCM的配置方法:

  1. 选择是否BT.2020,当选择BT.2020时,标定得到的CCM参数符合BT.2020的标准。
  2. 设置ISP Gamma,在ISP Gamma的下拉框中选择需要的Gamma预设值(BT.2020),也支持自定义。请用户输入ISP当前生效的Gamma表。
  3. 当目标图片或者目标值为sRGB标准时,设置显示Gamma,在Target Gamma的下拉框中选择需要的Gamma预设值(sRGB)。当目标图片或者目标值为BT.2020标准时,沿用709的gamma,选择预设值(Rec709)。
  4. 设置LAB参考值,在LAB Reference的下拉框中选择需要的LAB预设值(目前支持D65条件下的Xrite标准值)。也支持自定义。
  5. 选择好所需的颜色后,可直接在该界面进行标定。

CLUT标定

须知:

  • Hi3516CV610不支持CLUT标定。
  • 由于大分辨率标定时内存占用比较大,CLUT标定导入的RAW建议不超过4096*4096的分辨率,否则工具有挂死的危险。如果有需要超大分辨率,请像CAC一样进行RAW的下采样,然后将下采样的RAW进行标定。
CLUT标定基本原理

CLUT标定基于用户提供的24色卡、140色卡或用户自由选择的颜色对,建立输入图像和目标图像的RGB空间的3D映射表。CLUT算法基于映射表对图像进行逐像素的调节,以满足用户颜色调节的需求。标定的主要目的是通过源和目标的RGB对,确定CLUT的对于各种颜色的调节方向和调节量。

CLUT标定工具界面与功能

CLUT主界面如图1所示。

图 1 CLUT主界面

将标定工具的主功能标签页切换到CLUT,即可看到CLUT标定的界面。

如主界面图1所示,CLUT标定工具主要可以分为五部分:图像参数区(1)、图像预览区(2)、颜色选取区(3)、RGB对区(4)、CLUT生成区(5)。

  • 图像参数区:待标定机器和目标机器的相关参数,这些参数用来从RAW或JPG中获得ISP中CLUT模块处的数据。
  • 图像预览区:显示输入图像或者目标图像。
  • 颜色选取区:提供四种从输入图像和目标图像中选取RGB对的工具。
  • RGB对区:显示收集到的RGB对数据。
  • CLUT生成区:用来生成和保存CLUT。
CLUT标定校正步骤

图像亮度、白平衡、CCM参数、Gamma曲线等都会影响CLUT标定的准确性。因此,CLUT标定前,确认待标定机器和目标机器的AWB设置正确,亮度、灰阶表现一致。

  1. 在D50或D65灯箱光源,600lux左右照度,对着24色卡或140色卡,拍摄待标定机器的RAW或JPG图片和目标机器的JPG图片。在室外采集2-3组不同亮度的待标定机器RAW或JPG图片和目标机器的JPG图片,这里的源和目标图片对可以同时含有色卡也可以不含有色卡。详细要求请参考"附录1:采集数据的要求"。
  2. 如果画面的Shading现象严重,可参考"MLSC标定"中介绍内容,对图像进行Shading矫正后再进行CLUT标定。
  3. 加载图片文件,请参考"附录2:加载文件"。
  4. 设置图像参数,请参考"附录3:图像参数区设置"。
  5. 使用Color Check 24和Color Check 140两个工具,可以从待标定机器的RAW和目标机器的JPG图片中获得RGB对。
  6. 这种方式的优点是可以简单快速地确定各种颜色的调节方向和调节量,包含需要调节的颜色和需要固定不调节的颜色,获得的RGB对可以看做是CLUT的基础调节。
  7. 使用Color Check Free工具,可以从待标定机器的JPG图片和目标机器的JPG图片中获得RGB对。这种方式的优点是从场景中选择感兴趣的颜色,做进一步精细的调节。使用Color Check HSL工具,可以从待标定机器的JPG图片中获得RGB对。这种方式的优点是在当前的颜色表现的基础上调节。请参考"附录4:RGB对生成"。
  8. 使用经过整理确认的RGB对的数据生成CLUT表。整理RGB对的具体方法可参考"附录5:整理RGB对"。
  9. 标定结果下发板端确认效果,存储标定结果用于FW。
CLUT标定结果说明

标定结束后,CLUT标定工具会生成基于用户选择的颜色映射矩阵。本标定工具提供了以下标定结果的使用功能:

保存标定参数

单击“Save as Head”按钮,可以将工具内的标定参数保存为.h文件,可供代码编译使用。单击“Save as txt”按钮,可以将工具内的标定参数保存为.txt文件。可以在CLUT调试页中导入到lut参数矩阵中。

将标定结果发送至板端

单击界面上的“Apply To Device”按钮,可以将标定生成的CLUT三维矩阵直接应用至板端对应的CLUT处,并立即生效。标定结果也可以配置到xxx_cmos_ex.h(Hi3516DV500)或xxx_cmos_param.h(Hi3516CV610)文件,具体用法参考《ISP开发参考》。

附录1:采集数据的要求

在D50或D65灯箱光源或者是室外采集RAW时,场景内放置有色卡,通过PQStream工具的图像预览界面读取色卡的第21色块的G通道的值,通过调节曝光等ISP内影响亮度的参数,观察这个值和目标机器采集的图片中的值基本接近,这时可以采集RAW数据。

在使用RAW数据作为源数据和JPG作为目标数据时,要求源和目标图像内都有色卡,RAW数据会参考JPG目标数据的白平衡结果,进行白平衡增益的处理。不需要手动设定白平衡增益。推荐采集RAW数据的步骤如下:

  1. 通过PQTools工具调节亮度

    通过PQStream点播工具的图像预览界面读取色卡的第21色块的G通道的值。然后调节ISP参数,让该值和目标JPG相当。

    图 1 PQStream点播工具预览读取值

  2. 采集RAW数据

    通过PQTools工具的Dump Tool采集RAW数据。

    图 2 PQTools工具采集RAW数据

在使用ISP输出端的JPG作为源数据时,需要注意采集到的JPG数据和ISP输出保持一致。因为YUV转RGB的标准的原因,容易导致采集到的JPG数据和ISP输出有偏差。比较简单的方式是使用MPV播放器播放码流并截图,取得JPG数据。也可以采用其他方法,比如抓取板端的YUV数据,然后转换成JPG数据。不推荐在Dump Tool工具中抓取JPEG图片,因为这里的YUV转RGB参数和ISP的RGB转YUV参数不对应。推荐采集JPG数据的步骤如下:

  1. 通过PQStream工具录制H.265码流

    通过PQStream工具的Record按钮,录制一小段H.265码流。

    图 3 PQStream工具录制码流

  2. 播放器的配置

    配置MPV播放器的输出的YUV转RGB的数据格式,在MPV目录下的mpv.conf文件中写入“video-output-levels=limited”,让播放器的输出和ISP的输出保持一致。

    图 4 MPV的参数配置

    在播放器播放H265码流的时候,使用快捷键S或Ctrl+S截图。

附录2:加载文件
  1. 打开 RAW文件

    参照"设置RAW基本属性"章节的叙述导入24色卡或140色卡场景的RAW文件,并在主界面列表进行选择后,单击“Get the First Selected Raw”按钮,即可导入图像。同时界面将显示第一个被导入的RAW图像。

    图 1 CLUT打开输入图像

  2. 打开源jpg或bmp图像

    图 2 CLUT打开源jpg或bmp图像

    单击“Open Src Image”按钮,选择图片导入。

  3. 打开目标图像

    图 3 CLUT打开目标图像

    单击“Open Target Image”按钮,选择一幅jpg格式的图像作为目标图像打开。此时显示区的Target页签会显示目标图像。

附录3:图像参数区设置
  • “Color space”下拉框:

    选择当前ISP的工作模式是sRGB或者BT2020模式。

  • “ISP Gamma”下拉框:

    选择当前ISP使用的Gamma表,这里预置了sRGB或者BT2020的Gamma表,建议用户通过Customize加载源图像机器ISP使用的Gamma表。

  • “CCM Matrix”:

    通过Load CCM按钮导入当前ISP使用的CCM参数,选择已保存的CCM标定数据文件,即可导入已标定的CCM 10进制定点数据到表格中。当输入图像是RAW数据的时候,会使用这里的CCM参数。ISP Calibration Tool的CCM标定结果可以直接导入。同时CLUT工具也支持标定结果的自解析,可将10进制或16进制CCM数据直接解析并显示成10进制数据(不支持Double类型数据)。也可以导入PQTools界面中,WB Info处导出的当前板端使用的CCM参数。

  • “CSC Matrix”:

    通过Load CSC按钮导入含YUV转RGB参数的txt文件,yuvtorgb_601_full内容举例如下:

    1.0000,0.0000,1.4023,0.0000,0.0000,1.0000,-0.3438,-0.7139,-0.5000,0.0000,1.0000,1.7725,0.0000,-0.5000,0.0000

    导入后界面显示为

    1.0000 0.0000 1.4023 0.0000 0.0000

    1.0000 -0.3438 -0.7139 -0.5000 0.0000

    1.0000 1.7725 0.0000 -0.5000 0.0000

    前三列是bt601标准规定的full yuvtorgb转换参数

    第四列是输入YUV数据的偏移量

    第五列是输出RGB数据的偏移量

    yuvtorgb_709_limit内容如下:

    1.1641,0.0000,1.7930,-0.0625,0.0000,1.1641,-0.2129,-0.5332,-0.5000,0.0000,1.1641,2.1123,0.0000,-0.5000,0.0000

    yuvtorgb_709_full内容如下:

    1.0000,0.0000,1.5752,0.0000,0.0000,1.0000,-0.1875,-0.4678,-0.5000,0.0000,1.0000,1.8555,0.0000,-0.5000,0.0000

    yuvtorgb_601_limit内容如下:

    1.1641,0.0000,1.5957,-0.0625,0.0000,1.1641,-0.3916,-0.8125,-0.5000,0.0000,1.1641,2.0176,0.0000,-0.5000,0.0000

    须知:

    如果修改了CCM Matrix,需要保证修改后满秩矩阵,否则标定会有错误提示。

附录4:RGB对生成
  1. 根据输入图片的场景,单击不同按钮。

    • 如果是待标定机器的RAW和目标机器的JPG图片,图片中含有24色卡的场景,则单击“Color Check 24”按钮;
    • 如果是待标定机器的RAW和目标机器的JPG图片,图片中含有140色卡的场景,则单击“Color Check 140”按钮。
    • 如果是待标定机器的JPG和目标机器的JPG图片,在源图像和目标图像自由选择的场景,则单击“Color Check Free”按钮。这里的图片可以含有色卡,也可以不含有色卡。
    • 如果是待标定机器的JPG,在源图像自由选择颜色后配置HSL的场景,则单击“Color Check HSL”按钮。这里的图片可以含有色卡,也可以不含有色卡。
  2. 在使用“Color Check Free”或“Color Check HSL”调节某些颜色前,建议使用“Color Check 24”或“Color Check 140”产生比较全面的颜色RGB对。用户在新增需要调节的颜色RGB对的同时,也需要提供不需要调节的颜色RGB对,即RGB对中的源和目标值相同或接近。通过这种方式可以控制某些单一的颜色调节对相邻颜色的影响范围,即通过增加相邻颜色RGB对的方式来将相邻的颜色符合基本不变的需求。前两个场景,在弹出的对话框中,进行颜色框选。

    • 左键按住四个角的色框中的红点,可以拖动色框,改变颜色选取区域的位置。如图1所示。
    • 图像上方的两个滑动条可以调节色框的宽高长度。色框越大,获取的色块像素数越多,标定结果越准确,同时耗时会增长。
    • Color Check Free场景,可以在源图像与目标上图像上通过拖动鼠标选择矩形区域,选择的区域最大数量为8。如图2所示。
    • Color Check HSL场景,可以在源图像通过拖动鼠标选择矩形区域,选择的区域最大数量为8。可通过编辑框和滑动条设置Hue、Saturation与Lightness的值。hue范围+-20,sat范围0.4-1.6倍,light范围0.6-1.4倍。如图3所示。
  3. 单击“OK”按钮。

    图 1 24色区域框选

    图 2 Color Check Free场景框选

    图 3 Color Check HSL场景框选

附录5:整理RGB对

生成的RGB对添加到RGB对列表后,可在列表中对生成RGB对进行选择或取消选择或删除。使用Export RGB可导出列表中的RGB数据到文件中。使用Import RGB可以从文件导入RGB对到列表中进行标定。每次生成的RGB对会添加到当前RGB对的后面,Clear RGB可以清除当前列表中的所有RGB对。

图 1 RGB对列表

图 2 CLUT标定生成

  • 可以修改“LUT Operations”栏目下的“Mode”下拉框选择工作模式,SDR模式下选择Linear,HDR模式下选择CLUT HDR。填写Smoothness参数,Smoothness参数范围为1-100,平滑度逐渐提高,建议值在15-30范围,值越小会尽量让各种颜色的调节准确,但容易把图像噪声放大;值越大会让相邻颜色平滑调节,减少由于颜色增强导致的噪声过大。单击“Calibrate LUT”按钮,对RGB列表中的RGB对进行标定。
  • 单击“Calibrate LUT”按钮,约40秒后,工具内部生成了CLUT标定参数。推荐用户将CLUT参数下发板端后,灌RAW观察颜色调节效果。
  • 单击“Cube to 3Dlut”按钮,支持将Cube格式3D Lut表转换为Hi3519DV500 3D Lut表(需要配置正确的gamma)。

DynaBLC标定

说明:

Hi3516CV610不支持DynaBLC标定。

标定基本原理

Sensor的OB区黑电平和可见光区黑电平的差值会随ISO的改变而改变。此工具用于标定不同ISO情况下OB区黑电平和可见光区黑电平的差值。

DynaBLC 采集要求
  • 需要采集黑帧(遮住镜头抓取的数据)
  • 至少采集16帧
  • 确保当前通路已经输入OB区。OB区的获取方式需要在Pub Attr里将裁剪起始点都设置为0。

    图 1 OB区裁剪起始点

  • 抓RAW数据时,Again、Dgain成倍数增加。先增加Again,再增加DGain。不调节ISPDgain。从ISO100开始,每增加一倍Again或Dgain值,采集一个该增益下对应ISO的RAW数据。直到Again,Dgain都为最大值。此增益下的ISO为最后一档ISO。如图2所示

    图 2 是ISO增益表

DynaBLC 工具界面介绍

图 1 工具界面图

1区域是标定参数, 2 区域是控制按钮,3区域为导入标定的源RAW文件列表。

OB_X和OB_Y表示OB区的起始坐标点。Width和Height表示OB区的宽高。该参数为OB区的统计范围,设置时应参考实际OB区大小,设置过小或超出图像实际OB区范围都可能导致图像异常。

ThrLow:OB区统计时不统计低于该值的像素点。该值用于限制统计像素的最小值。按照14bit的RAW数据进行配置。建议设置为小于等于10的值,该值设置过大可能会导致图像异常,取值范围: [0x0, 0xFFF]

ThrHigh:OB区统计时不统计高于该值的像素点。该值用于限制统计像素的最大值。按照14bit的RAW数据进行配置。建议设置为大于4900的值,该值设置过小可能会导致图像异常,取值范围: [0x0, 0x3FFF]

须知:

  • 需要根据推荐值设置ThrLow 和 ThrHigh。
  • ThrLow设置过大或者ThrHigh设置过小可能会导致标定失败,报错:Calibration failed! BLC Statistic error!
DynaBLC 标定步骤

针对sensor的标定步骤如下:

  1. 在工具最左侧的RAW Data列表中,导入采集的特殊 BLC 场景的RAW(带OB区)文件。可识别RAW文件名进行ISO设置。图像导入后,在列表区会显示被导入图像的别名,并提供相关功能按钮及相关信息,如图1。

    图 1 RAW列表导入演示

  2. 根据实际情况输入标定参数,Width和Height不能为0,否则标定结果异常。(OB_X, OB_Y)为OB区的起始坐标点。Width和Height为OB区的宽高。ThrLow和ThrHigh为统计像素点的阈值。OB_X 要小于OB Width, OB_Y 要小于OB Height。

  3. 单击Calibration按钮进行标定,等待下方标定进行中状态条消失后,即可单击Export Result导出标定结果或者直接单击Offset Apply to board 按钮,将标定结果直接下发板端。单击ObBlc Apply to board 将OB区黑电平标定结果下发板端。

BLC的offset和calibration_black_level参数值可以用PQtools里的标定工具标定得到。offset为OB区黑电平与可见光区黑电平的差值。该值用于补偿OB区黑电平,使其与可见光区黑电平保持一致。

calibration_black_level为不同again对应的黑电平的值。当环境光发生变化时,AE在第N帧重新计算出曝光信息。在N+1帧将第N帧的曝光信息配置给sensor。第N帧的曝光信息会在第N+3帧的RAW中生效。由于BLC会受到ISO的影响所以第N+3帧的BLC发生了变化,但第N+3帧减的还是第N+2帧的黑电平,所以图像会偏色。该值用于计算补偿第N+3帧的黑电平,使其与可见光区黑电平保持一致,解决图像的偏色问题。由于sensor gain值较大时,动态黑电平会严重飘移,所以calibration_black_level的标定值不够准确。但是不会影响开关灯这种极限场景的图像效果。

标定结果可以配置到xxx_cmos_ex.h(Hi3516DV500)或xxx_cmos_param.h(Hi3516CV610)文件,具体用法参考《ISP开发参考》。

LocalBLC标定

说明:

Hi3516CV610不支持LocalBLC标定。

LocalBLC标定基本原理

某些sensor在一些情况下会出现局部BLC不一致的情况,这样有可能会导致局部的偏色,Local BLC可以根据标定好的数据分区域校正BLC,使BLC在各个区域保持一致。

Local BLC算法使用Mesh(网格)方式对画面进行标定/矫正,算法会将整个Bayer域画面分割成32x32个子区域,这32x32个区域大小大致相等,算法将分别对RAW域中的每个通道进行处理。

FPN也可以校正局部BLC不一致,建议在FPN不方便使用的情况下考虑使用Local BLC。Local BLC位于FE0,算法参数由离线标定工具生成,标定精度16bit,不建议手动调试。

LocalBLC 采集要求

LocalBLC标定工具的数据输入方式有两种:

一种是单帧的RAW,该RAW通常已经进行了多帧的平均,噪声较少,可以参考FPN在线标定的sample,标定出来的黑帧可用于LocalBLC的标定;

一种是多帧的RAW,在高ISO下采集的数据。下面仅对多帧RAW的采集做说明。

多帧RAW的采集步骤如下:

  1. 将设备的光圈完全关闭,或者使用镜头盖将镜头输入遮挡,确保无光线进入;
  2. 通过PQTools的Exposure Attr标签,手动设置整个系统的增益为需要标定的增益值。具体操作方法如下:将Exposure和Exposure Manual选框中的所有op_type设置为OP_TYPE_MANUAL,同时将Exposure Manual选框中的a_gain、d_gain、isp_d_gain手动设置为期望标定的值;
  3. 使用Dump Tool抓取多帧RAW文件,帧数越多,平均后的标定效果越好。

    通过以上三步,即可得到LocalBLC标定需要的RAW。

LocalBLC工具界面介绍

图 1 工具界面图

各区域说明:

  • 1区域:标定参数

    • ROI_X和ROI_Y表示:当FE0开启ROI时需要打开ROI标定的开关,ROI区域在原始图中的起始坐标。
    • ROI_Width和ROI_Height表示:ROI区域的宽高,ROI区域不能超出原始图像的区域。
  • 2区域:控制按钮区

  • 3区域:输入输出RAW文件显示图像
LocalBLC 标定步骤

采集到标定算法所需的RAW后,用户可按照以下方法进行LocalBLC的标定:

  • 按照"标定工具的界面与基本操作"节的描述,在标定工具主界面导入RAW文件,选择为Black场景。
  • 若需要在FE0使用ROI功能,则打开Roi_enable进行对应的配置,否则不用勾选。
  • 单击Calibrate按钮进行标定,选择导出txt文件的路径。
  • 单击Correct RAW and Export按钮,选择导出RAW文件的路径。

标定结果可以配置到xxx_cmos_ex.h(Hi3516DV500)或xxx_cmos_param.h(Hi3516CV610)文件,具体用法参考《ISP开发参考》。

高级功能

寄存器修改器

如果用户需要修改某一特定寄存器地址上的值,可以直接使用寄存器修改器来完成。该修改器支持32位物理/虚拟寄存器的读取和修改。

单击工具栏的“寄存器修改器”按钮()打开寄存器修改器,如图1。

图 1 寄存器修改器

读取一个特定地址上的寄存器值,请遵循下列步骤进行:

  1. 在“Address”输入框中输入地址值
  2. 选择寄存器类别“Physical”或“Virtual”
  3. 单击“Read”按钮

若读取成功,工具会在“Value”输入框中显示读取到的值,同时右侧的按位修改区域会匹配读取到的值。

向一个特定地址上的寄存器写入值,请按照以下步骤进行:

  1. 在“Address”输入框中输入地址值
  2. 选择寄存器类别“Physical”或“Virtual”
  3. 在“Value”输入框中输入要写入的值,或通过右侧的按位修改区域修改单个位上的数值,也可以通过下方设置最低位LSB、最高位MSB、有无符号型Signed来确保输入的数值Value不会超范围。
  4. 单击“Write”按钮。

须知:

  • 寄存器地址值必须为4的整数倍,否则无法进行读写。
  • Virtual类型寄存器地址需按照模块标记地址+偏移的方式填写。AE模块标记地址为0x00A00000,AWB模块标记地址为0x00B00000,ISP(外部)虚拟寄存器标记地址为0x00C00000。例如:地址0x00A00004代表的是AE库虚拟寄存器偏移为0x4的地址。其中Virtual偏移范围请参考《ISP 开发参考》中ot_isp_reg_attr接口中对应获取。
  • 使用原则为:对于出现或定义过的地址可进行相应的读和写操作,如果该地址在相应的寄存器类型上未定义或不明用途,请慎重选择填写和使用。因此填写寄存器地址后必须选择对应的寄存器类型,即Physical或Virtual。例如,地址0x00A00004是表格中对应的虚拟寄存器地址,而其也是合法的物理地址值(但在物理寄存器范畴内此寄存器无效,或是有更重要的用途)。若此时将此地址选择物理寄存器类型进行读写,可能引起程序崩溃或其他异常,请务必小心使用。

参数的导出导入

请参考"工具导入导出BIN参数"。

通讯日志

与单板连接后,所有与板端的数据交互都会记载日志并显示在通讯日志窗口,如图1所示。

图 1 通讯日志窗口

与板端进行数据交互时,记载的日志包含以下信息:

  • 日志生成的时间;
  • 通讯方式与参数;
  • 通讯内容(如当前读取或写入的调试项);
  • 交互情况(包含会话启动,会话应答等);
  • 如果通讯出错,则显示错误信息。

单击“Clear All”,可以清除当前所打印的通讯日志。

勾选“Scroll to bottom when the logs refreshed”日志栏显示最新打印信息,取消勾选显示当前打印信息。

勾选“Save log to file”日志栏显示的打印信息会保存在logs目录的System.log文件中。

支持鼠标右键或者Ctrl A 、Ctrl C复制日志栏全部信息。

支持按打印等级输出日志信息,包含Error、Warning、Info、Ok,All显示所有日志信息,不区分等级。

日志最大支持显示2万行。

I2C读写工具

从PQTools工具主界面工具栏中的附加组件下拉框中选择“I2C Editor”,即可打开I2C编辑窗口。

用户可以使用I2C读写工具对通过I2C总线连接的Sensor或其他器件的寄存器进行读写。

图 1 I2C读写工具

其中I2C Device Information用于配置I2C设备的信息。

读取一个特定地址段上的I2C值,请遵循下列步骤进行:

  1. 分别在Device ID和Device Address中输入I2C设备的ID和地址。
  2. 分别在Address Bytes和Data Bytes中选择地址位宽和数据位宽。
  3. 在Start和Length框中输入起始地址和长度。
  4. 单击“Show”按钮,此时符合地址范围的寄存器编辑框出现在下方。
  5. 单击“Read”按钮,若读取成功,工具会在各个编辑框中显示对应地址的值。

写入一个特定地址段上的I2C值,请按照以下步骤进行:

  1. 分别在Device ID和Device Address中输入I2C设备的ID和地址。
  2. 分别在Address Bytes和Data Bytes中选择地址位宽和数据位宽。
  3. 在Start和Length框中输入起始地址和长度。
  4. 单击“Show”按钮,此时符合地址范围的寄存器编辑框出现在下方。
  5. 编辑写入的I2C地址,修改其值。
  6. 单击“Write”按钮。

此外,通过Load和Save按钮,可以保存或导入I2C的器件配置。

SPI读写工具

从PQTools工具主界面工具栏中的附加组件下拉框中选择“SPI Editor”,即可打开SPI编辑窗口。

用户可以使用SPI读写工具对一些基于SPI的外围器件上的寄存器进行读写。

图 1 SPI读写工具

其中SPI Device Information用于配置SPI设备的信息。

读取一个特定地址段上的SPI值,请遵循下列步骤进行:

  1. 在Device一栏配置SPI Number、CSN和SPI模式(标准或非标准)。
  2. 在Device Address一栏配置设备地址:在Read后的输入框中填入读取数据用的设备地址,并在Width下拉框中选择设备地址位宽。
  3. 在Registers一栏配置寄存器地址和数据的属性:分别在Address Width和Data Width中选择寄存器地址位宽和数据位宽;再分别在Address Order和Data Order中选择地址和值的大小端排序。
  4. 在右侧SPI Registers的Start和Length框中输入起始地址和长度。
  5. 单击“Show”按钮,此时符合地址范围的寄存器编辑框出现在下方。
  6. 单击“Read”按钮。

写入一个特定地址段上的SPI值,请按照以下步骤进行:

  1. 在Device一栏配置SPI Number、CSN和SPI模式(标准或非标准)。
  2. 在Device Address一栏配置设备地址:在Write后的输入框中填入用于写入数据的设备地址(如果SPI器件的读写设备地址相同,亦可在保留下方Use the same address on reading and writing勾选的情况下,填写Read后的输入框),并在Width下拉框中选择设备地址位宽。
  3. 在Registers一栏配置寄存器地址和数据的属性:分别在Address Width和Data Width中选择寄存器地址位宽和数据位宽;再分别在Address Order和Data Order中选择地址和值的大小端排序。
  4. 在右侧SPI Registers的Start和Length框中输入起始地址和长度。
  5. 单击“Show”按钮,此时符合地址范围的寄存器编辑框出现在下方。
  6. 编辑写入的SPI地址,修改其值。
  7. 单击“Write”按钮。

若SPI项读写成功,对应值的单元格会变成绿色背景;若读写失败,单元格会变成红色背景,如图2所示。

图 2 SPI读写工具的结果提示

通过Load和Save按钮,可以保存或导入SPI的器件配置。

单击“Clear”按钮,可以将下方编辑区域内的寄存器项清空。

须知:

  • 用户单击了“Show”按钮后,将不能更改地址位宽和数据位宽,也无法读取器件配置文件。如需进行上述操作,请单击“Clear”按钮清空编辑项。
  • 3线SPI sensor寄存器的读写,Device Number、CSN、设备地址不需要,可以不设置,直接设置好地址位宽与数据位宽、起始地址与所要读写数据的长度。 如果用户采用了私有标准的SPI,则根据读写驱动的需要,设置所需的信息。

分析工具界面及功能说明

颜色分析工具

工具界面

从PQTools工具主界面工具栏的外挂插件下拉框中选择“Color Checker”,可以打开颜色分析工具,如图1所示。

图 1 颜色分析工具

颜色分析功能可以显示以下分析数据:

  • 标准色与取样色在L*a*b*矩阵下坐标点的位置距离对比图
  • CIE1976算法得出的不考虑亮度的L*a*b*色彩空间距离值ΔC*ab(含修正饱和度后的值),以及考虑亮度的L*a*b*色彩空间距离值ΔE*ab(图像是sRGB色彩空间时,选择CIE1976;图像是Rec.2020 Full色彩空间时,选择CIE1976_BT2020)。
  • CIE2000算法得出的不考虑亮度的L*a*b*色彩空间距离值ΔC00(含修正饱和度后的值),以及考虑亮度的L*a*b*色彩空间距离值ΔE00(图像是sRGB色彩空间时,选择CIE2000;图像是Rec.2020 Full色彩空间时,选择CIE2000_BT2020)。
  • 白平衡误差分析
  • 取样颜色的RGB平均值
  • RGB分量统计直方图,包含融合直方图与各分量直方图
选择数据来源

颜色分析工具既支持连接单板进行在线分析,又支持读取本地图片文件进行分析。

若连接在线分析,请按以下步骤进行操作:

  1. 将录像机对准标准的PANTONE 24色色卡。
  2. 在PQTools工具主界面上,打开一个调试表文件(芯片型号与版本均匹配板端)。
  3. 在板端运行ISP/VI/VPSS业务。
  4. 将PQTools工具连接到单板。
  5. 通过主界面TOP->Mode Handle选择抓YUV通道(参考"读写通路设置")。
  6. 在颜色分析工具的主界面上,单击“Online Real-Time Checking”单选框。
  7. 从“Stream Source”下拉框中选择图像数据源来自的模块(VI/VPSS/VO),Hi3516CV610不支持VO。

若分析本地图片,请按照以下步骤进行操作:

  1. 在颜色分析工具的主界面上,单击“Local Image File”单选框。
  2. 选择一个PANTONE 24色色卡的照片。
使用24色颜色对比功能

在线模式下从板端获取到第一帧图片数据,或离线模式下打开了图片文件后,可使用24色颜色对比功能。

图 1 24色颜色对比功能界面

在“Comparison”页签上,单击“Select Check Area”按钮,可以打开24色取样对话框:

图 2 颜色分析工具24色取样界面

拖动红色方框的边角,使得红色方框准确落在24色色块范围内,可达到最佳的颜色取样效果。使用对话框下方的Color Block Size选项,可以调整红色方框的水平和垂直大小。红色方框应尽量多地覆盖色块中的像素(但需要保证每个红色方框落在单独的色块内,同一方框内所有像素颜色相同),这样可以更精确的取色,支持选中X、Y滑块后可按键盘上下或左右键精调红色方框的大小。支持单击“Reset”按钮恢复红色方框的默认大小和位置,支持单击“Import ROI”、“Export ROI”按钮导入导出红色方框的大小和位置。

调整完毕后单击“OK”,这时界面上就会显示出颜色分析结果了,如图3所示。

图 3 显示颜色分析结果

通过Compare Color Space可以切换比较分量(仅限右边表格)。目前支持在CIE1976、CIE2000、RGB、CIE1976_BT2020与CIE2000_BT2020颜色空间之间进行切换。这里需要注意的是先通过Compare Color Space切换比较分量后再加载图片,才能得到正确的颜色分析结果。

若需要重新调整24色的取样范围,请在颜色分析工具主界面上单击“Select Check Area”按钮。

自定义标准色

颜色工具提供了一组默认的标准色卡值(以L*a*b*色彩空间的量表示)。这组色卡值与D65光源,2度观察者角度下的X-Rite标准值近似。

用户还可以自行定义标准色卡值。单击“Comparison”页签下的Customize按钮,可以打开色卡配置的对话框:

图 1 标准色卡配置对话框

需要更改标准色卡值时,直接在表格对应的单元格中输入值即可。

  • 单击Import From右侧的“Image File”按钮,用户可以自选一张标准色卡的图片,框定24色范围后,将其用作标准色卡。这时工具将根据用户框定的24色卡区域自动求取色卡的L*a*b*值。
  • 单击Import From右侧的“Text Data File”按钮,用户可以选择一种包含标准色卡值的数据文件,并将其中的值导入作为工具的标准色卡值。目前支持导入imatest3.4工具生成的csv文件,可选择导入ideal(标准值)或meas(输入值)的值。

从对话框右上角的Load Preset下拉框中,用户可以选择一组预设值作为标准色卡值。目前仅可选X-Rite D65近似值作为预设值。

须知:

若要使用imatest数据文件的导入功能,则请不要人为修改从imatest导出的csv文件,否则工具可能无法识别。

查看RGB统计直方图

同样,在线模式下从板端获取到第一帧图片数据,或离线模式下打开了图片文件后,还可以选择使用RGB统计直方图功能。

图 1 统计直方图功能界面

查看统计直方图前,需要划定一块统计区域。激活“RGB Histograms”页签界面,单击位于页签内的“Select Analysis Area”,可以打开划定统计区域的对话框,如图2所示。

图 2 选择统计信息分析区域

拖动红色方框的边角可以选定分析区域。选择完毕后,单击“OK”按钮,工具就会显示该选定区域的分量统计数据,如图3所示。

图 3 显示统计直方图

其中在每个统计图内,横轴代表分量值(从左到右0-255),纵轴代表对应该分量上某个特定值的点数(对于某些最大分量点数过多的情况,工具对图像做了一定裁剪)。图片下方黑色的文字显示了该分量上的一些特殊值:

  • 最大值(Max):对应点数最多的分量值;
  • 中值(Mid):以该值为分界,大于等于(和小于等于)该值的分量值对应点数占到大约一半;
  • 平均值(Avr):该分量上所有点的分量值的算术平均值。
测算图片任意区域的信噪比SNR

在线模式下从板端获取到第一帧图片数据,或离线模式下打开了图片文件后,还可以选择使用信噪比SNR测算功能。在工具上方选择Noise页签即可开启该功能。

图 1 SNR测算工具

被打开的图片显示在工具中央。按住鼠标右键并移动鼠标,可以挪动图片的位置;使用鼠标滚轮可以将图片进行等比缩放。

找到需要测算SNR的区域后,使用鼠标左键将该区域框出,工具即会在界面上方的文本框里给出SNR的测算结果。

本工具中计算SNR的公式为:-20*log(区域均方差/255)。

图 2 显示SNR计算结果

原始数据(RAW)和YUV分析工具

工具界面

从PQTools工具主界面工具栏的外挂插件下拉框中选择“RAW YUV Analyzer”,可以打开RAW/YUV分析工具,如图1或图2所示。

图 1 Hi3519DV500 RAW/YUV分析工具主界面

图 2 Hi3516CV610 RAW/YUV分析工具主界面

RAW/YUV分析工具可以查看用户所打开的图像上每一个点的分量和具体亮度值,以及亮度分布的直方图。变换图像显示区域上方的选项卡设置,可以选择查看整体图像和每一个分量的图像。

另外,RAW/YUV分析工具在Online Debug页面中集成了在线对NR标定参数进行验证的功能(参考"NR标定结果验证")。

选择数据来源

RAW/YUV分析工具支持连接单板在线分析,支持在线抓nr debug map显示,支持打开本地的RAW格式文件进行分析,也支持打开本地的YUV格式文件进行显示。对于本地RAW/YUV数据,工具在支持专有格式RAW/YUV文件的同时,也支持通用RAW/YUV数据格式。

若连接在线分析,请按以下步骤进行操作:

  1. 在PQTools工具主界面上,打开一个调试表文件(芯片型号与版本均匹配板端)
  2. 在单板上运行ISP/VI/VPSS的业务。
  3. 将PQTools工具连接到单板。
  4. 通过主界面TOP->Mode Handle选择抓RAW通道(参考"读写通路设置")。
  5. 在原始数据分析工具的主界面上,单击“Online Analyzing”单选框。设置获取图像的深度(Depth)。(在线分析过程中亦可以修改设置)
  6. 勾选上Dump RAW的复选框。

须知:

目前RAW分析工具的在线抓拍功能直接抓取的均是线性模式下的RAW图像数据。 抓取数据的bit数不应该小于sensor数据的bit数。

若要支持在线抓nr debug map显示,请按以下步骤进行操作:

  1. 起板端业务前将使能开关打开并设置足够的num,例如bnr_info_en = TRUE,bnr_buf_num = 20。
  2. 在原始数据分析工具的主界面上,单击右边的“NR Debug”单选框,勾选“Dump”按钮。
  3. 在RAW Merge界面下显示在线抓的nr debug map。

须知:

仅Hi3516CV610支持。

若要打开本地的RAW数据文件,请按以下步骤进行操作:

  1. 在RAW/YUV分析工具的主界面上,单击左边的“Local File”单选框。
  2. 选择一个.raw为后缀名的文件。
  3. 如果工具能检测到所打开文件的文件名被‘_’分割成数量不少于5段的连续字符,且包含图像信息(分辨率、Bits、Bayer),例如RAW_2688x1520_12bits_RGGB_Linear.raw,则会自动解析,否则会弹出详细设定对话框。在弹出的详细设定对话框中,用户需指定该数据文件的分辨率,位宽,Bayer类型与文件头偏移值,紧凑RAW选项。

    图 1 通用RAW数据文件详细设定

  4. 单击“OK”按钮。

    选定数据来源后,工具将显示原始数据的图像,如图2所示。

    图 2 显示原始数据图像

  5. 多帧RAW文件查看

    在原始数据分析工具的主界面上,在Frame文本框中输入要跳转到帧页面,按回车键即可跳转,也可使用Up/Down按钮在当前帧的上下页面之间跳转。

成功导入RAW文件后,支持单击Setting按钮重新设置参数再点OK按钮刷新显示图像。

若要打开本地的YUV文件,请按以下步骤进行操作:

  1. 在原始数据分析工具的主界面上,单击右边的“Local File”单选框,并单击“Open YUV File”。
  2. 选择一个.yuv为后缀名的文件。
  3. 如果工具能检测到所打开文件的文件名被‘_’分割成数量不少于5段的连续字符,且包含图像信息(分辨率、BitWidth、PixelType、VideoType),例如YUV_1920x1080_8bits_420sp_linear.yuv,则会自动解析,否则会弹出详细设定对话框。在弹出的详细设定对话框中,用户需指定该数据文件的分辨率,位宽,像素格式,视频格式。

    图 3 通用YUV数据文件详细设定

  4. 单击OK,图像数据显示参照图3所示,多帧文件的操作也参照上述的多帧RAW文件的操作。

  5. 在YUV Merge界面下,YUV Parameter中的“Color Gamut”,用于选择当前显示的YUV的色域空间;“Nominal Range”用于选择YUV显示的标称范围。

成功导入yuv文件后,支持单击Setting按钮重新设置参数再点OK按钮刷新显示图像。

须知:

工具暂时只支持导入像素格式为semi-planar 420、视频格式为linear的YUV文件。

获取合并后的原始图像数据

在RAW Merge界面下,原始数据图像显示出来以后,将鼠标指针移到图像中,即可观察到鼠标指针指向的点(称为目标点)及其周围的点的分量和亮度值。

如果默认的图像大小取点困难,可以采用以下几种方式来缩放或调整图像:

  1. 按住鼠标右键并移动鼠标可以拖拽图像。
  2. 鼠标滚轮向前,可以将图像放大,且放大后的图像会聚焦到鼠标单击的点。鼠标滚轮向后,可以将图像缩小。
  3. 在Zoom框内,单击“+”或“-”按钮,可以按照预置的比例放大缩小。
  4. 在Zoom框内的输入框中,直接输入缩放比例。

分析数据显示在左侧的“Raw Data Graph”(分析数据图)框里,如图1所示。

图 1 分析数据图

其中,被黑色粗边框包围的方格表示目标点,其它的方格为目标点周围的图像点。

每个方格的背景颜色表示图像点属于哪个分量(在分析数据图下方有图例),方格内的数值表示图像点具体的亮度值。

可以通过“Pixels Around Mouse Point”设置分析数据图显示目标点周围图像点的范围(可选3x3、5x5、7x7)。

显示亮度统计直方图

如需查看特定区域的亮度分布统计直方图,用户可使用鼠标左键,在显示的图像上用鼠标画出一个方框,作为分析区域,如图1所示。

图 1 划定亮度分析区域

选定分析区域以后,工具将弹出对话框,显示亮度统计直方图以及具体的统计数据,如图2所示。

图 2 显示亮度直方图和详细统计数据

在统计图内,横轴代表有效分量值的范围,纵轴代表对应某个特定亮度的点数。图片下方带颜色的文字显示了该分量上的一些特殊值:

  • 最大值(Max):对应点数最多的分量值;
  • 中值(Mid):以该值为分界,大于等于(和小于等于)该值的亮度值对应点数占到大约一半;
  • 平均值(Avr):所有点的亮度值的算术平均值。
  • 右侧的列表显示了每一个亮度值对应点的点数。

通过窗口右上角的下拉框,可选择查看整体直方图和单分量直方图。

查看分量图像

将工具界面的选项卡切换到“RAW Components”标签,可以查看分量图像。如图1所示。

图 1 查看分量图像

3A 分析工具

PQTools工具提供了3A分析工具插件,供用户方便地查看3A统计数据。

工具界面

从PQTools工具主界面工具栏的外挂插件下拉框中选择“3A Analyzer”,可以打开3A分析工具,如图1所示。

说明:

在抓取3A统计数据之前,需通过主界面TOP->Mode Handle选择抓YUV通道(参考"读写通路设置"),通过主界面StatisticsConfig->AEConfig设置;统计AE和AWB信息时,支持拼接时的信息统计,仅Hi3519DV500支持。

图 1 3A分析工具界面

获取图像与统计数据

3A分析工具当前仅支持连接单板进行分析。打开工具界面后,用户需通过以下操作从单板获取图像,以及对应的统计数据:

  1. 在PQTools工具的主程序上连接板端。
  2. 在3A分析工具的主界面上,在Capture Image From之后的下拉框中,选择图像数据源。目前工具支持从VI、VPSS或VO上获取图像数据,Hi3516CV610不支持VO。
  3. 勾选Capture Image from之前的复选框。

之后工具将自动从板端抓取数据,直到用户取消对Capture Image 复选框的勾选。成功从板端抓取数据后,工具会在下方的灰色区域显示图像效果如图1所示。

图 1 3A分析工具显示图像数据

  • 单击“+”或“-”按钮,可以按照预置的比例放大缩小。
  • 输入框中,直接输入缩放比例。
  • 鼠标右键可以拖动图像
  • 单击Reset可以复位图像的大小和位置
查看AE统计数据

单击3A分析工具右上角的AE按钮,可以打开AE统计信息对话框如图1所示。

图 1 AE统计信息对话框

  • 界面上的Stitch复选框,支持拼接功能。且FE Histogram有多组,且为1024。
  • Pipe id用于选择不同pipe的拼接分块统计信息,只有在勾选了Stitch的情况下才有效。用户需要保证Pipe id与主界面TOP页面的 ViPipe一致才能使图和统计信息对应。
  • Select Item下拉框用于选择某个分块统计信息的分量显示在图像中的每个分块格子内,当选择None时,图像上不显示任何值。

同时,3A分析工具的主界面图像区域也会被黄线分割成一个个区间,用户可以使用鼠标左键进行区间选择,如图2所示。

图 2 AE区间选择

AE功能页面各区域功能如下(对应图1):

  1. 统计信息:可以查看全局和分区间的分量平均值。在3A分析工具主界面切换选区时,选择区间的统计信息数据会变化。
  2. 保存统计信息:单击“Export AE Statistics”按钮,可将从板端获取的AE统计信息数据保存为明文的txt文件;
  3. 直方图:可查看AE统计直方图。可使用上方的下拉框或标签页选择来切换想要查看的直方图。After DRC Histogram 1024是工具板端程序自动将AE统计信息切换到After DRC之后,重新获取上来的BE直方图,切换到After DRC Histogram 1024后,全局统计信息和分块统计信息也会是After DRC的。All Histogram是将所有的直方图合并到一个页签内,该页内的某个直方图(背景色变成白色),则当前的分块统计信息和全局统计信息也会与之对应。

须知:

  • 拼接模式下,若图像是多路拼接的,则导出的统计信息也是多路的,并且与图像是相对应的。以Hi3519DV500为例,VI、VPSS导出Pipe的统计信息,VO导出拼接后的统计信息。
  • 当Histograms Quick Jump下拉框切到MG时,是没有直方图信息的,只有全局统计信息和分块统计信息,线性模式下,MG统计信息默认是bypass的(获取上来全是0),需要将工具主界面Top-> Bypass Setting中 bit_bypass_mg_stat去勾选才能获取到正常的MG统计信息。
  • 在获取After DRC位置的BE统计信息前,需要将Exposure Attr中的op_type和hist_stat_adjust分别设置Manual和Disable,并且要将DRC的开关打开,否则After DRC统计信息可能会有异常。
  • 当选择从VI或VPSS获取图像时,板端工具会创建一个VENC通道用于将VI和VPSS通道的YUV送入进行编码生成JPEG图像,再发送给3A分析工具。创建的VENC通道的通道号默认为最后一个通道,可以通过修改板端版本包里面的config.cfg中的“JpegChn”来配置。选择从VO获取图像则是由板端将VO通道的YUV图像直接发送给PC端。
  • Hi3516CV610只支持获取BE统计信息。
查看AF统计数据

单击3A分析工具右上角的AF按钮,可以打开AF统计信息对话框如图1所示。还可以选择在3A主界面上显示某通道某成员的值。

图 1 AF统计信息对话框

同时,3A分析工具的主界面图像区域也会被黄线分割成一个个区间,用户可以使用鼠标左键进行区间选择,如图2所示。

图 2 AF区间选择

在统计信息对话框中,可以查看所选区间的AF统计信息。在3A分析工具主界面切换选区时,统计信息数据会变化。

单击AF统计信息对话框下方的“Export AF Statistics”按钮,可将从板端获取的统计信息保存为明文的txt文件。

须知:

  • Hi3516CV610只支持获取BE统计信息。
  • 拼接模式下,若图像是多路拼接的,则导出的统计信息也是多路的,并且与图像是相对应的。以Hi3519DV500为例,VI、VPSS导出Pipe的统计信息,VO导出拼接后的统计信息。
查看AWB统计数据

单击3A分析工具右上角的AWB按钮,可以打开AWB统计信息对话框如图1所示。AWB界面上有Stitch复选框,支持拼接操作。

图 1 AWB统计信息对话框

同时,3A分析工具的主界面图像区域也会被黄线分割成一个个区间,用户可以使用鼠标左键进行区间选择,如图2所示。

图 2 AWB区间选择

在统计图上显示的内容有:

  1. 红色曲线:普朗克曲线。
  2. 绿色点:全局统计信息在普朗克坐标系上对应的点。
  3. 紫色点:AWB计算结果在普朗克坐标系上对应的点。
  4. 蓝色点:分区间统计信息在普朗克坐标系上对应的点。
  5. 绿色曲线:基础白区区间。其中中间线基本等同于普朗克曲线,与active_shift值相关。
  6. 蓝色点段线:r_gain和b_gain的取值范围。在手动模式下,这两个值固定;在自动模式下,会和当前板端设定的高低色温相关。
  7. 右上和左下的红色直线围成的区域:分别为排除紫色和绿色干扰而从白区中剔除的区间。与AWB参数中的curve_l_limit和curve_r_limit相关。
  8. 十字型标记:表示独立光源点。周围的红色或绿色圆圈表示独立光源点的影响范围。其中绿色圆圈表示增加的白区表现,红色圆圈表示因排除干扰而剔除的白区表现。
  9. 紫色的Result Coordinate字样:显示AWB在普朗克曲线上的坐标值。这个坐标值的倒数为AWB结果所在的以r_gain、b_gain为坐标的空间,即以g/r和g/b为坐标的空间。转到g/r和g/b空间后,再乘静态白平衡系数,就是AWB结果。

通过图像上方的Show Statistics、Show Planckian Curve、Show White Zone可分别控制坐标图上统计信息、普朗克曲线和白区区间(包含独立光源点)的显示与隐藏。

从左侧图像上选定区间,可以将右侧坐标图上对应该区间的统计信息点高亮显示。用鼠标左键点选分区间统计信息的点,可在3A工具主界面的图像上自动选择对应的区间。

BIN 0用于显示不同亮度范围下的统计图。亮度范围取决于同一页面下的HistBinThresh。

单击“Export AWB Statistics”按钮,可以将从板端获取到的统计信息数据保存为明文的txt文本文件。

须知:

  • 拼接模式下,若图像是多路拼接的,则导出的统计信息也是多路的,并且与图像是相对应的。以Hi3519DV500为例,VI、VPSS导出Pipe的统计信息,VO导出拼接后的统计信息。
  • 拼接模式下,每一路的参数是独立配置的,每一路的分块个数都需要配置,而且需要相同。即每一路的stitch_enable,zone_col,zone_row需要相同。
  • 3A分析工具获取的AWB统计信息是统计模块直接输出结果。
  • 配置AWB统计模块位置为Expander后,3A分析工具的统计信息和AWB算法的统计信息不一致。此时,AWB分析工具不可用。
  • Hi3516CV610不支持stitch。
AWB独立光源点编辑

3A分析工具中的AWB页面独立光源点编辑。在工具上单击“Extra Light Source Setting”按钮,可以打开独立光源点编辑对话框,如图1所示。

图 1 独立光源点编辑示意图

用户可以编辑最多4组独立光源点设置。按照以下的步骤即可进行:

  1. 选择编辑的独立光源点组(左侧Source 1至Source 4);
  2. 选定独立光源点类型:Idle——无白区设置;Add light source——添加独立光源点;Delete sensitive color——剔除干扰区域;
  3. 指定光源点的红色和蓝色增益值,以及作用半径;
  4. 视需要重复步骤1-3后,单击“OK”按钮。

设置完成后,再抓取一次3A分析信息,普朗克坐标图即会刷新并显示用户的独立光源点及其引入的白区范围。

此外,用户可以通过图像区域上选取区间来快速添加独立光源点。在区间上单击右键,工具即会弹出选项菜单,如图2所示。

图 2 添加独立光源点选项菜单

用户可以在Add Light Source菜单项中选取独立光源点组添加独立光源点,在Delete Light Source中选取独立光源点组剔除干扰区域。选取后,在弹出的对话框中输入半径,即可完成添加。

须知:

若菜单中选取的独立光源点组在之前已经有独立光源点设置,则其将会被覆盖。

应用局部AWB结果至全局AWB

工具支持将某一区间上的AWB结果应用至全局。在区间上单击右键并选择Apply Result to Global(见图2),即可完成设置。

须知:

  • 使用该功能后,AWB将强制变更为手动模式。如需切换回自动模式,请调节PQTools工具主界面的相关寄存器参数。
  • 如果所选分区间的统计信息存在CountAll=0、R=0、B=0三种情况中的任意一种,则无法应用此区间的AWB结果至板端。此时工具会提示错误。

自动对焦工具

从PQTools工具主界面工具栏的外挂插件下拉框中选择“Auto Focus Tool”,可以打开自动对焦工具。

该工具支持自动对焦参数仿真功能(For Horizontal Filters 和For Vertical Filters页签)和辅助对焦功能(Focus Assistant页签)

自动对焦参数仿真功能使用说明

Auto Focus Tool工具提供了自动对焦参数仿真功能,使图像质量调试人员可以:

功能界面

进入For Horizontal Filters 和For Vertical Filters页签,可以使用自动对焦参数仿真功能,如图1所示。

图 1 自动对焦参数仿真功能

功能分为For Horizontal Filters 和For Vertical Filters两个页签,相互独立,分别对应水平和垂直方向的滤波器参数仿真。

AF水平滤波器具备以下两种模式:

  • 窄带模式(Narrow Band):此种模式下,AF水平滤波器将在一个较小的频率范围内进行对焦。当用户设置的截止频率的低频小于0.04时,工具将推荐用户使用窄带模式。这个模式下,截止频率高频最大值为0.25。
  • 宽带模式(Wide Band):此种模式下,AF水平滤波器将在一个较大的频率范围内进行对焦。当截止频率的低频大于或等于0.04时,工具将推荐用户使用宽带模式。这个模式下,截止频率高频最大值为0.5。

用户可以使用Apply To Board按钮将参考组表中任意的一组数值下发到板端对应的寄存器分组来对模式和滤波系数进行设置。

通过截止频率获取AF滤波系数

在每个页签中,用户均可以用截止频率来生成滤波系数。在Generate from Frequencies处输入截止频率的低频和高频后,单击“Generate AF Parameters”,即可生成截止频率对应的滤波系数,显示在Parameters adjustment下方的各个文本框中,并在右侧的坐标图上显示对应该组滤波系数的频率响应曲线,曲线以红色表示,如图1和图2所示。

图 1 水平滤波器通过截止频率获取滤波系数

图 2 垂直滤波器通过截止频率获取滤波系数

须知:

截止频率在工具中会自动适配精度。水平滤波器的截止频率取小数点后两位,垂直滤波器的截止频率取小数点后一位。取精度时,多余的小数位数直接舍弃。

手动配置滤波系数

除了通过截止频率获取对应的滤波系数,用户还可以手动对每个滤波系数项进行设置。在Parameters adjustment处,找到对应的参数并进行修改后,工具将自动计算这组参数的频率响应曲线并绘制在右侧。曲线以红色表示。但是“IIRShift”参数为只读参数,不能进行手动配置。

设置参考组

如果用户想要在不同组的滤波系数间对比,可以使用参考组功能。当用户需要将某一组滤波系数列为参考组时,单击“Add to Reference List”按钮,工具即会在右下角的列表中添加一行,列出该参考组的参数项,如图1所示。

图 1 参考组列表

对于每一个参考组,工具还将在上方的坐标图上生成一条曲线,以灰色表示,如图2所示:

图 2 参考组的曲线显示

用户还可以将某一参考组的曲线高亮显示出来。在列表中单击需要高亮显示的参考组,此时对应的曲线会在上方的坐标图中变成蓝色,如图3所示:

图 3 选中参考组曲线高亮显示

通过这样的方式,用户可以在不同的参考组间进行频率响应曲线对比,从而发现更优的方案。

须知:

  • 在坐标图上,红色的当前参数曲线和蓝色的参考组高亮曲线相对其他的灰色参考组曲线处于更上方的位置。因此,会出现刚刚添加参考组时看不到灰色曲线的状况。此时只要修改滤波系数,使红色曲线重新绘制,就能看到灰色的参考曲线。
  • 每个页签上最多只能添加6组参考组。如果需要添加新的参考组,请先单击Clear Reference List删除所有参考组或单击列表中最后一列"Del"按钮删除指定参考组。
辅助对焦功能使用说明

Auto Focus Tool提供了辅助对焦功能,可以辅助用户在手动调焦的时候使焦距更快的达到最佳状态。进入Focus Assistant页签即可启动该功能,辅助对焦工具的界面如图1所示。

图 1 辅助对焦功能界面

工具界面主要分三大部分:

(1) 操作区:进行各种工具操作

(2) 图像和区间显示区:显示抓拍到的图像,区间分布和各个区间的FV值(其中黄色值为区间当前的FV值,蓝色的值为区间历史FV最大值)

(3) FV变化曲线:显示全局FV值的变化曲线。其中横坐标为1的点为最近取到的FV值所表示的点。每次FV值刷新时,之前取到的值会右移。

利用辅助对焦功能进行调焦

使用辅助对焦功能调焦的步骤如下:

  1. 将镜头焦距调整为最模糊状态。
  2. 通过主界面TOP->Mode Handle选择VPSS的YUV通道(参考"读写通路设置")。
  3. 确定当前设备的AF区间配置状态:勾选Grab AF Statistics,并在图像显示区的区间数量变化时取消勾选。
  4. 选择FV组别:在FV Set下拉框下选择FV1(对应低频,峰值较缓达到)和FV2组(对应高频,峰值较快达到)。
  5. 在图像和区间显示区域单击确定调焦时需要关注哪些区间。其中关注的区间左上角会显示一个绿色圆圈。可以单击工具左侧的Select All Zones选定所有区间,Deselect All Zones取消所有区间选定,方便操作。
  6. 再次勾选Grab AF Statistics。此时图像显示区和下方的曲线图开始不断刷新。
  7. 调整镜头焦距。此时FV值曲线最大值红线稳步升高。
  8. 当发现FV值曲线上1位置的点开始出现平稳下降时,最大值红线的位置应该不再变化(可视为红线FV为理论最优对焦FV)。此时反方向调焦至1位置上的点无限接近红线位置即可。
对焦辅助操作

如果用户在调焦过程中,需要确定点播图像上的区域属于哪个区间,可以单击Capture Image来抓拍一帧图像。图像显示在图像区域后,即可进行确认。

工具上Grab AF Statistics勾选后,工具将以一个固定的时间间隔从板端获取AF统计信息。用户可以修改通过界面上的Interval值来改变这个间隔。改变范围为50~1000毫秒。

如果用户不需要查看分区间FV值的当前值和峰值,可以将左侧的Show Zone FV复选框取消勾选。取消勾选后再次勾选,区间FV值会再次显示。

如果用户改变了区间配置,此时的理论FV最大值会发生变化。建议用户此时单击“Reset FV Chart”按钮。单击后,右下方图表中的历史全局FV值将被清空,最大FV值的红线也将归零。

导入AF配置文件

通过修改AF的配置,可以使设备的AF模块更好地适应运行环境,并进行更有效的对焦。除了直接调整PQTools工具主界面StatisticsConfig页面下的AF参数,从辅助对焦工具中亦可直接导入ini配置文件,实现对AF参数的导入。

步骤如下:

  1. 在PQTools工具目录下找到FOCUS.ini文件,将其复制到任意可写目录,并打开进行修改(修改为对应场景的参数)
  2. 在辅助对焦工具上单击Import AF Config按钮,选择刚刚修改的配置文件

须知:

修改ini文件时,请仅修改各参数的值。修改参数标题会造成数据无法正确导入,或是导入后引发无法预料的问题。

其他辅助工具使用说明

抓拍工具使用说明

PQTools工具提供了易于使用的抓拍工具,可以抓取板端的图像数据(RAW、YUV、JPEG),也可以抓拍AE、AWB和Dehaze的Debug信息并保存为本地文件。

工具界面

从PQTools工具主界面工具栏的外挂插件下拉框中选择“Dump Tool”,可以打开抓拍工具,如图1所示,主界面分为五部分。

  • RAW图像抓拍
  • YUV图像抓拍
  • JPEG图像抓拍
  • Debug信息抓拍
  • 抓拍后续处理

图 1 抓拍工具界面

抓取RAW图像数据

抓取RAW图像数据步骤如下:

单通路:

  1. 在“RAW Image”分组框中选择抓取RAW数据的位宽。
  2. 在Mode下拉框处选择设备模式:

    • 若设备运行在线性模式下,请选择“Linear”;
    • 若设备运行在WDR模式下,请根据设备实际运行情况,选择VC通路(VCNum)或多VC结合(2in1等)选项。
  3. 在pipe下拉菜单 选择要抓取的pipe。

  4. 设置抓取的次数 Captimes。
  5. 如果需要在抓拍成功后的文件名中体现帧数量等信息,则勾选“Custom File Name”,可以自定义文件的名称前缀,并在抓拍后的文件名中体现帧数量(实际抓拍到的帧数);
  6. 如果板端运行Stitch拼接业务时,若需要从拼接的各路同时抓取RAW图像,则勾选“StitchFlag”,抓拍成功后得到的RAW文件的帧数是界面上输入的次数*拼接路数,帧顺序为Stitch pipe的顺序;
  7. 如果需要在抓拍RAW数据的同时保存ISP相关信息,请勾选“Raw Info”(勾选此选项并进行抓拍后,工具会在保存通常RAW数据文件的同时,还会生成一个带有ISP信息的文本文件)
  8. 如果需要在抓拍RAW数据的同时保存编码信息,请配置config.cfg 文件中[Other]的RawExtraInfo=1,板端重启业务,然后抓拍RAW数据,就会生成一个带有编码信息的文本文件。编码信息为板端抓完所有RAW数据后,从/proc/umap/rc获取的文本信息。
  9. 如果需要连续不断地抓拍RAW数据,请勾选“Auto Capture”。勾选后,单击“Capture”按钮,工具就会抓拍一组连续帧保存到文件中(帧数在界面上配置),然后又继续发送命令抓拍,直到用户单击 “Cancel”按钮才停止。每组RAW数据之间是非连续的。
  10. 如果需要抓多帧不连续RAW数据,请勾选“Discontinuous Capture”。勾选后,单击“Capture”按钮,工具就会不断地抓一帧数据保存到同一个文件,直到抓的帧数为界面上配置的帧数。
  11. 单击“Capture”按钮。若勾选了“Change file directory”,每次单击“ Capture ”,抓拍工具都会弹出选择保存RAW文件路径的对话框,否则只有首次抓拍会弹出。若抓取成功,则保存在已选择的目录下并且会弹窗显示保存路径。
  12. 若抓取成功,且板端的config.cfg中配置Method值为0(默认为0),RAW数据将保存到工具已选择的路径下。
  13. 在抓取YUV或RAW图像数据时,用户可随时取消抓取。单击“Cancel”按钮,工具会在抓取到下一帧数据后停止进行抓取,并恢复界面可操作状态。但是若工具已经抓取到最后一帧图像数据,则暂停会无效,工具还将弹出图像数据保存对话框。

多通路:

  1. 在“RAW Image”分组框中选择抓取RAW数据的位宽。
  2. 在Mode下拉框处选择设备模式:

    • 若设备运行在线性模式下,请选择“Linear”;
    • 若设备运行在WDR模式下,请根据设备实际运行情况,选择VC通路(VCNum)或多VC结合(2in1等)选项。
  3. 单击多通路功能复选框 Multiple 在弹出的多个复选框中选择和板端业务匹配的通路

  4. 设置抓取的次数 Captimes .
  5. 单击“Capture”按钮。若勾选了“Change file directory”,每次单击“ Capture ”,抓拍工具都会弹出选择保存RAW文件路径的对话框,否则只有首次抓拍会弹出。若抓取成功,则保存在已选择的目录下。

    须知:

    • 多通路抓拍不支持单通路下的拼接复选框功能.但是可以单独抓取多个拼接通路的RAW文件。同时多通路抓拍功能最少需要选择一个pipe。多通路模式下 按照选择的pipe个数保存文件。一个文件对应一个pipe。
    • 抓取的图像数据均为纯数据,不包含任何头数据。
    • 抓取RAW数据时需要common VB配置为图像的像素数乘以2,否则抓取可能会失败。
    • 抓取数据的bit数不应该小于sensor数据的bit数。
    • Hi3519DV500解决方案最大支持帧数为5000帧,实际抓取的连续最大帧数取决于板端内存大小。
    • 若抓取的帧数较大,超出了板端当前分配的vb块数,需要修改ini文件,增加分配给业务的vb块数。板端可供抓取的帧数为业务第一次启动时的所有可用Pool下的Minfree之和(通过cat /proc/umap/vb查看),如果大于这个数,会占用业务正常运行时使用的vb,导致抓取的帧是不连续的。
    • 拼接模式下RAW文件保存顺序:四路拼接,勾选StitchFlag,Frames为2,抓取的RAW文件帧顺序按stitch pipe顺序保存(pipe0-pipe1-pipe2-pipe3-pipe0-pipe1-pipe2-pipe3)。
    • WDR场景下RAW文件保存顺序:WDR(2to1),Frames设2为例。若主pipe为0,保存顺序(pipe0-pipe1-pipe0-pipe1);若主pipe为1,保存顺序(pipe1-pipe0-pipe1-pipe0)。
    • WDR场景下不支持勾选Multiple同时从多pipe抓。如果要抓多pipe,可分别从pipe0、pipe2抓。
    • Hi3516CV610不支持抓拼接RAW。
抓取YUV图像数据

抓取YUV图像数据步骤如下:

  1. 通过主界面TOP->Mode Handle选择抓YUV通道(参考"读写通路设置");
  2. 在“YUV Image”分组框中选择抓取YUV数据的位置(VI/VPSS/VO/MCF);
  3. 如果板端运行Stitch拼接业务时,若需要从拼接的各路同时抓取YUV图像,则勾选“StitchFlag”,抓拍成功后得到的YUV文件的帧数是界面上输入的帧数*拼接路数,帧顺序为stitch pipe的顺序;
  4. 输入抓取的帧数;
  5. 单击Capture按钮,若抓取成功,且板端的config.cfg中配置Method值为0(默认为0),YUV数据将保存到工具已选择的路径下;
  6. 当勾选了“Change file directory”,每次抓拍工具将弹出选择保存YUV文件路径的对话框,否则只有首次抓拍会弹出。若抓取成功,则保存在已选择的目录下。

    须知:

    • Hi3519DV500解决方案最大支持帧数为5000帧。
    • 勾选StitchFlag后,从Stitch前端绑定模块抓取数据,与YUV Image Capture选取的YUV数据抓取位置无关。
    • 若抓取的帧数较大,超出了板端当前分配的vb块数,需要修改ini文件,增加分配给业务的vb块数。板端可供抓取的帧数为业务第一次启动时的所有可用Pool下的Minfree之和(通过cat /proc/umap/vb查看),如果大于这个数,会占用业务正常运行时使用的vb,导致抓取的帧是不连续的。
    • 若通道开启压缩模式,抓取YUV会进行解压缩再发送给PC端,解压缩的操作会占用一块VB。
    • 拼接模式下YUV文件保存顺序:四路拼接,勾选StitchFlag,Frames为2,抓取的YUV文件帧顺序按stitch pipe顺序保存(pipe0-pipe1-pipe2-pipe3-pipe0-pipe1-pipe2-pipe3)。
    • Hi3516CV610不支持VO、MCF、stitch。
抓取JPEG图像数据

以Hi3519DV500为例,抓取JPEG图像数据步骤如下:

  1. 在“JPEG Image”分组中,在“Capture from”下拉框处选择抓取数据的位置(Stitch\VI\VPSS\VENC);选择Stitch时,如果是单镜头抓拍,选择镜头对应的Pipe,勾选Pipe0或Pipe1,如果是双镜头抓拍,Pipe0和Pipe1都勾选,如果需要抓拍Stitch拼接的所有镜头,则勾选All Pipe。Source Seq用于指定Stitch前端模块(例如VPSS)的镜头顺序(例如4路场景的两路非融合拼接,Source Seq指定为3 2 1 0,表示用户定义VPSS Grp3为镜头0,VPSS Grp2为镜头1,VPSS Grp1为镜头2,VPSS Grp0为镜头3),镜头号会体现在JPEG文件命名上。(Stitch通路的Current Index用于命名图片,从01开始,抓取到的命名文件用于Stitch Tool进行标定)
  2. 根据不同位置显示的不同UI,在Group、Pipe、Chn等编辑框输入相应的值,选择Check控件是否使能。(Trigger复选框勾选时是在snap通路抓图像数据,不勾选时抓的是视频通路数据)
  3. 单击“Capture”按钮,抓取JPEG图像。如果勾选了“Change file directory”复选框,每次单击“Capture”都会让用户选择保存目录,否则就使用上次选择的目录。

    须知:

    • “Capture from”选择Stitch\VI\VPSS时,出JPEG的编码通道在板端的config.cfg文件中设置。JpegChn =7表示这个JPEG编码通道的通道号,不能与业务中使用的编码通道号重复。
    • “Capture from”选择VENC时,需要保证该编码通道为JPEG编码通道,否则抓拍失败。
    • 如果业务中没有JPEG编码通道,从H.264\H.265编码通道绑定的前端模块(比如VPSS)抓拍JPEG,即可得到对应的JPEG图像。
    • “Capture from”选择Stitch时,需要在Stream工具上配置Stitch的通道绑定关系,具体请参考章节"Stitch数据源切换"。
    • 不支持压缩通路抓jpeg。
    • Hi3516CV610不支持Stitch、snap。
抓取调试信息

PQTools工具提供了抓取AE/AWB/Dehaze/BLC模块调试信息的功能。可以在“Debug Information”分组框内找到操作接口。

  • 抓取AE的调试信息步骤如下:

  • 通过主界面TOP->Mode Handle选择通道(参考"读写通路设置")。

  • 在“AE/AWB/Dehaze/BLC Max Frame Count”文本框里输入抓取调试信息的帧数。
  • 单击AE右侧“Start”按钮。
  • 单击AE右侧“Stop”按钮。若抓取成功,工具将弹出保存文件对话框,此时选择保存位置。

  • 抓取AWB的调试信息步骤如下:

  • 通过主界面TOP->Mode Handle选择通道(参考"读写通路设置")。

  • 在“AE/AWB/Dehaze/BLC Max Frame Count”文本框里输入抓取调试信息的帧数。
  • 单击“AWB”按钮右侧“Start”按钮。
  • 单击“AWB”按钮右侧“Stop”按钮。若抓取成功,工具将弹出保存文件对话框,此时选择保存位置。

  • 抓取Dehaze的调试信息步骤如下:

  • 通过主界面TOP->Mode Handle选择通道(参考"读写通路设置")。

  • 勾选主界面Dehaze->Enable使能Dehaze。
  • 在“AE/AWB/Dehaze/BLC Max Frame Count”文本框里输入抓取调试信息的帧数。
  • 单击Dehaze右侧“Start”按钮。
  • 单击Dehaze右侧“Stop”按钮。若抓取成功,工具将弹出保存文件对话框,此时选择保存位置。

  • 抓取BLC的调试信息步骤如下:

  • 通过主界面TOP->Mode Handle选择通道(参考"读写通路设置")。

  • 在“AE/AWB/Dehaze/BLC Max Frame Count”文本框里输入抓取调试信息的帧数。
  • 单击BLC右侧“Start”按钮。
  • 单击BLC右侧“Stop”按钮。若抓取成功,工具将弹出保存文件对话框,此时选择保存位置。

须知:

  • 若界面上对应的抓取功能被禁用,则表示当前的芯片无法支持。
  • 抓取的AE、AWB、Dehaze和BLC调试信息为转换后的明文数据。
  • 抓取的AWB调试信息中的统计信息,支持最大32*32分块* 4bin工作模式,或者最大32*32分块* 1bin * 4路拼接工作模式。

灌RAW、YUV工具

从PQTools工具主界面工具栏的外挂插件下拉框中选择“ISP Simulator”,可以打开灌RAW、YUV工具。

RAW实用工具使用说明

ISP Simulator提供了RAW实用工具,可供用户将抓取的RAW图像数据倒灌回板端。

工具界面

进入RAW Utilities页签,可以使用RAW实用工具,如图1所示。

导入RAW文件后,RawSource列支持选择“FE、USER、FE-Stitch、USER-Stitch”。选择FE-Stitch或USER-Stitch为拼接模式,选择FE或FE-Stitch表示从FE灌RAW。Hi3516CV610只支持选择从USER灌。

图 1 RAW实用工具界面

导入RAW数据

在进行倒灌和转换操作之前,用户需要导入RAW数据,单击工具右上角的Add RAW File按钮即可添加RAW文件,支持同时导入多个文件。

如果导入的RAW文件是在抓拍工具抓拍到,且以默认文件名保存的(格式形如RAW_1920x1080_12bits_RGGB_Linear_XXXXXX),则RAW实用工具可以直接解析这个RAW文件的大小、位宽、模式、分量排序。

工具会对每一个无法直接解析文件名的RAW文件弹出图1所示的RAW属性输入框,此时用户需要手动填写RAW数据的属性。

图 1 RAW属性输入

按如下步骤填写:

  1. 在Resolution (W x H)处填写RAW图像的分辨率。如果RAW图像实际的分辨率为常用分辨率,可在右边的Quick Select下拉框快速选择;
  2. 选择RAW数据是在哪个stream模式下被抓拍出来的(线性/WDR VCNum0~3/WDR结合2~4 in1);
  3. 在Bit Depth下拉框处选择RAW数据的位宽(8bits/10bits/12bits/14bits/16bits);
  4. 在Bayer Format处选择RAW数据对应的分量排序模式(RGGB/GRBG/GBRG/BGGR)。
  5. 若导入的所有文件中,所有尚未设置属性的RAW数据与当前设置属性的RAW数据具备完全一致的分辨率、模式、位宽、分量排序值,则用户可以勾选Apply to all unresolved RAW files复选框,指示工具对所有尚未设置属性的RAW数据统一设置属性。
  6. 单击“OK”按钮。

导入RAW数据完成后的界面如图2所示。

图 2 导入RAW数据后的RAW实用工具界面

导入RAW文件后可以进行以下列表编辑操作:

  • 选中:可以直接在列表上单击一行以选中当行指定的RAW文件。可以使用Ctrl或Shift按钮进行多选;
  • 上移/下移:选中RAW文件后,可以单击Move Up将选中的文件上移一个位次,或是单击Move Down下移一个位次;(多选RAW文件时,仅对选中的第一个RAW文件生效)
  • 删除:选中RAW数据后,可以单击Delete按钮删除所有选中的RAW文件项;
  • 清空:单击Delete All按钮,可以清空RAW文件列表。
  • 全选/反选:单击Deselect All取消全部,单击Select all选中全部。
  • 可以修改 pipe 列的数值来指定要灌入的 VIpipe通道 [0,7]。
  • 勾选Use the same option功能复选框后,RawSource、Pipe、F.Start、F.End、F.Gop列修改一个同时可以修改列表内的所有RAW文件对应参数。
RAW数据的ISPInfo信息

用户在导入RAW数据时,工具会先获取RAW文件的ISPInfo信息。

ISPInfo信息获取来源优先级:

  • RAW的同名txt。
  • RAW的文件名。
  • 用户输入。

具体每种方式如下:

  • RAW的同名txt: 信息完整时,正常导入;信息不完整或有误时,参数默认值为0,提示用户信息不全的参数。
  • 无txt,文件名符合以下规范:

    文件名信息完整时,正常导入;例如:RAW_3840x2160_16bits_RGGB_WDR(2in1)_iso105_ag1024_dg1024_ispdg1080_exp456_cnt30.raw_cvt.raw

  • 无txt,文件名符合目前工具抓出来的规范:

    文件名基础信息完整但ISPInfo信息没有时,正常导入,ISPInfo默认值为0。例如:RAW_3840x2160_16bits_RGGB_WDR(VCNum1)_20190110142508.raw

  • 无txt,文件名不符合任意规范:

    文件名基础信息不完整,弹框输入基础信息,ISPInfo信息不全或没有时,解析不到的参数值默认为0。

单击RAW工具界面的Info列的按钮,弹出ISPInfo编辑界面,可以修改和保存选择的RAW文件的Info信息。

图 1 ISPInfo信息编辑界面

界面功能如下:

  • Frame Number编辑框:显示索引号为编辑框中的frame的ISPInfo信息。
  • “<<” 和“>>”按钮:切换显示RAW头尾frame的ISPInfo信息。
  • “<”和“>”按钮:切换显示RAW前后frame的ISPInfo信息。
  • 通过修改滚动条的值切换到对应frame的ISPInfo信息的显示。
  • Set to all frames按钮:将当前界面上的ISPInfo信息设置到RAW的所有帧。
  • Refresh按钮:将板端的BlackLevel的值刷新到界面上。
  • Save Raw Information按钮:会把编辑后的RAW的所有frame(主pipe和非主pipe)的ISPInfo按照索引号保存到文件中,默认文件名和RAW相同,文件格式为txt,文件名字和路径可编辑。
  • 编辑框内输入的值,超出范围时,均按照取值范围做剪切并生效。
  • 右上角下拉框可选择设置紧凑与非紧凑RAW,NON_COMPACT表示非紧凑,COMPACT表示紧凑。
向板端倒灌RAW图像数据

向板端倒灌RAW图像数据步骤如下:

  1. 导入RAW文件后 默认的灌入通路为pipe 0,可以手动修改RAW文件列表的Pipe属性来选择灌入的板端通路;
  2. 按"导入RAW数据"章节的说明,导入需要灌入的RAW文件。可以同时灌入多个文件。导入后,在列表第一列勾选需要灌入的RAW文件。
  3. 使用右侧的Move Up和Move Down按钮调整RAW文件的次序。工具组合RAW文件数据时,按照从上到下的顺序排列。
  4. 指定发送到板端的RAW帧的起始帧(F.Start, 从1开始计数),结束帧(F.End, 必须大于等于起始帧),以及帧发送间隔(F.Gop,默认值为1,即逐帧发送,若大于1,则跳帧发送)。
  5. 如果需要使用循环倒灌功能,请将Loop单选框勾选。
  6. 如果需要灌RAW时同时发送IspInfo到板端,需要勾选IspInfo复选框,工具就会解析与RAW文件同一路径下同名的txt文件,并将参数发送到板端。板端灌RAW过程中会将Ispinfo中的“Exposure_Time”、“A_Gain”、“D_Gain”、“ISP_D_Gain”这几个参数的值通过OT_MPI_ISP_SetExposureAttr生效;“Ratio_0”、“Ratio_1”、“Ratio_2” 这几个参数通过OT_MPI_ISP_SetWDRExposureAttr生效;“BlackLevel_R”,“BlackLevel_Gr”,“BlackLevel_Gb”,“BlackLevel_B”通过OT_MPI_ISP_SetBlackLevelAttr生效;“Bayer”则通过OT_MPI_ISP_SetPubAttr生效。并且会将对应Auto/Manual设置为Manual。当单击“Flush”停止灌RAW时,参数会被恢复到灌RAW之前的值。
  7. Hi3519DV500支持灌RAW到FE。灌RAW到FE前,需要开启自产生时序。开启方法是:勾选主界面可调项的TimingAttr页面的Enable。

    注意:

    • FE灌WDR格式RAW文件时,必须初始化起业务时即开启自产生时序属性,设置方法是在对应场景的ini文件的业务相关[vi_timing.x] 属性中配置TimingEnable = TRUE, TimingFrmRate = 合适的帧率。
    • WDR场景下灌RAW时,默认RAW数据是短帧在前长帧在后。若勾选WdrReverse,板端灌RAW数据之前重新排序,长帧在前短帧在后。
    • 不支持同时灌不同场景的RAW文件,如:双sensor,一个设备起线性业务一个设备WDR业务。
  8. 单击“Send”将图像数据发送到板端。

  9. 如果发送结束,单击“Flush”按钮通知板端结束发送。如果取消灌RAW,单击“Cancel”按钮通知板端终止灌入。
  10. 如果板端运行的是拍照业务,需要灌RAW来调试拍照效果,可以参考下面操作:

    • 将Top页面的ViPipe改为拍照的pipe,配置SnapAttr页使拍照帧数大于0;
    • 单pipe拍照模式可以灌RAW到BE(勾选SnapMode和Loop),然后用抓拍工具抓取JPEG(不勾选Trigger)。也可以灌RAW到FE(不勾选SnapMode),然后用抓拍工具抓取JPEG(勾选Trigger)。
    • 双pipe拍照模式需要勾选SnapMode和Loop灌RAW到BE,灌入的帧数需要与SnapMode中的帧数保持一致,然后勾选抓拍工具的Trigger,从抓拍通路抓取JPEG。当抓取JPEG时,正在循环灌到视频通路的RAW会被灌到抓拍通路,抓取的JPEG与灌入的RAW是一一对应的关系。
  11. 如果是线性多通路场景或者WDR及拼接场景。在不使用默认的WDR或者拼接RAW文件灌入时,不勾选界面的 Use the same option复选框然后导入想要灌入不同通路的RAW文件。修改各自的Pipe属性。单击“Send”即可灌入板端不同通路,此功能不限制不同通路之间的分辨率差异(需要各个通路的灌入帧数保持一致)。

须知:

  • .F.Gop和F.Start配合使用,可用于发送RAW文件中的部分帧:比如导入帧顺序按stitch pipe顺序保存RAW文件(pipe0-pipe1-pipe2-pipe3-pipe0-pipe1-pipe2-pipe3),如果F.Start设置为3(即从第三帧开始)、F.Gop设置为4,则可将pipe2的RAW数据灌入板端。
  • RawSource选择一致时,所有相同通路的RAW文件必须具备相同的分辨率,位域,Bayer序列和模式,且必须与所灌入通路的设置一致。否则灌入操作会失败。
  • 若灌入的帧数较大,超出了板端当前剩余的MMZ内存,可以在保证板端业务正常运行的前提下,将分配给业务的vb的块数尽可能地减少。
  • 若要将WDR(VCNum1~3)格式的RAW灌到线性场景下,需要手动将文件名中的“WDR(VCNum1~3)”更改为“Linear”,如果有对应的isp info的txt文件,则需要将文件里的WDR_Mode值改为0。
  • 若没接sensor时需要灌RAW进行调试,可以打开自产生时序后进行灌RAW(将ini文件中的TimingEnable设置为TRUE后重启业务),以这种方式灌RAW时WDR模式下的帧率可能会不达标。
  • 灌的过程中点“Cancel”取消后再灌,部分场景图像可能显示异常,需要点“Flush”或重启板端恢复。
AIBNR向板端倒灌RAW图像

须知:

  • 仅Hi3516CV610支持;
  • 工具不支持pattern转换;
  • 只支持12bits非紧凑RAW数据预处理;
  • AIBNR灌RAW通路推荐使用400M以上内存;
  • AIBNR灌RAW通路需要打开vi_pipe_param中aibnr_debug_en开关,此时不能关闭AIBNR数据流和aibnr_attr的enable算法开关。

AIBNR从BE倒灌RAW图像步骤如下:

  1. 板端起支持AIBNR从BE倒灌RAW的业务

    1. 加载ko命令时需将profile置为0,例如:./load3516cv610_00s_debug -a -profile 0
    2. 板端起业务命令:./PQTools.sh -a sensorXXX_aibnr 1;
  2. 使用PC端工具对原始RAW进行预处理:

    1. 单击右侧的“Preprocess”按钮,弹出预处理界面,如图1所示;
    2. 参考导入RAW数据小节,导入原始RAW文件后,勾选要进行预处理的原始RAW文件;
    3. 输入合适的User BLC,默认1200;
    4. 选择勾选Change the directory。如果不勾选,则每个RAW文件的预处理结果存放在原文件所在目录。如果勾选,当单击预处理时,会弹出文件目录选择框,所有RAW文件的预处理结果统一存放在选择的文件目录下。
    5. 单击AIBNR Preprocess,工具会根据RAW数据的IspInfo信息和User BLC的值对RAW文件的所有帧数据进行预处理。

      预处理过程如图2所示。

      • 单击预处理后用户可以看到RAW文件的预处理进度;
      • 当预处理过程中,用户想取消时,可以单击“Cancel”按钮,中断预处理。在中断之前已经预处理的数据可以正常使用。
  3. 参考RAW数据的ISPInfo信息与向板端倒灌RAW图像数据,从BE倒灌处理后的RAW;AIBNR只支持RGGB格式;

  4. 根据步骤 2预处理输入的User BLC,在调试界面打开BLC的user_black_level_en,并将user_black_level改为对应值;否则会效果异常。

图 1 预处理界面

图 2 预处理过程

YUV实用工具使用说明

ISP Simulator提供了YUV实用工具,可供用户将抓取的YUV图像数据倒灌回板端。

工具界面

进入YUV Utilities页签,可以使用YUV实用工具,如图1所示。

图 1 YUV实用工具界面

向板端倒灌YUV图像数据

向板端倒灌YUV图像数据步骤如下:

图 1 YUV属性输入

  1. 通过主界面TOP->Mode Handle选择灌YUV通道(参考"读写通路设置");
  2. 单击“Add YUV File”按钮,选择YUV文件添加到左侧列表中。
  3. 在弹出的对话框中指定YUV文件的各项参数(如果YUV文件来源于抓拍工具,则此步骤可以省略,配置对话框不会弹出)。
  4. F.Start和 F.End用于指定发送到板端的YUV帧数的范围(以1起始,起始帧不能大于结束帧)。
  5. 在Send to下拉框中设置灌入位置。
  6. 可勾选“StitchFlag”复选框进行拼接灌包,选择“Loop”复选框循环灌包。
  7. 单击“Send”将图像数据发送到板端。
  8. 单击“Flush”按钮,停止循环灌包;单击“Cancel”按钮,取消灌YUV。

    须知:

    • F.Gop和F.Start配合使用,可用于发送YUV文件中的部分帧:比如导入帧顺序按stitch pipe顺序保存YUV文件(pipe0-pipe1-pipe2-pipe3-pipe0-pipe1-pipe2-pipe3),如果F.Start设置为3(即从第三帧开始)、F.Gop设置为4,则可将pipe2的YUV数据灌入板端。
    • 默认提供的ini不支持从VI灌YUV,如需要请参考ini文件适配“说明9”配置ini并重新启动业务。
    • Hi3519DV500支持从VI/VPSS/Stitch/VENC模块灌入。Hi3516CV610支持从VI/VPSS/VENC模块灌入。
    • 当前支持两种格式 YUV_planar420,YUV_semiplanar420
    • 对mcf 模块灌入YUV时,要自行确认好对应通路的YUV格式。保证黑白和彩色YUV灌入正确的mcf chn。同时和其他模块不同,mcf 灌YUV需要注意,Pipe/Grp通路默认一般为0,需要根据chn号来设置区分黑白和彩色通路。
    • 灌YUV数据时会disable通道,VI通道disable时会关闭DIS模块,需重新设置。
    • 灌的过程中点“Cancel”取消后再灌,部分场景图像可能显示异常,需要点“Flush”或重启板端恢复。

外接存储设备抓灌说明

PQTools工具提供了抓拍RAW或YUV存外接存储设备和从外接存储设备读取RAW文件倒灌的功能。

使能该功能需要配置板端的config.cfg。

抓取图像存储到外接设备

Config.cfg的[Method]是抓拍存外接存储设备的控制参数。[Yuv_Image]和[Raw_Image]中的参数等同于PC端工具界面上的参数。[Method]中的各参数作用如下:

[Method]

  • 0:关闭抓拍存外接存储设备功能;
  • 1:可通过PC端来触发抓RAW/YUV存储到设备;
  • 2:重启板端业务会自动抓取RAW/YUV存储;
  • 3:重启板端业务会自动读取文件灌RAW。
  • 4:重启板端业务会自动读取文件灌YUV。

[Path]

保存图像文件的路径,可设置为挂载的外接存储设备的路径。

[Option]

  • 0:表示边抓图像边存文件,该方式不受限于板端的内存,但受限于存文件的速度,若速度不够快时,可能会导致丢帧。文件需要以O_DIRECT的方式打开,文件系统需要使用CMA方案(请见“使用CMA方案保存RAW文件到SSD”描述);
  • 1:表示先抓完图像存到VB中,再将VB中的图像数据一起写到文件中,该方式受限于板端内存的大小。

[SplitSize]

当抓拍的图像文件长度超过该值(单位为MBytes),程序会自动切分文件。

[DelayTime]

若Method配置为2或3,启动板端工具后,程序会延迟DelayTime分钟的时间再进行自动抓灌。

[Image]

  • 0:表示抓YUV;
  • 1:表示抓RAW;
  • 2:表示抓Stream;

[SaveIspInfo]

当设置为1时,抓RAW或YUV会生成对应的IspInfo信息的txt文件。

[DumpTimes]

若Method配置为2时,启动板端工具后,程序会抓取数据的次数。

须知:

  • 板端保存文件是紧凑型的,而工具端保存的文件则是非紧凑型的,所以板端保存的10bit和12bit的图像文件是不能直接给工具端使用的。
  • 若开启Method,3A分析工具、鱼眼标定工具、辅助对焦工具等需要抓拍的工具将无法抓拍,图像已被存在板端。
使用CMA方案保存RAW文件到SSD

使用CMA方案配置uboot启动参数和加载相关ko的参数,以Hi3519DV500为例:

  • 修改u-boot的参数:

    setenv bootargs 'mem=4032M mmz_allocator=cma mmz=anonymous,0,0x64000000,3520M console=ttyAMA0,115200 root=/dev/mtdblock2 rw rootfstype=yaffs2 mtdparts=nand:1M(boot),9M(kernel),16M(rootfs)'
    
  • Hi3519DV500修改load3519dv500,Hi3516CV610修改load3516cv610:将该脚本中的mmz_allocator=ot改为mmz_allocator=cma

    修改config.cfg,如图1和图2所示。

    图 1 配置自动抓RAW参数

    图 2 抓RAW的帧数

从存储设备中读取文件灌RAW

需要将[Method]中的【Method】配置为3以启用灌RAW功能。

需要适配[Module]中【vipipe】,根据业务进行配置。

适配[Auto_Load]模块:

【Loop】

当配置为1且【SrcPath】为文件名时,可以开启循环灌RAW的功能。

【MultipleFlag】

  • 0:PC单通路灌RAW或YUV;
  • 1:灌拼接RAW或YUV;
  • 2:PC多通路灌 RAW 或 YUV;
  • 3:保留功能项;
  • 4:保留功能项;
  • 5:board 灌 RAW 或 YUV.

【SrcPath】

  • 当配置为RAW文件的路径名时,程序会读取该目录下所有的RAW或YUV文件并灌入(一次配置只支持灌一种文件,RAW或者YUV);
  • 当配置为路径+RAW或YUV文件名时,程序只会读取该文件并灌入。

【SaveType】

  • 0:只进行灌入RAW或YUV,不抓取数据
  • 1:灌入RAW或YUV,抓取并保存YUV数据
  • 2:灌入RAW或YUV,抓取并保存为h264/h265码流

【DestImagePath】

生成YUV或码流的路径。

说明:

【SaveType】配置为1时,需要配置[Yuv_Image]中【Capture_from】,选择VI或VPSS抓取并保存YUV数据。 【SaveType】配置为2时,需要将ini中的Transfer改为FALSE才能正常抓取并保存码流数据,此时码流将不会被发送到PC端。 【SaveType】配置为1或2时,程序灌入RAW或YUV数据后,会抓取YUV或码流并保存。一个灌入文件对应一个输出(YUV或码流)文件,输出文件名中会包含灌入RAW或YUV文件的文件名。 【SrcPath】配置为路径名目录,若该目录下有子目录,那么【DestImagePath】目录下也会自动创建同名的子目录,并在该目录下生成YUV或码流文件。 若[Method]中的【SaveIspInfo】配置为1时,生成YUV的同时会生成对应的Ispinfo的txt文件。

适配[Raw_Load]模块:

【RawSource】

  • 0:灌RAW到FE;
  • 1:灌RAW到 USER。

当配置为1时进行灌RAW,通路会循环处理同一帧RAW数据以保证帧率达标直到下一帧RAW数据灌入。由于读文件灌RAW的速度赶不上业务配置的帧率,通路上就会出现重复帧。所以不建议配置为1时,进行灌RAW存YUV和灌RAW存H264/H265码流。

【ReadyFrames】

该参数控制灌RAW的准备帧数,用于使ISP稳定。程序会取RAW文件的前(ReadyFrames / 2)帧,若不足(ReadyFrames / 2)帧,则取所有帧,先正序灌到第(ReadyFrames / 2)帧,不足(ReadyFrames / 2)帧的则灌到最后一帧,再倒序灌到第1帧,该步骤反复进行,直到灌入的帧数等于该参数配置的值。之后程序便可以从第一帧开始灌并抓YUV。

【WithIspInfo】

当配置为1时,程序会解析RAW文件的IspInfo信息并设置到ISP中。解析IspInfo有两种方式。

  • 方式1:是通过文件名解析,该文件名必须符合这种格式:xxxx_xxxx_xxxx_1920x1080_12bits_RGGB_ag1024_dg1024_ispdg1024_exp2061_iso100_Ratio98_xxxx_xxxx.raw;
  • 方式2:读取与RAW文件同路径下并且同名的txt文件,程序优先解析txt文件;

    IspInfo的配置方法如下:程序会将IspInfo中的“Exposure_Time”、“A_Gain”、“D_Gain”、“ISP_D_Gain”这几个参数的值通过OT_MPI_ISP_SetExposureAttr生效;“Ratio_0”、“Ratio_1”、“Ratio_2” 这几个参数通过OT_MPI_ISP_SetWDRExposureAttr生效;“BlackLevel_R”,“BlackLevel_Gr”,“BlackLevel_Gb”,“BlackLevel_B”通过OT_MPI_ISP_SetBlackLevelAttr生效;“Bayer”则通过OT_MPI_ISP_SetPubAttr生效。并且会将对应Auto/Manual设置为Manual;

【NonCompact】

  • 0:紧凑RAW;
  • 1:非紧凑RAW。

【WaitFeIntCnt】

每帧RAW在灌之前都会先配置IspInfo然后等待WaitFeIntCnt个FE的中断以确保IspInfo生效于这帧RAW。

【WithBlackLevel】

当IspInfo采用方式1来解析时,BlackLevel由该参数来使能。当配置为1,则【BlackLevel_R】、【BlackLevel_Gr】、【BlackLevel_Gb】和【BlackLevel_B】的值将通过ss_mpi_isp_set_black_level_attr生效。

【BlackDataFrom】

  • 0:BlackLevel参数值来自config.cfg配置中参数【BlackLevel_R】、【BlackLevel_Gr】、【BlackLevel_Gb】、【BlackLevel_B】;
  • 1:BlackLevel参数值来自ispinfo文件。

【WdrReverse】

WDR场景下灌RAW时,采用方式0,默认RAW数据是短帧在前长帧在后。采用方式1,板端灌RAW数据之前重新排序,长帧在前短帧在后

须知:

  • 板端自动读文件灌RAW并没有帧数限制,业务流程上是读取一组灌入一组,所以灌RAW的速率受文件读取速率的限制。
  • 当某个RAW文件灌入失败,则该文件将被跳过,程序会继续读取下一个文件。
  • 灌RAW过程中可以通过连接PQTools,单击RAW Utilities页面的“Flush”来停止灌RAW。
从存储设备中读取文件灌YUV

需要将[Method]中的Method配置为4,才能开启灌YUV功能。

需要适配[Module]中【vipipe】、【vichn】、【vpssgrp】、【vpsschn】等参数,根据业务进行配置。

适配[Auto_Load]模块:参考从存储设备中读取文件灌RAW 中的[Auto_Load] 适配。

适配[Yuv_Load]模块:

【YuvSource】

  • 0:灌YUV到VI
  • 1:灌YUV到VPSS
  • 2:灌YUV到Stitch,Hi3516CV610不支持
  • 3:灌YUV到VENC

【enPixelType】

  • 1:灌planner420格式
  • 3:灌semi-planner420格式

须知:

【SaveType】配置为1时,灌入YUV和抓取YUV不能是同一模块。 【enPixelType】格式选择需要与灌入文件的YUV格式匹配,不匹配可能会导致图像异常等问题。 当某个YUV文件灌入失败,则该文件将被跳过,程序会继续读取下一个文件。 灌YUV过程中可以通过连接PQTools,单击YUV Utilities页面的“Flush”来停止灌YUV。

起业务后自动抓取RAW和DIS数据
  • 需要将[Method]中的Method配置为2:auto save to disk;
  • 将Image 配置为1:RAW Image;
  • 将Path 配置为想要保存抓取文件的路径;
  • 若SaveIspInfo配置为1,保存RAW info信息;
  • 将DumpTimes 配置为需要抓取文件的次数。
  • 配置[Raw_Image],与媒体业务匹配;
  • 配置[Raw_Image]中Frames=xxx 为想要抓取的RAW帧数,若抓取DIS数据,Frames设置需要大于1;
  • 设置想要抓取的vipipe通道 [Module] vipipe=0 (默认为0);
  • DIS场景:确认 bDisRaw 配置为 1 ;确认 bGYRO 配置为1;
  • 非DIS场景:确认 bDisRaw 参数配置为 0,确认 bGYRO 参数配置为 0.
  • 使用脚本启动业务或者重启业务,看到串口输出抓取结束即可到指定路径找到相应文件。

须知:

  • 每次触发抓取DIS数据业务,根据当前抓取类型索引生成x_dis_ldc.txt、x_msensor_param.txt 文件,将当前DIS、motionfusion、motionsensor相关参数保存到文件。
  • x_dis_ldc.txt、x_msensor_param.txt支持在灌数据时导入。
  • Hi3516CV610不支持。
起业务后自动抓取YUV和DIS数据
  • 需要将[Method]中的Method配置为2:auto save to disk;
  • 将Image 配置为0:YUV Image;
  • 将Path 配置为想要保存抓取文件的路径;
  • 若SaveIspInfo配置为1,保存YUV info信息;
  • 将DumpTimes 配置为需要抓取文件的次数。
  • 配置[Yuv_Image],与媒体业务匹配;
  • 配置[Yuv_Image]中Frames=xxx 为想要抓取的YUV帧数,若抓取DIS数据,Frames设置需要大于1;
  • 设置要抓取的通道 [Module] vipipe/vichn或vpssgrp/vpsschn;
  • DIS场景:确认 bDisYuv 配置为 1 ;确认 bGYRO 配置为1;
  • 非DIS场景:确认 bDisYuv 参数配置为 0,确认 bGYRO 参数配置为 0.
  • 使用脚本启动业务或者重启业务,看到串口输出抓取结束即可到指定路径找到相应文件。

    须知:

    Hi3516CV610不支持。

起业务后自动抓取码流和DIS数据
  • 需要将[Method]中的Method配置为2:auto save to disk;
  • 将Image 配置为2:Stream Image;
  • 将Path 配置为想要保存抓取文件的路径;
  • 将DumpTimes 配置为需要抓取文件的次数。
  • 配置[Stream_Image]:Frames=xxx 为想要抓取的码流帧数。
  • 设置想要抓取的venc通道 [Module] vencchn=0 (默认为0)
  • 然后将对应的起业务ini配置文件中的 venc.x 通道属性Transfer 设置为 FALSE
  • DIS码流场景:确认 bDisStream 配置为 1;vencDisOn及vencDisOff chn与媒体业务匹配;确认 bGYRO参数配置为 1;
  • 非DIS码流场景:确认 bDisStream 配置为 0,确认 bGYRO 配置为 0;
  • 使用脚本启动业务或者重启业务,看到串口输出抓取结束即可到指定路径找到码流文件。

须知:

  • 每次触发抓取DIS数据业务,根据当前抓取类型索引生成x_dis_ldc.txt、x_msensor_param.txt 文件,将当前DIS、motionfusion、motionsensor相关参数保存到文件。
  • x_dis_ldc.txt、x_msensor_param.txt支持在灌数据时导入。
  • vencDisOn 或 vencDisOff 为-1时,不使用此参数,此时抓取一路码流+陀螺仪数据。
  • Hi3516CV610不支持。
起业务后自动灌YUV和DIS数据并抓取码流
  • 将[Method]中的Method配置为4:auto load yuv from disk;
  • 配置[Module]中的vipipe,与业务匹配;
  • 配置[Auto_Load]
  • 将SrcPath 配置为YUV和DIS数据路径;
  • 将DestImagePath 配置为输出文件路径;
  • 将SaveType 配置为2:save h264/h265;
  • 配置[Motionfusion_Load]:
  • 将MotionfusionEnable配置为1;
  • 配置AccTEMPEnable:若x_accdata.txt文件中缺少temperature时配置为0,若包含temperature时配置为1;
  • 配置maxEnable:需要从config.cfg读取数据时配置为0,需要从文件中读取时配置为1;
  • 使用脚本启动业务或者重启业务,看到串口输出抓取结束即可到指定路径找到码流文件。

须知:

  • 灌YUV和DIS数据业务,只支持从VI灌入YUV,需适配ini中[vi_pipe.x]模块参数。
  • 灌DIS数据业务前,需适配ini中[dis_motionfusion_load]模块参数:MsensorStartEn关闭,LoadFileEn打开,DisLdcFilePath、MSensorFilePath配置文件路径。
  • DisLdcFilePath、MSensorFilePath配置需注意:路径与config.cfg保持同级;加载文件数据为固定格式,来自抓取DIS数据,详见 起业务后自动抓取RAW和DIS数据和起业务后自动抓取码流和DIS数据。
  • 开启防抖灌陀螺仪数据时,由于陀螺仪数据和YUV匹配原因,抓出来的码流最前和最后三帧存在几帧效果不稳定现象。
  • Hi3516CV610不支持。
起业务后自动灌RAW和DIS数据并抓取码流
  • 将[Method]中的Method配置为3:auto load raw from disk;
  • 配置[Module]中的vipipe,与业务匹配;
  • 配置[Auto_Load]
  • 将SrcPath 配置为RAW和DIS数据路径;
  • 将DestImagePath 配置为输出文件路径;
  • 将SaveType 配置为2:save h264/h265;
  • 配置[Raw_Load]
  • 将WithIspInfo配置为1;
  • 根据场景及RAW类型适配RawSource、ReadyFrames、NonCompact等参数;
  • 配置[Motionfusion_Load]:
  • 将MotionfusionEnable配置为1;
  • 配置AccTEMPEnable:若x_accdata.txt文件中缺少temperature时配置为0,若包含temperature时配置为1;
  • 配置maxEnable:需要从config.cfg读取数据时配置为0,需要从文件中读取时配置为1;
  • 使用脚本启动业务或者重启业务,看到串口输出抓取结束即可到指定路径找到码流文件。

须知:

  • 灌DIS数据业务前,需适配ini中[dis_motionfusion_load]模块参数:MsensorStartEn关闭,LoadFileEn打开,DisLdcFilePath、MSensorFilePath配置文件路径。
  • DisLdcFilePath、MSensorFilePath配置需注意:路径与config.cfg保持同级;加载文件数据为固定格式,来自抓取DIS数据,详见 起业务后自动抓取RAW和DIS数据和起业务后自动抓取码流和DIS数据。
  • 开启防抖灌陀螺仪数据时,由于陀螺仪数据和RAW匹配原因,抓出来的码流最前和最后三帧存在几帧效果不稳定现象。
  • 若ReadyFrames不为0灌RAW数据时,当帧数小于ReadyFrames时,只灌RAW数据不灌陀螺仪数据,当帧数不小于ReadyFrames时,灌入RAW和陀螺仪数据。
  • Hi3516CV610不支持。

鱼眼标定工具

说明:

Hi3516CV610不支持鱼眼标定工具。

PQTools工具提供了鱼眼标定工具,可以根据鱼眼镜头抓拍的图像自动确定鱼眼镜头的位置特性(偏移、半径),使GDC模块能正确还原图像。该工具需要配合鱼眼镜头使用。

为了使工具能更准确的确定鱼眼轮廓,用户抓拍时需要尽量使鱼眼图像区域和黑边区域的边角清晰可辨。抓拍前请先设置最低ISO,降低噪声影响。

推荐抓拍步骤为:

  1. 首先用一般的白色纸巾(或者其他相似物品,如白色打印纸等)均匀覆盖鱼眼镜头;
  2. 然后设置较长曝光时间(可以通过降低帧率来增大曝光时间),使鱼眼图像基本曝光过度(可以适当提高AE的目标亮度Compensation),并且四周黑色区域不泛白;
  3. 最后调节镜头对焦至镜头光圈位置或者纸巾表面,使鱼眼图像边缘清晰,完成抓拍。

抓拍完毕后,打开PQTools工具,在插件下拉框中选择“Fish Eye Calibration Tool”,即可打开鱼眼标定工具,如图1所示。

图 1 鱼眼标定工具界面

标定前,用户须根据实际需求,在界面左上角的下拉框中选择标定级别(Level 0~2)。标定级别越高(Level 2),算法对图像进行预处理的强度就越高,从而得到标定结果的稳定性就越高。用户可以使用两种方式导入用户标定的图像:

  • 在线抓取:单击“Capture Image”可从板端抓取一张YUV图像。可通过右侧的下拉框选择图像来源(From VI/From VPSS/From VO);(请按照上文推荐的方式进行抓拍)
  • 选择本地文件:单击“Open Image File”,选择YUV图像导入。如果图像文件名符合抓拍工具的默认文件名格式,则工具自动解析其分辨率和格式信息,否则,用户需要在弹出的对话框中自行输入这些参数。

须知:

  • 鱼眼标定工具仅支持8bit、420sp格式的YUV数据,请勿导入其他格式的YUV数据文件(例如P444,P400等,Dump Tool抓出的sp420 YUV格式可以使用)。
  • 鱼眼标定工具对于非鱼眼高亮抓拍的YUV数据也能进行标定,但结果没有意义。请用户自行保证输入鱼眼YUV的正确性。

文件输入完毕后,工具自动运行标定,并在上方的文本框中显示结果:

图 2 鱼眼标定工具输出参数结果

其中Center表示鱼眼中心在图像中的位置(以图像左上角为坐标原点,第一个数值为横坐标,第二个数值为纵坐标),Radius表示鱼眼的半径,Offset表示鱼眼圆心位置与图像中心的偏移值(第一个数值为水平方向偏移,第二个数值为垂直方向偏移)。

同时,下方的图像显示区域会显示打开的图像,并绘制一些辅助图元:

图 3 鱼眼标定工具输出参数结果

工具会显示以下几种辅助图元:

  1. 边缘圆周:工具会根据计算出的鱼眼圆心坐标和半径将鱼眼的圆周用红色线条绘制出来。
  2. 鱼眼中心点:工具标定时会将鱼眼中心以蓝色点标出。
  3. 图像中心点:工具标定时会将图像中心以紫色点标注,并以紫线与鱼眼中心点连线(在鱼眼偏移较大的场景下显示会较明显)。

标定完成后,若用户需要切换标定级别并重新标定,可采取以下操作:

  • 抓拍标定的场合:切换级别后,重新单击“Capture Image”进行抓拍标定。
  • 本地文件标定的场合:切换级别后,单击“Calibrate”按钮。
  • 单击“Save Sample Image”按钮,可将画了辅助线的标定输出图像保存到本地。
  • 单击“Save Mask Image”按钮,可获取stitching矩阵转换用的遮罩图像。
  • 单击“Apply To Board”按钮,可以将标定出的鱼眼参数设置到板端VPSS模块。

LMF转换工具使用说明

说明:

Hi3516CV610不支持LMF转换工具。

PQTools工具提供了LMF参数转换工具,使得用户可以将镜头厂商提供的镜头参数转换为LMF矩阵。从PQTools工具主界面的下拉框中选择“LMF Converter”即可启动该工具,其界面如图1所示。

图 1 LMF转换工具界面

将镜头参数转换为LMF矩阵,请遵循以下步骤进行:

  1. 通过主界面TOP->Mode Handle设置VI Pipe(参考"读写通路设置");
  2. 输入由一系列浮点数组成的镜头角度数据(Lens Angle),输入数字间以逗号进行分隔,最大支持2000个浮点数组成的序列。单击“Import”按钮,可以直接导入文本文件中记录的数据。
  3. 输入由一系列浮点数组成的镜头映射表(Lens Mapping Table),输入数字间以逗号进行分隔,最大支持2000个浮点数组成的序列。单击“Import”按钮,可以直接导入文本文件中记录的数据。畸变数据中包含的浮点数个数必须与角度数据中浮点数的个数相同。
  4. 输入视野值(Lens Fov),取值范围为[90, 360 );
  5. 输入表项类型。表项类型分两种,1)Distortion;2)LensMappingCurve。缺省值是Distortion。若Lens Mapping Table是镜头模型与理想Equidistance模型之间的差异,则在此处选择Distortion模式。若Lens Mapping Table是镜头映射曲线,即镜头入射角与真实像高的对应关系,则在此处选择LensMappingCurve模式。
  6. 单击“Convert”按钮,执行转换。转换结束后,工具会生成一个由128个整数组成的LMF矩阵序列,并显示在右侧的文本框中。
  7. 单击“Export Result”,以明文方式保存转换后的数据。
  8. 单击“Apply to Board”,将转换后的数据下发板端。

须知:

表项"LensAngle" and "Lens Mapping Table" 长度需要一致,长度不能超过2000。 表项"LensAngle" 的第一个参数需要是0。如果厂商提供的表项里面没有0,则需要在"LensAngle" and "Lens Mapping Table"这两个表项里面的最前面一个元素补0。举例如下:

  • 镜头提供的表项: LensAngle = {0.1,0.2,0.3,0.4, ... }, Lens Mapping Table= {0.002,0.0041,0.0061,0.0082, ... }

  • 配置给工具的表项如下: LensAngle = {0, 0.1,0.2,0.3,0.4, ... }, Lens Mapping Table= {0, 0.002,0.0041,0.0061,0.0082, ... } LMF转换工具,理论上通过像高LensMappingCurve转换LMF矩阵的方法对各种镜头都是通用的,但实际我们只验证过等距离投影和立体投影模型的鱼眼镜头是支持的,其他复杂的镜头或者投影模型没有验证过,并不能保证一定支持LMF转换。如遇到不支持的可根据实际情况另提需求。

Stitch Tool使用说明

说明:

Hi3516CV610不支持Stitch Tool。

PQTools工具针对芯片的多路拼接功能提供了一系列工具,用以满足不同场景下的拼接需求。目前主要包含了:

  • 多路拼接标定功能(Stitch Calibration):本工具主要用来根据用户所抓拍到的多路标定图,计算得到芯片所需的拼接标定参数。详细内容请参考"多路拼接标定功能(Stitch Calibration)"中所述内容;
  • 拼接颜色差异标定功能(Stitch Color Correction):本工具主要用于针对多路拼接时的Sensor个体间成像存在亮度、颜色差异的标定。详细内容请参考"拼接颜色差异标定功能(Stitch Color Correction)"中所述内容;
  • 拼接调试功能(Stitch Tuning):本工具主要用于调试出合适显示的图像,再根据调试参数生成LUT表。详细内容请参考"拼接调试功能(Stitch Tuning)"中所述内容;
  • 拼接图像(Stitch Image) : 本工具可以模拟板端的效果,生成一张预览图。详细内容请参考"拼接图像(Stitch Image)"中所述内容;

图 1 Stitch Tool界面示意

多路拼接标定功能(Stitch Calibration)

Stitch Calibration工具提供了多路拼接标定功能,可以根据用户所抓拍的多路标定图计算得到拼接标定参数。目前仅支持.jpg格式的图像。工具界面如图1所示。

图 1 Stitch标定功能界面

在使用标定工具之前,用户需要进行图像抓拍。拼接标定要求,抓拍可分为两种类型:

  • 标定单镜头的畸变矫正的图片,可将棋盘格放置镜头前方,并不断变换棋盘格方向及位置,每个镜头至少抓取10张图像。保存时以<固定前缀名><镜头号>_<帧序号>.jpg来对图像进行命名。
  • 标定相邻镜头相对位置的图片。此时需先确定相邻镜头,每组相邻镜头同时拍取标定图片,抓拍时将棋盘格放置于重叠区内,相邻镜头都要看到完整的棋盘格,不断变换棋盘格在重叠区的位置或距离或小幅度旋转,每个重叠区至少抓拍10对20张图片。保存时以<固定前缀名><镜头号>_<较小镜头号><较大镜头号>_<帧序号>.jpg来对图像进行命名。

具体抓拍要求及注意事项可参考《拼接 FAQ》第2章“模型标定方法”。

图像抓拍完毕后,按以下的流程使用标定工具进行标定:

  1. 单击“Browse”按钮,并选择抓拍图像的保存路径;(注意:图像分辨率应该大于400 * 400,否则工具报错)
  2. 在“Route Count”下拉框选择通路数量。这个数量必须和抓拍图像的环境所启用的通路数量一致;
  3. 设置每个通路的分辨率、镜头Fov值、Lens Type镜头类型与文件名前缀。如果所有通路采用一样的设置,可以勾选Use the same option复选框,这样每改变一个通路的设置时其他通路也会同步设置为相同值;

    在 Lens Type 镜头选项中:

    • 长焦畸变较小的镜头,选择 Non Fisheye,对应 lens = 0;
    • 短焦广角镜头或者畸变较大的广角镜头,选择Fisheye Full Fov,对应 lens = 1;
    • 鱼眼镜头,选择Fisheye Circular Fov,对应 lens = 2;
  4. 在Chess Board字样右侧设置棋盘格的X方向角点数量(Count X),Y方向的角点数量(Count Y)及单个格子的物理边长(Size);

  5. 单击“Calibrate”开始标定;
  6. 单击“Export Cal”导出标定生成的拼接标定参数(格式为.cal)。

标定过程中,标定工具所在目录下的tmp文件夹中将输出棋盘格检测结果图像,可用于判断所拍摄的棋盘格标定图是否能够准确的检测出棋盘格角点。如图2(a)中有彩色的角点示意,表示该标定图中的棋盘格角点检测成功,即该标定图有效,将参与标定计算;图2(b)中由于棋盘格反光较为严重,导致棋盘格角点检测失败,则没有彩色的角点示意,故该标定图无效,不参与标定计算,无效的图命名中会加入failed后缀。

图 2 棋盘格检测结果示意图

标定成功时,工具会弹出一个保存文件对话框,使用户可以保存所生成的拼接标定参数(格式为.cal)。这份拼接参数为未经处理的原始参数,用户还需要运行查找表转换功能将参数转换为二进制查找表后才能将其应用于设备。标定完成后,界面底部将输出标定误差,用于评估标定效果,分别为:

  • Maximum Re-projection Error:指最大标定误差,可以判断标定过程中是否有棋盘格内角点匹配错误情况,若该值大于20则需要评估标定图中是否出现多个棋盘格,或者命名错误;
  • Average Re-projection Error:指平均误差,若该值小于3,则标定效果是比较满意的;
  • Total Matched Point:指匹配成功的角点对,与图像数量及棋盘格内角点数相关。
  • Total Distance Ratio:指所有图片中的棋盘格距离覆盖率,即抓拍标定图时,棋盘格所覆盖的范围。当棋盘格的距离覆盖率越大时,拼接效果越好,如按照标定图像抓拍要求进行,该值一般大于1.0。
  • Minimum Distance Ratio:指多组内参或者外参标定图对应的棋盘格距离覆盖率最小值。

标定失败时,可根据错误码进行分析:

表 1 模型标定错误码的含义

错误码

对应含义

Error num = 1

无法找到重叠区

Error num = 2

读取图片/文件错误

Error num = 3

写入图片/文件错误

Error num = 4

文件无效

Error num = 5

cal文件生成错误

Error num = 6

标定初始参数错误

在模型标定上的耗时:

  • 在2路水平拼接,模型标定图片共79张,图片分辨率2688x1520,棋盘格检测无false,单目水平视场 = FOV初始值 = 110°,lens = 1,棋盘格内角点为9x6的情况下:模型标定耗时约为4min;
  • 在4路水平拼接,模型标定图片共217张,图片分辨率1520x2688,棋盘格检测无false,单目水平视场 = FOV 初始值 = 45°,lens = 0,棋盘格内角点为9x6的情况下:模型标定耗时约为58min;
  • 其余拼接场景的耗时,会因为拼接路数、图片数、分辨率、模型标定初始值、棋盘格清晰度等因素的改变而发生变化。
拼接颜色差异标定功能(Stitch Color Correction)

Stitch Color Correction 提供了颜色差异标定功能。由于物理器件及模组公差上的区别,Sensor个体间成像存在亮度、颜色差异,拼接颜色差异标定工具支持对其中两个sensor所采集的RAW数据进行亮度、颜色差异标定。标定完成后,用户将参数配置到板端,可提升不同sensor成像的亮度、颜色一致性。

单击“Stitch Color Correction”页签即可打开拼接颜色校正页面。如图1所示。

图 1 拼接颜色校正界面

用户可以在该页面内完成两个Sensor通路的亮度差异(拟合曲线)标定和CCM差异标定。标定步骤如下:

  1. 采集设备准备:标准X-Rite 24色卡、照度为600Lux、色温为5000K上下的均匀光源(左右两侧双光源,光源与色卡平面的夹角在25°- 45°)。调整AE目标,保证最亮灰阶(Block 19)的G分量亮度在饱和值的0.8倍左右。RAW数据抓图过程中需要保证不同sensor采集时的曝光量相同(曝光时间、模拟增益、sensor数字增益完全相同)。
  2. 单击“Load Left Image”,并选择对应基准sensor所抓拍的RAW图像,选取24色区域;
  3. 单击“Load Right Image”,并选择对应矫正sensor所抓拍的RAW图像,选取24色区域;还可以进行色卡选框,选框调节默认为“Coarse”模式,可统一调节所有选框的大小和位置。Coarse复选框未勾选时为“Fine”模式,此模式下可独立调节单个选框的大小和位置,也可多个选框一起调节大小,支持选中X、Y滑块后可按键盘上下或左右键精调红色方框的大小。需要进行亮度差异(拟合曲线)标定时,请勾选“Fitline Calibration”;
  4. 继续进行CCM标定时,请勾选“CCM Calibration”;用户仅需要进行CCM标定时,标定工具默认左右两侧sensor不存在亮度差异,会自动Bypass亮度差异标定。
  5. 单击“Calibrate”按钮,执行标定。

标定后,工具将依据用户选择的标定项来显示标定结果,如图2所示。

  • 若用户标定了亮度拟合曲线,则工具会在拟合曲线参数表中显示拟合参数;
  • 若用户标定了CCM,则工具会显示浮点形式的CCM矩阵表格和16进制模式下的CCM矩阵表格。

    图 2 拼接颜色校正界面

在Apply Pipe右侧的下拉框选定当前右侧sensor(即矫正sensor)对应的通道号,并单击“Apply to Board”按钮,可以将标定出来的亮度差异拟合参数及CCM矩阵发送到板端,并使其立即生效。

须知:

  • 工具使用的标定算法目前是以左侧sensor为基准,右侧sensor为标定目标来编写的,因此在选择下发板端的sensor通道号时,请务必选择右侧sensor的通道号,否则将造成颜色校正不正确。
  • 颜色差异标定时,需保证色卡的正确方向,正常是以6x4分布,且白色格子处于左下角。若RAW图像有旋转或者翻转,则需移动红色24色卡选框,使之匹配。
  • 标定的时候ROI框没选到色卡中间或者黑电平设置过大会导致输出单位矩阵。
拼接调试功能(Stitch Tuning)

Stitch Tuning可以调试出合适显示的图像,再根据调试参数生成LUT表,其中LUT可选择在PC端标定工具中生成,也可以选择在板端生成,故在产品出厂后,根据实际场景需求,配置合适的最佳拼接距离,在板端重新生成对应的LUT。

Stitch Tuning调试界面如图1所示,具体的参数含义如表1所示。

图 1 Stitch Tuning调试界面

表 1 参数说明

参数名称

描述

Camera

镜头的个数,取值范围2-4

SrcWidth/SrcHeight

输入的每路图像宽高,每一路的宽高必须一致

DstWidth/DstHeight

拼接后的图像宽高,2对齐

PrjMode

投影模式,查看《拼接 调试指南》"投影模式"章节详细介绍

CenterX/CenterY

拼接图像投影的中心点,查看《拼接 调试指南》"投影中心点"章节详细介绍

FOVX/FOVY

拼接图像显示的水平FOV和垂直FOV

ORI Yaw/Pitch/Roll

原始姿态角调整的角度,查看《拼接 调试指南》“姿态角"章节详细介绍

Yaw/Pitch/Roll

姿态角调整的角度,叠加在原始姿态角上进行调整

Sphere Distance

最佳拼接距离,在这个距离上的物体视差表现最好

Img0LeftPointX 和 Img0RightPointX

Img0 的左右裁剪位置,为偶数,其中默认 Img0LeftPointX = 0 (在 2/3/4 路拼接时需设置)

Img1LeftPointX 和 Img1RightPointX

Img1 的左右裁剪位置,为偶数 (在 2/3/4 路拼接时需设置)

Img2LeftPointX 和 Img2RightPointX

Img2 的左右裁剪位置,为偶数 (在 3/4 路拼接时需设置)

Img3LeftPointX 和 Img3RightPointX

Img3 的左右裁剪位置,为偶数 (仅在 4 路拼接时需设置)

使用Stitch Tuning步骤。

  1. 先单击”Open Data File”导入标定cal、pts、pto文件。当导入第三方标定文件pts、pto文件时,Sphere Distance置灰不可设置。
  2. 再”Load Images”导入jpg、png格式输入图像(调试过程中需要调整表中这些参数,单击"Stitch")。右下角会显示多张图经过GDC Tranform后直接拼接叠加后的图,可以较为明显看到多路图像的边界。
  3. 在PQTools tmp文件夹目录还能看到单独每一路的图,调试参数让图像显示较为自然,四周不留黑边后,如图2所示,就可以导出LUT。

    图 2 ImgLeftPointX 和 ImgRightPointX 的设置策略(以 3 路拼接为例)

在单击 stitch 按键后,出预览图上的耗时。

  • 在2路水平拼接,Src图像分辨率 = 2688x1520,Dst图像分辨率 = 5084x1520 的情况下: stitch 按键出预览图的耗时约为 5-6s;
  • 在4路水平拼接,Src图像分辨率 = 1520x2688,Dst图像分辨率 = 5600x2688 的情况下: stitch 按键出预览图的耗时约为 15-16s;
  • 其余拼接场景的预览图耗时,会因为Src图分辨率、Dst图分辨率等因素的改变而发生变化。

导出LUT需要设定多路图像的纵向裁剪位置,来保证生成的LUT无冗余的信息。以 3 路拼接的裁剪位置为例,如图2所示,Img1LeftPointX(黄色线)表示Img1的左侧裁剪位置,为了裁剪Img1左边的黑色冗余区域,Img1RightPointX(红色线)表示Img1的右侧裁剪位置,为了裁剪Img1右边的黑色冗余区域,其余Img0和Img2的裁剪过程与Img1同理。此外需要保证 Img[i+1]LeftPointX < Img[i]RightPointX ( i ≥ 0),来保证重叠区存在,选取的值让各路图像能刚好能裁剪为完整的不留黑边的图,重叠区 i 在x方向上的长度计算方式为 Img[i]RightPointX - Img[i+1]LeftPointX 。

调整好多路的 ImgLeftPointX,ImgRightPointX参数后,单击"Export LUTs Params",会导出多路的LUT,同时左下角会显示重叠区在单独每一路图(LUT变换后)中的坐标位置,以3路拼接为例,具体的含义如下,在后面的Stitch Image中会用到overlap_point[1][0].x,overlap_point[2][0].x参数,如图3所示。

  • overlap_point[0][0].x默认为0,表示多路拼接的起始位置,位于Img0处。
  • overlap_point[0][1].x表示重叠区0的左边界,在Img0中的对应位置。
  • overlap_point[1][0].x表示重叠区0的右边界,在Img1中的对应位置,也等于重叠区0的宽度 OverlapPointX[0]。
  • overlap_point[1][1].x表示重叠区1的左边界,在Img1中的对应位置。
  • overlap_point[2][0].x表示重叠区1的右边界,在Img2中的对应位置,也等于重叠区1的宽度 OverlapPointX[1]。
  • overlap_point[2][1].x默认为裁剪后Img2的图像宽度,是3路拼接的结束位置,位于Img2处。

图 3 多路 overlap_point.x 的含义

须知:

单击 Lut 生成按钮“Export LUTs Params”后,会同步在 PQTools 软件包的 tmp 文件夹下创建 src_overlap_length(for AWB).txt 文件,其内部存储的 src_overlap_length[i],表示重叠区 i 在 src 图上对应的最大宽度(沿图片水平方向的最大宽度),目前仅在水平拼接模式下生效。

拼接图像(Stitch Image)

Stitch Image拼接仿真工具可以模拟板端的效果,生成一张预览图,界面如图1所示。

图 1 Stitch Image界面

表 1 参数说明

参数

参数含义

设置条件

Camera

镜头的个数,取值范围2-4

在 2/3/4 路拼接时均需设置

SrcWidth/SrcHeight

输入原图的宽高。不可调试参数,由导入图片获取。

无需设置

TransformWidth/TransformHeight

LUT坐标变换后图像的宽高。不可调试参数,由导入LUT解析获取。

Lut CellSize

LUT的采样间隔点的大小。不可调试参数,由导入LUT解析获取。

StitchMode

拼接融合的模式,有STITCH_BLEND融合模式和STITCH_STIFF非融合模式。

在 2/3/4 路拼接时均需设置

OverlapPointX0

重叠区0的宽度,等于overlap_point[1][0].x的值。

面向重叠区0,在 2/3/4 路拼接时均需设置

BlendPositionX0

在重叠区0中融合区域的起始点位置,要小于OverlapPointX0。

BlendRange0

在重叠区0中融合区域的范围,应该要小于等于重叠区0长度,

取值限制 BlendPositionX0 + BlendRange0 ≤ OverlapPointX0。

OverlapPointX1

重叠区1的宽度,等于overlap_point[2][0].x的值。

面向重叠区1,在 3/4 路拼接时需设置

BlendPositionX1

在重叠区1中融合区域的起始点位置,要小于OverlapPointX1。

BlendRange1

在重叠区1中融合区域的范围,应该要小于等于重叠区1长度,

取值限制 BlendPositionX1 + BlendRange1 ≤ OverlapPointX1。

OverlapPointX2

重叠区2的宽度,等于overlap_point[3][0].x的值。

面向重叠区2,仅在 4 路拼接时需设置

BlendPositionX2

在重叠区2中融合区域的起始点位置,要小于OverlapPointX2。

BlendRange2

在重叠区2中融合区域的范围,应该要小于等于重叠区2长度,

取值限制 BlendPositionX2 + BlendRange2 ≤ OverlapPointX2。

DstWidth/DstHeight

不可调试参数,根据对应参数计算得到。

无需设置

使用步骤:

  1. "Load Images"导入每一路的原图,原图的大小都要一致,支持jpg、png格式;
  2. "Load LUTs"导入每一路的LUT,支持bin格式;
  3. 选择融合模式,设定 StitchMode 参数;
  4. 设定多路的OverlapPointX及Blend相关参数,2路拼接时只有1个重叠区,仅需设置OverlapPointX0及对应的Blend参数;3路拼接时有2个重叠区,需设置OverlapPointX0、OverlapPointX1及对应的Blend参数;4路拼接时有3个重叠区,需设置OverlapPointX0、OverlapPointX1、OverlapPointX2及对应的Blend参数;
  5. 单击"Stitch"得到拼接预览图,"Save"可以保存图片。
拼接辅助功能(Stitch Aux)
  • Calibration Guide提供模型标定和产线标定时,对标定工具摆放距离、尺寸、数量、形状等方面的指引,如图1;
  • Stitch Guide可以计算在最佳拼接距离下的无缝拼接景深范围,如图2。

详细请见《拼接 调试指南》文档的"标定及拼接辅助功能"章节。

图 1 Stitch Aux Calibration Guide界面

图 2 Stitch Aux Stitch Guide界面

注意:

由于实际模组存在镜头畸变、热胀冷缩、不规则形变等其他情况,标定及拼接辅助功能的输出参数仅作为参考使用,客户可根据实际情况进行调整。

OSD转换工具使用说明

说明:

Hi3516CV610不支持OSD转换工具,仅Hi3519DV500解决方案支持此功能。

若客户需要在等距柱面投影(Equirectangular)全景图底部或顶部加入特定Logo,遮挡全景相机支架,可使用OSD转换工具将圆形Logo图片转换为全景细长型的Logo图片。一般情况下,全景Logo图片的宽度与全景拼接图的宽度相同,全景Logo图片的高度则决定了Logo在全景画面中的遮挡范围,可根据实际情况配置。

在PQTools工具主界面的插件下拉框中找到“OSD Converter”并单击,即可打开OSD转换工具。其界面如图1所示。

图 1 OSD转换工具界面(已打开输入图像)

转换步骤如下:

  1. 单击“Browse”按钮并选择一个jpg格式的图像。选择图像后,工具将在Input页签中显示选中的图像,用户可以改变输出图像的宽高,范围为100~8192。
  2. 单击“Convert”按钮进行转换。

成功转换的情况下,工具会在 Output页签显示转换后的图像,如图2所示。用户可以单击“Save Result”将输出图像导出到指定路径进行保存。

图 2 OSD转换输出

须知:

输入的是圆形logo,故输入图片的宽高必须相等(正方形图片),否则无法读入。输出图像的显示有拉伸,以最终保存图像为准。

DIS标定工具使用说明

说明:

Hi3516CV610不支持DIS标定工具。

从PQTools工具主界面工具栏的外挂插件下拉框中选择“DIS Calibration Tool”,可以打开DIS标定工具。

DIS标定基本原理

在DIS(数字视频防抖)应用中,使用陀螺仪感应器,配合localDIS对图像进行精细稳像校准,由于镜头畸变的存在,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为摄像机标定。

在应用中,摄像机参数的标定是非常关键的环节,其标定结果的精度及算法的稳定性直接影响防抖效果结果的准确性。因此,做好摄像机标定是做好后续工作的前提,是提升防抖效果的重点所在。其标定的目的是为了获取相机内参、外参、畸变参数。将相机参数的标定过程集成在DIS镜头标定中。

DIS镜头标定提供模型及产线标定,并提供算法参数下发板端接口,标定结果可以直接应用在板端生效,提升评估、开发的效率。

DIS标定序列采集要求
  • 标定环境应该光照充足且尽量均匀,否则较大的噪声可能会对标定算法的检测造成影响;
  • 棋盘格图卡不能有明显反光/阴影 等导致亮暗不均的地方;否则需要调整录像机、图卡和光源的相对位置;
  • 棋盘格图卡不能过小,一般来说图卡中的每个方格应不低于10个像素;如果棋盘格在画面中占据的像素太少,可以考虑将棋盘格图卡靠近录像机或者更换更大尺寸的图卡(必要时减少棋盘格格子的数量,最少的棋盘格角点数目是4*3);
  • 画面中不能出现多个不同规格的棋盘格或者类似棋盘格式样的道具;如果出现该现象,请提前将该道具移走或者遮挡住,也可以手工在图片编辑工具中将该部分涂掉;但若是相同规格(棋盘格大小和角点数目相同)的棋盘格且不重叠是允许的,并且可以提升效率;
  • 每个棋盘格图卡在画面中必须完整,否则无法检测;
  • 不同标定图片中所有的棋盘格叠加起来要覆盖整个有效画面,并且重点覆盖四个角落;
  • 棋盘格需要覆盖至少3种不同的距离,并且这个距离最好是包含最常使用的一个距离;
  • 棋盘格需要覆盖不同的角度;
  • 每张抓拍图片中的棋盘格必须要清晰,不能有模糊现象;如果不够清晰,请先确认对焦清晰且景深较好;
  • 图卡应该满足一定程度的覆盖,该覆盖应该包括实际标定的距离、图像有效区域、不同的角度等,同一位置的多张相同图片没有意义。

表 1 建议的镜头模型标定方法(以广角镜头的产品为例、其它视场角的距离参考调整)

步骤

目标

标定方式

数量

图片编号

参考距离

备注

1

近距离大画面覆盖

保证棋盘格居中正放,最大程度覆盖最多的画面;要注意若棋盘格畸变过于明显或棋盘格显示不完整,请增大图卡和相机的距离。

2

1-2

0.5m

-

2

中距离多角度覆盖

保证棋盘格在画面中,每次将图卡旋转约30°,确保每个棋盘格在画面中完整。

4

3-6

0.6m

-

3

中距离画面全覆盖

覆盖全屏(4角+4边):每张图卡占据画面约1/4,紧贴4角抓取4张图片,并靠近4边图卡以边为轴倾斜30°抓取4张。

8

7-14

0.6m

-

4

远距离四角覆盖

增大图卡和录像机的距离一倍,让图卡紧贴镜头四个角落(尽可能靠近,并保持完整),每个角落至少抓取2张(抓取时均需重新调整位置)。

8

15-22

1.0m

-

5

不同距离覆盖

图卡在图像的不同距离和位置,并每次变换一次角度抓取若干图片,距离和位置根据前面步骤中覆盖不充分的地方进行适当增补。

8

23-30

-

-

参考以上步骤,共计需要抓取符合采集要求的图片约30张(如图1所示),实际可根据抓取图片的质量可以适当增补图片,但不宜过多。

图 1 建议的镜头模型标定方法抓取的标定图片示例

DIS标定工具界面介绍

图片采集好后,打开DIS标定工具界面,即可看到DIS标定界面由模型标定“Design Calibration”和 产线标定“Product Calibration”、Ldcv3标定“Ldcv3 Calibration”三个子页面组成;如图1所示。

需要配置棋盘格角点的数目CbDimWidth和CbDimHeight,注意不是棋盘格方格的数目,一般来说角点的数目是对应方格数目-1,当棋盘格数目配置错误时,可能出现标定失败或结果异常;

DistCoeffType是畸变系数的个数,一般默认为3个,当输出畸变参数超出芯片支持的范围时,按照3->2->1->0 的顺序逐个尝试减少数量;

DistRatio是相对输入源图像畸变的比例,默认配置为1,即不做畸变校正,畸变保持和源图像一致,不支持修改;DistRatio在参数转换(Convert Calibration Data)时起作用,转换的系数下发板端(Apply To Board)时只有在GYRO DIS 开启且LDCV2 disable后生效。

图 1 DIS标定模型标定页面

对于DIS标定页面中的模型标定来说:

  • 标定参数预设区域(红色区域):用于进行标定所需的参数设置。

    • Load Image:单击导入DIS标定图片的所在文件夹目录;
    • Up/Down:单击切换目录中图片的显示;
    • CbDimWidth/CbDimHeight:导入棋盘格横纵角点的数目,取值范围[3,1024];
    • DistCoeffType:下拉框畸变类型有四种模式。
  • 图片显示区域(蓝色区域):用于显示图片文件夹里的jpg棋盘格图,默认显示第一张;

  • 结果显示区域(绿色区域):用于显示标定完成后生成的标定结果参数(Calibration Results)和度量参数(Measurement Results)。
  • 单击“Move”可把模型标定结果导入产线标定,作为产线标定的输入参数。

图 2 DIS标定产线标定页面

对于DIS标定页面中的产线标定来说:

  • 标定参数预设区域(红色区域):用于进行标定所需的参数设置;

    • Load Image:单击导入DIS产线标定jpg图片;
    • CbDimWidth/CbDimHeight:导入棋盘格横纵角点的数目,取值范围[3,1024];
    • DistCoeffType下拉框畸变类型有四种模式。
    • FocalLengthX、FocalLengthY表示焦距,取值范围[64, 23420]
    • PrincipalPtX、PrincipalPtY表示光心[0,8192],但具体生效范围:PrincipalPtX,[W*0.35, W*0.65];PrincipalPtY,[H*0.35, H*0.65](W、H表示输入图片宽高)。DistCoeff0~2表示畸变系数。
  • 图片显示区域(蓝色区域):用于显示图片文件夹里的jpg棋盘格图,默认显示第一张;

  • 结果显示区域(绿色区域):用于显示标定完成后生成的标定结果参数(Calibration Results)和度量参数(Measurement Results)。与DIS模型标定一致。
DIS标定步骤

标定工具支持DIS的模型标定和产线标定,并且模型标定和产线标定步骤基本相同,仅在图片导入方式上存在差异。

  1. 单击“Load Image”,模型标定中导入一个含有.jpg图片的文件夹目录,产线标定中导入一张标准的.jpg图片,显示在图片显示区域,可单击“Up” “Down”按钮切换图片显示。
  2. 进行参数设置,在界面输入合理的参数,产线标定可通过模型标定Move过来的参数作为参数值,也可手动输入。
  3. 单击“Calibrate”进行标定。
  4. 单击“Convert Calibration Data”可以把标定结果参数转换成下发板端需要的参数,不进行Convert 就无法进行下发板端。
  5. 模型标定可在标定后生成标定结果参数,通过单击“Move”按钮传到产线标定作为输入参数值。
  6. 可单击“Export Calibration Data”对转换后的参数进行导出到txt文件。
  7. 单击“Apply To Board”按钮下发板端。

须知:

  • 模型标定下发板端前需将VPSS LDC页面的VPSS LDC Base项中的LDC base.ldc_version设置成LDC_V1并下发板端,下发成功后数据更新至VPSS LDC页面的VPSS LDC V1项。
  • 产线标定下发板端前需起带DIS 的sensor板端业务,下发成功后数据更新至DIS页面的VI_DISAttr项中的部分参数。
DIS标定结果说明

图 1 DIS标定结果

进行模型标定和产线标定后,都会生成如图1所示的标定结果。

标定结果参数:FocalLengthX、FocalLengthY表示焦距,PrincipalPtX、PrincipalPtY表示光心,DistCoeff0~2表示畸变系数,ImageWidth、ImageHeight表示导入图片的像素宽高。如果畸变系数不符合表1所示的畸变系数范围,按下"Convert Calibration Data”按钮会弹出报错框"Unsupported dist coeffs”。这种情况需要检查标定图片是否满足DIS标定序列采集要求。

表 1 镜头标定算法内参

参数名称

取值范围

备注

FocalLengthX

[64,1173417]

-

FocalLengthY

[64,1173417]

-

PrincipalPtX

[W*0.35,W*0.65]

W为图像宽度

PrincipalPtY

[H*0.35,H*0.65]

H为图像高度

DistCoeff0

[-0.7,1]

-

DistCoeff1

[-0.5,0.5]

-

DistCoeff2

[-0.1,0.1]

-

ImageWidth

[1280,8192]

-

ImageHeight

[720,8192]

-

度量参数:MaxReprojError表示最大标定误差,AvrReprojError表示平均误差,TotalMatchPts表示成功匹配的角对点。

表 2 镜头标定误差评估

参数名称

描述

dMaxReprojErr

最大标定反投影误差(以像素为单位),用于判断标定过程中是否有棋盘格内角点的最差匹配情况,值越小,表示标定效果越好;<=20。

dAvrReprojErr

这是平均反投影错误 (以像素为单位),用于判断标定过程中是否有棋盘格内角点的平均匹配情况,值越小,表示标定效果越好;<=4。

u32TotalMatchedPoints

指成功的检测出来的角点总数目,与图像数量及棋盘格内角点数相关。

标定结果可通过下发板端按钮将结果发送到板端,发送的数据立即生效。

表 3 镜头标定结果转换的板端参数

参数名称

描述

focal_len_x

水平方向镜头有效焦距。结果等于表1的FocalLengthX乘上100。

参数范围:[6400, 117341700].

focal_len_y

垂直方向镜头有效焦距。结果等于表1的FocalLengthY乘上100。

参数范围:[6400, 117341700].

coord_shift_x

光心X坐标。结果等于表1的PrincipalPtX乘上100。

参数范围:[35* Width,65* Width], Width为图像宽

coord_shift_y

光心Y坐标。结果等于表1的PrincipalPtY乘上100。

参数范围:[35* Height,65* Height], Height为图像高。

src_calibration_ratio

镜头畸变系数,其中[0]固定为1*10^5,[8]的范围为[0,32*10^5],其他成员范围均为[-16*10^5, 16*10^5]。

[1]、[2]、[3]分别对应表1的DistCoeff0、1、2乘上src_calibration_ratio[0]的结果

dst_calibration_ratio

镜头畸变系数。其中[12]、[13]的范围为[0, 16*10^5],每个成员范围均为[-16*10^5, 16*10^5]。

max_du

镜头畸变系数。参数范围:[0,1048576],即1<<20 = 1048576。

此外得到标定结果的同时,工具有时还会返回当前标定过程中相应的Warning提示,如图2所示的例子。

图 2 DIS标定结果提示举例

常见Warning解释:

"Warning: chessboards not fully found in image: 图片路径",表示该图片的棋盘格没有找全,没有加入当前标定结果的计算。

"Warning: The large chessboards do not occupy the entire image: xxx",表示标定图片中近距离大画面覆盖的图片四周的覆盖情况,目前这个结果仅作为参考值,还不能直接来判断标定的准确性。

"Warning: Missing image containing large chessboard(chessboardW/imgW > 60 % or chessboardH/imgH > 60 %)",表示在标定图片中没有找到近距离大画面覆盖的图片,这个情况得考虑补充相应的图片。

LDCV3镜头标定工具界面介绍

通过仪器测量出待矫正镜头的物体角度(Object Angle)与图像高度(Image Height)关系表,将图像高度以毫米(mm)为单位,作为一列放在txt文件中,物体角度以度(°)为单位,作为第二列放在txt文件中,用逗号隔开。数据格式如下所示:

3.95386,-65.00008,

3.40029,-62.40004,

最少需要包含4组测量数据,测量结果准备好后,打开LDCV3标定工具界面,导入txt文件;如Figure 1所示。

需要配置使用的sensor的像素大小(Pixel Size),例如2.9000。图像的宽度(Image Width),图像的高度(Image Height)。

图 1 LDCV3镜头标定页面

对于LDCV3镜头标定页面来说:

  • 结果显示区域:用于显示标定完成后生成的标定结果参数(Calibration Result);

    • FocalLenX、FocalLenY表示焦距,取值范围[64, 23420]
    • CoorShiftX、CoorShiftY表示光心[0,8192],但具体生效范围:CoorShiftX,[W*0.35, W*0.65];CoorShiftY,[H*0.35, H*0.65](W、H表示输入图片宽高)。
    • CaliRatio0~3表示畸变系数。
  • Sensor和镜头装配时要尽量保证sensor中心和镜头光心对齐,没有偏差。如果光心偏差会导致LDCV3矫正效果变差。有条件的情况下,可以拍摄多组棋盘格图片,在DIS标定界面使用模型标定“Design Calibration”,得到PrincipalPtX和PrincipalPtY标定结果,将该值替换CoorShiftX、CoorShiftY值。以获得更好的矫正效果。

  • 镜头测试数据中的视场角范围需要尽量大,能覆盖sensor的视场角要求。镜头测量数据的角度间隔需要尽量小,比如间隔一度测量一次。这样的镜头数据才能让LDCV3的矫正效果更好。
  • PixelSize,分辨率值,镜头测量数据,这几个数据需要都填正确,生成的LDCV3参数才能写入板端接口。如果PixelSize不正确,或者镜头测量数据不准确,都有可能导致生成的LDCV3参数报错。这时需要重新检查PixelSize,分辨率值,或者重新测量镜头数据。

    须知:

    LDCV3镜头标定下发板端前需将VPSS LDC页面的VPSS LDC Base项中的LDC base.ldc_version设置成LDC_V2并下发板端,下发成功后数据更新至VPSS LDC页面的VPSS LDC V2项。

陀螺仪工具使用说明

说明:

Hi3516CV610不支持陀螺仪工具。

从PQTools工具主界面工具栏的外挂插件下拉框中选择“DIS Debug Tool”,可以打开陀螺仪工具。

DIS Debug Capture获取陀螺仪数据
使用要求

需要sensor支持DIS功能。启动板端业务前需要加载陀螺仪相关ko,启动业务的ini文件中需要有[motionfusion]相关配置。

界面介绍

图 1 陀螺仪界面

须知:

图中①为输入区,②为图像区,③为数据显示区

使用步骤
  1. 打开工具后设置RefreshTime与Vi Pipe,通过下拉框选择界面显示数据方式,单击Start按钮开始获取。
  2. 需要停止时单击Stop按钮。
  3. 获取到数据后,在统计图上滚动鼠标滚轮可以缩放,右键单击还原图像。
  4. 单击Export按钮导出当前界面显示的陀螺仪数据。
结果说明

图 1 显示陀螺仪获取的数据

结果分为两部分,左半部分为gyro data,右半部分为acc data。以左半部分为例,图中有x、y、z、pts四种数据,横坐标为数据顺序数,用颜色来区分在图中是哪些点,其中pts为pts的间隔(由于pts的单位是微秒,间隔值较大,为了放入一幅图中,已将其除以100),表中average为平均值,standard deviation为标准差,cumulative average为累计均值,cumulative number为累计数据条数。右上角Temperature为IMU芯片的温度。

计算幅度
  1. 单击start,平稳环境中静置一段时间,等xyz pts的average值稳定下来,单击Stop,再单击Refresh AvgData保存零偏并勾选复选框(步骤可选,不影响观看振动趋势)。
  2. 上振动台保持一定的频率和振幅振动,下拉框选择Transform,单击Start按钮,得到抖动幅度最大的正弦曲线图1。
  3. 目视得到波峰与波谷的差值,或者用鼠标分别测量曲线波峰和波谷的纵坐标值,相减差值的一半约为振幅。得到的振幅只是一个大概粗略的值,与振动台设定的振幅相差不会太大。推荐使用振幅0.5,频率5Hz测试。

    图 1 正弦曲线显示界面

六面标定准确性

如图1所示,手持设备,转动方向,目视观察幅度最大的一条曲线,记录曲线及方向。

图 1 镜头转动示例图

例如,如图1所示,X轴顺时针转动时,界面显示如图2,幅度变化最大的是y曲线,趋势向下,所以表格第一行应勾选y-。

图 2 镜头从下往上转动工具界面显示

如图1所示,Y轴顺时针转动时,界面显示如图3,幅度变化最大的是x曲线,趋势向下,所以表格第二行勾选x-。

图 3 镜头从左往右转动工具界面显示

此时表格勾选状态及六面标定数据输出如图4所示。

图 4 表格勾选状态及六面标定数据输出

DIS Timelag标定
使用要求

参考软硬件需求安装Python环境,再执行pip install opencv-python命令安装python opencv库。

数据采集说明
  • 曝光时间限制到500μs以内,图像帧率设置为30fps,AE增益控制在4倍以内。
  • 棋盘格居中摆放到距离相机4m之外的位置,棋盘格占画幅比例尽可能超过1/5,可适当补光以保证棋盘格成像清晰,棋盘格不能存在局部过暗或过曝的情况。视野内不能出现多个棋盘格。
  • 开启振动台,模组随振动台水平振动,频率控制在5Hz到10Hz之间(振动台频率要求严格小于二分之一帧率),振动台振幅0.5°左右。
  • 参考起业务后自动抓取码流和DIS数据,通过Dump工具抓取一段时间离线防抖数据后,进行后续标定。
界面介绍

图 1 Timelag标定界面

须知:

图1中①为输入区,②为拟合曲线结果区,③为标定结果显示区 输入数据介绍:

  • Load Video:加载h264、h265、mp4文件
  • Load GyroData:加载陀螺仪文件,格式为角速度x,y,z、温漂(可以没有)、陀螺仪时间戳
  • Load TimeStamp:加载图像帧时间戳文件 ,格式为曝光时间、图像时间戳
  • CbDimWidth、CbDimHeight:棋盘格尺寸
  • FrameNumber:图像显示点个数
  • Freq:振动台频率(水平抖动),单位hz
  • Hmax Times:sensor对应读出一行图像的时间,单位ns
  • 六面标定矩阵需要配置
使用步骤

导入mp4文件、陀螺仪文件、图像帧时间戳文件后,设置参数,单击“Calibrate”按钮开始标定。

图 1 Timelag标定后界面显示

输出参数介绍:

  • para_frame:图像帧抖动数据拟合曲线结果
  • para_gyro:陀螺仪数据拟合曲线结果
  • para_a1:拟合曲线共同使用的角速度拟合值A1
  • r_squared_frame:图像帧抖动数据拟合精度,越靠近1越好
  • r_squared_gyro:陀螺仪数据拟合精度,越靠近1越好
  • Timelag:Timelag计算结果
  • gyro_drift:陀螺仪零偏

根据数据显示区的Timelag参数填写Curve Offset,单击“Refresh”按钮,界面将重新绘制曲线,确保曲线与点重合以验证调整效果。

图 2 设置Curve Offset后界面显示

须知:

工具初始化Python环境需要一定的时间,有时候操作过快(很快地设置好参数按下Calibrate按钮)会出现"Calibration failed: sys.path.append('当前的Python路径')"字样的报错。这种情况建议先再等一段时间,稍后重新按Calibrate按钮就可以标定。 Timelag计算结果为算法拟合的结果,与真实的Timelag会存在一定的误差。如果拟合精度(r_squared_frame和r_squared_gyro)都比较高,该结果可作为防抖算法参考的初始Timelag,然后在它基础上左右调整找到最优的值。

FMU工具使用说明

说明:

Hi3516CV610不支持FMU工具。

从PQTools工具主界面工具栏的外挂插件下拉框中选择“FMU Tool”,可以打开FMU工具。

界面介绍

图 1 FMU界面

须知:

图中①为输入区,②为结果显示区。单击“Reset”按钮,各控件恢复初始状态。

使用步骤
  1. 修改图①输入区编辑框大小和勾选按钮状态
  2. 修改后图②结果显示区立即显示结果

数字水印

说明:

Hi3516CV610、Hi3511CV100不支持数字水印。

PQTool 使用步骤
  1. 配置VENC通道:TOP -> Mode Handle -> VencChn。

    图 1 配置VENC通道

  2. 设置水印参数:VencEx2 -> Watermark Param,使用时需要先设置水印info信息。

    图 2 设置水印参数

  3. 设置水印鲁棒性参数:VencEx2 -> Watermark Robustness Param。

    图 3 设置水印鲁棒性参数

    Color为ARGB值,下面的宽高及坐标为OSD区域坐标值,点播工具效果见图4。

    图 4 点播工具效果图

  4. 设置PVC参数:VencEx2 -> PVC Param。

    图 5 设置PVC参数

点播工具使用步骤
  1. 配置接收的编码流。

    图 1 编码流设置

  2. 设置对应的水印参数。

    图 2 设置水印参数按钮

    图 3 设置水印参数界面

    Frames代表水印模板切换周期,Seeds代表水印生成种子,Component代表水印添加到U/V分量;这些设置需要与PQTools的打水印的配置一致,不一致会导致解析水印失败。

  3. 解析水印。

    图 4 解析水印按钮

    图 5 解析水印点播界面对比

工具参数联动使用说明

参数联动规则

当有约束的参数被用户修改时,满足联动条件约束的一个或多个参数值会被自动修改为最接近的有效值,并下发数据到板端。

参数联动列表

目前已支持的参数列表和限制条件,以Hi3519DV500为例,如表1所示,其它参数信息请参考对应芯片的开发参考。

表 1 参数联动列表

联动参数所属功能模块

联动参数

联动规则

AE Route

AE Route. total_num

要小于等于route_node的节点个数

AE RouteEx. total_num

要小于等于route_ex_node的节点个数

WB Attr

AWBAttr

ct_limit.high_rg_limit

手动模式下用户设定高色温下的最大R增益,8bit小数精度,取值范围:[0x0, 0xFFF]

ct_limit.high_bg_limit

手动模式下用户设定高色温下的最小B增益,8bit小数精度,取值范围:[0x0, 0xFFF]

ct_limit.low_rg_limit

手动模式下用户设定低色温下的最小R增益,8bit小数精度,取值范围:[0x0, high_rg_limit)

ct_limit.low_bg_limit

手动模式下用户设定低色温下的最大B增益,8bit小数精度,取值范围:(high_bg_limit, 0xFFF]

12位AWBAttrEx

in_or_out.low_start

将位于低色温范围内的像素权重调低,低色温区起始值,建议5000K

in_or_out.low_stop

将位于低色温范围内的像素权重调低,低色温区终止值,建议4500K。

取值范围:(0, low_start)

in_or_out.high_start

将位于高色温范围内的像素权重调低,高色温区起始值,建议6500K。

取值范围:(low_start, 0xFFFF]

in_or_out.high_stop

将位于高色温范围内的像素权重调低,高色温区终止值,建议8000K。

取值范围:(high_start, 0xFFFF]

Shading Lut Attr

mesh_scale

取值范围:[0, 7]

x_grid_width

取值范围:[4, 255]

y_grid_width

lsc_gain_lut

取值范围:[0, 1023]

DefectPixel

DP Static Calibrate

count_max

STATIC_DP_COUNT_MAX = 2048 * OT_ISP_STRIPING_MAX_NUM

当前版本:OT_ISP_STRIPING_MAX_NUM = 3

RadialCROP

RadialCROP

center_coord.x

取值范围:[0, width -1],默认为:width/2

center_coord.y

取值范围:[0, height -1],默认为:height/2

FPN

FPNCalibrate

frame_num

标定的帧数,取值范围为{1,2,4,8,16},即为2的整数次幂,FPN不支持在离线模式下进行标定,向下剪切。

VpssFisheye

fisheye_correction_attr

mount_mode

360校正模式下不支持壁装,mount_mode切换为地装

view_mode

180校正模式下不支持顶装和地装,mount_mode切换为壁装

VencEx

ROI Attr

qp

当QP模式为TD_FALSE时,qp为QP偏移,qp范围[-51,51];

当QP模式为TD_TRUE时,qp为宏块QP值,qp范围[0,51]

rect.x/y/width/height

x、y、width、height必须是16对齐,向下剪切

FSWDR

FSWDR

long_threshold

取值范围:[0, short_threshold]

force_long_low_threshold

取值范围:[0, force_long_hig_threshold]

md_thr_low_gain

取值范围:[0, md_thr_hig_gain]

DRC

DRC Common

auto_attr.strength_min

取值范围:[0, strength_max]

Sensor Assistant使用说明

Sensor Assistant是PQTools中的一个sensor对接工具插件,用于对接新sensor,生成sensor样例驱动文件。插件包含三个弹出界面和三个标签页,分别是Sensor PinMux、PQ I2C Editor、PQ RAW Analyzer弹出界面和Sensor Guide、Sensor Config、Sensor Driver标签页。

Sensor Guide为该功能的主界面,分步骤引导用户完成对接和校验,每个步骤有必要的说明提示,提示支持双语显示更易理解。Sensor Guide有的步骤需要进行一些参数配置,其中Sensor PinMux界面用于临时配置管脚复用,PQ I2C Editor界面用于配置设备信息和加载及显示初始化序列;Sensor Config界面用于设置板端ini文件参数及主从模式,同时支持把参数按C结构体导出,便于用户参考调用;Sensor Driver界面用于设置生成驱动必须配置的参数,同时支持使用Import功能把线性和wdr驱动样例生成到同一份代码。

  • Sensor Guide界面:如图1所示,标号①为sensor接口选择框,标号②为语言选择框,标号③为界面复位按钮,标号④为sensor对接引导界面。单击对接Step2的PinMux按钮后将弹出Sensor PinMux界面,如图2所示,单击对接Step2或Step4的Config按钮后将会弹出PQ I2C Editor界面,如图3所示,如果Sensor能够正常出图,单击对接Step4或Step7的Check按钮后将弹出PQ RAW Analyzer界面,如图4所示。

    图 1 Sensor Guide界面

    Sensor PinMux界面:标号①为文本编辑框,标号②为写入按钮,可以将bspmm命令粘贴至文本编辑框中,每个命令占一行,单击界面上的Write按钮实现临时管脚复用配置。

    图 2 Sensor PinMux界面

    PQ I2C Editor界面:标号①为sensor I2C参数和初始化序列配置和导入、导出区域。标号②为sensor初始化序列寄存器显示、写入、读取按钮。标号③为sensor初始化序列寄存器显示以及编辑区域。

    图 3 PQ I2C Editor界面

    PQ RAW Analyzer界面:标号①为dump RAW图像指示区域,单击“Prepare Data”按钮可以dump RAW图像, 标号②为RAW 图像查看区域。

    图 4 PQ RAW Analyzer界面

  • Sensor Config界面:如图5所示,标号①为调试等级选择框,标号②为Config界面读写按钮以及导出C代码按钮,标号③为Config可调项主界面。在Sensor Config界面修改完参数后需要手动单击写入按钮写入参数。如果要对接从模式sensor,需要将slave_mode_en可调项使能,再配置标号④的可调项。

    图 5 Sensor Config界面

  • Sensor Driver界面:如图6所示,标号①为已有sensor驱动样例代码导入按钮,标号②为参数导入按钮,支持从Sensor Config界面导入已有参数,标号③为sensor驱动样例代码参数配置界面。标号④为从模式sensor驱动需要配置的参数。默认生成的sensor样例代码仅支持linear或wdr模式,如果驱动需要同时支持linear和wdr模式,则需要使用import功能。Import功能支持将linear和wdr模式导入到同一份sensor驱动样例代码中,在对接linear(wdr)模式完成图1中Step 4后,可以单击Import导入已生成的wdr(linear)模式的驱动样例代码,之后单击Generate会在导入的样例代码的基础上生成驱动样例代码,导入已有驱动样例代码功能为单次有效。使用import导入驱动样例代码生成sensor驱动时,sensor名称需要与导入的驱动样例代码sensor名称相同。

    注意:

    生成sensor驱动样例代码之后,用户需要根据sensor手册自行修改样例代码的sensor寄存器、AE、AWB等参数,主要涉及文件有:xxxx_cmos.h。如果sensor运行逻辑与驱动样例代码逻辑不一致,则需要手动检查修改代码。

    图 6 Sensor Driver界面

  • 使用步骤

  • 结果说明

  • 注意事项

使用步骤
  1. 板端连接sensor,进入到SDK目录下运行load ko脚本加载板端ko。

  2. 进入到板端PQTools版本包目录下,运行StartControl.sh脚本,使用[-n | name]参数配置sensor名称,启动板端ittb_control进程。

    参考样例:./StartControl.sh -n mysensor

    注意:sensor名称首字母只能为字母或下划线。

  3. 启动PC PQTools客户端,选择Sensor Assistant插件,进入到插件主界面。

  4. 按照Sensor Guide界面提示进行sensor对接操作即可。
结果说明

在每一步完成后才可以进入到下一步骤,最终应该在图1Step4单击“Check”按钮后,能够成功看到RAW图像,如果单击“Check”按钮后报错,请按照工具提示进行排查。在sensor可以正常出图后,按照图中Step5生成sensor驱动样例代码。生成的sensor样例代码可以根据图中Step6、Step7进行校验,来确定生成的驱动是否有效。

注意事项
  • 由于对接插件读取的是sensor的RAW格式图像,文件较大,板端传回给客户端需要消耗一定传输时间,因此推荐使用网络连接方式。

  • 导入sensor点亮初始化序列格式说明

    sensor点亮初始化序列是以ini文件形式保存的,具体格式如下(在PQTools\Templates\Hi3516CV610\SensorAssistant目录下提供了格式模板sensor_config.ini)。

    ini文件包含有sensor接口(I2C)通信相关信息,初始化序列段的起始标志为[CMD_BEGIN],结束标志为[CMD_END],序列的表示用两个十六进制数字表示,用空格隔开:[寄存器地址] [寄存器值],每个寄存器占一行,当一行中有"#"或者";"符号时则认为是注释,读取序列时自动跳过该行。

  • 该插件仅支持单路sensor调试出图。多路sensor业务场景可以使用本工具把每一款sensor对接出图之后,再参考sample_vio程序进行修改。

  • 该插件目前仅支持I2C接口sensor调试出图
  • 请确保sensor的ini配置文件中i2c_dev参数与sensor实际I2C设备号保证一致,否则生成的驱动无法写入初始化序列。
  • sensor I2C接口通信功能需要确保对应的I2C时钟打开并处于解复位状态(例如在板端输入命令:bspmm 0x11018440 0x4010)。
  • 在Sensor Guide界面第四步单击Run时,由于预置的sensor模板驱动中I2C设备地址与sensor I2C设备地址可能不一致,因此启动板端媒体业务时串口会存在I2C读写错误打印,不影响实际对接功能。

参数详细说明

下面将详细列出界面上各模块参数对应SDK的API函数参考,这些参数说明请参考表1~表49。

须知:

板端起业务前需打开Hi35XXXX_PQ_Vx.x.x.x中config.cfg文件,确认[UseLibrary]中AE AWB THERMO等库的加载使能以及库的路径与业务是否匹配,不匹配会导致调试项读写失败。

Hi3519DV500参数

表 1 TOP设置对应API

功能模块

对应SDK API

Mode Handle

无

Bypass Setting

ot_mpi_isp_set_module_ctrl

ot_mpi_isp_get_module_ctrl

Fmw State

ot_mpi_isp_set_fmw_state

ot_mpi_isp_get_fmw_state

CTRL Param

ot_mpi_isp_set_ctrl_param

ot_mpi_isp_get_ctrl_param

MOD Param

ot_mpi_isp_set_mod_param

ot_mpi_isp_get_mod_param

表 2 Pub Attr设置对应API

功能模块

对应SDK API

Pub Attr

ot_mpi_isp_set_pub_attr

ot_mpi_isp_get_pub_attr

表 3 ISP Info设置对应API

功能模块

对应SDK API

ISP Info

ot_mpi_isp_query_inner_state_info

表 4 Exposure Attr设置对应API

功能模块

对应SDK API

Exposure Attr

ot_mpi_isp_set_exposure_attr

ot_mpi_isp_get_exposure_attr

表 5 WDR Exposure Attr设置对应API

功能模块

对应SDK API

WDR Exposure Attr

ot_mpi_isp_set_wdr_exposure_attr

ot_mpi_isp_get_wdr_exposure_attr

表 6 Smart Exposure Attr设置对应API

功能模块

对应SDK API

Smart Exposure Attr

ot_mpi_isp_set_smart_exposure_attr

ot_mpi_isp_get_smart_exposure_attr

表 7 AE Route设置对应API

功能模块

对应SDK API

AE Route

ot_mpi_isp_set_ae_route_attr

ot_mpi_isp_get_ae_route_attr

AE RouteEx

ot_mpi_isp_set_ae_route_attr_ex

ot_mpi_isp_get_ae_route_attr_ex

AE RouteSF

ot_mpi_isp_set_ae_route_sf_attr

ot_mpi_isp_get_ae_route_sf_attr

AE RouteExSF

ot_mpi_isp_set_ae_route_sf_attr_ex

ot_mpi_isp_get_ae_route_sf_attr_ex

表 8 AutoIris设置对应API

功能模块

对应SDK API

AIAttr

ot_mpi_isp_set_iris_attr

ot_mpi_isp_get_iris_attr

DcirisAttr

ot_mpi_isp_set_dciris_attr

ot_mpi_isp_get_dciris_attr

PirisAttr

ot_mpi_isp_set_piris_attr

ot_mpi_isp_get_piris_attr

表 9 Exposure Info设置对应API

功能模块

对应SDK API

Exposure Info

ot_mpi_isp_query_exposure_info

表 10 WB Attr设置对应API

功能模块

对应SDK API

White Balance

ot_mpi_isp_set_wb_attr

ot_mpi_isp_get_wb_attr

AWBAttr

ot_mpi_isp_set_wb_attr

ot_mpi_isp_get_wb_attr

MWBAttr

ot_mpi_isp_set_wb_attr

ot_mpi_isp_get_wb_attr

AWBAttrEx

ot_mpi_isp_set_awb_attr_ex

ot_mpi_isp_get_awb_attr_ex

BlackLevel

ot_mpi_isp_set_black_level_attr

ot_mpi_isp_get_black_level_attr

表 11 WB Info设置对应API

功能模块

对应SDK API

WBInfo

ot_mpi_isp_query_wb_info

CalGainByTemp

ot_mpi_isp_cal_gain_by_temp

表 12 CCM设置对应API

功能模块

对应SDK API

CCM

ot_mpi_isp_set_ccm_attr

ot_mpi_isp_get_ccm_attr

ColorToneAttr

ot_mpi_isp_set_color_tone_attr

ot_mpi_isp_get_color_tone_attr

表 13 Saturation设置对应API

功能模块

对应SDK API

Saturation

ot_mpi_isp_set_saturation_attr

ot_mpi_isp_get_saturation_attr

表 14 CLUT设置对应API

功能模块

对应SDK API

CLUT Attr

ot_mpi_isp_set_clut_attr

ot_mpi_isp_get_clut_attr

CLUT Lut

ot_mpi_isp_set_clut_coeff

ot_mpi_isp_get_clut_coeff

表 15 CSC设置对应API

功能模块

对应SDK API

CSC

ot_mpi_isp_set_csc_attr

ot_mpi_isp_get_csc_attr

表 16 ChromaAdjust设置对应API

功能模块

对应SDK API

CA Attr

ot_mpi_isp_set_ca_attr

ot_mpi_isp_get_ca_attr

表 17 BNR设置对应API

功能模块

对应SDK API

NR Attr

ot_mpi_isp_set_nr_attr

ot_mpi_isp_get_nr_attr

表 18 Demosaic设置对应API

功能模块

对应SDK API

Demosaic

ot_mpi_isp_set_demosaic_attr

ot_mpi_isp_get_demosaic_attr

表 19 3DNR_X/3DNR Curve设置对应API

功能模块

对应SDK API

3DNR_X

ot_mpi_vpss_set_grp_param

ot_mpi_vpss_get_grp_param

表 20 YUV Sharpen设置对应API

功能模块

对应SDK API

YUV Sharpen

ot_mpi_isp_set_sharpen_attr

ot_mpi_isp_get_sharpen_attr

表 21 BayerShpAttr设置对应API

功能模块

对应SDK API

BayerSharpen Attr

ot_mpi_isp_set_bayershp_attr

ot_mpi_isp_get_bayershp_attr

表 22 MCF Attr/MCF ALG设置对应API

功能模块

对应SDK API

MCFGrp Attr

ot_mpi_mcf_set_grp_attr

ot_mpi_mcf_get_grp_attr

MCF ALG 参数及曲线

ot_mpi_mcf_set_alg_param

ot_mpi_mcf_get_alg_param

表 23 FSWDR设置对应API

功能模块

对应SDK API

FSWDR

ot_mpi_isp_set_fswdr_attr

ot_mpi_isp_get_fswdr_attr

表 24 DRC设置对应API

功能模块

对应SDK API

DRC

ot_mpi_isp_set_drc_attr

ot_mpi_isp_get_drc_attr

表 25 Gamma设置对应API

功能模块

对应SDK API

Gamma

ot_mpi_isp_set_gamma_attr

ot_mpi_isp_get_gamma_attr

表 26 LDCI设置对应API

功能模块

对应SDK API

LDCI Attr

ot_mpi_isp_set_ldci_attr

ot_mpi_isp_get_ldci_attr

表 27 Dehaze设置对应API

功能模块

对应SDK API

Dehaze

ot_mpi_isp_set_dehaze_attr

ot_mpi_isp_get_dehaze_attr

表 28 AntiFalseColor设置对应API

功能模块

对应SDK API

AntiFalse

ot_mpi_isp_set_anti_false_color_attr

ot_mpi_isp_get_anti_false_color_attr

表 29 Crosstalk设置对应API

功能模块

对应SDK API

Crosstalk

ot_mpi_isp_set_crosstalk_attr

ot_mpi_isp_get_crosstalk_attr

表 30 MeshShading设置对应API

功能模块

对应SDK API

Shading Attr

ot_mpi_isp_set_mesh_shading_attr

ot_mpi_isp_get_mesh_shading_attr

Shading Lut Attr

ot_mpi_isp_set_mesh_shading_gain_lut_attr

ot_mpi_isp_get_mesh_shading_gain_lut_attr

表 31 DefectPixel设置对应API

功能模块

对应SDK API

DP Dynamic Calibrate

ot_mpi_isp_set_dp_dynamic_attr

ot_mpi_isp_get_dp_dynamic_attr

DP Static Calibrate

ot_mpi_isp_set_dp_calibrate

ot_mpi_isp_get_dp_calibrate

DPAttr

ot_mpi_isp_set_dp_static_attr

ot_mpi_isp_get_dp_static_attr

表 32 CAC设置对应API

功能模块

对应SDK API

Local Attr

ot_mpi_isp_set_local_cac_attr

ot_mpi_isp_get_local_cac_attr

Acac Attr

ot_mpi_isp_set_acac_attr

ot_mpi_isp_get_acac_attr

表 33 VPSS LDC设置对应API

功能模块

对应SDK API

VPSS LDC Base

ot_mpi_vpss_set_grp_ldc

ot_mpi_vpss_get_grp_ldc

VPSS LDC V1

ot_mpi_vpss_set_grp_ldc

ot_mpi_vpss_get_grp_ldc

VPSS LDC V2

ot_mpi_vpss_set_grp_ldc

ot_mpi_vpss_get_grp_ldc

表 34 FPN设置对应API

功能模块

对应SDK API

FPNCalibrate

ot_mpi_isp_fpn_calibrate

FPNCorrection

ot_mpi_isp_set_fpn_attr

ot_mpi_isp_get_fpn_attr

表 35 RC Attr设置对应API

功能模块

对应SDK API

RC Attr

ot_mpi_venc_set_chn_attr

ot_mpi_venc_get_chn_attr

表 36 RC Param设置对应API

功能模块

对应SDK API

RC Param

ot_mpi_venc_set_rc_param

ot_mpi_venc_get_rc_param

表 37 GopMode设置对应API

功能模块

对应SDK API

GopMode

ot_mpi_venc_set_chn_attr

ot_mpi_venc_get_chn_attr

表 38 VencEx设置对应API

功能模块

对应SDK API

备注

Intra Refresh

ot_mpi_venc_set_intra_refresh

ot_mpi_venc_get_intra_refresh

-

ROI Attributes

ot_mpi_venc_set_roi_attr

ot_mpi_venc_get_roi_attr

-

ROICfgIndex

无

-

ROIBG_Frame_Rate

ot_mpi_venc_set_roi_bg_frame_rate

ot_mpi_venc_get_roi_bg_frame_rate

-

Color2Grey

ot_mpi_venc_set_chn_param

ot_mpi_venc_get_chn_param

-

REF Parameters

ot_mpi_venc_set_ref_param

ot_mpi_venc_get_ref_param

-

Frame Lost

ot_mpi_venc_set_frame_lost_strategy

ot_mpi_venc_get_frame_lost_strategy

-

Super Frame

ot_mpi_venc_set_super_frame_strategy

ot_mpi_venc_get_super_frame_strategy

-

Jpeg Param

ot_mpi_venc_set_jpeg_param

ot_mpi_venc_get_jpeg_param

-

Jpeg Dblk

ot_mpi_venc_enable_jpeg_dblk

只支持写入

表 39 VencEx2设置对应API

功能模块

对应SDK API

Scene

ot_mpi_venc_set_scene_mode

ot_mpi_venc_get_scene_mode

ForeGroundProtect

ot_mpi_venc_set_fg_protect

ot_mpi_venc_get_fg_protect

表 40 DeBreathEffect设置对应API

功能模块

对应SDK API

DeBreathEffect

ot_mpi_venc_set_debreath_effect

ot_mpi_venc_get_debreath_effect

表 41 RadialCROP设置对应API

功能模块

对应SDK API

RadialCROP

ot_mpi_isp_set_rc_attr

ot_mpi_isp_get_rc_attr

表 42 VpssCROP设置对应API

功能模块

对应SDK API

CROP_INFO

ot_mpi_vpss_set_grp_crop

ot_mpi_vpss_get_grp_crop

表 43 DNG Info设置对应API

功能模块

对应SDK API

DngColorParam

ot_mpi_isp_set_dng_color_param

ot_mpi_isp_get_dng_color_param

DngImageStaticInfo

ot_mpi_isp_get_dng_image_static_info

表 44 StatisticsConfig设置对应API

功能模块

对应SDK API

StatisticsConfig

ot_mpi_isp_set_stats_cfg

ot_mpi_isp_get_stats_cfg

表 45 SpreadCoef设置对应API

功能模块

对应SDK API

VPSS_Spread

ot_mpi_vpss_set_grp_spread

ot_mpi_vpss_get_grp_spread

表 46 Timing Attr设置对应API

功能模块

对应SDK API

Timing Attr

ot_mpi_vi_set_dev_timing_attr

ot_mpi_vi_get_dev_timing_attr

表 47 DIS设置对应API

功能模块

对应SDK API

VI_DISAttr

ot_mpi_vi_set_chn_dis_attr

ot_mpi_vi_get_chn_dis_attr

VI_DISConfig

ot_mpi_vi_set_chn_dis_cfg

ot_mpi_vi_get_chn_dis_cfg

VI_DISParam

ot_mpi_vi_set_chn_dis_param

ot_mpi_vi_get_chn_dis_param

表 48 VpssFisheye设置对应API

功能模块

对应SDK API

fisheye_correction_attr

ot_mpi_vpss_set_grp_fisheye

ot_mpi_vpss_get_grp_fisheye

fisheye_cfg

ot_mpi_vpss_set_grp_fisheye_cfg

ot_mpi_vpss_get_grp_fisheye_cfg

表 49 AIBNR设置对应API

功能模块

对应SDK API

备注

AIBNR en

ot_mpi_aibnr_enable

ot_mpi_aibnr_disable

只支持写入

AIBNR Attr

ot_mpi_aibnr_set_attr

ot_mpi_aibnr_get_attr

-

表 50 Thermo/Aidestrip设置对应API

功能模块

对应SDK API

备注

Thermo Attr

ot_mpi_isp_set_thermo_attr

ot_mpi_isp_get_thermo_attr

-

Aidestrip Attr

ot_mpi_aidestrip_set_attr

ot_mpi_aidestrip_get_attr

-

Thermo Exposure Info

ot_mpi_thermo_query_exposure_info

-

Hi3516CV610参数

参数名和模块名与SDK开发相对应,详细请见《MPP 媒体处理软件 V6.0 开发参考》文档。

工具应用参考

工具参数的导入导出

工具导入导出XML参数

PQTools工具支持将PQ Table调试项,以.xml文件格式导出配置参数,并支持导入。界面参数导入后,用户需继续单击主界面或,才能将参数设置到板端。

详见"保存调试数据文件"和"打开调试数据文件"章节的说明,进行保存.xml数据文件,以及打开.xml数据文件的操作。

工具导入导出BIN参数

图 1 BIN文件导入导出

PQTools工具支持将板端AE、AWB、ISP、3DNR模块数据以.bin文件格式导出,并支持导入。

  • 打开“Import & Export”处理对话框

    在连接到单板,并已经打开调试表的状态下,单击工具栏上的“Import & Export”按钮(),打开对话框,如图1 BIN文件导入导出。

  • 导入导出参数配置

    • 导出参数文件:单击“Export BIN File”按钮,并在弹出的文件保存对话框中选择保存路径,工具会将板端当前的参数保存到指定路径。
    • 导入参数文件:单击“Import BIN File”按钮,并在弹出的文件选择对话框中选择正确的 BIN文件,工具会将选择的文件数据发送到板端并生效,Hi3519DV500上会跳过噪声模型参数。

    当前导入导出BIN文件,支持两种类型的BIN:

    • 演进型:对应 Evolution 选项,开发阶段使用,保存图像质量AE/AWB/ISP参数,可保证在版本更迭过程中,当图像质量结构体发生变动时,上一版本保存的BIN可以在当前版本使用。
    • 稳定型:对应 Regular 选项,支持导入ISP参数以及3DNR参数,如果选择导入3DNR参数到BIN文件,需要在Top页面设置当前3DNR参数业务的pipe或者group号。

须知:

  • 通过本功能导出的参数BIN文件为板端专用,只能通过BIN对话框的导入功能导入,无法直接在PQTools工具主程序中打开。
  • BIN保存的ISP模块参数,是ISP模块中非统计信息的数据,详见BIN文件ISP模块详解。
  • 导入的BIN文件需要符合当前业务的场景(VI的分辨率、WDR模式、ISP路数、ViPipe和VpssGrp等基本参数需要相同)才能正常运行。
  • 每次导出的ISP模块参数,可能因系统更新或配置变更导致其内存地址有所变化,但不影响参数的实际内容和功能。
  • Hi3516CV610不支持演进型。
BIN文件ISP模块详解

板端先通过ss_mpi_isp_get_isp_reg_attr获取ISP、AE、AWB模块虚拟地址及长度,在导出BIN文件中ISP模块参数时,读取虚拟地址中各子模块数据;在导入BIN文件中ISP模块参数时,将子模块数据写入到虚拟地址并对写入模块更新,使其作用到图像质量。

不同芯片BIN文件ISP保存参数有差异,通过查看ISP、AE、AWB头文件了解BIN文件的ISP参数范围。

Hi3519DV500 BIN中ISP保存模块:

  • isp_ext_config.h头文件中部分功能宏对应的寄存器地址及长度值,具体模块:

    VREG_BLC_OFFSET + 0x8, /* ot_ext_system_black_level_change_write */

    VREG_RC_OFFSET + 0x1, /* ot_ext_system_rc_coef_update_en_write */

    VREG_CLUT_OFFSET + 0x1, /* ot_ext_system_clut_lut_update_en_write */

    VREG_CLUT_OFFSET + 0x8, /* ot_ext_system_clut_ctrl_update_en_write */

    VREG_FPN_OFFSET + 0x3, /* ot_ext_system_local_cac_coef_update_en_write */

    VREG_LCAC_OFFSET + 0x28, /* ot_ext_system_local_cac_coef_update_en_write */

    VREG_GE_OFFSET + 0x67, /* ot_ext_system_ge_coef_update_en_write */

    VREG_CSC_OFFSET + 0x58, /* ot_ext_system_csc_attr_update_write */

    VREG_WDR_OFFSET + 0x1, /* ot_ext_system_wdr_coef_update_en_write */

    VREG_DM_OFFSET + 0x12, /* ot_ext_system_demosaic_attr_update_en_write */

    VREG_AWB_OFFSET + 0x28, /* ot_ext_system_wb_statistics_mpi_update_en_write */

    VREG_AF_OFFSET + 0x17, /* ot_ext_af_update_write */

    VREG_AE_OFFSET + 0x50, /* ot_ext_system_smart_update_write */

    VREG_ACAC_OFFSET + 0x1b, /* ot_ext_system_acac_coef_update_write */

    VREG_BSHP_OFFSET + 0x2, /* ot_ext_system_bshp_attr_update_write */

    VREG_DEHAZE_OFFSET + 0x142, /* ot_ext_system_user_dehaze_lut_update_write */

    VREG_DRC_OFFSET + 0x1, /* ot_ext_system_drc_param_updated_write */

    VREG_PREGAMMA_OFFSET + 0x1, /* ot_ext_system_pregamma_lut_update_write */

    VREG_EXPANDER_OFFSET + 0x3, /* ot_ext_system_expander_param_update_write */

    VREG_CA_OFFSET + 0x844, /* ot_ext_system_ca_coef_update_en_write */

    VREG_GAMMA_OFFSET + 0x1, /* ot_ext_system_gamma_lut_update_write */

    VREG_CRB_OFFSET + 0xe, /* ot_ext_system_crb_coef_update_en_read */

    VREG_SHARPEN_OFFSET + 0x3, /* ot_ext_system_sharpen_mpi_update_en_write */

    VREG_LSC_OFFSET + 0x1, /* ot_ext_system_isp_mesh_shading_lut_attr_updata_write */

    VREG_LSC_OFFSET + 0x2, /* ot_ext_system_isp_mesh_shading_attr_updata_write */

    VREG_LSC_OFFSET + 0x4460, /* ot_ext_system_isp_mesh_shading_fe_lut_attr_updata_write */

    VREG_LSC_OFFSET + 0x4461, /* ot_ext_system_isp_mesh_shading_fe_attr_updata_write */

    VREG_DPC_OFFSET + 0x12, /* ot_ext_system_dpc_static_attr_update_write */

    VREG_DPC_OFFSET + 0x13, /* ot_ext_system_dpc_dynamic_attr_update_write */

    VREG_RGBIR_OFFSET + 0x28, /* ot_ext_system_rgbir_attr_update_write */

    VREG_LBLC_OFFSET + 0x1, /* ot_ext_system_isp_lblc_lut_attr_updata_write */

    VREG_LBLC_OFFSET + 0x2, /* ot_ext_system_isp_lblc_attr_updata_write */

    VREG_CAC_OFFSET + 0x150, /* ot_ext_system_cac_coef_update_write */

    VREG_BNR_OFFSET + 0x39A, /* ot_ext_system_bayernr_attr_update_write */

  • 以下地址相关模块跳过导入导出

    /* address of system debug information, blc dbg addr + size + depth */

    VREG_TOP_OFFSET + 0x001c, 16,

    VREG_TOP_OFFSET + 0x0050, 12, /* ae debug addr + depth */

    VREG_TOP_OFFSET + 0x0060, 12, /* awb_debug addr + depth */

    VREG_TOP_OFFSET + 0x0070, 12, /* dehaze_debug addr + depth */

    VREG_TOP_OFFSET + 0x00a4, 8 , /* update_info buf addr. */

    /* isp only map this phy firstly, inport bin match timing of map */

    VREG_TOP_OFFSET + 0x0100, 8 , /* be_free_buffer. */

    /* isp only map this phy firstly, inport bin match timing of map */

    VREG_TOP_OFFSET + 0x0290, 8 , /* be_lut_stt_buf addr */

    /* isp not use the value of ext_reg, use the value of isp_ctx */

    VREG_TOP_OFFSET + 0x02a0, 20, /* be_buffer_address, be_buffer_size, ldci_read_stt_buffer */

    /* isp only map this phy firstly, inport bin match timing of map */

    VREG_TOP_OFFSET + 0x0310, 8, /* fe_lut_stt_buffer addr. */

    VREG_LSC_OFFSET + 0x4462, 1, /* address of meshShading update */

    VREG_SNS_OFFSET, VREG_SNS_SIZE, /* address of isp noise */

  • ss_mpi_isp.h头文件中clut功能参数,对应set接口ss_mpi_isp_set_clut_coeff(方便理解将ISP虚拟寄存器clut读写数据段映射为接口来描述);

  • ss_mpi_ae.h头文件中get/set接口对应的功能参数;
  • ss_mpi_awb.h头文件中get/set接口对应的功能参数。

Hi3516CV610 BIN中ISP保存模块:

  • ss_mpi_isp.h头文件中部分get/set接口对应的功能参数,以set接口为例:

    ss_mpi_isp_set_smart_info

    ss_mpi_isp_set_module_ctrl

    ss_mpi_isp_set_stats_cfg

    ss_mpi_isp_set_black_level_attr

    ss_mpi_isp_set_ca_attr

    ss_mpi_isp_set_cac_attr

    ss_mpi_isp_set_csc_attr

    ss_mpi_isp_set_dp_static_attr

    ss_mpi_isp_set_dp_dynamic_attr

    ss_mpi_isp_set_demosaic_attr

    ss_mpi_isp_set_fswdr_attr

    ss_mpi_isp_set_gamma_attr

    ss_mpi_isp_set_crosstalk_attr

    ss_mpi_isp_set_mesh_shading_attr

    ss_mpi_isp_set_mesh_shading_gain_lut_attr

    ss_mpi_isp_set_sharpen_attr

    ss_mpi_isp_set_dehaze_attr

    ss_mpi_isp_set_drc_attr

    ss_mpi_isp_set_expander_attr

    ss_mpi_isp_set_auto_color_shading_attr

    ss_mpi_isp_set_nr_attr

  • ss_mpi_ae.h头文件中get/set接口对应的功能参数;

  • ss_mpi_awb.h头文件中get/set接口对应的功能参数。

工具导入导出INI及MPI Struct参数

图 1 INI及MPI Struct数据导入导出

PQTools工具支持将自适应参数以.ini文件格式导出,并支持导入,仅Hi3516CV610支持。

PQTools工具支持将MPI Struct参数以.h文件格式导出,并支持导入。

  • 打开“Import & Export”处理对话框

    在连接到单板,并已经打开调试表的状态下,单击工具栏上的“Import & Export”按钮(),打开对话框,如图1 INI及MPI Struct数据导入导出。

  • 导入导出参数配置

    • 导出参数文件:单击“Export ... File”按钮,并在弹出的文件保存对话框中选择保存路径,工具会将板端当前的参数保存到指定路径。
    • 导入参数文件:单击“Import ... File”按钮,并在弹出的文件选择对话框中选择正确格式(如 .ini 或 .h)的文件,工具会将选择的文件数据发送到板端并生效。

在调试表界面,可以导出当前页面的自适应INI及MPI Struct,如图2。如果没有导入导出按钮,则当前页面不支持导入导出。

图 2 当前页面 Export INI 与 Export Struct

使用库导入导出图像质量参数

板端工具提供导入导出参数库文件,可根据自己的需要选择功能。

开放参数
typedef struct otPQ_BIN_ISP_S { 
    int enable; 
} PQ_BIN_ISP_S; 

typedef struct otPQ_BIN_NRX_S{ 
    int enable; 
    int viPipe; 
    int vpssGrp; 
} PQ_BIN_NRX_S; 

typedef struct otPQ_BIN_ISP_EVO_S {
    int enable;
    int viPipe;
} PQ_BIN_ISP_EVO_S;

typedef struct otPQ_BIN_MODULE_S{ 
    PQ_BIN_ISP_S stISP; 
    PQ_BIN_NRX_S st3DNR; 
    PQ_BIN_ISP_EVO_S stIspEvo;
} PQ_BIN_MODULE_S;
开放接口

可参考推荐使用流程,如图1所示。

图 1 Bin推荐使用流程

数据类型
PQ_BIN_ISP_S

【说明】

设置ISP bin参数。

【定义】

typedef struct otPQ_BIN_ISP_S { 
    int enable; 
} PQ_BIN_ISP_S;

【成员】

成员名称

描述

enable

ISP参数保存的使能开关

【注意事项】

无

【相关数据类型及接口】

无

PQ_BIN_NRX_S

【说明】

设置nrx结构体保存 bin参数。

【定义】

typedef struct otPQ_BIN_NRX_S { 
    int enable; 
    int viPipe; 
    int vpssGrp; 
} PQ_BIN_NRX_S;

【成员】

成员名称

描述

enable

ISP参数保存的使能开关

viPipe

viPipe通道号

vpssGrp

vpssGrp通道号

【注意事项】

enable使能之后,需要设置对应场景的viPipe号或者是vpssGrp号。

【相关数据类型及接口】

无

PQ_BIN_ISP_EVO_S

【说明】

设置演进版本bin结构体参数。

【定义】

typedef struct otPQ_BIN_ISP_EVO_S {
    int enable;
    int viPipe;
} PQ_BIN_ISP_EVO_S;

【成员】

成员名称

描述

enable

是否使用演进版本的bin,默认置为false

viPipe

演进版本bin viPipe通道号

【注意事项】

  • 演进版本是指还未开发完成的版本,即isp未开发完,bin结构可能会变化.在这个过程中上个版本导出的bin,在下个版本导入可能就会错位,所以用演进版本bin,导入时只导入未变化的部分。
  • 暂不支持通过接口设置演进版本。

【相关数据类型及接口】

无

PQ_BIN_MODULE_S

【说明】

设置保存bin数据的参数。

【定义】

typedef struct otPQ_BIN_MODULE_S {
    PQ_BIN_ISP_S  stISP;
    PQ_BIN_NRX_S  st3DNR;
    PQ_BIN_ISP_EVO_S stIspEvo;
} PQ_BIN_MODULE_S;

【成员】

成员名称

描述

stISP

保存isp参数的相关设置参数

st3DNR

保存3dnr参数的相关设置参数

stIspEvo

保存演进版本bin的相关设置参数

【注意事项】

无

【相关数据类型及接口】

无

API参考
OT_PQ_GetISPDataTotalLen

【描述】

获取ISP参数bin数据的长度。

【语法】

unsigned int OT_PQ_GetISPDataTotalLen();

【参数】

无

【返回值】

返回值

描述

长度

bin数据的总长度。

【错误码】

无

【需求】

  • 头文件:ot_pq_bin.h
  • 库文件:libbin.a

【注意】

此函数必须在调用OT_PQ_BIN_ExportBinData接口前调用。因为在导出bin数据之前,需要先确定数据的总长度。

OT_PQ_GetStructParamLen

【描述】

获取struct bin数据的长度。

【语法】

unsigned int OT_PQ_GetStructParamLen (PQ_BIN_MODULE_S *pstBinParam);

【参数】

参数名称

描述

输入/输出

pstBinParam

设置bin文件保存内存和相关通道参数。

输入

【返回值】

返回值

描述

长度

Struct参数的实际长度。

【错误码】

无

【需求】

  • 头文件:ot_pq_bin.h
  • 库文件:libbin.a

【注意】

此函数必须在调用OT_PQ_BIN_ExportBinData接口前调用。

OT_PQ_BIN_ExportBinData

【描述】

导出bin数据。

【语法】

int OT_PQ_BIN_ExportBinData(PQ_BIN_MODULE_S *pstBinParam, unsigned char* pu8Buffer, unsigned int u32DataLength);

【参数】

参数名称

描述

输入/输出

pstBinParam

设置bin文件保存内存和相关通道参数

输入

pu8Buffer

存放bin的内存空间,用于接收导出的数据

输出

u32DataLength

bin数据的长度

输入

【返回值】

返回值

描述

0

成功

非0

失败,其值为错误码

【错误码】

接口返回值

含义

0xCB000001

入参指针为空

0xCB000003

未分配到内存空间

0xCB000005

数据不完整

0xCB000006

数据大小错误

0xCB000008

数据损坏

0xCB000009

Mpi接口读写错误

0xCB00000A

数据受保护

【需求】

  • 头文件:ot_pq_bin.h
  • 库文件:libbin.a

【注意】

调用此函数必须先调用OT_PQ_GetISPDataTotalLen或者OT_PQ_GetStructParamLen函数,获取数据的大小,否则可能出现内存问题。

OT_PQ_BIN_ImportBinData

【描述】

导入bin数据。

【语法】

int OT_PQ_BIN_ImportBinData(PQ_BIN_MODULE_S *pstBinParam,unsigned char* pu8Buffer, unsigned int u32DataLength);

【参数】

参数名称

描述

输入/输出

pstBinParam

设置bin文件保存内存和相关通道参数

输入

pu8Buffer

Bin的内存空间

输入

u32DataLength

Bin大小

输入

【返回值】

返回值

描述

0

成功

非0

失败,其值为错误码

【错误码】

接口返回值

含义

0xCB000001

入参指针为空

0xCB000003

申请空间失败

0xCB000006

数据大小错误

0xCB000008

数据错误

0xCB000009

Mpi接口读写错误

0xCB00000A

数据被保护

【需求】

  • 头文件:ot_pq_bin.h
  • 库文件:libbin.a

【注意】

无

工具如何替换3A算法?

工具可通过配置XML指定修改某一地址对应的值。若要替换3A算法首先更新XML文件中3A算法的地址和格式等配置选项,具体更改配置方法请看“物理/虚拟寄存器的添加与调试”,最后用图像调节工具导入配置好的xml文件即可。

点播工具使用

点播软件的安装与运行

板端软件执行

直接运行可执行程序,根据实际sensor情况运行PQTools.sh。步骤如下:

  1. 把位于发布包中的Hi35XXXX_PQ_VX.X.X.X.tgz解压到单板上或者服务器上。如果解压到服务器上运行,需先将单板mount到服务器目录下。
  2. 板端的工具是根据./PQTools.sh脚本里的配置启动的,需运行脚本即可。启动脚本后需输入启动参数,如下:

    ./ PQTools.sh -a sensor目录 ini序列 如 ./ PQTools.sh -a sensor 0

    • sensor目录:应用程序默认在Hi35XXXX_PQ_VX.X.X.X目录下configs目录下读取config_entry.ini
    • ini序列在config_entry.ini中可以查看;也可以配置config_entry.ini,而不输入ini序列。

说明:

如果要在Hi3511CV100上使用点播,需在板端运行sample程序,具体参考《Sample指导说明》“2.11 pqt_push_stream”章节。

PC端软件执行

PQStream点播工具是PC端绿色软件,直接使用解压缩工具(如WinRAR、WinZip等)将PQStream(zip格式)解压缩到任意的可写目录,即可使用。

如果需要支持4K30fps,推荐显卡性能如下:

  • 显卡内存:2GB
  • 显存位宽:128bit
  • 核心频率:900MHz
  • 显存频率:5000MHz
  • 如果需要支持10bit图像显示,显卡和显示器必须支持10bit。

须知:

  • 点播工具支持4K30fps播放,分辨率过高或者帧率过大可能有延时问题。
  • 如果点播开始播放画面有大片绿色或者长时间播放后出现花屏,可能是码率过大、工具性能不够导致的,可以尝试通过降低码率来解决。
  • 点播工具运行依赖OpenGL,如果运行电脑的显卡驱动不支持OpenGL,点播工具无法正常启动,需要更新显卡驱动。以Windows 10为例,按以下步骤排查:
    1. 按下Win + R键,打开运行窗口。
    2. 输入“dxdiag”并按下回车键,打开DirectX诊断工具。
    3. 在DirectX诊断工具窗口中,切换到“显示”选项卡。
    4. 查看“DirectX 功能”一栏中的“DirectDraw 加速”是否可用,不可用则表示系统不支持OpenGL。

快速入门

运行PQStream软件后,出现登录画面,输入相应的IP地址,单击“OK”按钮,即可进去主界面,如图1和图2所示。

图 1 登录界面

图 2 主界面

主界面各功能按钮和区域的介绍如下:

说明:

① 预览通道 ② 预览源(Enc) ③ 录像/停止录像 ④ 参数设置 ⑤ 录像时长 ⑥ 预览窗口比例 ⑦ 登录/登出 ⑧ 视频预览主页面 ⑨ 当前信息 ⑩ 通道信息显示 ⑪ 查看工具版本号 ⑫ 解析数字水印 ⑬ SVAC3.0文件播放 ⑭ 输出图层(具体参考输出图层章节) ⑮ 点播连接的板端IP和端口号

须知:

  • 录像后的抓JPEG功能已经移到了 control 界面上,stream 上不支持抓JPEG。
  • 当帧率为120时,由于工具当前不支持过高帧率,所以板端会进行帧率控制;建议控制为30~60帧。
  • Hi3516CV610、Hi3511CV100 不支持数字水印功能。
  • 支持滚动鼠标滚轮、单击‘+‘’-’缩放按钮、输入缩放比例来缩放画面。
  • 在花屏、噪声超大等特殊场景下,可能出现少量几帧数据异常,工具界面显示LIMITED字符的情况,对功能无影响。
  • Hi3511CV100板端起sample时,PQStream连接起sample_pqt的板端IP。

预览

预览通道选择:控制预览画面来源于哪一个通道。

预览与停止:控制视频预览与停止。点播一路编码预览时,下拉菜单包括Enc预览模式以及停止预览控制,如图1所示。

图 1 预览下拉菜单

当程序启动时,会自动链接主程序设置IP地址的设备。可以在左下角“当前信息”查看当前链接状态,链接成功后可在“视频预览主页面”观察当前视频。

说明:

  • 点播编码格式可由板端的配置文件配置,修改对应sensor的配置文件中rc_mode字段的值即可。
  • 支持多路编码点播工具中,默认启动的是第一路编码点播。若是想要预览其他路,使用预览通道选择。
  • 如需修改编码格式,需要在对应sensor配置文件中修改venc字段的rc_mode为所需要的编码格式。支持多路编码预览的工具,修改编码格式,需要在对应sensor配置文件中修改venc.X字段rc_mode为所需要的编码格式,X为编码通道编号。
  • 配置文件路径为板端发布包中configs文件夹。
  • 点播工具暂不支持YUV预览。

视频窗口可以通过编辑窗口比例或鼠标滚轮上下滚动设置缩放比例。目前支持10%-100%的比例缩放。当视频窗口过大时,可以拖动预览窗口的滚动条查看。也可以鼠标拖动应用程序右下角改变其大小。

录像

录像:控制录像的开始与停止。下拉菜单包括录像的开始、停止和设置,如图2所示。当视频正常链接的时候,单击下拉菜单录像按钮进行录像。开始录像时录像按钮变为且下拉菜单变为。在“录像时长”处显示已录像时长。此时可单击下拉列表的停止按钮,停止录像。同时按钮恢复先前状态,“录像时长”消失。

SVAC3.0文件播放

  1. 点击主界面“Open SVAC3 File",弹出如下界面

  2. 点击Browser选择要播放的.svac3文件,选择播放的帧率,默认帧率30帧/秒,点击“OK”开始播放,播放界面如图1所示。

    须知:

    当录制的文件开头缺少I帧时,第一次播放会出现大面积绿屏现象,直到解析到I帧才会正常显示,后续循环播放也正常显示。

    图 1 播放界面

    工具栏各功能按钮和区域的介绍如下:

    说明:

    ① 暂停播放/恢复播放 ② 终止播放 ③ 播放回退(注:SMART_CRR模式录制的文件不支持此功能) ④ 播放步进 ⑤ 当前播放的画面的帧数 ⑥ 当前播放的.svac3文件分辨率 ⑦ 输出图层(具体参考输出图层) ⑧ 播放倍速切换(0.25x/0.5x/1x/2x) ⑨ 抓取并保存正在播放这一帧画面为YUV文件

点击About弹窗可以查看能查看当前SVAC3解码库版本号,SVAC3.0解码库只支持向前兼容。

右键功能菜单

显示方式

在“视频预览主页面”单击鼠标右键出现图1,第1个VO Type,有4个选项,默认使用BT709_FULL。

图 1 右键菜单(显示方式)

解码方式

在“视频预览主页面”单击鼠标右键出现图1,第2个Stream Type,有2个选项,默认使用Rate First,Data First一般用于超大I帧的场景。

图 1 右键菜单(解码方式)

区域平均亮度统计

在“视频预览主页面”单击鼠标右键出现图1,第3个Brightness Statistics,有2个选项,默认使用OFF。

图 1 亮度统计开关

选中ON后,鼠标左键在图像上单击后按住不放,拖动框选想要的区域后,松开鼠标左键,数值就会显示在状态栏,如(Y:87)

此功能比较适合静态场景测试,当图像为高速运动场景时。获取的数据可能和实际鼠标单击时的图像相差较大。

输出图层

在“视频预览主页面”单击鼠标右键出现图1,第4个OutLayer,有2个选项,默认使用Normal,Original用于隐私保护等特殊使用场景。

图 1 输出图层选项

须知:

  • 仅Hi3511CV100工具的H265、SVAC3.0支持隐私保护业务。
  • 非隐私保护码流OutLayer切换到Original模式播放时,会无法显示,画面黑屏。

参数设置

单击主界面参数设置按钮后,弹窗如图1所示。单击 按钮可以读取并刷新当前页面的参数值。

图 1 参数设置弹窗

WDR模式切换

WDR模式切换,可获取当前设备支持的WDR模式,并可快速切换所有支持的WDR模式,画面快速生效,如图1所示。

图 1 Config-WDR模式切换

ViDev选择VI设备,WDR下拉选择要切换的WDR模式,选择即生效。

说明:

  • Hi3511CV100 不支持WDR模式切换。
  • 如当前ViDev仅支持一种WDR模式,该功能即不允许切换操作。
Stitch数据源切换

Stitch数据源切换功能实现输入到Stitch模块的数据来源快速设置,点播画面立即生效,如图1所示。

图 1 Config-Stitch数据源设置

Pipe0 From Source Seq表示pipe0图像数据从镜头x获取,Pipe1 From Source Seq表示pipe1图像数据从镜头y获取,默认设置0,1下发板端,点播画面无变化。设置其他不同值下发板端,点播图像会切换到设置的镜头画面。

须知:

Hi3516CV610、Hi3511CV100 不支持Stitch。

Stitch Lut 数据设置

Stitch Distance下发板端,生成Lut标定文件,并将标定文件应用到当前媒体业务。

图 1 Config-Stitch Lut动态标定

须知:

  • 板端需运行匹配参数调试的媒体业务。
  • Hi3516CV610、Hi3511CV100不支持Stitch。
参考帧个数设置

通过Max Ref Num来设置播放器的参考帧个数。

图 1 Config-H265/SVAC3.0参考帧数量配置

须知:

  • 参考帧是指帧间预测时需参考的图像帧,当配置的参考帧个数低于码流的参考帧个数时,解码出来的数据将出现错误。同时,配置的参考帧越大,解码器的内存需求也会增加,因此,参考帧应配置在合理范围内,建议与码流实际的参考帧个数保持一致,默认配置为2。
  • 仅H265和SVAC3.0支持参考帧个数设置。

当配置的参考帧个数低于码流的参考帧个数时,点播或离线播放将显示如图2提示。

图 2 参考帧个数不足报错提示

录像和YUV抓取设置

录像和YUV抓取保存路径设置,如图1所示。

图 1 Config-保存路径设置

  • Record

    点击Browser,支持手动选择录像文件储存在PC中的路径。

  • YUV

    当勾选"Same directory as the current file"时,Browser无法点击,YUV默认保存在正在播放的文件的目录;当不勾选时,可以点击Browser,支持手动选择YUV储存在PC中的路径。

Sensor参数设置

Sensor参数设置功能,实现动态切换配置sensor参数。如图1所示。

图 1 Config-导入ini文件

  • Browser功能

    支持手动选择PC中的ini配置文件。

  • Send功能

    把Browser选中的配置文件下发到板端并配置到板端。

须知:

  • Hi3511CV100不支持Sensor参数设置。
  • 发送到板端的配置文件格式必须与模板格式一致。
  • 板端重加载配置时会断开连接,加载成功后自动重连板端显示点播画面。
Hardware 选项设置

H264 Hardware-accelerated decoding 选项可以控制 H264 硬件解码的类型。

图 1 Hardware 选项设置

RunBe 送帧

RunBe 送帧开关,通过命令下发控制媒体是否送帧。

图 1 Config-RunBe设置

须知:

  • Hi3511CV100不支持RunBe 送帧
  • 板端需运行匹配参数调试的媒体业务。
  • 运行RunBe业务时,灌RAW调试前需要先停止RunBe的送帧。
  • 运行WDR RunBe业务时,不建议灌RAW。由于ISP中断间隔时间较短,此时灌RAW会出现VENC编码帧率较高。

ini文件适配

表 1 ini文件参数一览表

Section字段

Key字段

对应接口

说明

isp

isp_num

工具内部参数

isp数目,与isp.x配置项的数目匹配

interrupt_bottom_half

ss_mpi_isp_set_mod_param

参考《ISP开发参考》

isp.0

dev_id

-

启动isp的设备号

sensor_type

-

ot_isp_sns_obj结构体对象

sensor_lib_file

工具内部参数

sensor动态库文件

blc_clamp_en

pfn_set_blc_clamp

ot_isp_sns_blc_clamp结构体

wdr_mode_num

use_wdr_mode

wdr_modex

use_mipi_modex

工具内部参数

wdr模式配置项,详见表下说明1

wnd_rect.*

sns_size.*

frame_rate

bayer_format

sns_*

mipi_crop*

ss_mpi_isp_set_pub_attr

参考《ISP开发参考》

sns_type

i2c_dev

bit4_ssp_dev

bit4_ssp_cs

pfn_set_bus_info

ot_isp_sns_commbus配置项,详见表下说明2

stats_cfg.*

ss_mpi_isp_set_detail_stats_cfg

参考《ISP开发参考》

{其他字段}

ss_mpi_isp_set_ctrl_param

参考《ISP开发参考》

mipi

lane_divide_mode

OT_MIPI_SET_HS_MODE

MIPI hs_mode配置项

mipi_mode_num

工具内部参数

MIPI数目,与mipi_mode.x配置项的数目匹配

mipi_mode.0

sns_clk_src

sns_rst_src

OT_MIPI_ENABLE_SENSOR_CLOCK

OT_MIPI_DISABLE_SENSOR_CLOCK

OT_MIPI_RESET_SENSOR

OT_MIPI_UNRESET_SENSOR

参考《MIPI使用指南》

ext_data_en

num

ext_data_bit_width

ext_data_type

OT_MIPI_SET_EXT_DATA_TYPE

对应ext_data_type_t结构,参考《MIPI使用指南》

{其他字段}

OT_MIPI_SET_DEV_ATTR

对应combo_dev_attr_t结构,参考《MIPI使用指南》

vi

dev_num

工具内部参数

VI Dev数目,与vi_dev.x、vi_timing.x配置项的数目匹配

pipe_num

工具内部参数

VI Pipe数目,与vi_pipe.x配置项的数目匹配

stitch_grp_num

工具内部参数

拼接组数目,与vi_stitch_grp.x配置项的数目匹配

run_be_num

工具内部参数

run be数目,与vi_run_be.x配置项的数目匹配

wdr_grp_num

工具内部参数

wdr组数目,与vi_grp.x配置项的数目匹配

vi_stitch_grp.0

{所有字段}

ss_mpi_vi_set_stitch_grp_attr

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频输入”章节

vi_dev.0

dev_id

-

VI Dev设备号

vi_mipi_devno

-

VI Dev使用MIPI的devno

bind_pipe_num

bind_pipe_id

工具内部参数

VI Dev绑定VI Pipe设置

{其他字段}

ss_mpi_vi_set_dev_attr

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频输入”章节

vi_dev_thermo.0

{所有字段}

ss_mpi_vi_set_thermo_sns_attr

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频输入”章节

vi_timing.0

{所有字段}

ss_mpi_vi_set_dev_timing_attr

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频输入”章节

vi_run_be.0

run_be_en

工具内部参数

runbe模块使能开关

pipe_num

wdr_mode

工具内部参数

Pipe通道数及wdr模式

dump_pipe_id

工具内部参数

VI Pipe通道

send_pipe_id

工具内部参数

VI Pipe通道

vi_pipe.0

pipe_id

-

VI Pipe通道

vc_number

ss_mpi_vi_set_pipe_vc_number

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频输入”章节

chn_num

工具内部参数

VI Chn数目,与vi_chn.x.x配置项的数目匹配

bnr_info_en

nr_effect_mode

bnr_buf_num

ss_mpi_vi_set_pipe_param

ss_mpi_vi_set_pipe_bnr_buf_num

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频输入”章节

{其他字段}

ss_mpi_vi_create_pipe

ss_mpi_vi_set_pipe_3dnr_attr

ss_mpi_vi_set_pipe_frame_interrupt_attr

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频输入”章节

vi_chn.0.0

chn_id

-

VI Chn 通道配置

{其他字段}

ss_mpi_vi_set_chn_attr或ss_mpi_vi_set_ext_chn_attr

ss_mpi_vi_set_chn_crop

source:VI Chn扩展通道使用

bind_chn:VI Chn扩展通道使用

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频输入”章节

vi_fov.0.0

{所有字段}

工具内部参数

FOV影响ot_dis_ldc_attr结构体数据

vi_dis.0.0

{所有字段}

ss_mpi_vi_set_chn_dis_cfg

ss_mpi_vi_set_chn_dis_attr

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频输入”章节

aibnr

enable

工具内部参数

aibnr模块使能开关

load_cfg_num

工具内部参数

与aibnr_cfg.x配置项的数目匹配

aibnr_cfg.0

{所有字段}

ss_mpi_aibnr_load_model

参考《AIISP 开发参考》的“AIBNR API 参考”章节

aidrc

enable

工具内部参数

模块使能开关

load_cfg_num

工具内部参数

与aidrc_cfg.x配置项的数目匹配

aidrc_cfg.0

{所有字段}

ss_mpi_aidrc_load_model

参考《AIISP 开发参考》的“AIDRC API 参考”章节

ai3dnr

enable

工具内部参数

模块使能开关

load_cfg_num

工具内部参数

与ai3dnr_cfg.x配置项的数目匹配

ai3dnr_cfg.0

{所有字段}

ss_mpi_ai3dnr_load_model

参考《AIISP 开发参考》的“AI3DNR API 参考”章节

vi_pipe.0

(AIISP参数)

aibnr_en

工具内部参数

aibnr模块使能开关

{其他aibnr_*字段}

ss_mpi_aibnr_set_cfg

ss_mpi_aibnr_set_attr

参考《AIISP 开发参考》的“AIBNR API 参考”章节

aidrc_en

工具内部参数

aidrc模块使能开关

{其他aidrc_*字段}

ss_mpi_aidrc_set_cfg

ss_mpi_aidrc_set_attr

参考《AIISP 开发参考》的“AIDRC API 参考”章节

ai3dnr_en

工具内部参数

ai3dnr模块使能开关

{其他ai3dnr_*字段}

ss_mpi_ai3dnr_set_cfg

ss_mpi_ai3dnr_set_attr

参考《AIISP 开发参考》的“AI3DNR API 参考”章节

aidestrip

enable

工具内部参数

aidestrip模块使能开关

load_cfg_num

工具内部参数

与aidestrip_cfg.x配置项的数目匹配

pipe_num

工具内部参数

与aidestrip_pipe.x配置项的数目匹配

aidestrip_cfg.0

{所有字段}

ss_mpi_aidestrip_load_model

参考《Thermo 开发参考》的“AIDESTRIP API 参考”章节

aidestrip_pipe.0

dump_send_en

dump_vi_pipe

dump_vi_chn

send_vpss_grp

工具内部参数

aidestrip数据处理线程使能,线程的dump及send通道配置

{其他字段}

ss_mpi_aidestrip_set_cfg

参考《Thermo 开发参考》的“AIDESTRIP API 参考”章节

nuc

enable

工具内部参数

nuc模块使能开关

load_cfg_num

工具内部参数

与nuc_cfg.x配置项的数目匹配

pipe_num

工具内部参数

与nuc_cfg.x配置项的数目匹配

nuc_cfg.0

{所有字段}

ss_mpi_nuc_load_model

参考《Thermo 开发参考》的“NUC API 参考”章节

nuc_pipe.0

dump_send_en

dump_vi_pipe

工具内部参数

nuc数据处理线程使能,线程的dump通道配置

{其他字段}

ss_mpi_nuc_set_cfg

参考《Thermo 开发参考》的“NUC API 参考”章节

mcf_group

mcf_grp_num

工具内部参数

与mcf_group.x配置项的数目匹配

mcf_group.0

{所有字段}

ss_mpi_mcf_create_grp

ss_mpi_mcf_set_grp_crop

参考《黑白彩色双路融合 开发参考》

mcf_mono_pipe.0

{所有字段}

ss_mpi_mcf_set_vi_attr

参考《黑白彩色双路融合 开发参考》

mcf_color_pipe.0

{所有字段}

ss_mpi_mcf_set_vi_attr

参考《黑白彩色双路融合 开发参考》

mcf_chn.0.0

{所有字段}

ss_mpi_mcf_set_chn_attr

参考《黑白彩色双路融合 开发参考》

vpss_group

vpss_grp_num

工具内部参数

VPSS Grp数目,与vpss_group.x配置项的数目匹配

stitch_grp_num

工具内部参数

VPSS Stitch Grp数目,与vpss_stitch_grp.x配置项的数目匹配

vpss_group.0

vpss_grp

ot_mpi_vpss_create_grp

VPSS Grp通道

vpss_chn_num

工具内部参数

VPSS Chn数目,与vpss_chn.x.x配置项的数目匹配

{所有字段}

ss_mpi_vpss_create_grp

ss_mpi_vpss_set_grp_cfg

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频处理子系统”章节

vpss_stitch_grp.0

{所有字段}

ss_mpi_vpss_set_grp_stitch

ss_mpi_vpss_set_grp_stitch_blend_param

ss_mpi_vpss_start_grp_stitch_luma_sync

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频处理子系统”章节

vpss_stitch_lut.0

{所有字段}

ss_mpi_stitch_lut_generate

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频处理子系统”章节

vpss_lut_attr.0

{所有字段}

ss_mpi_vpss_set_grp_lut

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频处理子系统”章节

vpss_chn.0.0

vpss_chn

-

VPSS Chn通道

{所有字段}

ss_mpi_vpss_set_chn_attr或ss_mpi_vpss_set_ext_chn_attr

source:VPSS Chn扩展通道使用

bind_chn:VPSS Chn扩展通道使用

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频处理子系统”章节

vpss_rotation.0.0

{所有字段}

ss_mpi_vpss_set_chn_rotation

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频处理子系统”章节

vpss_fisheye.0

enable

工具内部参数

鱼眼使能标志,详见表下说明3

lmf_coef

ss_mpi_vpss_set_grp_fisheye_cfg

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频处理子系统”章节

dpu_group

rect_grp_num

工具内部参数

DPU Rect Grp数目,与dpu_rect_group.x配置项的数目匹配

match_grp_num

工具内部参数

DPU Match Grp数目,与dpu_match_group.x配置项的数目匹配

dpu_rect_group.0

{所有字段}

ss_mpi_dpu_rect_create_grp

-

dpu_rect_chn.0.0

{所有字段}

ss_mpi_dpu_rect_set_chn_attr

-

dpu_match_group.0

{所有字段}

ss_mpi_dpu_match_create_grp

-

dpu_match_chn.0.0

{所有字段}

ss_mpi_dpu_match_set_chn_attr

-

venc

venc_num

工具内部参数

VENC数目,与venc.x配置项的数目匹配

venc.0

venc_chn

-

VENC Chn通道

transfer

工具内部参数

使能网络点播

{其他字段}

ss_mpi_venc_create_chn

参数对应ot_venc_attr、ot_venc_rc_attr、ot_venc_gop_attr结构体,详见ini中注释;

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频编码”章节

vdec

vdec_num

工具内部参数

VDEC数目,与vdec.x配置项的数目匹配

vdec.0

{所有字段}

ss_mpi_vdec_create_chn

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频解码”章节

rgn

handle_num

工具内部参数

RGN数目,与rgn_handle.x配置项的数目匹配

rgn_handle.0

{所有字段}

ss_mpi_rgn_create

参考《MPP 媒体处理软件 V6.0 开发参考》的“视区域管理”章节

rgn_chn.0

{所有字段}

ss_mpi_rgn_attach_to_chn

参考《MPP 媒体处理软件 V6.0 开发参考》的“视区域管理”章节

vo

dev_num

工具内部参数

VO Dev数目,与vo_dev.x配置项的数目匹配

layer_num

工具内部参数

VO Layer数目,与vo_layer.x配置项的数目匹配

vo_dev.0

{所有字段}

ss_mpi_vo_set_pub_attr

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频输出”章节

vo_mipi_tx.0

{所有字段}

OT_MIPI_TX_SET_DEV_CFG

对应combo_dev_cfg_t结构体,参考《MIPI使用指南》

vo_layer.0

chn_num

工具内部参数

VO Chn数目,与vo_chn.x.x配置项的数目匹配

{其他字段}

ss_mpi_vo_set_video_layer_attr

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频输出”章节

vo_chn

{所有字段}

ss_mpi_vo_set_chn_attr

参考《MPP 媒体处理软件 V6.0 开发参考》的“视频输出”章节

motionfusion

fusion_num

工具内部参数

Fusion数目,与motionfusion.x配置项的数目匹配

motionfusion.0

{所有字段}

ss_mpi_mfusion_set_attr

ss_mpi_mfusion_set_gyro_six_side_calibration

ss_mpi_mfusion_set_gyro_online_drift

ss_mpi_mfusion_set_gyro_drift

ss_mpi_mfusion_set_gyro_online_temperature_drift

ss_mpi_mfusion_set_gyro_temperature_drift

参考《MotionFusion 开发参考》

motionsensor

{所有字段}

MSENSOR_CMD_INIT

对应ot_msensor_param结构体,参考《MIPI使用指南

dis_motionfusion_load

msensor_start_en

工具内部参数

是否在媒体业务启动陀螺仪(MSENSOR_CMD_START)

use_load_file

工具内部参数

是否使用*dis_ldc.txt及*msensor_param.txt

dis_ldc_file_path

msensor_file_path

工具内部参数

*dis_ldc.txt、*msensor_param.txt的文件名

bind

bind_num

工具内部参数

模块间绑定关系数目,详见表下说明4

bind_attr

{所有字段}

工具内部参数

模块间绑定关系,详见表下说明4

vb

vb_num

工具内部参数

VB数目,与vbblk.x配置项的数目匹配

vbblk.0

vb_size

vb_coefficient

blk_cnt

ss_mpi_vb_set_cfg

参考《MPP 媒体处理软件 V6.0 开发参考》的“系统控制”章节,详见表下说明5

vpss_wrap_en

blk_cnt

ss_mpi_vb_set_cfg

VPSS Wrap模式VB分配

参考《MPP 媒体处理软件 V6.0 开发参考》的“系统控制”章节

sys

align

ss_mpi_sys_set_cfg

参考《MPP 媒体处理软件 V6.0 开发参考》的“系统控制”章节

vi_aiisp_mode

ss_mpi_sys_set_vi_vpss_mode

参考《MPP 媒体处理软件 V6.0 开发参考》的“系统控制”章节

comp_ratio_10_bit

comp_ratio_12_bit

comp_ratio_14_bit

ss_mpi_sys_set_raw_frame_compress_param

参考《MPP 媒体处理软件 V6.0 开发参考》的“系统控制”章节

3dnr_pos_type

ss_mpi_sys_set_3dnr_pos

参考《MPP 媒体处理软件 V6.0 开发参考》的“系统控制”章节

  • 说明1:此ini文件支持在多种WDR模式之间切换。use_wdr_mode表示可切换的数目;use_mipi_mode表示生效的WDR模式,即以该WDR模式启动业务;wdr_mode*x表示可切换的WDR模式的种类,如果use_wdr_mode配置为2,则应当配置wdr_mode0和wdr_mode1;use_mipi_mode*与wdr_mode*对应,表示该WDR模式使用的mipimode配置为后面的[mipi_mode.x]。
  • 说明2:sns_type、i2c_dev、bit4_ssp_dev、bit4_ssp_cs用于配置此isp对应的I2C或ssp设备。sns_type配置为0(OT_ISP_SNS_TYPE_I2C)表示此isp对应I2C设备,此时需配置i2c_dev;sns_type配置为1(OT_ISP_SNS_TYPE_SSP)表示此isp对应ssp设备,此时需配置bit4_ssp_dev、bit4_ssp_cs;sns_type配置为2(OT_ISP_SNS_TYPE_BUTT)表示使用默认配置,此时无需配置i2c_dev、bit4_ssp_dev、bit4_ssp_cs。
  • 说明3:此ini文件支持配置为鱼眼模式。如果[vpss_fisheye.x]中的enable配置为FALSE,表示此Grp不使用鱼眼模式,[vpss_fisheye.x]中的其他项目无需配置,[vpss_fisheye_attr.x]也无需配置。
  • 说明4:[bind]和[bind_attr]用于配置各模块间的绑定关系。如果[bind]中的bind_num配置为5,则应当在[bind_attr]配置bind0、bind1、bind2、bind3和bind4。每一项bindx有6个属性,分别对应SrcMod、SrcDev、SrcChn、DstMod、DstDev、DstChn。例如bind0 = 16|0|0|15|0|0表示将VI Pipe0的Chn0作为前端与VO Layer0的Chn0作为后端绑定起来。
  • 说明5:[vb]和[vbblk.x]用于配置系统VB。为方便用户修改width、height时查找替换,[vbblk.x]中VbSize使用vb_size = width|height的格式进行配置。最终生效的VB大小为width*height*vb_coefficient/10,例如vb_size = 3840|2160,vb_coefficient = 20,则生效的VB大小为3840 x 2160 x 20 / 10 = 16588800

    使用PQTools抓取RAW及YUV数据时需要确认VB个数足够,通过cat /proc/umap/vb查看业务中VB分配及使用情况,设置抓取的帧数不超过剩余VB数。如抓取的帧数大于业务剩余VB,会导致媒体业务丢帧,点播工具断连,抓取RAW及YUV不连续等问题。

  • 说明6:如果配置的场景不需要某个模块,将此模块的数目配置为0即可。

  • 说明7:VENC模块的属性buf_size,在ini中体现如buf_coefficient的注释:buf_size = pic_width*pic_height*buf_coefficient,设置宽、高、系数即可计算buf_size。
  • 说明8:同系列芯片ini配置默认为可支持性能最低一款芯片。
  • 说明9:修改ini配置,实现从VI灌YUV;

    如用pipe4起业务从VI灌YUV参考如下配置修改ini:

    {"[isp.0]",       "dev_id",             "4"},
    {"[vi]",          "wdr_grp_num",        "0"},
    {"[vi_dev.0]",    "bind_pipe_id",       "4"},
    {"[vi_pipe.0]",   "pipe_id",            "4"},
    {"[vi_pipe.0]",   "isp_bypass",         "TRUE"},
    {"[vi_pipe.0]",   "pixel_format",       "38"},
    {"[vi_pipe.0]",   "compress_mode",      "0"},
    {"[vi_pipe.0]",   "nr_compress_mode",   "0"},
    {"[bind_attr]",   "bind0",              "16|4|0|7|0|0"},
    

    如用pipe4、pipe5起拼接业务从VI灌YUV参考如下配置修改ini:

    {"[isp.0]",          "dev_id",              "4"},
    {"[isp.0]",          "i2c_dev",             "-1"},
    {"[vi]",             "wdr_grp_num",         "0"},
    {"[vi_dev.0]",       "bind_pipe_id",        "4"},
    {"[vi_pipe.0]",      "pipe_id",             "4"},
    {"[vi_pipe.0]",      "isp_bypass",          "TRUE"},
    {"[vi_pipe.0]",      "pixel_format",        "38"},
    {"[vi_pipe.0]",      "compress_mode",       "0"},
    {"[vi_pipe.0]",      "nr_compress_mode",    "0"},
    {"[bind_attr]",      "bind0",               "16|4|0|7|0|0"},
    {"[isp.1]",          "dev_id",              "5"},
    {"[isp.1]",          "i2c_dev",             "-1"},
    {"[vi_dev.1]",       "bind_pipe_id",        "5"},
    {"[vi_pipe.1]",      "pipe_id",             "5"},
    {"[vi_pipe.1]",      "isp_bypass",          "TRUE"},
    {"[vi_pipe.1]",      "pixel_format",        "38"},
    {"[vi_pipe.1]",      "compress_mode",       "0"},
    {"[vi_pipe.1]",      "nr_compress_mode",    "0"},
    {"[bind_attr]",      "bind1",               "16|5|0|7|0|1"},
    

    注意:

    • pixel_format要设置为OT_PIXEL_FORMAT_YVU_SEMIPLANAR_420 格式,不同版本之间可能枚举值不同,需适配。
    • 从VI灌YUV指定的pipe号是否支持需要与芯片保持一致。
  • 说明10:一般来说ini里面默认设置可支持PQTools PC软件所有调试、抓灌等功能,但经济型芯片因为DDR非常小,需要通过修改ini多处实现部分功能。

    注意:

    • Hi3516CV610不支持vi_dev_thermo、vi_stitch_grp.x,vi_dis.x、vi_fov、aibnr、aidrc、ai3dnr、aidestrip、nuc、mcf、dpu、vpss_fisheye.x、vpss_lut_attr、vpss_stitch_lut、vdec、rgn、vo、motionfusion、dis_motionfusion_load模块;
    • Hi3511CV100不支持ini文件适配。

新sensor对接,如何支持?

利用发布包中的配置文件,修改对应参数后设置到板端使其生效。

注意:

  • Hi3511CV100不支持新Sensor对接;
  • 配置文件的格式请与发布包中配置文件格式一致,参考"ini文件适配"。

使参数生效有两种方式:

  • 板端启动指定的配置文件。

    启动脚本PQTools.sh,启动方式为:

    ./PQTools.sh 启动业务 业务启动方式 配置文件夹

    启动stream

    ./PQTools.sh -s filepath

    帮助

    ./PQTools.sh -h

    配置文件中包含修改的config_entry.ini、指定的配置文件

注意:

配置文件统一写入工具发布包中的configs文件夹内。

说明:

可以用指定的配置文件内容替换到configs里的一个sensor目录里面的ini中。

  • PC端下发配置文件。

  • 启动单板工具。

    按"板端软件执行"启动。

  • 启动PC端工具。

    打开PQStream点播工具,单击“Config”按钮后切换到“Sendcfg”页,单击“Browser”按钮选择配置好的sensor配置文件,单击“Send”即可。

第三方播放工具使用

支持第三方开源软件VLC进行在线点播。

注意:

Hi3511CV100不支持第三方播放工具使用。

使用VLC硬解ittb_stream

VLC是一款开源的播放软件,通过https://www.videolan.org 网站可以下载到Windows版本的vlc安装程序,以版本2.2.6为例,双击安装程序,根据提示进行安装。

安装完成之后,使用VLC进行大分辨率大码率的码流点播步骤如下:

  1. 打开VLC,在工具->首选项,将硬件加速打开,以及网络默认缓存策略改为最低延迟,如图1所示,单击“保存”按钮并重启VLC。

    图 1 VLC参数设置

  2. 在板端正常启动ittb_stream业务。

  3. VLC中点Ctrl+N,输入如下URL:rtsp://10.67.20.64:554/0,其中10.67.20.64为单板IP地址,0表示VENC通道号(当前已初始化且有码流的VENC通道),如图2所示。

    图 2 VLC设置播放数据源

  4. 勾选“显示更多选项”,把“正在缓冲”改成100ms,单击播放,如图3所示。

    图 3 设置播放参数

    须知:

    如果默认跑SmartP,刚开始缺少I帧画面会发绿,且长时间刷不回来,过1~2分钟后图像就正常了。

FAQ

为什么工具连接单板会提示版本不匹配?

【现象】

正确启动单板对应的图像调节工具且图像调节工具能够正确打开,打开xml文件之后连接单板,工具提示版本不匹配。

【分析】

图像调节工具板端版本与xml版本不匹配。

【解决】

查看当前使用的SDK 版本,更新xml至当前SDK版本对应图像调节工具版本。

PQTools工具文本文件导入导出异常如何处理

【现象】

PQTools工具部分支持导入导出文本文件的功能界面,如矩阵式寄存器对话框、PreGamma调试界面、Gamma调试界面、LMF转换工具等。

现象一:将记事本中能打开且格式正常的文本文件导入PC端工具时,出现“格式不正确”的提示或者乱码;

现象二:从工具导出的文本文件使用记事本打开,显示乱码。

【分析】

PQTools工具目前仅支持ANSI编码的文本文件,如果导入其他编码格式的文件则无法识别。

【解决】

现象一:导入PQTools工具文本文件前,使用记事本或Notepad++等文本编辑器将原始文件以ANSI编码重新保存。

现象二:使用记事本打开PQTools工具导出的文本文件时需要选择文件的编码格式为ANSI类型。

如何处理低照度场景编码I帧过大无法点播

【现象】

灌入低照度场景抓取的RAW后点播画面黑屏,再次连接提示成功但画面仍然黑屏。

【分析】

低照度场景的RAW经过编码后的I帧远大于正常场景,网传buffer和PC端接收码流的buffer受限不能传输和存储该I帧。

【解决】

用户可在板端配置文件config_mt.ini通过修改bufcoef配置网传buffer的大小,可参考关于特殊分辨率点播卡顿问题设置;在PC端点播画面右键选择StreamType为Data First,可保证PC端接收码流的buffer足够存储该I帧。

如何读取到RC属性或者GopMode属性

【现象】

在PQTools工具调试界面中,读取RC属性或者GopMode属性都失败。

【分析】

读取RC属性或者GopMode属性时,只能读取对应模式下的属性。如果模式错误,则会读取失败。

【解决】

查看当前RC或者GopMode处于什么模式,读取对应模式下的属性。如果需要读取其他模式下的属性,需要设置板端ini文件中的rc_mode或者gop_mode参数到对应的模式,并同时对该模式属性进行写操作。

如何解决因内存不够导致的抓/灌RAW/YUV等操作失败

【现象】

在control界面上,执行抓多帧RAW/YUV、会出现因vb块数不够而导致失败。

【分析】

板端缓存RAW和YUV数据,是从媒体业务创建的vb pool中获取上来的,当vb块数不够时,抓RAW或YUV的MPI接口就会失败返回,导致抓RAW/YUV失败。

【解决】

当抓RAW/YUV时,剩余的可用vb块数要大于所抓的帧数。

在使用CLUT标定时,出现文件路径解析错误

【现象】

工具的存放路径包含中文时,使用CLUT标定,工具报路径解析错误。如图1所示。

图 1 错误告警信息

【分析】

CLUT工具标定时,会在PQTools工具目录下自动生成临时文件。如果PQTools工具目录在中文目录下,会因为CLUT标定算法库不支持中文路径,无法解析到生成的临时文件而报错。

【解决】

将PQTools工具放在英文路径下运行。

使用非SDK提供的3A库,如何配置XML可调项

【现象】

媒体业务启用的是非SDK提供的3A库,无法使用PQTools工具进行3A参数的调试。

【分析】

PQTools工具提供的XML可调项均为SDK接口,非SDK提供的3A无法与SDK接口一一对应。

【解决】

可在XML中自行添加自定义寄存器调试非SDK提供的 3A参数,参考"物理/虚拟寄存器的添加与调试"。

用户的媒体业务起来后,PQTools工具界面不能调节AE、AWB等参数

【现象】

媒体业务起来后,使用PQTools工具进行AE、AWB等参数的调试失败。

【分析】

可能的两个原因:

  • 媒体业务IspRun没有运行起来;
  • 媒体业务加载非SDK提供的3A库;

【解决】

PQTools工具4K分辨率下部分界面显示异常

【现象】

Win7系统下,PQTools工具运行后,打开“PQ RAW YUV Analyzer”界面显示异常,如图:

【分析】

高DPI显示设置(125%、150%,甚至更高)下发生显示异常问题;

原因:Win7系统增加了高DPI适配功能,默认支持自动进行高DPI适配,使得界面窗口和控件可以自动放大显示。DPI适配不兼容代码设置的控件位置和大小。

【解决】

  • 方案一:修改显示器屏幕文本缩放比例,比如:100%。注销后生效;
  • 方案二:修改DPI配置:找到“自定义DPI设置”->“使用Windows XP风格DPI缩放比例”,修改显示状态,单击确定->单击应用。注销后生效。

PQTools工具灌RAW之后,图像显示异常

【现象】

Hi3519DV500使用ISP Simulator→RAW Utilities工具将RAW文件倒灌到板端,图像显示异常,如图1所示。

图 1 使用RAW Utilities工具后图像异常示意图

【分析】

灌RAW到FE需要开启自产生时序。

【解决】

灌RAW之前将PQTools主界面的TimingAttr的Enable勾选上。注意:勾选之后不灌RAW,图像异常。

FPN标定无法存RAW文件

【现象】

在使用FPN标定和校正功能时,无法存RAW文件,但是该芯片支持文件系统。

【分析】

为了适配无文件系统的芯片,FPN标定结果默认写到内存中。

【解决】

FPN标定支持写内存和写RAW文件两种方案,当需要存RAW文件时,可以修改config.cfg文件中[FPNSaveRaw]节点下的enable值:

  • enable=0时,表示将FPN标定结果写入内存中;
  • enable=1时,表示存RAW文件。

8k分辨率ISP工具导入RAW个数受限

【现象】

ISP标定工具,进行AWB标定时导入8k分辨率的RAW数据最多导入13张,继续导入时弹框提示“Failed to import RAW file ‘xxx.raw’: Memory allocation failed.”

【分析】

所有32位应用程序都有4G的进程地址空间,操作系统保留部分空间(1G,操作系统的内核模式地址空间限定),应用程序拥有的用户模式虚拟地址空间(3G)。

PQTools工具为32位应用程序,ISP标定工具导入RAW数据时内存申请:RAW内存和RGB内存(RAW转成RGB显示)。如:7680x4320分辨率,需要的连续内存为190M:64M(RAW)+126M(RGB)。

【解决】

  1. 根据场景导入合适张数的RAW文件。
  2. AWB标定只和光学器件(镜头、Sensor)相关,使用相同光学套件,采集小分辨率的图像进行数据标定。

关闭板端业务命令

Linux系统端PQTools.sh业务启动脚本命令选项添加“-as”字段可关闭Linux系统下的板端PQTools业务。

举例:PQTools.sh -as

PQTools DIS标定工具convert或apply失败的解决方法

DIS标定工具需要先calibration,再Convert Calibration Data,然后才可以Apply To Board。若未经过Convert Calibration Data会报错误,如图1所示。

图 1 若未经过Convert Calibration Data报错误图

在Convert Calibration Data这一步,可能出现类似上面的报错,这时可能是标定参数超出范围,参考镜头标定算法内参,标定出的算法参数超出范围有2种解决方法:

  • 重新添加标定图片,重点添加:棋盘格在画面居中、且占用画面比例较大的图片(需要靠近些镜头)若干张;
  • 减少畸变系数DistCoeffType的个数,默认为3,进行递减,直到输出参数在芯片支持的范围内,这时不需要减少图片。

其中第一种方法同时对标定效果有些改进,为首选方法。但第二种方法更快捷。

关于隐私保护PQTools工具使用及限制说明

  1. PQTools点播工具由于缺少相应的解码库,部分芯片暂时不支持点播隐私保护的码流;
  2. 板端支持业务运行时自动录制隐私保护的码流,在配置对应的隐私保护媒体之后,打开板端码流录制功能,可保存隐私保护的码流。

说明:

Hi3511CV100支持H265、SVAC3.0的隐私保护,点播工具支持H265、SVAC3.0隐私保护码流播放。

关于板端灌RAW、YUV文件名注意事项

板端通过设置config.cfg中的SrcPath设置灌RAW、YUV的数据来源目录,需要注意目录中的文件后缀.raw、.yuv需要全小写工具才能识别。

关于sensor_8M30_lut业务启动失败

板端起sensor_8M30_lut业务前需要拷贝lut_3840x2160_stride.bin到Hi35XXXX_PQ_Vx.x.x.x\configs\common目录下,lut_3840x2160_stride.bin的生成可参考《GDC调试指南》的"LUT查找表"章节。

说明:

Hi3516CV610不支持。

关于Thermo业务启动报"I2C_WRITE error"问题

板端运行ko前,需检查ko目录下的load脚本(Hi3519DV500:load3519dv500,Hi3516CV610:load3516cv610),检查陀螺仪驱动是否关闭,即:#insert_gyro #remove_gyro。因Thermo与GYRO 管脚复用,如加载GYRO驱动,导致Thermo报"I2C_WRITE error"。

关于板端报错system alloc mmz memory failed

板端运行ko命令时设置mmz_size不够导致。可以加大mmz_size,或者使用./load35XXXX -a命令设置mmz_size默认值。

关于特殊分辨率点播卡顿问题

【现象】

当板端运行特殊宽高媒体业务场景,如2880*1620。查看板端cat /proc/umap/venc 帧率正常,使用PQStream或VLC点播码流时,画面出现卡顿。

【分析】

码流数据buffer默认按分辨率大小分配,写buffer存在地址对齐问题,特殊分辨率地址对齐产生偏移导致数据溢出。特殊分辨率需要增加buffer大小。

【解决】

打开Hi35XXXX_PQ_Vx.x.x.x/configs/common/config_mt.ini,修改文件中bufcoef参数,根据单板内存大小调整。

  1. 内存足够时,按倍数调整,如bufcoef = 2000/3000;
  2. 内存不足时,建议将bufcoef缩小,需要尝试几次,能正常点播即可。如bufcoef = 500/200/100。

导入导出bin时有ai3dnr_pipe_get_cfg failed错误

若没有开启AI 3DNR,导入导出3DNR bin时,板端会有 ai3dnr_pipe_get_cfg failed 的错误,不影响功能。

如何处理板端长时间灌RAW业务,出现OOM导致进程挂死的问题

【现象】

长时间灌RAW, 板端可能会出现因为内存不足触发OOM(out of memory)导致灌RAW进程被杀死的问题。

【原因】

该问题原因是灌RAW场景下需要申请大量系统内存,可能导致系统内存不足而触发内核的OOM机制杀掉灌RAW进程。

【解决方案】

建议通过增大系统内存的方法解决。具体是通过增大bootargs 的mem参数值到138048K(只有灌RAW场景)以上,修改load ko脚本中mmz 地址及大小,将系统内存大小调至业务需求的合理范围。

多版本Python安装须知

  • 建议只安装Python3.9.2。
  • 同一个环境中,如果同时存在3.x版本的python,可以参考图1设置环境变量。

    图 1 多版本Python环境变量设置

  • 同一个环境中,只能存在一个3.9.x版本的Python(例如安装3.9.7后如果要安装3.9.2,会有报错提示已存在3.9.x的Python,需要将3.9.7版本的Python卸载掉)。

Timelag在Python环境安装好后初次标定失败问题

【现象】

Timelag导入文件设置参数后进行标定,弹窗报错,第二次才能标定成功。

【原因】

在进入Timelag页签时Python才开始初始化设置,第一次标定可能还没初始化成功。

【解决方案】

标定失败后等待几秒再次标定即可。

小内存芯片抓灌场景如何配置VB

【现象】

由于内存限制,ini中默认VB设置不适用于所有抓灌场景。默认设置的VB值,支持1组数据抓或灌。VB参数使用参考ini文件适配中VB模块描述。

【原则】

灌入RAW/YUV失败需要减少VB个数配置,抓取RAW/YUV失败需要增加VB个数,抓取JPEG失败需要减少VB个数。

【准备】

启动默认ini业务,正常运行后通过cat /proc/umap/media-mem查看剩余的内存大小。

【场景】

  • 抓取RAW或YUV数据:增加ini中VB个数,根据剩余内存大小确定增加的VB个数。
  • 灌入RAW或YUV数据:减少ini中VB个数,确保业务起来cat /dev/logmpp无报错即可,再根据剩余的内存大小计算可以灌入的帧数。
  • 灌入RAW数据后抓取JPEG:减少ini中VB个数,确保业务起来cat /dev/logmpp无报错即可,分析剩余内存大小,预留JPEG数据内存,再确定灌入帧数。
  • 增加OS内存起媒体业务:减少ini中VB个数,确保业务起来cat /dev/logmpp无报错即可。
  • 板端批量灌RAW抓取YUV数据,报bad address:增加ini中vb_coefficient = 20类型的VB数,若VB不够减少vb_coefficient = 15类型的VB数。
  • ss_mpi_sys_mmz_alloc/ss_mpi_vb_create_pool/:减少ini中VB个数,确保业务起来cat /dev/logmpp无报错即可。
  • logmpp中有mmz/buffer size报错:减少ini中VB个数,确保业务起来cat /dev/logmpp无报错即可。