碎碎念

最近在调研一下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代码解读-优化部分相关推荐

  1. vins 解读_代码解读 | VINS 视觉前端

    AI 人工智能 代码解读 | VINS 视觉前端 本文作者是计算机视觉life公众号成员蔡量力,由于格式问题部分内容显示可能有问题,更好的阅读体验,请查看原文链接:代码解读 | VINS 视觉前端 v ...

  2. BERT:代码解读、实体关系抽取实战

    目录 前言 一.BERT的主要亮点 1. 双向Transformers 2.句子级别的应用 3.能够解决的任务 二.BERT代码解读 1. 数据预处理 1.1 InputExample类 1.2 In ...

  3. softmax理论及代码解读——UFLDL

    前言 看了各种softmax以后迷迷糊糊的,还是研究一下UFLDL的教程稳点.当然还是得参考挺多教程的:UFLDL-softmax .Softmax的理解与应用 .Logistic 分类器与 soft ...

  4. Jsoup代码解读之四-parser(上)

    转载自  Jsoup代码解读之四-parser(上) 作为Java世界最好的HTML 解析库,Jsoup的parser实现非常具有代表性.这部分也是Jsoup最复杂的部分,需要一些数据结构.状态机乃至 ...

  5. VGAE(Variational graph auto-encoders)论文及代码解读

    一,论文来源 论文pdf Variational graph auto-encoders 论文代码 github代码 二,论文解读 理论部分参考: Variational Graph Auto-Enc ...

  6. Memory-Associated Differential Learning论文及代码解读

    Memory-Associated Differential Learning论文及代码解读 论文来源: 论文PDF: Memory-Associated Differential Learning论 ...

  7. 200 行代码解读国产数据库阿里 OceanBase 的速度源头!| CSDN 博文精选

    [CSDN 编者按]10 月 2 日,国际事务处理性能委员会公布了数据库最新性能测试结果,在 TPC-C 基准测试中,由阿里巴巴集团蚂蚁金服自主研发的分布式关系数据库 OceanBase 打破了由 O ...

  8. 编译原理语义分析代码_Pix2Pix原理分析与代码解读

    原理分析: 图像.视觉中很多问题都涉及到将一副图像转换为另一幅图像(Image-to-Image Translation Problem),这些问题通常都使用特定的方法来解决,不存在一个通用的方法.但 ...

  9. 鱼眼图像自监督深度估计原理分析和Omnidet核心代码解读

    作者丨苹果姐@知乎 来源丨https://zhuanlan.zhihu.com/p/508090405 编辑丨3D视觉工坊 在自动驾驶实际应用中,对相机传感器的要求之一是拥有尽可能大的视野范围,鱼眼相 ...

  10. 飞桨PP-HumanSeg本地实时视频推理代码解读

    文章同样发布在百度AIStudio,Fork后即可在线运行,请点击这里 本人希望基于PaddleSeg对视频实时进行图像分割,但在AiStudio中检索分割和实时两个关键词后并没有得到理想的结果,大部 ...

最新文章

  1. Python培训之就业面试题分享
  2. 《防患未然:实施情报先导的信息安全方法与实践》——3.3 攻击剖析
  3. php中文件下载,PHP中文件下载
  4. 关于photoshop处理图片的自动化
  5. 对dropout的理解详细版
  6. 抽象工厂模式设计模式_创新设计模式:抽象工厂模式
  7. 7-293 鸡兔同笼 (10 分)
  8. 服务器端脚本和客户端脚本
  9. C# Log4Net简单使用方法
  10. Java制作证书的工具keytool用法总结
  11. 福建工程学院linux锐捷认证,scau校园网认证
  12. 微信群发红包原理 计算机,微信红包实现原理探讨
  13. xlsxwriter设置Excel的表格边框
  14. Panabit存在命令执行漏洞
  15. linux sudo命令、不输入密码执行需要root、sudo报错:xxx is not in the sudoers file. This incident will be reported.
  16. 硬盘性能测试DD命令详解
  17. Spring Boot Admin 2.3 简洁Demo
  18. 豪华金色粒子动态logo展示AE视频模板
  19. 网站运营的9个常用搜索技巧
  20. Android安全性优化——APP加固

热门文章

  1. 坚持写博客对我们有什么好处
  2. 什么是广域网(WAN)?
  3. 忆典s1Android,忆典S1四核(RK3128)官方固件+安卓4.4.4已Root权限精简固件+刷机教程
  4. Sql server2005 char/varchar/text和nchar/nvarchar/ntest的区别
  5. 机械学习中的误差分析、偏斜类问题
  6. PC端微信打不开小程序解决
  7. html制作作业提交入口,最全的提交网站入口大全
  8. C语言实现 输入两个正整数m和n,求其最大公约数和最小公倍数【学习笔记】
  9. .less为后缀的文件是什么
  10. ROS2前置基础教程 | 小鱼教你用g++编译ROS2节点