]> Creatis software - clitk.git/blobdiff - vv/vvSlicer.cxx
Added Manual Registration Tool with updated Median Filter tool
[clitk.git] / vv / vvSlicer.cxx
index 9552a387f061770d527c20bd4f1aefbec2753e1d..256981fba78528394cb9f21b67828f7efefc94f8 100644 (file)
@@ -64,6 +64,7 @@
 #include <vtkCutter.h>
 #include <vtkAssignAttribute.h>
 #include <vtkImageAccumulate.h>
+#include <vtkImageReslice.h>
 
 vtkCxxRevisionMacro(vvSlicer, "DummyRevision");
 vtkStandardNewMacro(vvSlicer);
@@ -140,6 +141,7 @@ vvSlicer::vvSlicer()
   this->WindowLevel->Delete();
   this->WindowLevel = vvImageMapToWLColors::New();
   this->InstallPipeline();
+  
 }
 //------------------------------------------------------------------------------
 
@@ -1176,8 +1178,8 @@ void vvSlicer::GetExtremasAroundMousePointer(double & min, double & max)
     {
       if (i!=SliceOrientation) //SR: assumes that SliceOrientation is valid in ViewCoordinates (???)
         {
-         fLocalExtents[i*2  ] -= 0.2;
-         fLocalExtents[i*2+1] += 0.2;
+             fLocalExtents[i*2  ] -= 0.2;
+             fLocalExtents[i*2+1] += 0.2;
         }
     }
   this->Renderer->ViewToWorld(fLocalExtents[0], fLocalExtents[2], fLocalExtents[4]);
@@ -1194,17 +1196,24 @@ void vvSlicer::GetExtremasAroundMousePointer(double & min, double & max)
       iLocalExtents[i*2+1] = lrint(fLocalExtents[i*2+1]);
 
       if(iLocalExtents[i*2  ]>iLocalExtents[i*2+1])
-       std::swap(iLocalExtents[i*2], iLocalExtents[i*2+1]);
+         std::swap(iLocalExtents[i*2], iLocalExtents[i*2+1]);
     }
-    
+
   vtkSmartPointer<vtkExtractVOI> voiFilter = vtkExtractVOI::New();
   voiFilter->SetInput(this->GetInput());
   voiFilter->SetVOI(iLocalExtents);
+  voiFilter->Update();
+  if (!voiFilter->GetOutput()->GetNumberOfPoints())
+    {
+      min = 0;
+      max = 0;
+      return;
+    }
 
   vtkSmartPointer<vtkImageAccumulate> accFilter = vtkImageAccumulate::New();
   accFilter->SetInput(voiFilter->GetOutput());
   accFilter->Update();
-   
+  
   min = *(accFilter->GetMin());
   max = *(accFilter->GetMax());
 }
@@ -1279,10 +1288,9 @@ void vvSlicer::Render()
           pixel2 << (int)Y;
           pixel3 << (int)Z;
           temps << mCurrentTSlice;
-          double value = this->GetInput()->GetScalarComponentAsDouble(
-                                                                      (int)X,
-                                                                      (int)Y,
-                                                                      (int)Z,0);
+          double value = this->GetInput()->GetScalarComponentAsDouble(lrint(X),
+                                                                      lrint(Y),
+                                                                      lrint(Z),0);
 
           std::stringstream val;
           val << value;
@@ -1408,3 +1416,8 @@ void vvSlicer::PrintSelf(ostream& os, vtkIndent indent)
 //----------------------------------------------------------------------------
 
 
+   
+   
+
+
+