GAMMA DIFF/GEO Software: Reference Manual

SLC coregistration and resampling using offset polynomials (SLC_resamp_all)

Perl script:  SLC_resamp_all

Description

This is  a  guide on how to use the script SLC_resamp_all to resample a set of SLC images to a common reference SLC scene using a polynomial offset models in range and azimuth. The resampling uses range and azimuth offset polynomials that are stored in the ISP OFF_par file (offset/interferogram parameter file).  As input data the following inputs are required:

1. SLC image data with the ISP image parameter files
2. A table of the SLC images to be resampled and the reference scene in the form of an SLC_tab. The SLC tab has two columns, one line per SLC. In the first column is the SLC file name including the absolute or relative
path to the SLC. In the second column is the SLC parameter file name including the absolute or relative path to the SLC parameter file

An example SLC_tab is shown below for 2 SLC images with relative paths:

slc/19990915.slc    slc/19990915.slc.par
slc/19991020.slc    slc/19991020.slc.par

3. A multi-look intensity MLI image of the scene and the associated ISP image parameter file

Either include $DIFF_HOME/scripts in the PATH environment variable or copy the SLC_resamp_all script to the directory above where the SLCs are located. Next, run the script without arguments to see the command line arguments:

*** ./SLC_resamp_all
*** Copyright 2014, Gamma Remote Sensing, v4.1 3-Feb-2014 clw ***
*** Resample a set of SLCs to a common reference SLC ***

usage: ./SLC_resamp_all <SLC_tab> <ref_SLC> <ref_par> <rslc_dir> <RSLC_tab> <mode> [rflag] [rlks] [azlks] [rpos] [azpos] [npoly]

    SLC_tab   (input) two column list of SLC filenames and SLC parameter filenames (including paths) (ascii)
    ref_SLC   (input) reference SLC (including path)
    ref_par   (input) ISP image parameter file of the reference SLC (including path)
    rslc_dir  directory to receive the resampled SLCs and ISP image parameter files  
    RSLC_tab  (output) RSLC_tab file for the resampled SLC files
    mode      processing mode:
                0: create offset parameter files   
                1: estimate initial range and azimuth offsets using orbit state vectors
                2: measure initial range and azimuth offsets using SLC images
                3: estimate range and azimuth offset models using correlation of image intensities
                4: resample SLC images using range and azimuth offset model
    rflag     flag for interactive refinement of the resampled SLC:
                0: resample and measure residual range and azimuth offsets  (default)
                1: interactively improve range and azimuth offset polynomials and then measure residual offsets
                2: no checking of residual offsets
    rlks      number of range looks for initial offset estimation  (enter - for default)
    azlks     number of azimuth looks for initial offset estimation  (enter - for default)
    rpos      center of patch in range (samples) (enter - for default: image center)
    azpos     center of patch in azimuth (lines) (enter - for default: image center)
    npoly     fit polynomial order (1,3,4,6, default: 3)
    n_ovr     SLC over-sampling factor for offset estimation (integer 2**N (1,2,4) default: $n_ovr)

    -i "roff azoff"   initial values for range and azimuth offsets, example: "-10 30", default: "- -"


The SLC images should normally all be in one directory, though the SLC_tab can work with files in different directories. The output coregistered files all be in the directory specified on the command line.  The SLC_tab can be created using the script mk_tab.

The different modes represent steps in the processing that must be performed sequentially. The poly parameter sets the order of the polynomial model in the call to program offset_fit. The option -i is used to specify initial values for the range and azimuth offsets used in modes 2 and 3. The offset values must be bracketed in double quotes.

Mode 0: Create offset parameter files for estimation of the offsets

The first step in the co-registration and resampling process is creating an offset parameter file.  The offset parameter file contains the parameters that specifies the locations where offsets are measured and the range and azimuth offset polynomials used for resampling the second SLC.

Example:
SLC_resamp_all SLC_tab rslc/19990915.rslc rslc/19990915.rslc.par geo/hm_dem.rdc mli rslc RSLC_tab 1

This generates the following  call to the program create_offset:

create_offset rslc/19960421.rslc.par slc/19960422.slc.par rslc/19960421_19960422.off < create_offset.in

The inputs to create_offset are derived from the SLC are the default values as shown below. Here is an example of the offset parameter file after all processing steps have been completed:

Gamma Interferometric SAR Processor (ISP)

Interferogram and Image Offset Parameter File

