目标
昨天突然有小伙伴要我给一个杯子的完整点云,之前是partical 点云,大概是这样的(如上图),最终要如下图
问题
于是我想到了trimesh,meshlab啥啥啥的。首先打开了meshlab,采样,然而事情并没有那么愉快。好比上面的杯子,模型如下图,那么它是有一定的厚度的,除了外表面,还有内表面。采样的时候,内表面的图也会采到。最终如下图所示。
内表面是存在的,所以个人猜想通常的从面上采点,或者选取顶点,都会保留了内表面的点。要怎样才才能得到外表面的点呢?
骚操作
上面的部分点云,是从深度图转来了。那么只要围着物体外面拍一圈,就可以得到属于物体外表面点云。
懒人于是直接想着,直接拍物体的正面,反面,直接一拼,就可以把物体拼出来了,结果如下。两个面在拼合出点云十分稀疏甚至是哪个地方没有点云。这里个人理解是虽然被子是圆的,但其实是一段一段的短短的直线连接起来了,恰巧在正反两面的拼接处,是一个平行于相机拍摄方向的面,故中间那里没有拍到,只得到面的两条边缘
最终是用了三个面去恢复完整的点云。
这种方法要求对渲染有一定的了解,采样出来点云也不能保证是符合某种分布采样得到的。