]> Creatis software - creaVtk.git/blobdiff - bbtk_creaVtk_PKG/src/bbcreaVtkApplyMask.cxx
random option VolumVector visu
[creaVtk.git] / bbtk_creaVtk_PKG / src / bbcreaVtkApplyMask.cxx
index 74a7ce55d491baea85bcc891cab86fbd9d05cc62..463ee223014c2fef4b19ff71ea3bca51abb7608f 100644 (file)
@@ -34,17 +34,20 @@ void ApplyMask::Process()
 
        if ((bbGetInputImage()!=NULL) && (bbGetInputMask()!=NULL))
        {
-               int                     extImage[6];
-               int                     extMask[6];
-               vtkImageData    *resultImage=NULL;
+               int                             extImage[6];
+               int                             extMask[6];
+               vtkImageData            *resultImage=NULL;
                bbGetInputImage()->GetExtent( extImage );
                bbGetInputImage()->GetExtent( extMask );
-               int dimXImage   = extImage[1]-extImage[0]+1;
-               int dimYImage   = extImage[3]-extImage[2]+1;
-               int dimZImage   = extImage[5]-extImage[4]+1;
-               int dimXMask    = extMask[1]-extMask[0]+1;
-               int dimYMask    = extMask[3]-extMask[2]+1;
-               int dimZMask    = extMask[5]-extMask[4]+1;
+               int dimXImage           = extImage[1]-extImage[0]+1;
+               int dimYImage           = extImage[3]-extImage[2]+1;
+               int dimZImage           = extImage[5]-extImage[4]+1;
+               int dimXMask            = extMask[1]-extMask[0]+1;
+               int dimYMask            = extMask[3]-extMask[2]+1;
+               int dimZMask            = extMask[5]-extMask[4]+1;
+
+               double background       = bbGetInputBackground();
+               double bgToAnalice      = bbGetInputBackgroundToAnalice();
 
                if (bbGetInputType()==0)
                {
@@ -81,49 +84,62 @@ void ApplyMask::Process()
                        (dimZImage==dimZMask)) 
                        {
                                long int i, size = dimXImage * dimYImage * dimZImage;
+                               DEF_POINTER_IMAGE_VTK_CREA(vI,ssI,pI,stI, bbGetInputImage() );
+                               DEF_POINTER_IMAGE_VTK_CREA(vM,ssM,pM,stM, bbGetInputMask() );
+                               DEF_POINTER_IMAGE_VTK_CREA(vO,ssO,pO,stO, resultImage );
+
+long int k1omp=(double)(size-1)*0.0;
+long int k2omp=(double)(size-1)*0.2;
+long int k3omp=(double)(size-1)*0.4;
+long int k4omp=(double)(size-1)*0.6;
+long int k5omp=(double)(size-1)*0.8;
+long int k6omp=(double)(size-1)*1.0;
+printf("EED ApplyMask::Process (with openmp)\n");
                                #pragma omp parallel for 
                                for (i=0; i<size;i++)
                                {
-                                       DEF_POINTER_IMAGE_VTK_CREA(vI,ssI,pI,stI, bbGetInputImage() );
-                                       DEF_POINTER_IMAGE_VTK_CREA(vM,ssM,pM,stM, bbGetInputMask() );
-                                       DEF_POINTER_IMAGE_VTK_CREA(vO,ssO,pO,stO, resultImage );
-                                       GETVALUE2_VTK_CREA(vM,pM,stM,i);
+if ( (k1omp==i) || (k2omp==i) || (k3omp==i) || 
+     (k4omp==i) || (k5omp==i) || (k6omp==i) ) { printf("  %d%\n", (int)(((double)i/(double)(size-1))*100 )); }
+                                       double vItmpOMP;
+                                       double vMtmpOMP;
+                                       double vOtmpOMP;
+                                       GETVALUE2_VTK_CREA(vMtmpOMP,pM,stM,i);
 
                                        if (bbGetInputType()==0)  //Applay mask to new Image
                                        {               
-                                               GETVALUE2_VTK_CREA(vI,pI,stI,i);
-                                               if (vM!=0)
+                                               GETVALUE2_VTK_CREA(vItmpOMP,pI,stI,i);
+                                               if (vMtmpOMP!=bgToAnalice)
                                                {
-                                                       vO = vI;
+                                                       vOtmpOMP = vItmpOMP;
                                                } else {
-                                                       vO = bbGetInputBackground()
-                                               }
-                                               SETVALUE2_VTK_CREA(vO,pO,stO,i);        
+                                                       vOtmpOMP = background
+                                               } // if vM
+                                               SETVALUE2_VTK_CREA(vOtmpOMP,pO,stO,i);  
                                        } // if Type==0
 
                                        if (bbGetInputType()==1)  //Modifiy the Input image with the Label value in Mask place
                                        {               
-                                               if (vM!=0)
+                                               if (vMtmpOMP!=bgToAnalice)
                                                {
-                                                       vO = bbGetInputLabel();
-                                                       SETVALUE2_VTK_CREA(vO,pO,stO,i);        
+                                                       vOtmpOMP = bbGetInputLabel();
+                                                       SETVALUE2_VTK_CREA(vOtmpOMP,pO,stO,i);  
                                                }
-                                       } // if Type==0
+                                       } // if Type==1
 
                                        if (bbGetInputType()==2)  //Modifiy the Input image with the Mask value
                                        {               
-                                               if (vM!=0)
+                                               if (vMtmpOMP!=bgToAnalice)
                                                {
-                                                       vO = vM;
-                                                       SETVALUE2_VTK_CREA(vO,pO,stO,i);        
+                                                       vOtmpOMP = vMtmpOMP;
+                                                       SETVALUE2_VTK_CREA(vOtmpOMP,pO,stO,i);  
                                                }
-                                       } // if Type==0
+                                       } // if Type==2
 
                                } // for
                } //if dim
-       bbSetOutputOut( resultImage );
+               resultImage->Modified();
+               bbSetOutputOut( resultImage );
        } // if Image && Mask   
-
 }
 //===== 
 // 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)
@@ -135,7 +151,8 @@ void ApplyMask::bbUserSetDefaultValues()
 //    Here we initialize the input 'In' to 0
    bbSetInputImage(NULL);
    bbSetInputMask(NULL);
-   bbSetInputBackground(0);
+   bbSetInputBackground(0);             // output image Type 0
+   bbSetInputBackgroundToAnalice(0);
    bbSetInputLabel(255);
    bbSetInputType(0);
    bbSetOutputOut(NULL);