]> Creatis software - creaVtk.git/commitdiff
#3530 bbcreaVtkTurnImage optimisation
authoreduardo.davila@creatis.insa-lyon.fr <eduardo.davila@creatis.insa-lyon.fr>
Thu, 17 Oct 2024 13:57:42 +0000 (15:57 +0200)
committereduardo.davila@creatis.insa-lyon.fr <eduardo.davila@creatis.insa-lyon.fr>
Thu, 17 Oct 2024 13:57:42 +0000 (15:57 +0200)
bbtk_creaVtk_PKG/.DS_Store
bbtk_creaVtk_PKG/src/bbcreaVtkTurnImage.cxx

index afa815535c7de6d6e2d9472d3384e822300392fe..8fd3482ce295b13412c4a47a718c628794e1ca1a 100644 (file)
Binary files a/bbtk_creaVtk_PKG/.DS_Store and b/bbtk_creaVtk_PKG/.DS_Store differ
index 581df5025607846e9e374fc2bea53a09a82c8309..7afd2e9f9bb4bc5b84c8d13061b2e76588406a93 100644 (file)
@@ -75,69 +75,65 @@ void TurnImage::Process()
          DEF_POINTER_IMAGE_VTK_CREA(vIn,ssIn,pIn,stIn,bbGetInputIn())
          DEF_POINTER_IMAGE_VTK_CREA(vNI,ssNI,pNI,stNI,newImage)
          
-         
          long int index=0;
          int i,j,k;
          double value;
          for (k=0;k<dim[2];k++)
          {
-         for (j=0;j<dim[1];j++)
-         {
-         
-         for (i=0;i<dim[0];i++)
-         {
+             for (j=0;j<dim[1];j++)
+             {
          
-         GETVALUE2_VTK_CREA(vIn,pIn,stIn,index)
-         //old                                 value = bbGetInputIn()->GetScalarComponentAsDouble (i,j,k,0);
-         if (bbGetInputDir()==1)
-         {
-         SETVALUE2_VTK_CREA(vIn,pNI,stNI, j + (dim[2]-k-1)*dim[1] + i*dim[1]*dim[2] )
-         //old                                         newImage->SetScalarComponentFromDouble(j,dim[2]-k-1,i,0,value);
-         } else if (bbGetInputDir()==2)
-         {
-         SETVALUE2_VTK_CREA(vIn,pNI,stNI, i + (dim[2]-k-1)*dim[0] + j*dim[0]*dim[2] )
-         //old                                         newImage->SetScalarComponentFromDouble(i,dim[2]-k-1,j,0,value);
-         } else {
-         SETVALUE2_VTK_CREA(vIn,pNI,stNI,index)
-         //old                                         newImage->SetScalarComponentFromDouble(i,j,k,0,value);
-         }// if Dir
-         //                    index++;
-         } // for i
+                 for (i=0;i<dim[0];i++)
+                 {
+                     GETVALUE2_VTK_CREA(vIn,pIn,stIn,index)
+                     //old                                     value = bbGetInputIn()->GetScalarComponentAsDouble (i,j,k,0);
+                     if (bbGetInputDir()==1)
+                     {
+                         SETVALUE2_VTK_CREA(vIn,pNI,stNI, j + (dim[2]-k-1)*dim[1] + i*dim[1]*dim[2] )
+                         //old                                         newImage->SetScalarComponentFromDouble(j,dim[2]-k-1,i,0,value);
+                     } else if (bbGetInputDir()==2)
+                     {
+                         SETVALUE2_VTK_CREA(vIn,pNI,stNI, i + (dim[2]-k-1)*dim[0] + j*dim[0]*dim[2] )
+                         //old                                         newImage->SetScalarComponentFromDouble(i,dim[2]-k-1,j,0,value);
+                     } else {
+                         SETVALUE2_VTK_CREA(vIn,pNI,stNI,index)
+                         //old                                         newImage->SetScalarComponentFromDouble(i,j,k,0,value);
+                     }// if Dir
+                                         index++;
+                 } // for i
          
-         } // for j
+             } // for j
          } // for k
          bbSetOutputOut(newImage);
-         */
-        
-        /*
-         vtkImagePermute *permute = vtkImagePermute::New();
-         permute->SetInputData( bbGetInputIn() );
-         permute->SetFilteredAxes (0,2,1);
-         permute->Update();
-         bbSetOutputOut( permute->GetOutput() );
-         */
-        
-        // Rotate about the center
-        //         vtkTransform *transform;
-        //         transform->Translate(center[0], center[1], center[2]);
-        //         transform->RotateWXYZ(angle, 0, 0, 1);
-        //         transform->Translate(-center[0], -center[1], -center[2]);
-        
-        // Reslice does all of the work.
-        vtkImageReslice *reslice = vtkImageReslice::New();
-        static double axes[3][3] = { { 1, 0, 0 }, { 0, 0, -1 }, { 0, 1, 0 } };
-        reslice->SetResliceAxesDirectionCosines(axes[0], axes[1], axes[2]);
-        //         reslice->SetOutputOrigin(0,0,0);
-        reslice->SetInputData( bbGetInputIn() );
-        reslice->SetResliceAxesOrigin( 0,0,0 );
-        reslice->SetInterpolationModeToNearestNeighbor();
-        reslice->Update();
-        
-        vtkImageChangeInformation *mchange = vtkImageChangeInformation::New();
-        mchange->SetInputData( reslice->GetOutput() );
-        mchange->SetOutputOrigin( 0,0,0 );
-        mchange->Update();
-        bbSetOutputOut( mchange->GetOutput() );
+        */
+        if ( (bbGetInputDir()==1) || (bbGetInputDir()==2) )
+        {
+            vtkImageReslice             *reslice = vtkImageReslice::New();
+            vtkImageChangeInformation   *mchange = vtkImageChangeInformation::New();
+            // Reslice does all of the work.
+            if (  bbGetInputDir()==1 )
+            {
+                static double axes[3][3] = { { 0, 1, 0 }, { 0, 0, -1 }, { 1, 0, 0 } };
+                reslice->SetResliceAxesDirectionCosines(axes[0], axes[1], axes[2]);
+            } // dir 1
+            if (  bbGetInputDir()==2 )
+            {
+                static double axes[3][3] = { { 1, 0, 0 }, { 0, 0, -1 }, { 0, 1, 0 } };
+                reslice->SetResliceAxesDirectionCosines(axes[0], axes[1], axes[2]);
+            } // dir 2
+            //         reslice->SetOutputOrigin(0,0,0);
+            reslice->SetInputData( bbGetInputIn() );
+            reslice->SetResliceAxesOrigin( 0,0,0 );
+            reslice->SetInterpolationModeToNearestNeighbor();
+            reslice->Update();
+            mchange->SetInputData( reslice->GetOutput() );
+            mchange->SetOutputOrigin( 0,0,0 );
+            mchange->Update();
+            bbSetOutputOut( mchange->GetOutput() );
+        } else {
+            bbSetOutputOut( bbGetInputIn() );
+        }// if Dir 1 or 2
+
     } else {
         bbSetOutputOut(NULL);
     }// if In!=NULL