Skip to content

Instantly share code, notes, and snippets.

@ucalyptus
Last active November 11, 2023 07:00
Show Gist options
  • Save ucalyptus/97ce3004a5f1a79cfa8e5183a85cdf6f to your computer and use it in GitHub Desktop.
Save ucalyptus/97ce3004a5f1a79cfa8e5183a85cdf6f to your computer and use it in GitHub Desktop.
Ground Moving Target Indication in SAR Images using Symmetric Defocusing

SAR is not compensating for the doppler of moving targets. It only compensates for the doppler shift of stationary targets as it assumes that all targets are stationary on Earth. SAR has side lobes because of which when those capture doppler, they might not suffice Nyquist criterion.

GMTI using Symmetric Defocusing

Abstract

Two filters,which differ only in the signs of the phase responses, are used to defocus the complex image respectively. In the two defocused images,each stationary target is blurred to the same extent,but each moving target is blurred to different extents. Therefore, moving targets can be indicated by patch-by-patch sharpness comparison of the two defocused images. The results of the simulated and real data show that this algorithm is effective and efficient.

Step-By-Step

  1. We have an azimuth signal
  2. We take an FFT of it and we focus it with a H(f) filter.
  3. With Filter 1 , defocusing is done on Step2 output, we obtain S1(f)
  4. With Filter 2 , defocusing is done on Step2 output, we obtain S2(f)
  5. Inverse FFT of S1(f) gives s1(t)
  6. Inverse FFT of S2(f) gives s2(t)
    • If Stationary targets, then both filters will have same Time Period thus blurring of same extent
    • If Moving targets, then both filters will have different Time Periods thus blurring to different extent
  7. We use contrast to find absolute difference between the two images.
  8. The contrast of these two patches are calculated patch-by-patch.
  9. We use Constant False Alarm Method to find a probability density function of the Contrast difference.

Typical Range-Doppler Algorithm

  1. SAR Raw Data is given.
  2. FFT in range
  3. Range Compression
  4. FFT in Azimuth
  5. RCMC
  6. Azimuth Compression
  7. 2D FFT
@ucalyptus
Copy link
Author

Explaining Azimuthal Compression

  1. Replica gets expanded in the range direction for that chirp length.

  2. Since I am moving in azimuth, it will get expanded in the azimuth direction as well.

  3. Now since the range changes per azimuth unit value, the locus of my range is a hyperbola.

  4. So since my range compression output is a hyperbola i.e my range cell gets migrated from expected x1
    to x1'.

  5. We need to do RCMC (Range Cell Migration Correction)

  6. Or in layman terms, straighten up the hyperbola.

  7. Only after straightening, we can do azimuthal compression (logical reason)

Observations

  1. When moving targets are included, point targets get spread after azimuthal compression, and before azimuthal
    compression, the lines are more and it is thicker.

  2. When only stationary(multiple) and no moving targets are included, the point target's range compression output
    is thinner and goes thicker with more stationary targets.

  3. No histogram creation afte r azimuthal compression. Why?

  4. Histogram shows sinc function overall after range compression.

Conclusions

  1. More the number of st/moving targets, the decompression output will be thicker for both real and imag images.
    THAT IS
    WE CANNOT MAKE OUT MOVING TARGET THROUGH JUST RANGE COMPRESSION

  2. More the number of st/moving targets, point after the second compression, will be spread over more points(aka Blob).
    According to Jalpa Maam, they will be a connected polygon.

  3. Stationary: Smaller Blob
    Moving: Larger Blob

  4. Lines thicker for moving multiple than stat multiple.

  5. For AMPL images,

    • For multi stat , negative sinc side is absent.
    • For multi moving, both sides of sinc is present.

@PalgunaGopireddy
Copy link

Is there a code for this?

@ucalyptus2
Copy link

@PalgunaGopireddy

import numpy as np

def symmetric_defocusing(azimuth_signal, H, filter1, filter2, threshold):
    # Step 1: FFT of azimuth signal
    F_azimuth = np.fft.fft(azimuth_signal)
    
    # Step 2: Focusing using H(f) filter
    focused_signal = F_azimuth * H
    
    # Step 3 & 4: Defocusing with Filter 1 and Filter 2
    S1_f = focused_signal * filter1
    S2_f = focused_signal * filter2
    
    # Step 5 & 6: Inverse FFT to obtain s1(t) and s2(t)
    s1_t = np.fft.ifft(S1_f)
    s2_t = np.fft.ifft(S2_f)
    
    # Step 7 & 8: Contrast calculation and sharpness comparison
    contrast_diff = np.abs(s1_t - s2_t)
    
    # Step 9: Apply Constant False Alarm Method
    detected_moving_targets = contrast_diff > threshold
    
    return detected_moving_targets

@PalgunaGopireddy
Copy link

Thanks @forkbabu

But what are the values of filter1 and filter2?

It would be good if it can be explained by giving an example

@ucalyptus
Copy link
Author

@PalgunaGopireddy Cannot share since the research is part of ISRO's projects.

@PalgunaGopireddy
Copy link

Ok. Thanks.
@forkbabu or @ucalyptus

Do you have any other defocuse reduction or autofocus or motion compensation algorithm code?
If you happen to have any of this kind of code that others or you implemented, please share.
Thank you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment