C:/cmcintos/defOrgs/examples/vesselCrawler/source/Sense_HessianBased.h

00001 #if defined (_MSC_VER) && (_MSC_VER >= 1000)
00002 #pragma once
00003 #endif
00004 #ifndef _Sense_HessianBased
00005 #define _Sense_HessianBased
00006 
00007 #include "itkGradientMagnitudeRecursiveGaussianImageFilter.h"
00008 #include "itkGradientRecursiveGaussianImageFilter.h"
00009 #include "itkImageFileWriter.h"
00010 #include "Sensor.h"
00011 namespace mial
00012 {
00013 
00015 
00026         template<class DataType, class TInputImage, class TGradientImage, int nDims>
00027         class Sense_HessianBased: public Sensor
00028         {
00029                 //****************************************************
00030                 //Member variables
00031                 //****************************************************
00032         public:
00033 
00034                 typedef TInputImage                                                                     InputImageType;
00035                 typedef typename InputImageType::ConstPointer           InputImagePointer;
00036 
00037                 typedef itk::Image<DataType,nDims>                                      OutputImageType;
00038                 typedef typename OutputImageType::ConstPointer          OutputImagePointer;
00039 
00040 
00041                 typedef TGradientImage                                                          GradientImageType;
00042                 typedef typename GradientImageType::Pointer                     GradientImagePointer;
00043 
00044                 struct In: public Sensor::sensorIn{
00045                         //Sensor::sensorIn baseIn;//Import standards
00046                         //Define all custom here
00047                         InputImagePointer imageIn;
00048                         DataType sigma;
00049                 };
00050                 typedef In sensorIn; 
00051                 struct Out: public Sensor::sensorOut{
00052                         //Sensor::sensorOut baseOut;//Import standards
00053                         //Define all custom here
00054                         GradientImagePointer imageOut;
00055 
00056                         //Testing
00057                         //InputImagePointer imageOut;
00058                 };
00059                 typedef Out sensorOut;
00060         private:
00061 
00062                 //Define all variables specific to this sensor here
00063                 typedef typename itk::GradientMagnitudeRecursiveGaussianImageFilter<InputImageType, OutputImageType> MagnitudeFilterType;
00064                 typedef typename itk::GradientRecursiveGaussianImageFilter<OutputImageType, GradientImageType> GradientFilterType;
00065 
00066                 //Testing
00067                 //typedef typename itk::GradientMagnitudeRecursiveGaussianImageFilter<InputImageType, InputImageType> MagnitudeFilterType;
00068 
00069                 typename MagnitudeFilterType::Pointer magnitudeFilter;
00070                 typename GradientFilterType::Pointer gradientFilter;
00071 
00072                 sensorOut sensorOutput;
00073 
00074 
00075                 //****************************************************
00076                 //Member functions
00077                 //****************************************************
00078         public:
00079 
00080                 Sense_HessianBased();//default constructor
00081 
00082                 //Run the sensor
00083                 virtual void run(void * i);
00084 
00085 
00086                 //Overide in derived class if custom sensor output desired
00087                 virtual void * getOuput(){ return (void *)&sensorOutput;};
00088 
00089         private:
00090                 //write an image to file
00091                 void writeImageToFile(OutputImagePointer img,char * name);
00092 
00093         };
00094 } // end namespace mial
00095 #include "Sense_HessianBased.cxx"
00096 #endif

Generated on Wed Jul 19 13:05:17 2006 for IDO by  doxygen 1.4.7