]> Creatis software - creaMaracasVisu.git/commitdiff
2041 Feature box SliceImage of XY,YZ,XZ and FREE planes
authorEduardo DAVILA <eduardo.davila@creatis.insa-lyon.fr>
Mon, 10 Jun 2013 15:26:19 +0000 (17:26 +0200)
committerEduardo DAVILA <eduardo.davila@creatis.insa-lyon.fr>
Mon, 10 Jun 2013 15:26:19 +0000 (17:26 +0200)
bbtk/src/bbcreaMaracasVisuSliceImage.cxx
bbtk/src/bbcreaMaracasVisuSliceImage.h

index d8a4b758cdf7ba8559b6ca8e603d0508a5380147..03cbf7295ae4d78e352b19927b4e2ac3ff3398dd 100644 (file)
@@ -34,7 +34,6 @@ BBTK_ADD_BLACK_BOX_TO_PACKAGE(creaMaracasVisu,SliceImage)
 BBTK_BLACK_BOX_IMPLEMENTATION(SliceImage,bbtk::AtomicBlackBox);
 void SliceImage::Process()
 {
-       //printf("EED 0 SliceImage::Process \n");
        vtkImageData *imagedata=NULL;
 
        //std::cout<<"MSJ: test SliceImage::Process()"<<this<<std::endl;
@@ -43,24 +42,57 @@ void SliceImage::Process()
          imageReslice->SetInput( bbGetInputIn() );
          imageReslice->SetInformationInput(bbGetInputIn() );
 
-         if (bbGetInputTypeOrientation()==2)
+
+         if (bbGetInputTypeOrientation()==3)
+         {
+               // Orientation 3 = FREE
+               // v1 = [ v1x , v1y , v1z ]
+               // v2 = [ v2x , v2y , v2z ]
+               // v3 = [ v3x , v3y , v3z ]
+               // SetResliceAxesDirectionCosines(v1x,v2x,v3x,v1y,v2y,v3y,v1z,v2z,v3z);
+              imageReslice->SetResliceAxesDirectionCosines( bbGetInputResliceAxesDirectionCosines()[0],  // v1x
+                                                             bbGetInputResliceAxesDirectionCosines()[3],  // v2x
+                                                             bbGetInputResliceAxesDirectionCosines()[6],  // v3x
+                                                             bbGetInputResliceAxesDirectionCosines()[1],  // v1y
+                                                             bbGetInputResliceAxesDirectionCosines()[4],  // v2y
+                                                             bbGetInputResliceAxesDirectionCosines()[7],  // v3y
+                                                             bbGetInputResliceAxesDirectionCosines()[2],  // v1z
+                                                             bbGetInputResliceAxesDirectionCosines()[5],  // v2z
+                                                             bbGetInputResliceAxesDirectionCosines()[8]   // v3z
+                                                           );  
+              imageReslice->SetResliceAxesOrigin( bbGetInputSlice()*bbGetInputIn()->GetSpacing()[0] ,0 ,0);
+         } else if (bbGetInputTypeOrientation()==2)
          {
-              imageReslice->SetResliceAxesDirectionCosines(0,0,-1, 1,0,0 ,0,-1,0);  // 2=YZ
-              imageReslice->SetResliceAxesOrigin( bbGetInputZ()*bbGetInputIn()->GetSpacing()[0] ,0 ,0);
+               // Orientation 2 = YZ
+               // v1 = [ 0 , 0 ,-1 ]
+               // v2 = [ 1 , 0 , 0 ]
+               // v3 = [ 0 ,-1 , 0 ]
+               // SetResliceAxesDirectionCosines(v1x,v2x,v3x,v1y,v2y,v3y,v1z,v2z,v3z);
+              imageReslice->SetResliceAxesDirectionCosines(0,1,0, 0,0,-1 ,-1,0,0);  
+              imageReslice->SetResliceAxesOrigin( bbGetInputSlice()*bbGetInputIn()->GetSpacing()[0] ,0 ,0);
          } else if (bbGetInputTypeOrientation()==1) {     
-              imageReslice->SetResliceAxesDirectionCosines(1,0,0, 0,0,-1 ,0,1,0);  // 1=XZ
-              imageReslice->SetResliceAxesOrigin(0, bbGetInputZ()*bbGetInputIn()->GetSpacing()[1],0 );
+               // Orientation 1 = XZ
+               // v1 = [ 1 , 0 , 0 ]
+               // v2 = [ 0 , 0 , 1 ]
+               // v3 = [ 0 ,-1 , 0 ]
+               // SetResliceAxesDirectionCosines(v1x,v2x,v3x,v1y,v2y,v3y,v1z,v2z,v3z);
+              imageReslice->SetResliceAxesDirectionCosines(1,0,0, 0,0,-1 ,0,1,0); 
+              imageReslice->SetResliceAxesOrigin(0, bbGetInputSlice()*bbGetInputIn()->GetSpacing()[1],0 );
          } else    
          {
-              imageReslice->SetResliceAxesDirectionCosines(1,0,0, 0,1,0 ,0,0,1);   // 0=XY
-              imageReslice->SetResliceAxesOrigin(0,0, bbGetInputZ()*bbGetInputIn()->GetSpacing()[2] );
+               // Orientation 0 = XY
+               // v1 = [ 1 , 0 , 0 ]
+               // v2 = [ 0 , 1 , 0 ]
+               // v3 = [ 0 , 0 , 1 ]
+               // SetResliceAxesDirectionCosines(v1x,v2x,v3x,v1y,v2y,v3y,v1z,v2z,v3z);
+              imageReslice->SetResliceAxesDirectionCosines(1,0,0, 0,1,0 ,0,0,1);   
+              imageReslice->SetResliceAxesOrigin(0,0, bbGetInputSlice()*bbGetInputIn()->GetSpacing()[2] );
          } 
          imageReslice->SetOutputDimensionality(2);
          imageReslice->SetInterpolationModeToLinear();
          imagedata = imageReslice->GetOutput();
          imagedata->Update();
          imagedata->UpdateInformation();       
-         //printf("EED 1 SliceImage::Process %p\n", imagedata);
        }
   bbSetOutputOut( imagedata );
 }
