15#error "This header is C++-only."
20#include <opencv2/opencv.hpp>
23namespace xrt::auxiliary::tracking {
63 default:
return false;
77 const cv::Size image_size_pixels_cv;
78 cv::Mat_<double> intrinsics_mat;
79 cv::Mat_<double> distortion_mat;
87 distortion_mat(t_num_opencv_params_from_distortion_model(base.
distortion_model),
89 &calib.distortion_parameters_as_array[0]),
93 U_LOG_W(
"Reinterpreting T_DISTORTION_WMR model as T_DISTORTION_OPENCV_RADTAN_8!");
102 return intrinsics_mat.size() == cv::Size(3, 3) &&
103 (
double *)intrinsics_mat.data == &(base.
intrinsics[0][0]) &&
105 distortion_mat.size() ==
106 cv::Size(1, t_num_opencv_params_from_distortion_model(base.
distortion_model)) &&
107 (
double *)distortion_mat.data == &(base.distortion_parameters_as_array[0]);
122 cv::Mat_<double> camera_translation_mat;
123 cv::Mat_<double> camera_rotation_mat;
124 cv::Mat_<double> camera_essential_mat;
125 cv::Mat_<double> camera_fundamental_mat;
132 t_stereo_camera_calibration_alloc(&data_ptr, distortion_model);
145 t_stereo_camera_calibration_reference(&temp, stereo);
147 assert(isDataStorageValid());
158 t_stereo_camera_calibration_reference(&
tmp, NULL);
163 t_stereo_camera_calibration_reference(&base, NULL);
167 isDataStorageValid()
const noexcept
169 return camera_translation_mat.size() == cv::Size(1, 3) &&
172 camera_rotation_mat.size() == cv::Size(3, 3) &&
175 camera_essential_mat.size() == cv::Size(3, 3) &&
178 camera_fundamental_mat.size() == cv::Size(3, 3) &&
209 cv::InputArray rectify_transform_optional = cv::noArray(),
210 cv::Mat new_camera_matrix_optional = cv::Mat());
221 cv::Mat rotation_mat = {};
222 cv::Mat projection_mat = {};
271 cv::InputArray intrinsics,
272 cv::InputArray distortion,
273 cv::InputArray rectification = cv::noArray(),
274 cv::InputArray new_camera_or_projection_matrix = cv::noArray());
297 cv::Mat_<float> cacheX_;
298 cv::Mat_<float> cacheY_;
Provides cached, precomputed normalized image coordinates from original, distorted ones.
Definition: t_calibration_opencv.hpp:254
cv::Vec3f getNormalizedVector(cv::Point2f origCoords) const
Get normalized vector in the camera-space direction corresponding to the original (distorted,...
Definition: t_calibration.cpp:1468
cv::Vec2f getNormalizedImageCoords(cv::Point2f origCoords) const
Get normalized, undistorted coordinates from a point in the original (distorted, etc....
Definition: t_calibration.cpp:1447
NormalizedCoordsCache(cv::Size size, t_camera_distortion_model distortion_model, cv::InputArray intrinsics, cv::InputArray distortion, cv::InputArray rectification=cv::noArray(), cv::InputArray new_camera_or_projection_matrix=cv::noArray())
Set up the precomputed cache for a given camera.
Definition: t_calibration.cpp:1421
#define U_LOG_W(...)
Log a message at U_LOGGING_WARN level, conditional on the global log level.
Definition: u_logging.h:407
static size_t t_num_params_from_distortion_model(const enum t_camera_distortion_model model)
Returns the number of parameters needed for this t_camera_distortion_model to be held by an OpenCV Ma...
Definition: t_tracking.h:161
t_camera_distortion_model
The distortion model this camera calibration falls under.
Definition: t_tracking.h:63
@ T_DISTORTION_OPENCV_RADTAN_8
OpenCV's radial-tangential distortion model.
Definition: t_tracking.h:82
@ T_DISTORTION_OPENCV_RADTAN_5
OpenCV's radial-tangential distortion model.
Definition: t_tracking.h:73
@ T_DISTORTION_FISHEYE_KB4
Juho Kannalla and Sami Sebastian Brandt's fisheye distortion model.
Definition: t_tracking.h:116
@ T_DISTORTION_WMR
Windows Mixed Reality headsets' camera model.
Definition: t_tracking.h:131
@ T_DISTORTION_OPENCV_RADTAN_14
OpenCV's radial-tangential distortion model.
Definition: t_tracking.h:101
Essential calibration data for a single camera, or single lens/sensor of a stereo camera.
Definition: t_tracking.h:236
double intrinsics[3][3]
Camera intrinsics matrix.
Definition: t_tracking.h:241
struct xrt_size image_size_pixels
Source image size.
Definition: t_tracking.h:238
enum t_camera_distortion_model distortion_model
Distortion model that this camera uses.
Definition: t_tracking.h:254
Stereo camera calibration data to be given to trackers.
Definition: t_tracking.h:261
double camera_essential[3][3]
Essential matrix.
Definition: t_tracking.h:274
double camera_translation[3]
Translation from first to second in the stereo pair.
Definition: t_tracking.h:269
struct t_camera_calibration view[2]
Calibration of individual views/sensor.
Definition: t_tracking.h:266
double camera_rotation[3][3]
Rotation matrix from first to second in the stereo pair.
Definition: t_tracking.h:271
double camera_fundamental[3][3]
Fundamental matrix.
Definition: t_tracking.h:276
Definition: comp_scratch.c:130
Essential calibration data wrapped for C++.
Definition: t_calibration_opencv.hpp:74
bool isDataStorageValid() const noexcept
Try to verify nothing was reallocated.
Definition: t_calibration_opencv.hpp:100
An x,y pair of matrices for the remap() function.
Definition: t_calibration_opencv.hpp:192
Essential stereo calibration data wrapped for C++.
Definition: t_calibration_opencv.hpp:119
Rectification maps as well as transforms for a stereo camera.
Definition: t_calibration_opencv.hpp:231
StereoRectificationMaps(t_stereo_camera_calibration *data)
Constructor - produces rectification data for a stereo camera based on calibration data.
Definition: t_file.cpp:111
cv::Mat disparity_to_depth_mat
Disparity and position to camera world coordinates.
Definition: t_calibration_opencv.hpp:235
Rectification, rotation, projection data for a single view in a stereo pair.
Definition: t_calibration_opencv.hpp:219
Image size.
Definition: xrt_defines.h:408
static bool t_camera_distortion_model_is_opencv_non_fisheye(const enum t_camera_distortion_model model)
Determines whether a camera distortion model is suitable for use in OpenCV as a non-fisheye distortio...
Definition: t_calibration_opencv.hpp:55
RemapPair calibration_get_undistort_map(t_camera_calibration &calib, cv::InputArray rectify_transform_optional=cv::noArray(), cv::Mat new_camera_matrix_optional=cv::Mat())
Prepare undistortion/normalization remap structures for a rectilinear or fisheye image.
Definition: t_file.cpp:72
static bool t_camera_distortion_model_is_opencv_fisheye(const enum t_camera_distortion_model model)
Determines whether a camera distortion model is suitable for use in OpenCV as a fisheye distortion.
Definition: t_calibration_opencv.hpp:44