#include "bbUtilitiesImageAND.h" #include "bbUtilitiesPackage.h" #include "vtkMetaImageWriter.h" namespace bbUtilities { BBTK_ADD_BLACK_BOX_TO_PACKAGE(Utilities,ImageAND) //BBTK_USER_BLACK_BOX_IMPLEMENTATION(ImageAND,bbtk::AtomicBlackBox); BBTK_BLACK_BOX_IMPLEMENTATION(ImageAND,bbtk::AtomicBlackBox); void ImageAND::Process() { //getting the input vtkImageData* img = bbGetInputImageIn(); vtkImageData* imgbin = bbGetInputImageInBin(); //CREANDO LA NUEVA IMAGEN filteredImage = vtkImageData::New(); //Coping the image information from the original filteredImage->SetScalarTypeToUnsignedShort(); filteredImage->SetNumberOfScalarComponents(1); double* spc = img->GetSpacing(); filteredImage->SetSpacing(spc[0], spc[1], spc[2]); filteredImage->SetOrigin(0, 0, 0); int extint[6]; img->GetExtent(extint); filteredImage->SetExtent(extint); filteredImage->AllocateScalars(); //HACIENDO EL AND unsigned short* ptr=NULL; unsigned short* ptrBin=NULL; unsigned short* ptrFilt=NULL; 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++){ ptr=(unsigned short*) img->GetScalarPointer(i,j,k); //en *ptr esta el nivel de gris del punto ptrBin=(unsigned short*)imgbin->GetScalarPointer(i,j,k); ptrFilt=(unsigned short*)filteredImage->GetScalarPointer(i,j,k); int dBin=(int)(*ptrBin); int dptr= (int)(*ptr); if(dBin == 255) *ptrFilt = *ptr; else *ptrFilt = 0; } } } //DEFINIENDO LA SALIDA bbSetOutputImageOut(filteredImage); } void ImageAND::bbUserSetDefaultValues() { filteredImage=NULL; } void ImageAND::bbUserInitializeProcessing() { } void ImageAND::bbUserFinalizeProcessing() { } } // EO namespace bbUtilities