]> Creatis software - clitk.git/blobdiff - vv/vvImageReader.cxx
- display binary image as overlay
[clitk.git] / vv / vvImageReader.cxx
index 7cc0e569856b160276385b1f7c81d7e9ecba03ec..5c6eba3ef40d7ffb3e8da0b5dc3b2a2ae54a2709 100644 (file)
@@ -117,5 +117,41 @@ void vvImageReader::SetInputFilenames(const std::vector<std::string> & filenames
 }
 //------------------------------------------------------------------------------
 
+
+//------------------------------------------------------------------------------
+//Read transformation in NKI format (Xdr, transposed, cm)
+void vvImageReader::ReadNkiImageTransform()
+{
+    bool bRead=true;
+    typedef itk::ImageFileReader< itk::Image< double, 2 > > MatrixReaderType;
+    MatrixReaderType::Pointer readerTransfo = MatrixReaderType::New();
+    readerTransfo->SetFileName(mInputFilenames[0]+".MACHINEORIENTATION");
+    try
+    {   readerTransfo->Update();
+    }
+    catch( itk::ExceptionObject & err )
+    {   bRead=false;
+    }
+        
+    if (bRead)
+    {   double mat[16];
+
+        //Transpose matrix (NKI format)
+        for(int j=0; j<4; j++)
+            for(int i=0; i<4; i++)
+                mat[4*j+i]=readerTransfo->GetOutput()->GetBufferPointer()[4*i+j];
+
+        //From cm to mm
+        for(int i=0; i<3; i++)
+            mat[4*i+3]*=10;
+
+        //Set Transformation
+        vtkSmartPointer<vtkTransform> pt = vtkSmartPointer<vtkTransform>::New();
+        pt->SetMatrix( mat );
+        pt->Inverse();
+        mImage->SetTransform( pt );
+    }
+}
+//------------------------------------------------------------------------------
 #endif