首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对齐网格上的点云

对齐网格上的点云
EN

Stack Overflow用户
提问于 2014-06-06 09:55:12
回答 2查看 2.1K关注 0票数 0

我必须测量两个云的对应点的Z距离。我打算迭代一个云,并使用另一个云的相同X和Y计算Z坐标之间的距离。不幸的是,它不起作用,因为在第二个云中从来没有在这些X坐标处有一个点。我目前的解决办法是在第二个云中为第一个云的X搜索最近的点。它起作用了,但速度很慢。

是否有一种方法来对齐X和Y坐标点在定义的网格使用PCL?这样,我希望way合作伙伴能更好地匹配。

编辑 Ok,这里有一些图片和更多的解释。

顶视图

侧视

有马鞍和马背的扫描。两者都是独立的,但在Z轴中对齐,两者的Z轴都是平行的.我想要创建一个层的模型,它正好适合马鞍下(而不仅仅是一个转角垫)。

因此,给定层的厚度,我想迭代马鞍点,并找到与马背上相应点的Z距离。由于Y坐标是浮动的,在马匹上几乎从来没有一个点与马鞍上的XY相同。

我认为。如果我能用给定的密度对齐所有的点,那么马上就会有一个对应的XY点,在它上面的每一个马鞍点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-06 21:03:27

我已经实现了一个概念的证明,并想要分享它。但是,我希望有一个“适当的”解决方案-- PCL函数。

代码语言:javascript
复制
bool alignToGrid( pcl::PointCloud<pcl::PointXYZRGBNormal>::Ptr cloud, QMap<QString, float > & grid, int density )
{
    pcl::PointXYZRGBNormal p1;
    p1.r=0;
    p1.g=0;
    p1.b=255;
    QMap<QString, QList<float> > tmpGridMap;
    for( std::vector<pcl::PointXYZRGBNormal, Eigen::aligned_allocator<pcl::PointXYZRGBNormal> >::iterator it1 = cloud->points.begin();
         it1 != cloud->points.end(); it1++ )
    {
        p1.x = it1->x;
        p1.y = it1->y;
        p1.z = it1->z;
        int gridx = p1.x*density;
        int gridy = p1.y*density;
        QString pos = QString("%1x%2").arg(gridx).arg(gridy);
        tmpGridMap[pos].append(p1.z);
    }

    for (QMap<QString, QList<float> >::iterator it =  tmpGridMap.begin(); it!=tmpGridMap.end(); ++it)
    {
        float meanZ=0;

        foreach( float f, it.value() )
        {
            meanZ+=f;
        }
        meanZ /= it.value().size();


        grid[it.key()] = meanZ;
    }
    return true;
}

其思想是在云中迭代,只留下/创建点,XY坐标位于定义的网格上。密度为1000的Kinect云导致约1毫米网格。网格点周围的所有点都用于建立Z-平均值.云层仍未被改变。输出是XY位置到Z的映射。XY位置存储在字符串中(我知道)为x。使用这个映射,很容易在其他网格对齐云中找到对应的XY点。

现在我可以用任何密度绘制我的云图了。在图像中,例如1毫米和1厘米。

票数 0
EN

Stack Overflow用户

发布于 2014-06-07 12:08:15

我不太确定这是否是你的意思,但也许你所说的“网格”可能就是图像平面?因此,与使用3D点云不同,您可以获取深度映射/深度图像,并在相同的图像坐标下比较两个深度映射的值。这将假定录音已经对齐。

如果只有点云数据,就必须在飞机上执行投影(为此,您必须了解摄像机的本质)。

另一种选择可能是使用注册方法(例如ICP)对齐云。然后,您也可以得到距离之和对应的云点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24079024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档