DORIS pro neznalce a znalce Linuxu

Úvod

DORIS (Delft Object-Oriented Radar Interferometric Software) je software provádějící interferometrické zpracování. Je open-source a je možno jej nainstalovat na Linux a podobné systémy, možno i na Windows pod cygwin a podle posledních zpráv i na Windows přímo, což ale samotní autoři nedoporučují.

První možnost tedy je, že si DORIS nainstalujete doma, což nedoporučujeme. Druhou možností je práce z domu na dálku (a samoszřejmě práce ve škole, je-li volný počítač). DORIS je nainstalován na počítačích ldpz7.fsv.cvut.cz a k153capko.fsv.cvut.cz. Konto dostanete na požádání.

Pro připojení z domova (pod Windows) potřebujete programy putty a winscp. Putty je program pro vzdálenou práci (otevře se vám terminál a zadáváte příkazy), winscp slouží pro upload a download souborů.

Nikdy bezdůvodně nezpracovávejte v DORISu celou scénu; nejprve si udělejte výřez pomocí programu cpxfiddle. Takové zpracování trvá strašně dlouho, má tendenci padat (myslím že při RESAMPLE, nejpozději při UNWRAP) a je zbytečné. Pro testování různých metod zpracování doporučuji výřez 1024 pixelů v range směru (pixels) a 4096 pixelů ve směru azimutu (lines). Pokud chcete při kroku COARSE_CORR použít metodu mag_fft, je nutné, aby byla velikost výřezu dána mocninami dvou.

Výřezy scény

Pro posouzení oblasti, kterou chcete vyřezat, je třeba (celý) snímek nejprve zkonvertovat na obrázek, který bude obsahovat pouze magnitudu. To uděláte např.

cpxfiddle -w5616 -osunraster -qmag -fci2 -- data.short.slc > obraz.ras
convert obraz.ras obraz.tiff

a v obraz.tiff si zobrazíte jakýmkoli prohlížečem na obrázky. Naše současné scény jsou všechny z descending passu, tzn. družice letí přibližně ze severu na jih. Radar míří vždy vpravo, což znamená, že před interpretací je nutno všechny snímky, interferogramy a podobně zrcadlově otočit podle svislé osy. Při výběru výřezu toto nedělejte; v případě, že to uděláte, je třeba přepočítat souřadnice výřezu tak, aby odpovídaly původnímu snímku.

Použití cpxfiddle pro výřez scény:

cpxfiddle -w5616 -oshort -fci2 -qnormal -px1 -Px2 -ly1 -Ly2 -- puvodni_soubor.short.slc > vyrez.short.slc

Hodnoty x1, x2, y1, y2 jsou okraje výřezu (x - pixels, směr range; y - lines, směr azimutu). Velikost souboru, ve kterém je výřez, pak je přesně (x2-x1+1)*(y2-y1+1)*4 bytů. Velikost souborů v adresáři získáte zadáním ls -l

Princip DORISu

Zpracování v DORISu se provádí po krocích. Tyto kroky (alespoň ty nejdůležitější) najdete v téměř každém z našich článků. Vzhledem k tomu, že dávky dostanete předpřipraveny, nemusíte souslednost kroků řešit.

DORIS se spouští dávkově, tedy připravíte vstupní soubor (dávku) a pak spustíte zpracování. Dávka je rozdělena do čtyř základních částí (řádky začínající písmenem c označují komentáře, stejně tak je komentářem jakýkoli text za dvěma lomítky):

Kromě dávek jsou také důležité log soubory jednotlivých snímků a celého páru (tedy celkem tři). Za hlavičkou následují dvě důležité části:

Více podrobností najdete v DORIS manuálu.

Pořadí a význam kroků

