什么是目前被认为是2D点匹配的“最佳”算法?

时间:2009-04-02 22:49:41

标签: algorithm computer-science 2d pattern-matching

我有两个包含x-y坐标(星星)的列表。我也可以在每颗恒星上附加亮度(亮度)。现在每颗星都有随机的位置抖动,每张图像中可能会有一些额外或缺失的点。我的问题是,“这种数据集的最佳2D点匹配算法是什么?”我想两者都是简单的线性(平移,旋转,缩放)和非线性(比如坐标中的n次多项式)。在点匹配领域的术语中,我正在寻找能够在具有噪声和杂散点的2D点匹配程序之间的枪战中获胜的算法。根据使用的标签信息(大小)和/或转换是否被限制为线性,可能会有不同的“赢家”。

我知道有很多类别的2D点匹配算法和每个类中的许多算法(实际上可能总共数百个)但我不知道哪个(如果有的话)被认为是“最佳”或“最标准的“由计算机视觉领域的人。可悲的是,我想读的很多文章都没有在线版本,我只能阅读摘要。在我确定一个特定的算法来实现它之前,最好听几位专家将小麦与谷壳分开。

我有一个使用三角形的工作匹配程序,但它经常失败(约5%的时间),因此解决方案转换有明显的失真,但没有明显的原因。这个程序不是我写的,而是来自近20年前写的一篇论文。我想编写一个执行最强大的新实现。我假设(希望)在这个领域取得了一些进展,这使得这个看似合理。

6 个答案:

答案 0 :(得分:4)

如果您对星标匹配感兴趣,请查看Astrometry.net blind astrometry solverpaper on it here。他们使用四点四边形来解决夜空中Flickr图片中的星形配置。查看this interview

答案 1 :(得分:1)

没有单一的“最佳”算法。有许多不同的技术,每种技术在特定数据集和数据类型上都比其他技术更好。

我建议的一件事是从this introduction to image registration的教程中阅读Insight Toolkit. ITK支持多种类型的图像注册(这听起来像你正在尝试的那样),而且非常健壮在很多情况下。他们的大多数用户都在医疗领域,所以你不得不涉及很多医学术语,但算法和代码适用于任何类型的图像(包括1,2,3和n维图像,不同类型等)。

答案 2 :(得分:0)

您可以考虑首先在N个最明亮的星上应用您的算法,然后逐步包含其他算法以优化结果,同时缩小搜索范围。

使用RANSAC对额外点的稳健性也很常见。

答案 3 :(得分:0)

我不确定它会起作用,但值得一试:

对于每个恒星,圆周时间射线傅里叶变换 - 以其为中心 - 所有其他恒星(注意:这不是标准的傅立叶变换,即线时间线)。 圆周时间光线的相空间是整数倍线,但由于我们只有有限的精度,你只需得到一个矩阵;矩阵的尺寸取决于精度。现在尝试将矩阵彼此配对(例如使用L_2规范)

答案 4 :(得分:-1)

前段时间我在电视上看过一个节目,讲述了研究人员如何拍摄鲸鱼的照片,并利用它们上面的斑点(每条鲸鱼都是独一无二的)来识别每条鲸鱼。它使用了斑点之间的角度。通过使用角度,如果图像被旋转或缩放或平移则无关紧要。这听起来与你对三角形所做的相似。

答案 5 :(得分:-1)

我认为“最佳”(最技术)的方式是对原始图像和新的线性修改图像进行傅里叶变换。通过一些简单的过滤,可以很容易地找出图像相对于旧图像的方向和比例。有一个2d傅立叶变换here的描述。