问题标签 [point-clouds]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 连接点以形成三角形
如果我有一组 3d 点(AKA 点云),那么确定我应该制作的 3 个点(三角形)组的最佳方法是什么,以创建表面重建?
c++ - 有什么好的 C 或 C++ 库可以处理大型点云吗?
基本上,我正在寻找一个库或 SDK 来处理来自激光雷达或扫描仪的大型点云,通常会遇到数百万个 X、Y、Z、颜色的点。我所追求的如下;
快速显示、缩放、平移点云注册快速低级访问数据曲面和实体的回归(不如其他重要)
虽然我不介意为合理的商业库付费,但我对非常昂贵的库(例如超过 5000 美元)或每个用户运行时许可成本的库不感兴趣。开源也不错。我通过谷歌找到了一些可能性,但对于我的预算来说,它们都太贵了。
algorithm - 来自 3Dlaser 扫描仪的点云网格化
有没有可以实时对点云进行网格划分的软件包/软件?
用于表示 3D 点云的数据结构是什么?
visualization - 用于标记 3d 点云数据集的命令行脚本或软件工具
如何标记 3d 点云数据集?是否有软件可以加载包含 x,y,z 值的文本文件,然后将其可视化,以便我可以标记它?
matlab - 在 MATLAB 中存储 XYZ 数据的最常规方法
我有大量数据要导入 MATLAB,代表笛卡尔空间中点的位置。以下哪一项是存储和处理标准 XYZ 数据的最常规方法?:
选项1
将 X、Y 和 Z 坐标存储为单独的 n * 1 个向量(可能在结构内?)。这使得:
- 绘制简单:
plot3(X, Y, Z)
- 提取单个点稍微复杂一些
N = [X(i), Y(i), Z(i)]
- 将整个点集传递给函数会扩展要传递的不同参数的数量。
选项 #2
将 X、Y 和 Z 坐标存储为一个 n * 3 向量。
- 绘图稍微困难一些:
plot3(XYZ(:, 1), XYZ(:, 2), XYZ(:, 3))
- 提取单个点更容易:
N = XYZ(i, :)
- 通过整套点很容易 - 只有一个变量
基于此,我怀疑第二个是更传统的。
但是,我要处理的一些数据更难,因为它是以网格形式读取的,其中网格的格式很重要。我的意思是,数据的原始形式是 * m * 3 矩阵,而不是 (n*m) * 3 矩阵。点 X(i, j) 与点 X(i, j+1) 相邻这一事实很重要。同样,提供了两个选项:
选项1
将每个 X、Y 和 Z 坐标存储为 n * m 矩阵。
选项 #2
将所有点存储为 n * m * 3 矩阵。
我宁愿在这里做第二个,但是有些选项,比如绘图变得很傻:
我觉得必须为此制定一个约定,尤其是在视觉和图形社区中。
graphics - 每点生成松树点的伪代码?(2d)
纽约要来了!)所以让我们假设我们有一些函数,比如 drawPoint(color, x, y) 我们将如何渲染一棵松树?
data-structures - 快速找到点云中的特定形状
我有一个点云,并且想检测我的代码中某些点模式的出现。
假设我在 3d 空间中有 1000 个点,我想检测 3 个点的所有实例,这些点形成一个“L”形,其中 L 的每个段都有特定的长度。点云可能没有完全匹配,但可能非常接近(即在点云中,“L”段的长度可能比理想的略长/短)
我最初的想法是这样的:
- 记录我们试图检测的形状中所有点之间的距离
- 创建一个空的“潜在形状”
- 对于我们潜在形状中的每个点,检查位于/接近第 1 部分中找到的距离的所有点)
- 如果我们找到一个点,将其添加到我们的潜在形状中,并重复第 3 部分)直到我们拥有所有点。然后检查点之间的角度以验证形状确实正确。如果不正确,我们继续下一点并重新开始
问题是这种方法有一个可怕的最坏情况运行时间。理想情况下,我希望有某种数据结构来加快我对“查找距离给定点的距离最小值和距离最大值之间的所有点”的查询。有人可以指出一些有用的数据结构可能会有所帮助。
我正在考虑将所有点放在八叉树中以加快访问时间。
关于如何提高运行时间的任何其他建议?启发式加快速度?
注意:我试图找到的形状是可变的。它们并不总是“L”。我尝试查看霍夫变换,但它们似乎仅对检测特定的预定形状(如线条/圆圈)有用。
graphics - 3d 云查看器?
我有一个文件,其中包含一堆点及其 x、y、z 位置。我正在寻找一个简单的查看器,我可以在其中加载这些点数据并查看它。旋转对于我检查云的深度至关重要正在生成。有人可以指出一个安装开销最小的轻量级查看器吗?
3d - 3D点云的表面重建处理不需要的重叠表面?
在阅读了两个不错的帖子后 简化 3d 表面的算法? https://stackoverflow.com/questions/838761/robust-algorithm-for-surface-reconstruction-from-3d-point-cloud 我还有一个关于表面重建的问题。
我有一些来自测距相机的 3d 点云数据。这意味着点云数据是嘈杂的,只有坐标 (x,y,z) 信息,并且只表示扫描场景的部分表面(又名 2.5D 数据)。
在尝试对它们进行网格化之前,我运行了一些对齐算法(例如 ICP)将多个范围数据合并为一个。不知何故,对齐并不完美,它让合并数据集有一些重叠不好的表面伪影,整个数据变得更加嘈杂!
这是一个插图。
算法(例如球旋转、泊松、行进立方体)可以处理这种情况吗?还是我需要一些预处理来使数据集更薄以减少重叠表面?
顺便说一句,我已经尝试使用 MeshLab 仅使用球旋转来从此类数据集中重建表面。它可以工作,但是某些表面法线是在错误的方向上生成的。我认为重叠点会导致这样的问题。
MeshLab中生成的曲面,黑白曲面法线方向不同。
感谢您的任何建议和可能的答案。
python - 适用于 3D 建模管道的文件格式和工具
我正在研究点云数据的建模/重建算法。到目前为止,我一直在使用 Python 进行开发,并且对 VPython 满足我的可视化需求感到相对满意。
我遇到的一个问题是 VPython 在渲染大量对象时变得非常慢(至少在我的非 3d 加速 Linux 笔记本电脑上),这使得复杂模型的视觉检查非常困难。
我一直在尝试使用外部工具进行可视化,但问题是我有点迷失在可能的文件格式和可用工具的海洋中。例如,我一直在尝试 MeshLab,它非常适合以简单的 ascii 格式显示点云数据,但我无法决定以哪种兼容格式导出其他类型的几何图形以叠加在点云层上。
以下是我的整个管道的要求:
- 点云数据可能包含数百万个点,存储为简单的 xyz ascii 坐标
- 建模原语主要是线条和圆柱体(即没有多边形),数量以千计
- 理想情况下,可视化工具应该是跨平台的(它必须至少在 Linux 上运行)
- 应该有一个 Python 模块,用于轻松导入/导出所选文件格式的数据(或者格式足够简单,可以编写一个简单的转换器,如果没有的话)
我已经在谷歌上搜索了很多关于这方面的内容,所以我对所有这些都有初步的答案,但在我的上下文中没有一个是 100% 令人满意的。任何帮助或建议将不胜感激.. 非常感谢提前!