X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvImageReader.cxx;h=5c6eba3ef40d7ffb3e8da0b5dc3b2a2ae54a2709;hb=fe61abeb6e452e5f54bef60a287aa104e4e02d70;hp=7cc0e569856b160276385b1f7c81d7e9ecba03ec;hpb=b6cfdecc2f880a7015d8f5a73174a0361cfe7924;p=clitk.git diff --git a/vv/vvImageReader.cxx b/vv/vvImageReader.cxx index 7cc0e56..5c6eba3 100644 --- a/vv/vvImageReader.cxx +++ b/vv/vvImageReader.cxx @@ -117,5 +117,41 @@ void vvImageReader::SetInputFilenames(const std::vector & 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 pt = vtkSmartPointer::New(); + pt->SetMatrix( mat ); + pt->Inverse(); + mImage->SetTransform( pt ); + } +} +//------------------------------------------------------------------------------ #endif