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 "vtkImagingGeneralModule.h" // For export macro 00030 #include "vtkThreadedImageAlgorithm.h" 00031 00032 class VTKIMAGINGGENERAL_EXPORT vtkImageGaussianSmooth : public vtkThreadedImageAlgorithm 00033 { 00034 public: 00035 vtkTypeMacro(vtkImageGaussianSmooth,vtkThreadedImageAlgorithm); 00036 void PrintSelf(ostream& os, vtkIndent indent); 00037 00041 static vtkImageGaussianSmooth *New(); 00042 00043 00045 00046 vtkSetVector3Macro(StandardDeviations, double); 00047 void SetStandardDeviation(double std) 00048 {this->SetStandardDeviations(std,std,std);} 00049 void SetStandardDeviations(double a,double b) 00050 {this->SetStandardDeviations(a,b,0.0);} 00051 vtkGetVector3Macro(StandardDeviations, double); 00053 00055 00057 void SetStandardDeviation(double a,double b) 00058 {this->SetStandardDeviations(a,b,0.0);} 00059 void SetStandardDeviation(double a,double b,double c) 00060 {this->SetStandardDeviations(a,b,c);} 00062 00064 00067 vtkSetVector3Macro(RadiusFactors, double); 00068 void SetRadiusFactors(double f, double f2) { 00069 this->SetRadiusFactors(f,f2,1.5);} 00070 void SetRadiusFactor(double f) {this->SetRadiusFactors(f, f, f);} 00071 vtkGetVector3Macro(RadiusFactors, double); 00073 00075 00077 vtkSetMacro(Dimensionality, int); 00078 vtkGetMacro(Dimensionality, int); 00080 00081 protected: 00082 vtkImageGaussianSmooth(); 00083 ~vtkImageGaussianSmooth(); 00084 00085 int Dimensionality; 00086 double StandardDeviations[3]; 00087 double RadiusFactors[3]; 00088 00089 void ComputeKernel(double *kernel, int min, int max, double std); 00090 virtual int RequestUpdateExtent (vtkInformation *, vtkInformationVector **, vtkInformationVector *); 00091 void InternalRequestUpdateExtent(int *, int*); 00092 void ExecuteAxis(int axis, vtkImageData *inData, int inExt[6], 00093 vtkImageData *outData, int outExt[6], 00094 int *pcycle, int target, int *pcount, int total, 00095 vtkInformation *inInfo); 00096 void ThreadedRequestData(vtkInformation *request, 00097 vtkInformationVector **inputVector, 00098 vtkInformationVector *outputVector, 00099 vtkImageData ***inData, vtkImageData **outData, 00100 int outExt[6], int id); 00101 00102 private: 00103 vtkImageGaussianSmooth(const vtkImageGaussianSmooth&); // Not implemented. 00104 void operator=(const vtkImageGaussianSmooth&); // Not implemented. 00105 }; 00106 00107 #endif 00108 00109 00110 00111 00112 00113 00114 00115 00116 00117