智慧城市与三维重建

本文是【马悦宁老师】指导完成的山东大学引航计划公益人工智能科研实训项目。
注:本文所用代码皆已上传至Github上。

智慧城市

智慧城市概论

可参考网址:
https://onekeyresources.milwaukeetool.com/en/smart-cities
智慧城市使用数字技术和数据来解决与城市生活相关的一系列问题,例如人口密度,空气和水污染,废物处理,能源效率低下,交通和犯罪。

智慧城市架构

可参考网址:
https://new.qq.com/rain/a/20210226A00V2A00
智慧城市与三维重建_第1张图片

http://www.cqflgh.cn/solution/10.html
智慧城市与三维重建_第2张图片

智慧城市与数字孪生

数字孪生:为现实中的设施、机器等创建虚拟空间中的孪生体。

获取数字孪生的方法

  • 二维CAD图纸翻模:
    可参考网址:
    http://bbs.glsbim.com/forum.php?mod=viewthread&tid=134

  • 激光扫描:
    可参考网址:
    https://v.qq.com/x/page/s05196ey2hq.html

  • 多目三维重建/无人机测绘:
    可参考网址:

    • 多目三维重建:https://www.dji.com/cn/dji-terra
    • 无人机测绘:https://www.sohu.com/a/458029844_121066217
      • 无人机数据采集:使用无人机对地标数据进行环拍。

多目三维重建基本原理(Multiple View Stereo, MVS)

1、回忆相机成像模型:单视角照片无法推出3D信息;
2、双目视觉/多目视觉:

  • 给定相机参数,=>单个物体点坐标;
  • 给定多个点坐标,=>相机参数。

3、关键点匹配;
4、极线约束,可参考网址:
https://zhuanlan.zhihu.com/p/143299493
5、SIFT关键点匹配实验,可参考网址:
https://zhuanlan.zhihu.com/p/162084575
6、运行sift.py
智慧城市与三维重建_第3张图片

基于深度学习的多目三维重建

总流程

1、Colmap稀疏重建得到相机位姿及关键点;
2、根据Colmap结果,对图片重新排序;
3、深度图推理;
4、深度图融合。

Colmap稀疏重建

使用Colmap软件进行稀疏重建,获得无人机位姿数据。

  1. 打开COLMAP,双击“COLMAP.bat”,选择“Reconstruction”中的“Automatic reconstruction”,见下图:
    智慧城市与三维重建_第4张图片

  2. 左键旋转,右键平移;
    智慧城市与三维重建_第5张图片

  3. 选择“File”中的“Export modal as text”,将其导出,打开“cameras.txt”,见下图:
    智慧城市与三维重建_第6张图片

  4. 其他两个文件用VScode打开,用记事本会卡死。

基于深度学习的多目三维重建实验

在中科曙光超算上,使用AA-RMVSNet深度神经网络完成图片重排序、深度图推理、深度图融合,获得建筑点云数据。

  1. 在用户主目录下新建“experiments”文件夹,将AA-RMVSNet-sdu文件夹上传到“experiments”目录下;并新建“datasets”文件夹,将处理好的“xinhaoshan”文件夹上传到“datasets”目录下;

  2. 在E-Shell中申请资源:salloc -p kshdtest -N 1 --gres=dcu:4 --cpus-per-task=18,然后激活pytorch环境;

  3. 安装plyfile,numpy,opencv-python==3.4.2.17库,见下图:
    智慧城市与三维重建_第7张图片

  4. 先把“xinhaoshan”中“scan1”目录下的“images”文件夹名修改成“original_images”,不然可能报找不到,之后建“images”新文件夹。

  5. 在E-Shell中进入“AA-RMVSNet-sdu”目录下,运行colmap2mvsnet.py,输入命令:
    python ./sfm/colmap2mvsnet.py --dense_folder /public/home/ac3lvyny3g/datasets/xinhaoshan/scan1/ --interval_scale 0.4 --max_d 512
    智慧城市与三维重建_第8张图片
    在这里插入图片描述
    智慧城市与三维重建_第9张图片

  6. 运行my_eval.sh,将路径改成自己的,见下图:
    智慧城市与三维重建_第10张图片
    结果见下图:
    智慧城市与三维重建_第11张图片
    智慧城市与三维重建_第12张图片
    智慧城市与三维重建_第13张图片

  7. 运行my_fusion.sh,将路径改成自己的,见下图:
    在这里插入图片描述
    结果见下图:
    智慧城市与三维重建_第14张图片
    在这里插入图片描述

  8. 打开“pair.txt”,见下图:
    智慧城市与三维重建_第15张图片
    整数为图像编号,小数为置信度。

  9. 运行view_pfm.py,见下图:
    智慧城市与三维重建_第16张图片

基于深度学习的多目三维重建原理

结合实验结果,理解AA-RMVSNet的输入、输出和重建原理。

点云预处理

在CloudCompare软件里观察点云数据,并修建多余的点。

  1. 下载并安装“CloudCompareStereo”;
  2. 打开CloudCompareStereo,将“AA-RMVSNet-sdu”文件夹中“outputs_xinhaoshan”的“mvsnet_001_l3.ply”拖入CloudCompareStereo中,点击弹窗的“Apply”,见下图:
    智慧城市与三维重建_第17张图片
    左键旋转,右键平移,滚轮放缩。
  3. 把点云洗干净,见下图:
    智慧城市与三维重建_第18张图片
    并保存为“mvsnet_001_Cloud.txt”。

表面重建

在Meshlab软件里,为修剪好的点云计算表面法向量,并进行表面重建,得到建筑的数字孪生体。

  1. 下载并安装“MeshLab”;
  2. 打开MashLab:把点云连成面。将采集好的点云“mvsnet_001_Cloud.txt”拖入MashLab,见下图:
    智慧城市与三维重建_第19张图片
    在这里插入图片描述
    智慧城市与三维重建_第20张图片
    选第二个“Compute normals for point sets”,结果见下图:智慧城市与三维重建_第21张图片

你可能感兴趣的:(智慧城市,人工智能)