title:     offset parameters
initial_range_offset:                    6
initial_azimuth_offset:                228
slc1_starting_range_pixel:               0
number_of_slc_range_pixels:           2296
offset_estimation_starting_range:       48
offset_estimation_ending_range:       2248
offset_estimation_range_samples:        32
offset_estimation_range_spacing:        70
offset_estimation_starting_azimuth:     48
offset_estimation_ending_azimuth:     5698
offset_estimation_azimuth_samples:      32
offset_estimation_azimuth_spacing:     182
offset_estimation_window_width:         64
offset_estimation_window_height:       128
offset_estimation_threshhold:         7.00
range_offset_polynomial:         5.51269   2.9014e-04   3.2657e-06   0.0000e+00
azimuth_offset_polynomial:     228.46385  -6.3313e-05   6.3504e-06   0.0000e+00
slc1_starting_azimuth_line:               0
interferogram_azimuth_lines:            574
interferogram_width:                   1148
first_nonzero_range_pixel:                0
number_of_nonzero_range_pixels:        1148
interferogram_range_looks:                2
interferogram_azimuth_looks:             10
interferogram_range_pixel_spacing:      15.809780   m
interferogram_azimuth_pixel_spacing:    39.907180   m
resampled_range_pixel_spacing:           0.000000   m
resampled_azimuth_pixel_spacing:         0.000000   m
resampled_starting_ground_range:         0.00000   m
resampled_pixels_per_line:               0
resampled_number_of_lines:               0

Mode 1: Measure initial range and azimuth offsets using orbit information

The most robust way to estimate the initial offsets between the images is to use the orbit state vector and SLC timing information. The ISP program init_offset_orbit determines the time of closest approach of the two tracks to determine an estimate of the range and azimuth offsets between the images

Example:
SLC_resamp_all SLC_tab slc/19960421.slc slc/19960421.slc.par rslc RSLC_tab 0 1 1 1

This results in the following command being run:

init_offset_orbit rslc/19960421.rslc.par slc/19960422.slc.par rslc/19960421_19960422.off

with the result:
initial offset range (samples): 6   azimuth (lines): 229

Mode 2: Measure initial range and azimuth offsets using the images

Instead of or in addition to using the orbits, the initial offset of the images can be determined using the ISP program init_offset. This step measures the initial offset between the reference SLC and SLC-2 using an image patch specified by the user. The location  for the initial estimate is nominally in the image center. If another location with more topography is desired, the location can be specified on the command line using the  following parameters that can be entered on the SLC_resamp_all command line:

    rlks      number of range looks for initial offset estimation  (enter - for default)
    azlks     number of azimuth looks for initial offset estimation  (enter - for default)
    rpos      center of patch for initial offset estimation in range (samples) (enter - for default: image center)
    azpos     center of patch for initial offset estimation in azimuth (lines) (enter - for default: image center)

Example:
SLC_resamp_all SLC_tab slc/19960421.slc slc/19960421.slc.par rslc RSLC_tab 2 1 1 1

This results in the following command being run:

init_offset rslc/19960421.rslc slc/19960422.slc rslc/19960421.rslc.par slc/19960422.slc.par rslc/19960421_19960422.off 1 1 1148 2873

with the result:

offset estimate (range,azimuth):      5.900     228.353
correlation SNR:    117.219
output DIFF/GEO parameter file: rslc/19960421.rslc.par

Mode 3: Estimate range and azimuth offset models using correlation of image intensities

In this step, the offsets between the SLC reference and initial resampled SLC are measured over a grid of points taking into account the initial offset deterimined in the previous steps. The values of these offsets are then used to estimate range and azimuth offset polynomials to resample the SLC.

Example:

SLC_resamp_all SLC_tab slc/19960421.slc slc/19960421.slc.par rslc RSLC_tab 3 1 1 1

This results in the following commands and result:

offset_pwr rslc/19960421.rslc slc/19960422.slc rslc/19960421.rslc.par slc/19960422.slc.par rslc/19960421_19960422.off rslc/19960421_19960422.offs rslc/19960421_19960422.snr

In the output log file  rslc/19960421_19960422_resamp.log is listed the output from offset_pwr

number of offsets above SNR threshold: 914 of 1024

The range and azimuth offsets as well as the signal to noise values for the offsets (SNR values) are then used as inputs to the offset_fit program:
offset_fit rslc/19960421_19960422.offs rslc/19960421_19960422.snr rslc/19960421_19960422.off rslc/19960421_19960422.coffs - - 3

with output:

