开源|HDR-ISP开源项目介绍

引言

拖更很久了,本着出品必精的原则,我们更新就来点干货。想起刚入行时,网上并没有很多以及系统的ISP的学习资料,都是边工作、边搜集资料然后边学习,一路坎坎坷坷走到今天算是刚入了ISP的大门。

为了解决新人入门的问题,给广大入门的新人一个参考的demo,我参考了各个开源的ISP,使用C++肝了一个用于HDR相机的开源ISP,用于给入门的新人参考。开源链接放在文末,有需要的自取。

1. 项目描述

1.1 项目特点

一个使用C++编写的、用于HDR相机的ISP Pipeline

  • ISP模块使用C风格编写
  • 除仓库文件外,无其它第三方库依赖
  • 可以在任意支持C++的嵌入式平台上部署
  • 可以通过json配置自定义你的pipeline

1.2 默认Pipeline

默认Json配置pipeline:

Pipeline

1.3 当前支持的模块

支持&准备支持的ISP模块列表:

  • Raw Domain
    • MipiUnPack: Mipi原始数据转RAW16
    • DePwl: 解压缩数据
    • Dpc: 动态坏点校准
    • Lsc: 镜头阴影校准
    • Blc: 黑电平校准
    • Rns: Raw域降噪
    • WbGain: 白平衡增益
    • Demoasic: 解马赛克
  • RGB Domain
    • Ltm: 局部色调映射
    • RgbGamma: rgb伽马曲线
    • Ccm: 色彩校准矩阵
    • Rgb2Yuv: rgb域转yuv域
  • YUV Domain
    • YGamma: 灰度伽马曲线
    • Contrast: 对比度提升
    • Sharpen: 锐化边缘增强
    • Cns: 颜色滤波
    • Saturation: 色度提升
    • Yuv2Rgb: yuv域rgb域

2. 如何编译与运行

2.1 Linux系统

开发环境:

1
2
3
#dependencies install(cmake and opencv)
sudo apt update
sudo apt install cmake

编译

1
2
3
4
5
git clone https://github.com/JokerEyeAdas/HDR-ISP
cd HDR-ISP/
mkdir build
cmake ..
make -j12

2.2 Windows系统

开发环境(x64):

  • vs code
  • cmake
  • msvc c++ gen tool

build tool

编译

1
2
3
4
5
git clone https://github.com/JokerEyeAdas/HDR-ISP
code HDR-ISP
#cmake 选择 Debug or Release
#compiler 选择 xxx-amd64
#build all

2.3 运行

1
2
3
4
5
6
cd build
#cp cfgs and data
cp -r ../data/ ./
cp -r ../cfgs/ ./
#run isp
./HDR_ISP ./cfgs/isp_config_cannon.json

2.4 参数调试

通过修改json配置来配置ISP模块的基本参数

如,修改sensor基本参数:

1
2
3
4
5
6
7
8
9
10
11
12
"raw_file": "./data/connan_raw14.raw",
"out_file_path": "./",
"info": {
"sensor_name": "cannon",
"cfa": "RGGB",
"data_type": "RAW16",
"bpp": 16,
"max_bit": 14,
"width": 6080,
"height": 4044,
"mipi_packed": 0
},

修改rgb gamma参数如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
"rgbgamma": {
"enable": true,
"in_bit": 10,
"out_bit": 8,
"gammalut_nums": 11,
"gammalut": [
0,
0.3504950718773984,
0.48243595264750255,
0.57750428843709,
0.6596458942714417,
0.731034378464739,
0.7925580792857235,
0.8509817015104557,
0.9029435754464383,
0.9534255851019492,
1.0
]
}

3. 运行结果&其他ISP对比

3.1 Pipeline运行结果

备注 图像
Raw raw
ISP Result(Ours) ISP
FastOpenISP Result Fast ISP

3.2 与fastOpenIsp细节对比

ISP 图像1 图像2 备注
Ours Our Detail Our Detail 细节与边界明显保留
Fast Open Isp Open Isp Open Isp 细节丢失以及Color banding

3.3 后续工作

  • 支持Lsc、Dpc、Rns、Cns等ISP模块;
  • GUI ISP调试工具编写,支持Gui调参。

3.4 项目支持

  • 感谢您的支持,希望我的项目对您有帮助
  • 项目初期,希望各位多多点赞以及随手点亮小星星
  • 为了使本项目更快地扩展开发,我们需要您的充电

Appreciation Code

4 结束语

今天我们给大家介绍了开源HDR-ISP,希望对于入门的新人有一定的借鉴作用,同时希望我们的开源对于处于行业里面的你们有所帮助!

如果您对自动驾驶感兴趣,可以关注本公众号,当然有想了解的话题,也可以私信我,我们将对各位看官感兴趣的话题进行技术分享。

项目地址:https://github.com/JokerEyeAdas/HDR-ISP

项目GitHub快速传送门:HDR-ISP


如果您对ADAS感兴趣,欢迎关注我的公众号、知乎、CSDN等,同时发表文章中使用源码会在我的GitHub进行开源(网页About Me中有公众号、Github等信息)

参考仓库

感谢下述仓库以及仓库作者!!

序号 仓库 开发语言 备注
0 OpenISP Python image signal process in C style
1 fast-openIsp Python open isp 快速版本
2 ISP Lab C++ C++版本开源ISP
3 xk-ISP C++ 复旦大学开源HLS ISP

开源|HDR-ISP开源项目介绍
https://jokereyeadas.github.io/2023/08/15/6.开源HDR-ISP介绍/
作者
Joker.Mao
发布于
2023年8月15日
许可协议