DOPComputations.compute_target_dop

giant.coverage.utilities.dop_computations:

DOPComputations.compute_target_dop(index, normal)[source]

This method takes a surface element index and a surface normal vector to compute the DOP metrics for the surface element at various potential orientations.

The surface element index is used to access sorted data in a visibility matrix, which corresponds to a specific vertex or facet on the surface.

The normal vector is permutated through every combination of azimuth and elevation values as specified in az_grid and elev_grid, and these orientations are used to compute the jacobian using the compute_photoclinometry_jacobian() method for the specified brdf.

Once it has a jacobian, it computes DOP values for albedo, x slope, y slope, and rss from the diagonal of the inverse of the observability Gramian matrix (H^T*W*H)^(-1) where H is the jacobian and W is a weighting matrix (in this code W is just an identity matrix)

Parameters:
  • index (int) – An integer index representing which surface element of the visibility matrix is being used to compute DOP metrics

  • normal (ndarray[tuple[Any, ...], dtype[float64]]) – A surface normal vector corresponding to the specified surface element that will be rotated through various orientations

Returns:

A tuple of the following data, each having the length of the number of permutations the normal vector was oriented through:

The number of usable observations for the given surface element,

The jacobians,

The albedo DOP values,

The x slope DOP values,

The y slope DOP values, and

The RSS of the DOP values

Return type:

tuple[int, Sequence[ndarray[tuple[Any, …], dtype[float64]] | None], Sequence[float64 | float], Sequence[float64 | float], Sequence[float64 | float], Sequence[float64 | float]] | tuple[int, Sequence[ndarray[tuple[Any, …], dtype[float64]] | None], None, None, None, None]