00001 #if defined (_MSC_VER) && (_MSC_VER >= 1000)
00002 #pragma once
00003 #endif
00004 #ifndef _INC_Org_LevelSetSchedule
00005 #define _INC_Org_LevelSetSchedule
00006
00007 #include "itkOrganism.h"
00008
00009 #include "itkImageToImageFilter.h"
00010 #include "itkImage.h"
00011 #include "itkNumericTraits.h"
00012
00013 #include "itkImageRegionIterator.h"
00014
00015
00016 #include <iostream>
00017 #include "Phys_LevelSet.h"
00018 #include "Ctrl_ScheduleDriven.h"
00019 #include "Beh_TranslateAll.h"
00020 #include "Def_Translation.h"
00021 #include "Beh_UniformScale.h"
00022 #include "Def_UniformScale.h"
00023 #include "Sense_Gradient.h"
00024 #include "Geom_MeshSpatialObject.h"
00025
00026 using namespace mial;
00027 namespace itk
00028 {
00029
00031
00043 template <class TInputImage, class TOutputImage,class TExternalForceImage, class DataType, int nDims>
00044 class ITK_EXPORT Org_LevelSetSchedule : public ItkOrganism<TInputImage,TOutputImage,TExternalForceImage,DataType,nDims>
00045 {
00046 public:
00048 itkStaticConstMacro(InputImageDimension, unsigned int,TInputImage::ImageDimension);
00049
00050 itkStaticConstMacro(OutputImageDimension, unsigned int,TOutputImage::ImageDimension);
00051
00052 typedef Org_LevelSetSchedule Self;
00053 typedef SmartPointer<Self> Pointer;
00054 typedef SmartPointer<const Self> ConstPointer;
00055 itkNewMacro(Self);
00056
00058 itkTypeMacro(Org_LevelSetSchedule, ItkOrganism);
00059
00060 typedef Geom_MeshSpatialObject<DataType,3> GeometricType;
00061 typedef Phys_LevelSet<DataType,TInputImage,3> PhysLayerType;
00062 typedef Sense_Gradient<DataType,TInputImage,TExternalForceImage,3> gradientSensorType;
00063
00065 virtual bool setSchedule(std::string scheduleFileName){return cgL->setSchedule(scheduleFileName);};
00066
00068 virtual void setTopologyFromBinaryImage(typename GeometricType::BinaryImageType::Pointer img){geomLayer->generateTopologyFromBinaryImage(img);};
00069
00071 virtual bool setTopology(std::string fName){
00072 return geomLayer->readTopologyFromFile(fName);};
00073 virtual void setUp()
00074 {
00075
00076
00077 physLayer->setInput(this->GetInput());
00078 }
00079
00080
00081 protected:
00082 typename Ctrl_ScheduleDriven<DataType, 3>::Pointer cgL;
00083 typename GeometricType::Pointer geomLayer;
00084 typename PhysLayerType::Pointer physLayer;
00085 typename gradientSensorType::sensorIn::Pointer input;
00086 typename gradientSensorType::Pointer gradientSensor;
00087
00088 Org_LevelSetSchedule();
00089 virtual ~Org_LevelSetSchedule() {}
00090
00091
00092 };
00093 }
00094 #include "Org_LevelSetSchedule.cxx"
00095 #endif