Algorithm 寻找点集子集的好算法

Algorithm 寻找点集子集的好算法,algorithm,pattern-matching,computer-vision,point-clouds,Algorithm,Pattern Matching,Computer Vision,Point Clouds,我试图找到合适的算法来搜索更大集合中2D点的子集。 一幅画抵得上千言万语,所以: 你对如何做到这一点有什么想法吗?请注意,变换只是旋转和缩放 似乎最密切的问题是点集注册[1]。 我在试验CPD和其他刚性和非刚性算法的实现,但它们似乎不起作用 在更大的点集中寻找小子集太好了 另一种方法是使用恒星跟踪算法,如[2]中提到的角度法 或更稳健的方法,如[3]。但是,它们似乎都适用于大型输入集和目标集。我正在寻找不太可靠但更简约的东西 谢谢你的建议 [1] : [2] : [3] :我想试试这个算法。像

我试图找到合适的算法来搜索更大集合中2D点的子集。 一幅画抵得上千言万语,所以:

你对如何做到这一点有什么想法吗?请注意,变换只是旋转和缩放

似乎最密切的问题是点集注册[1]。 我在试验CPD和其他刚性和非刚性算法的实现,但它们似乎不起作用 在更大的点集中寻找小子集太好了

另一种方法是使用恒星跟踪算法,如[2]中提到的角度法 或更稳健的方法,如[3]。但是,它们似乎都适用于大型输入集和目标集。我正在寻找不太可靠但更简约的东西

谢谢你的建议

[1] :

[2] :


[3] :

我想试试这个算法。像您需要的那样的简单版本应该很容易实现

以下是一些可能与您的问题相关的论文:

  • 欧几里德运动下的几何模式匹配(1993)作者:L.Paul Chew、Michael T.Goodrich、Daniel P.Huttenlocher、Klara Kedem、Jon M.Kleinberg、Dina Kravets
  • 二维点模式的快速预期时间算法(2004),由Wamelena,Iyengarb编写
  • 刚体运动下部分点集模式匹配的简单算法(2006),Bishnua,Dasb,Nandyb,Bhattacharyab
  • 在相似变换下平面上点集的精确和近似几何模式匹配(2007)由Aiger和Kedem提供
顺便说一下,你上次的推荐人让我想起:

  • 点模式匹配在航天中的应用(1994),由G.韦伯、L.Kniping和H.Alt
看一看。它允许在不同变换下查找几何图案。如果只使用旋转和缩放,它将非常简单

是以“本机”坐标对模式进行编码,这在变换下是不变的


你可以试试geohash。将点转换为二进制并交错。测量距离并与原始距离进行比较。您还可以尝试旋转geohash,即z曲线或morton曲线。

我认为您应该从输入点的子集开始,并确定所需的转换以匹配大型集合的子集。例如:

  • 选择输入的任意两点,例如A和B
  • 将A和B映射到一对大集合。这将确定刻度和两个旋转角度(顺时针或逆时针)
  • 对第三个输入点C应用相同的缩放和变换,并检查大集合以查看是否存在点。你必须检查两个位置,每个旋转角度一个。如果点C存在于它应该在大集合中的位置,您可以检查其余的点
  • 对大集合中的每对点重复此操作
我想你也可以尝试匹配3个输入点的子集,知道三角形的角度在缩放和旋转下是不变的


这些是我的想法,我希望它们有助于解决您的问题。

您能详细介绍一下上下文吗?例如,您是仅假设二维点,还是该算法也应在更高的维度中工作?搜索匹配的点集的典型大小是多少?你有一个单一的模板要查找,还是要一个接一个地搜索多个模板?输入集大约为5到15个点。目标设定在1000点左右,但可以划分为更小的区域。。。最后,我想找到最相似的匹配,因此输入集可能不完美。@RobSis我很想知道你是如何解决问题的。我有一个类似的问题要解决,如果你能根据你的经验告诉我哪种算法最适合这类问题,我将不胜感激。我已经研究了RPM、ICP和CPD方法,但无法为我的数据类型(即3D数据)产生令人满意的结果。@RobSis,很抱歉重新使用了这样一个旧线程。。但我希望做同样的事情,除了平移和旋转。您是否找到了一种精确的方法来将子集与集合进行点匹配?谢谢不确定ICP是否合适,因为它必须在接近解决方案时初始化才能收敛。你完全正确!当ICP用于匹配数以百万计的3D点时,它对初始猜测非常敏感,但我假设在这个简单的场景中,它应该能够“暴力”通过所有点。我猜他可以试试。。。如果出现最坏情况,他可以尝试1000个随机初始位置:D