#ifndef COMPUTEPAD_H #define COMPUTEPAD_H #include #include #include "Eigen/Geometry" #include "../datastructures/grid3d.h" #include "../tools/logger.h" namespace lvox { class ComputePAD { public: enum class GridsToCompute { BeerLamber, ContactFrequency, MaximumLikelyhoodEstimator, EqualBiasCorrectedBeerLamber, UnequalBiasCorrectedBeerLamber, BiasCorrectedMaximumLikelyhoodEstimator, IDR, zSum, zEffSum, deltaSum, deltaEffSum, deltaSquareSum, zleDelta_effSum }; struct Settings { int NThreshold; int ErrorValue; bool IsRelativeThreshold; float GridResolution; int GridNAValue; double Lambda1; int Dimension; }; struct Input { lvox::Grid3d* HitGrid; lvox::Grid3d* TheoreticalGrid; lvox::Grid3d* BeforeGrid; std::vector*>> OutputGrids; }; ComputePAD(std::vector& input, Settings& settings, lvox::Logger* logger = nullptr); void compute(); private: std::vector& _inputs; int _nThreshold; int _gridNAValue; int _errorValue; bool _isRelativeThreshold; float _gridResolution; double _lambda1; lvox::Logger * _logger; }; } #endif // COMPUTEPAD_H