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.
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
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
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):
obecné informace:
SCREEN debug // level of output to standard out MEMORY 1000 // MB OVERWRITE OFF // overwrite existing files BATCH ON // non-interactive LISTINPUT ON // copy this file to log
Vysvětlení najdete v DORIS manuálu, pro běžnou práci není třeba měnit.
seznam kroků, které se mají provést:
PROCESS coarseorb PROCESS coarsecorr PROCESS m_filtazi PROCESS s_filtazi PROCESS fine
V tomto případě se má zpracovat pět kroků, co který znamená, najdete v DORIS manuálu nebo v některých z našich článků.
dotčené soubory (logy):
LOGFILE log.out // M_RESFILE 8_MAR_1999.short.log // parameter pool S_RESFILE 7_MAR_1999.short.log // parameter pool I_RESFILE interf.log // parameter pool
Zde je LOGFILE názeb souboru, do kterého se ukládají pomocné parametry a chybová hlášení. Může pomoci při hledání některých chyb, ale většinou není potřeba. Ostatní soubory jsou velmi důležité a bez nich zpracování neproběhne. M_RESFILE a S_RESFILE jsou log soubory master a slave snímku (popis níže). I_RESFILE je log soubor páru snímků. Všechny názvy souborů mohou být uvedeny s celou cestou; pokud jsou uvedeny takto jednoduše, počítá se, že se nacházejí v aktuálním adresáři.
Před krokem COARSEORB nesmí soubor I_RESFILE existovat, vytvoří se během tohoto kroku.
parametry zpracování jednotlivých kroků:
Příklad pro krok COARSECORR (parametry zpracování ostatních kroků jsou buď nastaveny v předpřipravených dávkách, nebo je najdete v DORIS manuálu).
comment ___COARSE CORR (COREGISTRATION)___ // c // CC_METHOD magfft // default CC_NWIN 100 // number of windows CC_WINSIZE 256 256 // size of windows CC_INITOFF orbit // use result of orbits for initial offset
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:
přehled zpracovaných a nezpracovaných kroků:
Start_process_control readfiles: 1 precise_orbits: 1 crop: 1 filt_azi: 0 resample: 0 filt_range: 0 NOT_USED: 0 End_process_control
Toto je příklad z log souboru slave snímku. Log soubor master snímku neobsahuje krok RESAMPLE, log soubor páru snímků obsahuje úplně jiné kroky, nicméně struktura je stejná. 1 znamená, že krok byl proveden, 0 že nebyl proveden. V případě, že krok byl proveden, v další části najdeme blok jemu odpovídající.
přehled výsledků zpracování toho kterého kroku:
******************************************************************* *_Start_filt_range: ******************************************************************* Method_rangefilt: adaptive Data_output_file: 7_MAR_1999.rfilter Data_output_format: complex_short First_line (w.r.t. original_master): 11249 Last_line (w.r.t. original_master): 15095 First_pixel (w.r.t. original_master): 392 Last_pixel (w.r.t. original_master): 1342 ******************************************************************* * End_filt_range:_NORMAL *******************************************************************
Toto je příklad výpisu kroku FILT_RANGE. Je zde zaznamenána metoda filtrace, soubor, ve kterém je uložen zfiltrovaný snímek, formát uložení (bude popsáno níže) a výřez snímku vůči původnímu master snímku (o velikosti 28000 lines x 5616 pixels).
Více podrobností najdete v DORIS manuálu.
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:
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.
Při zpracování je třeba si dát pozor na dvě okolnosti:
chyba v orbitech způsobí špatné spočtení offsetu mezi snímky:
Offset spočtený v kroku COARSEORB má někdy takovou chybu, že to zabrání správnému spočtení offsetu v kroku COARSECORR. V případě, že se offset spočtený v těchto dvou krocích liší o více než cca 20 pixelů, je třeba odečíst offset přibližně ručně (na základě magnitudy snímku v někjakém prohlížeči obrázků; přesnost cca 10-20 pixelů) a tento dosadit jako výsledek COARSEORB. Krok COARSECORR je potom třeba provést ještě jednou.
do výpočtu aproximačního polynomu mohou vstoupit i okna, jejichž offset je "mimo", nicméně mají dobrou koherenci:
Po zpracování kroku COREGPM je třeba prohlédnout soubor CPM_Data, který obsahuje tabulku:
win posL posP offL offP corr eL eP wtstL wtstP ------------------------------------------------------------ 15 11272 1039 -246.56 -6.00 0.59 0.02 0.06 0.17 0.67 34 11314 926 -246.69 -6.12 0.61 -0.29 -0.06 2.12 0.69 59 11355 1062 -246.19 -5.69 0.52 0.43 0.37 3.27 4.21 69 11397 576 -245.81 -6.19 0.51 0.05 -0.14 0.34 1.51
Pokud je někde oprava řádově větší než 0.2 pixelu, je třeba toto měření vyloučit, a to následovně: v log souboru páru snímku, v kroku FINE najít okno daného čísla a snížit mu korelaci (poslední číslo na řádce) pod práh (uveden jako parametr kroku COREGPM v dávce). Není radno toto provádět u příliš mnoha měření. Po úpravě je třeba znovu provést krok COREGPM.
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 :-( ).
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