问题标签 [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.
c++ - 删除点 C++
我在点云中有 N 个点(x_N,y_N,z_N)。点云形成球形物体的形状。我的问题是我的云中有一些点沿 z 轴明显突出(这是由于在扫描期间将针对象插入我的对象中)。我想删除这些点。
我采用的一种方法是找到我的云中一组点与下一组点相比的斜率变化。(例如,我取前 10 个点,计算斜率变化并将其与接下来 10 个点的斜率变化进行比较)。但这不是很好。有什么建议么?
任何帮助将不胜感激。对我的问题有任何困惑,请告诉我。
matlab - 点云生成
- 我有一个 3-D 几何形状,我必须将其转换为点云。
- 由此产生的点云可以被认为等同于从对象的激光扫描输出的点云。
- 不需要网格生成
- 生成的点可能是均匀分布的,也可能只是随机分布的——没关系
- 可以以 3-D 数学公式的形式提供 3-D 形状
- 这必须使用 MATLAB 完成
c++ - 计算点云中每个点的法线?
我有一系列形成点云的点。我需要计算每个点的法线向量,并从该点向法线向量的方向投射一条光线。在这种情况下,我需要使用什么类型的公式来计算法线向量?
编辑* 我有一系列点(x,y,z)形成一个点云(称为 A),形成一个半球的形状。我还有另一个点云(称为 B),我将其拟合到一个表面,形成另一个半球体,该半球适合 A 内部。我想测量这些表面彼此相距多远的长度,所以我的计划就是从 A 中的每个点投射一条射线到曲面 B 并测量到该点的交点。我希望这个解释能让我的问题更清楚。
感谢您的帮助!
oop - 在 PointT 和 PointXYZ 之间转换
我已经编译并运行了这个 https://github.com/otherlab/pcl/blob/master/apps/src/openni_ii_normal_estimation.cpp
但是,我现在希望能够访问有关法线和 x、y、z 点的基础原始信息。但是,我似乎无法从 CloudConstPtr(即 pcl::PointCloud::ConstPtr)中提取原始信息(例如 x、y、z 位置)。
我尝试转换为模板类型 PointXYZ 的新 PointCloud 对象,但这无效。有人可以演示如何提取 xyz 信息吗?这应该很容易。
c# - 在 C# 中点云到表面
我正在寻找一种快速且相对简单的(这意味着我真的不想自己编写所有代码......)解决方案来将点云转换为 C#(或 OpenCL)中的表面。使用某种程序是不可能的。
我已经在网上搜索了很多,但在 C# 或 OpenCL 中找不到好的解决方案。到目前为止我发现的最好的方法是 PCL,它是 C++。我还找到了关于表面重建的可并行算法的论文,但我想避免在没有真正理解它的作用的情况下实现其中一种算法(即使这样,也希望有一种更简单的方法)。
谁能提示我正确的方向,或者更好的是,给我一些关于我可以使用什么的建议?
到目前为止,我尝试搜索:表面重建算法、点云到等值面到 OpenCL 中的行进立方体、并行表面重建算法……我错过了什么吗?
在此先感谢您的帮助。
c++ - Ros 动态配置文件
我正在尝试使用 PCL/ROS 执行分段任务。我正在使用 ROS 中的动态配置选项,因为我的分割任务的输入数量很大,并且想研究每个param
. 我的 C++ 源代码没有问题,但是当我尝试运行启动文件时,我的文件发布者无法找到 PCD 文件。
但是当我运行启动文件时,我收到以下错误:
任何帮助将不胜感激。
vector - 使用 PCA 查找 3d 点云的边界框
我正在尝试使用 PCA 找到 3d 点云的边界框。我正在使用 JAMA“Java Matrix Package”来执行 SVD。
我从我的点云中抽取 1000 个样本并执行 SVD:
我正在从结果中提取 3 个 PCA 向量并添加它们的负数:
双[] vector1 = {svd.getU().get(0, 0), svd.getU().get(1, 0), svd.getU().get(2, 0)}; 双[] vector1N = Vec.Mult(vector1, -1); double[] vector2 = {svd.getU().get(0, 1), svd.getU().get(1, 1), svd.getU().get(2, 1)}; double[] vector2N = Vec.Mult(vector2, -1); double[] vector3 = {svd.getU().get(0, 2), svd.getU().get(1, 2), svd.getU().get(2, 2)}; 双[] vector3N = Vec.Mult(vector3, -1);
我正在根据数据维度放大每个向量(遍历 1000 个点中的每一个并检查最大的投影是什么):
vector1 = Vec.projectData(vector1, nThPoints);
/li>
现在,我有 6 个新向量,我需要以某种方式计算 8 个角(同时记住样本中心),我只是不知道该怎么做。
我怎样才能做到这一点?
java - 考虑每个点的大小和距离,将点云保存为图像
考虑到每个点的大小和距离,我想将整个点云保存为图像。我将图像的像素表示为一维数组,表示像素及其 RGB 值。
现在,为了打印一个点,我所做的如下:
我想考虑每个点的大小以及它们与屏幕的距离。
例如,让每个点的大小为 3。所以每个点应该被渲染为一个 3x3 的正方形。但是,一个点与屏幕的距离为 1,而另一点与屏幕的距离为 1.7。较远的点应显示为比较近的点更小的点。另外,点之间的空间也应该考虑到大小的差异。
point-clouds - 以层格式向顶点添加颜色
我有一个 3D 点云,每个点云都有不同的颜色/值属性附加到 XYZ 点的每个顶点。
原始数据是简单的 .txt / csv 格式的列,即 x、y、z、V1、V2、V3 以及我尝试使用 .ply 制作图像的下一点的新行。我想创建一个 3D 图像,例如:
.
根据这些值中的每一个为每个表面或顶点着色的层格式的适当代码是什么?我想创建多个具有相同形状但将不同颜色映射到表面的贴图。
c++ - 使用迭代最近点 (ICP) 时如何在点云库 (PCL) 中标记 NULL 数据
我正在尝试使用集成在点云库(PCL)中的迭代最近点(ICP) 算法来对齐 2 组点云。我收到一个错误报告,说它找不到足够的对应点。我已经放宽了参数的条件:setEuclideanFitnessEpsilon(-1.797e+5)、setMaximumIterations(40) 和 setRANSACIterations(2000) 并且仍然有同样的问题..(我还没有找到很多关于这些条件值应该使用哪些或如何使用的信息是为了适当的对齐,所以在这方面的任何帮助也将不胜感激)
我怀疑这个问题与我的云中有许多 NULL 数据点有关,我用值 NULL (0) 标记了这些数据点。使用 PCL 时是否正确完成?PCL 是否有任何 NULL 标准值?我显然不希望算法在尝试对齐数据集时考虑那些 NULL 点。
谢谢你的帮助