Open-Source InSAR, Part 1
An Overview with Umbra open data.
Open-Source InSAR, Part 1
An Overview with Umbra open data.
This post will assume the reader is familiar with synthetic aperture radar (SAR) interferometric SAR (InSAR) and contains my retrospective on how I used some open data and open source tools to do some cool InSAR processing. I’ll probably do a more detailed write up in the future. Also, I have no affiliation with Umbra — I am simply a PhD student who is using their open data.
Context (Skippable)
Throughout my PhD I have processed data from a wide variety of different SAR sensors. I realised what I was often most interested in was the high-resolution data from the ‘new generation’ of commercial SAR sensors (think ICEYE, Umbra, Capella, etc …). The high-resolution, of course, comes with many advantages for dealing with my actual thesis topic of micro-Doppler processing, however I have also become interested in some other use cases. I was/am particularly drawn to InSAR and (I think) mainly for how absurd the whole concept sounds, its use cases and just how accurate it can be.
I began playing with some data last September and it has since grown into a nice side-project. As there is nothing inherently novel in my ‘results’, they aren’t suitable for a journal or conference paper and so I figured I may as well document them somewhere. And so, here we are.
The Data
The Umbra open data program, contains a vast array of spotlight SAR images, from various worldwide locations, at resolutions between 16 cm and 1 m. Among these is an image pair, acquired near the village of Sāqand, Iran, with an 8 day temporal baseline. These images were captured by 2 different Umbra satellites, on very similar orbits, on the 17th and 25th August 2023.
The data itself comes in a variety of formats, though the one we are primarily interested in is the sensor independent complex data (SICD). This can then be downloaded and, in our case, opened in MATLAB using the extremely useful MATLAB SAR Toolbox.
One of the (.tif) images is shown below:

One of the image pair to be used in the interferometry workflow.
Co-registration
Assuming these 2 images are compatible for interferometry (a rabbit-hole for another time, TLDR: they are), the first step is to co-register the two images. Co-registration ensures that the images are precisely aligned, correcting for any shifts or misalignments caused by differing satellite acquisition geometry or during image formation processing. Accurate co-registration is important to precisely align the images over each other, such that both pixels show the exact same point in the scene, this helps keep any phase decorrelation to a minimum.
To complete the co-registration, I used another useful open source tool, GeFolki. GeFolki, is an advanced co-registration algorithm that is based off of optical flow and is implemented in both python and MATLAB. There are several parameters that can be used to tune the co-registration but I simply used the recommended settings for InSAR.
Once co-registered, the interferometric phase can be extracted by taking the argument of what results from multiplying the first image by the complex conjugate of the (co-registered) second, this forms the interferogram.
For the remainder of the post I’ll use the following sub-image to demonstrate the InSAR pipeline. It is from the mountainous area near the top right of the original image. This helps by showing some detail that would be lost using the full image. I’ll show the results for the full image at the end, however.

Sub-image to demonstrate InSAR processing. Note that this is from the .sicd file and so appears slightly different to the .tif in the first figure.
To demonstrate co-registration, the figures below show interferograms in a before and after comparison. Zooming in on the image on the right shows some small and and rapidly repeating interferometric fringes while the image on the left is completely decorrelated. Notice the blue strip at the edge of the image on the right? This is a clue that the co-registration has been successful and is simply 0-valued ‘ dead-space’ from where GeFolki has shifted and resampled one of the original SAR images.


Interferograms before and after fine co-registration.
Flat-Earth Phase Removal
The next step is the removal of the so-called ‘Flat-Earth phase’.
From before, it is apparent that the interferogram is mainly influenced by a strong repeating fringe pattern. This pattern is so strong it basically hides all of the topography of the scene. This pattern is caused by the continuous increment of the interferometric phase proportional to slant-range displacement. This sounds a bit confusing but it can be explained quite simply: as you move across the scene, the slant range (the distance from the radar to said point on ground) gradually changes, even if the ground is flat. This change in distance causes a predictable change in phase that can be calculated based on the orbital parameters of the satellites and removed from the interferogram.
The (SICD) metadata attached to the SAR image actually contains enough information to do this. Inside the metadata is the centre of aperture (CoA) position of each acquisition as well as enough information to calculate the exact coordinates of each pixel in the image grid. For each pixel, p, the flat earth phase can be calculated as the path difference between the pixel and the two satellite CoA’s as in:

