X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fvtk%2Fsrc%2FbbvtkInversCrop.cxx;h=75d4e53e57574644639ce0b071309679adda11a4;hb=289cdf3cc42f79ba663a6346cb322f0e3c12958a;hp=28c097afe9bed7b59d237b89d812c3e055e65dbc;hpb=ddc63e39c2ec439a7b383fd0be55aff6b1d46a84;p=bbtk.git diff --git a/packages/vtk/src/bbvtkInversCrop.cxx b/packages/vtk/src/bbvtkInversCrop.cxx index 28c097a..75d4e53 100644 --- a/packages/vtk/src/bbvtkInversCrop.cxx +++ b/packages/vtk/src/bbvtkInversCrop.cxx @@ -28,7 +28,6 @@ void InversCrop::Process() if (bbGetInputActive()==true) { -printf("EED InversCrop::Process %d %d %d\n", bbGetInputOrigin()[0], bbGetInputOrigin()[1], bbGetInputOrigin()[2]); if ( (bbGetInputImageFix()!=NULL) && (bbGetInputImageMove()!=NULL) ) { if ( bbGetInputImageFix()->GetScalarType()==bbGetInputImageMove()->GetScalarType() ) @@ -50,6 +49,9 @@ printf("EED InversCrop::Process %d %d %d\n", bbGetInputOrigin()[0], bbGetInputOr _imageoutput->SetSpacing( bbGetInputImageFix()->GetSpacing() ); _imageoutput->SetDimensions( dim[0], dim[1], dim[2] ); _imageoutput->AllocateScalars(); + // Duplicating Fix Image + long sizeimage = dim[0]*dim[1]*dim[2]*bbGetInputImageFix()->GetScalarSize(); + memcpy( _imageoutput->GetScalarPointer() , bbGetInputImageFix()->GetScalarPointer() , sizeimage); } if (bbGetInputType()==1) { @@ -57,46 +59,41 @@ printf("EED InversCrop::Process %d %d %d\n", bbGetInputOrigin()[0], bbGetInputOr } - // Duplicating Fix Image - long sizeimage = dim[0]*dim[1]*dim[2]*bbGetInputImageFix()->GetScalarSize(); - memcpy( _imageoutput->GetScalarPointer() , bbGetInputImageFix()->GetScalarPointer() , sizeimage); // Copy the Move Image int j,k; int px,py,pz; bbGetInputImageMove()->GetWholeExtent(ext); - int dimMoveX = ext[1]-ext[0]+1; - int dimMoveY = ext[3]-ext[2]+1; - int dimMoveZ = ext[5]-ext[4]+1; + int dimMoveX = ext[1]-ext[0]+1; + int dimMoveY = ext[3]-ext[2]+1; + int dimMoveZ = ext[5]-ext[4]+1; - int spxM=0; // start px MoveImage - int sizeXM=0; // sizeX MoveImage + int spxM = 0; // start px MoveImage + int sizeXM = 0; // sizeX MoveImage - px=bbGetInputOrigin()[0]; - spxM=0; - if (px<=0) + px = bbGetInputOrigin()[0]; + spxM = 0; + if (px<0) { spxM=px*(-1); px=0; } sizeXM = dimMoveX-spxM; if (px+sizeXM>=dim[0]) sizeXM=dim[0]-px; - sizeXM=sizeXM*bbGetInputImageFix()->GetScalarSize(); for (k=0; k=0) && (pz>=0) && - (sizeXM>0) ) - { - memcpy( _imageoutput->GetScalarPointer(px,py,pz) , bbGetInputImageMove()->GetScalarPointer(spxM,j,k) , sizeXM ); - } + pz=k+bbGetInputOrigin()[2]; + if ( (py=0) && (pz>=0) && + (sizeXM>0) ) + { + memcpy( _imageoutput->GetScalarPointer(px,py,pz) , bbGetInputImageMove()->GetScalarPointer(spxM,j,k) , sizeXM ); + } } // for j } // for k @@ -104,6 +101,8 @@ printf("EED InversCrop::Process %d %d %d\n", bbGetInputOrigin()[0], bbGetInputOr } // If Image Fixe Move the same GetScalarType else { printf ("ERROR: InversCrop both ImageFixe and ImageMove need the same format.\n"); + printf (" type ImageFix:%d type ImageMove:%d\n", bbGetInputImageFix()->GetScalarType(), bbGetInputImageMove()->GetScalarType() ); + } } // If Image Fixe Move != NULL else {