High-Level Project Summary
InSAR imagery for estimating ground movement, is corrupted by noise. We introduce Fast NL Means Algorithm and Dictionary Learning to this problem domain and show the effectiveness of such techniques architectures to learn InSAR image denoising filters in the absence of clean ground truth images, and for artefact reduction in estimated coherence through intelligent preprocessing of training data.
Link to Final Project
Link to Project "Demo"
Detailed Project Description
What exactly does it do? How does it work?
Fast NL Means Algorithm (OpenCV)
Non-local means is an algorithm in image processing for image denoising. Unlike "local mean" filters, which take the mean value of a group of pixels surrounding a target pixel to smooth the image, non-local means filtering takes a mean of all pixels in the image, weighted by how similar these pixels are to the target pixel. This results in much greater post-filtering clarity, and less loss of detail in the image compared with local mean algorithms.
The non-local means algorithm replaces the value of a pixel by an average of a selection of other pixels values: small patches centered on the other pixels are compared to the patch centered on the pixel of interest, and the average is performed only for pixels that have patches close to the current patch. As a result, this algorithm can restore well textures, that would be blurred by other denoising algorithm. When fast_mode is True a faster algorithm employing uniform spatial weighting on the patches is applied. In theory, we can explain it as follows:

Dictionary Learning (scikit-learn)
Dictionary learning is a sparse encoding schema. Where encoding schema is lossless from an analytical implementation perspective. And it is guaranteed global optimum encoding from a numerical implementation perspective because the analytical re-formulation is a convex optimization problem.
In our experiment, the dictionary is fitted on the distorted left half of the image, and subsequently used to reconstruct the right half. Note that even better performance could be achieved by fitting to an undistorted (i.e. noiseless) image, but here we start from the assumption that it is not available. A common practice for evaluating the results of image denoising is by looking at the difference between the reconstruction and the original image. If the reconstruction is perfect this will look like Gaussian noise. It can be seen from the plots that the results of Orthogonal Matching Pursuit (OMP) with two non-zero coefficients is a bit less biased than when keeping only one (the edges look less prominent). It is in addition closer from the ground truth in Frobenius norm. The result of Least Angle Regression is much more strongly biased: the difference is reminiscent of the local intensity value of the original image. Thresholding is clearly not useful for denoising, but it is here to show that it can produce a suggestive output with very high speed, and thus be useful for other tasks such as object classification, where performance is not necessarily related to visualisation. Theoretically, it can defined as:

||.||Fro stands for the Frobenius norm and ||.||1,1 stands for the entry-wise matrix norm which is the sum of the absolute values of all the entries in the matrix. After using such a procedure to fit the dictionary, the transform is simply a sparse coding step that shares the same implementation with all dictionary learning objects.
What benefits does it have?
It has better performance than boxcar filters, spatial and frequency based methods for non-stationary InSAR phase estimation as well as state-of-the-art neighbourhood pixel estimation methods.
What do you hope to achieve?
Unsupervised InSAR denoising which discounts the need of a ground truth satellite image at that instance.
What tools, coding languages, hardware, or software did you use to develop your project?
- Python code using Jupyter Notebooks
- Debugging in PyCharm IDE
- Training on Local Device (MacBook Pro 2019) & UoY Nividia GPUs
- Libraries: TensorFlow, Keras, NumPy, Sci-KitLearn, MatPlotLib
Space Agency Data
We have used the Kilauea_Hawaii-eruption-EQ data as an input to the algorithms. The .png format from the .kml zip folder was directly used with some preprocessing. This was used because:
- high resolution InSAR data in image format (.png, .jpg)
- image format allows us to use general image denoising algorithms without using any other form of complex data
Hackathon Journey
How would you describe your Space Apps experience?
This has been an exciting opportunity to work for multiple space agencies around the world and contribute to high-impact projects.
What did you learn?
We learned about InSAR for the first time, though we have some previous experience in LiDAR data processing.
What inspired your team to choose this challenge?
We chose this project due to our team's strong background in Computer Vision, Signal Processing and Pattern Recognition techniques and the project's high impact.
What was your approach to developing this project?
While development, we went straight into literature review for research papers looking into the exact problem and chose the one which provided the best trade-off between good solution, training time and pre-written code which could be easily modified.
How did your team resolve setbacks and challenges?
The biggest setback was the time constraint for the challenge. The field of signal processing is vast and the topics are heavily researched and condensing the entire pipeline from literature review to implementation was the most difficult part of the challenge.
Is there anyone you'd like to thank and why?
The entire team is thankful to University of York's resources we used throughout the hackathon.
References
- https://www.askpython.com/python/examples/denoising-images-in-python
- https://docs.opencv.org/3.4/d5/d69/tutorial_py_non_local_means.html
- https://scikit-image.org/docs/stable/auto_examples/filters/plot_nonlocal_means.html
- A. Buades, B. Coll and J. . -M. Morel, "A non-local algorithm for image denoising," 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'05), 2005, pp. 60-65 vol. 2, doi: 10.1109/CVPR.2005.38.
- https://medium.com/analytics-vidhya/what-dictionary-learning-actually-is-812d264e9646
- https://scikit-learn.org/stable/auto_examples/decomposition/plot_image_denoising.html
- https://scikit-learn.org/stable/modules/decomposition.html#dictionary-learning
Tags
#InSAR #signalprocessing #remotesensing #software #algorithm #cnn #autoencoder #deeplearning