where d() represents the Euclidean distance and lambda is the centre wavelength.
In our case, the resulting flat-Earth phase can be seen in the figure below. We get another clue that we are again on the right track as our calculated flat-Earth phase appears to line up nicely, and be at roughly the same angle, as the fringe lines from the previous interferogram.

Calculated flat-Earth phase
This can then be subtracted from the interferogram and rewrapped, in a process known as interferogram flattening, to reveal the local topography:

Flattened Interferogram
We can also overlay this onto the original SAR image and we see that things line up very nicely:

SAR image with flattened interferogram overlayed for visualisation.
However, there is now another repeating fringe pattern. This time it is due to the topographic variation of the scene being greater than the interferometric systems unambiguous range. This causes the phase to wrap back around and is totally something to be expected. This can be removed in a process called phase unwrapping, though, this will be saved for part 2.
Additional Processing
The main thing I noticed at this stage was how speckled the interferogram was. Some degree of speckle is unavoidable but there are a couple of common approaches that would help increase its overall coherence.
The first would be common band filtering in range and azimuth though I haven’t actually implemented them. Due to local topography and acquisition geometry the returned spectra from the scene can be shifted slightly between the first and second SAR acquisitions - common band filtering aims to keep only the correlated spectra.
Range common band filtering is non-trivial and requires some knowledge of the local terrain slope. A fixed filter assuming a constant slope, particularly in this high-resolution case, would likely worsen the speckle. Similarly for azimuth common band filtering, knowledge of the Doppler centroid is required, this is complicated by the fact that spotlight SAR has a time varying Doppler centroid. Based off of how similar the acquisition geometry and parameters were between the two sensors, I believe common band filtering would have a pretty minimal impact in this case.
The second approach for increasing coherence would simply be spatial averaging. This is achieved by averaging the phase values within a sliding window through the image. (There are more advanced, adaptive filters but these go beyond the scope of this article.) This does lower the resolution but, in this case, it also dramatically enhances the clarity of the interferogram as can be seen below with a filter size of 5x5 pixels:

Flattened interferogram with 5x5 spatial averaging.
There is also another trade-off, besides resolution, to be made with the size of the moving average window: the interferometric coherence also changes.
Coherence is simply a measure of how correlated the phase is in both SAR images. I wont go into detail about exactly how the coherence was calculated except that it returns a value between 0 and 1, with 1 being perfectly correlated. Naturally, we want to keep this number as high as possible in our InSAR pipeline.
Experimenting with differing sizes of sliding window for our averaging we see the following distributions:

Coherence distribution for varying sizes of spatial averaging filter.
It seems that the size of the spatial averaging filter controls the shape of the coherence distribution. All distributions show some degree of negative skewness with the larger sized filters bringing the median and mode closer to a coherence value of 0.5.
From this, it seems like the 3x3 filter would be the best but I am going to stick with the 5x5 for future processing. This is because despite the 3x3 having an arguably better coherence distribution, the actual phase in the interferograms is much smoother and more continuous in the 5x5 case. This will greatly help us with future phase unwrapping. I’m hoping the following figures highlight this, though the difference is fairly small (the 3x3 is more noisy or looks ‘fuzzier’):




Example interferograms and coherence maps for 3x3 and 5x5 pixel spatial averaging. (Yes, I probably should have cropped out the dead space on the left from the start).
These coherence maps would also lead nicely on to the topic of coherent change detection, but I will also leave that as a rabbit-hole for another day.
Finally, here is the flattened but wrapped interferogram of the full scene.
Isn’t it beautiful.

Interferogram of full scene with 5x5 spatial averaging.
Thanks for reading.
메타데이터
- post_id
- 55bd04cfc2eb
- slug
- open-source-insar-part-1-55bd04cfc2eb
- url
- https://medium.com/@finlayrollo7/open-source-insar-part-1-55bd04cfc2eb
- canonical_url
- https://medium.com/@finlayrollo7/open-source-insar-part-1-55bd04cfc2eb
- author_url
- https://medium.com/@finlayrollo7
- status
- ok
- fetched_at
- 2026-08-28 22:46:47