# 修订记录

| 版本 | 修订日期  | 修订说明                               |
| ---- | --------- | -------------------------------------- |
| 0.1  | 2024.6.13 | 初版                                   |
| 0.5  | 2024.6.19 | Modify-修订格式和个别图标引用问题      |
| 1.00 | 2024.7.1  | 调整文档语句语义以及部分模块拍板问题。 |
| 2.00 | 2024.9.3  | VtunerClient新增和调整功能完善         |
|      |           |                                        |

# X5 ISP introduction

本章概述了 X5 提供的 ISP 图像质量 (PQ) Tuning工具

## ISP PQ Tuning工具集简介

X5 提供的 ISP PQ Tuning工具集，包括Tuning Server和 VTunerClient， Tuning在 FPGA 或开发板上运行的 ISP 的模块、传感器和相关寄存器。Tuning Server和 VTunerClient 采用服务器-客户端架构，通过 HTTP、TCP 或 UART 协议连接以太网进行交互。使用 ISP PQ Tuning工具集，您可以通过预览和Dump输出视频和图像来检查Tuning结果。

### Tuning Server

Tuning Server是一个与X5板卡或仿真器上的 ISP SDK 一起工作的服务器，通过可执行程序 tuning-server 运行。它监控来自 VTunerClient 的请求。一旦收到请求，服务器根据请求中的配置更新相应的操作。

### VTunerClient

VTunerClient 是一个在您本地个人计算机 (PC) 上提供图形用户界面 (GUI) 的客户端，用于Tuning ISP 的特性。它负责从Tuning Server收集数据并向其发送控制请求。

## 操作系统兼容性

为了顺利的运行Tuning Server和 VTunerClient，建议您选择的开发机应满足以下要求：

| **Component** | **Operating System**                                         |
| ------------- | ------------------------------------------------------------ |
| Tuning Server | ●   Ubuntu 16 x64 or later  ●    Other Unix-like operating system |
| VTunerClient  | ●   Microsoft Windows 7 x64 or later  ●   Ubuntu 16 x64 with GUI or later |

表格 1.2‑1 OS Compatibility

## Client-Server连接协议

VTunerClient 可以通过以下协议连接Tuning Server：

- Transmission Control Protocol (TCP)

可以满足图像注入、实时预览、Dump和统计功能。

## 软件发行包

Tuning Server发行包为 X5_ISP_Unified_Src_drv\_\<版本\>.tgz。

VTunerClient 可执行文件为：

- VTunerClient-\<version\>-Win32-x86_64-\<version\>-Setup.exe for Windows OS

# Tuning Server

本章提供了有关如何设置Tuning Server，适用于FPGA或者仿真器上运行的Tuning Server。如果是基于地瓜X5的开发设备脚本已经集成，此章节可以不用参考。

## 建立Tuning Server

本节介绍如何使用 CLI 工具 **t_install** 来设置在FPGA或仿真器上运行的Tuning Server。

**先决条件**

- 目标操作系统满足 [操作系统兼容性](#id2) 中列出的要求。

- [ 软件发行包 ](#id3)中列出的Tuning Server发行包可用。

**操作步骤**

1.  启动X5开发板。

2.  根据需要编辑 t_install/interact/Maintain/Edition/units.sh 脚本

```
export TUNE_EDITION_OPTION_DRIVER_UNITS=1 export TUNE_EDITION_OPTION_XML=1
export TUNE_EDITION_OPTION_FILESYSTEM=1 export TUNE_EDITION_OPTION_OS=1
export TUNE_EDITION_OPTION_TRANSMIT_HTTP=1
export TUNE_EDITION_OPTION_TRANSMIT_TCP=1
# export TUNE_EDITION_OPTION_TRANSMIT_UART=1
```

**Note：**如果在Tuning Server安装后更新了 units.sh 脚本中的环境变量设置，则需要重新启动交互菜单并重新编译Tuning Server以激活更新的设置。

3.  有关连接协议支持的信息，请参见 [Client-Server连接协议](#client-server)。

4.  运行以下命令启动交互菜单：

```
./t_install/install.sh -i
```

然后，当前级别的选项将显示出来。有关整个菜单树的信息，请参见 [菜单树](#id6)。

- 要选择一个选项，请输入选项前的 ID 并按 Enter 键。

- 要退出到上一级，请输入 Quit 前的 ID 或输入 q 并按 Enter 键。

- （仅适用于仿真器）选择 Maintain \> Edition \> units_emulator 进入仿真器模式。如果Tuning Server将在 FPGA 上运行，请跳过此步骤。

- 选择 Maintain \> Environment \> Install Builtin Tools 以加载工具包并安装 CMake 和 Ninja 等工具。

- 按以下方式选择平台并构建 SDK：
  - 如果Tuning Server将在 FPGA 上运行，选择 Install \> Module \> SDK Units \> Platform \> FPGA \> Quit \> Install
  - 如果Tuning Server将在仿真器上运行，选择 Install \> Module \> SDK Units \> Platform \> C Model \> Quit \> Install


&nbsp;

8.  选择Install \> Module \> SDK Units \> Sensor \> \$sensor_device来选择传感器，，其中\$sensor_device指的是您想要调整的传感器。

> **Note**：如果您想要更换传感器，您需要通过执行步骤6到步骤8来重新构建服务器。

9.  选择**Install \> APP \> Tuning Server**来构建Tuning Server。

**操作结果**

Tuning Server成功构建并安装。

### 菜单树

Tuning Server安装的交互模式完整菜单树如下：

```
- Install: Install application/modules, config build type
  - APP: Install APP and dependencies
    - Tuning Server: Install Server and dependencies
  - Module: Install single module (Dynamic menu, items would be different)
    - DW400
    - FFMPEG
    - MXML
    - OpenCv
    - OpenH264
    - SDK Units
      - Install
      - Platform
        - C Model
        - FPGA
      - Sensor: choose sensor device as default
    - SDK VVCam
      - Install
      - Restart
    - Tuning Common
    - Tuning Database
    - Tuning Driver
    - Tuning JSON
    - Tuning Model
      - Edition: Choose edition for ‘CModelVX’
      - Install: Install after sync, there are 3 libs (‘t_flexa/t_model/t_vpp’) you can find
      - Sync Up: Parse ‘ .aqtree’
    - Tuning Server
    - Tuning Shell
    - Tuning Transmit
- Launch APP
  - isp_media_server
  - Tuning Server
    - Config Launch Arguments: Set the settings file to initialize tuning server
    - Launch Tuning Server with GDB
    - Launch Tuning Server
- Maintain
  - Changelog: Get changelog of all projects since when, default is one month
  - Developer: Toggle developer mode for debugging t_install - Off
    - On
Edition: Change edition
  - dummy_drm: Dummy driver use DRM as frame buffer
  - dummy: Dummy driver, fill fake frame buffers
  - units_drm: Units driver, use DRM as frame buffer
  - units_emulator: Units driver(CModel)
  - units_ir: IR sensor
  - units_minimal: Use units native driver with minimal functions
  - units_rtos: Units driver, RTOS
  - units: Use units native drievr
  - v4l2: Use V4L2 driver
- Environment:
  - FPGA: Modify fpga clock rate
  - GNU: Select which version GCC for program usage
  - Install Builtin Tools: CMake, Ninja
  - Install Os Prerequisite
  - Nginx
    - Install: Install Nginx from source
    - Reload: Reload configure
    - Reopen
    - Start: Start service
    - Stop: Stop service
  - Sync Up Tools And Dependencies: Sync up tools and dependencies
  - V4L2
    - VIVID
      - Install: OS
      - Start: Load vivid driver
      - Stop: Remove vivid driver
      - Test: Launch ‘xawtv’ to verify
- Information Display all variables of tuning install
- Install:
  - Compile Warning As Error: Treat warning as error when compiling - Off
    - On
  - Shared Libs: Install shared libs or static libs - Off
    - On
  - Skip Dependencies Already Installed - Off
    - On
  - Type: Config build type
    - Debug
    - Release
  - Units Test: Build module test - Off
    - On
- ISP Version
- Package Repo: Pack resources
  - Full: Full IDE for release (uninstall first to clean IDE)
  - Minimal: Only source code
  - SDK: units/appshell/vvcam repos
  - Tuning: t_frameworks repos
- Theme: Change theme
- Toolchain: Change toolchain for cross compiling, require sync up all variables in ‘env/*.sh’
  - aarch64-linux-gnu.sh
  - aarch64-none-linux-gnu
  - aarch64-poky-linux
  - aarch64-xilinx-linux
  - arm-xilinx-ebai
  - csky-linux-gnuabiv2
  - microblazeel-xilinx-linux
  - msbuild: Export Visual Studio Project file
  - x86_64-linux-gnu
  - x86_64-w64-mingw32
- Test Bench
  - CppCheck: Use cppcheck verify source code
  - Install Server for All ISP Version: Test install server with all ISP versions
    - Install Server Then CppCheck for all ISP Version: Test install server then run cppcheck for all ISP Version
- Uninstall: Clean build files
  - All: Everything
  - Builtin Tools: All built-in tools
  - Dependencies: All dependency project
  - SDK Units
  - SDK VVCam
  - Tuning Projects
```

## Running Tuning Server

本节介绍Tuning Server设置后的运行步骤。

**先决条件**

确保按照 [Tuning Server](#id4)的说明设置Tuning Server。

操作步骤：

1.  运行以下命令启动交互菜单：

```
./t_install/install.sh -i
```

然后，当前级别的选项将显示出来。有关整个菜单树的信息，请参见 [菜单树](#id6)。

- 要选择一个选项，请输入选项前的 ID 并按 Enter 键。

- 要退出到上一级，请输入 Quit 前的 ID 或输入 q 并按 Enter 键。

2.  选择Run \> Server以运行Tuning Server。

默认的 HTTP 端口是 8080，无法配置。

默认的 TCP 控制端口是 2000，图像注入端口是 2001，原始数据Dump端口是 2002，统计端口是 2003，YUV 流端口是 45678。有关如何自定义 TCP 端口的信息，请参见 [自定义TCP/UART超时和Dump配置](#tcp-uartdump)。

# VtunerClient

本章提供了有关如何使用 VTunerClient 进行 ISP 图像质量Tuning的指南。

## 安装和启动

本节指导您如何安装和启动 VTunerClient。

一般来说，工作流程如下：

1.  安装 VTunerClient。

2.  启动 VTunerClient 工作台。

3.  将 VTunerClient 工作台切换到 ISP Tuner视图。

4.  创建一个 ISP 项目。

5.  设置与Tuning Server的连接。

### 安装 VTunerClient

在本地个人计算机 (PC) 上安装 VTunerClient。

**先决条件**

- 目标操作系统满足 [操作系统兼容性](#id2)中列出的要求。

- VTunerClient 可执行文件可用。

**安装步骤**

1)  运行 VTunerClient 可执行文件以启动安装向导。

2)  在“**Install VTunerClient**”对话框中，点击“**yes**”。

3)  在 VTunerClient 安装向导的欢迎页面，点击“**Next**”。

4)  在“**License Agreement**”页面，阅读许可协议。

5)  要接受协议，请选择“**I accept the terms of the license agreement**”，然后点击“**Next**”。

6)  在“**Choose Destination Location**”页面，点击“**Browse**”以选择安装 VTunerClient 的目标目录，然后点击“**Next**”。

7)  在“**Start Copying Files**”页面，检查安装目录。

    1)  如果选择的安装目录不正确，点击“**Back**”并转到第 6 步。

    2)  如果安装目录正确，点击“**Next**”。

