Výukové materiály

Níže najdete pokyny pro některé běžné případy použití.

Vytváření vysoce kvalitních ortofotomap

snímek ortofota OpenDroneMap

Bez jakýchkoli úprav parametrů volí ODM dobrý kompromis mezi kvalitou, rychlostí a spotřebou paměti. Pokud chcete získat kvalitnější výsledky, musíte některé parametry upravit:

  • --orthophoto-resolution je rozlišení ortofota v cm/pixel. Snižte tuto hodnotu pro výsledek s vyšším rozlišením.

  • --ignore-gsd je příznak, který dává ODM pokyn k vynechání určitých optimalizací paměti a rychlosti, které přímo ovlivňují ortofoto. Použití tohoto příznaku zvýší dobu běhu a spotřebu paměti, ale může přinést ostřejší výsledky.

  • --texturing-data-term by měl být v lesních oblastech nastaven na area.

  • --mesh-size by měla být zvýšena na 300000-600000 a --mesh-octree-depth by měla být zvýšena na 10-11 v městských oblastech, aby bylo možné vytvořit lepší budovy/střechy.

Kalibrace kamery

Kalibrace fotoaparátů je u komoditních fotoaparátů zvláštní výzvou. Změny teploty, vibrace, zaostření a další faktory mohou ovlivnit odvozené parametry, což má zásadní vliv na výsledná data. Automatická nebo vlastní kalibrace je u letů dronů možná a žádoucí, ale v závislosti na průběhu letu nemusí automatická kalibrace odstranit z výsledných produktů všechna zkreslení. James a Robson (2014) se ve svém článku Mitigating systematic error in topographic models derived from UAV and ground-based image networks zabývají tím, jak minimalizovat zkreslení způsobené autokalibrací.

obraz vlivu zkreslení objektivu na bowling dat

Efekt bowlingu na mračnu bodů nad sadou více než 13 000 snímků shromážděných Světovou bankou v Tanzanii nad povodím Msimbasi v Dar es Salaamu v Tanzanii, které je náchylné k povodním.

Pro zmírnění tohoto efektu existuje několik možností, ale nejjednodušší jsou následující: letět se dvěma obrazci oddělenými od sebe o 20° a namísto nadiru (přímého směru dolů) použít kameru, která se naklání dopředu o 5°.

animace zobrazující optimum

As this approach takes longer than traditional imaging, pilots and teams may apply this technique to a smaller area and use the collected data to optimize future flights. OpenDroneMap can generate a calibration file called cameras.json from a small sample flight. The calibration file can be used for future flights, mitigating the bowling effect without sacrificing efficiency.

Alternativně lze použít následující experimentální metodu: letět s mnohem menším překrytím, ale se dvěma lety crossgrid (někdy nazývanými crosshatch) oddělenými od sebe 20° s kamerou směřující 5° dopředu.

  • Procento překrytí napříč sítí může být nižší než u paralelních letů. Pro dosažení dobrých výsledků ve 3D budete potřebovat 68% překrytí a sidelap pro ekvivalentní 83% překrytí a sidelap.

  • Chcete-li získat dobré výsledky 2D a 2,5D (digitální model reliéfu), budete potřebovat 42% překrytí a boční překrytí pro ekvivalentní 70% překrytí a boční překrytí.

animace zobrazující experimentální optimum

Vertikálně oddělené letové linie také zlepšují přesnost, ale méně než kamera, která je natočena dopředu o 5°.

obrázek znázorňující vliv vertikálně oddělených letových linií a dopředu namířených kamer na zlepšení vlastní kalibrace.

Z James a Robson (2014), CC BY 4.0

Vytváření digitálních výškových modelů

Ve výchozím nastavení ODM nevytváří DEM. Chcete-li vytvořit digitální model terénu, nezapomeňte zadat příznak --dtm. Chcete-li vytvořit digitální model povrchu, nezapomeňte předat příznak --dsm.

obrázek digitálního modelu povrchu odvozeného z OpenDroneMap

Pro generování DTM se používá jednoduchý morfologický filtr (smrf), který klasifikuje body na pozemní a nepozemní a používají se pouze pozemní body. Filtr smrf lze ovládat pomocí několika parametrů:

  • --smrf-scalar škálovací hodnota. Tento parametr zvyšte u terénů s velkými výškovými rozdíly.

  • --smrf-slope parametr sklonu, který je mírou „tolerance sklonu“. Tento parametr zvyšte u terénů s velkými výškovými rozdíly. Měl by být nastaven na hodnotu vyšší než 0,1 a ne vyšší než 1,2.

  • --smrf-threshold výškový práh. Nastavte tento parametr na minimální výšku (v metrech), kterou očekáváte u objektů, které nejsou na zemi.

  • --smrf-window parametr poloměru okna (v metrech), který odpovídá velikosti největšího prvku (budovy, stromů atd.), který má být odstraněn. Měl by být nastaven na hodnotu vyšší než 10.

Změna těchto možností může výrazně ovlivnit výsledek DTM. Nejlepším zdrojem pro pochopení vlivu parametrů na výstup je přečíst si původní článek An improved simple morphological filter for the terrain classification of airborne LIDAR data (PDF volně k dispozici).

