本文將介紹利用大疆無人機基於 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 的錯誤而中斷任務。