]> Creatis software - creaRigidRegistration.git/blob - PackRecalage/src/bbPackRecalageReSlicerBox.cxx
*** empty log message ***
[creaRigidRegistration.git] / PackRecalage / src / bbPackRecalageReSlicerBox.cxx
1 #include "bbPackRecalageReSlicerBox.h"
2 #include "bbPackRecalagePackage.h"
3
4 namespace bbPackRecalage
5 {
6
7 BBTK_ADD_BLACK_BOX_TO_PACKAGE(PackRecalage,ReSlicerBox)
8 BBTK_BLACK_BOX_IMPLEMENTATION(ReSlicerBox,bbtk::AtomicBlackBox);
9 void ReSlicerBox::Process()
10 {
11         std::cout << "NTU ReSlicerBox : entered 1" << std::endl;
12  
13         if(!bbGetInputOrigin().empty()  && bbGetInputTransform() != NULL)
14         {
15                 std::cout << "NTU ReSlicerBox : entered 2" << std::endl;
16                 
17                 image = vtkImageChangeInformation::New();
18                 image->SetInput( bbGetInputIn() );
19                 image->SetOutputSpacing( 1,1,1 );
20
21                 std::cout << "NTU ReSlicerBox : entered 3" << std::endl;
22                 
23                 if(bbGetInputCentered())
24                 {
25                         image->CenterImageOn();
26                 }
27
28                 std::cout << "NTU ReSlicerBox : entered 4" << std::endl;
29         
30                 slicer =vtkImageReslice::New();
31                 slicer->SetInput( image->GetOutput() );
32                 slicer->SetInformationInput( image->GetOutput() );
33                 slicer->SetResliceTransform(bbGetInputTransform());
34                 slicer->SetOutputOrigin( -(bbGetInputOrigin()[0]) , -(bbGetInputOrigin()[1]) , -(bbGetInputOrigin()[2]) );
35                 if(bbGetInputInterpolate())
36                 {
37                         slicer->InterpolateOn();
38                 }               
39                 slicer->Update();
40
41                 std::cout << "NTU ReSlicerBox : entered 5" << std::endl;
42
43                 imageResult = vtkImageChangeInformation::New();
44                 imageResult->SetInput( slicer->GetOutput() );
45                 double spc[3];
46                 bbGetInputIn()->GetSpacing(spc);
47                 imageResult->SetOutputSpacing( spc ); 
48                 imageResult->SetOutputOrigin( 0,0,0 ); 
49         
50                 bbSetOutputOut( imageResult->GetOutput() );             
51         }
52         else
53         {
54                 bbSetOutputOut( bbGetInputIn() );
55         }
56
57         std::cout << "NTU ReSlicerBox : out" << std::endl;
58           
59 }
60 void ReSlicerBox::bbUserSetDefaultValues()
61
62         std::vector<int> empty;
63         bbSetInputOrigin(empty); 
64     bbSetInputIn(NULL); 
65     bbSetInputTransform(NULL);
66     bbSetOutputOut(NULL);
67         bbSetInputCentered(false);
68         bbSetInputInterpolate(false);
69   
70 }
71 void ReSlicerBox::bbUserInitializeProcessing()
72 {
73  
74 //  THE INITIALIZATION METHOD BODY : 
75 //    Here does nothing  
76 //    but this is where you should allocate the internal/output pointers  
77 //    if any  
78         image = vtkImageChangeInformation::New();
79     slicer =vtkImageReslice::New();
80         imageResult = vtkImageChangeInformation::New();
81 }
82 void ReSlicerBox::bbUserFinalizeProcessing()
83
84         image->Delete();
85         slicer->Delete();
86     imageResult->Delete();
87 }
88 }
89 // EO namespace bbPackRecalage