This manual is still being converted...
AIRSAR Data Compression Formats
For AIRSAR data, there are four possible formats :
1) compressed stokes matrix data
(multilook,quad-pol, low-res, 10 bytes/pixel)
2) compressed scattering matrix (730 processor) data
(single look,quad-pol,10 bytes/pixel)
3) compressed scattering matrix (3.5 processor) data
(single look,quad-pol, low-res, 10 bytes/pixel)
4) uncompressed synoptic amplitude data
(vax real*4, single pol, low-res, 4 bytes/pixel)
In the following descriptions:
sign( ) will return the sign of the argument ( ± 1)
nint( ) will indicate that the nearest integer value is calculated of its
argument.
int( ) will indicate that the truncation of the floating point value to integer
is calculated of its argument, and that, if the floating point value is less than zero,
subtraction by 1.0 is additionally required. Note that this is not the same as FORTRAN
int( ).
gen_fac is the AIRSAR general scale factor whose value is recorded in the
header of the oldheader, field 133.
Stokes matrix data
AIRSAR compressed Stokes matrix "CM" quad-pol data - 10 bytes per pixel.
Consists of one file for each scene, per frequency. Each line of each file consists of 1024
azimuth samples. There are 750 or 1282 lines depending on the processor, each
corresponding to progressively greater range from the radar. The azimuth pixel spacing
is 12.1 meters for the pre-1993 prf, and 8 meters for the 1993 and later prf. The range
pixel spacing is 6.66 meters (assumes 20 MHz data). The first two or three lines in the
file are header lines. The data has been symmetrized such that SHV = 0.5 (SHV +SVH),
and is usually calibrated. For the "730 processor", the data has been multilooked by 4,
while for the "3.5 processor", the data has been multilooked by 16.
¡ 10 bytes per pixel - quad-pol data, with:
¡ Byte(1) : int{log2(M11)}
¡ Byte(2) : nint{254[Mantissa - 1.5]}
Mantissa = (M11) / 2Byte(1))
qsca = gen_fac [ (Byte(2) / 254 ) + 1.5] 2Byte(1)
¡ Byte(3) : nint{127 M12/qsca}
¡ Byte(4) : nint{127 sign(M13/qsca) sqrt(M13/qsca)}
¡ Byte(5) : nint{127 sign(M14/qsca) sqrt(M14/qsca)}
¡ Byte(6) : nint{127 sign(M23/qsca) sqrt(M23/qsca)}
¡ Byte(7) : nint{127 sign(M24/qsca) sqrt(M24/qsca)}
¡ Byte(8) : nint{127 M33/qsca}
¡ Byte(9) : nint{127 M34/qsca}
¡ Byte(10) : nint{127 M44/qsca}
The total power is :
TP = M11 = gen_fac ( byte(2) / 254 + 1.5) 2Byte(1))
The remaining terms are given by :
M12 = M11 byte(3) /127
M13 = sign(byte(4)) M11 (byte(4) /127)**2
M14 = sign(byte(5)) M11 (byte(5) /127)**2
M23 = sign(byte(6)) M11 (byte(6) /127)**2
M24 = sign(byte(7)) M11 (byte(7) /127)**2
M33 = M11 byte(8) /127
M34 = M11 byte(9) /127
M44 = M11 byte(10) /127
M22 = M11 - M33 - M44
The difference between the AIRSAR 'CM' data and SIR-C MLC data is chiefly
that, for AIRSAR, the elements of the Stokes Matrix are stored directly to each
compressed byte; while for SIR-C, the cross-products (that when combined appropriately
comprise the Stokes matrix) are stored. In addition, the AIRSAR data employs a general
scale factor, while SIR-C does not. And finally, the value stored in the first two bytes by
AIRSAR is the total power divided by the general scale factor, while the value stored in
the first two bytes by SIR-C is four times the total power.
The Stokes matrix and Cross-Products
The symmetrized Stokes matrix may be formed from the cross-products of the scattering
matrix that are stored by SIR-C in the MLC format as follows:
m(1,1) = (ShhShh* + SvvSvv* + 2ShvShv*) / 4.0
m(1,2) = (ShhShh* - SvvSvv*) / 4.0
m(1,3) = (Re(ShhShv*) + Re(ShvSvv*) ) / 2.0
m(1,4) = (-Im(ShhShv*) - Im(ShvSvv*) ) / 2.0
m(2,1) = m(1,2)
m(2,2) = (ShhShh* +SvvSvv* - 2ShvShv* ) / 4.0
m(2,3) = ( Re(ShhShv*) - Re(ShvSvv*) ) / 2.0
m(2,4) = (-Im(ShhShv*) + Im(ShvSvv*) )/ 2.0
m(3,1) = m(1,3)
m(3,2) = m(2,3)
m(3,3) = (ShvShv* + Re(ShhSvv*) / 2.0
m(3,4) = -Im(ShhSvv*) / 2.0
m(4,1) = m(1,4)
m(4,2) = m(2,4)
m(4,3) = m(3,4)
m(4,4) = (ShvShv* - Re(ShhSvv*) )/ 2.0
The cross-products in terms of the symmetrized Stokes matrix elements are :
ShhShh* = 2m(1,2) + 2m(1,1) - m(3,3) - m(4,4)
ShvShv* = m(3,3) + m(4,4)
SvvSvv* = 2m(1,1) - 2m(1,2) - m(3,3) - m(4,4)
ShhShv* = complex( m(1,3) + m(2,3), -m(1,4) - m(2, 4) )
ShhSvv* = complex( m(3,3) - m(4,4), -2m(3,4) )
ShvSvv* = complex( m(1,3) - m(2,3), -m(1,4) + m(2,4) )
For SLC data, the Stokes matrix will not be symmetrized. The unsymmetrized
Stokes Matrix is given by:
m(1,1) = (ShhShh* + ShvShv* + SvhSvh* + SvvSvv*) / 4.0
m(1,2) = (ShhShh* - ShvShv* + SvhSvh* - SvvSvv*) / 4.0
m(1,3) = (Re(ShhShv*) + Re(SvhSvv*) ) / 2.0
m(1,4) = (-Im(ShhShv*) - Im(SvhSvv*) ) / 2.0
m(2,1) = (ShhShh* + ShvShv* - SvhSvh* - SvvSvv*) / 4.0
m(2,2) = (ShhShh* + SvvSvv* - ShvShv* - SvhSvh*) / 4.0
m(2,3) = ( Re(ShhShv*) - Re(SvhSvv*) ) / 2.0
m(2,4) = (-Im(ShhShv*) + Im(SvhSvv*) )/ 2.0
m(3,1) = (Re(ShhSvh*) + Re(ShvSvv*) ) / 2.0
m(3,2) = ( Re(ShhSvh*) - Re(ShvSvv*) ) / 2.0
m(3,3) = (ShvShv* + Re(ShhSvv*) / 2.0
m(3,4) = (-Im(ShhSvv*+Im(ShvSvh*) / 2.0
m(4,1) = (-Im(ShhSvh*) - Im(ShvSvv*) ) / 2.0
m(4,2) = (-Im(ShhSvh*) + Im(ShvSvv*) )/ 2.0
m(4,3) = (-Im(ShhSvv* - Im(ShvSvh*) / 2.0
m(4,4) = (Re(ShvSvh*) - Re(ShhSvv*) )/ 2.0