SDK Calibration Utils
-
struct
Metavision
::
CalibrationDetectionResult
Structure to store the pattern’s keypoints (static chessboard, blinking chessboard, blinking points grid…) and the frame from which they were extracted.
Public Functions
-
CalibrationDetectionResult
() = default Default constructor.
-
CalibrationDetectionResult
(CalibrationDetectionResult &&other) Move operator.
-
CalibrationDetectionResult &
operator=
(CalibrationDetectionResult &&other) Move assignment operator.
-
void
reset
(int width, int height, int channels = CV_8UC3) Resets the frame and the keypoints.
- Parameters
width – Image’s width
height – Image’s height
channels – Number of color channels
-
-
class
Metavision
::
CalibrationDetectionFrameGenerator
Class that generates an image used for calibration.
Generates an image by combining:
the image of a calibration pattern (either frame-based image of a static pattern, or event-based accumulation image of a blinking pattern).
the vector containing the pattern’s keypoints.
a colored overlay that shows which regions have been well covered during the calibration.
Public Types
Public Functions
-
CalibrationDetectionFrameGenerator
(unsigned int width, unsigned int height, unsigned int cols, unsigned int rows, PatternMode pattern_mode = PatternMode::Chessboard, bool overlay_convex_hull = false, bool four_corners_only = false) Constructor. It assumes a calibration pattern aligned according to a grid, distorted or not, so that the concept of rows and columns make sense to describe the pattern.
- Parameters
width – Image’s width
height – Image’s height
cols – Number of cols in the pattern (its width)
rows – Number of rows of the pattern (its height)
pattern_mode – Type of pattern used during the calibration (PatternMode)
overlay_convex_hull – If true, overlay a “shadow” over the convex hull covering all the dots in the pattern. If false, draw only a circle over each dot.
four_corners_only – Extract only the 4 extreme corners to compute the pattern’s convex hull used for the colored overlay (assuming there’s no distortion and the grid looks like a rectangle). This has no effect if
overlay_convex_hull
is false.
-
void
generate_bgr_img
(cv::Mat &output_img, const CalibrationDetectionResult &results) Generates an image representing a calibration pattern on top of the frame on which it has been extracted. There’s also a colored overlay to show which regions have been well covered during the calibration.
- Parameters
output_img – Output image
results – Structure containing a vector of keypoints and the frame on which they were extracted
-
class
Metavision
::
PatternBlinker
Class that generates a blinking pattern by returning, at a fixed frequency, either a white image or the image of the pattern.
Public Functions
-
PatternBlinker
(const cv::Mat &pattern_img, timestamp blinking_rate = 1e4) Constructor loading the pattern from a colored image.
- Parameters
pattern_img – Pattern’s image
blinking_rate – Time period between two consecutive blinks (in us)
-
bool
update_blinking_image
(const timestamp ts, cv::Mat &output_img) Swaps the blinking frame between “All White” and “With a Pattern”, provided that the timestamp is less recent than the refresh period.
- Parameters
ts – Timestamp
output_img – Output copy of the current blink/blank frame
- Returns
true if image was updated
-
void
get_current_blinking_image
(cv::Mat &output_img) Gets the current state of the blinking frame, without updating it.
- Parameters
output_img – Output copy of the current blink/blank frame
-
cv::Size
get_image_size
() Returns the size of the blinking frame.
-
-
bool
Metavision
::
are_points_on_grid
(const std::vector<cv::Point2f> ¢ers, unsigned int cols, unsigned int rows, float ths = 0.01f) Checks that points are on a grid.
Warning
With strong radial distortion the threshold here should not be too aggressive. Another possibility is to use are_points_on_grid_radial_distortion instead (recommended for fisheye)
- Parameters
centers – The points of the grid
cols – Number of horizontal lines
rows – Number of vertical lines
ths – Maximum line fitting error for a point to be considered on the grid. Default value is 0.01
- Returns
true if points fit well the grid
-
bool
Metavision
::
are_points_on_grid_radial_distortion
(const std::vector<cv::Point2f> ¢ers, unsigned int cols, unsigned int rows, float cos_max_angle = 0.9f) Checks that points are on a grid (for fisheye)
- Parameters
centers – The points of the grid
cols – Number of horizontal lines
rows – Number of vertical lines
cos_max_angle – Cosine of maximum angle between 2 consecutive vectors (3 consecutive points) which belong to the same row of the grid. Default value is 0.9 (~ 25 degrees)
- Returns
true if points fit well the grid