26#ifndef __vtkDiffusionTensorMathematics_h
27#define __vtkDiffusionTensorMathematics_h
30#include "vtkTeemConfigure.h"
33#include <vtkThreadedImageAlgorithm.h>
42 void PrintSelf(ostream& os, vtkIndent indent)
override;
234 double &R,
double &G,
double &B);
237 double B,
double &index);
243 static double Trace(
double D[3][3]);
265 static double Mode(
double w[3]);
266 static void ColorByMode(
double w[3],
double &R,
double &G,
double &B);
289 vtkInformationVector**,
290 vtkInformationVector*)
override;
293 vtkInformationVector **inputVector,
294 vtkInformationVector *outputVector,
295 vtkImageData ***inData,
296 vtkImageData **outData,
297 int extent[6],
int threadId)
override;
303 vtkInformationVector** inputVector,
304 vtkInformationVector* outputVector)
override;
void SetOperationToFractionalAnisotropy()
int FillInputPortInformation(int port, vtkInformation *info) override
void SetOperationToMode()
void SetOperationToMaxEigenvalueProjectionZ()
void PrintSelf(ostream &os, vtkIndent indent) override
static void ModeToRGB(double Mode, double FA, double &R, double &G, double &B)
Public for access from threads.
void SetOperationToParallelDiffusivity()
~vtkDiffusionTensorMathematics() override
static double ParallelDiffusivity(double w[3])
void SetOperationToRAIMaxEigenvecZ()
static void RGBToIndex(double R, double G, double B, double &index)
void SetOperationToColorByMode()
int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
static double FractionalAnisotropy(double w[3])
static double PlanarMeasure(double w[3])
static double MaxEigenvalueProjectionX(double **v, double w[3])
void SetOperationToMeanDiffusivity()
static double MaxEigenvalue(double w[3])
virtual void SetTensorRotationMatrix(vtkMatrix4x4 *)
int RequestInformation(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
void SetOperationToMaxEigenvecZ()
void SetOperationToPerpendicularDiffusivity()
void SetOperationToDeterminant()
Output the determinant.
vtkMatrix4x4 * TensorRotationMatrix
static double Mode(double w[3])
void SetOperationToLinearMeasure()
void SetOperationToRAIMaxEigenvecY()
static double RelativeAnisotropy(double w[3])
static double MinEigenvalue(double w[3])
void SetOperationToMaxEigenvalueProjectionY()
static double MeanDiffusivity(double w[3])
void SetOperationToD11()
Output a matrix (tensor) component.
int MaskWithScalars
Boolean controls eigenfunction extraction.
static double RAIMaxEigenvecZ(double **v, double w[3])
static vtkDiffusionTensorMathematics * New()
static double Trace(double w[3])
static double MaxEigenvalueProjectionY(double **v, double w[3])
static double MiddleEigenvalue(double w[3])
void SetOperationToMiddleEigenvalue()
void SetOperationToMaxEigenvalueProjectionX()
Output Maxeigenvalue*Maxeigenvec_projection also known as L1Z.
void SetOperationToMaxEigenvecY()
static double MaxEigenvecZ(double **v, double w[3])
vtkImageData * ScalarMask
static double MaxEigenvecY(double **v, double w[3])
static double RAIMaxEigenvecY(double **v, double w[3])
vtkDiffusionTensorMathematics()
void SetOperationToMaxEigenvecX()
Output Relative_anisotropy*Maxeigenvec_projection also known as L1z.
static int TeemEigenSolver(double **m, double *w, double **v)
static int FixNegativeEigenvaluesMethod(double w[3])
Helper functions to perform operations pixel-wise.
void SetOperationToMaxEigenvalue()
Output a selected eigenvalue.
void SetOperationToSphericalMeasure()
static double SphericalMeasure(double w[3])
double ScaleFactor
math operation to perform
void SetOperationToMinEigenvalue()
int ExtractEigenvalues
Scale factor for output scalars.
void SetOperationToPlanarMeasure()
void SetOperationToRelativeAnisotropy()
Output various anisotropy and shape measures.
void SetOperationToRAIMaxEigenvecX()
Output Relative_anisotropy*Maxeigenvec_projection also known as L1z.
static double Trace(double D[3][3])
static double PerpendicularDiffusivity(double w[3])
void ThreadedRequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector, vtkImageData ***inData, vtkImageData **outData, int extent[6], int threadId) override
static double RAIMaxEigenvecX(double **v, double w[3])
static double LinearMeasure(double w[3])
void SetOperationToColorByOrientation()
virtual void SetOperation(int)
virtual void SetScalarMask(vtkImageData *)
Scalar mask.
int FixNegativeEigenvalues
static void ColorByMode(double w[3], double &R, double &G, double &B)
static double MaxEigenvalueProjectionZ(double **v, double w[3])
static double MaxEigenvecX(double **v, double w[3])
@ VTK_TENS_MAX_EIGENVALUE
@ VTK_TENS_MAX_EIGENVALUE_PROJZ
@ VTK_TENS_MAX_EIGENVALUE_PROJY
@ VTK_TENS_MEAN_DIFFUSIVITY
@ VTK_TENS_MIN_EIGENVALUE
@ VTK_TENS_PERPENDICULAR_DIFFUSIVITY
@ VTK_TENS_MID_EIGENVALUE
@ VTK_TENS_COLOR_ORIENTATION
@ VTK_TENS_PARALLEL_DIFFUSIVITY
@ VTK_TENS_PLANAR_MEASURE
@ VTK_TENS_RAI_MAX_EIGENVEC_PROJZ
@ VTK_TENS_COLOR_ORIENTATION_MIN_EIGENVECTOR
@ VTK_TENS_LINEAR_MEASURE
@ VTK_TENS_FRACTIONAL_ANISOTROPY
@ VTK_TENS_MAX_EIGENVALUE_PROJX
@ VTK_TENS_SPHERICAL_MEASURE
@ VTK_TENS_RAI_MAX_EIGENVEC_PROJY
@ VTK_TENS_RELATIVE_ANISOTROPY
@ VTK_TENS_MAX_EIGENVEC_PROJZ
@ VTK_TENS_COLOR_ORIENTATION_MIDDLE_EIGENVECTOR
@ VTK_TENS_RAI_MAX_EIGENVEC_PROJX
@ VTK_TENS_MAX_EIGENVEC_PROJX
@ VTK_TENS_MAX_EIGENVEC_PROJY
void ComputeTensorIncrements(vtkImageData *imageData, vtkIdType incr[3])
void SetOperationToTrace()
Output the trace (sum of eigenvalues = sum along diagonal)
static double Determinant(double D[3][3])