进阶|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:
在这里插入图片描述

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处理结果)
IndexResolutionGTX1080MX550
16080*4044158
23840*21604020
31920*108012560
  • ROS2 Online mode

在这里插入图片描述

4. 后续工作

4.1 TBD工作

  • 编写Python或者GUI调试工具

4.2 资料获取

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

在这里插入图片描述

  • 加入星球:

在这里插入图片描述

4.3 项目支持

  • 感谢您的支持,希望我的项目对您有帮助~
    在这里插入图片描述

5. 结束语

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

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

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

项目分支:gpu_dev

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

6. 项目预告

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

在这里插入图片描述

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


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/157109.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用LWP::UserAgent库程序

使用LWP::UserAgent库的下载器程序,它使用Perl下载图片。以下是代码: #!/usr/bin/perl -w use strict; use LWP::UserAgent; ​ # 创建对象 my $proxy LWP::UserAgent->new(proxies > {http > ""}); ​ # 加载网页 my $response $…

arcpy.message实现探索

arcpy 位置D:\Program Files\GeoScene\Pro\Resources\ArcPy\arcpy\__init__.py ”““AddMessage(消息) 创建可以使用任何GetMessages函数访问的地理处理信息消息(Severity0)。 message(字符串):要添加的消息。”“ arcpy.geoprocessing D:\Program Files\GeoScene\Pro\Re…

容斥原理,多步容斥

容斥意义法 设计状态表示容斥的过程。比较简单的容斥题目一般可以容斥意义。 如果我们要求方案数的话,通常情况下我们的把限制视为两个方面,一方面是总限制,一方面是对于每个物品的限制,这样设集合 S i S_i Si​表示满足总限制以及…

十八、模型构建器(ModelBuilder)快速提取城市建成区——批量掩膜提取夜光数据、夜光数据转面、面数据融合、要素转Excel(基于参考比较法)

一、前言 前文实现批量投影栅格、转为整型,接下来重点实现批量提取夜光数据,夜光数据转面、夜光数据面数据融合、要素转Excel。将相关结果转为Excel,接下来就是在Excel中进行阈值的确定,阈值确定无法通过批量操作,除非采用其他方式,但是那样的学习成本较高,对于参考比较…

《Generic Dynamic Graph Convolutional Network for traffic flow forecasting》阅读笔记

论文标题 《Generic Dynamic Graph Convolutional Network for traffic flow forecasting》 干什么活:交通流预测(traffic flow forecasting )方法:动态图卷积网络(Dynamic Graph Convolutional Network)…

2. 网络之网络编程

网络编程 文章目录 网络编程1. UDP1.1 DatagramSocket1.1.1 DatagramSocket 构造方法1.1.2 DatagramSocket 方法: 1.2 DatagramPacket1.2.1 DatagramPacket构造方法1.2.2 DaragramPacket方法1.2.3InetSocketAddress API 1.3 UDP回显服务器1.3.1 框架结构1.3.2 读取请…

miniconda快速安装

目录 一、Linux下miniconda安装 1.1、安装 1.2、miniconda初始化 二、Windows下miniconda安装 三、maOS下miniconda安装 3.1、安装 3.2、miniconda初始化 四、参考: 本文给出windows、macos、linux下快速安装miniconda方法。 对比conda,minicond…

Maven Repository使用

1.Maven Repository网站 https://mvnrepository.com/https://mvnrepository.com/ 2.查询需要的依赖 3.参考例子 <!-- https://mvnrepository.com/artifact/org.freeswitch.esl.client/org.freeswitch.esl.client --> <dependency> <groupId>org.freesw…

第22期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练 Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…

浅谈安科瑞无线测温产品在埃及某房建配电项目中的应用

1.电气接点测温的必要性 电力系统的一次系统一般由供电线路&#xff08;包括架空线路和电缆&#xff09;、变压器、母线、开关柜等电气设备组成。其相互之间存在大量的电气连接点&#xff0c;由于电流流过产生热量&#xff0c;所以几乎所有的电气故障都会导致故障点温度的变化…

Mac/Linux类虚拟机_CrossOver虚拟机CrossOver 23.6正式发布2024全新功能解析

CodeWeivers 公司于今年 10 月发布了 CrossOver 23.6 测试版&#xff0c;重点添加了对 DirectX 12 支持&#xff0c;从而在 Mac 上更好地模拟运行 Windows 游戏。 该公司今天发布新闻稿&#xff0c;表示正式发布 CrossOver 23 稳定版&#xff0c;在诸多新增功能中&#xff0c;最…

Python-文件操作

目录 一、文件的打开与关闭 1、文件的打开 2、文件模式 3、文件的关闭 二、文件的读写 1、写文件 2、读文件 3、文件的定位读写 三、文件的重命名和删除 1、文件的重命名 2、文件的删除 四、文件夹的相关操作 1、创建文件夹 2、获取当前目录 3、改变默认目录 4、…