Environments | PYTHON :: EASI :: MODELER |
Quick links | Description :: Parameters :: Parameter descriptions :: Details :: Example :: Algorithm :: Acknowledgements :: References :: Related |
Back to top |
Back to top |
psfredur(fili, filo)
Name | Type | Caption | Length | Value range |
---|---|---|---|---|
FILI* | str | Input polarimetric SAR image | 1 - | |
FILO* | str | Output Freeman-Durden classified raster | 1 - |
Back to top |
FILI
The name of the input polarimetric SAR data set. The input data set must contain either non-symmetrized or symmetrized fully polarimetric (quad-polarization complex) data in scattering, covariance, coherence, or Kennaugh format. To minimize noise, it is recommended that the input data set have an equivalent number of looks (ENL) of at least 25, which can be done by applying a polarimetric filter to the image, such as a boxcar filter, when the input data set is single-look complex.
The input file must be a data set that has already been imported in PCIDSK (.pix) format by SARINGEST. Alternatively, it can be the key-file name of any GDB-supported POLSAR data set in its distribution format. For more information, and a complete list of supported POLSAR sensors and data products, see SARINGEST.
FILO
The name of the output file that will hold the classification results. The output file has the same dimensions as the input file, and three floating-point channels representing the contribution to the total power from each of the three scattering mechanisms.
The specified file must not already exist.
Back to top |
PSFREDUR performs an unsupervised Freeman-Durden classification of a fully polarimetric SAR data set. It partitions the total power at every image pixel into contributions from three scattering mechanisms: double-bounce, volume, and rough-surface.
The input data set must contain either non-symmetrized or symmetrized fully polarimetric (quad-polarization) data in one of the following matrix formats: scattering (s4c or S3c), covariance (c4r6c or C3r3c), coherency (t4r6c or T3r3c), or Kennaugh (k16r or K9r).
The processing of PSFREDUR is similar to that of PSVANZYL. The main difference is that while PSFREDUR partitions the total scattered power into contributions from the three scattering mechanisms, and then returns the three contributions, PSVANZYL finds the single dominant scatterer type for each pixel, and then assigns the pixel to the corresponding class.
Back to top |
Perform a classification of an SLC RADARSAT-2 image that has already been imported in PCIDSK (.pix) format by SARINGEST. The SLC image is first averaged by PSBOXCAR using a 5 x 5 window. PSBOXCAR also converts the image from the original non-symmetrized scattering matrix (s4c) format to the non-symmetrized covariance matrix format (c4r6c). The averaged image is then used as an input to PSFREDUR.
from pci.psboxcar import psboxcar from pci.psfredur import psfredur fili ="rast2.pix" filo ="r2_enl25.pix" flsz= [5] psboxcar( fili, filo, flsz ) fili ="r2_enl25.pix" filo ="r2_psfredur.pix" psfredur( fili, filo)
Back to top |
The algorithm in PSFREDUR is based on the article cited in References. It uses the elements of the symmetrized covariance matrix C3r3c to partition the total power at each pixel (Ptot) into contributions from the three scattering mechanisms: rough surface (Ps), double-bounce (Pd), and volume scattering (Pv). The partitioning is performed as follows:
Ptot = Ps + Pd + Pv = <|Shh|^2> + 2*<|Shv|^2> + <|Svv|^2>
Sij represents the elements of the scattering matrix, and the angular brackets (< >) represent the spatial averaging over the ENL.
The three power contributions are expressed as follows:
Ps = fs * (1 + beta^2) Pd = fd * (1 + |alpha|^2) Pv = 8 * fv / 3
Here, fs, fd, and fv represent the VV power from the rough-surface, double-bounce, and volume scattering; alpha represents the HH to VV amplitude ratio for double-bounce scattering, and beta represents the HH to VV amplitude ratio for rough-surface scattering. It is assumed beta is real, while alpha can be complex.
The three scattering mechanisms are modeled by expressions that relate the parameters fs, fd, fv, alpha, and beta to the elements of the covariance matrix C3r3c (which are themselves given by the elements of the scattering matrix, Sij). The overall model is as follows:
<|Shh|^2> = fs * beta^2 + fd * |alpha|^2 + fv <|Svv|^2> = fs + fd + fv <Shh * (Svv*)> = fs * beta + fd * alpha + fv / 3 <|Shv|^2> = fv / 3 <Shh * (Shv*)> = <Shv * (Svv*)> = 0
The asterisk (*) represents the complex conjugate of a number.
The algorithm first derives the volume scattering contribution, fv, and subtracts it from the total power before computing the rough-surface and double-bounce contributions. The values of alpha and beta depend on the dominant effect in the remaining power. If the rough-surface scattering is dominant (Re(<Shh*(Shv*)>)>0), alpha=-1. If the double-bounce scattering is dominant (Re(<Shh*(Shv*)>)<0), beta=1.
Re() represents the real part of a complex number. Im(), used in the following expressions, represents the imaginary part of a complex number. The following elements of the symmetrized covariance matrix C3r3c, Pij, are used in the algorithm:
P11 = |Shh|^2 P22 = |Shv|^2 P33 = |Svv|^2 P13 = Re((Shh*) * Svv) P13 = Im((Shh*) * Svv)
The processing in PSFREDUR proceeds as follows:
fv = 3 * P22
C11' = P11 - fv C33' = P33 - fv C13' = P13 + i*Q13 - fv/3
Here, i represents the imaginary unit, i = sqrt(-1).
IF C11' < epsilon THEN C11' = epsilon IF C33' < epsilon THEN C33' = epsilon IF |C13'| > sqrt(C11' * C33') THEN C13' = C13 * sqrt(C11' * C33') / |C13'|
Here, epsilon represents a very small positive number, for example 10^-10.
IF Re(C13') > 0 THEN alpha = -1 IF C33' + Re(C13') = 0 THEN beta = 0 ELSE beta = (C11' + Re(C13')) / (C33' + Re(C13')) ENDIF fs = (C33' + Re(C13')) / (1 + beta) fd = C33' - fs ELSE IF Re(C13') < 0 THEN beta = 1 IF (C13')* - C33' = 0 THEN alpha = 0 ELSE alpha = (C11' - C13') / ((C13')* - C33') ENDIF fd = (C33' - C13') / (1 - alpha) fs = C33' - fd ELSE IF Re(C13') = 0 THEN beta = 0 IF Im(C13') = 0 THEN alpha = 0 fd = 0 ELSE alpha = C11' / (C13')* fd = C13' / alpha ENDIF fs = C33' - fd ENDIF
Ps = fs * (1 + beta^2) Pd = fd * (1 + |alpha|^2) Pv = 8 * fv / 3
Any negative power values are replaced by zero, and the positive values are rescaled to preserve the total power. For example, TP = Pd + Pv + Ps.
Back to top |
PCI Geomatics gratefully acknowledges the financial support provided by the Canadian Space Agency through the Earth Observation Application Development Program (EOADP), contract number 9F028-034946.
Back to top |
Freeman, T. and S.L. Durden. "A three-component scattering model for polarimetric SAR data", IEEE Trans. Geosci. Remote Sensing, 36, no. 3 (1998): 963-973.
© PCI Geomatics Enterprises, Inc.®, 2024. All rights reserved.