VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkImageGaussianSmooth.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00025 #ifndef __vtkImageGaussianSmooth_h 00026 #define __vtkImageGaussianSmooth_h 00027 00028 00029 #include "vtkThreadedImageAlgorithm.h" 00030 00031 class VTK_IMAGING_EXPORT vtkImageGaussianSmooth : public vtkThreadedImageAlgorithm 00032 { 00033 public: 00034 vtkTypeMacro(vtkImageGaussianSmooth,vtkThreadedImageAlgorithm); 00035 void PrintSelf(ostream& os, vtkIndent indent); 00036 00040 static vtkImageGaussianSmooth *New(); 00041 00042 00044 00045 vtkSetVector3Macro(StandardDeviations, double); 00046 void SetStandardDeviation(double std) 00047 {this->SetStandardDeviations(std,std,std);} 00048 void SetStandardDeviations(double a,double b) 00049 {this->SetStandardDeviations(a,b,0.0);} 00050 vtkGetVector3Macro(StandardDeviations, double); 00052 00054 00056 void SetStandardDeviation(double a,double b) 00057 {this->SetStandardDeviations(a,b,0.0);} 00058 void SetStandardDeviation(double a,double b,double c) 00059 {this->SetStandardDeviations(a,b,c);} 00061 00063 00066 vtkSetVector3Macro(RadiusFactors, double); 00067 void SetRadiusFactors(double f, double f2) { 00068 this->SetRadiusFactors(f,f2,1.5);} 00069 void SetRadiusFactor(double f) {this->SetRadiusFactors(f, f, f);} 00070 vtkGetVector3Macro(RadiusFactors, double); 00072 00074 00076 vtkSetMacro(Dimensionality, int); 00077 vtkGetMacro(Dimensionality, int); 00079 00080 protected: 00081 vtkImageGaussianSmooth(); 00082 ~vtkImageGaussianSmooth(); 00083 00084 int Dimensionality; 00085 double StandardDeviations[3]; 00086 double RadiusFactors[3]; 00087 00088 void ComputeKernel(double *kernel, int min, int max, double std); 00089 virtual int RequestUpdateExtent (vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00090 void InternalRequestUpdateExtent(int *, int*); 00091 void ExecuteAxis(int axis, vtkImageData *inData, int inExt[6], 00092 vtkImageData *outData, int outExt[6], 00093 int *pcycle, int target, int *pcount, int total, 00094 vtkInformation *inInfo); 00095 void ThreadedRequestData(vtkInformation *request, 00096 vtkInformationVector **inputVector, 00097 vtkInformationVector *outputVector, 00098 vtkImageData ***inData, vtkImageData **outData, 00099 int outExt[6], int id); 00100 00101 private: 00102 vtkImageGaussianSmooth(const vtkImageGaussianSmooth&); // Not implemented. 00103 void operator=(const vtkImageGaussianSmooth&); // Not implemented. 00104 }; 00105 00106 #endif 00107 00108 00109 00110 00111 00112 00113 00114 00115 00116