|
virtual int | IsA (const char *type) |
|
vtkCheckerboardSplatter * | NewInstance () const |
|
void | PrintSelf (ostream &os, vtkIndent indent) |
|
|
void | SetSampleDimensions (int i, int j, int k) |
|
void | SetSampleDimensions (int dim[3]) |
|
virtual int * | GetSampleDimensions () |
|
virtual void | GetSampleDimensions (int data[3]) |
|
|
virtual void | SetModelBounds (double, double, double, double, double, double) |
|
virtual void | SetModelBounds (double[6]) |
|
virtual double * | GetModelBounds () |
|
virtual void | GetModelBounds (double data[6]) |
|
|
virtual void | SetFootprint (int) |
|
virtual int | GetFootprint () |
|
|
virtual void | SetRadius (double) |
|
virtual double | GetRadius () |
|
|
virtual void | SetScaleFactor (double) |
|
virtual double | GetScaleFactor () |
|
|
virtual void | SetExponentFactor (double) |
|
virtual double | GetExponentFactor () |
|
|
virtual void | SetScalarWarping (int) |
|
virtual int | GetScalarWarping () |
|
virtual void | ScalarWarpingOn () |
|
virtual void | ScalarWarpingOff () |
|
|
virtual void | SetNormalWarping (int) |
|
virtual int | GetNormalWarping () |
|
virtual void | NormalWarpingOn () |
|
virtual void | NormalWarpingOff () |
|
|
virtual void | SetEccentricity (double) |
|
virtual double | GetEccentricity () |
|
|
virtual void | SetAccumulationMode (int) |
|
virtual int | GetAccumulationMode () |
|
void | SetAccumulationModeToMin () |
|
void | SetAccumulationModeToMax () |
|
void | SetAccumulationModeToSum () |
|
const char * | GetAccumulationModeAsString () |
|
|
virtual void | SetOutputScalarType (int) |
|
virtual int | GetOutputScalarType () |
|
void | SetOutputScalarTypeToDouble () |
|
void | SetOutputScalarTypeToFloat () |
|
|
virtual void | SetCapping (int) |
|
virtual int | GetCapping () |
|
virtual void | CappingOn () |
|
virtual void | CappingOff () |
|
|
virtual void | SetCapValue (double) |
|
virtual double | GetCapValue () |
|
|
virtual void | SetNullValue (double) |
|
virtual double | GetNullValue () |
|
|
virtual void | SetMaximumDimension (int) |
|
virtual int | GetMaximumDimension () |
|
|
virtual void | SetParallelSplatCrossover (int) |
|
virtual int | GetParallelSplatCrossover () |
|
|
void | ComputeModelBounds (vtkDataSet *input, vtkImageData *output, vtkInformation *outInfo) |
|
vtkImageAlgorithm * | NewInstance () const |
|
vtkImageData * | GetOutput () |
|
vtkImageData * | GetOutput (int) |
|
virtual void | SetOutput (vtkDataObject *d) |
|
virtual int | ProcessRequest (vtkInformation *, vtkInformationVector **, vtkInformationVector *) |
|
void | SetInputData (vtkDataObject *) |
|
void | SetInputData (int, vtkDataObject *) |
|
vtkDataObject * | GetInput (int port) |
|
vtkDataObject * | GetInput () |
|
vtkImageData * | GetImageDataInput (int port) |
|
virtual void | AddInputData (vtkDataObject *) |
|
virtual void | AddInputData (int, vtkDataObject *) |
|
vtkAlgorithm * | NewInstance () const |
|
int | HasExecutive () |
|
vtkExecutive * | GetExecutive () |
|
virtual void | SetExecutive (vtkExecutive *executive) |
|
virtual int | ModifyRequest (vtkInformation *request, int when) |
|
vtkInformation * | GetInputPortInformation (int port) |
|
vtkInformation * | GetOutputPortInformation (int port) |
|
int | GetNumberOfInputPorts () |
|
int | GetNumberOfOutputPorts () |
|
void | UpdateProgress (double amount) |
|
vtkInformation * | GetInputArrayInformation (int idx) |
|
void | RemoveAllInputs () |
|
vtkDataObject * | GetOutputDataObject (int port) |
|
virtual void | RemoveInputConnection (int port, vtkAlgorithmOutput *input) |
|
virtual void | RemoveInputConnection (int port, int idx) |
|
virtual void | RemoveAllInputConnections (int port) |
|
int | GetNumberOfInputConnections (int port) |
|
int | GetTotalNumberOfInputConnections () |
|
vtkAlgorithmOutput * | GetInputConnection (int port, int index) |
|
vtkAlgorithm * | GetInputAlgorithm (int port, int index, int &algPort) |
|
vtkAlgorithm * | GetInputAlgorithm (int port, int index) |
|
vtkExecutive * | GetInputExecutive (int port, int index) |
|
vtkInformation * | GetInputInformation (int port, int index) |
|
vtkInformation * | GetOutputInformation (int port) |
|
virtual void | UpdateInformation () |
|
virtual void | UpdateDataObject () |
|
virtual void | PropagateUpdateExtent () |
|
virtual void | UpdateWholeExtent () |
|
void | ConvertTotalInputToPortConnection (int ind, int &port, int &conn) |
|
int | SetUpdateExtentToWholeExtent (int port) |
|
int | SetUpdateExtentToWholeExtent () |
|
void | SetUpdateExtent (int port, int extent[6]) |
|
int | ProcessRequest (vtkInformation *request, vtkCollection *inInfo, vtkInformationVector *outInfo) |
|
virtual int | ComputePipelineMTime (vtkInformation *request, vtkInformationVector **inInfoVec, vtkInformationVector *outInfoVec, int requestFromOutputPort, unsigned long *mtime) |
|
virtual vtkInformation * | GetInformation () |
|
virtual void | SetInformation (vtkInformation *) |
|
virtual void | Register (vtkObjectBase *o) |
|
virtual void | UnRegister (vtkObjectBase *o) |
|
virtual void | SetAbortExecute (int) |
|
virtual int | GetAbortExecute () |
|
virtual void | AbortExecuteOn () |
|
virtual void | AbortExecuteOff () |
|
virtual void | SetProgress (double) |
|
virtual double | GetProgress () |
|
void | SetProgressText (const char *ptext) |
|
virtual char * | GetProgressText () |
|
virtual unsigned long | GetErrorCode () |
|
virtual void | SetInputArrayToProcess (int idx, int port, int connection, int fieldAssociation, const char *name) |
|
virtual void | SetInputArrayToProcess (int idx, int port, int connection, int fieldAssociation, int fieldAttributeType) |
|
virtual void | SetInputArrayToProcess (int idx, vtkInformation *info) |
|
virtual void | SetInputArrayToProcess (int idx, int port, int connection, const char *fieldAssociation, const char *attributeTypeorName) |
|
vtkDataObject * | GetInputDataObject (int port, int connection) |
|
virtual void | SetInputConnection (int port, vtkAlgorithmOutput *input) |
|
virtual void | SetInputConnection (vtkAlgorithmOutput *input) |
|
virtual void | AddInputConnection (int port, vtkAlgorithmOutput *input) |
|
virtual void | AddInputConnection (vtkAlgorithmOutput *input) |
|
virtual void | SetInputDataObject (int port, vtkDataObject *data) |
|
virtual void | SetInputDataObject (vtkDataObject *data) |
|
virtual void | AddInputDataObject (int port, vtkDataObject *data) |
|
virtual void | AddInputDataObject (vtkDataObject *data) |
|
vtkAlgorithmOutput * | GetOutputPort (int index) |
|
vtkAlgorithmOutput * | GetOutputPort () |
|
vtkAlgorithm * | GetInputAlgorithm () |
|
vtkExecutive * | GetInputExecutive () |
|
vtkInformation * | GetInputInformation () |
|
virtual void | Update (int port) |
|
virtual void | Update () |
|
virtual void | SetReleaseDataFlag (int) |
|
virtual int | GetReleaseDataFlag () |
|
void | ReleaseDataFlagOn () |
|
void | ReleaseDataFlagOff () |
|
int | UpdateExtentIsEmpty (vtkInformation *pinfo, vtkDataObject *output) |
|
int | UpdateExtentIsEmpty (vtkInformation *pinfo, int extentType) |
|
void | SetUpdateExtent (int port, int piece, int numPieces, int ghostLevel) |
|
void | SetUpdateExtent (int piece, int numPieces, int ghostLevel) |
|
void | SetUpdateExtent (int extent[6]) |
|
int * | GetUpdateExtent () |
|
int * | GetUpdateExtent (int port) |
|
void | GetUpdateExtent (int &x0, int &x1, int &y0, int &y1, int &z0, int &z1) |
|
void | GetUpdateExtent (int port, int &x0, int &x1, int &y0, int &y1, int &z0, int &z1) |
|
void | GetUpdateExtent (int extent[6]) |
|
void | GetUpdateExtent (int port, int extent[6]) |
|
int | GetUpdatePiece () |
|
int | GetUpdatePiece (int port) |
|
int | GetUpdateNumberOfPieces () |
|
int | GetUpdateNumberOfPieces (int port) |
|
int | GetUpdateGhostLevel () |
|
int | GetUpdateGhostLevel (int port) |
|
void | SetProgressObserver (vtkProgressObserver *) |
|
virtual vtkProgressObserver * | GetProgressObserver () |
|
vtkObject * | NewInstance () const |
|
virtual void | DebugOn () |
|
virtual void | DebugOff () |
|
bool | GetDebug () |
|
void | SetDebug (bool debugFlag) |
|
virtual void | Modified () |
|
virtual unsigned long | GetMTime () |
|
unsigned long | AddObserver (unsigned long event, vtkCommand *, float priority=0.0f) |
|
unsigned long | AddObserver (const char *event, vtkCommand *, float priority=0.0f) |
|
vtkCommand * | GetCommand (unsigned long tag) |
|
void | RemoveObserver (vtkCommand *) |
|
void | RemoveObservers (unsigned long event, vtkCommand *) |
|
void | RemoveObservers (const char *event, vtkCommand *) |
|
int | HasObserver (unsigned long event, vtkCommand *) |
|
int | HasObserver (const char *event, vtkCommand *) |
|
void | RemoveObserver (unsigned long tag) |
|
void | RemoveObservers (unsigned long event) |
|
void | RemoveObservers (const char *event) |
|
void | RemoveAllObservers () |
|
int | HasObserver (unsigned long event) |
|
int | HasObserver (const char *event) |
|
template<class U , class T > |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(), float priority=0.0f) |
|
template<class U , class T > |
unsigned long | AddObserver (unsigned long event, U observer, void(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
|
template<class U , class T > |
unsigned long | AddObserver (unsigned long event, U observer, bool(T::*callback)(vtkObject *, unsigned long, void *), float priority=0.0f) |
|
int | InvokeEvent (unsigned long event, void *callData) |
|
int | InvokeEvent (const char *event, void *callData) |
|
int | InvokeEvent (unsigned long event) |
|
int | InvokeEvent (const char *event) |
|
const char * | GetClassName () const |
|
virtual void | Delete () |
|
virtual void | FastDelete () |
|
void | Print (ostream &os) |
|
void | SetReferenceCount (int) |
|
void | PrintRevisions (ostream &) |
|
virtual void | PrintHeader (ostream &os, vtkIndent indent) |
|
virtual void | PrintTrailer (ostream &os, vtkIndent indent) |
|
int | GetReferenceCount () |
|
|
virtual vtkObjectBase * | NewInstanceInternal () const |
|
| vtkCheckerboardSplatter () |
|
| ~vtkCheckerboardSplatter () |
|
virtual int | FillInputPortInformation (int port, vtkInformation *info) |
|
virtual int | RequestInformation (vtkInformation *, vtkInformationVector **, vtkInformationVector *) |
|
virtual int | RequestData (vtkInformation *, vtkInformationVector **, vtkInformationVector *) |
|
| vtkImageAlgorithm () |
|
| ~vtkImageAlgorithm () |
|
virtual int | RequestUpdateExtent (vtkInformation *, vtkInformationVector **, vtkInformationVector *) |
|
virtual void | CopyInputArrayAttributesToOutput (vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) |
|
virtual void | ExecuteDataWithInformation (vtkDataObject *output, vtkInformation *outInfo) |
|
virtual void | ExecuteData (vtkDataObject *output) |
|
virtual void | Execute () |
|
virtual void | AllocateOutputData (vtkImageData *out, vtkInformation *outInfo, int *uExtent) |
|
virtual vtkImageData * | AllocateOutputData (vtkDataObject *out, vtkInformation *outInfo) |
|
virtual void | CopyAttributeData (vtkImageData *in, vtkImageData *out, vtkInformationVector **inputVector) |
|
virtual int | FillOutputPortInformation (int port, vtkInformation *info) |
|
| vtkAlgorithm () |
|
| ~vtkAlgorithm () |
|
virtual void | SetNumberOfInputPorts (int n) |
|
virtual void | SetNumberOfOutputPorts (int n) |
|
int | InputPortIndexInRange (int index, const char *action) |
|
int | OutputPortIndexInRange (int index, const char *action) |
|
int | GetInputArrayAssociation (int idx, vtkInformationVector **inputVector) |
|
virtual vtkExecutive * | CreateDefaultExecutive () |
|
virtual void | ReportReferences (vtkGarbageCollector *) |
|
virtual void | SetNumberOfInputConnections (int port, int n) |
|
int | GetInputArrayAssociation (int idx, int connection, vtkInformationVector **inputVector) |
|
int | GetInputArrayAssociation (int idx, vtkDataObject *input) |
|
vtkDataArray * | GetInputArrayToProcess (int idx, vtkInformationVector **inputVector) |
|
vtkDataArray * | GetInputArrayToProcess (int idx, vtkInformationVector **inputVector, int &association) |
|
vtkDataArray * | GetInputArrayToProcess (int idx, int connection, vtkInformationVector **inputVector) |
|
vtkDataArray * | GetInputArrayToProcess (int idx, int connection, vtkInformationVector **inputVector, int &association) |
|
vtkDataArray * | GetInputArrayToProcess (int idx, vtkDataObject *input) |
|
vtkDataArray * | GetInputArrayToProcess (int idx, vtkDataObject *input, int &association) |
|
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, vtkInformationVector **inputVector) |
|
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, vtkInformationVector **inputVector, int &association) |
|
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, int connection, vtkInformationVector **inputVector) |
|
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, int connection, vtkInformationVector **inputVector, int &association) |
|
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, vtkDataObject *input) |
|
vtkAbstractArray * | GetInputAbstractArrayToProcess (int idx, vtkDataObject *input, int &association) |
|
vtkInformation * | GetInputArrayFieldInformation (int idx, vtkInformationVector **inputVector) |
|
virtual void | SetNthInputConnection (int port, int index, vtkAlgorithmOutput *input) |
|
void | SetInputDataInternal (int port, vtkDataObject *input) |
|
void | AddInputDataInternal (int port, vtkDataObject *input) |
|
virtual void | SetErrorCode (unsigned long) |
|
| vtkObject () |
|
virtual | ~vtkObject () |
|
virtual void | RegisterInternal (vtkObjectBase *, int check) |
|
virtual void | UnRegisterInternal (vtkObjectBase *, int check) |
|
void | InternalGrabFocus (vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL) |
|
void | InternalReleaseFocus () |
|
| vtkObjectBase () |
|
virtual | ~vtkObjectBase () |
|
virtual void | CollectRevisions (ostream &) |
|
| vtkObjectBase (const vtkObjectBase &) |
|
void | operator= (const vtkObjectBase &) |
|
splat points into a volume with an elliptical, Gaussian distribution
vtkCheckerboardSplatter is a filter that injects input points into a structured points (volume) dataset using a multithreaded 8-way checkerboard approach. It produces a scalar field of a specified type. 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). This algorithm is designed for scalability through multithreading.
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 point 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.
This class makes use of vtkSMPTools to implement a parallel, shared-memory implementation. Hence performance will be significantly improved if VTK is built with VTK_SMP_IMPLEMENTATION_TYPE set to something other than "Sequential" (typically TBB). For example, on a standard laptop with four threads it is common to see a >10x speedup as compared to the serial version of vtkGaussianSplatter.
In summary, the algorithm operates by dividing the volume into a 3D checkerboard, where the squares of the checkerboard overlay voxels in the volume. The checkerboard overlay is designed as a function of the splat footprint, so that when splatting occurs in a group (or color) of checkerboard squares, the splat operation will not cause write contention as the splatting proceeds in parallel. There are eight colors in this checkerboard (like an octree) and parallel splatting occurs simultaneously in one of the eight colors (e.g., octants). A single splat operation (across the given 3D footprint) may also be parallelized if the splat is large enough.
- Warning
- The input to this filter is of type vtkPointSet. Currently only real types (e.g., float, double) are supported as input, but this could easily be extended to other types. The output type is limited to real types as well.
-
Some voxels may never receive a contribution during the splatting process. The final value of these points can be specified with the "NullValue" instance variable. Note that NullValue is also the initial value of the output voxel values and will affect the accumulation process.
-
While this class is very similar to vtkGaussianSplatter, it does produce slightly different output in most cases (due to the way the footprint is computed).
- See also
- vtkShepardMethod vtkGaussianSplatter
- Tests:
- vtkCheckerboardSplatter (Tests)
Definition at line 110 of file vtkCheckerboardSplatter.h.