本文將介紹利用大疆無人機(jī)基于 DJI SDK 拍攝全景圖所需要的圖片,不包括圖片后期的合成拼接算法。
全景圖基本實(shí)現(xiàn)過程
全景視圖是指在一個(gè)固定的觀察點(diǎn),能夠提供水平方向上方位角360度,垂直方向上180度的自由瀏覽,簡(jiǎn)化的全景只能提供水平方向360度的瀏覽。通常全景圖像的獲得有兩種方法:全景拍攝和通過圖像拼接來獲得全景圖像。前者需要特殊的設(shè)備,但是操作起來非常方便,簡(jiǎn)單易行,但是,這種設(shè)備價(jià)格非常昂貴,不適合普及。后者只需要普通的相機(jī)就可,但是需要進(jìn)行相應(yīng)的圖像投影和拼接,所謂圖像投影是指把實(shí)景圖像投攝到一個(gè)統(tǒng)一的圓柱或者球體表面的過程,這樣可以消除圖像間存在的旋轉(zhuǎn)關(guān)系,只保留平移關(guān)系,適合拼接。圖像拼接是指兩幅不同視角方向具有一定重疊部分的圖像合成一幅圖像。顯然后者的重點(diǎn)在于圖像的拼接和融合上。
合成全景圖中計(jì)算機(jī)視覺技術(shù)的知識(shí)和原理
顯然利用無人機(jī)拍攝全景圖采取的是上面提到的第二個(gè)方案,而不是利用專用的設(shè)備拍攝。全景圖片后期的合成算法處理都是一致的,專用設(shè)備只是省掉了移動(dòng)攝像頭拍攝各個(gè)角度的麻煩,因?yàn)閷S迷O(shè)備在各個(gè)角度都放置了固定的攝像頭,傻快貴。

因?yàn)闊o人機(jī)有著穩(wěn)定的云臺(tái),移動(dòng)攝像頭拍照角度很方便,利用無人機(jī)進(jìn)行全景圖拍攝是一個(gè)很自然的選擇。
全景圖片合成流程
在拍攝了固定點(diǎn)的各個(gè)角度照片后,接下來就是圖片的合成拼接算法了。合成拼接大概分為以下幾個(gè)過程:
特征點(diǎn)匹配:找到素材圖片中共有的圖像部分

圖片匹配:連接匹配的特征點(diǎn),估算圖像間幾何方面的變換

圖像均衡補(bǔ)償:全局平衡所有圖片的光照和色調(diào)
如果是在陰天的環(huán)境可能各個(gè)角度的光線比較均勻,如果是晴朗的天氣因?yàn)橛刑栠@個(gè)面光源,不同角度的曝光結(jié)果肯定有些差異,未來最后合成的時(shí)候顯得自然就需要平衡全局的曝光、色調(diào)。

補(bǔ)天
目前常規(guī)的無人機(jī)云臺(tái)都無法垂直 90 度拍攝天空,實(shí)際上大部分場(chǎng)景的全景圖對(duì)于天空的細(xì)節(jié)也不作要求,畢竟同在一片藍(lán)天下。但是如果全景圖里沒有天空觀感上會(huì)非常不自然,因此通常在合成最后會(huì)補(bǔ)充一些天空的細(xì)節(jié)。



利用無人機(jī)拍攝各個(gè)角度照片
大疆常規(guī)無人機(jī)的云臺(tái)的最大仰角是 30 度,但是即使是大疆自己實(shí)現(xiàn)的全景拍照功能拍攝的最大仰角也只設(shè)置到 15 度。因?yàn)楫?dāng)仰角到極限的 30 度時(shí),頂部區(qū)域會(huì)大面積的拍到槳葉。

前面提到過全景后期合成需要基于特征點(diǎn)進(jìn)行匹配,如果大面積拍到槳葉,因?yàn)槊繌堈掌袠~的位置都毫無規(guī)律,對(duì)兩張相鄰照片的匹配會(huì)造成干擾,降低匹配的概率。
這樣我們就確認(rèn)了拍照區(qū)域:水平向 0 - 360 度,豎直向 - 90 到 15 度。接著根據(jù)照片重疊率可以自行計(jì)算需要拍多少照片。
我們觀察到大疆的全景拍照間隔是這樣的:
云臺(tái) +15 度 9 張圖像
云臺(tái) 0 度 9 張圖像
云臺(tái) -25 度 9 張圖像
云臺(tái) -60 度 6 張圖像
云臺(tái) -90 度 1 張圖像
我們選擇了一個(gè)更簡(jiǎn)單的方案:15 度,-5 度,-35 度,-65 度各 8 張照片,云臺(tái)垂直地面 -90 度拍一張照片。
拍攝順序:水平優(yōu)先還是豎直優(yōu)先
在確定了拍照的范圍后需要考慮一下拍攝的順序:水平優(yōu)先還是豎直優(yōu)先。

