问题标签 [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.

0 投票
1 回答
6822 浏览

c++ - 从x,y,z 2d数组中渲染opengl 3d点云

需要在 c++ (vs2008) 中使用 openGl 进行 3d 点云显示的一些指导。我正在尝试使用纹理进行 3d 点云显示。我有 3 个二维数组(每个相同大小 1024x512)代表每个点的 x、y、z。我认为我在正确的轨道上

现在这会加载缓冲区中的所有顶点(我认为)但是从这里我不知道如何继续。或者我在这里完全了。

然后我有另一个 2D 数组(相同大小),其中包含我想用作 3D 点云上的纹理和显示的颜色数据(值从 0 到 255)。

0 投票
1 回答
4037 浏览

kinect - PCL 创建 pcd 云

这是我到目前为止所拥有的,我想从中保存 pcd 文件我知道我必须做这样的事情,但不完全确定 pcl::PointCloud::PointPointXYZRGBA> cloud; pcl::io:;savePCDFileASCII("test.pcd",cloud);

我必须在我当前的代码中添加什么 test.pcd 谢谢

0 投票
1 回答
1131 浏览

point-clouds - 3D 到 2D 匹配

我有显示这些对象的对象和图像的点云(每个点都有一种颜色)。我想在 2D/3D 中找到兴趣点并匹配它们,这样我就知道在点云中找到了我的图像的哪些部分(至少是那些有兴趣点的部分)。

所以我需要首先找到兴趣点,获取它们的描述符并匹配它们。如果可能的话,这应该适用于 OpenCV 的当前快速和节省内存的算法,如 BRISK 或 ORB(没有专利算法!)。但我不知道如何为 3D 实现它们。这甚至可能吗?我找到了一篇论文(Hough Transform and 3D SURF for robust 三维分类),其中谈到了 SURF 的 3D 扩展,这将是一个开始,但我找不到任何关于该 3D 扩展的信息。即便如此,问题是对于 BRISK 或其他当前算法来说,这样的扩展有多可行。

所以,请给我关于如何进行的建议。

0 投票
2 回答
1144 浏览

c++ - Culling obstructed points in a point cloud

I have a 3d point cloud image (see below).

And I would like to cull all the points which are theoretically behind other points (e.g points around the back of the person will not be visible since it's obstructed by the points around the chest and abdomen).

How do I go and solve this problem ?

All I need are just points which are not obstructed from frontal view, so that I can use it to for other purposes.

Edit: It's not really for viewing purposes. I am trying to isolate only the unobstructed vertices to calculate surface normal later on in order to extract depth image features.

enter image description here

0 投票
1 回答
2560 浏览

c++ - 从 C++ 文件写入数据(点云库)

我正在使用点云库获取深度图,然后每秒左右将 PCD 文件写入内存,以便其他程序可以获取它。

我让程序使用可视化器正确渲染深度图,除了实际写入文件的一行外,它都可以正常工作。

这是我的代码:

这是我在尝试 cmake 文件时遇到的错误:

0 投票
2 回答
1161 浏览

computer-vision - PCLVisualizer 未保持打开状态

我有以下代码来估计和显示点云中点的法线向量:

但是,当我运行它时,PCLVisualizer 在屏幕上闪烁,然后程序终止。我不知道为什么它不留下来。如果我只使用 CloudViewer 来显示点云(而不是法线),那么它可以正常工作并保留在屏幕上。

0 投票
1 回答
2173 浏览

c++ - 如何判断点云所在的单位?

我正在使用从 Kinect 图像创建的点云文件数据集。有没有办法知道轴的单位是什么,即一个点(0.003, 0.004, 0.04)是米、厘米等?

我正在尝试使用setRadiusSearchpcl 中的方法从局部补丁估计表面法线,但这允许我们以米为单位指定半径,所以我需要知道点云的单位。

0 投票
2 回答
13881 浏览

c++ - 如何围绕轴旋转点云?

我有一个深度图像的点云,它是用相机在水平上方 30 度(在 z 轴上旋转 30 度)拍摄的。我想将所有点转换回它们的位置,就好像相机处于 0 度一样,我相信我可以使用以下旋转矩阵来做到这一点:

但是,当查看转换点云的 pcl 方法时,我发现了这一点:

但是为什么它是一个 4x4 矩阵而不是上面的 3x3 旋转矩阵呢?

0 投票
1 回答
5793 浏览

c++ - 将 PCL XYZ 云转换为 XY(3D 到 2D)

环境

我有一个 PCL 类型的点云PointXYZ。我需要将它转换为 type 的网格图vector<vector<bool> >map[x][y]如果至少有一个点它应该是真的。地图应该代表点云的某个区域(比如 20x30 个单元格,覆盖 x=[-10,10],y=[-15,15] 的点云维度。

我现在拥有的

目前我有两种方法:

  1. 扫描所有点并将地图中的相应单元格设置为true。
  2. 将点投影到平面,创建一个 Kd-Tree,然后为地图中的每个单元格查询树中最近的点,如果它落入单元格中,则将单元格设置为 true。

现在,第一种方法适用于小点云:O(n),其中 n 是点云中的点数。

我认为第二种方法适用于大型云。最终查询只有 O(m),其中 m 是地图的大小。但是,构建 Kd 树和将云投影到平面上都应该是 O(n) 左右。

我认为第二种方法总是更糟,但我会进行测试看看。

问题

有没有更好的方法?也许有八叉树或体素网格(二维)?方法一的问题是,我不必要地查看感兴趣区域之外的点。

在我看来,我不可能是第一个遇到这个问题的人,对吧?

0 投票
1 回答
238 浏览

opengl - 使用 CUDA 和 OpenGL 的动画点半径

我正在尝试使用 OpenGL 和 CUDA 实现点云,其中点的半径将根据与它们相关的一些数据随时间变化。

由于我对 OpenGL 和 CUDA 完全陌生,因此我很难实现这一目标。在学习了 OpenGL、GLSL 和 CUDA 的基础知识之后,我完全不知道程序的哪些部分应该如何实现。

我的想法如下:

  • 使用带有顶点位置的 VBO
  • 使用具有顶点半径的 VBO
  • 使用具有顶点不确定性的 VBO。基于此数据,顶点的半径应以动画方式变化
  • 每帧计算 CUDA 内核中所有顶点的半径
  • 调用 glDrawArrays 渲染所有点并使用顶点着色器,它从数组中获取所有数据作为输入

首先......为此目的一起使用CUDA和GLSL着色器是否合理?由于我已经阅读了一些有关使用其中一个或另一个的内容,因此我不确定。

第二个问题是,程序的哪些部分将在 CPU 上执行,哪些在 GPU 上执行?在内核中计算数据然后将其传递回OpenGL显示函数进行渲染是否有意义?