8)  等待安装完成。

9)  在安装完成页面，点击“**Finish**”。

**安装结果**

- VTunerClient 已安装。

- 如果您使用的是 Windows 系统，则会在桌面上创建 VTunerClient 快捷方式。

**后续步骤**

如果要卸载 VTunerClient，可以运行 \<installation_directory\>/uninstall 启动卸载向导并按照向导完成卸载。

### 启动 VTunerClient 工作台

**先决条件**

确保已按照 [安装 VTunerClient](#id9)的说明安装 **VTunerClient**。

**步骤**

1.  打开VtunerClient

    1)  如果您使用的是 Linux 系统，在终端中运行 ./ide/vtunerclient\<version\> 文件。

    2)  如果您使用的是 Windows 系统，请使用以下方法之一：

        1.  选择“开始” \> “X5” \> “VTunerClient \<version\>”。

2.  双击桌面上的 VTunerClient 快捷方式。在弹出的“**Workspace Launcher**”对话框中，选择一个工作区并点击“**OK**”。

    1)  如果选择的工作区不存在，则会自动创建。如下图所示：

![](_static/_images/VtunerClient_guide/image2.png)

**启动结果**

• VTunerClient 工作区已创建。

• 默认情况下，工作台显示在资源视图。

### 切换到 ISP Tuner视图

本章节将 VTunerClient 工作台切换到 ISP Tuner视图。

**先决条件**

