- DynamicDeformationFieldType::Pointer dynamicDeformationField=DynamicDeformationFieldType::New();
-
-
- //declare their iterators
- typedef itk::ImageRegionIterator< DynamicDeformationFieldType> DynamicDeformationFieldIteratorType;
- DynamicDeformationFieldIteratorType *dynamicIteratorPointer= new DynamicDeformationFieldIteratorType;
-
- for (unsigned int i=0 ; i< args_info.inputs_num ; i ++)
- {
- //read in the deformation field i
- DeformationFieldReaderType::Pointer deformationFieldReader = DeformationFieldReaderType::New();
- deformationFieldReader->SetFileName( args_info.inputs[i]);
- if (args_info.verbose_flag) std::cout<<"Reading VF number "<< i+1 << std::endl;
- deformationFieldReader->Update();
- DeformationFieldType::Pointer currentDeformationField = deformationFieldReader->GetOutput();
-
- //create an iterator for the current deformation field
- typedef itk::ImageRegionIterator<DeformationFieldType> FieldIteratorType;
- FieldIteratorType fieldIterator(currentDeformationField, currentDeformationField->GetLargestPossibleRegion());
-
- //Allocate memory for the dynamic components
- if (i==0)
- {
- DynamicDeformationFieldType::RegionType dynamicDeformationFieldRegion;
- DynamicDeformationFieldType::RegionType::SizeType dynamicDeformationFieldSize;
- DeformationFieldType::RegionType::SizeType deformationFieldSize;
- deformationFieldSize= currentDeformationField->GetLargestPossibleRegion().GetSize();
- dynamicDeformationFieldSize[0]=deformationFieldSize[0];
- dynamicDeformationFieldSize[1]=deformationFieldSize[1];
- dynamicDeformationFieldSize[2]=deformationFieldSize[2];
- dynamicDeformationFieldSize[3]=args_info.inputs_num;
- dynamicDeformationFieldRegion.SetSize(dynamicDeformationFieldSize);
- DynamicDeformationFieldType::IndexType start;
- start.Fill(0);
- dynamicDeformationFieldRegion.SetIndex(start);
- dynamicDeformationField->SetRegions(dynamicDeformationFieldRegion);
- dynamicDeformationField->Allocate();
-
-
- //Set the spacing
- DeformationFieldType::SpacingType spacing= currentDeformationField->GetSpacing();
- DynamicDeformationFieldType::SpacingType dynamicSpacing;
- dynamicSpacing[0]=spacing[0];
- dynamicSpacing[1]=spacing[1];
- dynamicSpacing[2]=spacing[2];
- dynamicSpacing[3]=args_info.spacing_arg; //JV par exemple
- dynamicDeformationField->SetSpacing(dynamicSpacing);
- DynamicDeformationFieldType::PointType origin;
- origin[0]=args_info.xorigin_arg;
- origin[1]=args_info.yorigin_arg;
- origin[2]=args_info.zorigin_arg;
- origin[3]=0; //temporal origin is always 0
- dynamicDeformationField->SetOrigin(origin);
-
- // Creating iterators for the currentDeformationField and the DynamicDeformationField
- DynamicDeformationFieldIteratorType *dynamicIterator= new DynamicDeformationFieldIteratorType(dynamicDeformationField, dynamicDeformationField->GetLargestPossibleRegion());
- dynamicIteratorPointer=dynamicIterator;
- dynamicIteratorPointer->GoToBegin();
- }
- if (args_info.verbose_flag) std::cout<<"Merging VF number "<< i+1 << std::endl;
- //Copy the current component of the input into dynamicDeformationFieldComponent
- fieldIterator.GoToBegin();
- while(!fieldIterator.IsAtEnd())
- {
- dynamicIteratorPointer->Set(fieldIterator.Get());
- ++fieldIterator;
- ++(*dynamicIteratorPointer);
- }
- }
-
+ DynamicDeformationFieldType::Pointer dynamicDeformationField=DynamicDeformationFieldType::New();
+
+
+//declare their iterators
+ typedef itk::ImageRegionIterator< DynamicDeformationFieldType> DynamicDeformationFieldIteratorType;
+ DynamicDeformationFieldIteratorType *dynamicIteratorPointer= new DynamicDeformationFieldIteratorType;
+
+ for (unsigned int i=0 ; i< args_info.inputs_num ; i ++) {
+ //read in the deformation field i
+ DeformationFieldReaderType::Pointer deformationFieldReader = DeformationFieldReaderType::New();
+ deformationFieldReader->SetFileName( args_info.inputs[i]);
+ if (args_info.verbose_flag) std::cout<<"Reading VF number "<< i+1 << std::endl;
+ deformationFieldReader->Update();
+ DeformationFieldType::Pointer currentDeformationField = deformationFieldReader->GetOutput();
+
+ //create an iterator for the current deformation field
+ typedef itk::ImageRegionIterator<DeformationFieldType> FieldIteratorType;
+ FieldIteratorType fieldIterator(currentDeformationField, currentDeformationField->GetLargestPossibleRegion());
+
+ //Allocate memory for the dynamic components
+ if (i==0) {
+ DynamicDeformationFieldType::RegionType dynamicDeformationFieldRegion;
+ DynamicDeformationFieldType::RegionType::SizeType dynamicDeformationFieldSize;
+ DeformationFieldType::RegionType::SizeType deformationFieldSize;
+ deformationFieldSize= currentDeformationField->GetLargestPossibleRegion().GetSize();
+ dynamicDeformationFieldSize[0]=deformationFieldSize[0];
+ dynamicDeformationFieldSize[1]=deformationFieldSize[1];
+ dynamicDeformationFieldSize[2]=deformationFieldSize[2];
+ dynamicDeformationFieldSize[3]=args_info.inputs_num;
+ dynamicDeformationFieldRegion.SetSize(dynamicDeformationFieldSize);
+ DynamicDeformationFieldType::IndexType start;
+ start.Fill(0);
+ dynamicDeformationFieldRegion.SetIndex(start);
+ dynamicDeformationField->SetRegions(dynamicDeformationFieldRegion);
+ dynamicDeformationField->Allocate();
+
+
+ //Set the spacing
+ DeformationFieldType::SpacingType spacing= currentDeformationField->GetSpacing();
+ DynamicDeformationFieldType::SpacingType dynamicSpacing;
+ dynamicSpacing[0]=spacing[0];
+ dynamicSpacing[1]=spacing[1];
+ dynamicSpacing[2]=spacing[2];
+ dynamicSpacing[3]=args_info.spacing_arg; //JV par exemple
+ dynamicDeformationField->SetSpacing(dynamicSpacing);
+ DynamicDeformationFieldType::PointType origin;
+ origin[0]=args_info.xorigin_arg;
+ origin[1]=args_info.yorigin_arg;
+ origin[2]=args_info.zorigin_arg;
+ origin[3]=0; //temporal origin is always 0
+ dynamicDeformationField->SetOrigin(origin);
+
+ // Creating iterators for the currentDeformationField and the DynamicDeformationField
+ DynamicDeformationFieldIteratorType *dynamicIterator= new DynamicDeformationFieldIteratorType(dynamicDeformationField, dynamicDeformationField->GetLargestPossibleRegion());
+ dynamicIteratorPointer=dynamicIterator;
+ dynamicIteratorPointer->GoToBegin();
+ }
+ if (args_info.verbose_flag) std::cout<<"Merging VF number "<< i+1 << std::endl;
+ //Copy the current component of the input into dynamicDeformationFieldComponent
+ fieldIterator.GoToBegin();
+ while(!fieldIterator.IsAtEnd()) {
+ dynamicIteratorPointer->Set(fieldIterator.Get());
+ ++fieldIterator;
+ ++(*dynamicIteratorPointer);
+ }
+ }
+