一种分类方式是:稠密三维重建与稀疏三维重建。
顾名思义,稀松三维重建是只讲视野内的部分点重建,稠密三维重建通常是将所有点的三维坐标都重建出来。
我们的项目是稀疏点三维重建。两种方案很多基础知识和术语是相同的
目前,学界研究的基于双目的三维重建几乎都是稠密的深度图重建,因为说实话,稀疏点重建挺简单的。稀疏点的三维重建左右点的匹配关系可以做的非常精确,所以,通常情况下,稀疏点的三维重建的精度会比稠密三维重建高很多。
从双目图像中恢复整张深度图(通常是以左摄像机坐标系为参考)。一些技术相似的任务:MVS、SFM
场景:无人机、智能驾驶、机器人。
方法:传统算法效果还不错,近几年出现大量基于深度学习的方法(以lidar值为groundtruth)。
对于MVS或者SFM等任务,没有相机间的坐标转换关系。对极约束简洁地给出了两个匹配点的空间位置关系。于是,相机位姿估计问题变为以下两步:
由于 E 和 F 只相差了相机内参,而内参在 SLAM 中通常是已知的,所以实践当中往往使用形式更简单的 E。
除了基本矩阵和本质矩阵,二视图几何中还存在另一种常见的矩阵:单应矩阵( Homography)H,它描述了两个平面之间的映射关系。若场景中的特征点都落在同一平面上(比如墙、地面等),则可以通过单应性来进行运动估计。
关于极限纠正的代码,opencv也提供了相应的接口,我们自己程序内也有,但是实际操作时没用而已。
右边是视差三维矩阵,横轴是像素坐标x,y,纵轴是视差d。C(x,y,d)记录的是左图(x,y)与右图(x+d,y)的匹配代价。
场景:刚体跟踪。
已实现具有精确的双目标定信息,所以只要左右对应点正确匹配,那么就可以使用三角测量的方式将点精确重建。
三维重建的任务是计算点的三维坐标,但我们的任务还要从点信息中恢复空间变换,所以实际上是一个刚体追踪任务。需要确定哪些点是属于一个刚体的。所以这个问题不仅仅是立体匹配而已。关于点的分类,我们可以在二维图像中完成点的归类(比较困难),也可以在重建后(三维坐标)再对点进行分类。
可以看出,点的归类与立体匹配其实是完全可以分开的两个任务。立体匹配只是为了找到精准的对应关系,要在这个环节创新的话,就是找到消除误匹配的方法。距离编码使用距离信息编码同时解决了误匹配和点排序问题。如果只是为了解决误匹配,可以直接只是用距离信息,无需编码。
我个人觉得稀疏点这个任务是不太复杂的,因为我们手里的数据量其实也就只有那么几种:真实的点间距离,点的左右图像二维坐标,相机的标定参数。
这个方法是早先2012年王志刚的硕士毕业论文出现的,后面2016年才发小论文,小论文的数据和图是直接从大论文里面拿出来的,感觉是后来挤出来的小论文。发的中科院医学4区Computer Assisted Surgery。
手术器械的光学跟踪技术研究[D]-4.4
简述步骤:
三维空间点中求空间变换,其实两个点就可以,总共6个自由度,两组点就能提供6个方程。(但是会出现方向歧义,绑定手术器械后,绕中心旋转180度,靶点位置没有变化,手术器械变了)?对吗,在思考一下。(SVD提供的对应点的集合,所以是否不存在这个问题?)(两点无法建立一个参考坐标系!无法规定x、y的方向,空间变换描述的是参考坐标系之间的变换)
为什么空间中刚体跟踪通常使用的是三个点而不是两个点呢?因为两点只能绑定一条直线,无法描述一个平面,实际的刚体位置可以在绕该直线旋转的任意位置。
所以两点之间的转换是能求的,但是两点不能绑定一个三维的刚体,因为两点无法创建坐标系,所以无法描述两点与刚体的固定转换。
关于SVD,因为SVD的输入是对应点的集合,所以计算是没问题的。但是如何确定对应点关系呢?如果是2个点,从检测手段来看,你根本不知道哪个是点1哪个是点2。另外,不能是等腰三角形,这样绕中轴旋转180度靶点没有变。
使用大小不一的靶点?