确保 VTunerClient 工作台已启动，如 [启动 VTunerClient 工作台](#id10)所述。

**步骤**

1.  在顶部菜单栏中，选择**Window \> Open Perspective \> Other**。

![](_static/_images/VtunerClient_guide/image3.png)

图 3.1‑1 选择Window \> Open Perspective \> Other

2.  在弹出的“**Open Perspective**”窗口中，选择“**ISP Tuner**”，然后点击“**OK**”。或者双击“**ISP Tuner**”。

![](_static/_images/VtunerClient_guide/image4.jpeg)

图 3.1‑2 选择ISP Tuner Perspective

**操作结果**

VTunerClient 工作台已切换到 **ISP Tuner**视图。

### 创建 ISP 工程

本节介绍如何创建一个 ISP 项目。每个 ISP 项目包含一组用于 ISP tuner的特性设置。

**先决条件**

确保 VTunerClient 工作台显示在 **ISP Tuner**视图，如[切换到-isp-tuner视图](#isp-tuner)所述。

**步骤**

1.  在顶部菜单栏中，选择File \> New \> Project。

![](_static/_images/VtunerClient_guide/image5.png)

图 3.1‑3 选择File \> New \> Project

2.  在弹出的“**New Project**”窗口中，选择**ISP** \> **ISP Project Wizard**，然后点击“**Next**”。这时会弹出 ISP 项目窗口。

![](_static/_images/VtunerClient_guide/image6.jpeg)

图 3.1‑4 创建ISP工程示例

3.  在“**Project name**”文本框中，输入要创建的项目名称。项目名称只能包含字母、数字和下划线。不支持其他特殊字符。

4.  如果要在默认位置创建项目，选择“**Use default location option**”选项。如果要自定义目标位置，请清除该选项，点击位置右侧的“**Browse**”，然后选择该位置。

5.  从“**Target names**”下拉列表中选择一个Tuning模板。

6.  点击“**Finish**”以创建项目。

操作结果

• ISP 项目已创建并列在项目资源浏览视图中。

• 在指定位置创建了一个与项目同名的文件夹。

### 设置连接服务

本节指定tuning Server的 IP 地址和口，并相应地将 VTunerClient 连接到tuning Server。HTTP 和 TCP 连接需要 IP 地址，而 UART 连接需要端口。

**先决条件**

• VTunerClient 工作台显示在

视图。有关说明，请参见[切换到-isp-tuner视图](#isp-tuner)。

• 关于tuning Server的配置可以参考[Tuning Server](#_Tuning Server_1)。

**操作过程**

1.  在工具栏中，点击 ![](_static/_images/VtunerClient_guide/image7.png) 。这时会弹出**Server Configuration**对话框。

> ![](_static/_images/VtunerClient_guide/image9.png)

图 3.1‑5 建立Tuning Server与HTTP/TCP的连接

2.  从“**Connection Type**”下拉列表中选择 VTunerClient 和Tuning Server之间要使用的协议。

> 有关支持的协议信息，请参见 [Client-Server连接协议](#client-server)。

3.  连接类型设置为 TCP，请执行以下步骤：

    1)  在“**Host(name or IP)**”和“ **Port**”文本框中输入Tuning Server的 板端IP 地址和端口号，端口号为”45678”。

    2)  点击“**Add**”将Tuning Server添加到主机列表。

        1.  如果主机信息右侧出现感叹号（!），表示访问Tuning Server失败。在这种情况下，排除连接错误并重试连接。

        2.  如果主机信息右侧出现绿色对勾（√），表示Tuning Server可访问。

4.

5.  点击“**OK**”完成配置。

**操作结果**

Tuning Server的主机地址显示在 VTunerClient 工作台的状态栏中。指示灯显示主机是否可访问。

1)  绿色指示灯表示Tuning Server可访问。

2)  红色指示灯表示Tuning Server不可访问。

![](_static/_images/VtunerClient_guide/image11.jpeg)

图 3.1‑7 连接状态图标

**Note：**需要PC与开发板在同一网段才能通信。

## 调试工作台

本节为您提供 VTunerClient 工作台用户界面 (UI) 的概述。

### ISP Tuner视图

ISP Tuner视图包含Tuning ISP 特性所需的以下组件，如图 3.2‑1所示。

<a id="ISP_Tuner_tool"></a>

![](_static/_images/VtunerClient_guide/image12.png)

图 3.2‑1 ISP Tuner工具主页面

#### 工具栏

表格描述了 ISP Tuner视图中工具栏的关键按钮（图 3.2‑1中的 区域1）

![image-20240906145347244](./_static/_images/VtunerClient_guide/image-20240906145347244.png)

表格 3.2‑1 ISP Tuner视图中关键功能描述

#### 额外组件

本节介绍了 ISP Tuner视图工具栏中 ![](_static/_images/VtunerClient_guide/image23.jpeg) 按钮下拉列表中可用的额外组件。

- **Json/Xml Edit**：一个简单的 .json 或 .xml 文件编辑器。

- **Calibration Tool**:：基于 MATLAB Runtime (MCR) 2023a 的校准工具。

> 要使用校准工具，MCR2023a 必须安装在与 VTunerClient 安装在同一台个人计算机 (PC) 上。有关更多详细信息，请参见 ISP 软件发行包中提供的校准工具用户指南。
>
> **校准工具仅在 Windows 上可用。**

- **AWB Tool**：一个可以可视化校准数据和统计数据的工具。

> **AWB 工具仅在 Windows 上可用。**有关 AWB 工具的详细信息，请参见3.2.1.2.1。

##### AWB Tool

自动白平衡 (AWB) 工具提供 AWB 校准数据和统计数据，例如有效白点的平均 RGB 值和每个色温范围内白点的比例。

AWB 工具从Tuning Server读取图像的校准数据和统计数据，并将数据绘制在图表上，并在表格中列出统计数据。每次点击“**Update**”按钮时，AWB 工具从Tuning Server读取数据并相应地刷新Dump的图像、图表和表格。

**Note**：只有在启用了图像Dump功能时，AWB 工具才会显示从流端口Dump的图像。如果功能被禁用，AWB 工具将生成并显示一张纯白色图像。有关如何启用图像Dump功能的信息，请参见 [自定义TCP/UART超时和Dump配置](#tcp-uartdump)。

**使用 AWB 工具的先决条件**

• VTunerClient 已连接到Tuning Server

• 已启动获取实时数据流，参考 [配置实时预览](#id34)所述。

• 当前项目中可用 AWB 模块和曝光统计模块。

**统计窗口块**

AWB 工具提供一个窗口，用于显示Dump的图像，分为 32x32 块，对应 32x32 元素统计数据，如图 3.2‑2所示。

![](_static/_images/VtunerClient_guide/image24.png)

图 3.2‑2 32x32 Blocks Window

- 您可以选择一个块以显示其在 AWB 统计窗口中的本地信息。一次只能选择一个块。

&nbsp;

- 选择后，该块将以黄色边框突出显示，如图 3.2‑3所示。

![](_static/_images/VtunerClient_guide/image25.jpeg)

图 3.2‑3 Block Selection

- AWB 统计窗口中对应的白点也会以黄色突出显示，如图 3.2‑3。

- 您可以点击选中的块以取消选择。每个块中的数字表示 AWB 统计窗口中选择项的平均

> **AWB 统计窗口**
>
> AWB 工具提供一个窗口，用于显示统计数据。只有参与 AWB 统计的白点被计数。
>
> **AWB Statistic**包含一个表格和一个图表。

1)  表格包括以下部分：**Global, SelectZone**和**Weight**。表格中的每个值表示相应通道的平均值。

    1.  **Global**列出整个图像的统计数据。

    2.  **SelectZone**列出块窗口中选择的块的统计数据。如果未选择块，则选择区域部分为空

    3.  **Weight**列出光源的权重。权重之和必须等于 1。如果所有权重均为 0，则需要确保启用了 AWB 模块。

> 要仅显示您感兴趣的信息，可以从**Select Item**下拉列表中选择一个选项。

要刷新表格和图表，可以点击“**Update**”按钮。但是，刷新后，之前所做的所有更改将被丢弃。

图 3.2‑2中的画面图可以通过“**Load Image**”功能导入，方便参考每个统计块数据结果。

2)  下面图 3.2‑4说明了白点和光源的分布。

> 如果 AWB 模块可用 confidenceThreshold 参数，您可以通过拖动光源的圆圈来调整每个光源的大小。这将更新并将新的 confidenceThreshold 发送到Tuning Server，并可能导致图像和统计信息的变化。调整光源大小时，需要注意以下约束：

1.  任何两个光源的圆圈不得相交。

2.  调整后的圆圈大小不得小于初始大小。

![](_static/_images/VtunerClient_guide/image26.png)

图 3.2‑4 AWB Statistic Window

#### 视图

表格 3.2‑2描述了 **ISP Tuner**中可用的视图。

| **Button**                            | **Description**                                              |
| ------------------------------------- | ------------------------------------------------------------ |
| Project Explorer</br>[ISP Tuner工具主页面图中（序号2）](#ISP_Tuner_tool) | Lists  the projects in the current workspace.                |
| Features</br>[ISP Tuner工具主页面图中（序号3）](#ISP_Tuner_tool)        | Lists   the feature modules   that can be tuned   for   the   project selected in the **Project Explorer** view.  The   label of this   view varies with the tuning template of the selected project. |
| Details</br>[ISP Tuner工具主页面图中（序号4）](#ISP_Tuner_tool)         | Shows the settings of the feature module selected in the **Features** view.  The label of this view varies with the selected  module. |
| Console</br>[ISP Tuner工具主页面图中（序号5）](#ISP_Tuner_tool)         | Prints logs in realtime.                                     |

表格 3.2‑2 Views in the ISP Tuner Perspective

### 工程资源预览

工程资源视图提供当前工作区项目的分层视图，如图 3.2‑5所示。

![](_static/_images/VtunerClient_guide/image27.jpeg)

图 3.2‑5 Project Explorer View

### 功能预览

功能预览显示可以Tuning的功能模块列表。

![](_static/_images/VtunerClient_guide/image28.jpeg)

图 3.2‑6 功能列表示例

### 模块细节

显示功能视图中选择的功能模块可用于Tuning的设置，顶部有一个控制栏。设置因不同特性而异。图 3.2‑7显示了 3D 降噪模块的详情视图示例。

![](_static/_images/VtunerClient_guide/image29.jpeg)

图 3.2‑7 细节示例

#### 控制栏

模块细节在顶部提供一个控制栏。控制栏中的按钮在表格 3.2‑3中描述。

![](_static/_images/VtunerClient_guide/image30.jpeg)

图 3.2‑8 Example Control Bar with the Write Page Button in the Details View

![](_static/_images/VtunerClient_guide/image31.jpeg)

图 3.2‑9 Example Control Bar with the Write To Manual Button in the Details View

| Button     | Name                                                         |
| ---------- | ------------------------------------------------------------ |
| (Undo)     | Undo or redo an action.  The undo/redo function is supported for each module separately. For each module,  you can undo and redo a  maximum of 10 updates.  **Note**: New updates   are stored at   the end of   the history, with   intermediate steps if   necessary.   For |
| (Redo)     | example, the initial value of **Strength** is 0, and is then sequentially  changed to 2, 4, 6, and 8. Clicking the **Undo** button repeatedly until the value is set back to 2 enables both  the **Undo** and **Redo** button,  as we can track backward to 0 and forward to 4, 6, and 8. At this point, if **Strength** is set  to 5, this update  is added  to the end of the history, after an intermediate record 8 -> 2. The redo button is then disabled  because the last step has been reached, and the **Undo** button can track backward as 5 -> 2 -> 8 -> 6 -> 4 -> 2  -> 0. |
| Save Set1  | Save the parameter settings in the current view asset1.      |
| Save Set2  | Save the parameter settings in the current view asset2.      |
| Load Set1  | Load parameter settings from set1.                           |
| Load Set2  | Load parameter settings from set2.                           |
| Read Page  | Read all the settings of the  parameters in the current view from Tuning Server. |
| Write Page | Write all the parameter settings in the  current view to Tuning Server. |

表格 3.2‑3 Control Bar Buttons in the Details View

**Note：“**Write To Manual**”**功能需要在具体模块View栏中选择“Current Value View”选项，工具端才会出现Write To Manual，该功能可以用于debug问题，把当前的Auto状态下的参数写入到Manual状态，通过修改较少的Manual参数来调试和定位问题。

#### 参数类型

参数细节支持五种类型的参数：布尔型、整数/浮点型、选项型、矩阵型和曲线型。用于设置每种参数类型的控件有所不同。

##### 布尔参数

每个布尔参数通过选择或取消选择复选框进行配置，如图 3.2‑10所示。

![](_static/_images/VtunerClient_guide/image34.jpeg)

图 3.2‑10 Boolean Parameter Example

##### 整数/浮点参数

每个整数/浮点参数通过在文本框中输入值或拖动右侧的滑块进行配置，如图 3.2‑11所示。一旦滑块被拖动，文本框中的值会更新，反之亦然。

支持的值范围在您将鼠标悬停在滑块上时会提示，左端点和右端点分别表示最小值和最大值。

![](_static/_images/VtunerClient_guide/image35.jpeg)

图 3.2‑11 Integer/Float Parameter Example

##### 选项参数

每个选项参数通过从下拉列表中选择一个值进行配置，如图 3.2‑12所示。

![](_static/_images/VtunerClient_guide/image36.jpeg)

图 3.2‑12 Option Parameter Example

**Option: view**

如果功能模块提供**view**选项，可以使用它在手动模式视图、自动模式视图和当前值视图之间切换，如下所示：

1)  如果选择**Manual Mode View**，详情视图显示手动配置参数。

2)  如果选择**Auto Mode View**，详情视图显示自动配置参数。

3)  如果选择**Current Value View**，详情视图显示模块在自动模式下插值后生效的值。

> 当前值视图为只读。然而，您可以点击控制栏中的“**Write To Manual**”按钮，将当前视图中的值分配给Tuning Server的手动参数。

![](_static/_images/VtunerClient_guide/image37.png)

图 3.2‑13 Examples of Option view

**选项：状态**

如果功能模块提供**state**选项，可以启用或禁用模块，如下所示：

1)  如果选择**Manual**，模块在手动模式下工作。只有手动模式视图是可编辑的。

2)  如果选择**Auto**，模块在自动模式下工作。只有自动模式视图是可编辑的

