sim3相较于se3的好处
点击上方“计算机视觉工坊”,选择“星标”
干货第一时间送达
作者丨lovely_yoshino
来源丨古月居
0. 前言
最近一直在啃SLAM优化方面的相关知识,发现以前对于se3与sim3之间的理解不太深入,这里专门开一篇文章来整理这两者之间的区别。
相似变换sim(3),尺度s与R相乘,而不是t。ORB-SLAM2中使用sim3的主要原因是考虑到单目尺度漂移,这个在第一版系统的论文中的VII。LOOP CLOSING的Compute the Simlilarity Transformation部分有提到。
只有在单目输入的时候,闭环的部分才回使用sim3;其实在双目和RGBD输入的时候虽然也用到了但是其尺度因子被强制设置为
1. 单目尺度漂移
单目SLAM的尺度漂移,简单来说就是单目获得的单张图片无法知道拍摄物体到相机的距离,必须通过对极几何求的两张图片的位姿,然后三角化出来尺度信息。而这些都依赖的是两帧图像之间的逆深度求解。
1.1 任选两张图(设为第0帧和第1帧),先提取关键点并匹配,再根据对极几何求本质矩阵E,再从E中恢复R,t。这个在单目VO里属于初始化的部分,其中得到的t是个单位向量,因为任意缩放t,极线约束都成立。你可以对t进行任意缩放。缩放完后,设第0帧的位置为相机坐标系原点,则第1帧的位置就可以由R, t得到。虽然这个t不是真值,但是可以固定下来。然后根据两帧的位置,可以对图像帧0和1中匹配的三维点进行三角化。(多点获取本质矩阵;恢复R,t;并根据R,t三角化计算出伪深度;)。
1.2 对之后的图像帧,就不再是利用对极几何求R,t了。依旧是先提取关键点再匹配哈, 但是这次匹配的上一帧的特征中,有些是已经被三角化过的,因此可以像之前答主说的用运动模型加BA求该图像帧与上一帧的位置关系,也可以用PnP求R,t。求出来R,t之后,再三角化该帧与上一帧的没被三角化过的匹配点。
1.3 我们可以发现在尺度漂移就是出现在第二步。因为对于新的图像帧,都是先计算其R,t,再利用该R,t三角化与之前图像帧匹配的点。问题就是,如果第一步算的R,t有误差,那么第二步三角化的三维点的深度就存在误差,也就是说其深度会存在一个缩放。对于新来的每一帧,都会有这样的问题。
2. SE3与SIM3对比
2.1 首先是欧式变换:
2.2 然后是相似变换(推导过程同上,故省略):
2.3 最后说两句,相似变换其实就只是个简单的数学变换而已,所以想思考为什么的时候,应该从数学上来思考才能获得更严谨的论证。相似变换的特点是改变原本物体的尺度比例(保形状),所以这个S就是要乘在R上,如果在t上,那只是对改变物体的平移量,并不改变形状的尺度比例,上面两个图已经说得很清楚了。这样我们可以发现通过逆深度的缩放将会被考虑在内。
color{red}{如果我们确定了标准的景深则不需要sim(3)的处理形式,直接se(3)即可得到一样的结果。}
3. 参考链接
https://www.zhihu.com/question/318307846
https://www.zhihu.com/question/301977205
https://www.cnblogs.com/JingeTU/p/14773877.html
本文仅做学术分享,如有侵权,请联系删文。
重磅!计算机视觉工坊-学习交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有ORB-SLAM系列源码学习、3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、深度估计、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、可答疑解惑、助你高效解决问题
觉得有用,麻烦给个赞和在看~
sim3相较于se3的好处相关推荐
- ORB-SLAM2代码解析
一.算法的主题框架 输入.有三种模式可以选择:单目模式.双目模式和RGB-D模式. 跟踪.初始化成功后首先会选择参考关键帧跟踪,然后大部分时间都是恒速模型跟踪,当跟踪丢失 的时候启动重定位跟踪,在经过 ...
- AI 在携程智能客服的应用
https://blog.csdn.net/valada/article/details/81639661 作为国内 OTA 的领头羊,携程每天都在服务着成千上万的旅行者.为了保障旅行者的出行,庞大的 ...
- 掌握 ASP.NET 之路:自定义实体类简介
发布日期 : 5/24/2005| 更新日期 : 5/24/2005 Karl Seguin Microsoft Corporation 摘要:有些情况下,非类型化的 DataSet 可能并非数据操作 ...
- ASP.NET Core中GetService()和GetRequiredService()之间的区别
上篇文章<在.NET Core 3.0中的WPF中使用IOC图文教程>中,我们尝试在WPF中应用.NET Core内置的IOC进行编程,在解析MainWindow的时候我用了GetRequ ...
- Java设计模式学习06——静态代理与动态代理(转)
原地址:http://blog.csdn.net/xu__cg/article/details/52970885 一.代理模式 为某个对象提供一个代理,从而控制这个代理的访问.代理类和委托类具有共同的 ...
- 第1天 XML和DTD、schema约束
1.xml * 扩展名:*.xml * 作用:存储.配置 一个XML文件分为如下几部分内容:文档声明.元素.属性.注释 CDATA区.特殊字符.处理指令(processing instruction ...
- Spring的静态代理和动态代理
2019独角兽企业重金招聘Python工程师标准>>> 代理模式主要有两种:静态代理和动态代理 1,静态代理: 比如要在输出"HelloWorld"前打印一个字符 ...
- Java代理模式/静态代理/动态代理
代理模式:即Proxy Pattern,常用的设计模式之一.代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问. 代理概念 :为某个对象提供一个代理,以控制对这个对象的访问. 代理类和委 ...
- 计算机视觉面试常见问题(含解答)
最近忙着找实习,对计算机视觉中常见的问题做了简单梳理,会不定时更新. CNN CNN在图像上表现好的原因 直接将图像数据作为输入,不仅无需人工对图像进行预处理和额外的特征抽取等复杂操作,而且以其特有的 ...
- 代理模式——静态代理,动态代理(JDK代理和CGLib代理)
概述 由于某些原因需要给某对象提供一个代理以控制对该对象的访问. 这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介. Java中的代理按照代理类生成时机不同又分为 ...
最新文章
- 和12岁小同志搞创客开发:手撕代码,做一款节拍电子鼓
- haskell,lisp,erlang你们更喜欢哪个?
- MySQL索引的分类、何时使用、何时不使用、何时失效?
- OpenCV实现幻灯片模糊slides blur的实例(附完整代码)
- 【JavaScript】前端模块化:import 和 export 的使用
- vue 组件库发布_如何创建和发布Vue组件库
- 交换两幅图像的幅度谱和相位谱,并重构图像
- Windows学习总结(23)——在 Windows 10 子系统 ubuntu 上利用 WSL2 安装 docker 的 2 种方式
- 零基础适合学python吗-零基础,经济学专业,适合自学Python吗?
- 人机对战初体验—四子棋游戏
- 商业智能BI的价值,可视化报表等于商业智能BI吗?
- python高斯噪声怎么去除_【OpenCV+Python】线性滤波amp;非线性滤波
- 产品经理的工资为什么这么高?背后的逻辑是什么?
- STM32F103时钟系统讲解(精)
- Uboot 编译问题-“xxx aliased to external symbol xxx”
- 集成电路(IC)摩尔定律
- Ubuntu笔记本屏幕亮度调节问题
- 剑指offer面试题(41-50)——java实现
- WPF中的树:LogicalTree、VisualTree
- python telnet连接中兴C300,对C300telnetserver的一些猜想