#include "clitkBLUTDIRGenericFilter.h"
#include "clitkBLUTDIRCommandIterationUpdateDVF.h"
+#include "itkCenteredTransformInitializer.h"
+#if ITK_VERSION_MAJOR >= 4
+# if ITK_VERSION_MINOR < 6
+# include "itkTransformToDisplacementFieldSource.h"
+# else
+# include "itkTransformToDisplacementFieldFilter.h"
+# endif
+#else
+# include "itkTransformToDeformationFieldSource.h"
+#endif
namespace clitk
{
// The metric region with respect to the extracted transform region:
// where should the metric be CALCULATED (depends on transform)
typename FixedImageType::RegionType metricRegion = fixedImage->GetLargestPossibleRegion();
- typename FixedImageType::RegionType::SizeType metricRegionSize=metricRegion.GetSize();
typename FixedImageType::RegionType::IndexType metricRegionIndex=metricRegion.GetIndex();
typename FixedImageType::PointType metricRegionOrigin=fixedImage->GetOrigin();
itk::Vector<double,3> finalTranslation = clitk::GetTranslationPartMatrix3D(rigidTransformMatrix);
rigidTransform->SetTranslation(finalTranslation);
}
+ else if (m_ArgsInfo.centre_flag)
+ {
+ if(m_Verbose) std::cout<<"No itinial matrix given and \"centre\" flag switched on. Centering all images..."<<std::endl;
+
+ rigidTransform=RigidTransformType::New();
+
+ typedef itk::CenteredTransformInitializer<RigidTransformType, FixedImageType, MovingImageType > TransformInitializerType;
+ typename TransformInitializerType::Pointer initializer = TransformInitializerType::New();
+ initializer->SetTransform( rigidTransform );
+ initializer->SetFixedImage( fixedImage );
+ initializer->SetMovingImage( movingImage );
+ initializer->GeometryOn();
+ initializer->InitializeTransform();
+ }
//=======================================================
try
{
+#if ITK_VERSION_MAJOR < 4 || (ITK_VERSION_MAJOR == 4 && ITK_VERSION_MINOR <= 2)
registration->StartRegistration();
+#else
+ registration->Update();
+#endif
}
catch( itk::ExceptionObject & err )
{
typedef itk::Vector< float, SpaceDimension > DisplacementType;
typedef itk::Image< DisplacementType, InputImageType::ImageDimension > DisplacementFieldType;
#if ITK_VERSION_MAJOR >= 4
+# if ITK_VERSION_MINOR < 6
typedef itk::TransformToDisplacementFieldSource<DisplacementFieldType, double> ConvertorType;
+# else
+ typedef itk::TransformToDisplacementFieldFilter<DisplacementFieldType, double> ConvertorType;
+# endif
#else
typedef itk::TransformToDeformationFieldSource<DisplacementFieldType, double> ConvertorType;
#endif
else
transform->SetBulkTransform(NULL);
filter->SetTransform(regTransform);
+#if ITK_VERSION_MAJOR > 4 || (ITK_VERSION_MAJOR == 4 && ITK_VERSION_MINOR >= 6)
+ filter->SetReferenceImage(fixedImage);
+#else
filter->SetOutputParametersFromImage(fixedImage);
+#endif
filter->Update();
typename DisplacementFieldType::Pointer field = filter->GetOutput();