79 #ifndef vtkMomentInvariants_h 80 #define vtkMomentInvariants_h 84 #include "vtkFiltersMomentInvariantsModule.h" 137 vtkSetMacro(Order,
unsigned int);
138 vtkGetMacro(Order,
unsigned int);
145 vtkSetMacro(NumberOfIntegrationSteps,
int);
146 vtkGetMacro(NumberOfIntegrationSteps,
int);
153 vtkSetMacro(AngleResolution,
int);
154 vtkGetMacro(AngleResolution,
int);
161 vtkSetMacro(Eps,
double);
162 vtkGetMacro(Eps,
double);
178 vtkSetMacro(IsTranslation,
bool);
179 vtkGetMacro(IsTranslation,
bool);
187 vtkSetMacro(IsScaling,
bool);
188 vtkGetMacro(IsScaling,
bool);
195 vtkSetMacro(IsRotation,
bool);
196 vtkGetMacro(IsRotation,
bool);
203 vtkSetMacro(IsReflection,
bool);
204 vtkGetMacro(IsReflection,
bool);
211 vtkGetMacro(NumberOfBasisFunctions,
int);
216 std::vector<double>
GetRadii() {
return this->Radii; }
224 for (
int i = 0; i < 10; ++i)
228 for (
size_t i = 0; i < this->Radii.size(); ++i)
230 radiiArray[i] = this->Radii.at(i);
249 return this->TranslationFactor[
radius + p * this->Radii.size() +
250 q * this->Radii.size() * (this->Order + 1) +
251 r * this->Radii.size() * (this->Order + 1) * (this->Order + 1)];
259 this->TranslationFactor[
radius + p * this->Radii.size() +
260 q * this->Radii.size() * (this->Order + 1) +
261 r * this->Radii.size() * (this->Order + 1) * (this->Order + 1)] =
value;
291 double RadiusPattern;
296 double* CenterPattern;
316 std::vector<double> Radii;
321 int NumberOfIntegrationSteps;
333 size_t NumberOfFields;
339 size_t NumberOfBasisFunctions;
383 std::vector<vtkMomentsTensor> MomentsPattern;
389 std::vector<vtkMomentsTensor> MomentsPatternTNormal;
395 std::vector<vtkMomentsTensor> MomentsPatternTSNormal;
402 std::vector<std::vector<vtkMomentsTensor> > MomentsPatternNormal;
408 double* TranslationFactor;
460 void HandlePattern(
std::vector<std::vector<vtkMomentsTensor> >& dominantContractions,
478 void HandleField(
std::vector<std::vector<vtkMomentsTensor> >& dominantContractions,
489 void BuildTranslationalFactorArray(
vtkImageData* pattern);
501 std::vector<vtkMomentsTensor> NormalizeT(std::vector<vtkMomentsTensor>& moments,
516 std::vector<vtkMomentsTensor> NormalizeT(std::vector<vtkMomentsTensor>& moments,
529 std::vector<vtkMomentsTensor> NormalizeTAnalytic(std::vector<vtkMomentsTensor>& moments,
540 std::vector<vtkMomentsTensor> NormalizeS(std::vector<vtkMomentsTensor>& moments,
550 std::vector<vtkMomentsTensor> NormalizeR(std::vector<vtkMomentsTensor>& dominantContractions,
553 std::vector<vtkMomentsTensor>& moments);
565 std::vector<std::vector<vtkMomentsTensor> > CalculateDominantContractions(
566 std::vector<vtkMomentsTensor>& momentsPattern);
576 std::vector<vtkMomentsTensor> ReproduceContractions(
577 std::vector<vtkMomentsTensor>& dominantContractions,
578 std::vector<vtkMomentsTensor>& moments);
592 void LookEverywhere(
std::vector<std::vector<vtkMomentsTensor> >& momentsPatternNormal,
593 std::vector<vtkMomentsTensor>& momentsPatternTranslationalNormal);
605 void LookEverywhere(
std::vector<std::vector<vtkMomentsTensor> >& dominantContractions,
606 std::vector<std::vector<vtkMomentsTensor> >& momentsPatternNormal);
619 std::vector<vtkMomentsTensor>& moments,
void GetRadiiArray(double radiiArray[10])
Get the different integration radii from the momentData as constant length array for python wrapping...
void SetPatternConnection(vtkAlgorithmOutput *algOutput)
standard pipeline input for port 1 This is the pattern, a vtkDataSet of scalar, vector, or matrix type.
int FillOutputPortInformation(int port, vtkInformation *info) override
Fill the output port information objects for this algorithm.
std::vector< double > GetRadii()
Get the different integration radii from the momentData.
void SetInputData(vtkDataObject *)
Assign a data object as input.
void SetMomentConnection(vtkAlgorithmOutput *algOutput)
standard pipeline input for port 1 This is the vtkImageData field of which the moments are calculated...
Proxy object to connect input/output ports.
std::string GetStringRadii(int i)
Get the different integration radii from the momentData as string.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
templated base type for containers of constant size.
a simple class to control print indentation
rotation invariant pattern detetction
topologically and geometrically regular array of data
void SetPatternData(vtkDataObject *input)
standard pipeline input for port 1 This is the pattern, a vtkDataSet of scalar, vector, or matrix type.
helper class that stores a tensor of arbitrary rank and dimension
virtual void SetInputConnection(int port, vtkAlgorithmOutput *input)
Set the connection for the given input port index.
virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when a request asks the algorithm to do its work.
double GetTranslationFactor(int radius, int p, int q, int r)
Get the translation factor.
virtual int RequestUpdateExtent(vtkInformation *, vtkInformationVector **, vtkInformationVector *)
This is called within ProcessRequest when each filter in the pipeline decides what portion of its inp...
void SetMomentData(vtkDataObject *input)
standard pipeline input for port 1 This is the vtkImageData field of which the moments are calculated...
void SetTranslationFactor(int radius, int p, int q, int r, double value)
Get the translation factor.
Superclass for algorithms that produce output of the same type as input.
int GetNumberOfRadii()
Get the number of the different integration radii from the momentData.
general representation of visualization data
static vtkDataSetAlgorithm * New()
int FillInputPortInformation(int port, vtkInformation *info) override
Fill the input port information objects for this algorithm.