3)  如果选择**Off**，模块被禁用

![](_static/_images/VtunerClient_guide/image38.jpeg)

图 3.2‑14 Example of Option state

##### 数字矩阵参数

每个数字矩阵参数提供一个“**View**”按钮，点击后会弹出一个表格窗口，用于编辑矩阵，如图 3.2‑15和图 3.2‑16所示。矩阵的维度大于二，用 JSON 形式表示在表格中。

数字矩阵参数窗口包含：

1)  参数名称，也用作表格名称

2)  每个单元格的值范围

![](_static/_images/VtunerClient_guide/image39.jpeg)

图 3.2‑15 Matrix Parameter Example

![](_static/_images/VtunerClient_guide/image40.png)

图 3.2‑16 Table for Editing a Matrix Parameter

表格中，第一行包含列标题。底部的按钮在表格 3.2‑4中描述。

![image-20240906150638282](./_static/_images/VtunerClient_guide/image-20240906150638282.png)

表格 3.2‑4 Buttons in a Table Window

##### ROI 矩阵参数

每个 ROI 矩阵参数提供一个“**View**”按钮，点击后会弹出一个对话框，用于指定感兴趣区域 (ROI)，如图 3.2‑17所示（新工具在右下角load YUV数据到工具端）。

1)  要添加 ROI，可以在图像中选择一个 ROI。

> 然后，ROI 的信息，包括坐标、宽度、高度和权重，会自动添加到右侧的表格中。

2)  要修改 ROI 的权重信息，可以双击并编辑相应的单元格。

3)  要删除选定的 ROI，可以点击相应行的“**Del**”按钮。

4)  要保存更新并退出，点击“**OK**”。

**Note**：预览dump导入功能还不支持，可以手动dump样图导入select Rois界面，来辅助标注ROI区域，不导入的话将会是纯白的空白图像。此功能依赖3.4.2章节传感器信息设定。

![](_static/_images/VtunerClient_guide/image47.png)

图 3.2‑17 Window for Editing an ROI Matrix Parameter

##### 颜色矩阵参数

每个颜色矩阵参数提供一个“**View**”按钮，点击后会弹出一个对话框，用于在灰度表中显示统计数据，如图 3.2‑18所示。每个单元格中的数字表示统计数据，0 显示为黑色，255 显示为白色。

对于曝光统计，矩阵大小可以是 25x25、32x32 或其他，具体取决于硬件统计。

左上角的下拉列表提供四个选项，每个选项表示一个通道。颜色矩阵显示所选通道的统计数据。更改通道会更新颜色矩阵，这可能需要一些时间。

![](_static/_images/VtunerClient_guide/image48.png)

图 3.2‑18 Example of Color Matrix Window

##### 曲线参数

每个曲线参数通过使用折线图和二维矩阵表进行配置，如图 3.2‑19所示。每个表格行指定图表上的一个控制点的坐标。可以通过拖动折线图上的控制点或修改矩阵表中的坐标来编辑矩阵。控制点的数量是可配置的，范围从 3 到曲线上实际点的数量。

**Note**：控制点用于配置曲线。修改控制点数量不会改变曲线上实际点的数量。折线图显示控制点而非实际点，以便于配置。

每条曲线可以从导入的 .csv 文件生成。曲线控制点的 Y 值可以导出到 .csv 文件。

![](_static/_images/VtunerClient_guide/image49.jpeg)

图 3.2‑19 Curve Parameter Example

对于自动模式下的曲线参数，表格上方提供一个曲线索引选项，如图 3.2‑20所示。曲线索引选项控制应用于曲线的增益。可以选择一个索引在不同增益之间切换曲线，然后进一步编辑矩阵。

![](_static/_images/VtunerClient_guide/image50.jpeg)

图 3.2‑20 Example of Curve Parameter in Auto Mode

**折线图上方的工具栏**

图表顶部有一个工具栏。工具栏中的按钮在表格 3.2‑5中描述。

![image-20240906150704203](./_static/_images/VtunerClient_guide/image-20240906150704203.png)

表格 3.2‑5 Toolbar Buttons Above a Line Chart

![](_static/_images/VtunerClient_guide/image59.jpeg)![](_static/_images/VtunerClient_guide/image60.jpeg)

图 3.2‑21 Configure Graph Settings \> Graph&Axes

![](_static/_images/VtunerClient_guide/image61.jpeg)![](_static/_images/VtunerClient_guide/image62.jpeg)

![](_static/_images/VtunerClient_guide/image63.png)

图 3.2‑22 Configure Graph Settings \> Traces&Annotation

图 3.2‑23 Annotation Examples

##### 文件参数

