Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

Imaging/vtkImageSeparableConvolution.h

Go to the documentation of this file.
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 be done.
00047   // 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 be done
00052   // 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 be done
00057   // 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   // void AllocateOutputScalars(vtkImageData *outData);
00076   void ComputeInputUpdateExtent(int inExt[6], int outExt[6]);
00077   void IterativeExecuteData(vtkImageData *inData, vtkImageData *outData);
00078   void ExecuteInformation(vtkImageData *input, vtkImageData *output);
00079   void ExecuteInformation()
00080     {this->vtkImageIterateFilter::ExecuteInformation();}
00081 
00082 
00083   //void AllocateOutputScalars(vtkImageData *outData);
00084 
00085   
00086 private:
00087   vtkImageSeparableConvolution(const vtkImageSeparableConvolution&);  // Not implemented.
00088   void operator=(const vtkImageSeparableConvolution&);  // Not implemented.
00089 };
00090 
00091 #endif
00092 
00093 
00094 
00095 
00096 
00097 
00098 
00099 
00100 
00101