v2.0.0
Loading...
Searching...
No Matches
interpolation.h
Go to the documentation of this file.
1//=============================================================================================================
34
35#ifndef INTERPOLATION_H
36#define INTERPOLATION_H
37
38//=============================================================================================================
39// STL INCLUDES
40//=============================================================================================================
41
43
44#include <limits>
45
46//=============================================================================================================
47// QT INCLUDES
48//=============================================================================================================
49
50#include <QSharedPointer>
51#include <QVector>
52
53//=============================================================================================================
54// EIGEN INCLUDES
55//=============================================================================================================
56
57#include <Eigen/Core>
58#include <Eigen/Sparse>
59
60//=============================================================================================================
61// DEFINE NAMESPACE
62//=============================================================================================================
63
64namespace DISP3DRHILIB {
65
66#ifndef FLOAT_INFINITY
67#define FLOAT_INFINITY std::numeric_limits<float>::infinity()
68#endif
69
70//=============================================================================================================
76
78{
79
80public:
81 typedef QSharedPointer<Interpolation> SPtr;
82 typedef QSharedPointer<const Interpolation> ConstSPtr;
83
84 Interpolation() = delete;
85
86 //=========================================================================================================
90static QSharedPointer<Eigen::SparseMatrix<float> > createInterpolationMat(const Eigen::VectorXi &vecProjectedSensors,
91 const QSharedPointer<Eigen::MatrixXd> matDistanceTable,
92 double (*interpolationFunction) (double),
93 const double dCancelDist = FLOAT_INFINITY,
94 const Eigen::VectorXi &vecExcludeIndex = Eigen::VectorXi());
95
96 //=========================================================================================================
100 static Eigen::VectorXf interpolateSignal(const QSharedPointer<Eigen::SparseMatrix<float> > matInterpolationMatrix,
101 const QSharedPointer<Eigen::VectorXf> &vecMeasurementData);
102
103 //=========================================================================================================
107 static Eigen::VectorXf interpolateSignal(const Eigen::SparseMatrix<float> &matInterpolationMatrix,
108 const Eigen::VectorXf &vecMeasurementData);
109
110 //=========================================================================================================
114 static double linear(const double dIn);
115
116 //=========================================================================================================
120 static double gaussian(const double dIn);
121
122 //=========================================================================================================
126 static double square(const double dIn);
127
128 //=========================================================================================================
132 static double cubic(const double dIn);
133};
134
135} // namespace DISP3DRHILIB
136
137#endif // INTERPOLATION_H
disp3D_rhi library export/import macros.
#define DISP3DRHISHARED_EXPORT
#define FLOAT_INFINITY
3-D brain visualisation using the Qt RHI rendering backend.
QSharedPointer< const Interpolation > ConstSPtr
static Eigen::VectorXf interpolateSignal(const Eigen::SparseMatrix< float > &matInterpolationMatrix, const Eigen::VectorXf &vecMeasurementData)
interpolateSignal Interpolates sensor data using the weight matrix (reference version).
static double gaussian(const double dIn)
gaussian Gaussian interpolation function (sigma=1).
static Eigen::VectorXf interpolateSignal(const QSharedPointer< Eigen::SparseMatrix< float > > matInterpolationMatrix, const QSharedPointer< Eigen::VectorXf > &vecMeasurementData)
interpolateSignal Interpolates sensor data using the weight matrix (shared pointer version).
static double linear(const double dIn)
linear Identity interpolation function.
static double cubic(const double dIn)
cubic Cubic hyperbola interpolation function.
static QSharedPointer< Eigen::SparseMatrix< float > > createInterpolationMat(const Eigen::VectorXi &vecProjectedSensors, const QSharedPointer< Eigen::MatrixXd > matDistanceTable, double(*interpolationFunction)(double), const double dCancelDist=FLOAT_INFINITY, const Eigen::VectorXi &vecExcludeIndex=Eigen::VectorXi())
createInterpolationMat Calculates the weight matrix for interpolation.
static double square(const double dIn)
square Negative parabola interpolation function with y-offset of 1.
QSharedPointer< Interpolation > SPtr