00001 #ifndef __DefOrgAdapter_VesselCrawler_h 00002 #define __DefOrgAdapter_VesselCrawler_h 00003 00004 #include "itkImageFileReader.h" 00005 #include "itkImageFileWriter.h" 00006 //#include "itkMeanImageFilter.h" 00007 //#include "itkBinaryThresholdImageFilter.h" 00008 //#include "itkCovariantVector.h" 00009 00010 #include <iostream> 00011 #include "itkVesselCrawler.h" 00012 //#include "itkOrganism.h" 00013 //#include "Phys_Euler.h" 00014 //#include "Ctrl_ScheduleDriven.h" 00015 //#include "Beh_TranslateAll.h" 00016 //#include "Def_Translation.h" 00017 //#include "Sense_Gradient.h" 00018 //#include "Geom_MeshSpatialObject.h" 00019 //#include "Phys_LevelSet.h" 00020 00021 #include "DefOrgViewerAdapterBaseTemplated.h" 00022 00023 #include <vtksys/SystemTools.hxx> 00024 #include <vtksys/CommandLineArguments.hxx> 00025 00026 namespace mial{ 00027 #define N_DIMS 3 00028 typedef unsigned char PixelType; 00029 typedef float DataType; 00030 00032 00038 class DefOrgAdapter_VesselCrawler:public DefOrgViewerAdapterBaseTemplated<PixelType,DataType>{ 00039 public: 00040 00041 //Overide base class to discount requirement of schedule/mesh 00042 virtual bool IsAllInputFilesSet(){ 00043 return vtksys::SystemTools::FileExists(m_ImageFileName.c_str()); 00044 } 00045 00046 // typedefs for the defOrg: 00047 00048 //typedef Geom_MeshSpatialObject< DataType, N_DIMS > GeometricType; 00049 typedef itk::CovariantVector< DataType, N_DIMS > GradientPixelType; 00050 typedef itk::Image< GradientPixelType, N_DIMS > GradientImageType; 00051 /*typedef Phys_LevelSet< DataType, ImageType, N_DIMS > LevelSetPhysicsType; 00052 typedef Phys_Euler< DataType, 00053 GradientImageType, N_DIMS > EulerPhysicsType; 00054 typedef Sense_Gradient< DataType, ImageType, 00055 GradientImageType, N_DIMS > GradientSensorType; 00056 typedef Ctrl_ScheduleDriven<DataType, N_DIMS> CognitiveType; 00057 typedef Beh_TranslateAll<DataType, N_DIMS> Beh_TranslateAllType; 00058 typedef Def_Translation<DataType, N_DIMS> Def_TranslateAllType;*/ 00059 00060 typedef itk::ItkVesselCrawler <ImageType, ImageType,GradientImageType, DataType> VesselCrawlerType; 00061 00062 /*typedef itk::DefaultDynamicMeshTraits< 00063 DataType, N_DIMS, N_DIMS > MeshTrait; 00064 typedef itk::Mesh< DataType, N_DIMS, MeshTrait > MeshType; 00065 typedef MeshType::Pointer MeshTypePointer;*/ 00066 00069 DefOrgAdapter_VesselCrawler(); 00070 00073 virtual void SetupOrganism(); 00076 virtual void UpdateOrganism(); 00078 virtual void PopulateVtkImage(); 00081 virtual void PopulateVtkUnstructuredGrid(vtkUnstructuredGrid* vtkGrid /*in/out*/); 00083 virtual void PopulateItkScene(); 00084 00089 virtual void HandleUserMouseInteraction(vtkTransform* userTransformation); 00090 00096 virtual int MaxNumberOfOutputItkSpatialObjects(); 00102 virtual unsigned int MaxNumberOfOutputImages(); 00103 00104 private: 00105 VesselCrawlerType::Pointer crawler; 00106 /*OrganismType::Pointer testOrg; 00107 LevelSetPhysicsType levelSetPhysLayer; 00108 EulerPhysicsType* eulerPhysLayerPointer; 00109 GradientSensorType::sensorIn sensorInput; 00110 GradientSensorType gradientSensor; 00111 GeometricType* geomLayerPointer; 00112 CognitiveType* cognitiveLayerPointer; 00113 Beh_TranslateAllType* beh1; 00114 Def_TranslateAllType* def1; */ 00115 int lock; 00116 00117 }; 00118 } 00119 00120 #endif