每个文件参数提供一个“**Load File**”按钮，点击后会弹出一个对话框，用于加载由校准工具生成的 .txt 文件。

**Note**：如果在启动流之后加载 .txt 校准文件，校准数据可能不会生效。因此，建议在加载 .json 校准文件后，启动流之前导入 .txt 校准文件。有关如何加载 .json 校准文件的信息，请参见3.3.1.2。

![](_static/_images/VtunerClient_guide/image64.jpeg)

图 3.2‑24 File Parameter Example

### 控制台视图

控制台视图显示 VTunerClient 和Tuning Server之间的所有交互消息以及运行时错误和警告消息，如图 3.2‑25所示。

![](_static/_images/VtunerClient_guide/image65.png)

图 3.2‑25 Console View Example

## Tuning解决方案

本节指导您如何使用 VTunerClient 对运行在开发板和仿真器上的 ISP 进行微调。

一般来说，工作流程如下：

1\. 导入特性模块设置到 ISP 项目。

2\. （可选）将原始图像作为输入数据注入Tuning Server。

3\. 通过配置实时预览功能启动ISP pipe。

4\. Tuning ISP模块参数，或者创建批处理作业一次Tuning多个参数或图像。

5\. 从Dump和预览的图像/视频中检查Tuning结果。

### 导出和导入功能模块设置

#### 从ISP工程导出调试参数

**先决条件**

• VTunerClient 工作台显示在 **ISP Tuner**视图。有关说明，请参见第 3.1.3 节。

• 在**Project Explorer**中选择了一个 ISP 项目。有关如何创建 ISP 项目的信息，请参见 [创建 ISP 工程](#isp)。

• VTunerClient 已连接到Tuning Server。有关说明，请参见第 3.1.5 节。

• 已启动 ISP 数据流。有关说明，请参见第 3.3.3 节。

**操作过程**

1.  在工具栏中，点击 ![](_static/_images/VtunerClient_guide/image66.png)。

2.  在弹出的保存对话框中，选择保存文件的目标目录，命名文件，然后点击“**Save**”。

![](_static/_images/VtunerClient_guide/image67.png)

图 3.3‑1 Specifying the Location and Name of an Exported File

3.  **Export**对话框在导出过程中显示。然后，导出是否成功的信息会在对话框中提示。

![](_static/_images/VtunerClient_guide/image68.png)

图 3.3‑2 Export Dialog

**操作结果**

在指定目录中创建包含模块调试设置和校准设置的 .json 文件。

**后续步骤**

您可以按照第 [3.3.1.2 节](#_导入调试参数到 ISP 项目)的说明，将导出的文件参数导入到 **ISP project**。

#### 导入调试参数到 ISP 项目

本节将特性模块设置或校准设置从 .json 文件导入到Tuning Server。

**先决条件**

• VTunerClient 工作台显示在 ISP Tuning视图。有关说明，请参见第3.1.3。

• SDK中的 .json 默认Tuning文件和 Calibration tool生成的.json 校准文件可用于导入。或者按照第3.3.1.1节导出并根据需要编辑后的文件可用于导入。

• 在项目资源浏览视图中选择一个 ISP 项目。有关如何创建 ISP 项目的信息，请参见 [创建 ISP 工程](#isp)。

• VTunerClient 已连接到Tuning Server。有关说明，请参见 [设置连接服务](#id11)。

**操作步骤**

1.  在工具栏中，点击 ![](_static/_images/VtunerClient_guide/image69.png)。

2.  在弹出的打开窗口中，选择要导入的 .json 文件，然后点击“**OK**”。

![](_static/_images/VtunerClient_guide/image70.jpeg)

图 3.3‑3 Selecting a JSON File

> 导入过程会显示导入对话框在。然后，导入是否成功的信息会在对话框中提示。

![](_static/_images/VtunerClient_guide/image71.png)

图 3.3‑4 Import Dialog

**结果**

• 当前 ISP 项目已使用导入文件中的特性模块设置进行更新。

• 导入文件中的特性模块设置已同步到Tuning Server。然后，VTunerClient 工作台会更新Tuning Server端使用的设置。

### 将原始图像注入Tuning Server

本节将本地原始图像或视频数据发送到Tuning Server以进行 ISP 处理。

**Note**：此功能只在TCP连接下支持；如果是sensor接入情况下无需参考此节。

• VTunerClient 工作台显示在 **ISP Tuner**视图。有关说明，请参见第 [3.1.3 节](#_切换到 ISP Tuner视图)。

• 在**Project Explorer**视图中选择一个 ISP 项目。有关如何创建 ISP 项目的信息，请参见 [创建 ISP 工程](#isp)。

• VTunerClient 已连接到Tuning Server。有关说明，请参见第 3.1.5 节。

**操作步骤**

1.  在工具栏中，点击 ![](_static/_images/VtunerClient_guide/image72.png)。

> 在弹出的**Image Input**对话框中，指定以下信息：

![](_static/_images/VtunerClient_guide/image73.jpeg)

图 3.3‑5 Image Input Dialog When a Normal Raw Format Is Selected

![](_static/_images/VtunerClient_guide/image74.png)

图 3.3‑6 Image Input Dialog When an HDR Raw Format Is Selected

2.  从“**Format”**下拉列表中选择“**Normal Raw**格式”或“**HDR** 格式”。

3.  点击“**Video Input**”并选择一个原始图像或视频文件。

    1)  如果选中复选框，则需要输入视频。

    2)  如果清除复选框，则需要输入图像。

4.  如果从**Format**下拉列表中选择了普通原始格式，请单击" **Select Image** "右侧的" **Image File** "按钮，并根据" **Video Input** "设置选择图像或视频。

5.  如果从**Format**下拉列表中选择了HDR原始格式，请按以下方式配置HDR模式：

    1)  从**Stitching Mode**下拉列表中选择构图前的拼接模式。

    2)  在每个图像文件参数的右侧，单击" **Select Image** "按钮，并根据" **Video Input** "设置选择图像或视频。

6.  如果选中了" **Video Input** "复选框，请执行以下步骤：

    1)  " **Frame Begin** "文本框中输入起始帧的ID。

    2)  在" **Frame Num** "文本框中输入帧数。

7.  在" **Width** "和" **Height** "文本框中分别输入输入的宽度和高度。

8.  从**Bayer Pattern**下拉列表中选择输入的bayer模式。

9.  单击" **OK** "。

> **操作结果**

Tuning Server会处理发送的图像或视频数据。

### 配置实时预览

本节启动实时预览功能，以便在Tuning过程中实时查看 ISP 的输出。

**先决条件**

- VTunerClient 工作台显示在 ISP Tuning视图。有关说明，请参见第 [3.1.3 节](#_切换到 ISP Tuner视图)。

- 在**Project Explorer**视图中选择了一个 ISP 项目。有关如何创建 ISP 项目的信息，请参见 [创建 ISP 工程](#isp)。

- VTunerClient 已连接到Tuning Server。有关说明，请参见 [设置连接服务](#id11)。

- （可选）如果server需要原始数据输入，则将原始数据发送到Tuning Server。有关说明，请参见第3.3.2节，将原始图像注入Tuning Server。

- 自定义传感器信息。有关说明，请参见第3.4.2节，自定义传感器信息。

**操作步骤**

1.  在工具栏中，点击![](_static/_images/VtunerClient_guide/image75.png)。

> 在弹出的**Live Preview**对话框中，指定以下信息：

**Note：**当前环境只需要关注Input Type和Sensor Name两个标题即可，其他项无需关注（Preview功能使用第三方工具**Hbplayer**来替代，将在下文介绍）；另：无论是否需要实时预览功能，这两个复选框都是进行功能调整所必需的。

![](_static/_images/VtunerClient_guide/image76.jpeg)

图 3.3‑7 Configuring Live Video Preview

2.  从“**Input Type**”下拉列表中选择要输入到Tuning Server的类型。

    1)  如果选择了**RDMA**，则ISP使用线性原始数据作为其输入。然后，“**Sensor Name**”和“**Sensor Mode**”将不可编辑。

    2)  如果选择了**Retimimg**，则ISP使用HDR图像数据作为其输入。 然后，必须从“**Sensor Mode**”下拉列表中选择“**Stitch HDR**”选项。

    3)  如果选择了"**Sensor**"，ISP将使用传感器输入信息。

