16#ifndef STEPSABC_STEREO_CALIBRATION_H
17#define STEPSABC_STEREO_CALIBRATION_H
52 std::array<double, 11>
L{};
86 static bool writeObjectFile(
const std::vector<CalibPoint3D>& pts,
const std::string& path,
87 std::string& error_message);
90 static std::vector<CalibPoint3D>
readObjectFile(
const std::string& path,
91 std::string& error_message);
95 std::string& error_message);
103 const std::vector<CalibPoint3D>& object_points,
104 std::string& error_message);
118 const std::vector<CalibPoint2D>& img1,
120 const std::vector<CalibPoint2D>& img2,
121 const std::vector<CalibPoint3D>& object_points,
122 std::vector<CalibPoint3D>& reconstructed_out);
129 int cam_first_id,
const std::vector<CalibPoint2D>& img_first,
int cam_second_id,
130 const std::vector<CalibPoint2D>& img_second,
const std::vector<CalibPoint3D>& object_points,
131 std::string& error_message);
static ReconstructionError reconstructionError(const CameraDLT &cam1, const std::vector< CalibPoint2D > &img1, const CameraDLT &cam2, const std::vector< CalibPoint2D > &img2, const std::vector< CalibPoint3D > &object_points, std::vector< CalibPoint3D > &reconstructed_out)
DLT reconstruction-error metric: triangulate every calibration point from the two cameras and compare...
static bool writeObjectFile(const std::vector< CalibPoint3D > &pts, const std::string &path, std::string &error_message)
Write generated 3D coordinates to a text file (one "x y z" per line).
static std::vector< CalibPoint3D > readObjectFile(const std::string &path, std::string &error_message)
Read a "x y z" per line 3D coordinate file.
static CalibPoint3D reconstructPoint(const CameraDLT &cam1, const CalibPoint2D &p1, const CameraDLT &cam2, const CalibPoint2D &p2)
Triangulate a 3D point from two cameras' DLT parameters and the matched image observations (linear le...
static CameraDLT calcDLTParameters(int camera_id, const std::vector< CalibPoint2D > &image_points, const std::vector< CalibPoint3D > &object_points, std::string &error_message)
Port of STEP1_CalcDLTparameters_rewrited.m for a single camera.
static std::vector< CalibPoint3D > generateCylindricalObject(const CylinderCalibSpec &spec)
Port of generate_cylindrical_calibration_object_coordinate_file.m.
static std::vector< CalibPoint2D > readImagePointsFile(const std::string &path, std::string &error_message)
Read a "u v" per line 2D image-point file (one per calibration dot).
static StereoCalibrationResult calibrateStereoPair(int cam_first_id, const std::vector< CalibPoint2D > &img_first, int cam_second_id, const std::vector< CalibPoint2D > &img_second, const std::vector< CalibPoint3D > &object_points, std::string &error_message)
Full StepC driver for one stereo pair: fit both cameras and compute the reconstruction error against ...
DataSerializer - Abstract base class for format-agnostic DIC data I/O.
A 2D image observation (pixels).
A single calibration point: 3D world coordinate (mm).
DLT parameters for one camera plus its fit residual.
std::array< double, 11 > L
Geometry of the cylindrical calibration object.
Reconstruction-error metrics for a stereo pair.
std::vector< double > per_point
Full StepC result for a stereo pair.
ReconstructionError recon_error
std::vector< CalibPoint3D > reconstructed