8#ifndef META_OCEAN_CV_CALIBRATION_METRIC_CALIBRATION_BOARD_H
9#define META_OCEAN_CV_CALIBRATION_METRIC_CALIBRATION_BOARD_H
72 inline const MetricSize& measurementMetricIndicationWidth()
const;
78 inline const MetricSize& measurementMetricIndicationHeight()
const;
84 inline Scalar xMetricMarkerSize()
const;
90 inline Scalar zMetricMarkerSize()
const;
145 bool optimizeCameraPose(
const AnyCamera& camera,
const HomogenousMatrix4& board_T_camera,
const ConstIndexedAccessor<MarkerCandidate>& validMarkerCandidates,
const CV::PixelPositions& additionalMarkerCoordinates,
const Points& points,
const Geometry::SpatialDistribution::DistributionArray& pointsDistributionArray,
HomogenousMatrix4& board_T_optimizedCamera,
const Scalar maximalProjectionError,
ObjectPointIds* usedObjectPointIds,
Vectors2* usedImagePoints =
nullptr,
Vectors3* usedObjectPoints =
nullptr)
const;
151 inline bool isValid()
const;
170 static constexpr double paddingFactor();
229 return Vector3(metricMarkerCenterX, 0, metricMarkerCenterZ);
This class implements the abstract base class for all AnyCamera objects.
Definition AnyCamera.h:130
This class implements a marker in a calibration board.
Definition CalibrationBoard.h:50
Vector3 objectPoint(const Vector3 &markerPosition, const Scalar xMarkerSize, const Scalar zMarkerSize, const size_t indexInMarker) const
Returns the 3D object point of a marker point of this board marker in the coordinate system of the ca...
This class implements a basic calibration board.
Definition CalibrationBoard.h:38
const BoardMarker & marker(const MarkerCoordinate &markerCoordinate) const
Returns the board marker at a specific position.
Definition CalibrationBoard.h:528
size_t xMarkers_
The number of horizontal markers of this calibration board, with range [1, infinity).
Definition CalibrationBoard.h:411
std::vector< ObjectPointId > ObjectPointIds
Definition of a vector holding object point ids.
Definition CalibrationBoard.h:219
bool isValid() const
Returns whether this calibration board is valid.
Definition CalibrationBoard.h:564
size_t yMarkers_
The number of vertical markers of this calibration board, with range [1, infinity).
Definition CalibrationBoard.h:414
This class extends the calibration board with metric information.
Definition MetricCalibrationBoard.h:39
const MetricSize & measurementMetricIndicationHeight() const
Returns the metric height of the measurement indication of the calibration board in the real world.
Definition MetricCalibrationBoard.h:204
MetricSize measurementMetricIndicationHeight_
The measured metric distance between the top and bottom measurement indication on the real calibratio...
Definition MetricCalibrationBoard.h:190
static bool determineOptimalMarkerGrid(const MetricSize &paperWidth, const MetricSize &paperHeight, size_t &xMarkers, size_t &yMarkers, const MetricSize &minMarkerSize=MetricSize(30.0, MetricSize::UT_MILLIMETER), const MetricSize &margin=MetricSize(6.0, MetricSize::UT_MILLIMETER), const double paddingFactor=MetricCalibrationBoard::paddingFactor())
Determines the optimal marker grid for a calibration board with specific paper width and height and m...
Vector3 markerCenterPosition(const MarkerCoordinate &markerCoordinate) const
Returns the 3D center location of a marker within this calibration board.
Definition MetricCalibrationBoard.h:219
Vector3 objectPoint(const MarkerCoordinate &markerCoordinate, const size_t indexInMarker) const
Returns the 3D location of a point of a marker within this calibration board.
Definition MetricCalibrationBoard.h:232
Scalar zMetricMarkerSize() const
Returns the metric vertical edge length of a marker in the real calibration board.
Definition MetricCalibrationBoard.h:214
Scalar zMetricMarkerSize_
The board's vertical marker edge length, with range (0, infinity).
Definition MetricCalibrationBoard.h:196
MetricSize measurementMetricIndicationWidth_
The measured metric distance between the left and right measurement indication on the real calibratio...
Definition MetricCalibrationBoard.h:187
MetricCalibrationBoard(const MetricCalibrationBoard &metricCalibrationBoard)=default
Copies a metric calibration board.
std::unordered_set< MarkerCoordinate, MarkerCoordinate > MarkerCoordinateSet
Definition of an unordered set holding marker coordinates.
Definition MetricCalibrationBoard.h:45
static constexpr double paddingFactor()
Returns the padding factor of this metric calibration board.
Definition MetricCalibrationBoard.h:249
bool determineCameraPose(const AnyCamera &camera, const ConstIndexedAccessor< MarkerCandidate > &markerCandidates, const Points &points, RandomGenerator &randomGenerator, HomogenousMatrix4 &board_T_camera, const Scalar maximalProjectionError, Indices32 *usedMarkerCandidates=nullptr, ObjectPointIds *usedObjectPointIds=nullptr, Vectors3 *usedObjectPoints=nullptr, Vectors2 *usedImagePoints=nullptr) const
Determines the camera pose using only 2D/3D correspondences from given marker candidates.
MetricCalibrationBoard(CalibrationBoard &&calibrationBoard, const MetricSize &measurementMetricIndicationWidth, const MetricSize &measurementMetricIndicationHeight)
Creates a new metric calibration board based on a calibration board and measured width and height of ...
bool optimizeCameraPose(const AnyCamera &camera, const HomogenousMatrix4 &board_T_camera, const ConstIndexedAccessor< MarkerCandidate > &validMarkerCandidates, const CV::PixelPositions &additionalMarkerCoordinates, const Points &points, const Geometry::SpatialDistribution::DistributionArray &pointsDistributionArray, HomogenousMatrix4 &board_T_optimizedCamera, const Scalar maximalProjectionError, ObjectPointIds *usedObjectPointIds, Vectors2 *usedImagePoints=nullptr, Vectors3 *usedObjectPoints=nullptr) const
Optimizes the camera pose using 2D/3D correspondences from known valid marker candidates and from kno...
Scalar xMetricMarkerSize_
The board's horizontal marker edge length, with range (0, infinity).
Definition MetricCalibrationBoard.h:193
static bool createMetricCalibrationBoard(const unsigned int id, const size_t xMarkers, const size_t yMarkers, const MetricSize &measurementMetricIndicationWidth, const MetricSize &measurementMetricIndicationHeight, MetricCalibrationBoard &metricCalibrationBoard)
Creates a unique metric calibration board based on a unique board id (the seed) and the number of mar...
const MetricSize & measurementMetricIndicationWidth() const
Returns the metric width of the measurement indication of the calibration board in the real world.
Definition MetricCalibrationBoard.h:199
bool isValid() const
Returns whether this calibration board holds valid data and valid measured indication distances.
Definition MetricCalibrationBoard.h:243
MetricCalibrationBoard()=default
Creates an invalid calibration board.
Scalar xMetricMarkerSize() const
Returns the metric horizontal edge length of a marker in the real calibration board.
Definition MetricCalibrationBoard.h:209
Vectors3 objectPoints(ObjectPointIds *objectPointIds=nullptr) const
Returns all object points of this calibration board.
This class implements an object holding a metric size like width, height, length, or thickness.
Definition MetricSize.h:32
T y() const
Returns the vertical coordinate position of this object.
Definition PixelPosition.h:468
T x() const
Returns the horizontal coordinate position of this object.
Definition PixelPosition.h:456
This class implements a base class for all indexed-based accessors allowing a constant reference acce...
Definition Accessor.h:241
This class implements a distribution array.
Definition SpatialDistribution.h:228
static constexpr T eps()
Returns a small epsilon.
This class implements a generator for random numbers.
Definition RandomGenerator.h:42
std::vector< Index32 > Indices32
Definition of a vector holding 32 bit index values.
Definition Base.h:96
std::vector< PixelPosition > PixelPositions
Definition of a vector holding pixel positions (with positive coordinate values).
Definition PixelPosition.h:46
std::vector< Point > Points
Definition of a vector holding points.
Definition cv/calibration/Point.h:31
float Scalar
Definition of a scalar type.
Definition Math.h:129
VectorT3< Scalar > Vector3
Definition of a 3D vector.
Definition Vector3.h:29
std::vector< Vector2 > Vectors2
Definition of a vector holding Vector2 objects.
Definition Vector2.h:64
std::vector< Vector3 > Vectors3
Definition of a vector holding Vector3 objects.
Definition Vector3.h:65
The namespace covering the entire Ocean framework.
Definition Accessor.h:15