我正在尝试分割激光雷达点云后,地面已被分类。我正在使用numpy创建点云(pc)的“图像”,并在numpy数组中循环。我想加快循环或避免它一起。我将使用图像分割技术,但首先我需要运行这个代码来创建一个“图像”,这是需要一段时间的部分。有没有办法提高这个循环的速度或避免它?你知道吗
import numpy as np
from math import ceil, floor
'''In this case:
pc = point cloud (X,Y,Z values)'''
# point cloud is in the numpy array, pc
minx,maxx,miny,maxy = floor(np.min(pc[:,0]-1)),ceil(np.max(pc[:,0]+1)),floor(np.min(pc[:,1]-1)),ceil(np.max(pc[:,1]+1))# x,y bounding box
# grid x and y direction (resolution: 0.2 meters)
gridx = np.linspace(minx,maxx,int((maxx - minx+0.2)*5),endpoint=True)
gridy = np.linspace(miny,maxy,int((maxy - miny +0.2)*5),endpoint=True)
#shape of the new image with 0.2 meter resolution.
imgx,imgy = int((maxx-minx+0.2)*5),int((maxy - miny +0.2)*5)
# this is what will be created at the end. It will be a binary image.
img = np.zeros((imgx,imgy))
#loop through array to generate image (this is the part that takes a while)
for x,i in enumerate(gridx):
for y,j in enumerate(gridy):
# Test if there any points in this "grid"
input_point = pc[np.where(((pc[:,0]>i) & (pc[:,0]<i+1))& ((pc[:,1]>j) & (pc[:,1]<j+1)))]
# if there are points, give pixel value 1.
if input_point.shape[0]!=0:
img[x,y]=1
print('Image made')
谢谢你。你知道吗
以下是在随机测试集上生成相同输出的矢量化版本:
您的代码生成5x5像素。这是故意的吗?我得耍点小把戏才能复制出来。你知道吗
更新:添加了一个生成普通像素的版本。你知道吗
运行示例:
相关问题 更多 >
编程相关推荐