2

感谢您花时间阅读本文。

我们有固定的立体摄像头对,查看封闭的体积。我们知道体积的尺寸,并具有相机对的内在和外在校准值。目标是能够准确识别多个重复对象的 3d 位置。这自然会导致文学中所谓的对应问题。我们需要一种快速的技术来匹配图像 1 中的球 A 和图像 2 中的球 A,依此类推。目前,我们使用极线几何(基本矩阵)的属性以粗略的方式匹配来自不同视图的球,并且在对象稀疏时工作正常,但如果对象密集分散,则会产生很多误报。由于图像 1 中的球 A 可以位于穿过图像 2 的极线上的任何位置,

有没有办法将其重新建模为 3d 线交叉问题或其他什么?由于图像 1 中的球 A 只能取 3d 值的有界限制,有没有办法将其表示为 3d 中的一条线?并进行交叉测试以找到图像 2 中最接近的匹配球?

或者有没有办法生成一个稀疏的 3d 值列表,这些值对应于图像 1 和 2 中的每个 2d 像素网格,并对这些值进行交叉测试以找到两个相机上的匹配对象?

由于对象可以相同,因此 FLANN、ORB 等 OpenCV 特征匹配算法不起作用。

欢迎任何以公式或代码形式出现的想法。

谢谢!萨克

在此处输入图像描述

在此处输入图像描述

4

2 回答 2

0

你给自己定了一个相当艰巨的任务。因为一个点可以在视图中遮挡另一个点,所以通常甚至无法计算点的数量。如果每个视图有两个点,但这些点落在另一个视图的同一极线上,那么您可以计算 2 到 4 个点之间的任意点。

假设你想最小化点,这开始看起来像密集二分图中的最小顶点覆盖,每条边代表每个视图中一个点的关联,每条边的权重取自关联对应的配准误差每个视图的点(顶点)。当然,MVC 是 NP 难的,如果您将问题视为一般的 MVC 问题,那么您永远不会比 O(n^2) 做得更好,因为这就是要检查的边数。

您的特定 MVC 问题可能具有可用于执行更有效近似的结构。特别是,我可能会建议在一个视图中计算核线,按与核的角度对它们进行排序,并类似地从核对该视图中的点进行排序。然后,您可以大致并行地遍历两个排序列表,贪婪地将每个点与附近的极线相关联。然后您可以在另一个视图中执行相同的操作,但只查看该视图中在上一次传递期间尚未关联的点。我认为动态编程(特别是如果您严格限制注册错误)可能会使用不需要第二次通过的更严格和可证明的最佳方法,但我不能随便勾勒出来。

于 2020-11-26T12:17:13.073 回答
-1

对于不同类型的对象,使用绝对差之和很容易找到匹配项。对于类似的对象,这个想法可能会导致发表一篇好论文。无论如何,这是一个快速算法:

  1. 检测第一张图像中的两个球(使用对象检测方法)。
  2. 将图像分成包含两个球的两段。
  3. 对第二张图像也重复步骤 1 和 2。
  4. 两个图像中片段的方向应该给出两个球的对应关系。

试试这个,它应该适用于两个球。

于 2020-11-25T14:36:49.487 回答