17 #ifndef mitkCreateDistanceImageFromSurfaceFilter_h_Included
18 #define mitkCreateDistanceImageFromSurfaceFilter_h_Included
26 #include "vnl/vnl_vector_fixed.h"
28 #include "itkImageBase.h"
30 #include <Eigen/Dense>
82 itkFactorylessNewMacro(
Self) itkCloneMacro(
Self)
84 itkGetMacro(DistanceImageSpacing,
double)
89 virtual
void SetInput(const
mitk::
Surface *surface);
91 virtual
void SetInput(
unsigned int idx, const
mitk::
Surface *surface);
95 virtual const
mitk::
Surface *GetInput(
unsigned int idx);
104 itkSetMacro(DistanceImageVolume,
unsigned int);
106 void PrintEquationSystem();
116 void SetUseProgressBar(
bool);
123 void SetProgressStepSize(
unsigned int stepSize);
125 void SetReferenceImage(
itk::ImageBase<3>::
Pointer referenceImage);
129 virtual ~CreateDistanceImageFromSurfaceFilter();
130 virtual
void GenerateData() override;
131 virtual
void GenerateOutputInformation() override;
134 void CreateSolutionMatrixAndFunctionValues();
135 double CalculateDistanceValue(PointType p);
137 void FillDistanceImage();
153 void DetermineBounds(DistanceImageType::PointType &minPointInWorldCoordinates,
154 DistanceImageType::PointType &maxPointInWorldCoordinates,
155 DistanceImageType::IndexType &minPointInIndexCoordinates,
156 DistanceImageType::IndexType &maxPointInIndexCoordinates);
158 void PreprocessContourPoints();
159 void CreateEmptyDistanceImage();
162 CenterList m_Centers;
163 NormalList m_Normals;
165 Eigen::MatrixXd m_SolutionMatrix;
166 Eigen::VectorXd m_FunctionValues;
167 Eigen::VectorXd m_Weights;
169 DistanceImageType::
Pointer m_DistanceImageITK;
172 double m_DistanceImageSpacing;
173 double m_DistanceImageDefaultBufferValue;
174 unsigned int m_DistanceImageVolume;
176 bool m_UseProgressBar;
177 unsigned int m_ProgressStepSize;
Superclass of all classes generating Images (instances of class Image) as output. ...
Class for storing surfaces (vtkPolyData).
DistanceImageType::IndexType IndexType
Superclass of all classes generating some kind of mitk::BaseData.
DataCollection - Class to facilitate loading/accessing structured data.
std::vector< PointType > NormalList
#define MITKSURFACEINTERPOLATION_EXPORT
std::vector< PointType > CenterList
#define mitkClassMacro(className, SuperClassName)
This filter interpolates the 3D surface for a segmented area. The basis for the interpolation are the...
itk::Image< double, 3 > DistanceImageType
vnl_vector_fixed< double, 3 > PointType
std::vector< Surface::Pointer > SurfaceList
itk::ProcessObject Superclass