如何使用OpenDroneMap對(duì)航拍圖像快速建模

DroneDev 專題,關(guān)注無人機(jī)軟件項(xiàng)目開發(fā),拓展無人機(jī)更多的可能性。

當(dāng)你駕輕就熟地用無人機(jī)拍攝了某個(gè)地區(qū)的航拍圖像后,除了分享到微信朋友圈里,還可以做些什么呢?或許 OpenDroneMap 能助你開啟思路。

OpenDroneMap 是一個(gè)開源的航拍圖像處理工具,可以把航拍圖像進(jìn)行點(diǎn)云、正射影像和高程模型等轉(zhuǎn)換處理。

一般的無人機(jī)用的都是「傻瓜式」的相機(jī),其實(shí)這跟你用手機(jī)或普通數(shù)碼相機(jī)拍的沒差,只是拍攝的角度不一樣而已。它們拍出來的照片都是非量測(cè)影像(non-metric imagery),而 OpenDroneMap 則可以將這些非量測(cè)影像轉(zhuǎn)換成三維地理建模數(shù)據(jù),并應(yīng)用在地理信息系統(tǒng)中。

具體而言,OpenDroneMap 可以將航拍圖像處理為下面幾種格式的數(shù)據(jù):

  • 點(diǎn)云(Point Clouds)
  • 紋理數(shù)字表面建模(Textured Digital Surface Models)
  • 正射校正影像(Orthorectified Imagery)
  • 數(shù)字高程模型(Digital Elevation Models)
  • ……

使用方法

OpenDroneMap 支持 Docker,這意味著你可以在不同的操作系統(tǒng)上運(yùn)行 OpenDroneMap。下面以 Mac OS 為例,介紹 OpenDroneMap 的使用方法。

1、安裝 Docker CE

到 Docker 官網(wǎng) https://docs.docker.com/engine/installation/ 找到并下載適用于你所使用的操作系統(tǒng)的 Docker CE 版本(Docker EE 是企業(yè)版,暫時(shí)用不上)。經(jīng)過「傻瓜式」的安裝后,可以在 Terminal 上輸入 docker --version 檢驗(yàn) Docker 是否安裝成功。

2、下載 OpenDroneMap 的鏡像

確認(rèn) Docker 成功安裝后,在 Terminal 上輸入以下指令:

docker pull opendronemap/opendronemap

Docker 就會(huì)從 Docker Hub 中下載 OpenDroneMap 的鏡像到本地中。為提高下載速度,建議提前使用 Proxifier 之類的工具(建議自行 Google)讓 Terminal 走上代理道路。鏡像下載完成后,在 Terminal 輸入 docker images 指令,就能查看到剛才下載的 OpenDroneMap 的鏡像了。

3、創(chuàng)建文件目錄

在 Finder 上任意一目錄新建一個(gè)名為 images 的文件夾,作為待處理圖片的存放位置。我的習(xí)慣是以「項(xiàng)目名 / images」的方式來對(duì)目錄進(jìn)行命名,這樣能更直觀地管理文件。比如:

//odm_test_1/images
//odm_test_2/images

接下來,就需要把你需要進(jìn)行處理的航拍影像拷貝到 images 文件夾中了,如果你暫時(shí)沒有這些航拍圖像的話,可以在 https://github.com/OpenDroneMap/odm_data 上下載范例素材。

我在網(wǎng)站上下載了「aukerman」素材的圖像文件,這個(gè)范例素材似乎是對(duì)某個(gè)綠化公園連續(xù)拍攝的航拍圖像,查看每個(gè)圖像文件的 info(Command + I),都能找到它的經(jīng)緯度信息。我們可以用 OpenDroneMap 對(duì)這些文件進(jìn)行「正射影像(拼接)」和「紋理網(wǎng)面建?!沟奶幚怼?/p>

4、運(yùn)行 OpenDroneMap

在航拍圖像文件拷貝到 images 目錄以后,打開 Terminal 并定位到項(xiàng)目文件夾(比如 odm_test_1)中,執(zhí)行以下指令:

docker run -it --rm \
    -v $(pwd)/images:/code/images \
    -v $(pwd)/odm_orthophoto:/code/odm_orthophoto \
    -v $(pwd)/odm_texturing:/code/odm_texturing \
    opendronemap/opendronemap