Celkově má na výsledky největší vliv možnost --smrf-threshold.

SMRF se dobře vyhýbá chybám typu I (malý počet zemních bodů chybně klasifikovaných jako nezemní), ale jen „přijatelně“ se vyhýbá chybám typu II (velký počet nezemních bodů chybně klasifikovaných jako zemní). To je třeba vzít v úvahu při generování DTM, které mají být použity vizuálně, protože objekty mylně považované za zem vypadají ve výsledném DTM jako artefakty.

obraz vlivu zkreslení objektivu na bowling dat

Generování DEM ovlivňují dva další důležité parametry:

  • --dem-resolution, který nastavuje výstupní rozlišení rastru DEM (cm/pixel).

  • --dem-gapfill-steps, který určuje počet postupných vrstev DEM, které se mají použít. U městských scén může zvýšení této hodnoty na 4-5 pomoci dosáhnout lepších výsledků interpolace v oblastech, které filtr SMRF ponechává prázdné.

Příklad generování DTM:

docker run -ti --rm -v /my/project:/datasets/code <my_odm_image> --project-path /datasets --dtm --dem-resolution 2 --smrf-threshold 0.4 --smrf-window 24

Measuring stockpile volume

Plánování terénních prací

Povětrnostní podmínky mění osvětlení, a tím ovlivňují výsledky fotografování. Nejlepších výsledků dosáhnete při rovnoměrně zatažené nebo jasné obloze. Dbejte také na nízkou rychlost větru, která umožňuje, aby fotoaparát zůstal během sběru dat stabilní. Abyste se vyhnuli stínům, které na jedné straně zásoby mohou bránit detekci prvků a snižovat počet výsledných bodů, preferujte vždy lety v poledne, kdy je slunce v nadhlavníku, aby bylo vše důsledně osvětleno. Dbejte také na to, aby vzdálenost horizontální viditelnosti pouhým okem odpovídala plánovaným letovým vzdálenostem pro konkrétní projekt, aby kvalitu snímků negativně neovlivňoval prach, mlha, kouř, sopečný popel nebo znečištění.

Letový model

Most stockpile measurement jobs does not require a crosshatch pattern or angled gimbal as the resting angle of stockpile materials allows the camera to capture the entire stockpile sides. Only some special cases where erosion or machinery operations causes steep angles on the faces of the stockpile would benefit of the crosshatch flight pattern and angled camera gimbal but consider that these additional recognized features come at a cost, (in field labor and processing time) and the resulting improvements are sometimes negligible.

Ve většině případů je letový model sekačky na trávu schopen vytvořit velmi přesné modely shromážěných snímků.

jednoduchý vzor letu sekačky na trávu může poskytnout přesné výsledky.

Doporučené překrytí by se mělo pohybovat mezi 75 a 80 % s bočním překrytím v rozmezí 65 až 70 %. S rostoucí výškou letu se rovněž doporučuje mírně zvyšovat překrytí a boční odstup.

Výška letu

Výška letu může být ovlivněna různými modely kamer, ale obecně a pro zajištění rovnováhy mezi kvalitou obrazu a optimalizací letu se doporučuje, aby byl proveden ve výšce 3 až 4násobku nejvyšší výšky shromážděných snímků. Takže pro shromážděné snímky o výšce 10 metrů lze snímky pořizovat ve výšce 40 metrů. S rostoucí výškou letu se doporučuje také zvyšovat překrytí, takže pro let ve výšce 40 metrů lze nastavit 65% boční překrytí a 75% překrytí, ale pro plánovanou výšku 80 metrů 70% boční překrytí a 80% překrytí umožňující rozpoznání a správné zpracování prvků.

GCPs

Pro dosažení přesnosti vyšší než 3 % se doporučuje používat GCP. K zajištění přesných výsledků obvykle stačí 5 distribuovaných GCP. Při umisťování nebo měření GCP by měla být přesnost zařízení větší než GSD. GNSS a totální stanice geodetické třídy jsou určeny k zajištění požadované milimetrové přesnosti.

For further information on the use of GCPs, please refer to the Ground Control Points section.

Parametry zpracování

Vysoce přesného modelu lze dosáhnout pomocí předdefinovaných nastavení WebODM s vysokým rozlišením. Některé parametry pak můžete dále upravit podle potřeby.

Pokud používáte ODM, mohou vám tyto referenční hodnoty pomoci při konfiguraci nastavení procesu.

–dsm: true

–dem-resolution 2.0

–orthophoto-resolution 1.0

–feature-quality high

–pc-quality high

Měření

Vzhledem k tomu, že téměř 50 % materiálu se nachází v prvních 20 % výšky zásoby, je třeba věnovat zvláštní pozornost vhodnému vymezení základní roviny.

téměř 50 % materiálu se nachází v prvních 20 % výšky zásoby.

V ovládacím panelu WebODM Dashboard klikněte na „zobrazit mapu“ a spusťte 2D zobrazení projektu.

V zobrazení 2D mapy klikněte na tlačítko „Změřit objem, plochu a délku“.

klikněte na tlačítko "Změřit objem, plochu a délku".

pak klikněte na „Vytvořit nové měření“.

