X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkWarpImageGenericFilter.txx;h=d1d1f714f3a76b46978fd0e9f3335740c1006a2c;hb=49a0d80a831f771bd71aa6641e7fbcf6cd99229a;hp=8544df2ba33bf859c827513c4219ac8e6301a42b;hpb=47ac2413c129f2e330a760b665f03e6032aa46fb;p=clitk.git diff --git a/tools/clitkWarpImageGenericFilter.txx b/tools/clitkWarpImageGenericFilter.txx index 8544df2..d1d1f71 100644 --- a/tools/clitkWarpImageGenericFilter.txx +++ b/tools/clitkWarpImageGenericFilter.txx @@ -27,6 +27,8 @@ * ===================================================*/ +#include "itkVectorResampleImageFilter.h" +#include "clitkConvertBLUTCoeffsToVFFilter.h" namespace clitk { @@ -78,21 +80,32 @@ WarpImageGenericFilter::UpdateWithDimAndPixelType() typedef itk::Image OutputImageType; typedef itk::Vector DisplacementType; typedef itk::Image DeformationFieldType; - - + // Read the input typedef itk::ImageFileReader InputReaderType; typename InputReaderType::Pointer reader = InputReaderType::New(); reader->SetFileName( m_InputFileName); reader->Update(); typename InputImageType::Pointer input= reader->GetOutput(); - - //Read the deformation field - typedef itk::ImageFileReader DeformationFieldReaderType; - typename DeformationFieldReaderType::Pointer deformationFieldReader= DeformationFieldReaderType::New(); - deformationFieldReader->SetFileName(m_ArgsInfo.vf_arg); - deformationFieldReader->Update(); - typename DeformationFieldType::Pointer deformationField =deformationFieldReader->GetOutput(); + + typename DeformationFieldType::Pointer deformationField; + if (m_ArgsInfo.coeff_given) { + typedef ConvertBLUTCoeffsToVFFilter FilterType; + typename FilterType::Pointer filter = FilterType::New(); + filter->SetInputFileName(m_ArgsInfo.coeff_arg); + filter->SetLikeFileName(m_InputFileName); + filter->SetVerbose(m_Verbose); + filter->Update(); + deformationField = filter->GetOutput(); + } + else { + //Read the deformation field + typedef itk::ImageFileReader DeformationFieldReaderType; + typename DeformationFieldReaderType::Pointer deformationFieldReader= DeformationFieldReaderType::New(); + deformationFieldReader->SetFileName(m_ArgsInfo.vf_arg); + deformationFieldReader->Update(); + deformationField =deformationFieldReader->GetOutput(); + } // Intensity interpolator typedef clitk::GenericVectorInterpolator GenericInterpolatorType; @@ -139,7 +152,7 @@ WarpImageGenericFilter::UpdateWithDimAndPixelType() // ------------------------------------------- // Spacing like input // ------------------------------------------- - else { + else if (!m_ArgsInfo.coeff_given) { // Get size typename DeformationFieldType::SizeType newSize; for (unsigned int i=0 ; i BackwardWarpFilterType; typename BackwardWarpFilterType::Pointer backwardWarpFilter= BackwardWarpFilterType::New(); -#if ITK_VERSION_MAJOR >= 4 backwardWarpFilter->SetDisplacementField( deformationField ); -#else - backwardWarpFilter->SetDeformationField( deformationField ); -#endif backwardWarpFilter->SetEdgePaddingValue( static_cast(m_ArgsInfo.pad_arg) ); backwardWarpFilter->SetOutputSpacing( deformationField->GetSpacing() ); backwardWarpFilter->SetOutputOrigin( input->GetOrigin() );