25 #ifndef INCLUDED_UndistortMeasurements_h_GUID_EBA50677_306F_4985_BC70_393C58140FE4
26 #define INCLUDED_UndistortMeasurements_h_GUID_EBA50677_306F_4985_BC70_393C58140FE4
44 inline LedMeasurementVec
45 undistortLeds(LedMeasurementVec
const &distortedMeasurements,
46 CameraParameters
const &camParams) {
47 LedMeasurementVec ret;
48 ret.resize(distortedMeasurements.size());
49 auto distortionModel = CameraDistortionModel{
50 Eigen::Vector2d{camParams.focalLengthX(), camParams.focalLengthY()},
51 cvToVector(camParams.principalPoint()),
52 Eigen::Vector3d{camParams.k1(), camParams.k2(), camParams.k3()}};
53 auto ledUndistort = [&distortionModel](LedMeasurement
const &meas) {
54 LedMeasurement ret{meas};
55 Eigen::Vector2d undistorted = distortionModel.undistortPoint(
56 cvToVector(meas.loc).cast<
double>());
57 ret.loc = vecToPoint(undistorted.cast<
float>());
60 std::transform(begin(distortedMeasurements), end(distortedMeasurements),
61 begin(ret), ledUndistort);
66 #endif // INCLUDED_UndistortMeasurements_h_GUID_EBA50677_306F_4985_BC70_393C58140FE4
Header wrapping include of and for warning quieting.
t_< detail::transform_< List, Fun >> transform