gpt4 book ai didi

成对点的 Python 列表,如何沿线查找点

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

我有一组函数可以生成像这样的配对点列表:

my_list=[((57.5, 3048.0), (62.0, 3050.0)), ((82.0, 1006.0), (93.0, 1021.5)), ((95.0, 1354.0), (86.0, 1336.0)), ((95.0, 1354.0), (89.0, 1327.0))...]

这样每一对都是:

((57.5, 3048.0), (62.0, 3050.0)) Pair 0
((82.0, 1006.0), (93.0, 1021.5)) Pair 1
((95.0, 1354.0), (86.0, 1336.0)) Pair 2
((95.0, 1354.0), (89.0, 1327.0)) Pair 3
((104.0, 2366.0), (109.0, 2350.0)) Pair 4
((104.0, 2370.0), (109.0, 2350.0)) Pair 5
((122.5, 2375.0), (109.0, 2350.0)) Pair 6

等等

这是一长串 X,Y 坐标,通过分析图像生成。我需要找到一种方法来拒绝大部分的观点。

任何少于 3 个点但不落在相似线上(不精确,需要一些摆动空间)的都需要被拒绝。

大部分点都是不在一条线上的簇,或者只有一条线上的两个点。有没有一种方法可以遍历此列表并仅在大致相同的线上保存 3 个或更多点的集合?

这是一张展示我所追求的图像。该图像显示了函数发现的微弱移动小行星以及还发现的所有噪声。你可以看到小行星有 3 个以上的点大致在同一条线上,而噪音相当随机。我试图丢弃在同一条线上只有两个点的点。

enter image description here

很多问题,但必不可少!

实现答案 1 之后

enter image description here

最佳答案

您可以找到一个点与其他两点之间的线的距离的方程式。 (https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line)。

def distance(point, segment):
"""Distance from a point to a line formed by a segment"""
...

然后循环遍历所有的线段并计算到每个点的距离。您将需要一个“足够接近”的阈值。然后,您可以列出靠近一条线的所有点。像这样。

ON_LINE_THRESHOLD = 1.5

for segment in my_list:
close_points = []
for point1, point2 in my_list:
if distance(point1, segment) < ON_LINE_THRESHOLD:
close_points.append(point1)
if distance(point2, segment) < ON_LINE_THRESHOLD:
close_points.append(point2)
if len(close_points) >=3:
# Close points will always be at least two as it includes the end points.
do something!

然后您如何处理线上的点列表由您决定。

关于成对点的 Python 列表,如何沿线查找点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34449293/

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