25#ifndef __vtkDiffusionTensorMathematics_h
26#define __vtkDiffusionTensorMathematics_h
29#include "vtkTeemConfigure.h"
32#include <vtkThreadedImageAlgorithm.h>
41 void PrintSelf(ostream& os, vtkIndent indent)
override;
203 static void ModeToRGB(
double Mode,
double FA,
double& R,
double& G,
double& B);
205 static void RGBToIndex(
double R,
double G,
double B,
double& index);
211 static double Trace(
double D[3][3]);
233 static double Mode(
double w[3]);
234 static void ColorByMode(
double w[3],
double& R,
double& G,
double& B);
259 vtkInformationVector** inputVector,
260 vtkInformationVector* outputVector,
261 vtkImageData*** inData,
262 vtkImageData** outData,
264 int threadId)
override;
269 int RequestData(vtkInformation* request, vtkInformationVector** inputVector, 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])