improved S-\(\Omega\) decomposition (s_omega) — PolSARtools 0.10 documentation

Skip to main content
`Ctrl`+`K`

# improved S-\(\Omega\) decomposition (`s_omega`)

polsartools.s_omega(in_dir, chi=45, psi=0, win=1, fmt='tif', cog=False, ovr=[2, 4, 8, 16], comp=False, max_workers=None, block_size=(512, 512), progress_callback=None)

  Perform Modified/Improved S-Omega Decomposition for compact-pol SAR data.

  This function implements an enhanced version of the S-Omega decomposition technique for compact-polarimetric SAR data. It decomposes the total backscattered power into three components: surface scattering (Ps), double-bounce scattering (Pd), and volume scattering (Pv), with improvements over the traditional S-Omega method.

  Examples

      >>> # Basic usage with default parameters
      >>> s_omega("/path/to/cp_data")

      >>> # Advanced usage with custom parameters
      >>> s_omega(
      ...     in_dir="/path/to/cp_data",
      ...     chi=-45,
      ...     win=5,
      ...     fmt="tif",
      ...     cog=True,
      ...     block_size=(1024, 1024)
      ... )

  Parameters:

    - in_dir (str) – Path to the input folder containing compact-pol C2 matrix files.

    - chi (float, default=45) – Ellipticity angle chi of the transmitted wave in degrees. For circular polarization, chi = 45° (right circular) or -45° (left circular).

    - psi (float, default=0) – Orientation angle psi of the transmitted wave in degrees. For circular polarization, typically 0°.

    - win (int, default=1) – Size of the spatial averaging window. Larger windows reduce speckle noise but decrease spatial resolution.

    - fmt ({'tif', 'bin'}, default='tif') – Output file format: - ‘tif’: GeoTIFF format with georeferencing information - ‘bin’: Raw binary format

    - cog (bool, default=False) – If True, creates Cloud Optimized GeoTIFF (COG) outputs with internal tiling and overviews for efficient web access.

    - ovr (list[int], default=[2, 4, 8, 16]) – Overview levels for COG creation. Each number represents the decimation factor for that overview level.

    - comp (bool, default=False) – If True, applies LZW compression to the output GeoTIFF files.

    - max_workers (int | None, default=None) – Maximum number of parallel processing workers. If None, uses CPU count - 1 workers.

    - block_size (tuple[int, int], default=(512, 512)) – Size of processing blocks (rows, cols) for parallel computation. Larger blocks use more memory but may be more efficient.

  Returns:

    Writes three output files to disk: 1. Ps_miSOmega: Surface scattering power component 2. Pd_miSOmega: Double-bounce scattering power component 3. Pv_miSOmega: Volume scattering power component

  Return type:

    None

The stokes paramters can be written in terms of the covariance matrx (C2) elements as follows:

\[\begin{split}S_0=\text{C11+C22};\qquad{}S_1=\text{C11-C22};\\ S_2=\text{C12+C21};\qquad{}S_3=\pm\text{j(C12-C21)}\end{split}\]

Then, the parameters Same-sense Circular (\(\text{SC}\)) and Opposite-sense Circular (\(\text{OC}\)) can be expressed as follows:

\[\text{SC}=\frac{S_0-S_3}{2};\qquad{}\text{OC}=\frac{S_0+S_3}{2};\]

Now, based on the ratio of \(\text{SC}\) and \(\text{OC}\) the decomposition powers can be derived as given below. Further details can be found in [[7]](#7)

\[\begin{split}\text{SC/OC}<1;\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\text{SC/OC}>1\\P_s=\Omega\left(S_{0}-\left(1-\Omega\right)\text{SC}\right);\qquad{}\qquad{}\qquad{}P_s=\Omega\left(1-\Omega\right)\text{OC}\\P_d=\Omega\left(1-\Omega\right)\text{SC};\qquad{}\qquad{}\qquad{}P_d=\Omega\left(S_{r0}-\left(1-\Omega\right)\text{OC}\right) \\P_v=S_{0}\left(1-\Omega\right)\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}P_v=S_{0}\left(1-\Omega\right)\end{split}\]