点云技术相关产学研社区

 找回密码
 立即注册加入PCL中国点云技术相关产学研社区

扫一扫,访问微社区

查看: 7234|回复: 14

泊松重建

[复制链接]
发表于 2015-5-13 13:56:49 | 显示全部楼层 |阅读模式
三角化的表面重建方法效果不好,泊松重建的程序哪里可以找到
回复

使用道具 举报

发表于 2015-5-21 10:12:48 | 显示全部楼层
http://www.pointclouds.org/assets/icra2012/surface.pdf
可以看看这个,我是按照这个做的:)
回复 支持 反对

使用道具 举报

发表于 2015-5-21 14:42:36 | 显示全部楼层
ylongzh 发表于 2015-5-21 10:12
http://www.pointclouds.org/assets/icra2012/surface.pdf
可以看看这个,我是按照这个做的 ...

亲,有现成的.cpp文件没,我试了上面的不行啊
回复 支持 反对

使用道具 举报

发表于 2015-5-26 09:55:14 | 显示全部楼层
luwang 发表于 2015-5-21 14:42
亲,有现成的.cpp文件没,我试了上面的不行啊

怎么不行呢,是报错还是出什么问题?
回复 支持 反对

使用道具 举报

发表于 2015-5-26 10:00:55 | 显示全部楼层
luwang 发表于 2015-5-21 14:42
亲,有现成的.cpp文件没,我试了上面的不行啊

整个slides的最后就是一个现成的cpp
回复 支持 反对

使用道具 举报

发表于 2015-5-26 16:31:19 | 显示全部楼层
ylongzh 发表于 2015-5-26 10:00
整个slides的最后就是一个现成的cpp

就是这个吧
#include <pcl/common/common.h>
#include <pcl/io/pcd_io.h>
#include <pcl/features/normal_3d_omp.h>
#include <pcl/surface/mls.h>
#include <pcl/surface/poisson.h>
#include <pcl/io/vtk_io.h>
using namespace pcl;

int
main (int argc, char **argv)
{
if (argc != 3)
{
PCL_ERROR ("Syntax: %s input.pcd output.ply\n", argv[0]);
return -1;
}

PointCloud<PointXYZ>::Ptr cloud (new PointCloud<PointXYZ> ());
io::loadPCDFile (argv[1], *cloud);
MovingLeastSquares<PointXYZ, PointXYZ> mls;
mls.setInputCloud (cloud);
mls.setSearchRadius (0.01);
mls.setPolynomialFit (true);
mls.setPolynomialOrder (2);
mls.setUpsamplingMethod (MovingLeastSquares<PointXYZ, PointXYZ>::SAMPLE_LOCAL_PLANE);
mls.setUpsamplingRadius (0.005);
mls.setUpsamplingStepSize (0.003);
PointCloud<PointXYZ>::Ptr cloud_smoothed (new PointCloud<PointXYZ> ());
mls.process (*cloud_smoothed);
NormalEstimationOMP<PointXYZ, Normal> ne;
ne.setNumberOfThreads (8);
ne.setInputCloud (cloud_smoothed);
ne.setRadiusSearch (0.01);
Eigen::Vector4f centroid;
compute3DCentroid (*cloud_smoothed, centroid);
ne.setViewPoint (centroid[0], centroid[1], centroid[2]);
PointCloud<Normal>::Ptr cloud_normals (new PointCloud<Normal> ());
ne.compute (*cloud_normals);

for (size_t i = 0; i < cloud_normals->size (); ++i)
{
cloud_normals->points.normal_x *= -1;
cloud_normals->points.normal_y *= -1;
cloud_normals->points.normal_z *= -1;
}

PointCloud<PointNormal>::Ptr cloud_smoothed_normals (new PointCloud<PointNormal> ());
concatenateFields (*cloud_smoothed, *cloud_normals, *cloud_smoothed_normals);
Poisson<PointNormal> poisson;
poisson.setDepth (9);
poisson.setInputCloud (cloud_smoothed_normals);
PolygonMesh mesh;
poisson.reconstruct (mesh);
io::saveVTKFile (argv[2], mesh);
return 0;
}
我这个显示无法找到程序,系统找不到指定文件,此外,io::loadPCDFile (argv[1], *cloud);
这个arv[1]就是pcd文件名字吗?好像有点怪啊,谢谢你啦!
回复 支持 反对

使用道具 举报

发表于 2015-5-26 16:36:07 | 显示全部楼层
ylongzh 发表于 2015-5-26 10:00
整个slides的最后就是一个现成的cpp

还有一个问题,就是现在用的贪婪投影算法,泊松算法可以对含颜色信息的点云重建吗?能不能得到彩色的三角化结果(现在显示的 都是白色的)显示出来?万分感谢!
回复 支持 反对

使用道具 举报

发表于 2015-5-27 09:58:27 | 显示全部楼层
luwang 发表于 2015-5-26 16:31
就是这个吧
#include
#include

1、你要先给argv[1]赋上你要处理的pcd文件名,系统才能找到。或者你直接写成io::loadPCDFile<pcl::PointXYZ> ("room_scan1.pcd", *cloud)这样的格式也可以,把pcd文件要放在你程序的运行目录下面。

2、泊松重建我还不确定能不能把RGB信息加进去,等我试试看再回复你吧
回复 支持 反对

使用道具 举报

发表于 2015-5-27 09:59:32 | 显示全部楼层
luwang 发表于 2015-5-26 16:36
还有一个问题,就是现在用的贪婪投影算法,泊松算法可以对含颜色信息的点云重建吗?能不能得到彩色的三角 ...

io::loadPCDFile ("room_scan1.pcd", *target_cloud)
回复 支持 反对

使用道具 举报

发表于 2015-5-27 21:42:53 | 显示全部楼层
ylongzh 发表于 2015-5-27 09:58
1、你要先给argv[1]赋上你要处理的pcd文件名,系统才能找到。或者你直接写成io::loadPCDFile ("room_scan ...

好的,要是RGB加进去了就和我说下啊 ,太感谢你了
回复 支持 反对

使用道具 举报

本版积分规则

QQ|小黑屋|点云技术相关产学研社区 ( 陕ICP备13001629号 )

GMT+8, 2024-5-6 07:38 , Processed in 4.823164 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表