X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=registration%2FclitkConvertBSplineDeformableTransformToVFGenericFilter.cxx;h=1536ff63adaca40ee1d5ee6db6a319590de0f90c;hb=HEAD;hp=261a9d8ac092fadd8786298a6e0fea3a675138dc;hpb=08d1fd56ac1d08bd228d9e557f5472a395e9b708;p=clitk.git diff --git a/registration/clitkConvertBSplineDeformableTransformToVFGenericFilter.cxx b/registration/clitkConvertBSplineDeformableTransformToVFGenericFilter.cxx index 261a9d8..1536ff6 100644 --- a/registration/clitkConvertBSplineDeformableTransformToVFGenericFilter.cxx +++ b/registration/clitkConvertBSplineDeformableTransformToVFGenericFilter.cxx @@ -27,6 +27,11 @@ * ===================================================*/ +// clitk include +#include "clitkBSplineDeformableTransform.h" +#include "clitkTransformToDeformationFieldSource.h" +#include "clitkShapedBLUTSpatioTemporalDeformableTransform.h" +#include "clitkConvertBLUTCoeffsToVFFilter.h" #include "clitkConvertBSplineDeformableTransformToVFGenericFilter.h" @@ -49,160 +54,65 @@ namespace clitk template<> void ConvertBSplineDeformableTransformToVFGenericFilter::UpdateWithDim<3>(std::string PixelType, int Components) - { +{ // Components if (Components !=3) - { - std::cerr<<"Number of components is "< InputPixelType; typedef itk::Vector OutputPixelType; typedef itk::Image InputImageType; typedef itk::Image OutputImageType; - - // Read the input - typedef itk::ImageFileReader InputReaderType; - InputReaderType::Pointer reader = InputReaderType::New(); - reader->SetFileName( m_InputFileName); - reader->Update(); - InputImageType::Pointer input= reader->GetOutput(); - - // ----------------------------------------------- - // Filter - // ----------------------------------------------- - typedef itk::TransformToDeformationFieldSource ConvertorType; - ConvertorType::Pointer filter= ConvertorType::New(); - - //Output image info - if (m_ArgsInfo.like_given) - { - typedef itk::ImageFileReader ReaderType; - ReaderType::Pointer reader2=ReaderType::New(); - reader2->SetFileName(m_ArgsInfo.like_arg); - reader2->Update(); - - OutputImageType::Pointer image=reader2->GetOutput(); - filter->SetOutputParametersFromImage(image); - } - else - { - unsigned int i=0; - if(m_ArgsInfo.origin_given) - { - OutputImageType::PointType origin; - for(i=0;iSetOutputOrigin(origin); - } - if (m_ArgsInfo.spacing_given) - { - OutputImageType::SpacingType spacing; - for(i=0;iSetOutputSpacing(spacing); - } - if (m_ArgsInfo.spacing_given) - { - OutputImageType::SizeType size; - for(i=0;iSetOutputSize(size); - } + typedef ConvertBLUTCoeffsToVFFilter FilterType; + FilterType::Pointer filter = FilterType::New(); + filter->SetInputFileName(m_InputFileName); + filter->SetTransformType(m_ArgsInfo.type_arg); + filter->SetVerbose(m_ArgsInfo.verbose_flag); + + if (m_ArgsInfo.like_given) { + filter->SetLikeFileName(m_ArgsInfo.like_arg); + } + else { + FilterType::OutputImagePointType origin; + FilterType::OutputImageSpacingType spacing; + FilterType::OutputImageSizeType size; + for (unsigned int i = 0; i < Dimension; i++) { + origin[i] = m_ArgsInfo.origin_arg[i]; + spacing[i] = m_ArgsInfo.spacing_arg[i]; + size[i] = m_ArgsInfo.size_arg[i]; } - - if (m_Verbose) - { - std::cout<< "Setting output origin to "<GetOutputOrigin()<<"..."<GetOutputSpacing()<<"..."<GetOutputSize()<<"..."<SetOutputOrigin(origin); + filter->SetOutputSpacing(spacing); + filter->SetOutputSize(size); + } + + if (m_ArgsInfo.order_given) { + FilterType::OutputImageSizeType order; + for (unsigned int i = 0; i < Dimension; i++) { + order[i] = m_ArgsInfo.order_arg[i]; } - - // ----------------------------------------------- - // Transform - // ----------------------------------------------- - typedef clitk::BSplineDeformableTransform< double, Dimension, Dimension> TransformType; - TransformType::Pointer transform=TransformType::New(); - - // Spline orders: Default is cubic splines - InputImageType::RegionType::SizeType splineOrders ; - splineOrders.Fill(3); - if (m_ArgsInfo.order_given) - for(unsigned int i=0; i MaskType; - MaskType::Pointer spatialObjectMask=NULL; + filter->SetBLUTSplineOrders(order); + } + if (m_ArgsInfo.mask_given) - { - typedef itk::Image< unsigned char, Dimension > ImageMaskType; - typedef itk::ImageFileReader< ImageMaskType > MaskReaderType; - MaskReaderType::Pointer maskReader = MaskReaderType::New(); - maskReader->SetFileName(m_ArgsInfo.mask_arg); - - try - { - maskReader->Update(); - } - catch( itk::ExceptionObject & err ) - { - std::cerr << "ExceptionObject caught while reading mask !" << std::endl; - std::cerr << err << std::endl; - return; - } - if (m_Verbose)std::cout <<"Mask was read..." <SetImage( maskReader->GetOutput() ); - } - - - // Samplingfactors - InputImageType::SizeType samplingFactors; - for (unsigned int i=0; i< Dimension; i++) - { - samplingFactors[i]= (int) ( input->GetSpacing()[i]/ filter->GetOutputSpacing()[i]); - if (m_Verbose) std::cout<<"Setting sampling factor "<SetSplineOrders(splineOrders); - transform->SetMask(spatialObjectMask); - transform->SetLUTSamplingFactors(samplingFactors); - transform->SetCoefficientImage(input); - filter->SetTransform(transform); - - - // ----------------------------------------------- - // Update - // ----------------------------------------------- - if (m_Verbose)std::cout<< "Converting the BSpline transform..."<Update(); - } - catch (itk::ExceptionObject) - { - std::cerr<<"Error: Exception thrown during execution convertion filter!"<SetMaskFileName(m_ArgsInfo.mask_arg); + + filter->Update(); + OutputImageType::Pointer output=filter->GetOutput(); - // ----------------------------------------------- // Output // ----------------------------------------------- @@ -214,26 +124,26 @@ namespace clitk } - +/* //------------------------------------------------------------------- // Update with the number of dimensions //------------------------------------------------------------------- template<> - void - ConvertBSplineDeformableTransformToVFGenericFilter::UpdateWithDim<4>(std::string PixelType, int Components) - { +void +ConvertBSplineDeformableTransformToVFGenericFilter::UpdateWithDim<4>(std::string PixelType, int Components) +{ // Components if (Components !=3) - { - std::cerr<<"Number of components is "< OutputPixelType; typedef itk::Image InputImageType; typedef itk::Image OutputImageType; - + // Read the input typedef itk::ImageFileReader InputReaderType; InputReaderType::Pointer reader = InputReaderType::New(); @@ -258,53 +168,53 @@ namespace clitk //Output image info if (m_ArgsInfo.like_given) - { - typedef itk::ImageFileReader ReaderType; - ReaderType::Pointer reader2=ReaderType::New(); - reader2->SetFileName(m_ArgsInfo.like_arg); - reader2->Update(); - - OutputImageType::Pointer image=reader2->GetOutput(); - filter->SetOutputParametersFromImage(image); - } + { + typedef itk::ImageFileReader ReaderType; + ReaderType::Pointer reader2=ReaderType::New(); + reader2->SetFileName(m_ArgsInfo.like_arg); + reader2->Update(); + + OutputImageType::Pointer image=reader2->GetOutput(); + filter->SetOutputParametersFromImage(image); + } else - { - unsigned int i=0; - if(m_ArgsInfo.origin_given) - { - OutputImageType::PointType origin; - for(i=0;iSetOutputOrigin(origin); - } - if (m_ArgsInfo.spacing_given) - { - OutputImageType::SpacingType spacing; - for(i=0;iSetOutputSpacing(spacing); - } - if (m_ArgsInfo.spacing_given) - { - OutputImageType::SizeType size; - for(i=0;iSetOutputSize(size); - } - } + { + unsigned int i=0; + if (m_ArgsInfo.origin_given) + { + OutputImageType::PointType origin; + for (i=0;iSetOutputOrigin(origin); + } + if (m_ArgsInfo.spacing_given) + { + OutputImageType::SpacingType spacing; + for (i=0;iSetOutputSpacing(spacing); + } + if (m_ArgsInfo.spacing_given) + { + OutputImageType::SizeType size; + for (i=0;iSetOutputSize(size); + } + } //Output image info if (m_Verbose) - { - std::cout<< "Setting output origin to "<GetOutputOrigin()<<"..."<GetOutputSpacing()<<"..."<GetOutputSize()<<"..."<GetOutputOrigin()<<"..."<GetOutputSpacing()<<"..."<GetOutputSize()<<"..."< TransformType; + typedef clitk::ShapedBLUTSpatioTemporalDeformableTransform< double, Dimension, Dimension > TransformType; TransformType::Pointer transform=TransformType::New(); transform->SetTransformShape(m_ArgsInfo.shape_arg); @@ -312,46 +222,46 @@ namespace clitk InputImageType::RegionType::SizeType splineOrders ; splineOrders.Fill(3); if (m_ArgsInfo.order_given) - for(unsigned int i=0; i MaskType; MaskType::Pointer spatialObjectMask=NULL; if (m_ArgsInfo.mask_given) - { - typedef itk::Image< unsigned char, Dimension > ImageMaskType; - typedef itk::ImageFileReader< ImageMaskType > MaskReaderType; - MaskReaderType::Pointer maskReader = MaskReaderType::New(); - maskReader->SetFileName(m_ArgsInfo.mask_arg); - - try - { - maskReader->Update(); - } - catch( itk::ExceptionObject & err ) - { - std::cerr << "ExceptionObject caught while reading mask !" << std::endl; - std::cerr << err << std::endl; - return; - } - if (m_Verbose)std::cout <<"Mask was read..." <SetImage( maskReader->GetOutput() ); - } + { + typedef itk::Image< unsigned char, Dimension > ImageMaskType; + typedef itk::ImageFileReader< ImageMaskType > MaskReaderType; + MaskReaderType::Pointer maskReader = MaskReaderType::New(); + maskReader->SetFileName(m_ArgsInfo.mask_arg); + + try + { + maskReader->Update(); + } + catch ( itk::ExceptionObject & err ) + { + std::cerr << "ExceptionObject caught while reading mask !" << std::endl; + std::cerr << err << std::endl; + return; + } + if (m_Verbose)std::cout <<"Mask was read..." <SetImage( maskReader->GetOutput() ); + } // Samplingfactors - InputImageType::SizeType samplingFactors; + InputImageType::SizeType samplingFactors; for (unsigned int i=0; i< Dimension; i++) - { - samplingFactors[i]= (int) ( input->GetSpacing()[i]/ filter->GetOutputSpacing()[i]); - if (m_Verbose) std::cout<<"Setting sampling factor "<GetSpacing()[i]/ filter->GetOutputSpacing()[i]); + if (m_Verbose) std::cout<<"Setting sampling factor "<SetSplineOrders(splineOrders); @@ -366,13 +276,13 @@ namespace clitk // ----------------------------------------------- if (m_Verbose)std::cout<< "Converting the BSpline transform..."<Update(); - } + { + filter->Update(); + } catch (itk::ExceptionObject) - { - std::cerr<<"Error: Exception thrown during execution convertion filter!"<GetOutput(); @@ -386,10 +296,8 @@ namespace clitk writer->SetInput(output); writer->Update(); - } - - - +} +*/ //----------------------------------------------------------- // Update //----------------------------------------------------------- @@ -404,7 +312,7 @@ namespace clitk // Call UpdateWithDim //if(Dimension==2) UpdateWithDim<2>(PixelType, Components); if(Dimension==3) UpdateWithDim<3>(PixelType, Components); - else if (Dimension==4) UpdateWithDim<4>(PixelType, Components); + //else if (Dimension==4) UpdateWithDim<4>(PixelType, Components); else { std::cout<<"Error, Only for 3 Dimensions!!!"<