This is a python implementation of Ratio-Based Multitemporal SAR Images Denoising from the RABASAR paper. RABASAR is application of the so-called plug-and-play denoisers for SAR image de-speckling to a temporal stack of intensity images. This implementation is the joint work of Charlie Marshak, Marc Simard, and Michael Denbina.
These are subsets of UAVSAR over the Wax Lake Delta. They are HH polarized images in linear units of power.
We have two primary goals in this repository:
- to explore the RABASAR methodology in python including a detailed comparison of related spatial denoising techniques.
- to apply the RABASAR methodology to open L-band images from UAVSAR and ALOS-1 in preparation for NISAR.
Because we are testing this methodology on larger areas and with two different sensors, the notebooks are predominantly dedicated to reprojecting the open imagery into a datacube, inspecting/testing algorithms to determine de-speckling parameters, saving the output products so we can later inspect them, etc. As such, we expect this code to be picked apart and improved as needed for specific SAR applications.
The installations are based on python 3.7+ using anaconda and conda within a virtual environment. Generally, this is accomplished as follows:
- Create a virtual environment using the
requirements.txt
- Install rabasar downloading this repo and
pip install .
More explicitly, using the anaconda distribution for Mac or Windows:
-
Navigate to the directory with this repository on your local machine.
-
conda create --name rabasar_env python=3.7
-
conda activate rabasar_env
-
pip install -r requirements.txt
-
pip install .
-
Ensure your python can be found by jupyter via
python -m ipykernel install --user
You can make sure your installation was done correctly running python -c "import rabasar"
and/or running the notebooks. At some point, we may distribute on pypi
, though would want more robust tests and simpler demonstrations. If there are problems with the pip distributions of the requirements alternatively, you can use conda via conda install -c conda-forge --yes --file requirements.txt
.
This is mainly to ensure the binaries from bm3d
can work with problematic mac environments. Clone this repository and navigate to on your local machine.
docker build -f docker/Dockerfile -t rabasar .
(this ensures the build context is the same as this repository)docker run -ti -p 8888:8888 -v <path_to_local_repo>:/home/rabasar/notebooks rabasar
(make sure no jupyter notebooks are running with this port)- From the container, navigate to
/home/rabasar/notebooks
and then runjupyter notebook --ip 0.0.0.0 --no-browser --allow-root
. - Copy the url with the token to your browser e.g.
localhost:8888/token...
.
The bm3d
, installed with pip
, may kill the python interpreter without explanation. We did not have any issues with the tv
regularizer.
- Zhao, et al. RABASAR, 2019.
- Zhao, et al. Github Repo, 2019.
- Zhao's Thesis - contains more numerical experiments and extensive background.
- Bioucas-Dias and Figueiredo. Multiplicative Noise Removal Using Variable Splitting and Constrained Optimization, 2010. Note this is a "special case" of the Plug-and-Play ADMM below. The regularizer here is TV.
- Delladelle, et al. MuLoG: Multi-channel Logarithm with Gaussian denoising, 2017.
- Boyd, et al. Distributed Optimization and Statistical Learning via the Alternating Direction Method of Multipliers, 2010.
- Chan, et al. Plug-and-Play ADMM for Image Restoration: Fixed Point Convergence and Applications, 2016. This is a general methodology for any regularizer and noise model such that each term satisfies a particular global criterion. This encompasses the Bioucas-Dias and Figueiredo method above.
See LICENSE.txt.
Copyright 2020, by the California Institute of Technology. ALL RIGHTS RESERVED. United States Government Sponsorship acknowledged. Any commercial use must be negotiated with the Office of Technology Transfer at the California Institute of Technology.
This software may be subject to U.S. export control laws. By accepting this software, the user agrees to comply with all applicable U.S. export laws and regulations. User has the responsibility to obtain export licenses, or other export authority as may be required before exporting such information to foreign countries or providing access to foreign persons.