1 #include <vtkVersionMacros.h>
2 #include "bbTransform3DdicomCreateComplementImage.h"
3 #include "bbTransform3DdicomPackage.h"
4 namespace bbTransform3Ddicom
7 BBTK_ADD_BLACK_BOX_TO_PACKAGE(Transform3Ddicom,CreateComplementImage)
8 BBTK_BLACK_BOX_IMPLEMENTATION(CreateComplementImage,bbtk::AtomicBlackBox);
9 void CreateComplementImage::Process()
12 if (( bbGetInputImage1()!=NULL ) && ( bbGetInputImage2()!=NULL ))
14 creaimage1->SetvtkImageData( bbGetInputImage1() );
15 creaimage1->SetImagePositionPatient( bbGetInputPosition1()[0] , bbGetInputPosition1()[1] , bbGetInputPosition1()[2] );
16 creaimage1->SetImageSpacing( bbGetInputSpacing1()[0] , bbGetInputSpacing1()[1] , bbGetInputSpacing1()[2] );
17 creaimage1->SetImageOrientation( bbGetInputOrientation1Vec1()[0] , bbGetInputOrientation1Vec1()[1] , bbGetInputOrientation1Vec1()[2] ,
18 bbGetInputOrientation1Vec2()[0] , bbGetInputOrientation1Vec2()[1] , bbGetInputOrientation1Vec2()[2] );
20 creaimage2->SetvtkImageData( bbGetInputImage2() );
21 creaimage2->SetImagePositionPatient( bbGetInputPosition2()[0] , bbGetInputPosition2()[1] , bbGetInputPosition2()[2] );
22 creaimage2->SetImageSpacing( bbGetInputSpacing2()[0] , bbGetInputSpacing2()[1] , bbGetInputSpacing2()[2] );
23 creaimage2->SetImageOrientation( bbGetInputOrientation2Vec1()[0] , bbGetInputOrientation2Vec1()[1] , bbGetInputOrientation2Vec1()[2] ,
24 bbGetInputOrientation2Vec2()[0] , bbGetInputOrientation2Vec2()[1] , bbGetInputOrientation2Vec2()[2] );
27 creaimagecomplement->SetBaseCreaImage( creaimage1 );
28 creaimagecomplement->SetComplementCreaImage( creaimage2 );
29 creaimagecomplement->Update();
32 double dimx,dimy,dimz;
35 dimx= ((bbGetInputExtOut()[1] - bbGetInputExtOut()[0]) / bbGetInputSpcOut()[0])+1;
36 dimy= ((bbGetInputExtOut()[3] - bbGetInputExtOut()[2]) / bbGetInputSpcOut()[1])+1;
37 dimz= ((bbGetInputExtOut()[5] - bbGetInputExtOut()[4]) / bbGetInputSpcOut()[2])+1;
39 //---- imageresult --------
40 imageresult->SetSpacing(1,1,1);
41 imageresult->SetDimensions(dimx,dimy,dimz);
42 imageresult->SetExtent(0,dimx-1,0,dimy-1,0,dimz-1);
43 #if (VTK_MAJOR_VERSION <= 5)
44 imageresult->SetWholeExtent(0,dimx-1,0,dimy,0,dimz-1);
45 imageresult->SetScalarTypeToUnsignedShort();
46 imageresult->AllocateScalars();
47 imageresult->Update();
49 #if (VTK_MAJOR_VERSION >= 6)
50 imageresult->AllocateScalars( VTK_UNSIGNED_SHORT ,1 );
56 //---- imageresult2 --------
57 imageresult2->SetSpacing(1,1,1);
58 imageresult2->SetDimensions(dimx,dimy,dimz);
59 imageresult2->SetExtent(0,dimx-1,0,dimy-1,0,dimz-1);
61 #if (VTK_MAJOR_VERSION <= 5)
62 imageresult2->SetWholeExtent(0,dimx-1,0,dimy,0,dimz-1);
63 imageresult2->SetScalarTypeToUnsignedShort();
64 imageresult2->AllocateScalars();
65 imageresult2->Update();
67 #if (VTK_MAJOR_VERSION >= 6)
68 imageresult2->AllocateScalars( VTK_UNSIGNED_SHORT ,1 );
82 xx = (double)x * bbGetInputSpcOut()[0] + bbGetInputExtOut()[0] ;
83 yy = (double)y * bbGetInputSpcOut()[1] + bbGetInputExtOut()[2] ;
84 zz = (double)z * bbGetInputSpcOut()[2] + bbGetInputExtOut()[4] ;
86 value = creaimagecomplement->GetVoxelFromComplementImage_In_BaseCreaImage_Universe(xx,yy,zz);
87 p = (unsigned short *)imageresult->GetScalarPointer( x,y,z );
88 *p = (unsigned short)value;
90 value = creaimage1->GetVoxelInImageUniverse(xx,yy,zz);
91 p = (unsigned short *)imageresult2->GetScalarPointer( x,y,z );
92 *p = (unsigned short)value;
101 bbSetOutputOut(imageresult);
102 bbSetOutputOut2(imageresult2);
104 bbSetOutputOut(NULL);
111 void CreateComplementImage::bbUserConstructor()
113 creaimage1 = new CreaImage();
114 creaimage2 = new CreaImage();
115 creaimagecomplement = new CreaImageComplement();
116 imageresult = vtkImageData::New();
117 imageresult2 = vtkImageData::New();
120 void CreateComplementImage::bbUserCopyConstructor(bbtk::BlackBox::Pointer)
125 void CreateComplementImage::bbUserDestructor()
136 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
138 void CreateComplementImage::bbUserSetDefaultValues()
140 creaimage1 = new CreaImage();
141 creaimage2 = new CreaImage();
142 creaimagecomplement = new CreaImageComplement();
143 imageresult = vtkImageData::New();
144 imageresult2 = vtkImageData::New();
150 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
152 void CreateComplementImage::bbUserInitializeProcessing()
155 // THE INITIALIZATION METHOD BODY :
157 // but this is where you should allocate the internal/output pointers
163 // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost)
165 void CreateComplementImage::bbUserFinalizeProcessing()
168 // THE FINALIZATION METHOD BODY :
170 // but this is where you should desallocate the internal/output pointers
181 // EO namespace bbTransform3Ddicom