/// Perform the undistortion of LED measurements. inline std::vector<LedMeasurement> undistortLeds(std::vector<LedMeasurement> const &distortedMeasurements, CameraParameters const &camParams) { std::vector<LedMeasurement> ret; ret.resize(distortedMeasurements.size()); auto distortionModel = CameraDistortionModel{ Eigen::Vector2d{camParams.focalLengthX(), camParams.focalLengthY()}, cvToVector(camParams.principalPoint()), Eigen::Vector3d{camParams.k1(), camParams.k2(), camParams.k3()}}; auto ledUndistort = [&distortionModel](LedMeasurement const &meas) { LedMeasurement ret{meas}; Eigen::Vector2d undistorted = distortionModel.undistortPoint( cvToVector(meas.loc).cast<double>()); ret.loc = vecToPoint(undistorted.cast<float>()); return ret; }; std::transform(begin(distortedMeasurements), end(distortedMeasurements), begin(ret), ledUndistort); return ret; }