Slicer
4.11
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
|
scale and orient glyph(s) according to tensor eigenvalues and eigenvectors. More...
#include <Libs/vtkTeem/vtkDiffusionTensorGlyph.h>
Public Types | |
typedef vtkTensorGlyph | Superclass |
Public Member Functions | |
void | ColorGlyphsByFractionalAnisotropy () |
void | ColorGlyphsByLinearMeasure () |
TO DO: make more of these. More... | |
void | ColorGlyphsByMaxEigenvalue () |
void | ColorGlyphsByMidEigenvalue () |
void | ColorGlyphsByMinEigenvalue () |
void | ColorGlyphsByOrientation () |
Output R,G,B scalars according to orientation of max eigenvalue More... | |
void | ColorGlyphsByParallelDiffusivity () |
void | ColorGlyphsByPerpendicularDiffusivity () |
void | ColorGlyphsByPlanarMeasure () |
void | ColorGlyphsByRelativeAnisotropy () |
void | ColorGlyphsBySphericalMeasure () |
void | ColorGlyphsByTrace () |
virtual const char * | GetClassName () |
virtual int * | GetDimensionResolution () |
virtual void | GetDimensionResolution (int &, int &) |
virtual void | GetDimensionResolution (int [2]) |
virtual int | GetMaskGlyphs () |
vtkMTimeType | GetMTime () override |
virtual int | GetResolution () |
virtual vtkMatrix4x4 * | GetTensorRotationMatrix () |
virtual vtkMatrix4x4 * | GetVolumePositionMatrix () |
virtual int | IsA (const char *type) |
virtual void | MaskGlyphsOff () |
virtual void | MaskGlyphsOn () |
If MaskGlyphs is 1 (On), Mask is used to mask tensors. More... | |
void | PrintSelf (ostream &os, vtkIndent indent) override |
void | SetDimensionResolution (int [2]) |
virtual void | SetDimensionResolution (int, int) |
virtual void | SetMask (vtkImageData *) |
virtual void | SetMaskGlyphs (int) |
virtual void | SetResolution (int) |
virtual void | SetTensorRotationMatrix (vtkMatrix4x4 *) |
virtual void | SetVolumePositionMatrix (vtkMatrix4x4 *) |
Static Public Member Functions | |
static int | IsTypeOf (const char *type) |
static vtkDiffusionTensorGlyph * | New () |
static vtkDiffusionTensorGlyph * | SafeDownCast (vtkObject *o) |
Protected Member Functions | |
void | ColorGlyphsBy (int measure) |
int | RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *) override |
vtkDiffusionTensorGlyph () | |
~vtkDiffusionTensorGlyph () override | |
Protected Attributes | |
int | DimensionResolution [2] |
allows skipping some tensors for lower resolution glyphing More... | |
vtkImageData * | Mask |
int | MaskGlyphs |
which function of eigenvalues to use for coloring More... | |
int | Resolution |
mask glyphs outside of the brain for example, using the Mask More... | |
int | ScalarInvariant |
vtkMatrix4x4 * | TensorRotationMatrix |
vtkMatrix4x4 * | VolumePositionMatrix |
scale and orient glyph(s) according to tensor eigenvalues and eigenvectors.
vtkDiffusionTensorGlyph is a filter that copies a geometric representation (specified as polygonal data) to every input point. The geometric representation, or glyph, can be scaled and/or rotated according to the tensor at the input point. Scaling and rotation is controlled by the eigenvalues/eigenvectors of the tensor as follows. For each tensor, the eigenvalues (and associated eigenvectors) are sorted to determine the major, medium, and minor eigenvalues/eigenvectors. The major eigenvalue scales the glyph in the x-direction, the medium in the y-direction, and the minor in the z-direction. Then, the glyph is rotated so that the glyph's local x-axis lies along the major eigenvector, y-axis along the medium eigenvector, and z-axis along the minor.
A scale factor is provided to control the amount of scaling. Also, you can turn off scaling completely if desired. The boolean variable ClampScaling controls the maximum scaling (in conjunction with MaxScaleFactor.) This is useful in certain applications where singularities or large order of magnitude differences exist in the eigenvalues.
Another instance variable, ExtractEigenvalues, has been provided to control extraction of eigenvalues/eigenvectors. If this boolean is false, then eigenvalues/eigenvectors are not extracted, and the columns of the tensor are taken as the eigenvectors (norm of column is eigenvalue). This allows additional capability over the vtkGlyph3D object. That is, the glyph can be oriented in three directions instead of one.
To accommodate display in another coordinate system besides the ijk coordinate system of the volume array, two matrices are provided. The VolumePosition matrix positions each tensor in the correct location to account for voxel translation and rotation of the volume. (Scaling is already handled well in vtk ImageData.) The TensorRotationMatrix rotates each tensor into the new coordinate system.
Types of scalars that may be generated from tensors for coloring are defined in vtkDiffusionTensorMathematics.h. If the ColorMode is set to Eigenvalues, then glyphs are colored according to a function of the eigenvalues. These functions are scalar invariants of the diffusion tensor. They are selected by calling ColorGlyphsByFractionalAnisotropy, etc.
Definition at line 71 of file vtkDiffusionTensorGlyph.h.
typedef vtkTensorGlyph vtkDiffusionTensorGlyph::Superclass |
Definition at line 74 of file vtkDiffusionTensorGlyph.h.
|
protected |
|
overrideprotected |
|
protected |
void vtkDiffusionTensorGlyph::ColorGlyphsByFractionalAnisotropy | ( | ) |
void vtkDiffusionTensorGlyph::ColorGlyphsByLinearMeasure | ( | ) |
TO DO: make more of these.
Output one component scalars according to scalar invariants
void vtkDiffusionTensorGlyph::ColorGlyphsByMaxEigenvalue | ( | ) |
void vtkDiffusionTensorGlyph::ColorGlyphsByMidEigenvalue | ( | ) |
void vtkDiffusionTensorGlyph::ColorGlyphsByMinEigenvalue | ( | ) |
void vtkDiffusionTensorGlyph::ColorGlyphsByOrientation | ( | ) |
Output R,G,B scalars according to orientation of max eigenvalue
void vtkDiffusionTensorGlyph::ColorGlyphsByParallelDiffusivity | ( | ) |
void vtkDiffusionTensorGlyph::ColorGlyphsByPerpendicularDiffusivity | ( | ) |
void vtkDiffusionTensorGlyph::ColorGlyphsByPlanarMeasure | ( | ) |
void vtkDiffusionTensorGlyph::ColorGlyphsByRelativeAnisotropy | ( | ) |
void vtkDiffusionTensorGlyph::ColorGlyphsBySphericalMeasure | ( | ) |
void vtkDiffusionTensorGlyph::ColorGlyphsByTrace | ( | ) |
|
virtual |
|
virtual |
|
virtual |
Resolution of the output glyphs in each dimension. It is used only if Dimensions is set > 1 . This parameter is a integer value that sets the number of tensors (points) that are skipped before a glyph is rendered. 1 is the finest level meaning that every input point a glyph is rendered.
|
virtual |
|
virtual |
|
override |
When determining the modified time of the filter, this checks the modified time of the mask input, if it exists.
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
static |
|
virtual |
|
virtual |
If MaskGlyphs is 1 (On), Mask is used to mask tensors.
|
static |
Description Construct object with defaults: Scaling is by eigenvalues on and scale factor is 1000. Glyphs are colored with FA scalar invariant.
|
override |
|
overrideprotected |
|
static |
void vtkDiffusionTensorGlyph::SetDimensionResolution | ( | int | [2] | ) |
|
virtual |
|
virtual |
Input scalars are a binary mask: 0 prevents display of polydata at that point
|
virtual |
|
virtual |
Resolution of the output glyphs. This parameter is a integer value that sets the number of tensors (points) that are skipped before a glyph is rendered. 1 is the finest level meaning that every input point a glyph is rendered.
|
virtual |
Description Transform output glyph orientations by this matrix. Example usage is as follows: 1) If tensors are to be displayed in a coordinate system that is not IJK (array-based), and the whole volume is being rotated, each tensor needs also to be rotated. First find the matrix that positions your volume. This is how the entire volume is positioned, not the matrix that positions an arbitrary reformatted slice. 2) Remove scaling and translation from this matrix; we just need to rotate each tensor. 3) Set TensorRotationMatrix to this rotation matrix.
|
virtual |
Description Transform output glyph locations (not orientations!) by this matrix. Example usage is as follows: 1) Reformat a slice through a tensor volume. 2) Set VolumePositionMatrix to the reformat matrix. This is analogous to setting the actor's UserMatrix to this matrix, which only works for scalar data. 3) The output glyphs are positioned correctly without incorrectly rotating the tensors, as would be the case if positioning the scene's actor with this matrix.
|
protected |
allows skipping some tensors for lower resolution glyphing
Definition at line 182 of file vtkDiffusionTensorGlyph.h.
|
protected |
Definition at line 187 of file vtkDiffusionTensorGlyph.h.
|
protected |
which function of eigenvalues to use for coloring
Definition at line 179 of file vtkDiffusionTensorGlyph.h.
|
protected |
mask glyphs outside of the brain for example, using the Mask
Definition at line 180 of file vtkDiffusionTensorGlyph.h.
|
protected |
Definition at line 178 of file vtkDiffusionTensorGlyph.h.
|
protected |
Definition at line 185 of file vtkDiffusionTensorGlyph.h.
|
protected |
Definition at line 184 of file vtkDiffusionTensorGlyph.h.