gpt4 book ai didi

python - 比较两个具有相同比例但坐标网格具有一定旋转和移位的独立图像坐标列表

转载 作者:太空宇宙 更新时间:2023-11-03 15:31:39 25 4
gpt4 key购买 nike

我拥有两个独立的坐标列表(星星在(x,y)中的位置),其中一个具有一定的旋转量(但两个列表中两个匹配点之间的距离大致相同)。这两个列表大部分包含相同的星星,但其中一些可能不同。

例如,

list1  
2691 2968
1772 1580
4020 1479
3836 1920
2045 2591
2202 1945

list2
1648 1807
2568 3195
3898 1705
3712 2147
2078 2171
1921 2818

如果考虑以上两个列表,相同的星星对是,

(2691,2968) & (2568,3195)
(1772,1580) & (1648,1807)
(4020,1479) & (3898,1705)
(3836,1920) & (3712,2147)
(2045,2591) & (1921,2818)
(2202,1945) & (2078,2171)

如何实现这种匹配?我的一个想法是制作许多三角形并比较面积。

我更喜欢 python 来执行此操作,并且我只需要两个列表中存在的匹配的星号位置数组作为输出。

最佳答案

嗯,我终于找到办法了。不过,我不会称其为优化的。

import numpy as np
from itertools import permutations as mutate

sigma_c = 1.5
def reject_outliers(data, m=sigma_c):
return data[abs(data - np.mean(data)) < m * np.std(data)]

list1 = np.genfromtxt("1.coo")
list2 = np.genfromtxt("2.coo")

x1,y1 = zip(*list1)
x2,y2 = zip(*list2)

compare_value = 10000**2
for i, j in zip(mutate(x1), mutate(y1)):
diff = (np.array(x2)-np.array(i))
stddev = np.std(reject_outliers(diff))
if stddev <= compare_value:
compare_value = stddev
mutant_x1 = map(int,i)
mutant_y1 = map(int,j)
difference_array = map(int,diff)


print(zip(mutant_x1, mutant_y1))
print(zip(map(int,x2), map(int,y2)))
print("with difference array (X coo):")
print(difference_array)

关于python - 比较两个具有相同比例但坐标网格具有一定旋转和移位的独立图像坐标列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42856385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com