range_offset_polynomial:         5.51269   2.9014e-04   3.2657e-06   0.0000e+00
azimuth_offset_polynomial:     228.46385  -6.3313e-05   6.3504e-06   0.0000e+00

Mode 4: Resample SLC images using polynomial offset model determined in mode 3 and generate RSLC_tab

The offset parameter file now contains the range and azimuth offset polynomials. See the documentation on offset_fit to understand the different terms in the polynomials.  If the rflag command line parameter is set to 1 (offset confirmation) the residual offsets from this second resampling are measured and a further correction to the offset model is determined. 

Example:
Resampling using the initial  offset correction  polynomial:

SLC_resamp_all SLC_tab slc/19960421.slc slc/19960421.slc.par rslc RSLC_tab 4 1 1 1

generates the following command:

SLC_interp slc/19960422.slc rslc/19960421.rslc.par slc/19960422.slc.par rslc/19960421_19960422.off rslc/19960422.rslc rslc/19960422.rslc.par


If the rflag parameter has been set, the offsets are remeasured and a further improvement of the offset polynomials is carried out:

create_offset rslc/19960421.rslc.par rslc/19960422.rslc.par rslc/19960421_19960422_2.off < create_offset.in

offset_pwr rslc/19960421.rslc rslc/19960422.rslc rslc/19960421.rslc.par rslc/19960422.rslc.par rslc/19960421_19960422_2.off rslc/19960421_19960422_2.offs \ rslc/19960421_19960422_2.snr


offset_fit rslc/19960421_19960422_2.offs rslc/19960421_19960422_2.snr rslc/19960421_19960422_2.off rslc/19960421_19960422_2.coffs - - 3


With these results for the residual offset between the resampled SLC and the reference from offset_fit:

final range offset poly. coeff.:             -0.00347   3.15927e-06   2.47865e-07
final range offset poly. coeff. errors:   3.39985e-05   1.70438e-08   8.12911e-09

final azimuth offset poly. coeff.:              0.00160  -3.66268e-06   3.13187e-07
final azimuth offset poly. coeff. errors:   3.81452e-05   1.91226e-08   9.12061e-09

final model fit std. dev. (samples) range:   0.0132  azimuth:   0.0148

Next update the offset polynomial with the residual correction:

set_value rslc/19960421_19960422.off rslc/19960421_19960422.off "range_offset_polynomial"  " 5.5126900e+00  2.90139e-04  3.26567e-06  0.00000e+00"

set_value rslc/19960421_19960422.off rslc/19960421_19960422.off "azimuth_offset_polynomial" " 2.2846385e+02 -6.33127e-05  6.35039e-06  0.00000e+00"


Followed by the final resampling of the SLC data and measurement of the residual offsets:

SLC_interp slc/19960422.slc rslc/19960421.rslc.par slc/19960422.slc.par rslc/19960421_19960422.off rslc/19960422.rslc rslc/19960422.rslc.par

offset_pwr rslc/19960421.rslc rslc/19960422.rslc rslc/19960421.rslc.par rslc/19960422.rslc.par rslc/19960421_19960422_2.off rslc/19960421_19960422_2.offs rslc/19960421_19960422_2.snr


offset_fit rslc/19960421_19960422_2.offs rslc/19960421_19960422_2.snr rslc/19960421_19960422_2.off rslc/19960421_19960422_2.coffs - - 3


These are the final residual polynomials for the range and azimuth offsets:
final range offset poly. coeff.:             -0.00061   5.07065e-07   4.24556e-08
final azimuth offset poly. coeff.:            0.00034  -5.37996e-07   3.41833e-08

Offset Error Estimation:

It is essential to have estimates of the residual error in the resampling for each of the SLCs. A log file is created for each SLC pair and stored in the resampled SLC directory. The commands and  complete output of each of the programs  is recorded in the log file. In this particular example there is only one log file since only a single pair has been co-registered. In this example the SLC data were resampled 3 times and the residual offsets measured.  The values of the standard deviation of the measurements relative to the model  can be extracted from the log file using the Linux/Unix grep utility as follows:

grep "final model fit std. dev."  19990915_19991020_resamp.log

final model fit std. dev. (samples) range:   0.0205  azimuth:   0.0164
final model fit std. dev. (samples) range:   0.0132  azimuth:   0.0148
final model fit std. dev. (samples) range:   0.0132  azimuth:   0.0149


This indicates that the standard deviation of the offsets in range and azimuth were improved after the second resampling.

Copyright for Documentation, Users Guide and Reference Manual by Gamma Remote Sensing, 2014.
CW last change 4-Feb-2014.