#include "bbTransform3DdicomCreateComplementImage.h" #include "bbTransform3DdicomPackage.h" namespace bbTransform3Ddicom { BBTK_ADD_BLACK_BOX_TO_PACKAGE(Transform3Ddicom,CreateComplementImage) BBTK_BLACK_BOX_IMPLEMENTATION(CreateComplementImage,bbtk::AtomicBlackBox); void CreateComplementImage::Process() { if (( bbGetInputInImage1()!=NULL ) && ( bbGetInputInImage2()!=NULL )) { creaimage1->SetvtkImageData( bbGetInputImage1() ); creaimage1->SetImagePositionPatient( bbGetInputPosition1()[0] , bbGetInputPosition1()[1] , bbGetInputPosition1()[2] ); creaimage1->SetImageSpacing( bbGetInputSpacing1()[0] , bbGetInputSpacing1()[1] , bbGetInputSpacing1()[2] ); creaimage1->SetImageOrientation( bbGetInputOrientation1Vec1()[0] , bbGetInputOrientation1Vec1()[1] , bbGetInputOrientation1Vec1()[2] , bbGetInputOrientation1Vec2()[0] , bbGetInputOrientation1Vec2()[1] , bbGetInputOrientation1Vec2()[2] ); creaimage2->SetvtkImageData( bbGetInputImage1() ); creaimage2->SetImagePositionPatient( bbGetInputPosition1()[0] , bbGetInputPosition1()[1] , bbGetInputPosition1()[2] ); creaimage2->SetImageSpacing( bbGetInputSpacing1()[0] , bbGetInputSpacing1()[1] , bbGetInputSpacing1()[2] ); creaimage2->SetImageOrientation( bbGetInputOrientation1Vec1()[0] , bbGetInputOrientation1Vec1()[1] , bbGetInputOrientation1Vec1()[2] , bbGetInputOrientation1Vec2()[0] , bbGetInputOrientation1Vec2()[1] , bbGetInputOrientation1Vec2()[2] ); creaimagecomplement->SetBaseCreaImage( creaimage1 ); creaimagecomplement->SetComplementCreaImage( creaimage2 ); creaimagecomplement->Update(); imageresult->SetSpacing(1,1,1); imageresult->SetScalarTypeUnsignedShort(); dimx= (bbGetInputExtOut()[1] - bbGetInputExtOut()[0]) / bbGetInputSpcOut()[0]; dimy= (bbGetInputExtOut()[3] - bbGetInputExtOut()[2]) / bbGetInputSpcOut()[1]; dimz= (bbGetInputExtOut()[5] - bbGetInputExtOut()[4]) / bbGetInputSpcOut()[2]; imageresult->SetDimensions(dimx,dimy,dimz); imageresult->AllocateMemory(); int x,y,z; double xx,yy,zz; for (x=0;xGetVoxelFromComplementImage_In_BaseCreaImage_Universe(xx,yy,zz); unsigned short *p = (unsigned short *)imageresult->GetScalarPointer( x,y,z ); *p = value; }// for z } // for y }// for x bbSetOutputOut(imageresult); } else { bbSetOutputOut(NULL); } } void CreateComplementImage::bbUserConstructor() { creaimage1 = new CreaImage(); creaimage2 = new CreaImage(); creaimagecomplement = new CreaImageComplement(); imageresult = vtkImageData::New(); } void CreateComplementImage::bbUserCopyConstructor(bbtk::BlackBox::Pointer) { } void CreateComplementImage::bbUserDestructor() { delete creaimage1; delete creaimage2; } } // EO namespace bbTransform3Ddicom