-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 2f9e087
Showing
198 changed files
with
17,525 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# 文档概述 | ||
k510 相关文档如下: | ||
|
||
| 文档名称 | 文档概要 | | ||
| ------------------------------------------------------------ | ---------------------------------- | | ||
| [K510_CRB_V1.2_Hardware_Guide.md](zh/K510_CRB_V1.2_Hardware_Guide.md) | K510 CRB V1.2 硬件资源说明文档 | | ||
| [K510_SDK_Build_and_Burn_Guide.md](zh/K510_SDK_Build_and_Burn_Guide.md) | K510 SDK 编译和烧录说明文档 | | ||
| [K510_System_memory_map.md](zh/K510_System_memory_map.md) | K510 SDK 系统memory划分说明文档 | | ||
| [K510_SDK_Application_Guides.md](zh/K510_SDK_Application_Guides.md) | K510 参考示例程序说明文档 | | ||
| [K510_nncase_Developer_Guides.md](zh/K510_nncase_Developer_Guides.md) | K510 compiler 使用说明文档 | | ||
| [K510_AI_Application_Guides.md](zh/K510_AI_Application_Guides.md) | k510 AI 应用部署流程说明文档 | | ||
| [K510_U-Boot_Developer_Guides.md](zh/K510_U-Boot_Developer_Guides.md) | K510 SDK uboot说明文档 | | ||
| [K510_Linux_Kernel_Driver_Developer_Guides.md](zh/K510_Linux_Kernel_Driver_Developer_Guides.md) | K510 SDK kernel 说明文档 | | ||
| [K510_SDK_DSP_CORE_Guide.md](zh/K510_SDK_DSP_CORE_Guide.md) | K510 DSP核使用说明文档 | | ||
| [K510_V4l2_Developer_Guides.md](zh/K510_V4l2_Developer_Guides.md) | K510 V4L2 应用实例说明文档 | | ||
| [K510_V4l2_Sensor_Developer_Guides.md](zh/K510_V4l2_Sensor_Developer_Guides.md) | K510 sensor 开发说明文档 | | ||
| [K510_Drm_Developer_Guides.md](zh/K510_Drm_Developer_Guides.md) | K510 DRM API接口说明文档 | | ||
| [K510_Multimedia_Developer_Guides.md](zh/K510_Multimedia_Developer_Guides.md) | K510 Multimedia 应用实例说明文档 | | ||
| [K510_Mailbox_Developer_Guides.md](zh/K510_Mailbox_Developer_Guides.md) | K510 多处理器通信说明文档 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,242 @@ | ||
![](images/canaan-cover.png) | ||
|
||
**<font face="黑体" size="6" style="float:right">ISP Tuning Tool Documentation</font>** | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
<font face="黑体" size=3>文档版本:V1.0.0</font> | ||
|
||
<font face="黑体" size=3>发布日期:2022-03-31</font> | ||
|
||
|
||
|
||
<div style="page-break-after:always"></div> | ||
|
||
<font face="黑体" size=3>**免责声明**</font> | ||
您购买的产品、服务或特性等应受北京嘉楠捷思信息技术有限公司(“本公司”,下同)商业合同和条款的约束,本文档中描述的全部或部分产品、服务或特性可能不在您的购买或使用范围之内。除非合同另有约定,本公司不对本文档的任何陈述、信息、内容的准确性、可靠性、完整性、营销型、特定目的性和非侵略性提供任何明示或默示的声明或保证。除非另有约定,本文档仅作为使用指导的参考。 | ||
由于产品版本升级或其他原因,本文档内容将可能在未经任何通知的情况下,不定期进行更新或修改。 | ||
|
||
|
||
|
||
**<font face="黑体" size=3>商标声明</font>** | ||
|
||
“<img src="images/canaan-logo.png" style="zoom:33%;" />”、“Canaan”图标、嘉楠和嘉楠其他商标均为北京嘉楠捷思信息技术有限公司的商标。本文档可能提及的其他所有商标或注册商标,由各自的所有人拥有。 | ||
|
||
|
||
|
||
**<font face="黑体" size=3>版权所有©2022北京嘉楠捷思信息技术有限公司</font>** | ||
本文档仅适用K510平台开发设计,非经本公司书面许可,任何单位和个人不得以任何形式对本文档的部分或全部内容传播。 | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
**<font face="黑体" size=3>北京嘉楠捷思信息技术有限公司</font>** | ||
网址:canaan-creative.com | ||
商务垂询:[email protected] | ||
|
||
|
||
|
||
|
||
|
||
<div style="page-break-after:always"></div> | ||
# 前言 | ||
**<font face="黑体" size=5>文档目的</font>** | ||
本文档为ISP Tuning Tool说明文档。 | ||
|
||
**<font face="黑体" size=5>读者对象</font>** | ||
|
||
本文件的主要受众是有经验的软件工程师、图像算法工程师、系统设计师和系统集成商,他们希望实现私有应用程序和驱动程序。 | ||
|
||
**<font face="黑体" size=5>修订记录</font>** | ||
<font face="宋体" size=2>修订记录累积了每次文档更新的说明。最新版本的文档包含以前所有版本的更新内容。</font> | ||
|
||
| 版本号 | 修改者 | 修订日期 | 修订说明 | | ||
| :----- |------- | ------ | ------ | | ||
| V1.0.0 | 系统软件组 | 2022-03-31 | SDK V1.6发布 | | ||
|
||
|
||
|
||
<div style="page-break-after:always"></div> | ||
**<font face="黑体" size=6>目 录</font>** | ||
|
||
[TOC] | ||
|
||
|
||
<div style="page-break-after:always"></div> | ||
|
||
# ISP调优工具框架介绍 | ||
|
||
本节介绍ISP调优工具和数据流的说明,这些框架和数据流是为上层处理器提供的,用于控制整个ISP图像优化。 | ||
|
||
``` | ||
+----------------------------------------------------+ | ||
| | | ||
| K510 | | ||
| | | ||
| +-------+ +--------------------------+ | | ||
| | | | | | | ||
| | ISP +------> | v4l2_drm_isptool.out | | | ||
| | | | | | | ||
| +-------+ +-------------+------------+ | | ||
| | | | ||
| | | | ||
| +-----------------+ | | | ||
| | | | | | ||
| | isp-tuningd | <----------+ | | ||
| | | | | ||
| +^-+--------------+ | | ||
| | | | | ||
| | | | | ||
+----------------------------------------------------+ | ||
| | | ||
| | | ||
+-------------------------------+ | ||
| | | | | ||
| | | PC | | ||
| | | | | ||
| ++-v------------------+ | | ||
| | | | | ||
| | ISP Tuning Tool | | | ||
| | | | | ||
| +---------------------+ | | ||
| | | ||
+-------------------------------+ | ||
``` | ||
|
||
## 调优工具数据流 | ||
|
||
通信协议参见客户端代码仓库里的说明文档,工具包含两部分,一部分是在PC上运行的客户端isp-tuningd,程序位于/app/mediactl_lib/isp-tuningd,另一部分是在K510上运行的服务端。通信默认使用TCP的9982端口。 | ||
|
||
### 客户端 | ||
|
||
ISP Tuning Tool是在PC上运行的应用程序。除了能设置寄存器外还支持进行AWB校准和CCM校准。 | ||
|
||
### 服务端 | ||
|
||
isp-tuningd会从标准输入接收大小为3133440字节的yuv图像(NV12)并广播给所有客户端,我们可以使用v4l2_drm_isptool,他会自动启动isp-tuningd并送入图像数据,具体用法与v4l2_drm一致。我们可以用如下命令运行 | ||
|
||
```shell | ||
cd /app/mediactl_lib | ||
./v4l2_drm_isptool -f video_drm_1080x1920.conf | ||
``` | ||
|
||
# ISP调优选项 | ||
|
||
K510 ISP中提供了许多寄存器和表以进行控制和调优。ISP硬件寄存器的设置对图像质量非常重要。目前K510平台,图像调优过程只通过TCP Socket实现。 | ||
|
||
## 调优工具主窗口 | ||
|
||
本节介绍调优窗口上这些面板的功能。 | ||
|
||
图3-1显示了调优窗口上的整个操作面板 | ||
|
||
- 面板1是**菜单**,它可以选择加载配置好的ISP文件或进行校准。 | ||
- 面板2是**连接控制面板**,填入开发板的IP地址和端口号(默认9982端口)后点击绿色的连接按钮即可连接。 | ||
- 面板3是**寄存器面板**,如果你需要设置或读取的寄存器并不在这里面则可以使用这个面板进行设置和读取。 | ||
- 面板4是调优**参数选择面板**,用户可以根据面板提示文本选择各种参数或参数组,这些选择的寄存器将显示在面板5上。 | ||
- 面板5是**调优参数设置面板**,它用于设置或从调优服务器获取参数值。 | ||
- 面板6是**图像显示面板**,他会显示ISP输出的图像,当不需要一直播放时可以点击中间的暂停按钮。 | ||
|
||
![图3-1 调优工具主窗口](./images/sdk_application/clip_image033.png) | ||
|
||
ISP Tuning Tool在连接后**不会**自动获取所有寄存器值,如果需要获取所有的寄存器值可以点击**连接控制面板**右侧的读取按钮,即可拉取当前的所有寄存器值。 | ||
|
||
# 标定 & 校准 | ||
|
||
本节介绍使用ISP调优工具进行标定和校准的说明,包括自动白平衡(AWB)、颜色校正矩阵(CCM)、Gamma和镜头阴影(LSC)。 | ||
|
||
## AWB | ||
|
||
### 准备工作 | ||
|
||
1. 标准灯箱,有标准D65光源 | ||
2. 标准24色卡,目前仅支持X-RITE色卡 | ||
3. 准备标定的相机,能输出sensor原始图像或处理后的图像 | ||
3. ISP也仅打开黑电平矫正与去马赛克算法模块,CSC等格式转换模块一定要注意对称性(矩阵是逆矩阵),另外降噪、锐化等模块影响不大,不过也尽量关闭,非线性模块与颜色处理模块(GAMMA,宽动态,AWB,CCM,饱和度调整等)必须关闭 | ||
|
||
### 获取图像 | ||
|
||
1. 相机对准24色卡,确保24色卡撑满整个画面,然后抓取图像,未保证准确可以点击暂停播放,如下图所示 | ||
|
||
![图4-1 拍摄24色卡](./images/sdk_application/clip_image014.jpg) | ||
|
||
2. 抓取的图像注意亮暗适中,太亮太暗都影响标定 | ||
|
||
### 标定 | ||
|
||
点击菜单栏的“Calibration”,选择“AWB”即可执行标定,程序会自动框选色卡 | ||
|
||
![图4-2 自动框选色卡](./images/sdk_application/clip_image016.jpg) | ||
|
||
此时按下任意键继续,弹出完成白平衡后的图像 | ||
|
||
![图4-3 完成AWB标定](./images/sdk_application/clip_image018.jpg) | ||
|
||
如果没问题,则继续按下任意键,工具会弹出对话框询问参数是否合理,是则会将其填入主界面相关寄存器,否则放弃标定结果,如果是则工具会继续询问是否写入设备寄存器。 | ||
|
||
## CCM | ||
|
||
与AWB标定一致,不再赘述。 | ||
|
||
## Gamma | ||
|
||
标准的gamma曲线的公式为 | ||
$$ | ||
Y=aX^b | ||
$$ | ||
其中$b$即为Gamma系数,在成像端一般小于1,在显示端一般大于1。$a$的值可以根据$b$的值算出来 | ||
|
||
$$ | ||
a=\frac{256}{256^b} | ||
$$ | ||
该公式的原理是输入是256,做完Gamma矫正后仍为256。 | ||
|
||
Gamma系数b为0.5时,曲线如下图所示 | ||
|
||
![](./images/sdk_application/clip_image025.png) | ||
|
||
标准的Gamma曲线在暗区对比度太大,会造成噪点明显增加,所以一般情况下会对暗区的对比度值做限制,该值即为配置文件的第二个参数,当该值为64时,修正后的gamma曲线如下图所示 | ||
|
||
![](./images/sdk_application/clip_image027.png) | ||
|
||
## LSC | ||
|
||
### 准备工作 | ||
|
||
- 一张镜头拍摄获得的RAW格式照片 | ||
|
||
### 原理 | ||
|
||
因镜头的中心与四周通光量不一致,造成图像亮度不均匀,因此通过曲线拟合生成一个矫正曲面来弥补该问题。 | ||
|
||
矫正前如下图所示 | ||
|
||
![校正前](./images/sdk_application/clip_image029.png) | ||
|
||
矫正后如下图所示 | ||
|
||
![校正后](./images/sdk_application/clip_image031.png) |
Oops, something went wrong.