]> Creatis software - creaRigidRegistration.git/blob - PackRecalage/src/bbPackRecalageReSlicerBox.cxx
e3bf96316402fca7f199094c80c8128fef408c5a
[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  
12         if(!bbGetInputOrigin().empty())
13         {
14                 image = vtkImageChangeInformation::New();
15                 image->SetInput( bbGetInputIn() );
16                 image->SetOutputSpacing( 1,1,1 ); 
17         
18                 slicer =vtkImageReslice::New();
19                 slicer->SetInput( image->GetOutput() );
20                 slicer->SetResliceTransform(bbGetInputTransform());
21                 slicer->SetOutputOrigin( 0 , 0 , 0 );
22                 slicer->SetOutputOrigin( -(bbGetInputOrigin()[0]) , -(bbGetInputOrigin()[1]) , -(bbGetInputOrigin()[2]) );
23                 std::cout << "Reslicer: Origin points: X = " <<  bbGetInputOrigin()[0] << " Y = " << bbGetInputOrigin()[1] << " Z = " << bbGetInputOrigin()[2] << std::endl;
24                 slicer->Update();
25         
26                 imageResult = vtkImageChangeInformation::New();
27                 imageResult->SetInput( slicer->GetOutput() );
28                 double spc[3];
29                 bbGetInputIn()->GetSpacing(spc);
30                 imageResult->SetOutputSpacing( spc ); 
31                 imageResult->SetOutputOrigin( 0,0,0 ); 
32         
33                 bbSetOutputOut( imageResult->GetOutput() );             
34         }
35         else
36         {
37                 bbSetOutputOut( bbGetInputIn() );
38         }
39           
40 }
41 void ReSlicerBox::bbUserSetDefaultValues()
42 {
43  
44         std::vector<int> nuevo(3,0);
45         nuevo.push_back(0);
46         bbSetInputOrigin(nuevo); 
47     bbSetInputIn(NULL); 
48     bbSetInputTransform(vtkIdentityTransform::New());
49     bbSetOutputOut(NULL);
50   
51 }
52 void ReSlicerBox::bbUserInitializeProcessing()
53 {
54  
55 //  THE INITIALIZATION METHOD BODY : 
56 //    Here does nothing  
57 //    but this is where you should allocate the internal/output pointers  
58 //    if any  
59         image = vtkImageChangeInformation::New();
60     slicer =vtkImageReslice::New();
61         imageResult = vtkImageChangeInformation::New();
62 }
63 void ReSlicerBox::bbUserFinalizeProcessing()
64 {
65  
66 //  THE FINALIZATION METHOD BODY : 
67 //    Here does nothing  
68 //    but this is where you should desallocate the internal/output pointers  
69 //    if any 
70         image->Delete();
71         slicer->Delete();
72     imageResult->Delete();
73 }
74 }
75 // EO namespace bbPackRecalage
76