Go to the documentation of this file.
48 if (cal.
M[0][0] < 0.1 || cal.
M[0][2] < 0.1 || cal.
M[1][1] < 0.1 || cal.
M[1][2] < 0.1 || std::abs(cal.
D[0]) < 1e-10)
58 const auto distortion_type = (cal.
D[5] == 0.f && cal.
D[6] == 0.f && cal.
D[7] == 0.f) ?
68 output.distortion_type = distortion_type;
73 memcpy(&output.D[0], cal.
D,
sizeof(
float) * 5);
78 memcpy(&output.D[0], cal.
D,
sizeof(
float) * 8);
90 if (cal.
D.size() > (
sizeof(output.
D)/
sizeof(
float)))
96 memset(&output.
D[0], 0,
sizeof(output.
D));
97 memcpy(&output.
D[0], cal.
D.data(), cal.
D.size() *
sizeof(
float));
136 memset(output.
aux.
M, 0,
sizeof(
float) * 3 * 3);
137 memset(output.
aux.
D, 0,
sizeof(
float) * 8);
138 memset(output.
aux.
R, 0,
sizeof(
float) * 3 * 3);
139 memset(output.
aux.
P, 0,
sizeof(
float) * 3 * 4);
175 CRL_EXCEPTION(
"Input source corresponds to invalid aux calibration");
177 return input.
aux.value();
179 default: {
CRL_EXCEPTION(
"Input source does not correspond to a image calibration");}
187 output.
K[0][0] =
static_cast<float>(
static_cast<double>(output.K[0][0]) * x_scale);
188 output.K[0][2] =
static_cast<float>(
static_cast<double>(output.K[0][2]) * x_scale);
189 output.K[1][1] =
static_cast<float>(
static_cast<double>(output.K[1][1]) * y_scale);
190 output.K[1][2] =
static_cast<float>(
static_cast<double>(output.K[1][2]) * y_scale);
192 output.P[0][0] =
static_cast<float>(
static_cast<double>(output.P[0][0]) * x_scale);
193 output.P[0][2] =
static_cast<float>(
static_cast<double>(output.P[0][2]) * x_scale);
194 output.P[0][3] =
static_cast<float>(
static_cast<double>(output.P[0][3]) * x_scale);
195 output.P[1][1] =
static_cast<float>(
static_cast<double>(output.P[1][1]) * y_scale);
196 output.P[1][2] =
static_cast<float>(
static_cast<double>(output.P[1][2]) * y_scale);
@ RIGHT_RECTIFIED_COMPRESSED
std::array< std::array< float, 3 >, 3 > R
Rotation matrix which takes points in the unrectified camera frame and transform them in to the recti...
bool is_valid(const crl::multisense::details::wire::CameraCalData &cal)
Check if the CameraCalData object is valid.
CameraCalibration left
Calibration information for the left camera.
CameraCalibration scale_calibration(const CameraCalibration &input, double x_scale, double y_scale)
Scale a calibration used to update a full-res calibration based on the current operating resolution.
std::optional< CameraCalibration > aux
Calibration information for the aux camera (optional 3rd center camera)
std::array< std::array< float, 4 >, 3 > P
Rectified projection matrix which takes points in the origin camera coordinate frame and projects the...
std::array< std::array< float, 3 >, 3 > K
Unrectified camera projection matrix stored in row-major ordering.
@ LEFT_DISPARITY_COMPRESSED
std::vector< float > D
Coefficients for the distortion model.
DataSource
Identifies which camera or data source the image is from.
#define CRL_EXCEPTION(fmt,...)
CameraCalibration convert(const crl::multisense::details::wire::CameraCalData &cal)
Convert a wire calibration to our API calibration object.
@ AUX_CHROMA_RECTIFIED_RAW
CameraCalibration select_calibration(const StereoCalibration &input, const DataSource &source)
Get the correct calibration corresponding to the input source.
CameraCalibration right
Calibration information for the right camera.
@ AUX_RECTIFIED_COMPRESSED
#define CPY_ARRAY_2(d_, s_, n_, m_)
@ LEFT_RECTIFIED_COMPRESSED