LimbScanner.extract_limbs

giant.relative_opnav.estimators.ellipse_matching:

LimbScanner.extract_limbs(image_interpolator, camera_temperature, target, scan_center, line_of_sight_sun)[source]

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.

  1. The predicted limb locations in the image and the scan lines are determined using predict_limbs()

  2. 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.

  3. The predicted and extracted intensity lines are cross correlated in 1 dimension fft_correlator_1d()

  4. The peak of each correlation line is found using peak_finder.

  5. 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]