klikněte na "Vytvořit nové měření"

Začněte umísťovat body, abyste definovali základní rovinu zásoby.

Definice základní roviny zásob

Kliknutím na „Dokončit měření“ proces dokončíte.

Proces dokončíte kliknutím na "Dokončit měření".

V dialogovém okně se na několik sekund zobrazí zpráva “ Výpočet …“ a po dokončení výpočtu se zobrazí naměřená hodnota objemu.

Proces dokončíte kliknutím na "Dokončit měření".

Pokud používáte příkazový řádek OpenDroneMap, můžete soubory dsm použít k měření objemů zásob pomocí jiných programů.

Uvažte také, že jakmile jsou limity shromážděných snímků nastaveny v softwaru, jako je QGis, zjistíte, že existují některé způsoby, jak určit základní rovinu. Takže pro izolované shromážděné snímky, jejichž hranice jsou většinou viditelné, lze použít lineární přístup. Zatímco u shromážděných snímcích nastavených ve svazích nebo v zásobnících je lepší určit základní rovinu pomocí nejnižšího bodu. Pro velké množstcví shromážděných snímků se doporučuje vytvořit trojúhelníkovou 3D plochu pro určení základní roviny. To platí i pro shromážděné snímky vytvořené na nepravidelných plochách.

Očekávaná přesnost

U pečlivě naplánovaných a provedených projektů, zejména pokud je GSD menší než 1 cm, by se očekávaná přesnost měla pohybovat v rozmezí 1 % až 2 %. Výsledná přesnost je srovnatelná s komerčně dostupným fotogrammetrickým softwarem a s přesností získanou pomocí zařízení GNSS geodetické třídy.

Použití aplikace Docker

Vzhledem k tomu, že mnoho uživatelů používá k nasazení OpenDroneMap docker, může být užitečné porozumět některým základním příkazům, abychom mohli instance dockeru prozkoumat, když se něco pokazí nebo nás zajímá, co se děje. Docker je kontejnerové prostředí, jehož účelem je mimo jiné usnadnit nasazení softwaru nezávisle na místním prostředí. V tomto směru se podobá virtuálním strojům.

Několik jednoduchých příkazů nám může výrazně zlepšit práci s dockerem.

Výpis strojů Docker

Můžeme začít výpisem dostupných strojů docker na aktuálním počítači, který používáme, následujícím způsobem:

> docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                    NAMES
2518817537ce        opendronemap/odm       "bash"                   36 hours ago        Up 36 hours                                  zen_wright
1cdc7fadf688        opendronemap/nodeodm   "/usr/bin/nodejs /va…"   37 hours ago        Up 37 hours         0.0.0.0:3000->3000/tcp   flamboyant_dhawan

Pokud chceme zobrazit stroje, které sice neběží, ale stále existují, můžeme přidat příznak -a:

> docker ps -a
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS                    PORTS                    NAMES
2518817537ce        opendronemap/odm       "bash"                   36 hours ago        Up 36 hours                                        zen_wright
1cdc7fadf688        opendronemap/nodeodm   "/usr/bin/nodejs /va…"   37 hours ago        Up 37 hours               0.0.0.0:3000->3000/tcp   flamboyant_dhawan
cd7b9585b8f6        opendronemap/odm       "bash"                   3 days ago          Exited (1) 37 hours ago                            nostalgic_lederberg
e31010c00b9a        opendronemap/odm       "python /code/run.py…"   3 days ago          Exited (2) 3 days ago                              suspicious_kepler
c44e0d0b8448        opendronemap/nodeodm   "/usr/bin/nodejs /va…"   3 days ago          Exited (0) 37 hours ago                            wonderful_burnell

Přístup k protokolům instance

Pomocí ID CONTAINER nebo názvu můžeme přistupovat ke všem protokolům dostupným v počítači následujícím způsobem:

> docker logs 2518817537ce

Je pravděpodobné, že bude nepřehledně velký, ale můžeme použít znak pipe | a další nástroje, abychom z protokolů získali jen to, co potřebujeme. Například můžeme pomalu procházet protokoly pomocí příkazu more:

> docker logs 2518817537ce | more
[INFO]    DTM is turned on, automatically turning on point cloud classification
[INFO]    Initializing OpenDroneMap app - Mon Sep 23 01:30:33  2019
[INFO]    ==============
[INFO]    build_overviews: False
[INFO]    camera_lens: auto
[INFO]    crop: 3
[INFO]    debug: False
[INFO]    dem_decimation: 1
[INFO]    dem_euclidean_map: False
...

Stisknutím klávesy Enter nebo Mezerník, kláves se šipkami nebo kláves Stránka nahoru či Stránka dolů se nyní můžeme pohybovat v protokolech. Malé písmeno Q nám umožní uniknout zpět do příkazového řádku.

We can also extract just the end of the logs using the tail command as follows:

