Skip to content

Commit

Permalink
Address overview and comparison comments
Browse files Browse the repository at this point in the history
  • Loading branch information
scottstanie committed Oct 20, 2024
1 parent cb60cc7 commit d7b1f56
Show file tree
Hide file tree
Showing 3 changed files with 266 additions and 210 deletions.
41 changes: 34 additions & 7 deletions docs/references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -100,14 +100,29 @@ @article{Chen2015PersistentScattererInterpolation
}

@article{Fattahi2019FRInGEFullResolutionInSAR,
title = {{{FRInGE}}; {{Full-Resolution InSAR}} Timeseries Using {{Generalized Eigenvectors}}},
author = {Fattahi, H. and Agram, P. S. and Tymofyeyeva, E. and Bekaert, D. P.},
year = {2019},
month = dec,
author = {{Fattahi}, H. and {Agram}, P.S. and {Tymofyeyeva}, E. and {Bekaert}, D.P.},
title = {{FRInGE; Full-Resolution InSAR timeseries using Generalized Eigenvectors}},
keywords = {1209 Tectonic deformation, GEODESY AND GRAVITY, 1211 Non-tectonic deformation, GEODESY AND GRAVITY, 1240 Satellite geodesy: results, GEODESY AND GRAVITY, 1241 Satellite geodesy: technical issues, GEODESY AND GRAVITY},
booktitle = {AGU Fall Meeting Abstracts},
year = 2019,
volume = {2019},
month = dec,
eid = {G11B-0514},
pages = {G11B-0514},
urldate = {2024-05-16},
keywords = {1209 Tectonic deformation,1211 Non-tectonic deformation,1240 Satellite geodesy: results,1241 Satellite geodesy: technical issues,GEODESY AND GRAVITY}
adsurl = {https://ui.adsabs.harvard.edu/abs/2019AGUFM.G11B0514F},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

@article{Ferretti2001PermanentScattersSAR,
title = {Permanent {{Scatters}} in {{SAR Interferometry}}},
author = {Ferretti, Alessandro and Prati, Claudio and Rocca, Fabrio},
year = {2001},
journal = {IEEE Transactions on Geoscience and Remote Sensing},
volume = {39},
number = {1},
pages = {8--20},
issn = {01962892},
doi = {10.1109/36.898661}
}

@article{Ferretti2011NewAlgorithmProcessing,
Expand Down Expand Up @@ -140,6 +155,18 @@ @article{Fornaro2015CAESARApproachBased
keywords = {3-D,4-D and multidimensional (Multi-D) SAR imaging,Covariance matrices,Covariance matrix decomposition,differential SAR tomography,differential synthetic aperture radar (SAR) interferometry (DInSAR),Interferometry,Monitoring,principal component analysis (PCA),SAR interferometry (InSAR),SAR tomography,Scattering,Spatial resolution,Synthetic aperture radar,Tomography}
}

@article{Goldstein1998RadarInterferogramFiltering,
title = {Radar Interferogram Filtering for Geophysical Applications},
author = {Goldstein, Richard M. and Werner, Charles L.},
year = {1998},
journal = {Geophysical Research Letters},
volume = {25},
number = {21},
pages = {4035--4038},
issn = {1944-8007},
doi = {10.1029/1998GL900033}
}

@article{Guarnieri2008ExploitationTargetStatistics,
title = {On the {{Exploitation}} of {{Target Statistics}} for {{SAR Interferometry Applications}}},
author = {Guarnieri, A. M. and Tebaldini, S.},
Expand Down Expand Up @@ -211,7 +238,7 @@ @inproceedings{Rosen2018InSARScientificComputing
publisher = {IEEE},
address = {Valencia},
doi = {10.1109/IGARSS.2018.8517504},
langid = {english},
langid = {english}
}

@article{Siddiqui1962ProblemsConnectedRayleigh,
Expand Down
30 changes: 17 additions & 13 deletions paper/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,37 +39,39 @@ bibliography: references.bib

# Summary

<!-- A summary describing the high-level functionality and purpose of the software for a diverse, non-specialist audience. -->
Interferometric Synthetic Aperture Radar (InSAR) is a remote sensing technique used for measuring land surface deformation.
Conventional InSAR uses pairs of SAR images to get a single map of the relative displacement between the two acquisition times.
`dolphin` is a Python library which uses state-of-the-art multi-temporal algorithms to reduce the impact of noise sources and produce long time series of displacement at fine resolution.
Dolphin is a Python library which uses state-of-the-art multi-temporal algorithms to reduce the impact of noise sources and produce long time series of displacement at fine resolution.

![Average surface displacement velocity along the radar line-of-sight between February, 2017 and December, 2020. Red (blue) indicates motion towards (away from) the satellite.\label{fig:mojave}](figures/bristol-velocity-sequential.png)

# Statement of need
<!-- A Statement of need section that clearly illustrates the research purpose of the software and places it in the context of related work. -->

InSAR has been a powerful tool for decades, both in geophysical studies including tectonics, volcanism, and glacier dynamics, as well as human applications such as urban development, mining, and groundwater extraction. The launch of the European Space Agency's Sentinel-1 satellite in 2014 dramatically increased the availability of free, open-access SAR data. However, processing InSAR data has remained challenging, particularly for non-experts.
InSAR has been a powerful tool for decades, both in geophysical studies including tectonics, volcanism, and glacier dynamics, as well as human applications such as urban development, mining, and groundwater extraction. The launch of the European Space Agency's Sentinel-1 satellite in 2014 dramatically increased the availability of free, open-access SAR data. However, processing InSAR data remains challenging, particularly for non-experts.

Advanced algorithms combining persistent scatterer (PS) and distributed scatterer (DS) techniques, also known as phase linking, have been developed over the past decade to help overcome decorrelation noise in longer time series [@Guarnieri2008ExploitationTargetStatistics]. Despite their potential, these methods have only recently begun to appear in open-source tools.

<!-- A list of key references, including to other software addressing related needs. -->
The phase linking first prototype was the [`FRInGE`](https://github.com/isce-framework/fringe) C++ library [@Fattahi2019FRInGEFullResolutionInSAR], which implements algorithms and workflows from @Ferretti2011NewAlgorithmProcessing and @Ansari2018EfficientPhaseEstimation. The [`Miaplpy`](https://github.com/insarlab/MiaplPy) Python library contains a superset of the features in `FRInGE`, as well as new algorithms developed in @Mirzaee2023NonlinearPhaseLinking. Additionally, the MATLAB [`TomoSAR`](https://github.com/DinhHoTongMinh/TomoSAR) library was made public in 2022, which implements the "Compressed SAR" (ComSAR) algorithm, a variant of phase linking detailed in @HoTongMinh2022CompressedSARInterferometry.
The phase linking first prototype was the [FRInGE](https://github.com/isce-framework/fringe) C++ library [@Fattahi2019FRInGEFullResolutionInSAR], which implements algorithms and workflows from @Ferretti2011NewAlgorithmProcessing and @Ansari2018EfficientPhaseEstimation. The [MiaplPy](https://github.com/insarlab/MiaplPy) Python library contains a superset of the features in FRInGE, as well as new algorithms developed in @Mirzaee2023NonlinearPhaseLinking. Additionally, the MATLAB [TomoSAR](https://github.com/DinhHoTongMinh/TomoSAR) library was made public in 2022, which implements the "Compressed SAR" (ComSAR) algorithm, a variant of phase linking detailed in @HoTongMinh2022CompressedSARInterferometry.

While these tools represent significant progress, there remained a need for software capable of handling the heavy computational demands of large-scale InSAR processing. `dolphin` was developed to meet this need, specifically for the Observational Products for End-Users from Remote Sensing Analysis (OPERA) project. OPERA, a Jet Propulsion Laboratory project funded by the Satellite Needs Working Group (SNWG), is tasked with generating a North American Surface Displacement product covering over 10 million square kilometers of land at 30 meter resolution or finer, with under 72 hours of latency.
While these tools represent significant progress, there remained a need for software capable of handling the heavy computational demands of large-scale InSAR processing. For example, the TomoSAR library currently requires tens of gigabytes of memory to process more than a small area of interest, while FRInGE and MiaplPy are unable to offer speedups to users who want to process data at a coarser output grid than the full SLC resolution. Additionally, both FRInGE and MiaplPy were designed to process single batches of SLC images.

Dolphin was developed to process both historical archives and incrementally handle new data in near-real time. This capability was specifically designed for the Observational Products for End-Users from Remote Sensing Analysis (OPERA) project. OPERA, a Jet Propulsion Laboratory project funded by the Satellite Needs Working Group (SNWG), is tasked with generating a North American Surface Displacement product covering over 10 million square kilometers of land at 30 meter resolution or finer, with under 72 hours of latency.

# Overview of Dolphin

`dolphin` processes stacks of coregistered single-look complex (SLC) radar images into a time series of surface displacement. The software has pre-made workflows accessible through command line tools which call core algorithms for PS/DS processing:
Dolphin processes coregistered single-look complex (SLC) radar images into a time series of surface displacement. The software has an end-to-end surface displacement processing workflow (\autoref{fig:overview}), accessible through a command line tool, which calls core algorithms for PS/DS processing:

- The `shp` subpackage estimates the SAR backscatter distribution to find neighborhoods of statistically homogeneous pixels (SHPs) using the generalized likelihood ratio test from @Parizzi2011AdaptiveInSARStack or the Kolmogorov-Smirnov test from @Ferretti2011NewAlgorithmProcessing.
- The `phase_link` subpackage processes the complex SAR covariance matrix into a time series of wrapped phase using the CAESAR algorithm [@Fornaro2015CAESARApproachBased], the eigenvalue-based maximum likelihood estimator of interferometric phase (EMI) [@Ansari2018EfficientPhaseEstimation], or the combined phase linking (CPL) approach from @Mirzaee2023NonlinearPhaseLinking.
- The `unwrap` subpackage exposes multiple phase unwrapping algorithms, including the Statistical-cost, Network-flow Algorithm for Phase Unwrapping (SNAPHU) [@Chen2001TwodimensionalPhaseUnwrapping] and the PHASS algorithm (available in the InSAR Scientific Computing Environment [@Rosen2018InSARScientificComputing]).
- The `timeseries` module contains basic functionality to invert an overdetermined network of unwrapped interferograms into a time series and estimate the average surface velocity. The outputs of `dolphin` are also compatible with the Miami INsar Time-series software for users who are already comfortable with MintPy [@Yunjun2019SmallBaselineInSAR].
- The `ps` module selects persistent scatterer pixels from the full-resolution SLCs to be integrated into the wrapped interferograms [@Ferretti2001PermanentScattersSAR].
- The `unwrap` subpackage exposes multiple phase unwrapping algorithms, including the Statistical-cost, Network-flow Algorithm for Phase Unwrapping (SNAPHU) [@Chen2001TwodimensionalPhaseUnwrapping], the PHASS algorithm (available in the InSAR Scientific Computing Environment [@Rosen2018InSARScientificComputing]), and the Extended Minimum Cost Flow (EMCF) 3D phase unwrapping algorithm via the `spurt` library. Dolphin has pre- and post-processing options, including Goldstein filtering [@Goldstein1998RadarInterferogramFiltering] or interferogram masking and interpolation [@Chen2015PersistentScattererInterpolation].
- The `timeseries` module contains basic functionality to invert an overdetermined network of unwrapped interferograms into a time series and estimate the average surface velocity. The outputs of Dolphin are also compatible with the Miami INsar Time-series software for users who are already comfortable with MintPy [@Yunjun2019SmallBaselineInSAR].

To meet the computational demands of large-scale InSAR processing, Dolphin leverages Just-in-time (JIT) compilation, maintaining the readability of Python while matching the speed of compiled languages. The software's compute-intensive routines use the XLA compiler within JAX [@Bradbury2018JAXComposableTransformations] for efficient CPU or GPU processing. Users with compatible GPUs can see 5-20x speedups by simply installing additional packages. Dolphin manages memory efficiently through batch processing and multi-threaded I/O, allowing it to handle datasets larger than available memory while typically using a few gigabytes for most processing stages. These optimizations enable Dolphin to process hundreds of full-frame Sentinel-1 images with minimal configuration, making it well-suited for large-scale projects such as OPERA.

To meet the computational demands of large-scale InSAR processing, `dolphin` leverages Just-in-time (JIT) compilation, maintaining the readability of Python while matching the speed of compiled languages. The software's compute-intensive routines use the XLA compiler within JAX [@Bradbury2018JAXComposableTransformations] for efficient CPU or GPU processing. Users with compatible GPUs can see 5-20x speedups by simply installing additional packages. `dolphin` manages memory efficiently through batch processing and multi-threaded I/O, allowing it to handle datasets larger than available memory while typically using a few gigabytes for most processing stages. These optimizations enable dolphin to process hundreds of full-frame Sentinel-1 images with minimal configuration, making it well-suited for large-scale projects such as OPERA.
![Overview of main workflow to generate surface displacement. Rectangular stacks indicate input or intermediate raster images. Arrows show the flow of data through the configurable submodules of Dolphin.\label{fig:overview}](figures/dolphin-modules.pdf)

The `dolphin` command line tool provides an interface for running the end-to-end displacement workflow. To illustrate, if a user has created a stack of coregistered SLCs in a `data/` directory, they only need to follow two steps to run the full workflow with all default parameters:
The Dolphin command line tool provides an interface for running the end-to-end displacement workflow. To illustrate, if a user has created a stack of coregistered SLCs in a `data/` directory, they only need to follow two steps to run the full workflow with all default parameters:

1. Configure the workflow with the `config` command, indicating the location of the SLCs, which dumps the output to a YAML file:

Expand All @@ -83,7 +85,9 @@ dolphin config --slc-files data/*
dolphin run dolphin_config.yaml
```

\autoref{fig:mojave} shows an example result of the final average surface velocity map created by `dolphin`. The inputs were OPERA Coregistered Single-Look Complex (CSLC) geocoded images from Sentinel-1 data between February 2017 - December 2020 over the Mojave Desert.
The full set of configuration options can be viewed with the `dolphin config --print-empty` command.

\autoref{fig:mojave} shows an example result of the final average surface velocity map created by Dolphin. The inputs were OPERA Coregistered Single-Look Complex (CSLC) geocoded images from Sentinel-1 data between February 2017 - December 2020 over the Mojave Desert.

# Acknowledgements

Expand Down
Loading

0 comments on commit d7b1f56

Please sign in to comment.