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
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
00046
00047 InputImagePointer imageIn;
00048 DataType sigma;
00049 };
00050 typedef In sensorIn;
00051 struct Out: public Sensor::sensorOut{
00052
00053
00054 GradientImagePointer imageOut;
00055
00056
00057
00058 };
00059 typedef Out sensorOut;
00060 private:
00061
00062
00063 typedef typename itk::GradientMagnitudeRecursiveGaussianImageFilter<InputImageType, OutputImageType> MagnitudeFilterType;
00064 typedef typename itk::GradientRecursiveGaussianImageFilter<OutputImageType, GradientImageType> GradientFilterType;
00065
00066
00067
00068
00069 typename MagnitudeFilterType::Pointer magnitudeFilter;
00070 typename GradientFilterType::Pointer gradientFilter;
00071
00072 sensorOut sensorOutput;
00073
00074
00075
00076
00077
00078 public:
00079
00080 Sense_HessianBased();
00081
00082
00083 virtual void run(void * i);
00084
00085
00086
00087 virtual void * getOuput(){ return (void *)&sensorOutput;};
00088
00089 private:
00090
00091 void writeImageToFile(OutputImagePointer img,char * name);
00092
00093 };
00094 }
00095 #include "Sense_HessianBased.cxx"
00096 #endif