比较两个不同大小图像的坐标

Compare coordinates of two images of different size

我正在使用 python,我需要计算并集的交集,同时考虑到基本事实和锚框(更常见的是两个矩形)。问题是我在尺寸为 53x64 的图像上生成我的锚点,而我拥有尺寸为 424x512 的图像的真实坐标。 我掌握的信息是:

特别地,它们是矩形的两个对角的坐标。 所以问题是这样的距离和面积不成比例。 所以问题是,我如何才能以正确的方式比较这两个元素?

这是我的答案。我希望我能正确理解你想要什么。

Coordinates = {"x1" : 3, "x2" : 11, "y1" : 7, "y2" : 13}
NewCoords = {}
for key, value in Coordinates:
    NewCoords[key] = (value*8)
print(NewCoords)
# {"x1" : 24, "x2" : 88, "y1" : 56, "y2" : 104}

根据您拥有的信息,您可以将锚图像坐标中给定的点转换为 ground-truth 图像上的等效点。这可以通过使用 linear interpolation 来完成,如下所示。类似的数学可以用来计算逆(ground-truth ⇒ 锚点)变换。

您可以使用它来将您的坐标转换到它们相对于 ground-truth 图像的等效位置。然后,您应该能够使用这些转换后的值来正确计算距离、角度等。

anchor_height, anchor_width = 53, 64
gt_height, gt_width = 424, 512

def transform(x, y):
    return x/anchor_width * gt_width, y/anchor_height * gt_height

print(transform(0, 0))      # - > (0.0, 0.0)
print(transform(32, 26.5))  # - > (256.0, 212.0)
print(transform(64, 53))    # - > (512.0, 424.0)```