@@ -71,8 +103,22 @@ void SliceImage::Process()
        {
                bbSetInputIn(NULL);
                bbSetInputZ(0);
+               bbSetInputSlice(0);
                bbSetInputTypeOrientation(0);
                imageReslice=NULL;
+               std::vector<double> lstCos;
+                lstCos.push_back(1); // v1x
+                lstCos.push_back(0); // v1y
+                lstCos.push_back(0); // v1z
+
+                lstCos.push_back(0); // v2x
+                lstCos.push_back(1); // v2y
+                lstCos.push_back(0); // v2z
+
+                lstCos.push_back(0); // v3x
+                lstCos.push_back(0); // v3y
+                lstCos.push_back(1); // v3z
+                bbSetInputResliceAxesDirectionCosines(lstCos);
        }
        
        //-----------------------------------------------------------------     
index b02f2eaabfaa3f006095040cda6115aeebb9b2c1..f1ed07aa2bb48e444fb8e8d30065b968ff018295 100644 (file)
@@ -42,7 +42,9 @@ class bbcreaMaracasVisu_EXPORT SliceImage
   BBTK_BLACK_BOX_INTERFACE(SliceImage,bbtk::AtomicBlackBox);
   BBTK_DECLARE_INPUT(In,vtkImageData*);
   BBTK_DECLARE_INPUT(Z, double );
+  BBTK_DECLARE_INPUT(Slice, double );
   BBTK_DECLARE_INPUT(TypeOrientation, int );
+  BBTK_DECLARE_INPUT(ResliceAxesDirectionCosines, std::vector<double> );
   BBTK_DECLARE_OUTPUT(Out,vtkImageData*);
   BBTK_PROCESS(Process);
   void Process();
@@ -57,8 +59,10 @@ BBTK_AUTHOR("eduardo.davila@creatis.insa-lyon.fr");
 BBTK_DESCRIPTION("filter");
 BBTK_CATEGORY("");
 BBTK_INPUT(SliceImage,In,"Input image",vtkImageData *,"");
-BBTK_INPUT(SliceImage,Z,"Z",double,"");
-BBTK_INPUT(SliceImage,TypeOrientation,"Type orientation (default 0) 0=XY 1=XZ 2=YZ",int,"");
+BBTK_INPUT(SliceImage,Slice,"Slice",double,"");
+BBTK_INPUT(SliceImage,Z,"Z (deprecated)",double,"");
+BBTK_INPUT(SliceImage,ResliceAxesDirectionCosines,"ResliceAxesDirectionCosines [v1x,v1y,v1z,v2x,v2y,v2z,v3x,v3y,v3z],  ",std::vector<double>,"");
+BBTK_INPUT(SliceImage,TypeOrientation,"Type orientation (default 0) 0=XY, 1=XZ, 2=YZ, 3=Free (Set the input ResliceAxesDirectionCosines)",int,"");
 BBTK_OUTPUT(SliceImage,Out,"Output image",vtkImageData *,"");
 BBTK_END_DESCRIBE_BLACK_BOX(SliceImage);
 }