LimbScanner.extract_limbs¶
giant.relative_opnav.estimators.ellipse_matching
:
This method extracts limb points in an image and pairs them to surface points that likely generated them.
This is completed through the used of 1D cross correlation.
The predicted limb locations in the image and the scan lines are determined using
predict_limbs()
Scan lines are generated along the scan directions and used to create extracted intensity lines by sampling the image and predicted intensity lines by rendering the results of a ray trace along the scan line.
The predicted and extracted intensity lines are cross correlated in 1 dimension
fft_correlator_1d()
The peak of each correlation line is found using
peak_finder
.the peak of the correlation surface is translated into a shift between the predicted and extracted limb location in the image and used to compute the extracted limb location.
The resulting predicted surface points, predicted image points, observed image points, and scan directions in the camera frame are then all returned as numpy arrays.
- Parameters:
image_interpolator (Callable) – A callable which returns the interpolated image values for provides [y,x] locations in the image
camera_temperature (Real) – The temperature of the camera in degrees at the time the image was captured
target (SceneObject) – The target we are looking for limb points for
scan_center (ndarray) – The center where all of our scan lines will start
line_of_sight_sun (ndarray) – The line of sight of the sun in the image
- Returns:
The predicted surface points in the camera frame as a 3xn array, the predicted limbs in the image as a 2xn array, the observed limbs in the image as a 2xn array, and the scan directions in the camera frame as a 3xn array of unit vectors where n is the
number_of_scan_lines
- Return type:
Tuple[ndarray, ndarray, ndarray, ndarray]