感谢您花时间阅读这篇文章。
我们有固定的立体摄像机对来观察封闭的体积。我们知道体积的大小,并具有摄像机对的内部和外部校准值。目标是能够准确地识别多个重复对象的3d位置。这自然导致了“文学”中所描述的对应问题。我们需要一个快速的技术来匹配图像1中的球A和图像2中的球A,依此类推。目前,我们使用极线几何输入(基本矩阵)的属性以一种粗略的方式匹配来自不同视图的球,当对象稀疏时工作正常,但如果对象密集分散,则会给出许多误报。由于图像1中的球A可以位于穿过图像2的核线上的任何位置,因此当多个对象位于这条线上并且看起来相似时,它会导致不匹配。
有没有办法将其重新建模为3D线相交问题或其他问题?由于图像1中的球A只能接受3D值的有界限制,有没有办法在3d中将其表示为一条线?然后做一个交叉点测试来找到图2中最匹配的球?
或者,有没有一种方法可以生成与图像1和2中的每个2d像素网格相对应的3D值的稀疏列表,并对这些值进行交集测试,以在两个相机之间找到匹配的对象?
因为这些对象可能是相同的,所以像FLANN,ORB这样的OpenCV特征匹配算法不起作用。
欢迎以公式或代码的形式提出任何想法。
谢谢!Sak


发布于 2020-11-26 20:17:13
你给自己定了一项相当困难的任务。因为一个点可以遮挡视图中的另一个点,所以通常不可能计算点的数量。如果每个视图都有两个点,但这些点落在另一个视图上的同一条核线上,则可以计算2到4个点之间的任何点。
假设您希望最小化这些点,这看起来就像密集二部图中的Minimum Vertex Cover,每个边表示每个视图中一个点的关联,每个边的权重来自关联每个视图中的相应点(顶点)的配准误差。当然,MVC是NP难的,如果你把这个问题当做一个一般的MVC问题,那么你永远不会比O(n^2)做得更好,因为这就是需要检查的边的数量。
您的特定MVC问题可能具有可被利用来执行更有效的近似的结构。特别是,我可能会建议计算一个视图中的极线,根据与极点的角度对它们进行排序,并类似地从极点对该视图中的点进行排序。然后,您可以大致并行地迭代两个排序列表,贪婪地将每个点与附近的一条核线相关联。然后,您可以在其他视图中执行相同的操作,但只查看该视图中在上一遍过程中尚未关联的点。我认为,使用动态编程(特别是在严格限制注册错误的情况下)可以使用不需要第二遍的更严密和可证明的最优方法,但我不能马上勾勒出它。
发布于 2020-11-25 22:36:49
对于不同类型的对象,使用绝对差值总和很容易找到匹配的对象。对于类似的对象,这个想法可能会导致发表一篇好论文。无论如何,这里有一个快速算法:
试试这个,应该可以打两个球。
https://stackoverflow.com/questions/65003640
复制相似问题