对于我的工作,我必须将点云转换为灰度(深度)图像,这意味着云中每个XYZ点的z坐标代表灰色阴影.为了将Z坐标从[z_min,z_max]区间映射到[0..255]区间,我使用了Arduino的map函数:
float map(float x,float in_min,float in_max,float out_min,float out_max)
{return(x – in_min)*(out_max – out_min)/(in_max – in_min)out_min; }
完成后我需要将结果写入图像,问题是我拥有的云可能有数百万点,所以我不能只按顺序将它们逐个写入图像.假设我有3000×1000有序XY点.如果我想将它们写入700×300像素的图像,我该怎么办?我希望这个问题很清楚,先谢谢你的回答.
最佳答案 我设法找到了解决问题的方法.这是一个冗长的堆栈溢出算法,但请耐心等待.想法是将XY灰度点的矢量写为
pgm文件.
步骤1:cloud_to_greyscale – 将XYZ点云转换为XY灰度点矢量并将云作为参数接收的函数:
for each point pt in cloud
point_xy_greyscale.x
point_xy_greyscale.y
point_xy_greyscale.greyscale
greyscale_vector.add(point_xy_greyscale)
loop
return greyscale_vector
第2步:greyscale_to_image – 将先前返回的向量写为greyscale_image的函数,该类具有宽度,高度和_pixels成员,通常对应于无符号short的双维数组.该函数接收以下参数:一个greyscale_vector(将被转换为图像)和一个x_epsilon,它将帮助我们