本文将介绍利用大疆无人机基于 DJI SDK 拍摄全景图所须要的图片,不包括图片后期的合成拼接算法。ios
全景视图是指在一个固定的观察点,可以提供水平方向上方位角360度,垂直方向上180度的自由浏览,简化的全景只能提供水平方向360度的浏览。一般全景图像的得到有两种方法:全景拍摄和经过图像拼接来得到全景图像。前者须要特殊的设备,可是操做起来很是方便,简单易行,可是,这种设备价格很是昂贵,不适合普及。后者只须要普通的相机就可,可是须要进行相应的图像投影和拼接,所谓图像投影是指把实景图像投摄到一个统一的圆柱或者球体表面的过程,这样能够消除图像间存在的旋转关系,只保留平移关系,适合拼接。图像拼接是指两幅不一样视角方向具备必定重叠部分的图像合成一幅图像。显而后者的重点在于图像的拼接和融合上。
合成全景图中计算机视觉技术的知识和原理算法
显然利用无人机拍摄全景图采起的是上面提到的第二个方案,而不是利用专用的设备拍摄。全景图片后期的合成算法处理都是一致的,专用设备只是省掉了移动摄像头拍摄各个角度的麻烦,由于专用设备在各个角度都放置了固定的摄像头,傻快贵。 性能
由于无人机有着稳定的云台,移动摄像头拍照角度很方便,利用无人机进行全景图拍摄是一个很天然的选择。测试
在拍摄了固定点的各个角度照片后,接下来就是图片的合成拼接算法了。合成拼接大概分为如下几个过程:spa
若是是在阴天的环境可能各个角度的光线比较均匀,若是是晴朗的天气由于有太阳这个面光源,不一样角度的曝光结果确定有些差别,将来最后合成的时候显得天然就须要平衡全局的曝光、色调。 .net
目前常规的无人机云台都没法垂直 90 度拍摄天空,实际上大部分场景的全景图对于天空的细节也不做要求,毕竟同在一片蓝天下。可是若是全景图里没有天空观感上会很是不天然,所以一般在合成最后会补充一些天空的细节。 3d
大疆常规无人机的云台的最大仰角是 30 度,可是即便是大疆本身实现的全景拍照功能拍摄的最大仰角也只设置到 15 度。由于当仰角到极限的 30 度时,顶部区域会大面积的拍到桨叶。 cdn
云台 +15 度 9 张图像
云台 0 度 9 张图像
云台 -25 度 9 张图像
云台 -60 度 6 张图像
云台 -90 度 1 张图像blog
咱们选择了一个更简单的方案:15 度,-5 度,-35 度,-65 度各 8 张照片,云台垂直地面 -90 度拍一张照片。图片
在肯定了拍照的范围后须要考虑一下拍摄的顺序:水平优先仍是竖直优先。
若是全景照片包含仰角,那么云台的竖直运动须要从低往高处运动。
由于每次机身运动完都须要必定时间段调整机身姿态,此时无人机不必定是水平的。可是云台有稳定系统,因此画面是稳的。
为了获得尽可能均衡的曝光使用全局测光是一个很合理的选择。若是拍摄的是单张照片没什么问题,若是是各个角度都要拍摄,最后还有拼在一块儿,那么全局测光就不能知足需求了。 由于全景合成的图片有两个特色:相邻图片须要有明显特征点;地平线下方的主体细节比较重要,天空的细节不重要。使用全局测光在大光比的场景下,拍摄画面有天空时曝光结果就会和咱们期待的不一致。由于天空很亮,曝光就会下降,这样天空的细节有了,咱们想要的地面上的主体就会严重欠曝。逆光的时候就很是典型:
最后合成的时候能够是这样的结果,天空的颜色都接近白色也利于后期补天处理。
如今咱们明确了曝光目标是在水平、仰角时地面的物体曝光准确,天空能够过曝。 很天然的联想到这不就是局部测光嘛!在 DJI SDK 中,局部测光是把画面分割成 8 * 12 个块,好比设置测光区域 [0, 0] ,那么就是以左上角的那块做为测光区域。咱们能够在云台 -5 度,15 度的时候,设置测光区域为 [6, 6],那么就是以靠近画面底部的中间区域测光。 想法很美好,可是真正用这个方式进行拍摄时咱们发现没有拍摄过程当中没有人的参与,[6, 6] 这个局部出现误差的几率很大,结果不太稳定。这一小块地方可能恰好在这个画面里比较亮,或者比较暗都有可能。 在放弃了局部测光方案后咱们想到了利用曝光锁定。云台在 -35 度的时候画面是整块地面,拍摄完成后锁定曝光,-5 度和 15 度都使用 -35 度的曝光,这样就既保证了地面曝光的准确,也使竖直方向上的照片曝光有着较好的连续性。如何实现曝光锁定能够参考这篇文章:DJI SDK 如何实现曝光锁定。
大疆无人机的产品线从两千元的入门 spark 到专业级的 M 系列,摄像机的性能区别是很大的。全景拍摄过程当中摄像机须要连续拍摄几十张照片,每一次摄像机运动后都须要从新对焦、测光、设置曝光参数。所以拍照必定要针对不一样机型测试摄像机的性能,不然可能会在拍摄过程当中由于摄像机工做量过大抛出 camera busy 的错误而中断任务。