三维重构学习笔记(5):仿真中存在的各类疑惑(杂记)

三维重构仿真时撞的墙

保证图片切割时不会越界

select1.width = box2[0].size.width + 20;
select1.height = box2[0].size.height + 20;
select1 &= Rect(0, 0, dst.cols, dst.rows);
dst = dst(select1);

SFM中通过寻找本征矩阵与分解本征矩阵得到的平移向量是单位向量为什么还可以用于重构?

这个单位平移向量是由于本征矩阵自身的特征决定的,findEssentialMatrecoverPose得到的 R , T R,T R,T总是单位的,所以在使用增量式SFM的时候需要得到每一张图片相对于第一张的图片的 R , T R,T R,T ,这样做的原因主要有两个:
三角测量的输入必须是两张图片相对于同一个世界坐标系的 R , T R,T R,T
假设第一个相机与世界坐标系重合,剩下的图片就必须得到相对于第一张图片的 R , T R,T R,T。不能通过第二张图片得到相对于第一张的坐标,因为, T T T是单位向量,因此第三张相对于第二张的平移变换无法准确转化为第三张相对于第一张的平移变换。
这就解释了为什么我企图使用这种计算方式计算距离,但是计算结果与实际千差万别——因为缺少了一个不知道的比例系数。

自标定与固定相机标定的区别

在使用分解本征矩阵的方式进行标定计算两个不同的平面上的点的距离失败之后,我陷入了疑惑,显然是因为没有理解了通过本证矩阵的分解得到的旋转与平移都是单位的这句话的含义。盲目地去模仿网上的代码加上自以为是的理解。
我原来的想法很简单:通过计算本征矩阵分解出 R , T R,T R,T,然后直接将 R , T R,T R,T用于三角测量。这样岂不美哉。但是计算结果与我想象的完全不一样,甚至让我一度怀疑自己对于三维重构的理解是否是错误的。后来才知道T是单位向量,因此三角测量的时候得到的结果是缺少一个比例系数的,当然与实际值对应不上。分解本征矩阵就是自标定
但是求取第二个相机相对于第一个相机的变换这个思路的正确的。利用工具箱标定得到具有实际值的 R , T R,T R,T大概就是固定相机标定(其实是双目视觉标定的标定)

SFM算法的实现中存在一些特征点少以及特征点匹配不准确的缺陷,导致三角测量结果不理想

由于刚接触三维重构时就学习了增量式的SFM,而几乎网上的资料都显示使用SIFT等特征。我也一直深信不疑地以为寻找匹配特征点只有SIFT, SURF 以及ORB这三种方法。而这几种特征匹配法是尺度和旋转不变的,并且对于照明的变化(例如由阴影或不同的对比度引起)是稳健的.因此,这些方法可以应用于图像序列,但更常用于对齐从不同视图或不同设备捕获的图像对.特征匹配方法的缺点是难以定义特征匹配的位置和特征对(在图像序列中是运动矢量)通常非常稀疏.此外,匹配方法的子像素精度非常有限,因为大多数检测器被精细分级到整数位置.(引自某网站的相关问答

但是由于SFM这个框架带给我的疑惑越来越多,我查看了双目立体视觉的相关内容。其中有位博主使用光流法寻找特征点。我决定试一试

明确某些概念

阅读SLAM 是因为很多知识和3D重构相关。

  1. 单目SLAM具有尺度不确定性,也就是无法获得真实尺度
  2. 双目相机通过基线(已知)估计每个像素的空间位置,与人眼十分类似。但是双目相机需要大量的计算才能够不太可靠地估计每一个像素点的深度,且测量的深度范围与基线相关,基线距离大,能够测量到的就越远。总结起来,双目相机的缺点是配置与标定均较为复杂,深度测量和精度受到双目的基线和分辨率的限制,并且视差的计算非常消耗计算资源——计算量是双目的主要问题之一。
  3. RGB-D相机最大的特点就是能够通过红外结构光或者Time-of-Flight原理,像激光传感器一样,通过主动向物体发射光并接收返回的光,测出物体离相机的距离。这个过程是通过物理测量的手段实现的,所以相比于双目可以节省大量的计算量。
  4. 视觉里程计(VO:Visual Odometry):关心的是相邻图像之间的相机运动;它能够通过相邻帧之间的图像估计相机运动,并恢复场景的空间结构。它为“里程计”是因为它和实际的里程计一样,只计算相邻时刻的运动,而和再往前的过去的信息没有关联。==我还想知道恢复的场景的空间结构的恢复程度有多大?==每次估计都会出现误差,并且误差会传递给后续的估计,也就是出现累计漂移。这就是仅拥有VO还不足以实现SLAM的估计的原因。SLAM的估计与增量式SFM是相通的。
  5. SLAM使用后端优化和回环检测解决漂移问题。其中后端优化主要是滤波算法和非线性优化算法,主要针对处理SLAM过程中的噪声问题。
  6. 回环检测主要解决位置估计随时间漂移的问题。也就是:假设一段时间以后,机器人回到原点,且通过某种手段告诉机器人到达了原点,虽然此时的估计值不是原点,但是将估计值置为原点就消除了时间漂移。视觉通常使用图像的相似性完成回环检测——实质上就是一种计算图像数据相似性的算法。回环检测得到的结果输入给后端优化,对整体估计进行调整,消除累计误差得到全局一致的轨迹和地图。

待续……

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值