c++ - 匹配线段 - 稳健且快速的方式

标签 c++ image-processing vector pattern-matching computational-geometry

我有从单个图像数据中提取的 2D 线段,并希望与从其他来源提取的 3D 线段相匹配。为此,首先我想使用共线性方程(我知道外部方向参数)将 3D 线段投影到图像空间。由于现在两条线段都在同一坐标系中,我想找到与该线最匹配的线段。

我正在寻找一种快速且稳健的算法来匹配相应的线段,以便稍后更新我的 3D 线段。

如果有人对此有想法,请提出一些建议。提前致谢。

最佳答案

您正在查看类似于 line segment intersection 的问题.不出所料,它的解决方案可能也很相似。

直接的方法是将每个 2D 片段与每个 3D 片段进行比较,最佳匹配是与实际长度和位置相比预测长度和位置最接近的匹配。实际是二维段。这类似于 O(AB),其中 A 是 2D 线段的数量,B 是 3D 线段的数量。

您可以通过按字典顺序对 2D 段进行排序来稍微加快该方法,然后使用我在这个 question 中询问过的同一种算法。获取所有线段,其 x 值在一定量内到一个或两个线段端点 * 的预期 x 值。在最坏的情况下,您仍然可能遇到 O(AB),但平均时间应该更接近 O(B log A)。虽然,根据您所说的,您是否可以使用此方法尚不清楚,因此本段应更多地视为一个大纲。

比 O(B log A) 或 O(A log B) 更快可能要求这是一个经过充分研究的问题。

  • 如果您按字典顺序对 2D 端点进行排序,您可能只需要 1 个端点即可。

关于c++ - 匹配线段 - 稳健且快速的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14194716/

相关文章:

c++ - 使用 Atmel Studio 作为通用 C 编译器

python - 在 python 中计算图像的特征向量

c++ - 指向继承类对象的指针 vector C++

c++ - 在循环中添加指向 vector 的指针

c++ - 如果我知道映射键的预期数量,我应该使用什么 bucket_count 值?

c++ - 编写一个通用内核并将其映射到不同的 ISA

python-3.x - 将图像的一部分叠加到另一幅图像上

减少比较次数以计算直方图之间的卡方距离的算法?

c++ - 我应该始终使用带有自己索引的一维 vector ,还是可以使用多维 vector ?

vector - 如何使用 BLAS 计算一维数组的和?