VTK
|
splat points into a volume with an elliptical, Gaussian distribution More...
#include <vtkGaussianSplatter.h>
splat points into a volume with an elliptical, Gaussian distribution
vtkGaussianSplatter is a filter that injects input points into a structured points (volume) dataset. As each point is injected, it "splats" or distributes values to nearby voxels. Data is distributed using an elliptical, Gaussian distribution function. The distribution function is modified using scalar values (expands distribution) or normals (creates ellipsoidal distribution rather than spherical).
In general, the Gaussian distribution function f(x) around a given splat point p is given by
f(x) = ScaleFactor * exp( ExponentFactor*((r/Radius)**2) )
where x is the current voxel sample point; r is the distance |x-p| ExponentFactor <= 0.0, and ScaleFactor can be multiplied by the scalar value of the point p that is currently being splatted.
If points normals are present (and NormalWarping is on), then the splat function becomes elliptical (as compared to the spherical one described by the previous equation). The Gaussian distribution function then becomes:
f(x) = ScaleFactor * exp( ExponentFactor*( ((rxy/E)**2 + z**2)/R**2) )
where E is a user-defined eccentricity factor that controls the elliptical shape of the splat; z is the distance of the current voxel sample point along normal N; and rxy is the distance of x in the direction prependicular to N.
This class is typically used to convert point-valued distributions into a volume representation. The volume is then usually iso-surfaced or volume rendered to generate a visualization. It can be used to create surfaces from point distributions, or to create structure (i.e., topology) when none exists.
Definition at line 86 of file vtkGaussianSplatter.h.
Reimplemented from vtkImageAlgorithm.
Definition at line 89 of file vtkGaussianSplatter.h.
vtkGaussianSplatter::vtkGaussianSplatter | ( | ) | [protected] |
vtkGaussianSplatter::~vtkGaussianSplatter | ( | ) | [inline, protected] |
Definition at line 215 of file vtkGaussianSplatter.h.
static int vtkGaussianSplatter::IsTypeOf | ( | const char * | name | ) | [static] |
Return 1 if this class type is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.
Reimplemented from vtkImageAlgorithm.
virtual int vtkGaussianSplatter::IsA | ( | const char * | name | ) | [virtual] |
Return 1 if this class is the same type of (or a subclass of) the named class. Returns 0 otherwise. This method works in combination with vtkTypeMacro found in vtkSetGet.h.
Reimplemented from vtkImageAlgorithm.
static vtkGaussianSplatter* vtkGaussianSplatter::SafeDownCast | ( | vtkObjectBase * | o | ) | [static] |
Reimplemented from vtkImageAlgorithm.
virtual vtkObjectBase* vtkGaussianSplatter::NewInstanceInternal | ( | ) | const [protected, virtual] |
Reimplemented from vtkImageAlgorithm.
Reimplemented from vtkImageAlgorithm.
void vtkGaussianSplatter::PrintSelf | ( | ostream & | os, |
vtkIndent | indent | ||
) | [virtual] |
Methods invoked by print to print information about the object including superclasses. Typically not called by the user (use Print() instead) but used in the hierarchical print process to combine the output of several classes.
Reimplemented from vtkImageAlgorithm.
static vtkGaussianSplatter* vtkGaussianSplatter::New | ( | ) | [static] |
Construct object with dimensions=(50,50,50); automatic computation of bounds; a splat radius of 0.1; an exponent factor of -5; and normal and scalar warping turned on.
Reimplemented from vtkAlgorithm.
void vtkGaussianSplatter::SetSampleDimensions | ( | int | i, |
int | j, | ||
int | k | ||
) |
Set / get the dimensions of the sampling structured point set. Higher values produce better results but are much slower.
void vtkGaussianSplatter::SetSampleDimensions | ( | int | dim[3] | ) |
Set / get the dimensions of the sampling structured point set. Higher values produce better results but are much slower.
virtual int* vtkGaussianSplatter::GetSampleDimensions | ( | ) | [virtual] |
Set / get the dimensions of the sampling structured point set. Higher values produce better results but are much slower.
virtual void vtkGaussianSplatter::GetSampleDimensions | ( | int | data[3] | ) | [virtual] |
Set / get the dimensions of the sampling structured point set. Higher values produce better results but are much slower.
virtual void vtkGaussianSplatter::SetModelBounds | ( | double | , |
double | , | ||
double | , | ||
double | , | ||
double | , | ||
double | |||
) | [virtual] |
Set / get the (xmin,xmax, ymin,ymax, zmin,zmax) bounding box in which the sampling is performed. If any of the (min,max) bounds values are min >= max, then the bounds will be computed automatically from the input data. Otherwise, the user-specified bounds will be used.
virtual void vtkGaussianSplatter::SetModelBounds | ( | double | [6] | ) | [virtual] |
Set / get the (xmin,xmax, ymin,ymax, zmin,zmax) bounding box in which the sampling is performed. If any of the (min,max) bounds values are min >= max, then the bounds will be computed automatically from the input data. Otherwise, the user-specified bounds will be used.
virtual double* vtkGaussianSplatter::GetModelBounds | ( | ) | [virtual] |
Set / get the (xmin,xmax, ymin,ymax, zmin,zmax) bounding box in which the sampling is performed. If any of the (min,max) bounds values are min >= max, then the bounds will be computed automatically from the input data. Otherwise, the user-specified bounds will be used.
virtual void vtkGaussianSplatter::GetModelBounds | ( | double | data[6] | ) | [virtual] |
Set / get the (xmin,xmax, ymin,ymax, zmin,zmax) bounding box in which the sampling is performed. If any of the (min,max) bounds values are min >= max, then the bounds will be computed automatically from the input data. Otherwise, the user-specified bounds will be used.
virtual void vtkGaussianSplatter::SetRadius | ( | double | ) | [virtual] |
Set / get the radius of propagation of the splat. This value is expressed as a percentage of the length of the longest side of the sampling volume. Smaller numbers greatly reduce execution time.
virtual double vtkGaussianSplatter::GetRadius | ( | ) | [virtual] |
Set / get the radius of propagation of the splat. This value is expressed as a percentage of the length of the longest side of the sampling volume. Smaller numbers greatly reduce execution time.
virtual void vtkGaussianSplatter::SetScaleFactor | ( | double | ) | [virtual] |
Multiply Gaussian splat distribution by this value. If ScalarWarping is on, then the Scalar value will be multiplied by the ScaleFactor times the Gaussian function.
virtual double vtkGaussianSplatter::GetScaleFactor | ( | ) | [virtual] |
Multiply Gaussian splat distribution by this value. If ScalarWarping is on, then the Scalar value will be multiplied by the ScaleFactor times the Gaussian function.
virtual void vtkGaussianSplatter::SetExponentFactor | ( | double | ) | [virtual] |
Set / get the sharpness of decay of the splats. This is the exponent constant in the Gaussian equation. Normally this is a negative value.
virtual double vtkGaussianSplatter::GetExponentFactor | ( | ) | [virtual] |
Set / get the sharpness of decay of the splats. This is the exponent constant in the Gaussian equation. Normally this is a negative value.
virtual void vtkGaussianSplatter::SetNormalWarping | ( | int | ) | [virtual] |
Turn on/off the generation of elliptical splats. If normal warping is on, then the input normals affect the distribution of the splat. This boolean is used in combination with the Eccentricity ivar.
virtual int vtkGaussianSplatter::GetNormalWarping | ( | ) | [virtual] |
Turn on/off the generation of elliptical splats. If normal warping is on, then the input normals affect the distribution of the splat. This boolean is used in combination with the Eccentricity ivar.
virtual void vtkGaussianSplatter::NormalWarpingOn | ( | ) | [virtual] |
Turn on/off the generation of elliptical splats. If normal warping is on, then the input normals affect the distribution of the splat. This boolean is used in combination with the Eccentricity ivar.
virtual void vtkGaussianSplatter::NormalWarpingOff | ( | ) | [virtual] |
Turn on/off the generation of elliptical splats. If normal warping is on, then the input normals affect the distribution of the splat. This boolean is used in combination with the Eccentricity ivar.
virtual void vtkGaussianSplatter::SetEccentricity | ( | double | ) | [virtual] |
Control the shape of elliptical splatting. Eccentricity is the ratio of the major axis (aligned along normal) to the minor (axes) aligned along other two axes. So Eccentricity > 1 creates needles with the long axis in the direction of the normal; Eccentricity<1 creates pancakes perpendicular to the normal vector.
virtual double vtkGaussianSplatter::GetEccentricity | ( | ) | [virtual] |
Control the shape of elliptical splatting. Eccentricity is the ratio of the major axis (aligned along normal) to the minor (axes) aligned along other two axes. So Eccentricity > 1 creates needles with the long axis in the direction of the normal; Eccentricity<1 creates pancakes perpendicular to the normal vector.
virtual void vtkGaussianSplatter::SetScalarWarping | ( | int | ) | [virtual] |
Turn on/off the scaling of splats by scalar value.
virtual int vtkGaussianSplatter::GetScalarWarping | ( | ) | [virtual] |
Turn on/off the scaling of splats by scalar value.
virtual void vtkGaussianSplatter::ScalarWarpingOn | ( | ) | [virtual] |
Turn on/off the scaling of splats by scalar value.
virtual void vtkGaussianSplatter::ScalarWarpingOff | ( | ) | [virtual] |
Turn on/off the scaling of splats by scalar value.
virtual void vtkGaussianSplatter::SetCapping | ( | int | ) | [virtual] |
Turn on/off the capping of the outer boundary of the volume to a specified cap value. This can be used to close surfaces (after iso-surfacing) and create other effects.
virtual int vtkGaussianSplatter::GetCapping | ( | ) | [virtual] |
Turn on/off the capping of the outer boundary of the volume to a specified cap value. This can be used to close surfaces (after iso-surfacing) and create other effects.
virtual void vtkGaussianSplatter::CappingOn | ( | ) | [virtual] |
Turn on/off the capping of the outer boundary of the volume to a specified cap value. This can be used to close surfaces (after iso-surfacing) and create other effects.
virtual void vtkGaussianSplatter::CappingOff | ( | ) | [virtual] |
Turn on/off the capping of the outer boundary of the volume to a specified cap value. This can be used to close surfaces (after iso-surfacing) and create other effects.
virtual void vtkGaussianSplatter::SetCapValue | ( | double | ) | [virtual] |
Specify the cap value to use. (This instance variable only has effect if the ivar Capping is on.)
virtual double vtkGaussianSplatter::GetCapValue | ( | ) | [virtual] |
Specify the cap value to use. (This instance variable only has effect if the ivar Capping is on.)
virtual void vtkGaussianSplatter::SetAccumulationMode | ( | int | ) | [virtual] |
Specify the scalar accumulation mode. This mode expresses how scalar values are combined when splats are overlapped. The Max mode acts like a set union operation and is the most commonly used; the Min mode acts like a set intersection, and the sum is just weird.
virtual int vtkGaussianSplatter::GetAccumulationMode | ( | ) | [virtual] |
Specify the scalar accumulation mode. This mode expresses how scalar values are combined when splats are overlapped. The Max mode acts like a set union operation and is the most commonly used; the Min mode acts like a set intersection, and the sum is just weird.
void vtkGaussianSplatter::SetAccumulationModeToMin | ( | ) | [inline] |
Specify the scalar accumulation mode. This mode expresses how scalar values are combined when splats are overlapped. The Max mode acts like a set union operation and is the most commonly used; the Min mode acts like a set intersection, and the sum is just weird.
Definition at line 187 of file vtkGaussianSplatter.h.
void vtkGaussianSplatter::SetAccumulationModeToMax | ( | ) | [inline] |
Specify the scalar accumulation mode. This mode expresses how scalar values are combined when splats are overlapped. The Max mode acts like a set union operation and is the most commonly used; the Min mode acts like a set intersection, and the sum is just weird.
Definition at line 189 of file vtkGaussianSplatter.h.
void vtkGaussianSplatter::SetAccumulationModeToSum | ( | ) | [inline] |
Specify the scalar accumulation mode. This mode expresses how scalar values are combined when splats are overlapped. The Max mode acts like a set union operation and is the most commonly used; the Min mode acts like a set intersection, and the sum is just weird.
Definition at line 191 of file vtkGaussianSplatter.h.
const char* vtkGaussianSplatter::GetAccumulationModeAsString | ( | ) |
Specify the scalar accumulation mode. This mode expresses how scalar values are combined when splats are overlapped. The Max mode acts like a set union operation and is the most commonly used; the Min mode acts like a set intersection, and the sum is just weird.
virtual void vtkGaussianSplatter::SetNullValue | ( | double | ) | [virtual] |
Set the Null value for output points not receiving a contribution from the input points. (This is the initial value of the voxel samples.)
virtual double vtkGaussianSplatter::GetNullValue | ( | ) | [virtual] |
Set the Null value for output points not receiving a contribution from the input points. (This is the initial value of the voxel samples.)
void vtkGaussianSplatter::ComputeModelBounds | ( | vtkDataSet * | input, |
vtkImageData * | output, | ||
vtkInformation * | outInfo | ||
) |
Compute the size of the sample bounding box automatically from the input data. This is an internal helper function.
void vtkGaussianSplatter::ComputeModelBounds | ( | vtkCompositeDataSet * | input, |
vtkImageData * | output, | ||
vtkInformation * | outInfo | ||
) |
Compute the size of the sample bounding box automatically from the input data. This is an internal helper function.
virtual int vtkGaussianSplatter::FillInputPortInformation | ( | int | port, |
vtkInformation * | info | ||
) | [protected, virtual] |
These method should be reimplemented by subclasses that have more than a single input or single output. See vtkAlgorithm for more information.
Reimplemented from vtkImageAlgorithm.
virtual int vtkGaussianSplatter::RequestInformation | ( | vtkInformation * | request, |
vtkInformationVector ** | inputVector, | ||
vtkInformationVector * | outputVector | ||
) | [protected, virtual] |
Subclasses can reimplement this method to collect information from their inputs and set information for their outputs.
Reimplemented from vtkImageAlgorithm.
virtual int vtkGaussianSplatter::RequestData | ( | vtkInformation * | request, |
vtkInformationVector ** | inputVector, | ||
vtkInformationVector * | outputVector | ||
) | [protected, virtual] |
This is called in response to a REQUEST_DATA request from the executive. Subclasses should override either this method or the ExecuteDataWithInformation method in order to generate data for their outputs. For images, the output arrays will already be allocated, so all that is necessary is to fill in the voxel values.
Reimplemented from vtkImageAlgorithm.
void vtkGaussianSplatter::Cap | ( | vtkDoubleArray * | s | ) | [protected] |
double vtkGaussianSplatter::Gaussian | ( | double | x[3] | ) | [protected] |
double vtkGaussianSplatter::EccentricGaussian | ( | double | x[3] | ) | [protected] |
double vtkGaussianSplatter::ScalarSampling | ( | double | s | ) | [inline, protected] |
Definition at line 240 of file vtkGaussianSplatter.h.
double vtkGaussianSplatter::PositionSampling | ( | double | ) | [inline, protected] |
Definition at line 242 of file vtkGaussianSplatter.h.
void vtkGaussianSplatter::SetScalar | ( | int | idx, |
double | dist2, | ||
vtkDoubleArray * | newScalars | ||
) | [protected] |
int vtkGaussianSplatter::SampleDimensions[3] [protected] |
Definition at line 226 of file vtkGaussianSplatter.h.
double vtkGaussianSplatter::Radius [protected] |
Definition at line 227 of file vtkGaussianSplatter.h.
double vtkGaussianSplatter::ExponentFactor [protected] |
Definition at line 228 of file vtkGaussianSplatter.h.
double vtkGaussianSplatter::ModelBounds[6] [protected] |
Definition at line 229 of file vtkGaussianSplatter.h.
int vtkGaussianSplatter::NormalWarping [protected] |
Definition at line 230 of file vtkGaussianSplatter.h.
double vtkGaussianSplatter::Eccentricity [protected] |
Definition at line 231 of file vtkGaussianSplatter.h.
int vtkGaussianSplatter::ScalarWarping [protected] |
Definition at line 232 of file vtkGaussianSplatter.h.
double vtkGaussianSplatter::ScaleFactor [protected] |
Definition at line 233 of file vtkGaussianSplatter.h.
int vtkGaussianSplatter::Capping [protected] |
Definition at line 234 of file vtkGaussianSplatter.h.
double vtkGaussianSplatter::CapValue [protected] |
Definition at line 235 of file vtkGaussianSplatter.h.
int vtkGaussianSplatter::AccumulationMode [protected] |
Definition at line 236 of file vtkGaussianSplatter.h.