#include "bbUtilitiesImageOr.h" #include "bbUtilitiesPackage.h" namespace bbUtilities { BBTK_ADD_BLACK_BOX_TO_PACKAGE(Utilities,ImageOr) BBTK_BLACK_BOX_IMPLEMENTATION(ImageOr,bbtk::AtomicBlackBox); void ImageOr::Process() { vtkImageData* img1 = bbGetInputIn1(); vtkImageData* img2 = bbGetInputIn2(); _img = NULL; if(img1!=NULL && img2 != NULL){ _img = vtkImageData::New(); _img->SetScalarTypeToUnsignedShort(); _img->SetSpacing(img1->GetSpacing()); _img->SetExtent(img1->GetExtent()); _img->AllocateScalars(); int extint[6]; _img->GetExtent(extint); unsigned short* ptr1; unsigned short* ptr2; unsigned short* ptr; for (int i=extint[0];i <= extint[1];i++){ for (int j=extint[2];j<=extint[3];j++){ for (int k=extint[4];k<=extint[5];k++){ ptr1=(unsigned short*) img1->GetScalarPointer(i,j,k); //en *ptr esta el nivel de gris del punto ptr2=(unsigned short*)img2->GetScalarPointer(i,j,k); ptr=(unsigned short*)_img->GetScalarPointer(i,j,k); *ptr = *ptr1 + *ptr2; } } } } bbSetOutputOut(_img); } void ImageOr::bbUserSetDefaultValues() { _img =NULL; bbSetInputIn1(NULL); bbSetInputIn2(NULL); bbSetOutputOut(NULL); } void ImageOr::bbUserInitializeProcessing() { } void ImageOr::bbUserFinalizeProcessing() { if(_img!=NULL){ _img->Delete(); } } } // EO namespace bbUtilities