我需要找到两个三维点云之间的变换和旋转差异.为此,我正在寻找PCL,因为它看起来很理想.
关于干净的测试数据我有迭代最近点工作,但给出了奇怪的结果(虽然我可能已经错误地实现了...)我有pcl::estimateRigidTransformation
工作,看起来更好,虽然我认为会更糟糕的数据噪音.
我的问题是:
这两个云会很吵,虽然它们应该包含相同的点,但会有一些差异.处理这个问题的最佳方法是什么?
我应该在两个云中找到相应的功能开始然后使用estimateTransform
吗?或者我应该看一个RANSAC
删除异常值的函数?是ICP
一个更好的方式去estimateRigidTransform
?
我试图改变粒子的不透明度作为它们与平面的距离的函数.
这个问题描述了我的问题,一年前的答案基本上是"你不能".不透明度显然是材料的参数,而不是元素,因此单个粒子的不透明度是不可能的.
有什么改变,有什么办法可以实现吗?如果单个粒子着色是可能的,我想这不是遥不可及的.
干杯
有没有可以实时进行点云网格划分的软件包/软件?
用于表示3D点云的数据结构是什么?
我正在使用MayaVi Python库来绘制3d点,使用points3d
该类.文档指定通过第四个参数指定每个点的颜色s
:
此外,您可以传递与x,y和z相同形状的第四个数组s,为每个点提供关联的标量值,或者返回标量值的函数f(x,y,z).此标量值可用于调整点的颜色和大小.
这指定了每个点的标量值,将点映射到颜色映射,例如copper
,jet
或hsv
.例如,从他们的文件:
import numpy
from mayavi.mlab import *
def test_points3d():
t = numpy.linspace(0, 4*numpy.pi, 20)
cos = numpy.cos
sin = numpy.sin
x = sin(2*t)
y = cos(t)
z = cos(2*t)
s = 2+sin(t)
return points3d(x, y, z, s, colormap="copper", scale_factor=.25)
Run Code Online (Sandbox Code Playgroud)
得到:
相反,我想将每个点的实际值指定为(r,g,b)元组.这可能在MayaVi中吗?我已经尝试用s
一个元组数组替换,但是会抛出一个错误.
我正在尝试从网格中生成点云数据,例如Maya的(.obj)文件.但是,我只能找到相反的情况,在互联网上点云点.有没有办法使用MeshLab或Maya等3D工具创建"网格点云数据"?(我更喜欢使用MeshLab)
谢谢.:)
我正在处理点云,即点的向量,作为计算的结果,其包含重复点(高达云的大小的10%).
我的实现是根据x,y和z值对这些点进行排序,然后使用该std::unique
函数.然而,生成的云仍然包含重复项,即使排序本身似乎有效.
这是至关重要的代码
bool comparePoint(pcl::PointXYZINormal p1, pcl::PointXYZINormal p2){
if (p1.x != p2.x)
return p1.x > p2.x;
else if (p1.y != p2.y)
return p1.y > p2.y;
else
return p1.z > p2.z;
}
bool equalPoint(pcl::PointXYZINormal p1, pcl::PointXYZINormal p2){
if (p1.x == p2.x && p1.y == p2.y && p1.z == p2.z)
return true;
return false;
}
void KDsearch::cullDuplePoints(){
std::sort(points.begin(), points.end(), comparePoint);
std::unique(points.begin(), points.end(), equalPoint);
}
Run Code Online (Sandbox Code Playgroud)
这里是输出pointcloud(x,y和z坐标)的部分提取:
1.96828 -535.09515 2794.8391
1.96627 -636.95264 2914.0366
1.96627 -636.95264 2914.0366
1.9651 108.77433 2350.9841
1.9651 108.77433 2350.9841 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用PCL CloudViewer 可视化点云.问题是,我是很新的C++,我发现两个教程第一示范点云的创建和第二示范一个点云的可视化.但是,我无法将这两个教程结合起来.
这就是我的意思:
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/cloud_viewer.h>
int main (int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ> cloud;
// Fill in the cloud data
cloud.width = 5;
cloud.height = 1;
cloud.is_dense = false;
cloud.points.resize (cloud.width * cloud.height);
for (size_t i = 0; i < cloud.points.size (); ++i)
{
cloud.points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
cloud.points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
cloud.points[i].z = 1024 * …
Run Code Online (Sandbox Code Playgroud) 有组织的点云和无组织点云之间有什么区别?
我是否正确地认为点云是[x,y,z]值的一列?如果有组织或无组织的点云的结构有什么不同呢?
它如何影响后续处理步骤,如过滤,正常估计,注册等?
谢谢,赛
是否有针对点云的XYZ格式的官方规范?
我一直在寻找,我没有找到它.我已经看到有一些文件包含哪些行:
点坐标,(每个点的XYZ)
其他包含坐标和颜色,(每个点的XYZRGB)
甚至有其他人都有"强度"参数.
我需要考虑所有的可能性.