Skip to content

Generate synthetic interferograms that are similar to those produced by the Sentinel-1 satellites.

License

Notifications You must be signed in to change notification settings

matthew-gaddes/SyInterferoPy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SyInteferoPy

Generate synthetic interferograms that are similar to those produced by the Sentinel-1 satellites.

Users can select any subaerial region that is covered by the SRTM3 digital elevation model (DEM), and create an interferogram for there containing deformation due to a selection of simple sources, a topogrpahically correlated atmospheric phase screen (APS), and a turbulent APS. The temporal behaviour of the signals can also be set to create time series of interferograms, and regions of incoherence can also be synthesised.

If you use this software in your research, please cite the 2019 JGR:SE paper that describes it.

There are four examples included in the repository which are intended to provide easy to follow demonstrations of the code's functionality. After the installation notes, they are described below.


Installation:
A suitable python environment can be created using the conda command:
conda env create --file SyInterferoPy.yml

To synthesise topographically correlated atmospheric phase screens (APSs), DEMs are required. These could be generated using many methods, but the SyInterferoPy functions were designed to work with the SRTM-DEM-tools package. All the dependencies for this package are included in the SyInterferoPy.yml file. To allow the SRTM-DEM-tools to be used by SyInterferoPy, please download the SRTM-DEM-tools and add them to your path (this line is included in each example and need to be modified by a user).


Example 1: 01_example_atmosphere_and_deformation.py:

To create a DEM of Campi Flegrei, we set the DEM's centre (lon then lat), and the side length (x, y) in metres:
dem_loc_size = {'centre' : (14.14, 40.84), 'side_length' : (20e3,20e3)}
Before creating the DEM:
dem, lons_mg, lats_mg = SRTM_dem_make(dem_loc_size, **dem_settings)

02_DEM_Cropped_to_area_of_interest,with_water_masked(as_white)

And convert the Campi Flegrei DEM into a topographically correlated APS:
signals_m['topo_correlated_APS'] = atmosphere_topo(dem, strength_mean = 56.0, strength_var = 12.0, difference = True)
Topographically_correlated_APS

We can add deformation from a point (Mogi) source by first setting its latitude and longitude, and then its depth and volume change (in m and m^3m, respectively):
deformation_ll = (14.14, 40.84,)
mogi_kwargs = {'volume_change' : 1e6, 'depth': 2000}
los_grid, x_grid, y_grid, z_grid = deformation_wrapper(lons_mg, lats_mg, deformation_ll, 'mogi', dem, **mogi_kwargs)
06_Deformaiton_signal

We can also generate a turbulent APS:
ph_turb = atmosphere_turb(1, lons_mg, lats_mg, water_mask, Lc = Lc, verbose=True, interpolate_threshold = 5e3, mean_m = 0.02) \

09_Turbulent_APS_-_just_spatially_correlated_noise

Before combining the signals to make an interferogram:
_Combined

Or set the constituent signals' temporal behaviour to make a time series:
Synthetic_Interferograms

Example 2: 02_example_deformations.py
Users can now generate deformation patterns for opening dykes and sills (i.e. Using Okada's results). \ The location of the deformation is set as a (lon,lat) tuple, as in the previous example: deformation_ll = (14.14, 40.84,) And with arguments specific to the type of deformation pattern. E.g.:

dyke_kwargs = {'strike' : 0, 'top_depth' : 1000, 'bottom_depth' : 3000, 'length' : 5000, 'dip' : 80, 'opening' : 0.5}

03:_Opening_Dyke

Or, E.g.: sill_kwargs = {'strike' : 0, 'depth' : 3000, 'width' : 5000, 'length' : 5000, 'dip' : 1, 'opening' : 0.5}

04:_Inflating_Sill

Examples of the deformation patterns for earthquakes with uniform slip have also been included, but the results of these have not been tested.

Example 3: 03_example_random_ifgs.py
The SyInterferoPy package has been developed to generate large datasets of synthetic interferograms for training deep learning models. Example 3 showcases this, and creates an dataset of seven synthetic interferograms at a collection of subaerial volcanoes. Deformation patterns include those due to dykes, sills, and point (Mogi) sources, but interferograms without deformation can also be synthesised. \

During creation of the interferograms, a diagnostic figure can be produced to determine the steps being taken during creation of the interferograms. The bottom row shows the DEM for the volcano of choice, and a mask of incoherent areas. In the top row, random crops of the DEM are taken and a deformation pattern is generated, and this step is repeated until the majority of the deformation pattern is on land and areas that are not being classed as incoherent. In the second row, turbulent APSs and topographically correlated APSs are generated, and the visibility of the deformation pattern is checked by computing the signal-to-noise-ratio (SNR): \

1_Volcano:Taal

The .gif below shows the algorithm running for several volcanoes in real time:

SyInterferoPy_random_ifgs

When using deep learning models, it is common to use transfer learning and therefore encounter models that have been trained for use with RGB (red-green-blue) three channel inputs (e.g. each image is of size 224x224x3). The SyInterferoPy package includes the option to create three channel data using the "outputs" argument, and by default can create the three channel data that is described in Gaddes et al (in prep.). The figure below shows five possible arrangments, in which the wrapped phase, unwrapped phase, DEM, real component of complex interferogram, and imaginary components of complex interferogram are combined in a variety of ways to create three channel data. Sadly, the conclusion of the experiment in Gaddes et al. (in prep.) was that performance is degraded when using anything other than the wrapped or unwrapped phase repeated across three channels.

Channel_format_of_data

Example 4: 04_turbulent_APS_example.py
The SyInterferoPy package generates spatially correlated noise for use in either turbulent APSs and as incoherence masks. This is done following the algorithm presented in Lohman and Simons (2005), and by setting a different length scale, different styles of signals can be created: \

Figure_1

About

Generate synthetic interferograms that are similar to those produced by the Sentinel-1 satellites.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages