00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkImageSeparableConvolution.h,v $ 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 =========================================================================*/ 00031 #ifndef __vtkImageSeparableConvolution_h 00032 #define __vtkImageSeparableConvolution_h 00033 00034 00035 #include "vtkImageDecomposeFilter.h" 00036 00037 class vtkFloatArray; 00038 00039 class VTK_IMAGING_EXPORT vtkImageSeparableConvolution : public vtkImageDecomposeFilter 00040 { 00041 public: 00042 static vtkImageSeparableConvolution *New(); 00043 vtkTypeRevisionMacro(vtkImageSeparableConvolution,vtkImageDecomposeFilter); 00044 00045 00046 // Set the X convolution kernel, a null value indicates no convolution to 00047 // be done. The kernel must be of odd length 00048 virtual void SetXKernel(vtkFloatArray*); 00049 vtkGetObjectMacro ( XKernel, vtkFloatArray ); 00050 00051 // Set the Y convolution kernel, a null value indicates no convolution to 00052 // be done The kernel must be of odd length 00053 virtual void SetYKernel(vtkFloatArray*); 00054 vtkGetObjectMacro ( YKernel, vtkFloatArray ); 00055 00056 // Set the Z convolution kernel, a null value indicates no convolution to 00057 // be done The kernel must be of odd length 00058 virtual void SetZKernel(vtkFloatArray*); 00059 vtkGetObjectMacro ( ZKernel, vtkFloatArray ); 00060 00061 void PrintSelf(ostream& os, vtkIndent indent); 00062 00065 unsigned long int GetMTime(); 00066 00067 protected: 00068 vtkImageSeparableConvolution(); 00069 ~vtkImageSeparableConvolution(); 00070 00071 vtkFloatArray* XKernel; 00072 vtkFloatArray* YKernel; 00073 vtkFloatArray* ZKernel; 00074 00075 virtual int IterativeRequestData(vtkInformation*, 00076 vtkInformationVector**, 00077 vtkInformationVector*); 00078 00079 virtual int IterativeRequestInformation(vtkInformation* in, 00080 vtkInformation* out); 00081 virtual int IterativeRequestUpdateExtent(vtkInformation* in, 00082 vtkInformation* out); 00083 00084 private: 00085 vtkImageSeparableConvolution(const vtkImageSeparableConvolution&); // Not implemented. 00086 void operator=(const vtkImageSeparableConvolution&); // Not implemented. 00087 }; 00088 00089 #endif 00090 00091 00092 00093 00094 00095 00096 00097 00098 00099