如何使用OpenDroneMap對航拍圖像快速建模

當你得心應手地用無人機拍攝了某個地區的航拍圖像後,除了分享到微信朋友圈裏,還能夠作些什麼呢?或許 OpenDroneMap 能助你開啓思路。git

OpenDroneMap 是一個開源的航拍圖像處理工具,能夠把航拍圖像進行點雲、正射影像和高程模型等轉換處理。github

通常的無人機用的都是「傻瓜式」的相機,其實這跟你用手機或普通數碼相機拍的沒差,只是拍攝的角度不同而已。它們拍出來的照片都是非量測影像(non-metric imagery),而 OpenDroneMap 則能夠將這些非量測影像轉換成三維地理建模數據,並應用在地理信息系統中。docker

具體而言,OpenDroneMap 能夠將航拍圖像處理爲下面幾種格式的數據:微信

  • 點雲(Point Clouds)工具

  • 紋理數字表面建模(Textured Digital Surface Models)測試

  • 正射校訂影像(Orthorectified Imagery)網站

  • 數字高程模型(Digital Elevation Models)spa

  • ……操作系統


使用方法

OpenDroneMap 支持 Docker,這意味着你能夠在不一樣的操做系統上運行 OpenDroneMap。下面以 Mac OS 爲例,介紹 OpenDroneMap 的使用方法。翻譯

一、安裝 Docker CE

到 Docker 官網 https://docs.docker.com/engine/installation/ 找到並下載適用於你所使用的操做系統的 Docker CE 版本(Docker EE 是企業版,暫時用不上)。通過「傻瓜式」的安裝後,能夠在 Terminal 上輸入 docker --version 檢驗 Docker 是否安裝成功。
圖片描述

二、下載 OpenDroneMap 的鏡像

確認 Docker 成功安裝後,在 Terminal 上輸入如下指令:

docker pull opendronemap/opendronemap

Docker 就會從 Docker Hub 中下載 OpenDroneMap 的鏡像到本地中。爲提升下載速度,建議提早使用 Proxifier 之類的工具(建議自行 Google)讓 Terminal 走上代理道路。鏡像下載完成後,在 Terminal 輸入 docker images 指令,就能查看到剛纔下載的 OpenDroneMap 的鏡像了。
圖片描述

三、建立文件目錄

在 Finder 上任意一目錄新建一個名爲 images 的文件夾,做爲待處理圖片的存放位置。個人習慣是以「項目名 / images」的方式來對目錄進行命名,這樣能更直觀地管理文件。好比:

//odm_test_1/images
//odm_test_2/images

接下來,就須要把你須要進行處理的航拍影像拷貝到 images 文件夾中了,若是你暫時沒有這些航拍圖像的話,能夠在 https://github.com/OpenDroneMap/odm_data 上下載範例素材。

我在網站上下載了「aukerman」素材的圖像文件,這個範例素材彷佛是對某個綠化公園連續拍攝的航拍圖像,查看每一個圖像文件的 info(Command + I),都能找到它的經緯度信息。咱們能夠用 OpenDroneMap 對這些文件進行「正射影像(拼接)」和「紋理網面建模」的處理。
圖片描述

四、運行 OpenDroneMap

在航拍圖像文件拷貝到 images 目錄之後,打開 Terminal 並定位到項目文件夾(好比 odm_test_1)中,執行如下指令:

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 對 odm_test_1/images 目錄下的圖像文件同時進行「正射影像(odm_orthophoto)」和「紋理網面建模(odm_texturing)」的圖像處理(做爲測試,爲了節省時間,你能夠只選取 odm_orthophoto 或 odm_texturing 其中一種處理方式):
圖片描述

指令解釋:

docker run -it --rm

Docker 的運行指令。-it 指讓 Docker 分配一個僞輸入終端並以交互模式運行容器;--rm 是指在容器運行完以後自動清除以節省電腦存儲空間。

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

-v 是用來將本地目錄綁定到容器中的,在本例子中,是讓 OpenDroneMap 知道待處理的照片在哪裏;冒號前面,表明的是本地 images 路徑,其中 (pwd) 表明當前 Teminal 定位目錄的絕對路徑,你能夠更改成其餘目錄的絕對路徑;冒號後面,是指容器的路徑,這個是不能更改的。

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

這行指令,是指但願使用 OpenDroneMap 對圖像文件進行怎麼樣的處理,你能夠根據項目的須要,輸入不一樣的處理指令,OpenDroneMap 提供瞭如下幾種處理方式:

  • odm_meshing # 3D 網面建模

  • odm_texturing # 紋理網面建模

  • odm_georeferencing # 地理配準後的點雲圖

  • odm_orthophoto # 正射影像圖

opendronemap/opendronemap

這是指明須要調用的鏡像,這裏是調用 Repository 爲 opendronemap/opendronemap 的鏡像,能夠用該鏡像的 tag(若是有設置的話)和鏡像 ID 替代。

五、查看結果

指令執行後,就交給程序去處理了。運行時間可能會稍長,請耐心等候,一切順利的話,Terminal 就會下面的提示:
圖片描述

而後在項目的文件夾中(好比 odm_test_1),就能在 odm_orthophoto 和 odm_texturing 目錄中看到對應的輸出結果了。
圖片描述

正射影像的輸出結果的 png 預覽圖:
圖片描述

或許有朋友會說,最後還不是一張常見的無人機俯視航拍圖,但其實 odm_orthophoto 的輸出結果還有一個後綴爲 tif 的 GeoTIFF 文件,這能夠應用在 QGIS 上做爲光柵圖層,供地理信息分析之用(好比實現地圖的修測更新)。

小結

上述教程中的 GIS 術語可能翻譯得不夠到位,若有不妥的地方望請指出。

總體來講,有 docker 這樣的工具能很大程度上減小配置開發環境的時間,也簡化了很多的操做步驟,不過須要注意的是 OpenDroneMap 的項目仍是挺佔用電腦空間的,因此在操做以前,最好能確保電腦有足夠的剩餘空間。

上面的例子採用的是範例素材的航拍圖像,若是要實際應用到本身的項目中,則須要本身使用無人機,結合相關軟件的航線規劃和定時拍攝功能,對某一個地區進行連續拍攝,將拍攝的圖像文件導入到「images」文件夾中,再按教程步驟執行就能實現數據處理了。

此外,Docker 也有 Windows 版本,把教程中 Terminal 的操做換成 Windows 系統的 Cmd,或許也能實現(沒有嘗試過,因此不敢打包票)。

相關文章
相關標籤/搜索