3.  从“**Sensor Name**”下拉列表中选择与有关说明，请参见第3.4.2节自定义传感器信息，然后这里选择相匹配的传感器。

#### Hbplayer在线预览工具

**工具获取**

可以通过SDK包或跟地瓜技术接口获取

**先决条件**

- 需要板端正常出数据流

- Hbplayer已经在工作PC上并正常打开（在hbplayer \out目录下，点击hbplayer.bat文件）

**操作步骤**

1.  点击hbplayer菜单栏 ![](_static/_images/VtunerClient_guide/image77.png)。

2.  设置板端IP地址（如显示RAW图需要设定下方相应格式）

![](_static/_images/VtunerClient_guide/image78.png)

图 3.3‑8 Hbplayer Connection

3.  主页面**Version Select**选择J6

4.  点击主页面network下面**connect**，即可看到实时画面，如图 3.3‑9。

![](_static/_images/VtunerClient_guide/image79.png)

图 3.3‑9 Hbplayer view

**Note**：Hbplayer通过网络接收板端发送的YUV数据，并进行软解码做实时显示，大分辨率的图像会收到带宽限制而丢帧。

### Feature Module调试

本节主要介绍调试 ISP 的Feature Module参数。

先决条件

- VTunerClient 工作台显示在 ISP Tuning视图。有关说明，请参见第 [3.1.3 节](#_切换到 ISP Tuner视图)。

- 在项目资源浏览视图中选择了一个 ISP 项目。有关如何创建 ISP 项目的信息，请参见 [创建 ISP 工程](#isp)。

- VTunerClient 已连接到Tuning Server。有关说明，请参见 [设置连接服务](#id11)。

- ISP pipeline被启动和初始化。详细请参考[配置实时预览](#id34)。

**配置步骤**

1.  在**Features**预览中，选择您想要调整的feature module。

> 然后，该模块的相应参数将在详细信息视图中显示。

2.  在详细信息视图中，根据 [参数类型](#id21)，参数类型中的说明配置模块。

> 默认情况下，当切换到另一个模块时，VTunerClient会自动从Tuning Server读取数据。重新建立连接后，您需要在控制栏点击“**Read Page**”以手动进行数据同步。此外，导入一个.json文件后，当前视图将自动更新为从server读取的数据。

3.  点击“**Write Page**”将当前的参数设置写入到Tuning Server。

> 如果偏好设置中的自动数据写入复选框被选中，此步骤可以跳过。有关详细信息，请参见第3.3.7节，配置偏好设置。

**操作结果**

ISP 的输出视频或图像根据调整的模块参数进行更新。

### 编辑寄存器

本节介绍如何进行 ISP 的寄存器设置。

**先决条件**

- VTunerClient 工作台显示在 **ISP Tuner**视图。有关说明，请参见第 [3.1.3 节](#_切换到 ISP Tuner视图)。

- 在**Project Explorer**视图中选择了一个 ISP 项目。有关如何创建 ISP 项目的信息，请参见 [创建 ISP 工程](#isp)。

- VTunerClient 已连接到Tuning Server。有关说明，请参见第 3.1.5 节。

- ISP pipeline被启动和初始化。详细请参考[配置实时预览](#id34)，进行配置。

**操作步骤**

1.  在工具栏中，点击 ![](_static/_images/VtunerClient_guide/image80.png)。

然后，寄存器的**Edit Register**页面就会出现

![](_static/_images/VtunerClient_guide/image81.png)

图 3.3‑10 Edit Register

● 重要提示：设置必须完全遵循硬件发布包中提供的软件可访问寄存器文档中列出的要求

2.  在“**Address**”文本框中，输入要编辑的目标寄存器的地址。

3.  从“**Type**”下拉列表中，选择是编辑ISP寄存器还是传感器寄存器。

4.  如果要编辑连续的寄存器，请选择“**Sequence**”复选框。

5.  如果选择了“**Sequence**”复选框，请输入从指定地址开始要编辑的连续寄存器的数量。

6.  在“**Value**”文本框中，输入寄存器的新值，或者为右侧每个寄存器位选择或清除相应的复选框。

7.  点击“**Add**”将寄存器设置添加到表中。如果地址未指定或已存在于表中，则添加失败。

或者，点击**Export**将表导出到.csv文件，编辑该文件，然后点击“**Import**”进行导入。

8.  （可选）在表中，选择一条记录，然后点击“**Delete**”将其从表中删除。

9.  （可选）重复步骤2至步骤8，编辑表格以包含所有必需的寄存器设置。

10. 点击“**Write**”以使用表中的所有寄存器设置更新Tuning Server。要查询表中寄存器的值，请点击“**Read**”。查询结果将覆盖表中的“**VALUE**”列。

**操作结果**

ISP 的寄存器设置根据输入的值进行更新。

### Dump图像或视频

本节介绍如何从 ISP Dump图像或视频。

**先决条件**

- Hbplayer工具已经显示出图。详细参考[3.1.3 节](#_切换到 ISP Tuner视图)

- 在**Project Explorer**视图中选择了一个 ISP 项目。有关如何创建 ISP 项目的信息，请参见 [创建 ISP 工程](#isp)。

- VTunerClient 已连接到Tuning Server。有关说明，请参见 [设置连接服务](#id11)。

- ISP pipeline被启动和初始化。详细请参考[配置实时预览](#id34)，进行配置。

**操作步骤**

1.  打开Hbplayer预览界面

2.  点击页面图 3.3‑11区域，可以实现YUV/BPM/jpg数据的dump。

![](_static/_images/VtunerClient_guide/image82.png)

图 3.3‑11 Hbplayer dump image

3.  Dump完成后在Hbplayer根目录下面/dump文件夹，下面会有抓取的对应数据。

### 配置首选项

本节介绍如何配置 VTunerClient 的首选项。

**先决条件**

确保 VTunerClient 工作台已经接入服务并连接板端。

**操作步骤**

1.  在工具栏中，点击 ![](_static/_images/VtunerClient_guide/image83.png)。

> 会出现以下页面

![](_static/_images/VtunerClient_guide/image84.png)

图 3.3‑12 Configuring Preferences

2.  选择或清除“**Automatically read data when switching pages**”，以控制是否在切换页面时自动从Tuning Server读取数据，并用读取的数据更新参数信息。

3.  选择或清除“**Automatically write data when modify parameter**”，以控制是否在调整参数模块时自动将数据写入Tuning Server。

4.  点击“**OK**”。

### 批量Tuning

VTunerClient提供批量调整功能，以便可以批量调整多个参数或图像。有两种批量模式可用：

- 单图像模式

在此模式下，可以在单个输入图像上调整多个参数。每个选定参数的所有候选值都会被安排和组合。创建一个调整任务，将每个参数值组合应用到输入图像上。在批量中创建的调整任务组成一个批量作业。

- 多图像模式

在此模式下，可以将固定的参数值应用到多个图像上，并批量获得输出图像。为每个图像创建一个调整任务。在批量中创建的调整任务组成一个批量作业。

每个调整任务生成的图像被视为调整结果，并保存到指定路径。每个批量作业完成后，您可以在VTunerClient中查看和比较结果。

所有批量作业都被存档在一个名为isp_tuningtool.db的数据库中，该数据库位于工作空间。您可以在VTunerClient中查看和管理存档的作业。

#### 在单图像模式中创建批量作业

本节介绍在单图像模式中创建一个批量作业，以批量调整多个参数。在单图像模式下，您可以调整从本地系统导入的图像或从传感器Dump的视频。

**先决条件**

- VTunerClient已连接到Tuning Server。

> 有关说明，请参见第3.1.5节，设置连接服务。

- 图像/视频Dump功能正常工作。

> 有关说明，请参见第3.3.6节，Dump图像或视频。

- 如果您想调整从本地系统导入的图像，则图像输入功能正常工作并且已启动流式传输。

> 有关说明，请参见第3.3.2节，将原始图像注入Tuning Server。

**操作过程**

1.  在工具栏上，点击 ![](_static/_images/VtunerClient_guide/image85.png)。

> 显示批量作业对话框。

![](_static/_images/VtunerClient_guide/image86.png)

图 3.3‑13 Selecting a Mode for a Batch Job

2.  选择**Single Image Mode**并点击**OK**。

提示出一个向导页面，提供创建批量作业。

![](_static/_images/VtunerClient_guide/image87.png)

图 3.3‑14 Creating a Batch Job in Single-Image Mode

3.  在“**Configurations**”部分，为批量作业配置基本设置。

    1)  在“**Save Path**”右侧，点击“**Browse**”并选择您想要保存调整结果的目录。

    2)  在“**Comment**”文本框中，输入批量作业的注释。

**Note：**快照数量表示您想要为每个调整任务拍摄的图像数量，在单图像模式中固定为1。

4.  在“**Parameters List**”部分，选择要调整的参数并点击 ![](_static/_images/VtunerClient_guide/image88.jpeg) 将它们添加到“**Selected Parameters**”部分。

> 或者，双击参数将它们添加到“**Selected Parameters**”部分。
>
> 您需要至少选择一个参数。最多可以选择五个参数。
>
> 只有在“**Parameters List**”部分的根节点才能被添加到“**Selected Parameters**”部分。

**Note**：所有以AUTO为前缀的参数不会出现在“**Parameters List**”部分，也不适用于批量调整。

5.  在“**Selected Parameters**”部分，调整并检查选定的参数以调整输入图像。

在每个参数的部分，**Count**表示候选参数值的数量。确保**Count**数值大于或等于1。

参数部分根据参数类型而有所不同。有关详细信息，请参阅 [批量Tuning的参数类型](#id39)，批量调整的参数类型。

![](_static/_images/VtunerClient_guide/image89.jpeg)

图 3.3‑15 Example of the Selected Parameters Section

6.  点击“**Next**”按钮创建批量作业。

然后，为批量作业分配一个唯一ID。此外，会出现一个进度条，显示作业创建的进度。

在调整由传感器Dump的视频的情况下，预览视频在进行中可能会变化。但是，在批量作业完成后，它将恢复到原始状态。

![](_static/_images/VtunerClient_guide/image90.jpeg)

图 3.3‑16 Progress Bar for Creating a Batch Job

7.  等待批量作业完成。

**操作结果**

- 显示批量作业中每个调整任务的结果图像的结果显示页面，如图 3.3‑17所示。

- 批量调整的结果图像以.jpg格式保存到由“**Save Path**”指定的目录中。

- 批量作业中调整的所有参数都恢复到运行作业之前应用的值。预览图像也恢复到批量作业之前的状态。

![](_static/_images/VtunerClient_guide/image91.png)

图 3.3‑17 Example of Batch Job Results

**后续操作**

在批量作业的结果页面上

- 要查看结果图像的详细信息，请双击该图像。

- 要比较两个结果图像，请选择图像名称前的复选框，然后点击左下角的“**Compare** ”。

![](_static/_images/VtunerClient_guide/image92.jpeg)

图 3.3‑18 Example of Dual Image View Dialog

您可以点击“**Clear**”按钮取消所有图像选择。

- 要修改批量作业的配置，请单击“**Back**”。

之后，点击“**Next**”按钮将创建一个新的作业，并赋予一个新的ID。

- 要查看选定参数的原始和调整后的JSON配置脚本，请单击“查看JSON”。在弹出的JSON视图对话框中：

  - **Base json**是指在运行批量作业之前应用的JSON配置脚本。

  - **Diff json**是指在批量作业期间应用的JSON配置脚本。

其他参数不包含在这些JSON配置脚本中。有关整个原始JSON配置脚本的信息，请查看工作区中的BaseJson文件。

![](_static/_images/VtunerClient_guide/image93.jpeg)

图 3.3‑19 Example of Json View

![](_static/_images/VtunerClient_guide/image94.jpeg)

图 3.3‑20 Example of BaseJson File and Captured Images for a Batch Job

有关如何管理历史批量作业的信息，请参见第3.3.8.3节，管理存档的批量作业。

##### 批量Tuning的参数类型

在单图像模式下的批量调整中，每个参数的可用配置根据其类型而有所不同。有关每种参数类型的部分示例，请参见图 3.3‑15。

批量调整有以下几种可用的参数类型：

- 布尔参数（图 3.3‑15中的a）

布尔参数的候选值固定为true和false。

- 整数或浮点参数（图 3.3‑15中的b）

对于整数或浮点参数，您可以指定最小值、最大值和步长，它们共同定义了候选值列表。最小值和最大值都包含在候选值列表中。

- 选项参数（图 3.3‑15中的c）

您可以点击“**Edit Options**”按钮来编辑选项参数。所有选定的项目都被视为候选值。每个选项类型的参数至少必须选择一个选项。

![](_static/_images/VtunerClient_guide/image95.jpeg)

图 3.3‑21 Example of Editing an Options Parameter

- 矩阵和曲线参数（图 3.3‑15中的d和e）

> 曲线被视为与矩阵相同的参数类型。它们之间的差别在于矩阵参数的值是一维的，而曲线参数的值是二维的。

您可以点击“**Edit Matrix**”按钮来编辑矩阵或曲线参数。

- 要添加矩阵值，点击右上角的绿色图标。矩阵值的名称默认为“未命名矩阵”。

**Note**：在您点击绿色图标后，会向Tuning Server发送添加矩阵值的读取请求。如果读取操作失败，点击绿色图标可能没有效果。

- 要编辑矩阵值，点击其名称。

- 要移除矩阵值，点击矩阵值名称右侧的红色图标。

![](_static/_images/VtunerClient_guide/image96.jpeg)

图 3.3‑22 Example of Editing a Matrix Parameter

#### 在多图像模式中创建批量作业

此任务在多图像模式中创建一个批量作业，以批量获取具有相同参数设置的多个图像的调整结果。在多图像模式下，您只能调整从本地系统导入的图像。

**先决条件**

- VTunerClient已连接到Tuning Server。

> 有关说明，请参见第3.1.5节，设置与Tuning Server的连接。

- 图像/视频Dump功能正常工作。

> 有关说明，请参见第3.3.6节，Dump图像或视频。

- 图像输入功能可以正常工作，并且可以开始流式传输。

> 然而，不要提前输入图像或开始流式传输。有关说明，请参见第3.3.2节，向Tuning Server注入原始图像。

**操作过程**

1.  在工具栏上，点击 ![](_static/_images/VtunerClient_guide/image97.png)。

会显示批量作业的对话框。

![](_static/_images/VtunerClient_guide/image98.jpeg)

图 3.3‑23 Selecting a Mode for a Batch Job

2.  选择多图像模式并点击确定。

> 提示出一个对话框，供您创建批量作业。

![](_static/_images/VtunerClient_guide/image99.jpeg)

图 3.3‑24 Configuring Image Capture for a Multi-Image Batch Job

3.  在**Create Batch Jobs**步骤中，按以下方式指定批量作业的基本信息并点击**Next**。

    1)  在“保存路径”右侧，点击“浏览”并选择您想要保存调整结果的目录。

    2)  在“注释”文本框中，输入批量作业的注释。

> **Note**：**Snapshot Num**表示您想要为每个调整任务Dump的图像数量，在单图像模式中固定为1。

4.  在**Multiple Images Input**步骤中，指定输入图像的信息并点击**Next**。

> 有关此步骤中参数的信息，请参见第3.3.2节，向Tuning Server注入原始图像。

![](_static/_images/VtunerClient_guide/image100.png)

图 3.3‑25 Specifying Input Image Information for a Multi-Image Batch Job

5.  在**Multiple Images Input**步骤中，配置流并点击完成。

> ![](_static/_images/VtunerClient_guide/image101.jpeg)、

图 3.3‑26 Configuring the Stream for a Multi-Image Batch Job

> 有关此步骤中参数的信息，请参见[配置实时预览](#id34)，进行配置。

6.  等待批量作业完成。

**操作结果**

- 显示批量作业中每个调整任务的结果图像的结果显示页面，如图 3.3‑17所示。

- 批量中调整任务的结果图像以.jpg格式保存到由“**Save Path**”指定的目录中。

#### 管理存档的批量作业

此任务管理存档在工作区中的**isp_tuningtool.db**数据库中的批量作业。

**操作步骤**

1.  在工具栏上，点击 ![](_static/_images/VtunerClient_guide/image102.png)。

> **Batch Job**对话框。

![](_static/_images/VtunerClient_guide/image103.png)

图 3.3‑27 Selecting a Mode for a Batch Job

2.  点击“**History**”按钮。

> **Batch History**对话框出现，显示一个表格，列出了存档在数据库中的批量作业。表格包含了作业的详细信息，如作业的ID、作业中的任务数量、作业的状态以及作业创建的时间。

作业状态的可能值包括：

- 0：已创建但未开始

- 1：已开始但未完成

- 2：已完成

![](_static/_images/VtunerClient_guide/image104.png)

图 3.3‑28 Example of Batch History Dialog

3.  按以下方式管理批量作业：

    1)  要查看状态值非零的批量作业的结果，请在“**Operation**”列点击“**Show**”。

    2)  要查看和编辑批量作业的配置并将其作为新作业运行，请在“**Operation**”列点击“**Edit**”。

> 新作业被赋予一个新的ID。其状态值初始化为1，并在作业完成时变为2。

3)  要在不更改配置的情况下将批量作业作为新作业运行，请在“**Operation**”列点击“**Rerun**”。 新作业被赋予一个新的ID。其状态值初始化为1，并在作业完成时变为2。

4)  要将批量作业作为新作业复制而不运行它，请在“**Operation**”列点击“**Copy**”。

> 新作业被赋予一个新的ID。其状态值为0。

5)  要删除批量作业，请在“**Job Id**”列选择相应的复选框，并点击右下角的“**Delete**”。

> 批量作业被删除后，它们的调整结果也会被删除。
>
> **Note**：对于多图像批量作业，“**Edit**”、“**Rerun**”和“**Copy**”按钮不可用。

## 自定义配置

### 定义VTunerClient中显示的模块和参数

本节介绍如何自定义 VTunerClient 的配置以适应特定需求。

**先决条件**

确保 VTunerClient 工作台连接在板端。有关说明，请参见第 [3.1.3 节](#_切换到 ISP Tuner视图)。

**操作步骤**

1.  （推荐）备份工作目录中的isp_modules.json文件。

2.  打开并编辑isp_modules.json文件以便：

    1)  移除某些模块或参数。

    2)  修改模块或参数的显示顺序。

    3)  修改模块、组或参数的显示名称。

    4)  将一些参数组合成一个新的模块。

    5)  与Tuning Server协作添加模块或参数。

![](_static/_images/VtunerClient_guide/image105.jpeg)

图 3.4‑1 isp_modules.json Example

> 在isp_modules.json文件中：

1)  moduleName定义了模块的名称。