水平優(yōu)先就是把云臺(tái)在固定一個(gè)角度后,機(jī)身自身旋轉(zhuǎn)一圈后拍攝下一個(gè)角度。豎直優(yōu)先是機(jī)身固定在一個(gè)水平角度后,云臺(tái)運(yùn)動(dòng)到各個(gè)角度拍照。假設(shè)都是拍攝 4 * 8 張照片(15 度,—5 度,-35 度,-65 度各一圈 8 張),水平優(yōu)先機(jī)身旋轉(zhuǎn) 4 * 8 次,云臺(tái)運(yùn)動(dòng) 4 次;豎直優(yōu)先機(jī)身運(yùn)動(dòng) 8 次,云臺(tái)運(yùn)動(dòng) 4 * 8 次。
所以根本的衡量因素是:讓機(jī)身多旋轉(zhuǎn)幾次還是讓云臺(tái)多運(yùn)動(dòng)幾次劃算?
答案是豎直優(yōu)先,因?yàn)樵婆_(tái)運(yùn)動(dòng)更穩(wěn)定,代價(jià)更低。云臺(tái)的運(yùn)動(dòng)環(huán)境相對(duì)可控,把云臺(tái)旋轉(zhuǎn)到一個(gè)角度就可以了。而機(jī)身的 yaw 運(yùn)動(dòng),需要產(chǎn)生一個(gè)水平的力,到達(dá)一個(gè)角度后還需要產(chǎn)生一個(gè)反向的力停下運(yùn)動(dòng)。因?yàn)樵诳罩胁幌竦孛?,可以通過地面摩擦力產(chǎn)生反向的力。所有運(yùn)動(dòng)的力都要通過多旋翼的力矩產(chǎn)生。每一次機(jī)身運(yùn)動(dòng)都必然伴隨著機(jī)身姿態(tài)調(diào)整的過程。

如果全景照片包含仰角,那么云臺(tái)的豎直運(yùn)動(dòng)需要從低往高處運(yùn)動(dòng)。

因?yàn)槊看螜C(jī)身運(yùn)動(dòng)完都需要一定時(shí)間段調(diào)整機(jī)身姿態(tài),此時(shí)無人機(jī)不一定是水平的。但是云臺(tái)有穩(wěn)定系統(tǒng),所以畫面是穩(wěn)的。

因此如果機(jī)身剛運(yùn)動(dòng)完,馬上拍攝仰角的照片,可能會(huì)有更大的概率拍到槳葉。因?yàn)闊o人機(jī)在調(diào)整姿態(tài)過程中可能是側(cè)傾的。

曝光策略
為了得到盡量均衡的曝光使用全局測(cè)光是一個(gè)很合理的選擇。如果拍攝的是單張照片沒什么問題,如果是各個(gè)角度都要拍攝,最后還有拼在一起,那么全局測(cè)光就不能滿足需求了。
因?yàn)槿昂铣傻膱D片有兩個(gè)特點(diǎn):相鄰圖片需要有明顯特征點(diǎn);地平線下方的主體細(xì)節(jié)比較重要,天空的細(xì)節(jié)不重要。使用全局測(cè)光在大光比的場(chǎng)景下,拍攝畫面有天空時(shí)曝光結(jié)果就會(huì)和我們期待的不一致。因?yàn)樘炜蘸芰粒毓饩蜁?huì)降低,這樣天空的細(xì)節(jié)有了,我們想要的地面上的主體就會(huì)嚴(yán)重欠曝。逆光的時(shí)候就非常典型:


兩張照片是在同一個(gè)位置拍攝,只是拍攝角度不同。人眼通過遠(yuǎn)處群山的形狀可以看出是在同一個(gè)地點(diǎn),但是對(duì)于程序而言,因?yàn)楫嬅嫦旅娌糠痔?,?xì)節(jié)全部丟失,特征點(diǎn)匹配值就很低。而且我們關(guān)注的是地面的層次,這樣的曝光地面嚴(yán)重欠曝,輸出的全景圖也不是我們想要的。
我們所期望的曝光結(jié)果是這樣的,地面上物體清晰有細(xì)節(jié),天空可以過曝。

最后合成的時(shí)候可以是這樣的結(jié)果,天空的顏色都接近白色也利于后期補(bǔ)天處理。

利用曝光鎖定
現(xiàn)在我們明確了曝光目標(biāo)是在水平、仰角時(shí)地面的物體曝光準(zhǔn)確,天空可以過曝。
很自然的聯(lián)想到這不就是局部測(cè)光嘛!在 DJI SDK 中,局部測(cè)光是把畫面分割成 8 * 12 個(gè)塊,比如設(shè)置測(cè)光區(qū)域 [0, 0] ,那么就是以左上角的那塊作為測(cè)光區(qū)域。我們可以在云臺(tái) -5 度,15 度的時(shí)候,設(shè)置測(cè)光區(qū)域?yàn)?[6, 6],那么就是以靠近畫面底部的中間區(qū)域測(cè)光。
想法很美好,但是真正用這個(gè)方式進(jìn)行拍攝時(shí)我們發(fā)現(xiàn)沒有拍攝過程中沒有人的參與,[6, 6] 這個(gè)局部出現(xiàn)偏差的概率很大,結(jié)果不太穩(wěn)定。這一小塊地方可能剛好在這個(gè)畫面里比較亮,或者比較暗都有可能。
在放棄了局部測(cè)光方案后我們想到了利用曝光鎖定。云臺(tái)在 -35 度的時(shí)候畫面是整塊地面,拍攝完成后鎖定曝光,-5 度和 15 度都使用 -35 度的曝光,這樣就既保證了地面曝光的準(zhǔn)確,也使豎直方向上的照片曝光有著較好的連續(xù)性。如何實(shí)現(xiàn)曝光鎖定可以參考這篇文章:DJI SDK 如何實(shí)現(xiàn)曝光鎖定。
Tips
大疆無人機(jī)的產(chǎn)品線從兩千元的入門 spark 到專業(yè)級(jí)的 M 系列,攝像機(jī)的性能區(qū)別是很大的。全景拍攝過程中攝像機(jī)需要連續(xù)拍攝幾十張照片,每一次攝像機(jī)運(yùn)動(dòng)后都需要重新對(duì)焦、測(cè)光、設(shè)置曝光參數(shù)。因此拍照一定要針對(duì)不同機(jī)型測(cè)試攝像機(jī)的性能,否則可能會(huì)在拍攝過程中因?yàn)閿z像機(jī)工作量過大拋出 camera busy 的錯(cuò)誤而中斷任務(wù)。
總流程
