#include #include #include "itkImage.h" #include "itkSTMS_ArgumentsAnalysis_Spine.h" #include "itkSTMS_ImageSequenceToTemporalSet_Spine.h" #include "itkSTMS_TemporalSetToImageSequence_Spine.h" #include "itkSTMS_BlurringSTMS_Spine.h" typedef float PixelType; double gettime_hp() { struct timespec timestamp; clock_gettime(CLOCK_REALTIME, ×tamp); return timestamp.tv_sec * 1000.0 + timestamp.tv_nsec * 1.0e-6; } // Only --expDescription and --outFolder parameters are compulsory. /* --image ../../itkSTMS/Data/Images/Simu/Simu1.nii --image ../../itkSTMS/Data/Images/Simu/Simu2.nii --image ../../itkSTMS/Data/Images/Simu/Simu3.nii --image ../../itkSTMS/Data/Images/Simu/Simu4.nii --image ../../itkSTMS/Data/Images/Simu/Simu5.nii --image ../../itkSTMS/Data/Images/Simu/Simu6.nii --image ../../itkSTMS/Data/Images/Simu/Simu7.nii --image ../../itkSTMS/Data/Images/Simu/Simu8.nii --outFolder ../../itkSTMS/Data/Images/Simu_Outputs-Spine/ --imageDimension 2 --xScale 1000 --yScale 1000 --rScale 0.5 --mask ../../itkSTMS/Data/Images/Simu/Mask.nii --imageExtension .nii --image ../../itkSTMS/Data/Images/Simu/Simu1.nii --image ../../itkSTMS/Data/Images/Simu/Simu2.nii --image ../../itkSTMS/Data/Images/Simu/Simu3.nii --image ../../itkSTMS/Data/Images/Simu/Simu4.nii --image ../../itkSTMS/Data/Images/Simu/Simu5.nii --image ../../itkSTMS/Data/Images/Simu/Simu6.nii --image ../../itkSTMS/Data/Images/Simu/Simu7.nii --image ../../itkSTMS/Data/Images/Simu/Simu8.nii --outFolder ../../itkSTMS/Data/Images/Simu_Outputs-Spine/ --imageDimension 2 --xScale 1000 --yScale 1000 --rScale 0.5 --imageExtension .nii */ int main(int argc, char **argv){ double dtime; itkSTMS_Spine::itkSTMS_ArgumentsAnalysis* argsAnalysis = new itkSTMS_Spine::itkSTMS_ArgumentsAnalysis(argc, argv); argsAnalysis->Update(); itkSTMS_Spine::ParamsAnalysisOutputType* params = argsAnalysis->GetSTMSParams(); switch(params->dim){ case 2: { typedef itk::Image< PixelType, 2 > ImageType2D; typedef itk::Image< unsigned int, 2 > MaskImageType2D; typedef itkSTMS_Spine::itkSTMS_ImageSequenceToTemporalSet< ImageType2D, MaskImageType2D >::IndexType IndexType; typedef itkSTMS_Spine::itkSTMS_ImageSequenceToTemporalSet< ImageType2D, MaskImageType2D >::SpatialType SpatialType; typedef itkSTMS_Spine::itkSTMS_ImageSequenceToTemporalSet< ImageType2D, MaskImageType2D >::IndexSampleSetType IndexSampleSetType; typedef itkSTMS_Spine::itkSTMS_ImageSequenceToTemporalSet< ImageType2D, MaskImageType2D >::SpatialSampleSetType SpatialSampleSetType; typedef itkSTMS_Spine::itkSTMS_ImageSequenceToTemporalSet< ImageType2D, MaskImageType2D >::RangeSampleSetType RangeSampleSetType; typedef itk::Image< IndexType, 2 > ClassImageType2D; dtime=gettime_hp(); itkSTMS_Spine::itkSTMS_ImageSequenceToTemporalSet< ImageType2D, MaskImageType2D >* preProcess = new itkSTMS_Spine::itkSTMS_ImageSequenceToTemporalSet< ImageType2D, MaskImageType2D > ( params ); preProcess->GenerateDataSets(); dtime = gettime_hp()-dtime; std::cout<GetIndexSet(); IndexSampleSetType* classSet = preProcess->GetClassSet(); IndexSampleSetType* weightsSet = preProcess->GetWeightsSet(); SpatialSampleSetType* spatialSet = preProcess->GetSpatialSet(); RangeSampleSetType* rangeSet = preProcess->GetRangeSet(); dtime=gettime_hp(); itkSTMS_Spine::itkSTMS_BlurringSTMS< IndexType, SpatialType, PixelType, ImageType2D >* stmsFilter = new itkSTMS_Spine::itkSTMS_BlurringSTMS< IndexType, SpatialType, PixelType, ImageType2D > (indexSet, classSet, weightsSet, spatialSet, rangeSet, params ); stmsFilter->GenerateData(); dtime = gettime_hp()-dtime; std::cout<* postProcess = new itkSTMS_Spine::itkSTMS_TemporalSetToImageSequence< ImageType2D, ClassImageType2D >(stmsFilter->GetClassMemory(), stmsFilter->GetSpatialMemory(), stmsFilter->GetRangeSet(), params ); postProcess->GenerateImageSequence(); dtime = gettime_hp()-dtime; std::cout< ImageType3D; typedef itk::Image< unsigned int, 3 > MaskImageType3D; typedef itkSTMS_Spine::itkSTMS_ImageSequenceToTemporalSet< ImageType3D, MaskImageType3D >::IndexType IndexType; typedef itkSTMS_Spine::itkSTMS_ImageSequenceToTemporalSet< ImageType3D, MaskImageType3D >::SpatialType SpatialType; typedef itkSTMS_Spine::itkSTMS_ImageSequenceToTemporalSet< ImageType3D, MaskImageType3D >::IndexSampleSetType IndexSampleSetType; typedef itkSTMS_Spine::itkSTMS_ImageSequenceToTemporalSet< ImageType3D, MaskImageType3D >::SpatialSampleSetType SpatialSampleSetType; typedef itkSTMS_Spine::itkSTMS_ImageSequenceToTemporalSet< ImageType3D, MaskImageType3D >::RangeSampleSetType RangeSampleSetType; dtime=gettime_hp(); itkSTMS_Spine::itkSTMS_ImageSequenceToTemporalSet< ImageType3D, MaskImageType3D >* preProcess = new itkSTMS_Spine::itkSTMS_ImageSequenceToTemporalSet< ImageType3D, MaskImageType3D > ( params ); preProcess->GenerateDataSets(); dtime = gettime_hp()-dtime; std::cout<GetIndexSet(); IndexSampleSetType* classSet = preProcess->GetClassSet(); IndexSampleSetType* weightsSet = preProcess->GetWeightsSet(); SpatialSampleSetType* spatialSet = preProcess->GetSpatialSet(); RangeSampleSetType* rangeSet = preProcess->GetRangeSet(); dtime=gettime_hp(); itkSTMS_Spine::itkSTMS_BlurringSTMS< IndexType, SpatialType, PixelType, ImageType3D >* stmsFilter = new itkSTMS_Spine::itkSTMS_BlurringSTMS< IndexType, SpatialType, PixelType, ImageType3D > (indexSet, classSet, weightsSet, spatialSet, rangeSet, params ); stmsFilter->GenerateData(); dtime = gettime_hp()-dtime; std::cout<* postProcess = new itkSTMS_Spine::itkSTMS_TemporalSetToImageSequence< ImageType3D, MaskImageType3D >(stmsFilter->GetClassMemory(), stmsFilter->GetSpatialMemory(), stmsFilter->GetRangeSet(), params ); postProcess->GenerateImageSequence(); dtime = gettime_hp()-dtime; std::cout<