2)  paramGroups包括一个数组，其中每一项定义一个参数组。

3)  params包括一个数组，其中每一项在组内定义一组参数。

4)  label是工作台中显示的参数名称。

> 如果没有指定label，则工作台将显示key的值。

5)  type定义了参数的类型。

> 有关更多信息，请参见第3.2.4.2节，参数类型。

3.  删除并重新创建现有项目以激活自定义设置。

**操作结果**

功能模块中的Features列表以及每个参数模块详细信息可根据自定义更新。

### 自定义传感器信息

本节介绍编辑工作区中的isp_sensor.json文件，以自定义包括传感器名称和传感器模式在内的传感器信息，用于[配置实时预览](#id34)。

**先决条件**

确保已按照 [启动 VTunerClient 工作台](#id10)的说明创建了工作区。

**操作过程**

1.  （推荐）备份工作目录中的isp_sensor.json文件。

2.  打开并编辑isp_sensor.json文件。

> 在isp_sensor.json文件中：

1)  sensorName定义了传感器的名称。建议使用与Tuning Server端相同的传感器名称。

2)  Mode包括一个数组，其中每一项定义一个传感器模式。

3)  af表示传感器是否支持PDAF或CDAF模块。

4)  bayerPattern表示输出的Bayer模式。

5)  bitWidth表示输出格式的位深度。

