00001 #if defined (_MSC_VER) && (_MSC_VER >= 1000)
00002 #pragma once
00003 #endif
00004 #ifndef _Sense_SenseToGrow
00005 #define _Sense_SenseToGrow
00006
00007 #include "itkImageFileWriter.h"
00008 #include "Sensor.h"
00009 namespace mial
00010 {
00011
00013
00024 template<class DataType, class TInputImage, int nDims>
00025 class Sense_SenseToGrow: public Sensor
00026 {
00027
00028
00029
00030 public:
00031
00032 typedef TInputImage InputImageType;
00033 typedef typename InputImageType::ConstPointer InputImagePointer;
00034
00035 typedef itk::Image<DataType,nDims> OutputImageType;
00036 typedef typename OutputImageType::ConstPointer OutputImagePointer;
00037
00038
00039 typedef TGradientImage GradientImageType;
00040 typedef typename GradientImageType::Pointer GradientImagePointer;
00041
00042 struct In: public Sensor::sensorIn{
00043
00044
00046 InputImagePointer imageIn;
00047 };
00048 typedef In sensorIn;
00049 struct Out: public Sensor::sensorOut{
00050
00051
00052 DataType[nDims] growLocation;
00053 };
00054 typedef Out sensorOut;
00055 private:
00056
00057
00058 typedef typename itk::GradientMagnitudeRecursiveGaussianImageFilter<InputImageType, OutputImageType> MagnitudeFilterType;
00059 typedef typename itk::GradientRecursiveGaussianImageFilter<OutputImageType, GradientImageType> GradientFilterType;
00060
00061
00062
00063
00064 typename MagnitudeFilterType::Pointer magnitudeFilter;
00065 typename GradientFilterType::Pointer gradientFilter;
00066
00067 sensorOut sensorOutput;
00068
00069
00070
00071
00072
00073 public:
00074
00075 Sense_SenseToGrow();
00076
00077
00078 virtual void run(void * i);
00079
00080
00081
00082 virtual void * getOuput(){ return (void *)&sensorOutput;};
00083
00084 private:
00085
00086 void writeImageToFile(OutputImagePointer img,char * name);
00087
00088 };
00089 }
00090 #include "Sense_SenseToGrow.cxx"
00091 #endif