指令的作用是:通過 OpenDronMap 對(duì) odm_test_1/images 目錄下的圖像文件同時(shí)進(jìn)行「正射影像(odm_orthophoto)」和「紋理網(wǎng)面建模(odm_texturing)」的圖像處理(作為測(cè)試,為了節(jié)省時(shí)間,你可以只選取 odm_orthophoto 或 odm_texturing 其中一種處理方式):

指令解釋:

docker run -it --rm

Docker 的運(yùn)行指令。-it 指讓 Docker 分配一個(gè)偽輸入終端并以交互模式運(yùn)行容器;--rm 是指在容器運(yùn)行完之后自動(dòng)清除以節(jié)省電腦存儲(chǔ)空間。

-v $(pwd)/images:/code/images

-v 是用來將本地目錄綁定到容器中的,在本例子中,是讓 OpenDroneMap 知道待處理的照片在哪里;冒號(hào)前面,代表的是本地 images 路徑,其中 (pwd) 代表當(dāng)前 Teminal 定位目錄的絕對(duì)路徑,你可以更改為其他目錄的絕對(duì)路徑;冒號(hào)后面,是指容器的路徑,這個(gè)是不能更改的。

-v $(pwd)/odm_orthophoto:/code/odm_orthophoto

這行指令,是指希望使用 OpenDroneMap 對(duì)圖像文件進(jìn)行怎么樣的處理,你可以根據(jù)項(xiàng)目的需要,輸入不同的處理指令,OpenDroneMap 提供了以下幾種處理方式:

  • odm_meshing # 3D 網(wǎng)面建模
  • odm_texturing # 紋理網(wǎng)面建模
  • odm_georeferencing # 地理配準(zhǔn)后的點(diǎn)云圖
  • odm_orthophoto # 正射影像圖

opendronemap/opendronemap

這是指明需要調(diào)用的鏡像,這里是調(diào)用 Repository 為 opendronemap/opendronemap 的鏡像,可以用該鏡像的 tag(如果有設(shè)置的話)和鏡像 ID 替代。

5、查看結(jié)果

指令執(zhí)行后,就交給程序去處理了。運(yùn)行時(shí)間可能會(huì)稍長(zhǎng),請(qǐng)耐心等候,一切順利的話,Terminal 就會(huì)下面的提示:

然后在項(xiàng)目的文件夾中(比如 odm_test_1),就能在 odm_orthophoto 和 odm_texturing 目錄中看到對(duì)應(yīng)的輸出結(jié)果了。

正射影像的輸出結(jié)果的 png 預(yù)覽圖:

或許有朋友會(huì)說,最后還不是一張常見的無人機(jī)俯視航拍圖,但其實(shí) odm_orthophoto 的輸出結(jié)果還有一個(gè)后綴為 tif 的 GeoTIFF 文件,這可以應(yīng)用在 QGIS 上作為光柵圖層,供地理信息分析之用(比如實(shí)現(xiàn)地圖的修測(cè)更新)。

小結(jié)

上述教程中的 GIS 術(shù)語可能翻譯得不夠到位,如有不妥的地方望請(qǐng)指出。

整體來說,有 docker 這樣的工具能很大程度上減少配置開發(fā)環(huán)境的時(shí)間,也簡(jiǎn)化了不少的操作步驟,不過需要注意的是 OpenDroneMap 的項(xiàng)目還是挺占用電腦空間的,所以在操作之前,最好能確保電腦有足夠的剩余空間。

上面的例子采用的是范例素材的航拍圖像,如果要實(shí)際應(yīng)用到自己的項(xiàng)目中,則需要自己使用無人機(jī),結(jié)合相關(guān)軟件的航線規(guī)劃和定時(shí)拍攝功能,對(duì)某一個(gè)地區(qū)進(jìn)行連續(xù)拍攝,將拍攝的圖像文件導(dǎo)入到「images」文件夾中,再按教程步驟執(zhí)行就能實(shí)現(xiàn)數(shù)據(jù)處理了。

此外,Docker 也有 Windows 版本,把教程中 Terminal 的操作換成 Windows 系統(tǒng)的 Cmd,或許也能實(shí)現(xiàn)(沒有嘗試過,不敢打包票)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容