00001 /*========================================================================= 00002 00003 Program: 3DMed 00004 Date: $Date: 2014-02-25 18:30:00 +0800 $ 00005 Version: $Version: 4.6.0 $ 00006 Copyright: MIPG, Institute of Automation, Chinese Academy of Sciences 00007 00008 =========================================================================*/ 00009 00010 #ifndef __mitkEuclideanSkeletonGraphCut_h 00011 #define __mitkEuclideanSkeletonGraphCut_h 00012 00013 #include "mitkSegmentationIncludes.h" 00014 #include "mitkEuclideanSkeletonFeatureExtraction.h" 00015 #include "mitkVolumeToVolumeFilter.h" 00016 00023 class MITK_SEGMENTATION_API mitkEuclideanSkeletonGraphCut : public mitkVolumeToVolumeFilter 00024 { 00025 public: 00026 MITK_TYPE(mitkEuclideanSkeletonGraphCut,mitkFilter) 00027 mitkEuclideanSkeletonGraphCut(); 00028 00033 void SetEuclideanSkeletonFeature(mitkEuclideanSkeletonFeature *inData) {m_ESF = inData;} 00038 mitkEuclideanSkeletonFeature * GetEuclideanSkeletonFeature() {return m_ESF;} 00045 void SetUserSelection(unsigned char* userSelection); 00050 void SetIntensityFactor(float intFac) { m_IntensityFactor=intFac;} 00055 void SetRadiusFactor(float radFac) { m_RadiusFactor=radFac;} 00056 00057 typedef enum 00058 { 00059 OM_NoOutput, 00060 OM_Mask, 00061 OM_A, 00062 OM_B, 00063 OM_CA, 00064 OM_CB, 00065 OM_BIN_A, 00066 OM_BIN_B 00067 }OutputMode; 00072 void SetOutputMode (OutputMode om) { m_OutputMode=om;} 00078 void GetCutResult(unsigned char* cr); 00083 bool GenerateOutput(OutputMode om); 00084 00085 protected: 00086 virtual ~mitkEuclideanSkeletonGraphCut(); 00087 virtual bool Execute(); 00088 00089 mitkRCPtr<mitkEuclideanSkeletonFeature> m_ESF; 00090 unsigned char *m_UserSelection; 00091 00092 float m_IntensityFactor,m_RadiusFactor; 00093 00094 OutputMode m_OutputMode; 00095 unsigned char *m_CutResult; 00096 00097 private: 00098 mitkEuclideanSkeletonGraphCut(const mitkEuclideanSkeletonGraphCut&); 00099 void operator = (const mitkEuclideanSkeletonGraphCut&); 00100 00101 }; 00102 00103 #endif