Closed Alexbeast-CN closed 6 months ago
[测试]
尝试了使用 open3d 中的 PoissonRecon 算法将点云转为 .obj 格式的网格,代码如下
import open3d as o3d
# Load the .pcd file
pcd = o3d.io.read_point_cloud("chuancang_model.pcd")
# Create a mesh from the point cloud
mesh, densities = o3d.geometry.TriangleMesh.create_from_point_cloud_poisson(pcd, depth=9)
# Save the mesh as a .obj file
o3d.io.write_triangle_mesh("chuancang_model.obj", mesh)
点云可视化如下:
导出的 .obj 文件可视化如下:
[分析]
由于建图时扫描出来的点云是非常稀疏的,所以很多地方会把误认为是洞。
[Research]
点云转网格是一个比较热门的研究,随便搜了一下,就找到了 Point2Mesh: A Self-Prior for Deformable Meshes
然后通过 Connected Paper 找到了该领域的论文 关系图
[测试]
用 Point2Mesh: A Self-Prior for Deformable Meshes 将点云转网格。
Point2Mesh 有些年头了,所以之前作者给出的环境现在不能用了。以下是我配置环境的过程,我的 GPU 是 RTX 3070 Ti Laptop, cuda 是 12.3
创建一个 python 3.9 的环境
conda create -n pytorch3d python=3.9
安装最新的 pytorch
pip3 install torch torchvision torchaudio
编译 pytorch3d
git clone https://github.com/facebookresearch/pytorch3d.git
cd pytorch3d && pip install -e .
需要修改代码以适应最新版的 pytorch 以及 pytorch3d。
这里我是参考了这个 github issue
我的 GPU 只有 8g 显存,跑了作者给的例子 bash ./scripts/examples/giraffe.sh
,大概在第 1000 次迭代的时候,我显存就满了。
上面的方法从原理上就不适合我们的场景,因为它默认了物体是从外表面扫描的,但我们的场景是扫描的内部表面。
[测试]
使用 ImMesh 导出的张家港船舱点云转网格效果。
[分析]
总体看起来看还不错,但丢失了一些细节,比如吊耳。也有一些噪音。边不是非常明显。
尝试了使用 quadwild 将上面的三角网格转四边形网格,非常的慢,目前来说 3 个小时还没转完。
主要原因是 quadwild 只用了一个线程,所以以后如果真的要使用,最好还是把它换成多线程的。
直出的效果不佳,最好还是对模型进行预处理。
生成出的三角网格与四边形网格的对比。四边形网格要更加均匀。
实现从PCL 点云数据结构转换为三维表面网格