对齐和比较两组可能不完整且忽略缩放的向量的算法?

标签 algorithm machine-learning computer-vision

这里是问题:

我有很多组点,我想想出一个函数,可以采用一组并根据它们与第一个的相似性对匹配项进行排名。缩放、平移和旋转无关紧要,并且某些点可能会从任何一组点中丢失。最好的匹配是如果以理想的方式缩放和平移,则点之间的均方误差最小(可能有惩罚上限,或者只考虑点的最佳部分来处理缺失点)。

我正在尝试想出一个好的方法来执行此操作,并且想知道是否有任何众所周知的算法可以处理此类问题?只是东西的名字会很棒!我没有接受过正规的 CSCI 或数学教育,正在尽最大努力自学。

我尝试过的一些事情

首先想到的是以某种方式对点进行归一化,但我认为这没有帮助,因为缺失的点可能会把事情搞砸。

我能想到的最好方法是通过平移以匹配它们的质心、缩放以便与集合的质心的最大距离相匹配来估计起点。从那里开始,进行 A* 搜索、缩放、旋转和平移,直到达到最大值,然后比较这两个集合。 (我希望我正确地使用了 A* 一词,我的意思是尝试小的平移和缩放并选择给出最佳匹配的移动)我认为这将在大多数时间找到全局最大值,但不能保证。我正在寻找一种永远正确的更好方法。

非常感谢您的帮助!到目前为止,尝试解决这个问题一直很有趣,所以我希望它也适合你。

最佳答案

有一个非常聪明的算法来识别星域。您在菱形中找到 4 个点,然后使用相距最远的两颗星定义一个定位其他两颗星的坐标系。这是尺度和旋转不变的,因为位置是相对于前两颗星的。这形成了一个散列。您生成其中几个哈希值并使用它们来生成候选人。一旦你有了候选人,你就会寻找多个哈希具有正确关系的候选人。

这在关于 http://astrometry.net/ 的论文和演示文稿中进行了描述.

关于对齐和比较两组可能不完整且忽略缩放的向量的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8439444/

相关文章:

artificial-intelligence - Connect 4 应该使用什么机器学习算法?

machine-learning - word2vec 对于监督学习有意义吗?

c++ - 使用 Opencv 调试断言失败 _pFirstBlock == pHead

c# - 在 C# 中以编程方式生成决策表?

matlab - 使用交叉验证的 KNN 分类器

python - 如何旋转图像以对齐文本以进行提取?

c++ - 在没有清晰边界/边缘的图像中找到矩形空间

algorithm - 为什么这个函数/循环是 O(log n) 而不是 O(n)?

algorithm - 整数数组中的最小移位,因此它们的差 >= k

java - 从一组聚合(总和、平均值等)构建具体列表