【问题标题】:Linear shift between 2 sets of coordinates两组坐标之间的线性偏移
【发布时间】:2016-06-28 01:40:13
【问题描述】:

我的问题如下:

对于我的工作,我需要将扫描的照相底片的图像与底片覆盖的一般天空区域内的已知恒星样本目录(我称之为主目录)进行比较。为此,我提取图像中对象的信息,例如图像上的亮度和天空中的位置,并将其保存在表格中。然后我使用 python 创建一个多项式拟合来校准图像中恒星的大小。 这可以很好地达到一定的精度,但不幸的是还不够好,因为对象在照相底片和主目录中的坐标之间存在微小的偏移。

这里的绿色圆圈表示主目录中对象的位置(圆圈的中心)。如您所见,实际的星星总是位于主目录中对象的左上角。

我在比较图像时看了一点(即How to detect a shift between images),但我现在有点不知所措,因为我实际上不是在比较图像而是数组与对象的坐标。这里的另一个问题是(如您在图像中看到的)主目录中的某些对象在板块上不可见,并且并非所有板块都具有相同的深度(这意味着有些板块显示的星星比其他板块多)。

我想知道的是一种在python中查找和纠正不同坐标大小的2个数组之间的线性偏移的方法。不应该有任何旋转,所以它只是 x 和 y 方向的偏移。数组是普通的 numpy 重新数组。

【问题讨论】:

    标签: python numpy computer-vision astronomy


    【解决方案1】:

    有几种可能的解决方案 注意 - 这些是高级指针,您需要一些工作才能将其转换为工作代码

    原始解决方案(互相关)可以适应当前的数据结构,并且应该可以工作

    相信RANSAC 在您的情况下会更好 基本上它的意思是: 基于少量数据点(定义相关模型所需的最少数量)创建模型,并使用完整数据集验证其正确性。

    具体来说,如果您只考虑翻译(而不是缩放):

    1. 选择你的一点
    2. 将其与目录中的一个随机点匹配[如果您事先知道哪种翻译更有可能,您可以进行“有根据的猜测”]
    3. 此匹配为您提供翻译
    4. 验证此翻译是否与您的其他观点相符
    5. 重复直到找到合适的匹配项

    【讨论】:

      【解决方案2】:

      我在这里假设对象在照片板和主目录中的顺序不一定相同。

      考虑照片板中对象的位置矢量集 A 和主目录中对象的位置矢量集 B。您正在寻找一个向量 v,这样对于 A 中的每个 aa + vb 中的某个元素。

      对我来说最明显的算法是对于每个 a,对于每个 b,让 v = b - 一个。现在,对于 A 中的每个元素,检查 B 中是否存在与该元素 + v 足够接近(在您选择的某个距离 e 内)的对应元素。一旦找到满足这个条件的vv就是你的轮班。

      【讨论】:

        【解决方案3】:

        我会稍微改变@OphirYoktan 的建议。你有这些圈子。我假设你知道半径,并且你有这个半径值是有原因的。

        不要随机选择点,而是在样本半径内过滤 x,y 的主目录。然后为样本范围内的所有可能的主目录条目计算您需要计算的向量数量。重复做同样的事情,然后收集向量的直方图。大概会有一小部分会重复出现,那些可能是真实的翻译。 (理想情况下,“小数”== 1。)

        【讨论】:

        • 圆的半径是算法的搜索半径,该算法通过我的主目录查找目录和图像之间可能的匹配项。因此,我现在提取了所有可能的匹配项,并按照您的建议计算了它们之间的差异,并且似乎有效。直方图并不完美,但在平滑它们之后,我得到了一个最大值,我可以用它来获得翻译。谢谢
        猜你喜欢
        • 2021-08-04
        • 2015-01-12
        • 2014-01-11
        • 2018-06-23
        • 1970-01-01
        • 1970-01-01
        • 2011-12-20
        • 2021-08-07
        • 1970-01-01
        相关资源
        最近更新 更多