Pythonic generation of synthetic wrapped interferograms from long term velocity rates obtained from InSAR displacement time series. To be used as a machine learning ready finetuning dataset for large pretrained self-supervised (SSL) image models.
This repository is heavily based off two research papers from Anantrasirichai et al., 2019 and Anantrasirichai et al. 2021 (see references at the bottom of this README). The GitHub repository and matlab code for the first paper can be found at:
https://github.com/pui-nantheera/Synthetic_InSAR_image/tree/main
A toml file can be found under configs/insar_synthetic_vel.toml
which can be edited to change arguments of the below stages.
variogram/spatial_variogram.py
will create a csv file of variogram and covariance function parameters from full frame SatSense InSAR velocity measurements. Parameters are estimated for geoclipped subsets within the full frame (4.5km x 4.5km). Each subset has been detrended with a 1d polynomial before the experimental variogram is fit. Output plots are also generated for each subset for inspection.
turbulent_atm/gen_turbulent_noise.py
will use the csv generated from the spatial variogram stage to read in parameters for the maximum covariances and spatial decay constants for each covariance function per spatial subset. The range of these parameters is then used as an upper/lower bound for sampling new maxmimum covariances and spatial decay constants from a uniform distribution. These are then used to produce distance/velocity covariance matrices of the turbulent atmospheric noise field (as assumption is made of no stratified noise) which are further decomposed with Cholesky decomposition. The upper triangular Cholesky matrix can then be used to generate new correlated noise samples by mutplication with an uncorrelated random vector sampled from a standard normal distribution. Both unwrapped and wrapped turbulent noise samples are generated.
deformation/gen_deformation.py
will use a Mogi source model to generate samples of deformation of varying satellite heading, incidence angle, volume change, and depth. Both unwrapped and wrapped (min-max normalized) deformation samples are generated.
noise_decoherence_map/gen_noise_decoh.py
uses a 3x3 pixel median filter on 224x244 pixel slices of the original SatSense velocity grid Y
. The filtered output Y'
can then be used to generate and save a noise map samples N
where N = Y - Y'
. Decoherence is estimated using existing masked pixels (M
) within the 224x224 pixel slices in the original SatSense velocity data that have been deemed unreliable, we make sure not to save masks that have too high a percentage of masked values (masks with 65% or greater masked pixels are not saved).
combine_DT.py
combines the deformation (D
) and turbulent atmospheric noise (T
) as well as the random noise maps (N
) and decoherence masks (M
). All components are converted to radians (multiples of Sentinel-1 half wavelength, 2.8333cm) before summation so wrapped samples can be generated. Two classes of training data are produced: class 0
(set1) contains only T+noise+dechorence
(no deformation) whereas class 1
(set2) contains D+T+noise+decoherence
.
Unwrapped class 1 (D+T+noise+decoherence) | Wrapped class 1 (D+T+noise+decoherence) |
---|---|
![]() |
![]() |
interpolation/run_interp.py
will run Delaunay Triangulation and linear interpolation within triangles (edges) only under a certain size/threshold. This is to ensure interpolation is not performed accross large distances.
Unwrapped Interpolation with Delaunay Triangulation (class 1) | Wrapped Interpolation with Delaunay Triangulation (class 1) |
---|---|
![]() |
![]() |
@ARTICLE{9181454,
author={Anantrasirichai, Nantheera and Biggs, Juliet and Kelevitz, Krisztina and Sadeghi, Zahra and Wright, Tim and Thompson, James and Achim, Alin Marian and Bull, David},
journal={IEEE Transactions on Geoscience and Remote Sensing},
title={Detecting Ground Deformation in the Built Environment Using Sparse Satellite InSAR Data With a Convolutional Neural Network},
year={2021},
volume={59},
number={4},
pages={2940-2950},
keywords={Strain;Satellites;Convolution;Machine learning;Training data;Terrain factors;Velocity measurement;Convolutional neural network (CNN);earth observation;ground deformation;interferometric synthetic aperture radar (InSAR);machine learning},
doi={10.1109/TGRS.2020.3018315}}
@article{ANANTRASIRICHAI2019111179,
title = {A deep learning approach to detecting volcano deformation from satellite imagery using synthetic datasets},
journal = {Remote Sensing of Environment},
volume = {230},
pages = {111179},
year = {2019},
issn = {0034-4257},
doi = {https://doi.org/10.1016/j.rse.2019.04.032},
url = {https://www.sciencedirect.com/science/article/pii/S003442571930183X},
author = {N. Anantrasirichai and J. Biggs and F. Albino and D. Bull},
keywords = {Interferometric Synthetic Aperture Radar, Volcano, Machine learning, Detection}}