繁体   English   中英

3D地图可视化范围(使用vtk?)

[英]range 3D map visualization (with vtk?)

我们有一个用激光和相机从3D三角剖分获得的ZMap(又称深度图)图片。 我们知道每个像素的深度值和相机的分辨率(每个像素与以mm为单位的3d坐标相关联)。 我们的目标是将Zmap可视化为2d曲面,因此我们考虑创建点云,生成网格并使用一些3D库显示它。我们认为vtk是正确的选择,但遇到了一些问题。

首先,我们尝试使用无组织结构(vtkPolyData),通过3dDalaunay三角剖分生成网格。 但是,当点数<50k时,代码可以正常工作。 我们的3D重构由480k点组成,计算时间确实太长了。

然后,我们切换到有条理(连接点)。 恕我直言,这些附加信息应减少创建网格的计算时间,但是我们无法理解如何创建“ vtkStructuredGrid”并将其Z值输入以获得2D网格化表面。

这是正确的方法吗? 有没有人尝试过?

提前致谢

如果您的点以2D网格组织(在扫描时),则不需要复杂而缓慢的三角剖分算法

  1. 将点组织到2D表/网格中

    • 像这样的东西:
    • 点格
    • 灰色方块是重点
    • 所以点x,y轴平行于表格/网格u,v索引
    • 如果您的数据尚未以这种方式组织,则对点进行排序,以便
    • 存储在类似: double pnt[maxU][maxV][3];
    • 如果x,y直接与网格对齐,那么您只需要存储Z坐标即可节省一些内存
  2. segmentate

    • 在3D扫描的点云中这样组织起来很容易
    • 只需将Z坐标差小于阈值的所有相邻点连接在一起
    • 我图像中的彩色方形点
    • 灰色点现在是超出Z坐标范围的背景
    • 因此添加如下结构: int obj[maxU][maxV];
    • 将所有背景/超出范围的点设置为obj [u] [v] =-1;
    • 设置其余的唯一obj索引,例如(u*maxV+v)
    • 现在处理每条线,如果附近的点的Z坐标附近,则重新索引其中之一(因此对象正在增长)
    • 完成后,处理所有行并尝试合并重新索引相邻对象
    • 循环直到没有合并发生
    • 这比基于洪水填充的分段要快得多(如果使用了适当的加速线合并结构)
  3. 三角

    • 逐个处理选项卡
    • 如果所有4个点都属于分割对象,则将四边形添加到网格
    • 如果仅3个添加三角形(4个组合)
    • 如果1或2不添加任何内容
    • 结果是彩色区域

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM