3.2.3 Polarimetry
In conventional imaging radar the measurement is a scalar which is proportional to the received
back-scattered power at a particular combination of linear polarization (HH, HV, VH or VV). Polarimetry is
the measurement and interpretation of the polarization of this measurement which allows to measure
various optical properties of a material. In polarimetry the basic measurement is a 2x2 complex
scattering matrix yielding an eight dimensional measurement space (Sinclair matrix). For reciprocal
targets where HV = VH, this space is compressed to five dimensions: three amplitudes (|HH|,
|HV|, and |VV|); and two phase measurements, (co-pol: HH-VV, and cross-pol: HH-HV). (see
grss-ieee).
Matrix conversions
This applications allows converting classical polarimetric matrices to each other. For instance, it is possible
to get the coherency matrix from the Sinclair one, or the Mueller matrix from the coherency one. The figure
below (3.7) shows the workflow used in this application.
The filters used in this application never handle matrices, but images where each band is related to their
elements. As most of the time SAR polarimetry handles symmetric matrices, only the relevant elements are
stored, so that the images representing them have a minimal number of bands. For instance, the
coherency matrix size is 3x3 in the monostatic case, and 4x4 in the bistatic case : it will thus be
stored in a 6-band or a 10-band complex image (the diagonal and the upper elements of the
matrix).
The Sinclair matrix is a special case : it is always represented as 3 or 4 one-band complex images (for
mono- or bistatic case).
There are 13 available conversions, each one being related to the following parameters:
- msinclairtocoherency
- msinclairtocovariance
- msinclairtocircovariance
- mcoherencytomueller
- mcovariancetocoherencydegree
- mcovariancetocoherency
- mlinearcovariancetocircularcovariance
- muellertomcovariance
- bsinclairtocoherency
- bsinclairtocovariance
- bsinclairtocircovariance
- sinclairtomueller
- muellertopoldegandpower
For each option parameter, the list below gives the formula used.
— Monostatic case —
- msinclairtocoherency (SinclairToReciprocalCoherencyMatrixFunctor)
- 0.5.(Shh+Svv).(Shh+Svv)∗
- 0.5.(Shh+Svv).(Shh−Svv)∗
- 0.5.(Shh+Svv).(2Shv)∗
- 0.5.(Shh−Svv).(Shh−Svv)∗
- 0.5.(Shh−Svv).(2Shv)∗
- 0.5.(2Shv).(2Shv)∗
- msinclairtocovariance (SinclairToReciprocalCovarianceMatrixFunctor)
- Shh.Shh∗
.Shh.Shv∗
- Shh.Svv∗
- 2.Shv.Shv∗
.Shv.Svv∗
- Svv.Svv∗
- msinclairtocircovariance (SinclairToReciprocalCircularCovarianceMatrixFunctor)
- Sll.Sll∗
- Sll.Slr∗
- Sll.Srr∗
- Slr.Slr∗
- Slr.Srr∗
- Srr.Srr∗
With:
- Sll = 0.5(Shh+2jShv−Svv)
- Slr = 0.5(jShh+jSvv)
- Srr = 0.5(−Shh+2jShv+Svv)
- mcoherencytomueller (ReciprocalCoherencyToReciprocalMuellerFunctor)
- 0.5∗(C11 +C22 +C33)
- Re(C12)+Im(C22)
- Re(C13)
- Im(C23)
- Re(C12)
- 0.5∗(C11 +C22 −C33)
- Re(C23)
- Im(C13)
- −Re(C13)
- −Re(C23)
- 0.5.Re(VAL1)
- 0.5.Im(VAL0)
- Im(C23)
- Im(C13)
- 0.5.Im(VAL1∗)
- 0.5.Re(VAL0)
With:
- VAL0 = C33 +C12 −C11 −(C12 −C22)∗
- VAL1 = −C33 +C12 −C11 −(C12 −C22)∗
Where Cij are related to the elements of the reciprocal coherence matrix.
- mcovariancetocoherencydegree (ReciprocalCovarianceToCoherencyDegreeFunctor)
- abs(Shh.Svv∗)∕sqrt(Shh.Shh∗)∕sqrt(Svv.Svv∗)
- abs(Shv.Svv∗)∕sqrt(Shv.Shv∗)∕sqrt(Svv.Svv∗)
- abs(Shh.Shv∗)∕sqrt(Shh.Shh∗)∕sqrt(Shv.Shv∗)
- mcovariancetocoherency (ReciprocalCovarianceToReciprocalCoherencyFunctor)
- 0.5.(C33 +C13 +C13∗+C11)
- 0.5.(−C33 −C13 +C13∗+C11)
- 0.5.(
.C12 +
.C23∗)
- 0.5.(C33 −C13 −C13∗+C11)
- 0.5.(
.C12 −
.C23∗)
- 0.5.(2.C22)
Where Cij are related to the elements of the reciprocal linear covariance matrix.
- mlinearcovariancetocircularcovariance (ReciprocalLinearCovarianceToReciprocalCircularCovarianceFunctor)
- 0.25.(C33 −i.
.C23 −C13 +i.
.C23∗−C13∗+2.C22 −i.
.C12 +i.
.C12∗+C11)
- 0.25.(i.
.C33 +2.C23 −i.
.C13 +i.
.C13∗+2.C12∗−i.
.C11)
- 0.25.(−C33+i.
.C23+C13+i.
.C23∗+C13∗+2.C22−i.
.C12−i.
.C12∗−C11)
- 0.25.(2.C33 +2.C13 +2.C13∗+2.C11)
- 0.25.(i.
.C33 +i.
.C13 +2.C23∗−i.
.C13∗+2.C12 −i.
.C11)
- 0.25.(C33 +i.
.C23 −C13 −i.
.C23∗−C13∗+2.C22 +i.
.C12 −i.
.C12∗+C11)
Where Cij are related to the elements of the reciprocal linear covariance matrix.
- muellertomcovariance (MuellerToReciprocalCovarianceFunctor)
- 0.5.(M11 +M22 +2.M12)
- 0.5.
.[(M13 +M23)+j.(M14 +M24)]
- −0.5.(M33 +M44)−j.M34
- M11 −M22
- 0.5.
.[(M13 −M23)+j.(M14 −M24)]
- 0.5.(M11 +M22 −2.M12)
— Bistatic case —
- bsinclairtocoherency (SinclairToCoherencyMatrixFunctor)
- (Shh+Svv).(Shh+Svv)∗
- (Shh+Svv).(Shh−Svv)∗
- (Shh+Svv).(Shv+Svh)∗
- (Shh+Svv).(j(Shv−Svh))∗
- (Shh−Svv).(Shh−Svv)∗
- (Shh−Svv).(Shv+Svh)∗
- (Shh−Svv).(j(Shv−Svh))∗
- (Shv+Svh).(Shv+Svh)∗
- (Shv+Svh).(j(Shv−Svh))∗
- j(Shv−Svh).(j(Shv−Svh))∗
- bsinclairtocovariance (SinclairToCovarianceMatrixFunctor)
- Shh.Shh∗
- Shh.Shv∗
- Shh.Svh∗
- Shh.Svv∗
- Shv.Shv∗
- Shv.Svh∗
- Shv.Svv∗
- Svh.Svh∗
- Svh.Svv∗
- Svv.Svv∗
- bsinclairtocircovariance (SinclairToCircularCovarianceMatrixFunctor)
- Sll.Sll∗
- Sll.Slr∗
- Sll.Srl∗
- Sll.Srr∗
- Slr.Slr∗
- Slr.Srl∗
- Slr.Srr∗
- Srl.Srl∗
- Srl.Srr∗
- Srr.Srr∗
With:
- Sll = 0.5(Shh+jShv+jSvh−Svv)
- Slr = 0.5(jShh+Shv−Svh+jSvv)
- Srl = 0.5(jShh−Shv+Svh+jSvv)
- Srr = 0.5(−Shh+jShv+jSvh+Svv)
— Both cases —
- sinclairtomueller (SinclairToMueller)
- 0.5Re(T xx.T xx∗+T xy.T xy∗+T yx.T yx∗+T yy.T yy∗)
- 0.5Re(T xx.T xx∗−T xy.T xy∗+T yx.T yx∗−T yy.T yy∗)
- Re(T xx.T xy∗+T yx.T yy∗)
- Im(T xx.T xy∗+T yx.T yy∗)
- 0.5Re(T xx.T xx∗+T xy.T xy∗−T yx.T yx∗−T yy.T yy∗)
- 0.5Re(T xx.T xx∗−T xy.T xy∗−T yx.T yx∗+T yy.T yy∗)
- Re(T xx.T xy∗−T yx.T yy∗)
- Im(T xx.T xy∗−T yx.T yy∗)
- Re(T xx.T yx∗+T xy.T yy∗)
- Im(T xx.T yx∗−T xy.T yy∗)
- Re(T xx.T yy∗+T xy.T yx∗)
- Im(T xx.T yy∗−T xy.T yx∗)
- Re(T xx.T yx∗+T xy.T yy∗)
- Im(T xx.T yx∗−T xy.T yy∗)
- Re(T xx.T yy∗+T xy.T yx∗)
- Im(T xx.T yy∗−T xy.T yx∗)
With :
- T xx = −Shh
- T xy = −Shv
- T yx = Svh
- T yy = Svv
- muellertopoldegandpower (MuellerToPolarisationDegreeAndPowerFunctor)
- Pmin
- Pmax
- DegPmin
- DegPmax
Examples :
-
otbcli_SARPolarMatrixConvert -inhh imageryC_HH.tif
-inhv imageryC_HV.tif
-invv imageryC_VV.tif
-conv msinclairtocoherency
-outc coherency.tif
-
otbcli_SARPolarMatrixConvert -inhh imageryC_HH.tif
-inhv imageryC_HV.tif
-invv imageryC_VV.tif
-conv msinclairtocovariance
-outc covariance.tif
-
otbcli_SARPolarMatrixConvert -inhh imageryC_HH.tif
-inhv imageryC_HV.tif
-invv imageryC_VV.tif
-conv msinclairtocircovariance
-outc circ_covariance.tif
-
otbcli_SARPolarMatrixConvert -inc coherency.tif
-conv mcoherencytomueller
-outf mueller.tif
-
otbcli_SARPolarMatrixConvert -inc covariance.tif
-conv mcovariancetocoherencydegree
-outc coherency_degree.tif
-
otbcli_SARPolarMatrixConvert -inc covariance.tif
-conv mcovariancetocoherency
-outc coherency.tif
-
otbcli_SARPolarMatrixConvert -inc covariance.tif
-conv mlinearcovariancetocircularcovariance
-outc circ_covariance.tif
-
otbcli_SARPolarMatrixConvert -inf mueller.tif
-conv muellertomcovariance
-outc covariance.tif
-
otbcli_SARPolarMatrixConvert -inhh imageryC_HH.tif
-inhv imageryC_HV.tif
-invh imageryC_VH.tif
-invv imageryC_VV.tif
-conv bsinclairtocoherency
-outc bcoherency.tif
-
otbcli_SARPolarMatrixConvert -inhh imageryC_HH.tif
-inhv imageryC_HV.tif
-invh imageryC_VH.tif
-invv imageryC_VV.tif
-conv bsinclairtocovariance
-outc bcovariance.tif
-
otbcli_SARPolarMatrixConvert -inhh imageryC_HH.tif
-inhv imageryC_HV.tif
-invh imageryC_VH.tif
-invv imageryC_VV.tif
-conv bsinclairtocircovariance
-outc circ_bcovariance.tif
-
otbcli_SARPolarMatrixConvert -inhh imageryC_HH.tif
-inhv imageryC_HV.tif
-invh imageryC_VH.tif
-invv imageryC_VV.tif
-conv sinclairtomueller
-outf mueller.tif
-
otbcli_SARPolarMatrixConvert -inf mueller.tif
-conv muellertopoldegandpower
-outf degreepower.tif
Polarimetric decompositions
From one-band complex images (HH, HV, VH, VV), returns the selected decomposition. The H-alpha-A
decomposition is currently the only one available; it is implemented for the monostatic case (transmitter and
receiver are co-located). User must provide three one-band complex images HH, HV or VH, and VV (HV =
VH in monostatic case). The H-alpha-A decomposition consists in averaging 3x3 complex coherency
matrices (incoherent analysis) : The user must provide the size of the averaging window, thanks to the
parameter inco.kernelsize. The applications returns a float vector image, made of three channels :
H(entropy), Alpha, A(Anisotropy).
Here are the formula used (refer to the previous section about how the coherence matrix is obtained from
the Sinclair one):
- entropy = −∑i=02
- α = ∑i=02p[i].αi
- anisotropy =
![SortedEigenValues[1]− SortedEigenValues[2]
SortedEigenValues[1]+SortedEigenValues[2]](CookBook32x.png)
Where:
- p[i] = max(SortedEigenValues[i],0)∕∑i=02,SortedEigenValues[i]>0SortedEigenValues[i]
- αi =
∗
Example :
We first extract a ROI from the original image (not required). Here imagery_HH.tif represents the element
HH of the Sinclair matrix (and so forth).
-
otbcli_ExtractROI -in imagery_HH.tif -out imagery_HH_extract.tif
-startx 0 -starty 0
-sizex 1000 -sizey 1000
-
otbcli_ExtractROI -in imagery_HV.tif -out imagery_HV_extract.tif
-startx 0 -starty 0
-sizex 1000 -sizey 1000
-
otbcli_ExtractROI -in imagery_VV.tif -out imagery_VV_extract.tif
-startx 0 -starty 0
-sizex 1000 -sizey 1000
Next we apply the H-alpha-A decomposition:
otbcli_SARDecompositions -inhh imagery_HH_extract.tif
-inhv imagery_HV_extract.tif
-invv imagery_VV_extract.tif
-decomp haa -inco.kernelsize 5
-out haa_extract.tif
The result has three bands : entropy (0..1) - alpha (0..90) - anisotropy (0..1). It is splitted into 3 mono-band
images thanks to following command :
otbcli_SplitImage -in haa_extract.tif -out haa_extract_splitted.tif
Each image is then colored thanks to a color look-up table ’hot’. Notice how minimum and maximum
values are provided for each polarimetric variable.
-
otbcli_ColorMapping -in haa_extract_splitted_0.tif
-method continuous -method.continuous.lut hot
-method.continuous.min 0
-method.continuous.max 1
-out entropy_hot.tif uint8
-
otbcli_ColorMapping -in haa_extract_splitted_1.tif -method continuous
-method.continuous.lut hot -method.continuous.min 0 -method.continuous.max
90 -out alpha_hot.tif uint8
-
otbcli_ColorMapping -in haa_extract_splitted_2.tif
-method continuous -method.continuous.lut hot
-method.continuous.min 0
-method.continuous.max 1
-out anisotropy_hot.tif uint8
The results are shown in the figures below (3.8 , 3.9 and 3.10).
Polarimetric synthetis
This application gives, for each pixel, the power that would have been received by a SAR system with a
basis different from the classical (H,V) one (polarimetric synthetis). The new basis are indicated through
two Jones vectors, defined by the user thanks to orientation (psi) and ellipticity (khi) parameters. These
parameters are namely psii, khii, psir and khir. The suffixes (i) and (r) refer to the transmitting antenna and
the receiving antenna respectively. Orientations and ellipticity are given in degrees, and are between -90/90
degrees and -45/45 degrees respectively.
Four polarization architectures can be processed :
- HH_HV_VH_VV : full polarization, general bistatic case.
- HH_HV_VV or HH_VH_VV : full polarization, monostatic case (transmitter and receiver are
co-located).
- HH_HV : dual polarization.
- VH_VV : dual polarization.
The application takes a complex vector image as input, where each band correspond to a particular
emission/reception polarization scheme. User must comply with the band order given above, since the
bands are used to build the Sinclair matrix.
In order to determine the architecture, the application first relies on the number of bands of the input
image.
- Architecture HH_HV_VH_VV is the only one with four bands, there is no possible confusion.
- Concerning HH_HV_VV and HH_VH_VV architectures, both correspond to a three channels
image. But they are processed in the same way, as the Sinclair matrix is symmetric in the
monostatic case.
- Finally, the two last architectures (dual-polarization), can’t be distinguished only by the
number of bands of the input image. User must then use the parameters emissionh and
emissionv to indicate the architecture of the system : emissionh=1 and emissionv=0 for
HH_HV, emissionh=0 and emissionv=1 for VH_VV.
Note : if the architecture is HH_HV, khii and psii are automatically set to 0/0 degrees; if the architecture is
VH_VV, khii and psii are automatically set to 0/90 degrees.
It is also possible to force the calculation to co-polar or cross-polar modes. In the co-polar case, values for
psir and khir will be ignored and forced to psii and khii; same as the cross-polar mode, where khir and psir
will be forced to psii + 90 degrees and -khii.
Finally, the result of the polarimetric synthesis is expressed in the power domain, through a one-band scalar
image.
The final formula is thus : P = ∣BT .[S].A∣2 , where A ans B are two Jones vectors and S is a Sinclair
matrix.
The two figures below (3.11 and 3.12) show the two images obtained with the basis LL and LR (L for left
circular polarization and R for right polarization), from a Radarsat-2 image taken over Vancouver, Canada.
Once the four two-band images imagery_HH imagery_HV imagery_VH imagery_VV were merged into a
single four complex band image imageryC_HH_HV_VH_VV.tif, the following commands were used to
produce the LL and LR images :
otbcli_SARPolarSynth -in imageryC_HH_HV_VH_VV.tif
-psii 0 -khii 45 -mode co
-out test-LL.tif
otbcli_SARPolarSynth -in imageryC_HH_HV_VH_VV.tif
-psii 0 -khii 45 -mode cross
-out test-LR.tif
The produced images were then rescaled to intensities ranging from 0 to 255 in order to be
displayed.
Polarimetric data visualization
Finally, let’s talk about polarimetric data visualization. There is a strong link between polarimetric data
visualization and the way they can be decomposed into significant physical processes. Indeed, by setting the
results (or combinations) of such decompositions to RGB channels that help in interpreting SAR
polarimetric images.
There is no specific dedicated application yet, but it is possible to use a combination of different
applications as a replacement. Let’s do it with a RADARSAT-2 acquisition over the famous place of the
Golden Gate Bridge, San Francisco, California.
We first make an extract from the original image (not mandatory).
-
otbcli_ExtractROI -in imagery_HH.tif -out imagery_HH_extract.tif
-startx 0 -starty 6300
-sizex 2790 -sizey 2400
-
otbcli_ExtractROI -in imagery_HV.tif -out imagery_HV_extract.tif
-startx 0 -starty 6300
-sizex 2790 -sizey 2400
-
otbcli_ExtractROI -in imagery_VV.tif -out imagery_VV_extract.tif
-startx 0 -starty 6300
-sizex 2790 -sizey 2400
Then we compute the amplitude of each band using the BandMath application:
-
otbcli_BandMath -il imagery_HH_extract.tif -out HH.tif
-exp "sqrt(im1b1^2+im1b2^2)"
-
otbcli_BandMath -il imagery_HV_extract.tif -out HV.tif
-exp "sqrt(im1b1^2+im1b2^2)"
-
otbcli_BandMath -il imagery_VV_extract.tif -out VV.tif
-exp "sqrt(im1b1^2+im1b2^2)"
Note that BandMath application interprets the image ’imagery_XX_extract.tif’ as an image made of
two bands, where the first one is related to the real part of the signal, and where the second
one is related to the imaginary part (that’s why the modulus is obtained by the expressions
im1b12 +im1b22).
Then, we rescale the produced images to intensities ranging from 0 to 255:
-
otbcli_Rescale -in HH.tif -out HH_res.png uint8
-
otbcli_Rescale -in HV.tif -out HV_res.png uint8
-
otbcli_Rescale -in VV.tif -out VV_res.png uint8
Figures below (3.13 , 3.14 and 3.15) show the images obtained :
Now the most interesting step. In order to get a friendly coloration of these data, we are going to use the
Pauli decomposition, defined as follows :
We use the BandMath application again:
-
otbcli_BandMath -il imagery_HH_extract.tif imagery_HV_extract.tif
imagery_VV_extract.tif
-out Channel1.tif
-exp "sqrt(((im1b1-im3b1)^2+(im1b2-im3b2)^2))"
-
otbcli_BandMath -il imagery_HH_extract.tif imagery_HV_extract.tif
imagery_VV_extract.tif
-out Channel2.tif
-exp "sqrt(im2b1^2+im2b2^2)"
-
otbcli_BandMath -il imagery_HH_extract.tif imagery_HV_extract.tif
imagery_VV_extract.tif
-out Channel3.tif
-exp "sqrt(((im1b1+im3b1)^2+(im1b2+im3b2)^2))"
Note that sqrt(2) factors have been omitted purposely, since their effects will be canceled by
the rescaling step. Then, we rescale the produced images to intensities ranging from 0 to 255
:
-
otbcli_Rescale -in Channel1.tif -out Channel1_res.tif uint8
-
otbcli_Rescale -in Channel2.tif -out Channel2_res.tif uint8
-
otbcli_Rescale -in Channel3.tif -out Channel3_res.tif uint8
And finally, we merge the three bands into a single RGB image.
otbcli_ConcatenateImages -il Channel1_res.tif Channel2_res.tif Channel3_res.tif
-out visuPauli.png
The result is shown in the figure below (3.16).