lidar_camera_calib代码解读-优化部分
碎碎念
最近在调研一下non-target 方式的相机Lidar联合标定,其中包括HK mars实验室开源的项目GitHub - hku-mars/livox_camera_calib: This repository is used for automatic calibration between high resolution LiDAR and camera in targetless scenes.
这个项目在刚开始并没有得到我的足够重视,潜意识里觉得这种基于线特征的匹配不是太靠谱,但是,在仔细阅读代码后,还是觉得很多细节的处理让人收益匪浅。
先谈谈目前对于这个项目的感受吧
优点:
- 特征的提取不复杂(没有利用语义这些)但是看起来有效
- 优化的迭代方式有效(损失函数的有效建立 + 迭代过程的细节处理)
- 最后结果看起来不错
缺点:
- 不太适用于低线数的机械雷达
- 点云线特征的提取有点慢,相比于图像。
- 对于环境的要求还是比较高的(相比于一些端对端的calib网络)
- 和ros的结合有点鸡肋,项目内容似乎并不依赖ros的通信机制
Whatever,相比于一些利用枚举法求解最优值的项目,这个项目的方法还是不知道高明到哪里去了。
rough calibration
粗匹配中,会通过枚举的方式会得到很多角度的组合,对于每一个组合,会计算一个metric。然后,选择metric表现最好的欧拉角。
所以,对应的metric是什么呢?
float cost = (calibra.plane_line_cloud_->size() - pnp_list.size()) *1.0 / calibra.plane_line_cloud_->size();
上面的cost就表示了mertric的组成。其中plane_line_cloud表示了点云中所有的线特征的点。pnp_list包含了lidar和图像所有匹配上的点数。所以,匹配的点数越多,cost越小。
粗匹配的目标就是找到匹配点数最多的外参。以此开始进行优化。
refine calibration
接下来的精匹配,在pnp中,它会不断缩短buildVPnp的匹配距离。每一次缩短匹配距离后,可以匹配上的点会减少。基于缩短的距离,重新选择匹配的点,进行优化。比较有趣的是,它会选择连续进行两次ceres优化。
目前的代码策略是一直按照距离进行迭代更新,没有其他终止条件。
总结
从细节上,对于粗匹配时,损失函数的定义其实不难想到,但是,也没那么容易吧!
在精匹配时,通过距离为阈值,不管更新参与优化的观测,还是一个非常不错的尝试。值得借鉴和学习。
lidar_camera_calib代码解读-优化部分相关推荐
- vins 解读_代码解读 | VINS 视觉前端
AI 人工智能 代码解读 | VINS 视觉前端 本文作者是计算机视觉life公众号成员蔡量力,由于格式问题部分内容显示可能有问题,更好的阅读体验,请查看原文链接:代码解读 | VINS 视觉前端 v ...
- BERT:代码解读、实体关系抽取实战
目录 前言 一.BERT的主要亮点 1. 双向Transformers 2.句子级别的应用 3.能够解决的任务 二.BERT代码解读 1. 数据预处理 1.1 InputExample类 1.2 In ...
- softmax理论及代码解读——UFLDL
前言 看了各种softmax以后迷迷糊糊的,还是研究一下UFLDL的教程稳点.当然还是得参考挺多教程的:UFLDL-softmax .Softmax的理解与应用 .Logistic 分类器与 soft ...
- Jsoup代码解读之四-parser(上)
转载自 Jsoup代码解读之四-parser(上) 作为Java世界最好的HTML 解析库,Jsoup的parser实现非常具有代表性.这部分也是Jsoup最复杂的部分,需要一些数据结构.状态机乃至 ...
- VGAE(Variational graph auto-encoders)论文及代码解读
一,论文来源 论文pdf Variational graph auto-encoders 论文代码 github代码 二,论文解读 理论部分参考: Variational Graph Auto-Enc ...
- Memory-Associated Differential Learning论文及代码解读
Memory-Associated Differential Learning论文及代码解读 论文来源: 论文PDF: Memory-Associated Differential Learning论 ...
- 200 行代码解读国产数据库阿里 OceanBase 的速度源头!| CSDN 博文精选
[CSDN 编者按]10 月 2 日,国际事务处理性能委员会公布了数据库最新性能测试结果,在 TPC-C 基准测试中,由阿里巴巴集团蚂蚁金服自主研发的分布式关系数据库 OceanBase 打破了由 O ...
- 编译原理语义分析代码_Pix2Pix原理分析与代码解读
原理分析: 图像.视觉中很多问题都涉及到将一副图像转换为另一幅图像(Image-to-Image Translation Problem),这些问题通常都使用特定的方法来解决,不存在一个通用的方法.但 ...
- 鱼眼图像自监督深度估计原理分析和Omnidet核心代码解读
作者丨苹果姐@知乎 来源丨https://zhuanlan.zhihu.com/p/508090405 编辑丨3D视觉工坊 在自动驾驶实际应用中,对相机传感器的要求之一是拥有尽可能大的视野范围,鱼眼相 ...
- 飞桨PP-HumanSeg本地实时视频推理代码解读
文章同样发布在百度AIStudio,Fork后即可在线运行,请点击这里 本人希望基于PaddleSeg对视频实时进行图像分割,但在AiStudio中检索分割和实时两个关键词后并没有得到理想的结果,大部 ...
最新文章
- Python培训之就业面试题分享
- 《防患未然:实施情报先导的信息安全方法与实践》——3.3 攻击剖析
- php中文件下载,PHP中文件下载
- 关于photoshop处理图片的自动化
- 对dropout的理解详细版
- 抽象工厂模式设计模式_创新设计模式:抽象工厂模式
- 7-293 鸡兔同笼 (10 分)
- 服务器端脚本和客户端脚本
- C# Log4Net简单使用方法
- Java制作证书的工具keytool用法总结
- 福建工程学院linux锐捷认证,scau校园网认证
- 微信群发红包原理 计算机,微信红包实现原理探讨
- xlsxwriter设置Excel的表格边框
- Panabit存在命令执行漏洞
- linux sudo命令、不输入密码执行需要root、sudo报错:xxx is not in the sudoers file. This incident will be reported.
- 硬盘性能测试DD命令详解
- Spring Boot Admin 2.3 简洁Demo
- 豪华金色粒子动态logo展示AE视频模板
- 网站运营的9个常用搜索技巧
- Android安全性优化——APP加固
热门文章
- 坚持写博客对我们有什么好处
- 什么是广域网(WAN)?
- 忆典s1Android,忆典S1四核(RK3128)官方固件+安卓4.4.4已Root权限精简固件+刷机教程
- Sql server2005 char/varchar/text和nchar/nvarchar/ntest的区别
- 机械学习中的误差分析、偏斜类问题
- PC端微信打不开小程序解决
- html制作作业提交入口,最全的提交网站入口大全
- C语言实现 输入两个正整数m和n,求其最大公约数和最小公倍数【学习笔记】
- .less为后缀的文件是什么
- ROS2前置基础教程 | 小鱼教你用g++编译ROS2节点