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
andelev_grid
, and these orientations are used to compute the jacobian using thecompute_photoclinometry_jacobian()
method for the specifiedbrdf
.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]