Po té, co byla data načtena, provedeny výřezy a spočteny přesné orbity (naše log soubory již tyto kroky obsahují, výřezy je třeba dělat ručně a log soubor příslušně upravit, se provádějí následující kroky:

  1. COARSEORB: spočte offset snímků z přesných orbit družic
  2. COARSECORR: spočte offset snímků z magnitudy obrazu, je však předem nutno znát tento offset přibližně; výsledek s přesností na několik málo pixelů
  3. M_FILTAZI: filtrace master snímku ve směru azimutu
  4. S_FILTAZI: filtrace slave snímku ve směru azimutu
  5. FINE: jemná koregistrace, vychází z údaje COARSECORR a spočte offset v mnoha oknech snímku
  6. COREGPM: proloží offsety z FINE polynomem daného stupně
  7. RESAMPLE: provede převzorkování slave snímku na master
  8. FILTRANGE: filtrace obou snímku v range směru - provede odříznutí nepřekrývajících se částí spektra
  9. INTERFERO: vypočte interferogram (odečte fáze obou snímků)
  10. COMPREFPHA: vypočte "flat-Earth fázi"
  11. SUBTRREFPHA: odečte "flat-Earth fázi" od interferogramu
  12. COHERENCE: spočte koherenci (spolehlivost) interferogramu
  13. COMPREFDEM: spočte fázi odpovídající danému DEM (resp. konvertuje DEM do systému radaru, výsledek vypadá jako nezašuměný interferogram)
  14. SUBTRREFDEM: odečte od interferogramu fázi spočtenou v COMPREFDEM
  15. FILTPHASE: vyfiltruje fázi, aby byla méně zašuměná
  16. UNWRAP: rozbalí fázi, aby odpovídala např. výšce (po přenásobení a přičtení konstanty)
  17. DINSAR: provede diferenciální interferometrii: od jednoho interferogramu odečte jiný (přeškálovaný)
  18. SLANT2H: provádí geocoding, tj. spočte zeměpisnou šířku a délku (a výšku) každého pixelu - nutno provádět s topografickým interferogramem a pozor na aditivní konstantu fáze (nutno ověřit)

V případě použití pro výpočet DEM se neprovádějí kroky 13, 14, 17. V případě two-pass metody pro zjišťování deformací (tj. použití dvou snímků a odečtení topografie na základě externího DEM) se vynechají kroky 16, 17, v případě three-pass metody pro zjišťování deformací (tj. použití jiného interferogramu pro odečet topografie - obě dvojice mají společný master snímek) se vynechají kroky 13 a 14. Rozbalení fáze je nutno v tomto případě provést pouze u snímku, který se používá k odečtení topografie.

Dvě "zrady" DORISu

Při zpracování je třeba si dát pozor na dvě okolnosti:

Praktické použití

Pomocí cp rozkopíruju dávku a případně ji upravím, nakopíruju ji nejlépe do adresáře, ve kterém mám data, která chci zpracovávat. Nutno zkontrolovat názvy souborů, aby byly log soubory přítomny (pokud nejsem úplně na začátku). Nezačínají-li názvy souborů lomítkem (ani dvěma tečkami), jedná se o soubory v aktuálním adresáři.

Ovládání editoru emacs a další linuxové příkazy najdete zde.

Doris se spouští zápisem doris davka.in, kde davka.in je vstupní soubor (může se jmenovat jakkoli). Pokud to takhle zapíšeš, na terminál, ze kterého to pustíš, se bude zapisovat moooooc informačních (případně chybových) hlášek, což zdržuje, zvlášť když pracuješ vzdáleně. Proto to častěji pouštíme příkazem doris davka.in > /dev/null, kde se většina hlášek zahodí (ne všechny a ty chybové by měly z velké části zůstat, takže se dá odhalit chyba. Nicméně na tom terminálu nelze stále nic jiného dělat (resp. spouštět jiné programy).

Nedoporučuju spouštět pomocí doris davka.in >/dev/null &, což by sice mělo umožnit na tom terminálu něco dělat, nicméně těch hlášek je i tak dost, takže budou rušit. Pro další práci je lepší otevřít další terminál.

Zpracování trvá několik minut až několik hodin (nejdelší čas vyžaduje RESAMPLE (u velkých snímků) a UNWRAP (tam záleží i na topografii snímku)). Taky samozřejmě záleží, kolik kroků najednou spustíš.

V žádném z dříve zmíněných příkazů nelze po spuštění DORISu se odhlásit, protože DORIS spadne. Však v některých případech (UNWRAP) lze to pustit "přes noc" a svůj domácí počítač vypnout, a to následujícím způsobem: nohup doris davka.in &. V tom případě nelze hlášky filtrovat a hlášky se vám ukládají do souboru nohup.out (možná lze změnit, ale nevím jak), který najdete v adresáři, ze kterého jste to spustili. Při prohlížení tohoto souboru (je typicky velmi velký, můžeš se dívat jen na posledních n řádek tak, že napíšete tail -n nohup.out (dosaď za n přirozené číslo). Prosím, krok UNWRAP spouštěj v noci, o víkendech nebo po předchozí dohodě (na počítači se typicky při tom nedá nic dělat :-( ).

Zobrazení interferogramů

DORIS používá data ve třech základních formátech: jsou to 2-bytový complex short integer, zkratka ci2. Na každý pixel zde připadají 4 byty dat (2 byty reálná složka, 2 byty imaginární složka). Takto jsou typicky reprezentována pouze data vstupní, a to až po krok FILTRANGE. Interferogramy (a následující mezivýsledky) jsou již uloženy ve 4-bytovém complex realu (cr4), kde každému pixelu již odpovídá 8 bytů. Reprezentace je obdobná.

Po rozbalení fáze nelze již data ukládat v komplexním formátu, vyjádřeném reálnou a imaginární složkou, a proto se volí formát FGT. Je stejně velký jako cr4, nicméně reprezentuje zvlášť fázi a zvlášť amplitudu dat. Bližší popis všech formátů najdete na konci DORIS manuálu (v některé z příloh).

Zpracovaná data jsou uložena v binární formě a přímo je nelze nijak zobrazit. Nejprve je nutno je převést na obrázek, a to opět pomocí skriptu cpxfiddle. Před jeho použitím najděte v log souboru daného obrázku jeho šířku (počet pixelů) n. Převod fáze (např. interferogramu) pak probíhá takto:

cpxfiddle -wn -osunraster -qphase -fcr4 (-b) (-M1/5) -- soubor >obrazek.ras

Pokud místo fáze zobrazujete magnitudu, zadejte místo -qphase -qmag. Pokud chcete zobrazit původní data, nebude to fungovat, nutno zadat -fci2 místo -fcr4. Parametr -b do obrázku vykreslí škálu, parametry -M1/5 provede zprůměrování pěti sousedních pixelů v azimuth směru (multilook). Obrázek pak bude ve směru azimutu pětkrát menší.

Pokud vám nevyhovuje formát ras obrázku, je možno po tomto převodu ještě obrázek zkonvertovat do jakéhokoli běžného formátu:

convert obrazek.ras obrazek.tiff
convert obrazek.ras obrazek.jpg

a podobně.


Aktualizace 6. 02. 2021, ivca@insar.cz