我试图避免使用循环来解决此问题。我仍然相对较新。
我首先将点云投影到二维笛卡尔坐标系,然后使用图像分割技术对点云进行分割。 “图像”的分辨率为0.2米(在此示例中),并且我根据分割标记了每个像素。因此,我有一个XYZ点云pc
。现在,我要从分段网格labeled_image
中将该网格中像素内的每个点关联到标签。我可以使用循环来完成此操作,但我想避免使用循环来提高速度。这是一些代码:
import numpy as np
##################################################################################################
#labeled_image -> segmented 2d grid.
#width -> resolution (in meters) of each pixel in labeled image (in my current case it's 0.2m, but it could be anything).
#pc -> XYZ point cloud: pc[:,0] are x-values, pc[:,1] are y-values, & pc[:,2] are z-values
#minx, miny, maxx, maxy -> minimum x-value, minimum y-value, maximum x-value, maximum y-value
##################################################################################################
ind = np.indices(labeled_image.shape)
a = ind[0]*width + minx #each value in 'a' are the x - values of the grid
b = ind[1]*width + miny #each value in 'b' are the y - values of the grid
z = np.stack((a,b,labels),axis = 0)
test = np.round_(pc[:,:2],decimals=1) #round each point cloud x, y value to the nearest 10th.
事物耦合:
我需要将pc中的x,y值四舍五入为每个网格的宽度,以便可以关联这些点(我可以四舍五入为pc中x,y值的宽度值吗?)。
一旦完成(1),我需要将标签关联到这些点。我假设我会pc[:,:2] #(rounded to nearest width) ==z[2,:,:] #This part I'm not sure on
我走对了吗?我只想将网格值与pc中的xy值相关联。谢谢。