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 00011 #ifndef __mitkDistanceTransformSaito_h 00012 #define __mitkDistanceTransformSaito_h 00013 00014 #include "mitkVolumeToVolumeFilter.h" 00015 #include "mitkVolume.h" 00016 00023 class MITK_COMMON_API mitkDistanceTransformSaito : public mitkVolumeToVolumeFilter 00024 { 00025 00026 public: 00027 MITK_TYPE(mitkDistanceTransformSaito,mitkVolumeToVolumeFilter) 00028 00029 00030 00031 00032 mitkDistanceTransformSaito(); 00033 00038 void SetDimension(int d); 00039 00048 void SetImagePart(int nIp = 3); 00049 00056 int GetImagePart(){return m_Ip;}; 00057 00058 protected: 00059 virtual bool Execute(); 00060 //Compute the x,y,z extent of a volume 00061 void PermuteExtent(mitkVolume* InputVolume, int nExtent[6]); 00062 //Compute the x,y,z increment in logical unit 00063 void PermuteIncrements(mitkVolume* InputVolume, int nInc[3]); 00064 //Compute the max distance of the volume 00065 float GetMaximumDistance(mitkVolume* Volume); 00066 00067 protected: 00068 int m_Dimension; 00069 int m_CurrentIteration; 00070 int m_Ip; 00071 00072 virtual ~mitkDistanceTransformSaito(); 00073 private: 00074 mitkDistanceTransformSaito(const mitkDistanceTransformSaito&); 00075 void operator=(const mitkDistanceTransformSaito&); 00076 00077 }; 00078 00079 00080 00081 #endif 00082