VisibleFeatureFinder¶
giant.relative_opnav.estimators.sfn.surface_features:
This class creates a callable which is used to filter features that are visible in an image.
The features are filtered in a number of ways. First, they can be directly filtered by name using the
feature_listattribute. Next, the features are filter based on the angle between the line of sight vector to the feature and the camera boresight vector, using theoff_boresight_angle_maximumattribute. Then, the features are filtered based on the reflection angle (angle between the line of sight vector and feature normal vector, using thereflectance_angle_maximumattribute. Then, the features are filtered based on the incidence angle (angle between the sun direction vector and the feature normal vector) using theincident_angle_maximumattribute. The the features are filtered based on the ratio of the camera GSD at the feature location and the GSD of the feature, using thegsd_scalingattribute. Finally the features are filtered based on the percentage of the feature that is in the FOV of the camera, using thepercent_in_fovattribute. For each of these filtering passes, the only the features that met the preceding filters are considered for efficiency.After initializing this class with the appropriate data, you can generate a list of the visible feature indices (index into the
FeatureCatalog.featureslist and related) by calling the result and providing the temperature of the camera. This assumes that the scene/feature catalog/light source have been appropriately placed in the camera frame already, so typically you should ensure that you provide a reference (not a copy) of the feature catalog and the scene.Typically a user will not interact directly with this class and instead it will be managed by the
SurfaceFeatureNavigationclass. If you do want to use it manually, provide the appropriate inputs to the class constructor, update the scene to place everything in the camera frame at the time you want to identify visible features, and then call the instance of this class providing the camera temperature at the time you want to identify the visible features. The resulting list of indices can be used to index into theFeatureCatalog.featureslist and related.To specify the settings for this class, you can either use keyword arguments or the
VisibleFeatureFinderOptionsdataclass, which is the preferred method. It is not recommended to mix methods as this can lead to unexpected results- Parameters:
feature_catalog (FeatureCatalog) – The feature catalog that specifies the features we care considering
options (VisibleFeatureFinderOptions | None) – A dataclass specifying the options to set for this instance. If provided it takes preference over all key word arguments, therefore it is not recommended to mix methods.
feature_list (List[str] | None) – A list of feature names to test against (useful for filtering if you only want to use a subset of features
off_boresight_angle_maximum (float | None) – The maximum angle between the boresight and the line of sight to a feature in degrees. This is useful to avoid overflows in the other checks by throwing things out that are way outside the field of view. The default (if left as
None) is1.5*camera_model.field_of_viewgsd_scaling (float) – The ratio allowed between the ground sample distance of the camera and the ground sample distance of the feature.
reflectance_angle_maximum (float) – The maximum reflectance angle (angle between the line of sight vector and the feature normal vector) in degrees.
incident_angle_maximum (float) – The maximum incident angle (angle between the incoming light vector and the feature normal vector) in degrees.
percent_in_fov (float) – The percentage of the feature that is in the field of view based on a bounding box test. This should be between 0 and 100
Summary of Methods
This method applies the input options to the current instance. |