本文將介紹利用大疆無人機基於 DJI SDK 拍攝全景圖所需要的圖片,不包括圖片後期的合成拼接演算法。
全景圖基本實現過程
全景檢視是指在一個固定的觀察點,能夠提供水平方向上方位角360度,垂直方向上180度的自由瀏覽,簡化的全景只能提供水平方向360度的瀏覽。通常全景影象的獲得有兩種方法:全景拍攝和通過影象拼接來獲得全景影象。前者需要特殊的裝置,但是操作起來非常方便,簡單易行,但是,這種裝置價格非常昂貴,不適合普及。後者只需要普通的相機就可,但是需要進行相應的影象投影和拼接,所謂影象投影是指把實景影象投攝到一個統一的圓柱或者球體表面的過程,這樣可以消除影象間存在的旋轉關係,只保留平移關係,適合拼接。影象拼接是指兩幅不同視角方向具有一定重疊部分的影象合成一幅影象。顯然後者的重點在於影象的拼接和融合上。
合成全景圖中計算機視覺技術的知識和原理
顯然利用無人機拍攝全景圖採取的是上面提到的第二個方案,而不是利用專用的裝置拍攝。全景圖片後期的合成演算法處理都是一致的,專用裝置只是省掉了移動攝像頭拍攝各個角度的麻煩,因為專用裝置在各個角度都放置了固定的攝像頭,傻快貴。

因為無人機有著穩定的雲臺,移動攝像頭拍照角度很方便,利用無人機進行全景圖拍攝是一個很自然的選擇。
全景圖片合成流程
在拍攝了固定點的各個角度照片後,接下來就是圖片的合成拼接演算法了。合成拼接大概分為以下幾個過程:
特徵點匹配:找到素材圖片中共有的影象部分

圖片匹配:連線匹配的特徵點,估算影象間幾何方面的變換

影象均衡補償:全域性平衡所有圖片的光照和色調
如果是在陰天的環境可能各個角度的光線比較均勻,如果是晴朗的天氣因為有太陽這個面光源,不同角度的曝光結果肯定有些差異,未來最後合成的時候顯得自然就需要平衡全域性的曝光、色調。

補天
目前常規的無人機雲臺都無法垂直 90 度拍攝天空,實際上大部分場景的全景圖對於天空的細節也不作要求,畢竟同在一片藍天下。但是如果全景圖裡沒有天空觀感上會非常不自然,因此通常在合成最後會補充一些天空的細節。



利用無人機拍攝各個角度照片
大疆常規無人機的雲臺的最大仰角是 30 度,但是即使是大疆自己實現的全景拍照功能拍攝的最大仰角也只設定到 15 度。因為當仰角到極限的 30 度時,頂部區域會大面積的拍到槳葉。

雲臺 +15 度 9 張影象
雲臺 0 度 9 張影象
雲臺 -25 度 9 張影象
雲臺 -60 度 6 張影象
雲臺 -90 度 1 張影象
我們選擇了一個更簡單的方案:15 度,-5 度,-35 度,-65 度各 8 張照片,雲臺垂直地面 -90 度拍一張照片。
拍攝順序:水平優先還是豎直優先
在確定了拍照的範圍後需要考慮一下拍攝的順序:水平優先還是豎直優先。


如果全景照片包含仰角,那麼雲臺的豎直運動需要從低往高處運動。

因為每次機身運動完都需要一定時間段調整機身姿態,此時無人機不一定是水平的。但是雲臺有穩定系統,所以畫面是穩的。


曝光策略
為了得到儘量均衡的曝光使用全域性測光是一個很合理的選擇。如果拍攝的是單張照片沒什麼問題,如果是各個角度都要拍攝,最後還有拼在一起,那麼全域性測光就不能滿足需求了。 因為全景合成的圖片有兩個特點:相鄰圖片需要有明顯特徵點;地平線下方的主體細節比較重要,天空的細節不重要。使用全域性測光在大光比的場景下,拍攝畫面有天空時曝光結果就會和我們期待的不一致。因為天空很亮,曝光就會降低,這樣天空的細節有了,我們想要的地面上的主體就會嚴重欠曝。逆光的時候就非常典型:



最後合成的時候可以是這樣的結果,天空的顏色都接近白色也利於後期補天處理。

利用曝光鎖定
現在我們明確了曝光目標是在水平、仰角時地面的物體曝光準確,天空可以過曝。 很自然的聯想到這不就是區域性測光嘛!在 DJI SDK 中,區域性測光是把畫面分割成 8 * 12 個塊,比如設定測光區域 [0, 0] ,那麼就是以左上角的那塊作為測光區域。我們可以在雲臺 -5 度,15 度的時候,設定測光區域為 [6, 6],那麼就是以靠近畫面底部的中間區域測光。 想法很美好,但是真正用這個方式進行拍攝時我們發現沒有拍攝過程中沒有人的參與,[6, 6] 這個區域性出現偏差的概率很大,結果不太穩定。這一小塊地方可能剛好在這個畫面裡比較亮,或者比較暗都有可能。 在放棄了區域性測光方案後我們想到了利用曝光鎖定。雲臺在 -35 度的時候畫面是整塊地面,拍攝完成後鎖定曝光,-5 度和 15 度都使用 -35 度的曝光,這樣就既保證了地面曝光的準確,也使豎直方向上的照片曝光有著較好的連續性。如何實現曝光鎖定可以參考這篇文章:DJI SDK 如何實現曝光鎖定。
Tips
大疆無人機的產品線從兩千元的入門 spark 到專業級的 M 系列,攝像機的效能區別是很大的。全景拍攝過程中攝像機需要連續拍攝幾十張照片,每一次攝像機運動後都需要重新對焦、測光、設定曝光引數。因此拍照一定要針對不同機型測試攝像機的效能,否則可能會在拍攝過程中因為攝像機工作量過大丟擲 camera busy 的錯誤而中斷任務。
總流程
