numpy从分段笛卡尔网格到点云的矢量化方法

时间:2019-04-04 17:27:51

标签: python classification lidar

我试图避免使用循环来解决此问题。我仍然相对较新。

我首先将点云投影到二维笛卡尔坐标系,然后使用图像分割技术对点云进行分割。 “图像”的分辨率为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.  

事物耦合:

  1. 我需要将pc中的x,y值四舍五入为每个网格的宽度,以便可以关联这些点(我可以四舍五入为pc中x,y值的宽度值吗?)。

  2. 一旦完成(1),我需要将标签关联到这些点。我假设我会pc[:,:2] #(rounded to nearest width) ==z[2,:,:] #This part I'm not sure on

我走对了吗?我只想将网格值与pc中的xy值相关联。谢谢。

0 个答案:

没有答案