giant.coverage.coverage_class.Coverage

class giant.coverage.coverage_class.Coverage(scene, imaging_times, brdf, camera_model, camera_position_function, camera_orientation_function, sun_position_function, ignore_indices=None, topography_variations=None, labels=None)[source]

Bases: object

This class provides coverage analysis capabilities for remote sensing instruments given an observation plan. It works by taking the observation plan and then at each ‘imaging’ epoch in the observation plan, computing which facets of the shape model fall within the field of view of the instrument (and optionally are illuminated by the sun). This information is then stored, per image, per facet, and can then be queried to check what percentage of the surface was observed according to some constraints. Additionally, for SPC coverage, we can then take the information from the visibility check, and use it to compute the shape from shading dilutions of precision (DOP) for each facet, to get an idea of how good the coverage is for building shape models using stereophotoclinometry (SPC).

Parameters:
  • scene (Scene) – A Scene containing the target body to be analyzed. Only the first target in the scene will be used and any others will be ignored. The target must have a shape with facets and vertices (usually a KDTree or Triangles type).

  • imaging_times (List[datetime] | List[List[datetime]]) – A list of datetimes for each observation. If using labels, each label would have its own list of datetimes in this list

  • brdf (IlluminationModel) – An IlluminationModel representing a BRDF used to compute the jacobian matrix of the change in the illumination values given a change in the surface normal and/or albedo

  • camera_model (CameraModel) – A CameraModel instance

  • camera_position_function (Callable) – A callable function that returns the location of the camera relative to the target in target body-fixed frame

  • camera_orientation_function (Callable) – A callable function that rotates the target body-fixed frame to the camera frame

  • sun_position_function (Callable) – A callable function that returns the location of the sun relative to the target in target body-fixed frame

  • ignore_indices (Sequence[int] | Sequence[Sequence[int] | ndarray[tuple[Any, ...], dtype[integer]]] | ndarray[tuple[Any, ...], dtype[integer]] | None) – An optional Sequence of sequence of indices to ignore from the shape model for each vertex on the target body’s surface. generally this should be a list of list of ints where each element of the outer list correspond to a vertex of the shape model and the inner list contains all triangles that triangle contributes to to ensure that the vertex is not self shadowed. This can be gotten from prepare_shape()

  • topography_variations (Tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]] | None) – An optional meshgrid of azimuth and elevation values representing permutations of surface normal vectors to search through for correlation with observation data

  • labels (List[str] | None) – An optional list of string labels to assign to different lists of image times

Summary of Methods

compute_visibility

This method serves to determine which facets and vertices on the target body's surface are visible for each observation.

reduce_visibility_to_facet

This method serves to convert the visibility matrix of all surface vertices at all image times to a visibility matrix of all surface facets at all image times based on how each facet is characterized by the surface vertices.

compute_velocities

This method uses a given velocity function for the camera to compute the velocity and range of the camera relative to each surface element in the target body-fixed frame.

check_fov

This function determines which surface vertices are within the camera's FOV by projecting the vertices to a simulated image.

determine_footprints

This function determines a rectangular boundary footprint of the camera's field-of-view projected onto the target surface.

compute_dop

This function computes the dilution of precision (DOP) metrics for all facets based off images where each facet visible as determined by the coverage analysis.