# Omega-K algorithm implementation for synthetic aperture radar

I have been trying to develop Omega-k algorithm for SAR image formation. I am using the equations from chapter 8 in digital processing of Synthetic Aperture Radar data by Cumming and Wong. The steps I implemented are:

1. Range compression
2. Range IFFT
3. Two DFFT
4. Bulk Azimuth compression to a reference range (using eqn. 8.3)
5. Stolt Mapping (using eq. 8.5)
6. IFFT

I have confusions about the steps 4 to 6. Is there any norm for choosing the reference range in eqn. 8.3? I substituted eqn. 8.3 with 8.5 for stolt mapping and tried to interpolate the 2dfft spectra. However, the interpolation doesn't work. Do I need to compress the signal again after stolt mapping?

Any relevant answers will be highly appreciated. Thanks.

• It's been awhile since I looked at the book. If I recall correctly, the range compression is done via matched filter and not by Stretch processing?. Steps 2 & 3 look strange - why do an IFFT and then a 2D FFT? You could have just done a 1D FFT in the azimuth at step 2. – David May 24 '19 at 14:31
• Thanks David. I used the matched filter for range compression and directly performed 2DFFT on the range compressed signal (without taking the range IFFT). But confusions regarding steps 4 and 5 still remain. Do I need to perform azimuth compression twice before and after stolt mapping? – Rifat Afroz May 27 '19 at 4:40

Here is one way of performing OmegaK processing, refer to Bamler's paper "A comparison of Range-Doppler and Wavenumber Domain SAR Focusing Algorithms" for details:

Assuming range-compressed data, proceed as follows:

1) Perform 2D-FFT of data.

2) Perform Stolt Migration of data along each slow-time column.

3) Multiply with an additional exponential term (see (30) in the reference above).

4) Perform 2D-iFFT --> Done

For the Stolt Interpolation you can use interp1() if you're on Matlab. From my experience, shape-preserving piecewise cubic interpolation ("PCHIP") works fine, but no warranties given. Be sure to pick a suitable interpolator function; simple linear interpolation is not sufficient.

During interpolation, calculate the new supporting points from an equally-spaced $$k_r$$ grid created using

kr=[kr_min:kr_span/(N_fast-1):kr_max];


by means of (28) in the reference given above.

Note that there is another variant of the OmegaK algorithm, which firstly focuses point targets at the focus distance by multiplying with the PSF's Fourier transform. Then, Stolt Mapping is carried out to mitigate phase aberrations at distances apart from the focus distance. This algorithm operates as follows:

1) 2D FFT

2) Multiply with PSF's FT (see (32) in the given paper)

3) Stolt Interpolation

4) 2D iFFT -> Done

Both variants are equivalent from a systems theoretical point of view.

Good luck with your processing!

• Thanks Wolf! I will definitely have a look through the paper. Meanwhile I had a bit of luck with my processing using the equations from Cumming's book. I used the following steps: 1. 2D FFT the raw data, – Rifat Afroz Jun 11 '19 at 6:37
• 1. 2D FFT the raw data, 2. Phase compensation to a reference range (eq. 8.4) 3. Stolt map the range frequencies to their shifted versions (eq. 8.5) 4. Phase compensate the shifted data (eq. 8.7) 5. 2D FFT However, I still have few questions regarding the steps: 1. Do the data get stretched and become unequally spaced after stolt interpolation? 2. Can I still use MATLAB's IFFT2 function on the unequally spaced data? 3. I can see strong sidelobes after ifft2, do you know why is that happening? Thanks in advance. – Rifat Afroz Jun 11 '19 at 7:01
• Hi, after performing Stolt Interpolation, your data is in the U'(kx,kr) domain. As already stated in the answer, kr is an equally-spaced grid. You can use 2D IFFT to turn U'(kx,kr) into u(x,r). – Wolf_Magnus Jun 11 '19 at 23:00

I am using this link for getting the reference by Richard Balmer :

There are no references 30 and 32