6)  fps表示输出的帧率。

7)  hdr表示线性/HDR模式。

> 有效值：Linear、Native HDR和Stitch HDR。

8)  size表示以像素为单位的输出分辨率。

9)  integrationTime表示曝光一定行数所需的时间，以微秒为单位。测量的行数取决于传感器配置。

10) aGain表示模拟增益。

11) dGain表示数字增益。

![](_static/_images/VtunerClient_guide/image106.png)

图 3.4‑2 isp_sensor.json Example

**操作结果**

根据自定义，传感器名称和传感器模式下拉列表中的选项将被更新。

> **Note**：以上设定需要在每次启动VtuneClient工具链接Server后，Input Type选择sensor，SensorName选择正确的已添加sensor。这决定跟驱动交互信息的限定和正确性。AE Manual控制以及ROI window的设定都依赖此部分设置；如果更换Vtuner工具版本，工作目录下的文件会被清空，可以在新版本安装前备份**isp_sensor.json**文件

### 自定义TCP/UART超时和Dump配置

本节介绍编辑工作区中的isp_config.ini文件，以自定义TCP/UART超时和dump配置。

**先决条件**

确保已按照 [启动 VTunerClient 工作台](#id10)的说明创建了工作区。

**操作过程**

1.  打开并编辑工作目录中的isp_config.ini文件。

2.  在isp_config.ini文件中，您可以根据网络情况设置以下字段：

    1)  isCapturable

> 设置为false，决定下面两个模块是否能使用。
>
> 有关ROI矩阵参数的信息，请参见第3.2.4.2.5节，ROI矩阵参数。
>
> 有关AWB工具的信息，请参见第3.2.1.2.1节，AWB工具。

2)  tcp.controlTimeout

> 定义使用TCP连接时每个命令的超时时间（秒）。

3)  tcp.streamTimeout

> 定义使用TCP连接时YUV预览流的超时时间（秒）。

4)  tcp.injectPort

> 定义TCP连接的图像注入通道的端口。

5)  tcp.rawStreamPort

> 定义TCP连接的原始数据Dump通道的端口。

6)  tcp.statisticsPort

> 定义TCP连接的统计通道的端口。

7)  tcp.streamPort

> 定义TCP连接的YUV流通道的端口。

8)  tcp.isDump

> 定义当选择**Sensor**作为**Input Type**且使用TCP连接时，是否保存从流端口接收的预览图像。
>
> 只有当ISP输出为YUV格式时，预览图像转储功能才可用。

9)  tcp.dumpNumber

> 定义当选择“**Sensor**”作为**Input Type**且使用TCP连接时需要保存的预览图像数量。
>
> 图像将保存到工作区中的./output目录下。

10) uart.controlTimeout

> 定义使用UART连接时每个命令的超时时间（秒）。

# 附录A

本附录列出了在X5工具文档中使用的术语，并列出了这些术语的全称和定义。

| **Term** | **Description**                             |
|----------|---------------------------------------------|
| AWB      | Auto White Balance                          |
| FPGA     | field-programmable gate array               |
| FPS      | frames per second                           |
| GUI      | graphical user interface                    |
| HDR      | high dynamic range                          |
| HTTP     | Hypertext Transfer Protocol                 |
| HW       | hardware                                    |
| ISP      | Image Signal Processing                     |
| OS       | operating system                            |
| PC       | personal computer                           |
| PQ       | picture quality                             |
| SDK      | software development kit                    |
| SW       | software                                    |
| TCP      | Transmission Control Protocol               |
| UART     | Universal Asynchronous Receiver-Transmitter |
| UI       | user interface                              |
| URL      | Uniform Resource Locator                    |
