From a641df2aea8da216dfa3eed320567d6377840720 Mon Sep 17 00:00:00 2001 From: Eduardo DAVILA Date: Fri, 29 Jun 2018 15:57:02 +0200 Subject: [PATCH] #3202 BBTK Feature New Normal - fast algorithm for ImageBoundaries box --- packages/vtk/src/bbvtkImageBoundaries.cxx | 49 +++++++++++++++++------ 1 file changed, 37 insertions(+), 12 deletions(-) diff --git a/packages/vtk/src/bbvtkImageBoundaries.cxx b/packages/vtk/src/bbvtkImageBoundaries.cxx index b76ce96..fb9eb24 100644 --- a/packages/vtk/src/bbvtkImageBoundaries.cxx +++ b/packages/vtk/src/bbvtkImageBoundaries.cxx @@ -30,6 +30,9 @@ //===== #include "bbvtkImageBoundaries.h" #include "bbvtkPackage.h" +#include "creaVtk_MACROS.h" + +#include namespace bbvtk { @@ -40,18 +43,13 @@ BBTK_BLACK_BOX_IMPLEMENTATION(ImageBoundaries,bbtk::AtomicBlackBox); //===== void ImageBoundaries::Process() { - printf("bbtk:vtk::ImageBoundaries::Process start\n"); if (bbGetInputIn()!=NULL) { - int i,j,k; - int ext[6]; - double value; - + int ext[6]; bbGetInputIn()->GetWholeExtent(ext); int maxX = ext[1]-ext[0]+1; int maxY = ext[3]-ext[2]+1; int maxZ = ext[5]-ext[4]+1; - int bXMax = 0; int bYMax = 0; int bZMax = 0; @@ -59,13 +57,17 @@ void ImageBoundaries::Process() int bYMin = maxY-1; int bZMin = maxZ-1; - for (i=0 ; iGetScalarComponentAsDouble(i, j, k,0); + double value = bbGetInputIn()->GetScalarComponentAsDouble(i, j, k,0); if ( (value>=bbGetInputLowerValue()) && (value<=bbGetInputUpperValue()) ) { if (iGetScalarComponentAsDouble(i, j, k,0); + GETVALUE2_VTK_CREA(vI,pI,stI,index) + index++; + if ( (vI>=bbGetInputLowerValue()) && (vI<=bbGetInputUpperValue()) ) + { + if (ibXMax) bXMax=i; + if (j>bYMax) bYMax=j; + if (k>bZMax) bZMax=k; + } + } // for k + } // for j + } // i std::vector tmpIndex; std::vector tmpSize; - if (bXMin>bXMax){ tmpIndex.push_back(0); tmpIndex.push_back(0); @@ -97,13 +124,11 @@ void ImageBoundaries::Process() tmpSize.push_back(bYMax-bYMin+1); tmpSize.push_back(bZMax-bZMin+1); } - bbSetOutputIndex(tmpIndex); bbSetOutputSize(tmpSize); } else { printf("bbtk warnning: bbtk:vtk:ImageBoundaries box, Input image (In) not initialized..\n"); } - printf("bbtk:vtk::ImageBoundaries::Process end\n"); } //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) -- 2.44.0