进阶|HDR-ISP支持ROS2以及GPU实时处理啦!

引言

之前我们开源了一份HDR-ISP代码供大家入门学习,但很多后台同学反馈CPU版本是实时性不够、对于相机无法实时处理。没关系,今天Cuda加速、支持ROS2可以实时处理的的HDR-ISP GPU版本来啦!

此次GPU版本开源版本只提供lib供学习测试!加入星球后可以找星主获取资料以及源码,白嫖党、伸手党可以自行走开!

1. 项目描述

1.1 项目特点

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

ISP模块使用C风格编写
除仓库文件外,无其它第三方库依赖
可以通过json配置自定义你的pipeline
可以在任意支持C++的嵌入式平台上部署
可以在支持Cuda的PC上运行,同时支持Nvidia Jeston嵌入式设备
支持文件离线处理、支持ROS2实时Online运行
支持通过配置选择ISP Pipeline是在CPU上运行还是GPU上运行

1.2 默认Pipeline

默认Json配置pipeline:
进阶|HDR-ISP支持ROS2以及GPU实时处理啦!_第1张图片

1.3 当前支持的模块

支持的ISP模块列表(CPU and GPU):

  • 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系统

开发环境 :

  • nvcc
  • cmake
  • g++

编译

  • 不使用ROS2
git clone https://github.com/JokerEyeAdas/HDR-ISP
cd HDR-ISP/
git checkout gpu_dev
mkdir build
cmake ..
make -j12
  • 使用ROS2编译
  1. 克隆仓库
git clone https://github.com/JokerEyeAdas/HDR-ISP
cd HDR-ISP/
git checkout gpu_dev
  1. 编辑 CMakeLists.txt,设置ROS2_ENABLE成true
set(ROS2_ENABLE true)
  1. 编译
cd ${ros2_wk}
colcon build

2.2 Windows

开发环境 (x64):

  • vs code
  • cmake
  • nvcc
  • vs2019 c++ gen tool

在这里插入图片描述

编译

  • 不使用 ROS2
git clone https://github.com/JokerEyeAdas/HDR-ISP
code HDR-ISP
git checkout gpu_dev
#cmake choose Debug or Release
#compiler choose xxx-amd64
#build all
  • 使用ROS2
  1. 克隆仓库
git clone https://github.com/JokerEyeAdas/HDR-ISP
cd HDR-ISP/
git checkout gpu_dev
  1. 编辑CMakeLists.txt设置ROS2_ENABLE为true
set(ROS2_ENABLE true)
  1. 编译
cd ${ros2_wk}
colcon build --merge-install

2.3 运行

  • 离线模式
cd build
#cp cfgs and data
cp -r ../data/ ./
cp -r ../cfgs/ ./
#run isp
./HDR_ISP ./cfgs/isp_config_cannon.json
  • 在线模式
ros2 run hdr_isp pub_raw ./cfgs/xxxx.json
ros2 run hdr_isp hdr_isp ./cfgs/xxxx.json
ros2 run rviz2 rviz2

2.4 改变模式以及运行设备

  • 使用GPU加速(通过Json进行配置):
    "device":"gpu",
  • 使用CPU运行(通过Json进行配置):
    "device":"cpu",
  • ROS2实时处理模式以及修改Topic
    "mode":"online",
    "topic":"/raw/connan",
  • 离线处理RAW图
    "mode":"offline",
    "raw_file": "./data/connan_raw14.raw",
    "out_file_path": "./",

2.5 如何调试参数

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

如,修改sensor基本参数:

    "info": {
        "sensor_name": "cannon",
        "cfa": "RGGB",
        "data_type": "RAW16",
        "bpp": 16,
        "max_bit": 14,
        "width": 6080,
        "height": 4044,
        "mipi_packed": 0
    },

修改rgb gamma参数如下:

"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. GPU性能与ROS2支持

使用ROS以及GPU

  • GPU性能(不发布ISP处理结果)
Index Resolution GTX1080 MX550
1 6080*4044 15 8
2 3840*2160 40 20
3 1920*1080 125 60
  • ROS2 Online mode

4. 后续工作

4.1 TBD工作

  • 编写Python或者GUI调试工具

4.2 资料获取

  • 如果想学习源码、获取模块说明,请加入星球,我们共同开发!(毕竟开发者也要恰饭)

进阶|HDR-ISP支持ROS2以及GPU实时处理啦!_第2张图片

  • 加入星球:

进阶|HDR-ISP支持ROS2以及GPU实时处理啦!_第3张图片

4.3 项目支持

  • 感谢您的支持,希望我的项目对您有帮助~
    进阶|HDR-ISP支持ROS2以及GPU实时处理啦!_第4张图片

5. 结束语

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

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

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

项目分支:gpu_dev

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

6. 项目预告

哈哈,还没完!后台有老哥想要3D AVM实现方法,没关系,现在已经在准备实现中了,目前3D碗以及车的模型已经导入工作已经完成,状态如下:

进阶|HDR-ISP支持ROS2以及GPU实时处理啦!_第5张图片

想学习的加入知识星球,第一时间获取资料。今天就到这,peace。


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

你可能感兴趣的:(Sensor+Isp,isp,算法,图像处理)