• 177查看
  • 0回复

[环境感知] ADAS-360环视拼接原理分析与C++实现(二)

[复制链接]


该用户从未签到

发表于 3-3-2024 13:50:26 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


" 在上篇文章《360环视拼接原理分析与C++实现(一)》中:

开源360全景拼接原理分析与实现
JokerEye,公众号:ADAS之眼ADAS-开源环视360全景拼接代码原理分析与实现(一)

我们讲解了360全景影像实现的原理,今天笔者应后台同学私信需求,即使白天工作很忙,但在笔者连续‘肝’了几天之后,还是将C++代码初版Demo实现了出来,并且在GitHub进行了开源。“
(感兴趣的小伙伴可在文末获取GitHub链接)???
ADAS-360环视拼接原理分析与C++实现(二)w1.jpg

01—仓库说明
仓库整体结构如下所示:

ADAS-360环视拼接原理分析与C++实现(二)w2.jpg
工程文件结构说明如下:

    doc:存放工程说明文件,如公众号图片等;images:存放的是四个环视图像以及汽车模型图象;srcs:存放工程公共源码、参数以及头文件等信息;CMakeLists:用于对工程进行编译路径、依赖管理;avm_cali_demo:透视变换校准APP源码;avm_app_demo:四张原始环视图像转变为一张环视拼接图像APP源码;readme:工程编译、运行以及TODO项说明等。
02—环视拼接APP流程

环视360全景拼接APP流程如下所示:
ADAS-360环视拼接原理分析与C++实现(二)w3.jpg

上述流程其实比较简单,主要是透视变换、图像拼接、灰度世界awb算法以及亮度均衡在图像处理的应用,算法详细可以参考代码仓库。在实际应用中需要注意:

    标定的yaml参数为出厂时环视标定的内外参数,包括了透视变换参数、相机内参等;权重图像也是要提前标定好,只需要标定一次即可,为四个角落两两图像合并使用的权重系数;输入则是四个环视实时输出给ECU的图像,输出为拼接好的汽车360环视图像,如果输入是视频流则循环执行拼接算法;
*需要注意,透视变换参数可以通过我们提供的avm_cali_app进行标定
03—编译与运行编译:笔者编译环境是在Windows下进行,使用CMake or Vs Code选择合适编译器进行编译即可,笔者使用参数如下所示:
ADAS-360环视拼接原理分析与C++实现(二)w4.jpg
编译依赖项:1. VS 2019(可选VS15-22,主要需要安装CI编译器)
2. CMake(编译管理器)
3. VS Code(可选项,IDE)
    笔者代码中文件路径给的相对路径,images(../../images)以及yaml(../../ymal)文件夹位于相对于编译好的app前两级才可以正常运行,开发者可以自行修改。运行:以笔者为例,编译后在./build/Release目录下会产生avm_app以及avm_cali两个app,运行avm_app则会在当前文件夹下输出合并好的拼接图像(ADAS_EYES_360_VIEW.png)。另外,初版demo开启以及关闭awb与亮度均衡对比效果如下:
awb与亮度均衡关闭
awb与亮度均衡使能

ADAS-360环视拼接原理分析与C++实现(二)w5.jpg


ADAS-360环视拼接原理分析与C++实现(二)w6.jpg

仓库在文末已经开源,感兴趣的同学可以自行下载、点个star以及follow。
04—结束语

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 20-11-2024 19:41 , Processed in 0.245463 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.