1
$\begingroup$

I've created a Synthetic Aperture Radar (SAR) simulator and am testing it to ensure its correct operation. One of the last steps is to process the data into a final image, but I'm having trouble with that.

I've shared four files here so anyone can recreate my image formation process thus far.

  1. grid1.gltf is the model used in the simulation. It is just a sparse array of metal plates.
  2. positions.csv is the radar position at each pulse
  3. view_rdm.py is the Python script used to generate the image (requires numpy and matplotlib)
  4. rdm.bin is the range-Doppler map generated by the simulation

Some notes about the range-Doppler map data.

  • The waveform has already been range-compressed
  • Motion compensation has been performed such that the origin is always at range bin 128
  • The data is still in the slant domain
  • I've introduced zero additional noise sources

Using the command python view_rdm.py positions.csv rdm.bin 20 (where 20 controls the dynamic range of the image in log scale), I get the following image 20dB dynamic range image of metal plates

As you can see, when comparing this image with the GLTF file, there are noticeable areas where the image does not compress correctly, specifically in the middle row, where there seems to be some aliasing, and in the last row (bottom), where energy is compressed into the zero-doppler bin (bin-1024) when there is no structure there.

Any help would be greatly appreciated. Thank you.

$\endgroup$
12
  • $\begingroup$ First step with any IFP is to process individual point targets (i.e., one and only one at a time) and look at the intermediate results each step of the way. This way you know what the output of each step should be. If you do that, I am 100% confident you will find the source of your error. $\endgroup$ Commented Jul 8 at 18:25
  • $\begingroup$ @AnonSubmitter85 When I place a single point target not at the origin, I am able to focus that point correctly if I motion-compensate the point target position to the middle range bin. Otherwise it seems like I need a spatially dependent motion compensation which I have no reference material for. $\endgroup$ Commented Jul 8 at 19:37
  • $\begingroup$ Not sure what you mean. If you a place a point target at the the mo-comp point, do you get constant phase in the frequency domain (in both dimensions! both range frequency and Doppler)? If you offset the target in range (range being defined using the mo-comp point and the center platform position), do you see the correct phase slope in the range frequency domain on each pulse. Likewise if you offset the point in Doppler? $\endgroup$ Commented Jul 8 at 20:00
  • 1
    $\begingroup$ Easiest in terms of coding is backprojection, but it's also slooooooow. It's usually done a GPU if done at all. Either that or some fancy complicated recursive implementation. Basic PFA is the fastest and usually accurate enough. If it's not accurate enough, there is a spatially variant correction that can be done at the end to fix that. Even with the correction, PFA is faster than RMA, which requires that the data be mo-comped to a line rather than a point. The correction for PFA takes some effort to code though. I don't know. Nothing is perfect. $\endgroup$ Commented Jul 11 at 18:57
  • 1
    $\begingroup$ That would make a good new question? I just searched for questions on the topic and didn't find anything useful. $\endgroup$ Commented Jul 12 at 21:17

1 Answer 1

1
$\begingroup$

Perhaps this will help. The simplest point target simulator that doesn't consider platform motion during the transit time of the pulse can be written in a couple lines of code like this:

tau_mcp = column_vector_of_the_delay_for_the_mocomp_point_on_each_pulse
tau_tgt = column_vector_of_the_delay_for_the_target_on_each_pulse
f = column_vector_of_the_frequencies_of_interest
x = exp( 1j * 2*pi * f * (tau_tgt - tau_mcp).' );

The .' is to signify transpose, so that a * b.' is the outer product of the two column vectors a and b. The 2-D FFT of the x is your range/Doppler image.

$\endgroup$
3
  • $\begingroup$ Is the point of this to understand how much phase unwrapping is required per pixel based on its relative position to the mo-comp point? $\endgroup$ Commented Jul 8 at 23:43
  • $\begingroup$ No. The point of the above is to illustrate how to generate the phase history for a point target. $\endgroup$ Commented Jul 8 at 23:55
  • 1
    $\begingroup$ @MichaelBlazej the point he's trying to make is that you have to compensate the phase according to the frequency of each range bin and the range from the platform to each pixel you are imaging in the scene. You can't just phase compensate to the center point, the phase of all other points will be off. $\endgroup$
    – Baddioes
    Commented Jul 9 at 3:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.