在c ++(vs2008)中使用openGl在3d点云显示上需要一些指导.我正在尝试用纹理做一个3d点云显示.我有3个2D阵列(每个相同大小1024x512)代表每个点的x,y,z.我想我正走在正确的轨道上
glBegin(GL_POINTS);
for(int i=0; i<1024; i++)
{
for(int j=0; j<512; j++)
{
glVertex3f(x[i][j], y[i][j], z[i][j]);
}
}
}
glEnd();
Run Code Online (Sandbox Code Playgroud)
现在这将加载缓冲区中的所有顶点(我认为),但从这里我不知道如何继续.或者我在这里完全错了.
然后我有另一个2D数组(相同大小),包含我想在3D点云和显示器上用作纹理的颜色数据(0-255的值).
我们如何在Leap Motion API中访问点云?导致我购买它的一个功能是他们的促销视频中的点云演示,但我似乎找不到有关它的文档,论坛上的用户回复似乎好坏参半.我只是错过了一些东西吗?
我希望将Leap Motion用作一种廉价的3D扫描仪.
我有一个包含人脸3D点云的.PLY文件:我想绘制它并用Python可视化它.
我的.PLY文件只包含顶点和非面.
你能否指出我一个简单的Python库,它将负责绘制3D点云,以便我可以想象它?
重要的是要注意我对绘制MESH不感兴趣,而只是POINT CLOUD.
任何帮助将非常感激.
我对Bouncing Bubble算法感兴趣,找到一组点的近似最小包围球.
我理解这个基本概念:" 每次发现球外的一个点时,球都会向它移动并同时增加半径.每一步的增长都是为了不超过最佳半径而设计的,因此,半径越来越接近最佳状态. "

然而,我无法在网上找到任何更具体的信息.如何计算增长?转向新点的距离有多远?
我正在寻找一个示例实现或足够的信息来实现我自己的解决方案.
我刚刚开始使用伟大的点云库,并希望在一个观察者中显示两个点云,但每个点都有不同的颜色.
当我使用一个点云对象(指针?!)时,它工作正常,但如果我想添加第二个,只有第二个将显示在查看器中.
我正在使用pcl 1.6版,并且在本教程中非常类似.
也许你们有一个建议.
相关的代码段如下.提前致谢!!!
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer_two_clouds (new pcl::visualization::PCLVisualizer("3D Viewer"));
viewer_two_clouds->setBackgroundColor(0,0,0);
// cloud: green / cloud2: red
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZRGB> single_color1 (cloud, 0, 255, 0);
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZRGB> single_color2 (cloud2, 255, 0, 0);
//add both
viewer_two_clouds->addPointCloud<pcl::PointXYZRGB> (cloud, single_color1, "sample_cloud_1");
viewer_two_clouds->addPointCloud<pcl::PointXYZRGB> (cloud2, single_color2, "sample_cloud_2");
// set coordinateSystem and init camera
viewer_two_clouds->addCoordinateSystem(1.0);
viewer_two_clouds->initCameraParameters();
while(!viewer_two_clouds->wasStopped())
{
viewer_two_clouds->spinOnce();
boost::this_thread::sleep (boost::posix_time::microseconds(100000));
}
viewer_two_clouds->close();
Run Code Online (Sandbox Code Playgroud) 给定3D点云,如何找到包含给定百分点的最小边界球?
即如果我有一个带有一些噪声的点云,并且我想忽略5%的异常值,如果我不知道哪些点是异常值,我怎么能得到包含95%剩余点的最小球体?
示例:我想找到绿色球体,而不是红色球体:
我正在寻找一个相当快速和简单的算法.它不必找到最优解,合理的近似也很好.
我知道如何计算100%点的近似边界球,例如使用Ritter算法.
如何将此推广到找到包含x%点的最小球体的算法?
我正在尝试找到合适的算法来搜索较大集合中的2D点的子集.一张图片胜过千言万语,所以:

有关如何实现这一目标的任何想法?请注意,转换只是旋转和缩放.
似乎最紧密的问题是点集注册 [1].我正在试验CPD和其他刚性和非刚性算法的实现,但是它们在更大的点集中寻找小子集似乎表现不太好.
另一种方法可能是使用星跟踪算法,如[2]中提到的Angle方法或更强大的方法,如[3].但同样,它们似乎都适用于大型输入集和目标集.我正在寻找不太可靠但更简约的东西......
谢谢你的任何想法!
[1]:http://en.wikipedia.org/wiki/Point_set_registration
我想阅读斯坦福兔子的未重建数据.点数据存储为多个范围图像,必须将其转换为组合成一个大点云,如README中所写:
These data files were obtained with a Cyberware 3030MS optical
triangulation scanner. They are stored as range images in the "ply"
format. The ".conf" file contains the transformations required to
bring each range image into a single coordinate system.
Run Code Online (Sandbox Code Playgroud)
这是.conf文件:
camera -0.0172 -0.0936 -0.734 -0.0461723 0.970603 -0.235889 0.0124573
bmesh bun000.ply 0 0 0 0 0 0 1
bmesh bun045.ply -0.0520211 -0.000383981 -0.0109223 0.00548449 -0.294635 -0.0038555 0.955586
bmesh bun090.ply 2.20761e-05 -3.34606e-05 -7.20881e-05 0.000335889 -0.708202 …Run Code Online (Sandbox Code Playgroud) 我有一堆2D点.你可以在左边的图片上看到它们.它们形成一些带有几个兔子耳朵的戒指.我的目标是找到大的内循环/椭圆,你可以在右侧看到.
什么样的算法对这种情况有用.
我尝试了RANSAC算法的一种变体(取5个随机点,形成一个椭圆,确定一个分数并重复).我以某种方式设计了评分函数,椭圆内部的点得到了很多负点,并且在外面指向,但非常接近得到很多积极点.但结果并不乐观.算法找到了环,但我得到了一些环的随机椭圆,而不是我想要的大内椭圆.
那里有什么好的策略吗?
algorithm geometry point computational-geometry point-clouds
point-clouds ×10
3d ×5
algorithm ×4
c++ ×3
geometry ×3
boost ×1
leap-motion ×1
opengl ×1
ply ×1
point ×1
python ×1
quaternions ×1