v2.0.0
Loading...
Searching...
No Matches
geometryinfo.h
Go to the documentation of this file.
1//=============================================================================================================
34
35#ifndef GEOMETRYINFO_H
36#define GEOMETRYINFO_H
37
38//=============================================================================================================
39// INCLUDES
40//=============================================================================================================
41
42#include "../disp3D_global.h"
43
44#include <fiff/fiff_evoked.h>
45
46//=============================================================================================================
47// STL INCLUDES
48//=============================================================================================================
49
50#include <limits>
51#include <functional>
52
53//=============================================================================================================
54// QT INCLUDES
55//=============================================================================================================
56
57#include <QSharedPointer>
58#include <QVector>
59#include <vector>
60
61//=============================================================================================================
62// EIGEN INCLUDES
63//=============================================================================================================
64
65#include <Eigen/Core>
66#include <Eigen/Sparse>
67
68//=============================================================================================================
69// DEFINE NAMESPACE
70//=============================================================================================================
71
72namespace DISP3DLIB {
73
74#define FLOAT_INFINITY std::numeric_limits<float>::infinity()
75
76//=============================================================================================================
82
84{
85
86public:
87 typedef QSharedPointer<GeometryInfo> SPtr;
88 typedef QSharedPointer<const GeometryInfo> ConstSPtr;
89
90 GeometryInfo() = delete;
91
92 //=========================================================================================================
96 static QSharedPointer<Eigen::MatrixXd> scdc(const Eigen::MatrixX3f &matVertices,
97 const std::vector<Eigen::VectorXi> &vecNeighborVertices,
98 Eigen::VectorXi &vecVertSubset,
99 double dCancelDist = FLOAT_INFINITY);
100
101 //=========================================================================================================
116 static QSharedPointer<Eigen::SparseMatrix<float>> scdcInterpolationMat(
117 const Eigen::MatrixX3f &matVertices,
118 const std::vector<Eigen::VectorXi> &vecNeighborVertices,
119 const Eigen::VectorXi &vecVertSubset,
120 double (*interpolationFunction)(double),
121 double dCancelDist,
122 std::function<void(int, int)> progressCallback = nullptr);
123
124 //=========================================================================================================
128 static Eigen::VectorXi projectSensors(const Eigen::MatrixX3f &matVertices,
129 const Eigen::MatrixX3f &matSensorPositions);
130
131 //=========================================================================================================
135 static Eigen::VectorXi filterBadChannels(QSharedPointer<Eigen::MatrixXd> matDistanceTable,
136 const FIFFLIB::FiffInfo& fiffInfo,
137 qint32 iSensorType);
138
139protected:
140 static inline double squared(double dBase);
141
142 static Eigen::VectorXi nearestNeighbor(const Eigen::MatrixX3f &matVertices,
143 const Eigen::MatrixX3f &matSensorPositions,
144 qint32 iBegin,
145 qint32 iEnd);
146
147 static void iterativeDijkstra(QSharedPointer<Eigen::MatrixXd> matOutputDistMatrix,
148 const Eigen::MatrixX3f &matVertices,
149 const std::vector<Eigen::VectorXi> &vecNeighborVertices,
150 const Eigen::VectorXi &vecVertSubset,
151 qint32 iBegin,
152 qint32 iEnd,
153 double dCancelDistance);
154};
155
156//=============================================================================================================
157// INLINE DEFINITIONS
158//=============================================================================================================
159
160double GeometryInfo::squared(double dBase)
161{
162 return dBase * dBase;
163}
164
165} // namespace DISP3DLIB
166
167#endif // GEOMETRYINFO_H
disp3D library export/import macros.
#define DISP3DSHARED_EXPORT
#define FLOAT_INFINITY
FiffEvoked class declaration.
3-D brain visualisation using the Qt RHI rendering backend.
static Eigen::VectorXi nearestNeighbor(const Eigen::MatrixX3f &matVertices, const Eigen::MatrixX3f &matSensorPositions, qint32 iBegin, qint32 iEnd)
QSharedPointer< GeometryInfo > SPtr
static QSharedPointer< Eigen::SparseMatrix< float > > scdcInterpolationMat(const Eigen::MatrixX3f &matVertices, const std::vector< Eigen::VectorXi > &vecNeighborVertices, const Eigen::VectorXi &vecVertSubset, double(*interpolationFunction)(double), double dCancelDist, std::function< void(int, int)> progressCallback=nullptr)
scdcInterpolationMat Computes geodesic distances (SCDC) and builds the sparse interpolation matrix in...
QSharedPointer< const GeometryInfo > ConstSPtr
static Eigen::VectorXi filterBadChannels(QSharedPointer< Eigen::MatrixXd > matDistanceTable, const FIFFLIB::FiffInfo &fiffInfo, qint32 iSensorType)
filterBadChannels Filters bad channels from distance table.
static void iterativeDijkstra(QSharedPointer< Eigen::MatrixXd > matOutputDistMatrix, const Eigen::MatrixX3f &matVertices, const std::vector< Eigen::VectorXi > &vecNeighborVertices, const Eigen::VectorXi &vecVertSubset, qint32 iBegin, qint32 iEnd, double dCancelDistance)
static double squared(double dBase)
static Eigen::VectorXi projectSensors(const Eigen::MatrixX3f &matVertices, const Eigen::MatrixX3f &matSensorPositions)
projectSensors Calculates the nearest neighbor vertex to each sensor.
static QSharedPointer< Eigen::MatrixXd > scdc(const Eigen::MatrixX3f &matVertices, const std::vector< Eigen::VectorXi > &vecNeighborVertices, Eigen::VectorXi &vecVertSubset, double dCancelDist=FLOAT_INFINITY)
scdc Calculates surface constrained distances on a mesh.
FIFF measurement file information.
Definition fiff_info.h:86