各位好,没想到啊~新一篇小文儿竟然回归了3D扫描。
说起来也是阴差阳错,某天陪家人去调研设计项目场地,带着穿越机随便拍了几圈,回家后发现航拍视频/照片自动解算成3D模型的这个事情,其实门槛已经非常低了。当即试了一下,结果还真能算出来像那么回事的模型……原地惊呆。
于是后来第二个场地借了个DJI好好拍了一下,并重新梳理了一下软件的相关操作。想来应该也有不少FPV的同好或者买了DJI后想要研究新玩法的朋友,故现将收获列于此处,供参考。
软硬件需求
原理简介
分步骤操作说明
针对不同类型目标的飞行拍摄方法
DJI平台上单帧拍照和视频的区别
小贴士
无人机或航模,总之能飞到天上去,能拍相对清晰照片,而且可以控制它怎么飞的,就可。
电脑,内存最好大点,建议32g,但是不足也可以搞。另外亲测不太需要GPU,大部分运算是CPU完成的。
ContextCapture(CC),这软件是专门做这个事情的,上手不难,如果找不到可以试试某宝搜索。这里也要说下,人家这个软件好像是超级垂直专业的,虽然上手不难,但是里面很多功能我几乎是完全蒙圈的,所以这边也就仅仅介绍最最基础的工作流程。
(非必须)Premiere或任何可以把视频截成图片导出的软件。
这个算法貌似叫作“摄像机反求”,基本原理就是通过对画面的分析,提取出一些具有特征的点,然后分析这些点在不同画面中的位置关系,来求解出拍摄这些画面的时候摄像机在空间中的位置和角度。当然,既然摄像机的位置和角度都能算出来了,那那些特征点在空间里的坐标自然也不在话下。
这个技术听起来感觉挺nb的,而且实际上效果也确实还不错。早年间的一些影视特效是有用过这种技术的,不过听说最近已经逐渐退出历史舞台了,因为现在大佬们都是直接用数控摇臂,所以摄像机位置可以直接记录下来,自然比通过画面反求要稳妥准确。但个人觉得它用来做无人机航测还是比较贴切的技术。
拍视频或照片 —— 导入软件 —— 三角测算(自动)—— 划定建模范围 —— 建模(自动)
拍摄: 原则基本就是希望模型里包括这块的,那我投喂给软件的素材里就一定得有这一块的图像。拍摄的部分,不论拍的是视频还是照片,软件最后用的都是静态图,所以最重要的就是不要有“动态模糊” (这一点机动性高的飞机很容易出现,不过如果用DJI基本不太需要担心这个)。
导入软件: 好,一起打开CC Masrer(黑和绿色方块那个图标),“开始一个新的工程”——选择一个目录,注意此处目录最好不要有中文——直接点OK。然后就来到了下面这个画面👇
那么,我们要做的就是点击“影像”,然后在下面这个界面里的“添加影响”或“导入视频”里面把自己拍的东西导入进去。
这里我以影像为例,因为导入视频的话还会多一个截帧的步骤,而我在这个截帧的过程中软件崩溃了好几次(可能是因为编辑视频毕竟不是人家的专业对口……)。总之我是推荐如果您拍的是视频,也最好是先自行转为(比如一秒一张的)图片序列之后再导入软件。
如图,我导入了一个影响序列。在进行下一步让CPU跑满的动作之前,还需要告诉软件一下拍摄这些图的摄像机的焦距和传感器尺寸。这个,如果您不清楚,请直接查阅拍摄设备的官网。
然后啥都不用管直接点“Submit Aerotriangulation”——空三运算。哦对了,点之前记得,运行一下“ContextCapture Center Engine”这个软件,这是负责运算的那部分,人家单独做成了一个分离的软件,可想而知专业度……估计专业人士用这个的时候Engine部分可能是放在算力服务器上的。
那么稍作等待,就会看到它的空间解算结果了。如下图,此时还很粗糙,莫急。👇
不过显然能看出来一个大概的凹凸关系了。而且空中的小点点,如果放大会看到就是摄像机的样子。接下来需要划定建模范围。注意,此时界面左侧有一个新建的文件夹,是以“—AT”结尾的,后面的操作要以选中这个文件夹为前提。
我们电机那个大绿色的“New Reconstruction”,选择三维重建。软件会帮我们建立一个新的子项,就在那个“—AT”文件夹的里面,应该是叫做“Reconstruction_1”这种名字。这里我们选择第二个选项卡(Spatial Framework),在这里我们需要指定重建模型的范围,点击左侧立方体小按钮,然后用鼠标把那个蓝色框子推拉到需要建模的范围。一般我们都会舍弃掉一些外围的部分的。
然后,记得电机一下屏幕上部中间的那个蓝色的Accept。之后,就可以点右侧的这个Submit New Porduction了,选择“引擎处理”(请确保引擎还开着)所有设置一概不管,直接点击“提交”。接下来还是等待。然后如果一切顺利,就会看到下面这个画面了。
左侧的Production_1,点进去之后,右侧选择3D view,这里就是建模成果了。
这一篇章其实很简单啦,如果需要重建的是一个建筑,那就绕着他飞,想象自己是在往它上面缠电线就可以了,不同高度都环绕一圈,如果可以的话俯视仰视也都来一圈最佳。
需要说一下的是类似上面的案例里面的这种街区扫描,这种推荐的拍摄方法是用好几个圆来覆盖整个区域,具体请看下图软件自动解算出的飞机轨迹(绿点)。就是那样,画完一个圆画画另一个,每个圆都是一直向着圆心拍摄,45度俯视。
如果您用的是自组飞机,多半不必在意单帧照片和视频的区别,但是如果您用的是DJI,这里头还是有点区别的。一句话讲,针对建模的话,定时连拍的照片要优于视频。原因如下:
DJI拍摄的单帧照片本身就是有位置信息的,GPS坐标,高度,朝向,角度,飞机的摄像头感光器尺寸,焦距等等,所有的信息都直接就有,所以这就有点类似数控机械臂直接给了摄像机的坐标和角度,也就不用反算了。(但是照片的特征点位置还是会需要计算的,这点跑不了。)
照片的解析度比视频高。更高的解析度意味着更多更清晰的特征点,那么解算的结果也就更可靠。
用照片的gps数据算出来的模型是有真实尺寸的。(如果只是视频,得到的结果会是“1个单位”,如果用照片,则是“10m”。)
目前我觉得用DJI拍照片只有一个弊端,就是它每次拍照的时候,画面都会卡顿一下。这让飞习惯高速穿梭的FPV的朋友有些难受,不过如果能克服,我还是推荐使用每两秒一张的定时连拍。
多组照片分开导入 :有时候可能同一个场地用视频拍了一圈又用照片拍了一圈,然后可能还有人用手机在地面拍了一圈,这些图像的分辨率,设备的焦距和感光元件都不同,所以当成同一组图输进去会产生问题。具体做法就是在“添加影像”那一步多点几次,每次只导入一组图片,就可以了。另外,如果您输入了很多组照片,其中只要有一组里面有GPS和摄像机的位置姿态数据,那么最后解算结果就会有真实尺寸。
手工指定特征点 :在输入照片之后的“测量”那个选项卡里,可以输入用户链接点,这应该是更加专业的功能部分。我亲测输入与不输入的解算差异并不会特别明显,后面几次我都是直接一个点都不输入直接一股脑所有数据丢进去算了。
内存问题 :如果你的第一次建模尝试失败了,可能是因为内存不够大。此时关注一下Spatial Framework那里,右侧有一个Tilling选项,选成Adaptive Tiling,会让软件自动把整个场地分成几块建模,这样可以减小对电脑内存的需求。亲测运算时间会显著变长,而且最终导出的时候,输出的模型会是一块块分开的文件。但是总比算不出来要好~
另外请不要把分块设置的过于细致,因为我发现这里的每个分块确实都是一个单独的重建,他们彼此之间并没有商量好共享衔接的部分,那么,为了分块之间彼此能够接上,软件会自动指定相邻分块是有一个重叠区域的。所以如果分的太细,很可能会导致相当多的冗余运算量。这大概也是分块之后计算时间上升的原因之一。
导出模型: 最后补充一下如何导出模型,我们回到左侧的Reconsturction_1那里,然后点击Submit New Production,这回在”格式/选项"那一步选择一个你喜欢的格式,我这里选的是FBX,如下图。
然后点击提交即可,放心,只要之前已经解算过模型了,这次会很快结束,然后会形成一个新的Production,我们的文件就在右上角的这个文件夹里,可以用于导入到别的三维设计软件中了。
感谢阅读,祝各位扫描大地开心。一定注意飞行安全,依法报备,杜绝黑飞。
评论区
共 28 条评论热门最新