3#include "../affine_matrix_3d.hpp"
4#include "../_cexports/c_metric.h"
6#include "../point_cloud.hpp"
7#include "_decl/decl_metric_calibration_configuration.hpp"
8#include "_decl/decl_metric_segmentor_dense_point_cloud.hpp"
9#include "_decl/decl_metric_segmentor_range_map.hpp"
19 using DensePointCloudSegmentorPtr = std::shared_ptr<DensePointCloudSegmentor>;
20 using RangeMapSegmentorPtr = std::shared_ptr<RangeMapSegmentor>;
93 if (referencePoints.size() != measuredPoints.size())
97 Internal::DoResCall([&]() {
99 CVMCalculateAffineTransformation(
reinterpret_cast<const CExports::CVC3DPointD *
>(referencePoints.data()),
100 reinterpret_cast<const CExports::CVC3DPointD *
>(measuredPoints.data()),
101 static_cast<CExports::cvbdim_t
>(referencePoints.size()),
102 *
reinterpret_cast<CExports::CVC3DTransformation *
>(&trafo)));
130 bool estimateEncoderStep =
true,
bool calculateResiduals =
true)
132 if (referencePoints.size() != measuredPoints.size())
138 if (calculateResiduals)
142 Internal::DoResCall([&]() {
143 return CVB_CALL_CAPI(CVMCalculateCorrectionOfLaserPlaneInclinationWithParams(
144 reinterpret_cast<const CExports::CVC3DPointD *
>(referencePoints.data()),
145 reinterpret_cast<const CExports::CVC3DPointD *
>(measuredPoints.data()),
146 static_cast<CExports::cvbdim_t
>(referencePoints.size()),
147 static_cast<CExports::CVMExtrinsicTransformationModel
>(model),
148 static_cast<CExports::cvbbool_t
>(estimateEncoderStep),
149 *
reinterpret_cast<CExports::CVC3DTransformation *
>(&trafo),
150 *
reinterpret_cast<CExports::CVC3DAffineTransformationParameters *
>(&trafoPara),
151 reinterpret_cast<CExports::CVC3DPointD *
>(residuals.data())));
162 Internal::DoResCall([&]() {
163 return CVB_CALL_CAPI(CVMCalculateCorrectionOfLaserPlaneInclinationWithParams(
164 reinterpret_cast<const CExports::CVC3DPointD *
>(referencePoints.data()),
165 reinterpret_cast<const CExports::CVC3DPointD *
>(measuredPoints.data()),
166 static_cast<CExports::cvbdim_t
>(referencePoints.size()),
167 static_cast<CExports::CVMExtrinsicTransformationModel
>(model),
168 static_cast<CExports::cvbbool_t
>(estimateEncoderStep),
169 *
reinterpret_cast<CExports::CVC3DTransformation *
>(&trafo),
170 *
reinterpret_cast<CExports::CVC3DAffineTransformationParameters *
>(&trafoPara),
nullptr));
195 bool calculateResiduals =
true)
197 if (referencePoints.size() != measuredPoints.size())
203 if (calculateResiduals)
207 Internal::DoResCall([&]() {
208 return CVB_CALL_CAPI(CVMCalculateRigidBodyTransformationWithParams(
209 reinterpret_cast<const CExports::CVC3DPointD *
>(referencePoints.data()),
210 reinterpret_cast<const CExports::CVC3DPointD *
>(measuredPoints.data()),
211 static_cast<CExports::cvbdim_t
>(referencePoints.size()),
212 *
reinterpret_cast<CExports::CVC3DTransformation *
>(&trafo),
213 *
reinterpret_cast<CExports::CVC3DAffineTransformationParameters *
>(&trafoPara),
214 reinterpret_cast<CExports::CVC3DPointD *
>(residuals.data())));
221 Internal::DoResCall([&]() {
222 return CVB_CALL_CAPI(CVMCalculateRigidBodyTransformationWithParams(
223 reinterpret_cast<const CExports::CVC3DPointD *
>(referencePoints.data()),
224 reinterpret_cast<const CExports::CVC3DPointD *
>(measuredPoints.data()),
225 static_cast<CExports::cvbdim_t
>(referencePoints.size()),
226 *
reinterpret_cast<CExports::CVC3DTransformation *
>(&trafo),
227 *
reinterpret_cast<CExports::CVC3DAffineTransformationParameters *
>(&trafoPara),
nullptr));
Affine transformation for 3D containing a transformation matrix and a translation vector.
Definition affine_matrix_3d.hpp:140
ExtrinsicCalibrationModel
Enum for extrinsic calibration model.
Definition decl_metric_calibration_configuration.hpp:80
@ SpecificTransformationParameters
Transformation parameters like rotation, scale and shear are estimated (recommended).
Definition decl_metric_calibration_configuration.hpp:93
Multi-purpose 3D vector class.
Definition point_3d.hpp:22
This class is a replacement for C++17 std::optional.
Definition optional.hpp:61
Namespace specific to AQS12 calibration pieces.
Definition decl_metric_aqs12_calibration_piece.hpp:16
Namespace for metric calibration.
Definition decl_metric_aqs12_calibration_piece.hpp:13
TransformationResult CalculateCorrectionOfLaserPlaneInclination(const std::vector< Point3D< double > > &referencePoints, const std::vector< Point3D< double > > &measuredPoints, CalibrationConfiguration::ExtrinsicCalibrationModel model=CalibrationConfiguration::ExtrinsicCalibrationModel::SpecificTransformationParameters, bool estimateEncoderStep=true, bool calculateResiduals=true)
Calculates an extrinsic calibration and the correction for the laser plane inclination.
Definition metric.hpp:126
AffineMatrix3D CalculateAffineTransformation(const std::vector< Point3D< double > > &referencePoints, const std::vector< Point3D< double > > &measuredPoints)
Calculates an affine transformation.
Definition metric.hpp:90
RigidBodyTransformationResult CalculateRigidBodyTransformation(const std::vector< Point3D< double > > &referencePoints, const std::vector< Point3D< double > > &measuredPoints, bool calculateResiduals=true)
Calculates a rigid body transformation.
Definition metric.hpp:193
CalibrationPiece
Defines the calibration piece to use for face segmentation.
Definition metric.hpp:24
SegmentationMethod
Defines the segmentation method for labeling the faces of the calibration piece.
Definition metric.hpp:31
@ KmeansClustering
Clustering top, base and faces using kmeans.
Definition metric.hpp:33
std::tuple< AffineMatrix3D, Cvb::optional< std::vector< Point3D< double > > >, Cvb::optional< AffineTransformationParameters > > TransformationResult
Result for calculating an extrinsic transformation.
Definition metric.hpp:41
std::tuple< AffineMatrix3D, Cvb::optional< std::vector< Point3D< double > > >, AffineTransformationParameters > RigidBodyTransformationResult
Result for calculating a rigid body transformation.
Definition metric.hpp:49
Namespace for the Foundation package.
Definition decl_metric_aqs12_calibration_piece.hpp:11
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17