> docker logs 2518817537ce | tail -5
[INFO]    Cropping /datasets/code/odm_orthophoto/odm_orthophoto.tif
[INFO]    running gdalwarp -cutline /datasets/code/odm_georeferencing/odm_georeferenced_model.bounds.gpkg -crop_to_cutline -co NUM_THREADS=8 -co BIGTIFF=IF_SAFER -co BLOCKYSIZE=512 -co COMPRESS=DEFLATE -co BLOCKXSIZE=512 -co TILED=YES -co PREDICTOR=2 /datasets/code/odm_orthophoto/odm_orthophoto.original.tif /datasets/code/odm_orthophoto/odm_orthophoto.tif --config GDAL_CACHEMAX 48.95%
Using band 4 of source image as alpha.
Creating output file that is 111567P x 137473L.
Processing input file /datasets/code/odm_orthophoto/odm_orthophoto.original.tif.

Hodnota -5 říká příkazu tail, aby nám poskytl pouze posledních 5 řádků protokolů.

Přístup k instancím z příkazového řádku

Někdy musíme jít při zkoumání procesu pro OpenDroneMap trochu hlouběji. Za tímto účelem můžeme získat přímý přístup do strojů z příkazového řádku. Za tímto účelem můžeme použít docker exec ke spuštění příkazového řádku bash v počítači, který nás zajímá, následujícím způsobem:

> docker exec -ti 2518817537ce bash
root@2518817537ce:/code#

Nyní jsme přihlášeni do naší instance dockeru a můžeme prozkoumat počítač.

Úklid po Dockeru

Docker má žalostnou spotřebu místa a ve výchozím nastavení neuklízí přebytečná data a stroje po dokončení procesů. To může být výhodné, pokud potřebujeme přistupovat k procesu, který byl mezitím ukončen, ale nese to s sebou břemeno, že v průběhu času využívá stále větší množství úložiště. Maciej Łebkowski má výborný přehled o tom, jak spravovat nadbytečné využití disku v nástroji docker.

Using Singularity

‚Singularity <https://sylabs.io/>‘_ is another container platform able to run Docker images. Singularity could be used from laptop to large HPC clusters, local university or company clusters, a single server, in the cloud… A container is a single file without anything else to install

Downloading image

Singularity can use ODM Docker container after their download. It creates .sif images

For latest ODM Docker image

> singularity pull --disable-cache  docker://opendronemap/odm:latest

For latest ODM GPU Docker image

> singularity pull --disable-cache  docker://opendronemap/odm:gpu

Using Singularity SIF image

As Singularity has a different way to map directories than Docker, a bash script file is a good solution to map ODM directories. Here is a linux example for ODM

images_dir=/path_to_image_dir/
name=`basename $images_dir`
output_dir=/path_to_output_directories/$name
mkdir -p $output_dir

singularity run
--bind $images_dir:/$output_dir/code/images,\
--writable-tmpfs odm_latest.sif  \
--orthophoto-png --mesh-octree-depth 12 --ignore-gsd --dtm \
--smrf-threshold 0.4 --smrf-window 24 --dsm --pc-csv --pc-las --orthophoto-kmz \
--ignore-gsd  --matcher-type flann --feature-quality ultra --max-concurrency 16 \
--use-hybrid-bundle-adjustment --build-overviews --time --min-num-features 10000 \
--project-path $output_dir

Here is a linux example for the ODM with GPU

images_dir=/path_to_image_dir/
name=`basename $images_dir`
output_dir=/path_to_output_directories/$name
mkdir -p $output_dir

singularity run
--bind $images_dir:/$output_dir/code/images,\
--writable-tmpfs odm_latest.sif  \
--orthophoto-png --mesh-octree-depth 12 --ignore-gsd --dtm \
--smrf-threshold 0.4 --smrf-window 24 --dsm --pc-csv --pc-las --orthophoto-kmz \
--ignore-gsd  --matcher-type flann --feature-quality ultra --max-concurrency 16 \
--use-hybrid-bundle-adjustment --build-overviews --time --min-num-features 10000 \
--project-path $output_dir

Použití ODM z místa s nízkou šířkou pásma

Co to je a pro koho je to určeno?

Prostřednictvím Ivan Gayton’s repo.

OpenDroneMap nelze vždy efektivně nastavit lokálně - ke zpracování velkých datových souborů je zapotřebí poměrně výkonný stroj, takže pro lidi v terénu může být někdy řešením cloudový stroj. V mnoha nízkopříjmových prostředích je však problémem šířka pásma. Toto omezení nelze zcela vyřešit, ale následující metoda rozumně snižuje šířku pásma potřebnou ke zpracování datových sad snímků z dronů v cloudu z afrických lokalit.

Představíme vám složitý, ale proveditelný postup pro vytvoření cloudového počítače OpenDroneMap (ne CloudODM, jen cloudové instance ODM, kterou spustíte z příkazového řádku) a jeho použití ke vzdálenému zpracování velkých sad fotografií. Vyžaduje to znalost používání příkazového řádku Unix, ssh, účet Digital Ocean (Amazon AWS by fungoval také, možná s mírnými rozdíly v nastavení) a mírnou úroveň obecné počítačové gramotnosti. Pokud nejste dostatečně počítačově zdatní a jste ochotni se potýkat s poněkud složitějším nastavením, měli byste se zaměřit na CloudODM.

