2024-04-27 20:30:43 发布
网友
我使用python脚本将两个大的(数百万点)点云作为数组(“A”和“B”)读入。在
我需要找到“A”中各点最近的“B”邻域,但在“A”中每个点的5厘米以内。我还要求出“A”中各点半径5厘米范围内的邻居的平均值
有没有一种方法可以同时使用cKTree,包括平均值?在
cKDTree没有任何单位;我希望您的测量值都是以您想要的操作单位(cm)为单位的。在
你想“平均邻居”是什么意思?这仅仅是5个单位球内所有邻居的平均位置吗?在
从你发布的信息来看,我认为对你来说最关键的是
for A_point in A: hood = B.query_ball_point(A_point, 5)
现在,只需“平均”引擎盖中的分数即可。我假设您知道如何完成这一部分;cKDTree没有这样的操作,因为SciPy和Python是在基类型上提供这些操作的。在
你可以用A作为查询球点的第一个参数,但是你会得到一个巨大的邻里列表,也许会破坏你的记忆极限。在
这能让你动起来吗?在
我不确定您想做什么,但如果我理解正确,您可以按照以下步骤操作:
# this are just random arrays for test A = 20 * np.random.rand(1000, 3) B = 20 * np.random.rand(1000, 3)
# faster than loop + query_ball_point neighbourhood = tree_B.query_ball_tree(tree_A, 5)
means = np.zeros_like(A) for i in range(len(neighbourhood)): means[i] = A[neighbourhood[i]].mean(0)
cKDTree没有任何单位;我希望您的测量值都是以您想要的操作单位(cm)为单位的。在
你想“平均邻居”是什么意思?这仅仅是5个单位球内所有邻居的平均位置吗?在
从你发布的信息来看,我认为对你来说最关键的是
现在,只需“平均”引擎盖中的分数即可。我假设您知道如何完成这一部分;cKDTree没有这样的操作,因为SciPy和Python是在基类型上提供这些操作的。在
你可以用A作为查询球点的第一个参数,但是你会得到一个巨大的邻里列表,也许会破坏你的记忆极限。在
这能让你动起来吗?在
我不确定您想做什么,但如果我理解正确,您可以按照以下步骤操作:
为每个点云计算cKDTree
^{pr2}$找出A中与B中每个点最多相距5个单位的点:
计算所有这些点组的平均值:
相关问题 更多 >
编程相关推荐