/// 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;
}