问题标签 [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.
3d - 使用 Kinects 深度相机在黑暗中观察
我正在尝试使用 MS Kinect SDK 从 kinect 传感器读取深度相机数据并创建深度图,以便您可以在黑暗中识别特征,这是一种夜视反馈。我一直在研究随样品提供的标准单色外观,很难看出任何特征真的很好,只是看到物体的轮廓,你不能真正看出物体的上升和下降。看着像这里完成的 3d 图像3d Kinect Depth Map 之类的东西。
只是想知道这是否可能?如果是这样,如何使用新的 MS Kinect SDK 来解决这个问题?
c++ - OpenGL 从 3d 点获取 2d 投影
我通过以下代码显示了一组 3d 云点:
此代码显示一个 3d 点云数组及其颜色值,我想获取一个 2d 点数组并以 2d 显示这些点(3d 点的上视图)
c++ - 使用VTK绘制不同颜色的点
我想使用可视化工具包来分散绘图点,每个绘图点都有不同的颜色。我已使用此处给出的建议以灰色绘制点,但我无法理解如何为每个点赋予颜色。
多维数据集示例的相关部分是:
我怎样才能给每个 Verts 一种颜色?
matlab - Matlab中pdist的正确使用
我有一个点云,我想计算 Matlab 中所有单个点之间的距离(最好没有重复)。
带有坐标的矩阵格式为:points [ p x n x d ]
. 其中p = 1
(目前),n 与点数一样大,d 与维数一样大(在本例中为 3)。
这是我拥有的数据:
points(:,:,1) = 1 2 3
points(:,:,2) = 4 5 6
points(:,:,3) = 7 8 9
所以我在三个维度上有三个点。现在使用 pdist,我尝试使用 and 计算每个点之间的欧几里得距离distances = pdist(points(:,1:3));
,distances = pdist(X(:,:,1:3));
但两者都只返回一个空矩阵。
有谁知道如何使用pdist
来计算这些距离?它应该返回 3 个距离,而不是 0,但我一定做错了什么。
顺便提一句。这个问题是对这个问题的跟进。起初我在评论中问过它,但认为它值得一个新问题,因为它是对原始问题的相当大的扩展。
algorithm - 有哪些算法可以找到一组点的边界表面?
假设您有一个点云,并且您想要一个包裹这些点的曲面以将它们全部包围,并将它们包裹得相当紧密,以便它与云中的外部点相交 - 您如何生成这个包裹曲面?也就是说,一些或许多点可能在体积内部,因此表面不需要与它们相交,只需将它们包围起来,但表面应该非常适合“外部”点层。
(我知道用于拟合网格的三角测量算法(例如 Delaunay) - 我认为 - 一组中的所有点,但我认为该算法不会起作用,除非有一种很好的方法可以丢弃除外壳之外的所有点点数。请随时指出我在这里也缺少的方法!)
我应该寻找什么算法(甚至搜索“网格”、“拟合”、“包装”、“点云”等之外的关键字)?
processing - 使用 Kinect 的 simpleopenni 点云程序
我正在尝试使用处理来获取点云。但事实证明它不起作用
visual-studio-2010 - 使用 IterativeClosestPoint 的 PCL 刚性变换 - 错误:向量擦除迭代器超出范围
我目前正在尝试计算两个点集之间的刚性变换,因此我尝试使用 pointclouds.org 上的教程给出的代码:
对于我的情况,我只将随机生成数据的部分更改为加载我要分析的点数据的部分。其他一切都与教程中的完全一样......(我还尝试使用随机数据准确测试教程代码,以防我在读取输入数据时出错)
由于我使用 Qt,我将 PCL 库、Eigen 库和 FLANN 库集成到我的项目中。它找到所有头文件并成功地用 MSVC 2008 编译...
不幸的是,我总是在
说:
调试断言失败!程序:... MSVC2008 _Qt_SDK_Release\release\Project.exe 文件:c:\Program Files\Microsoft VIsual Studio 10.0\CV\include\vector 行:1200
表达式:向量擦除迭代器超出范围
[..] ...检查文档... [..]
有人知道那是什么意思吗?输入云都具有相同的大小并具有填充值。
如果有任何帮助,我将不胜感激!
更新 1:
错误消息显示了 MSVC 2010 (10.0) 的一些文件路径......所以我尝试卸载 Visual Studio 2010,因为我真的不需要它。但是,如果我在调试模式下编译,它会向我显示一条错误消息,但是Expression: vector iterators incompatible
...如果我现在在发布模式下运行它,它只会在运行时崩溃(在同一行),但没有显示错误信息。
c++ - 改进我的四叉树设计?
我有一个应用程序,用于显示和修改来自激光雷达文件的大量点云数据(每个文件最多几个 GB,有时同时加载)。在应用程序中,用户可以查看加载点的 2D 图像(从顶部)并选择要在另一个窗口中查看的配置文件(从侧面)。这再次涉及数百万个点,它们使用 OpenGL 显示。
为了处理数据,还有一个四叉树库,它可以工作,但速度极慢。它已经使用了一段时间,但最近激光雷达点格式发生了变化,并且 LidarPoint 对象需要添加许多属性(类成员),这导致它的大小增加,进而影响性能到几乎无法使用的水平(想想 5 分钟加载单个 2GB 文件)。
四叉树目前由指向 PointBucket 对象的指针组成,这些对象只是具有指定容量和定义边界(用于空间查询)的 LidarPoint 对象数组。如果超过桶容量,它将分成四个桶。还有一种缓存系统,当点数据占用过多内存时,它会导致点桶被转储到磁盘。如果需要,然后将它们加载回内存。最后,每个 PointBucket 都包含子桶/分辨率级别,它们保存原始数据的每个第 n 个点,并在根据缩放级别显示数据时使用。这是因为一次显示几百万个点,虽然没有必要那么详细,但速度非常慢。
我希望你能从中得到一张照片。如果没有,请询问,我可以提供更多详细信息或上传更多代码。例如,这里是当前(和慢速)插入方法:
现在我的问题是,您是否可以想办法改进这个设计?在处理大量无法放入内存的数据时,有哪些通用策略?如何使四叉树更有效率?有没有办法加快点的渲染?
c++ - 在磁盘上存储未使用的类数据成员
我有一个 GUI 应用程序,它使用点云数据和它背后的四叉树数据结构来处理数据。由于我使用的点格式最近发生了变化,我不得不修改我的点类以保存新属性,这导致点对象的大小显着增长,实际上降低了四叉树的性能。其中一些属性对于显示和处理数据是不需要的,但它们仍然需要保留在输出中。这大致是我的点课目前的样子:
当从文件中加载数据时,Points 存储在 Point* 数组中,然后由四叉树处理。同样,当它们被保存时,从四叉树传递一个点数组并保存到文件中。请注意,我在四叉树中使用的 Point 对象与存储在文件中的对象不同,但我使用的库提供了用于创建点的读取器和写入器对象。这是一个例子:
现在,我的想法是减小 Point 类的大小,并将未使用的属性存储在硬盘上另一个名为 PointData 的类(或结构)中。这是必要的,因为数据通常不适合内存,并且有一个缓存系统,这将再次受益于较小的点对象。所以给出这个例子,它看起来像这样:
然后,当我保存修改的点时,我只需使用 dataHandle(文件偏移量?内存映射数组中的索引?)来检索每个点的 pointData 并将其写回文件。
这听起来是个好主意吗?实现这一目标的最明智的方法是什么?