#include "bbUtilitiesChangeImageDimensions.h" #include "bbUtilitiesPackage.h" namespace bbUtilities { BBTK_ADD_BLACK_BOX_TO_PACKAGE(Utilities,ChangeImageDimensions) BBTK_BLACK_BOX_IMPLEMENTATION(ChangeImageDimensions,bbtk::AtomicBlackBox); void ChangeImageDimensions::Process() { vtkImageData* img0 = bbGetInputIn(); int *ext0 = img0->GetExtent(); int x1, y1, z1; unsigned short *ptr0, *ptr1; //std::vector ext1 = bbGetInputExtent(); double* ext1 = bbGetInputBounds(); int x1min=ext1[0], x1max=ext1[1], y1min=ext1[2], y1max=ext1[3], z1min=ext1[4], z1max=ext1[5]; vtkImageData* img1 = vtkImageData::New(); img1->SetScalarTypeToUnsignedShort(); img1->SetDimensions(x1max-x1min, y1max-y1min, z1max-z1min); img1->SetSpacing(img0->GetSpacing()); img1->AllocateScalars(); for(int i = x1min; i < x1max; i++){ for(int j = y1min; j < y1max; j++){ for(int k = z1min; k < z1max; k++){ ptr1 = (unsigned short*)img1->GetScalarPointer(i,j,k); *ptr1 = 0; } } } for(int i = ext0[0]; i < ext0[1]; i++){ for(int j = ext0[2]; j < ext0[3]; j++){ for(int k = ext0[4]; k < ext0[5]; k++){ int tempx = ext0[1]-ext0[0]; int tempy = ext0[3]-ext0[2]; int tempz = ext0[5]-ext0[4]; x1 = i*(x1max-x1min); y1 = j*(y1max-y1min); z1 = k*(z1max-z1min); x1 = x1/tempx; y1 = y1/tempy; z1 = z1/tempz; if(x1min<=x1 && x1 <= x1max && y1min <= y1 && y1 <= y1max && z1min <= z1 && z1 <= z1max){ ptr0 = (unsigned short*)img0->GetScalarPointer(i, j, k); ptr1 = (unsigned short*)img1->GetScalarPointer(x1,y1,z1); if(*ptr1==0){ *ptr1 = *ptr0; } }else{ std::cout<< "Error creating image in Change Dimensions"<