Celý proces je většinou zaměřen na někoho, kdo létá na rozsáhlé mise v Africe nebo podobné lokalitě a chce zpracovat data co nejdříve ještě v terénu. Proto klade důraz na pracovní postup, jehož cílem je snížit šířku pásma/přenos dat, spíše než jen na nejjednodušší způsob spuštění ODM.

Kroky

Instalace

  • Vytvořte si droplet Digital Ocean s alespoň 4 GB paměti RAM. To bude stát asi 20 dolarů měsíčně. Pokud máte méně než 4 GB RAM, instalace se pravděpodobně nezdaří. Při skutečném spuštění procesu ODM změníme velikost na mnohem větší - a dražší - cloudový stroj, ale mezi jednotlivými spuštěními jej můžete zmenšit na druhý nejlevnější droplet, který stojí jen 10 USD/měsíc (nejlevnější droplet za 5 USD/měsíc je vybaven tak malým diskem, že na něj nelze zmenšit velikost zpět).

    • Mělo by se jednat o instanci Ubuntu 18.04, aby byla zajištěna kompatibilita závislostí.

    • Vytvořte uživatele s právy sudo. S tím vám pomůže neuvěřitelně dobrá dokumentace společnosti Digital Ocean. V našem případě jsme nastavili uživatele s názvem odm, takže se k němu připojíte příkazem ssh odm@xxx.xxx.xxx.xxx (kde x znamená adresu IPv4 vašeho serveru). Pokud se chcete přesně držet tohoto příkladu, používejte uživatelské jméno odm; pak bude vaše instalační cesta /home/odm/ODM/` a bude odpovídat všem příkladům v tomto dokumentu.

    • Proveďte sudo apt update a sudo apt upgrade, abyste se ujistili, že váš server není nebezpečně bez aktualizací. Ujistěte se, že jste zůstali u Ubuntu 18.04.

  • Stáhněte a nainstalujte na něj ODM ze stránky ODM Github (běžný, ne WebODM) pomocí následujících příkazů:

git pull https://github.com/OpenDroneMap/ODM.git
cd ODM
bash configure.sh install
  • Pokud tak učiníte z výchozí domovské složky svého uživatele (tj. odm), bude cesta k instalaci /home/odm/ODM (zkráceně ~/ODM/).

  • Je třeba nastavit některé proměnné prostředí. Otevřete soubor ~/.bashrc na svém počítači a přidejte na konec následující 3 řádky (Z ODM github). Soubor můžete otevřít pomocí nano ~/.bashrc (nebo jakéhokoli textového editoru, který používáte místo nano). Nezapomeňte nahradit /home/odm/` správnou cestou k umístění, kam jste rozbalili OpenDroneMap, pokud jste neprovedli vše přesně jako v našem příkladu (například pokud jste v nastavení serveru použili jiné uživatelské jméno):

export PYTHONPATH=$PYTHONPATH:/home/odm/ODM/SuperBuild/install/lib/python2.7/dist-packages
export PYTHONPATH=$PYTHONPATH:/home/odm/ODM/SuperBuild/src/opensfm
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/odm/ODM/SuperBuild/install/lib
  • Všimněte si, že readme ODM na githubu obsahuje drobnou chybu, název instalačního adresáře bude ODM, nikoli OpenDroneMap (uvidíte to, když porovnáte výše uvedené pokyny s pokyny na ODM GitHubu).

  • Abychom zabránili pádu, kdy proces split-merge nenajde svůj vlastní spustitelný soubor, přidáme do ~/.bashrc následující řádky (pokud jste nastavili věci jinak než v našem příkladu, upravte cesty):

export PYTHONPATH=$PYTHONPATH:/home/odm/ODM/
export PATH=$PATH:/home/odm/ODM/
  • Nyní budete potřebovat druhý cloudový pevný disk (v žargonu Digital Ocean „svazek“), který bude dostatečně velký pro správu vašeho projektu. Zdá se, že pravidlem je desetinásobek velikosti vaší surové sady bitových kopií; my máme 100GB sadu bitových kopií a nastavili jsme 1000GB svazek (po dokončení běhu byste se měli moci zbavit většiny této drahé kapacity disku, ale je potřeba k dokončení procesu). Nastavte svazek, připojte jej ke svému dropletu a konfigurujte jeho přípojný bod (v tomto příkladu jej nastavíme na /mnt/odmdata/).

