EllipseMatching¶
giant.relative_opnav.estimators.ellipse_matching
:
This class implements GIANT’s version of limb based OpNav for regular bodies.
The class provides an interface to perform limb based OpNav for each target body that is predicted to be in an image. It does this by looping through each target object contained in the
Scene.target_objs
attribute that is requested. For each of the targets, the algorithm:If using limb scanning to extract the limbs, and requested with
recenter
, identifies the center of brightness for each target using themoment_algorithm
and moves the a priori target to be along that line of sightExtracts the observed limbs from the image and pairs them to the target
Estimates the relative position between the target and the image using the observed limbs and the steps discussed in the :mod:.ellipse_matching` documentation
Uses the estimated position to get the predicted limb surface location and predicted limb locations in the image
When all of the required data has been successfully loaded into an instance of this class, the
estimate()
method is used to perform the estimation for the requested image. The results are stored into theobserved_bearings
attribute for the observed limb locations and theobserved_positions
attribute for the estimated relative position between the target and the camera. In addition, the predicted location for the limbs for each target are stored in thecomputed_bearings
attribute and the a priori relative position between the target and the camera is stored in thecomputed_positions
attribute. Finally, the details about the fit are stored as a dictionary in the appropriate element in thedetails
attribute. Specifically, these dictionaries will contain the following keys.Key
Description
'Covariance'
The 3x3 covariance matrix for the estimated relative position in the camera frame based on the residuals. This is only available if successful
'Surface Limb Points'
The surface points that correspond to the limb points in the target fixed target centered frame.
'Failed'
A message indicating why the fit failed. This will only be present if the fit failed (so you could do something like
'Failed' in limb_matching.details[target_ind]
to check if something failed. The message should be a human readable description of what called the failure.Warning
Before calling the
estimate()
method be sure that the scene has been updated to correspond to the correct image time. This class does not update the scene automatically.- Parameters
scene (giant.ray_tracer.scene.Scene) – The
Scene
object containing the target, light, and obscuring objects.camera (giant.camera.Camera) – The
Camera
object containing the camera model and images to be utilizedimage_processing (giant.image_processing.ImageProcessing) – The
ImageProcessing
object to be used to process the imageslimb_scanner (Optional[giant.relative_opnav.estimators.ellipse_matching.LimbScanner]) – The
LimbScanner
object containing the limb scanning settings.extraction_method (Union[giant.relative_opnav.estimators.ellipse_matching.LimbExtractionMethods, str]) – The method to use to extract the observed limbs from the image. Should be
'LIMB_SCANNING'
or'EDGE_DETECTION'
. SeeLimbExtractionMethods
for details.interpolator (type) – The type of image interpolator to use if the extraction method is set to LIMB_SCANNING.
recenter (bool) – A flag to estimate the center using the moment algorithm to get a fast rough estimate of the center-of-figure
The camera instance that represents the camera used to take the images we are performing Relative OpNav on.
This is the source of the camera model, and may be used for other information about the camera as well. See the
Camera
property for details.
The scene which defines the a priori locations of all targets and light sources with respect to the camera.
You can assume that the scene has been updated for the appropriate image time inside of the class.
The name of the technique identifier in the
RelativeOpNav
class.
The type of observables this technique generates.
Summary of Methods
This method identifies the position of each target in the camera frame using ellipse matching. |
|
Extract and pair limb points in an image to the surface point on a target that created it. |
|
This method resets the observed/computed attributes, the details attribute, and the limb attributes to have |
|
This method returns a generator which yields target_index, target pairs that are to be processed based on the input |