Příprava dat a projektu

  • Obrázky nyní odešlete na server. Můžete použít Zabezpečené kopírování (scp) takto: scp -r /cesta/do/moje/složkasobrázky odm@xxx.xxx.xxx.xxx:/mnt/odmdata/.

    • Tím se celá složka plná obrazů přesune (to je to, co dělá volba -r, „rekurzivní“) do vzdáleného umístění (v našem příkladu do svazku, který jsme připojili ke cloudovému počítači na /mnt/odmdata/`.

    • To zabere určitou šířku pásma. Velikost souborů nelze obejít.1, 2

Struktura adresáře

ODM vyžaduje, aby byly adresáře v počítači nastaveny přesně tak, jak mají být. Rozhodující je instalační složka (pokud jste instalovali výše uvedeným způsobem, je to /home/odm/ODM/) a složka projektu (tj. /mnt/odmdata/myproject/).

  • Soubor settings.yaml ODM určuje jediný nadřazený adresář obsahující všechny projekty. To je to, co je uvedeno v řádku cesty k projektu v souboru settings.yaml (poněkud matoucí je, že se ve skutečnosti jedná o rodičovský adresář jednotlivých adresářů projektů, které jsou při volání ODM určeny parametrem názvu projektu). Upravte soubor settings.yaml a nastavte parametr project_path na (podle našeho příkladu nastavení) /mnt/odmdata/, což v tomto případě ukazuje na námi vytvořený svazek. V jeho rámci se vytvoří jednotlivé adresáře projektu.

  • Individual project directories, i.e. /mnt/odmdata/myproject/ contain the gcp_list.txt file, the image_groups.txt file, and the images folder for each project.

  • Složka images, tj. /mnt/odmdata/myproject/images/, obsahuje všechny obrázky. Pokud to takto nastavíte, obrázky se nebudou znovu kopírovat, protože už jsou v adresáři, ve kterém je ODM chce mít.

  • Upravte soubor settings.yaml tak, aby určoval nadřazený adresář složky projektu (v tomto případě námi vytvořený svazek, /mnt/odmdata/). Ujistěte se, že obrázky jsou na správném místě, tj. /mnt/odmdata/myproject/images, a ostatní pomocné soubory (gcp_list.txt a image_groups.txt) jsou v kořenové složce /mnt/odmdata/myproject/.

  • pokud máte obrázky v samostatných složkách pro jednotlivé bloky AOI nebo lety (což budete mít, pokud byla správa letů organizována), můžete vytvořit image_groups. txt se zaklínadly for i in *; do cd $i; for j in *; do echo "$j $i" >> ../$i.txt; done; cd ../; done; a cd ../, for i in myproject/*.txt; do cat $i >> image_groups.txt; done;. To by mělo vytvořit soubor se správnou strukturou: seznam všech souborů obrázků a „název skupiny“ za každým z nich (což v tomto případě bude jednoduše název složky, ze které pochází). Poté přesuňte všechny soubory obrázků do jediného adresáře s názvem images v kořenovém adresáři projektu (tedy /mnt/odmdata/myproject/images/). Soubor image_groups.txt umožní ODM sledovat, které obrázky patří do stejné dávky, i když jsou všechny v jednom adresáři.

Resize droplet, pull pin, run away

  • Vypněte a změňte velikost počítače na přiměřeně monstrózní počet procesorů a množství paměti. Používám paměťově optimalizovaný stroj s 24 dedikovanými vCPU a 192 GB RAM (což stojí asi 1,60 USD/hod - což se rychle sčítá, je to přes 1000 USD/měsíc). Restartujte a rychle se pusťte do práce, abyste neztráceli drahý čas na velké kapky.

  • Spusťte proces ODM přes ssh pomocí nohup (takže v případě přerušení bude zpracování pokračovat).

    • Alternativně můžete použít GNU screen pro spuštění procesu z relace obrazovky, která se nezastaví, pokud je vaše připojení přerušeno; spusťte screen a použijte a d pro odpojení, screen -r pro opětovné připojení. Použitím screen však nezískáte logovací soubor se všemi konzolovými výstupy, pokud neuděláte něco specifického pro jejich zachycení, zatímco nohup vám poskytne soubor se všemi konzolovými výstupy, včetně chybových hlášení, zdarma.

    • Poznámka: od roku 2020-03 se zdá, že normální zaklínadlo python run.py -i /path/to/image/folder project_name nefunguje; parametr -i nebo --image způsobuje podivnou chybu. Proto parametr -i vypustíme a budeme se spoléhat na řádek adresáře projektu v souboru settings.yaml, který nasměruje ODM na správné místo. Nyní používáme (včetně split-merge):

nohup python run.py myproject --split 1 --split-overlap 0 --ignore-gsd --depthmap-resolution 1000 --orthophoto-resolution 5 --dem-resolution 15 --pc-las --dsm
  • Tím se ODM přesměruje na složku (v tomto příkladu) /mnt/odmdata/myproject/. Pokud jsou soubory image_groups.txt a gcp_list.txt v této složce, obrázky jsou ve složce /mnt/odmdata/myproject/images/ a cesta k projektu v souboru settings.yaml je /mnt/odmdata/, nebude se plýtvat časem a místem při kopírování obrázků.

  • Všimněte si, že to předpokládá, že máte soubor image_groups.txt. Pokud ne, pak -split-overlap 0 pravděpodobně všechno pokazí a --split 1 je doslova náhodné číslo, které bude po načtení souboru image_groups.txt ignorováno (myslím, že normálně kontroluje, do kolika skupin rozdělí sadu obrázků, ale v našem případě předpokládáme, že obrázky jsou již rozumně seskupeny). Pokud nemáte velkou sadu dat (>1000 obrázků), vynechejte volby --split a --split-overlap.

  • Sledujte postup pomocí Tail (abyste věděli, kdy je hotovo).

tail -f nohup.out
  • Možná budete chtít sledovat htop (abyste měli přehled o využití prostředků a v budoucnu mohli roztočit jen tak velký stroj, jak je potřeba).

Po jeho skončení (za předpokladu, že přežijete tak dlouho)

  • Jakmile zpracování skončí, vypněte stroj a změňte jeho velikost zpět na levnou minimální kapacitu.

  • Spusťte zálohování počítače a přihlaste se pomocí ssh.

  • Pokud chcete ušetřit šířku pásma pro stahování, můžete ortofoto komprimovat pomocí GDAL. Nepřidávejte přehledy, to udělejte na svém lokálním počítači, abyste soubor před stažením nezvětšovali.

gdal_translate -co COMPRESS=JPEG -co PHOTOMETRIC=YCBCR -co TILED=YES -b 1 -b 2 -b 3 -mask 4 --config GDAL_TIFF_INTERNAL_MASK YES /path/to/original/filename.extension /path/to/output.tif
  • Stáhněte pomocí scp: scp odm@xxx.xxx.xxx.xxx:/mnt/odmdata/myproject/odm_orthophoto/odm_orthophoto.tif (nebo si stáhněte komprimovanou verzi, kterou jste vytvořili v posledním kroku).

  • Jakmile soubor získáte v místním počítači, můžete pomocí QGIS přidat přehledy („pyramidy“) nebo použít příkaz GDAL gdaladdo -r average /path/to/image.tif 2 4 8 16 32 64 128 256 512 1024.

  • Složky odm_texturing, odm_georeferencing a odm-dem můžete archivovat pomocí tar, abyste je mohli stáhnout vcelku (a možná i menší).

tar -zcvf archivename /path/to/folder

Použití modulu Potree 3D viewer na WebODM

Kamery

Aktivací této funkce zobrazíte polohu kamery.

Kliknutím na ikonu fotoaparátu můžete také zobrazit jednotlivé snímky v rámečku v pravém horním rohu. Kliknutím na rámeček snímku se přepnete do režimu celé obrazovky.

V rámci snímku jsou odkazy na stažení snímku a souboru kamery GeoJSON.

Umístění kamery

Texturovaný model

Aktivací této funkce zobrazíte načtení texturovaného modelu. V závislosti na velikosti souboru a rychlosti připojení může načtení trvat několik sekund.

Texturovaný model

Vzhled

Point budget

Pro účely vzhledu i výkonu lze spravovat rozpočet bodů na scéně. Některým starým a méně výkonným strojům by prospěl rozpočet 500 000 bodů, zatímco většina strojů střední třídy je schopna zvládnout rozpočet 1 až 2 miliony bodů.

Rozpočet 5 až 7 milionů bodů vytváří hladký 3d model mračna bodů, ale může být náročný na zdroje.

Výchozí hodnota bodového rozpočtu je nastavena na 1 000 000.

Zorné pole

Za účelem kontroly prvků modelu, které mají být zahrnuty do scény, lze upravit zorné pole. Výchozí hodnota je nastavena na 60 stupňů.

Nastavení zorného pole

Osvětlení očního obzoru

Modul prohlížeče Potree Point Cloud 3d dokáže implementovat eye dome-lighting, model osvětlení, který zvýrazňuje tvary objektů.

Eye Dome-lighting seskupuje objekty, stínuje jejich obrysy a zlepšuje vnímání hloubky ve vědeckých vizualizacích. Je užitečné pro rozpoznávání a měření struktur v modelu. Lze jej upravit nastavením poloměru, síly a krytí.

Ve výchozím nastavení je funkce Eye Dome-Lighting v prohlížeči Potree 3D povolena, ale lze ji vypnout kliknutím na možnost povolit.

Nastavení osvětlení oční kopule

Pozadí

Pozadí prohlížeče Potree 3D lze upravit. Dostupné možnosti jsou Skybox / Gradient / Černá / Bílá / Žádná.

Volba pozadí

Ostatní

Kvalita rozstřiku = Kvalitu rozstřiku lze nastavit na standardní nebo vysokou kvalitu a zlepšit tak vzhled modelu.

Minimální velikost uzlu = volba Minimální velikost uzlu ovlivní hustotu bodů reprezentovaných uzlů.

Box = Zobrazení boxů uzlů.

Zamknout zobrazení = uzamkne zobrazení mračna bodů a zabrání načtení nebo vyjmutí bodů do modelu.

Nástroje

Měření

Modul Potree 3D viewer poskytuje několik nástrojů pro měření. Tato sada nástrojů se skládá z 12 prvků. Obsahuje také ovládací prvky pro zobrazení nebo skrytí výsledných popisek měření.

Měření se provádí kliknutím levým tlačítkem myši na požadované body a u některých nástrojů je pro ukončení procesu nutné kliknutí pravým tlačítkem myši.

Nástroje - Měřící nástroje

Úhel

Tento nástroj měří trojrozměrný úhel tvořený přímkami spojujícími 3 body. Chcete-li zahájit měření, klikněte na ikonu úhlu, poté klikněte levým tlačítkem myši na 3 body a proces se automaticky ukončí. Další informace získáte také výběrem tohoto prvku v sekci scéna.

Bod

Tento nástroj zvýrazní vybraný bod a zobrazí jeho souřadnici XYZ. Chcete-li zahájit měření, klikněte na ikonu bodu, poté klikněte na požadovaný bod a proces se automaticky ukončí. Další informace lze získat také výběrem tohoto prvku v sekci scény.

Vzdálenost

Tento nástroj měří trojrozměrnou vzdálenost přímek spojujících řadu bodů. Chcete-li zahájit měření, klikněte na ikonu vzdálenosti a začněte klikat na požadované body (dva nebo více). Měření ukončíte kliknutím pravým tlačítkem myši. Další informace, jako je například Celková délka, lze získat také výběrem tohoto prvku v sekci Scéna.

Výška

Tento nástroj měří výšku nebo svislou vzdálenost mezi dvěma body. Chcete-li zahájit měření, klikněte na ikonu výšky a poté klikněte na požadované dva body. Proces se automaticky ukončí. Další informace získáte také výběrem tohoto prvku v sekci Scéna.

Height measurement

Kruh

Tento nástroj měří poloměr kružnice tvořené třemi body. Chcete-li zahájit měření, klikněte na ikonu kružnice a poté klikněte na požadované dva body. Proces se automaticky ukončí. Další informace, jako je Obvod, lze získat také výběrem tohoto prvku v sekci Scéna.

Azimut

Tento nástroj měří azimutální úhel přímky. Tato přímka je tvořena dvěma body vybranými uživatelem, úhel se měří ve stupních ve směru hodinových ručiček od 0 do 360 a začíná od zeměpisného severu. Chcete-li zahájit měření, klikněte na ikonu azimutu a poté klikněte na požadované dva body. Proces se automaticky ukončí. Další informace lze získat také výběrem tohoto prvku v sekci scény.

Oblast

Tento nástroj měří vodorovnou plochu tvořenou polygonem. Chcete-li zahájit měření, klikněte na ikonu plochy a začněte klikat na body tvořící požadovaný polygon (tři nebo více). Měření ukončíte kliknutím pravým tlačítkem myši. Další informace získáte také výběrem tohoto prvku v sekci scéna.

Objem (krychle)

Tento nástroj měří objem tvořený krychlí. Chcete-li zahájit měření, klikněte na ikonu objemu (krychle) a kliknutím na model umístěte krychli. Pomocí zobrazených obslužných programů je možné krychli přemístit, změnit její rozměr a otočit ji. Měření ukončíte kliknutím pravým tlačítkem myši. Další informace lze získat také výběrem tohoto prvku v sekci scény.

Objem (koule)

Tento nástroj měří objem tvořený koulí. Chcete-li zahájit měření, klikněte na ikonu objemu (koule) a kliknutím na model umístěte kouli. Pomocí zobrazených obslužných programů je možné kouli přemístit, změnit její rozměr a otočit ji. Měření ukončíte kliknutím pravým tlačítkem myši. Další informace lze získat také výběrem tohoto prvku v sekci scény.

Výškový profil

Tento nástroj vytvoří na modelu výškový profil tvořený čarou. Chcete-li zahájit měření, klikněte na ikonu Výškový profil a poté vytvořte na modelu čáru kliknutím na požadované body (dva nebo více). Měření ukončíte kliknutím pravým tlačítkem myši. Další informace a možnosti, například „Zobrazit 2d profil“, lze získat také výběrem tohoto prvku v sekci scény.

Height profile

Poznámka

Tento nástroj vytvoří na zvýrazněném bodě modelu anotační štítek. Chcete-li zahájit měření, klikněte na ikonu anotace a poté klikněte na požadovaný bod. Proces se automaticky ukončí. Chcete-li anotaci upravit, vyberte tento prvek v sekci scény a poté upravte Nadpis a Popis.

Odstranit měření

Tento nástroj odstraní všechna měření na modelu. Chcete-li odstranit všechna měření, klikněte na ikonu „Odstranit měření“.

Ořez

Tools - Clipping tools

Mračno bodů lze oříznout výběrem oblasti. Mezi možnosti oříznutí patří žádné / zvýraznění / vnitřní / vnější.

Chcete-li mračno bodů oříznout, klikněte na ikonu oříznutí svazku, umístěte krychli na model a přemístěte ji, změňte její rozměry a otočte ji tak, aby obsahovala požadovanou oblast. Jako metoda oříznutí je ve výchozím nastavení nastaveno zvýraznění. Pokud chcete zobrazit pouze body obsažené v krychli, klikněte na „Inside“ (Uvnitř), v opačném případě klikněte na „Outside“ (Vně).

Chcete-li odstranit ořezový objem nebo polygony, klikněte na ikonu „Odstranit všechna měření“.

Nástroje - Ořezávání

Scéna

V části Scéna se zobrazí strom souborů obsahující všechny prvky scény. Prvky jsou uspořádány do šesti skupin, kterými jsou Mračna bodů / Měření / Anotace / Ostatní / Vektor / Obrázky.

Každý prvek v těchto skupinách lze vybrat a získat další informace nebo ovládat jeho vlastnosti.

Například vlastnosti mračen bodů lze upravit tak, aby zobrazovaly nadmořskou výšku, a také lze přizpůsobit barevnou rampu.

Nástroje - Ovládací prvky navigace

Naučte se upravovat a pomozte zlepšit tuto stránku!