X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvImageReader.cxx;fp=vv%2FvvImageReader.cxx;h=1f33fc72b2abe997ff119adf7f90b156edc7b0e7;hb=4d98c6119c03a33d32830d6c13707600a047a32c;hp=8bbdf251b57355a40b466065e913596e6ec0d7b9;hpb=c743d3bed0d7d619740eea35430770265c4a1b9b;p=clitk.git diff --git a/vv/vvImageReader.cxx b/vv/vvImageReader.cxx index 8bbdf25..1f33fc7 100644 --- a/vv/vvImageReader.cxx +++ b/vv/vvImageReader.cxx @@ -124,28 +124,34 @@ 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) { - //Transpose matrix (NKI format) - for(int j=0; j<4; j++) - for(int i=0; i<4; i++) - mImage->GetTransform()->GetMatrix()->SetElement(j,i,readerTransfo->GetOutput()->GetBufferPointer()[4*i+j]); - - //From cm to mm - for(int i=0; i<3; i++) - mImage->GetTransform()->GetMatrix()->SetElement(i,3,10*mImage->GetTransform()->GetMatrix()->GetElement(i,3)); - - mImage->GetTransform()->Inverse(); - mImage->UpdateReslice(); + bool bRead=false; + std::string filename = mInputFilenames[0]+".MACHINEORIENTATION"; + if(itksys::SystemTools::FileExists(filename.c_str())){ + typedef itk::ImageFileReader< itk::Image< double, 2 > > MatrixReaderType; + MatrixReaderType::Pointer readerTransfo = MatrixReaderType::New(); + readerTransfo->SetFileName(filename); + try { + bRead = true; + readerTransfo->Update(); + } catch( itk::ExceptionObject & err ) { + bRead=false; + std::cerr << "Cannot read " << filename << std::endl + << "The error is: " << err << std::endl; + } + + if (bRead) { + //Transpose matrix (NKI format) + for(int j=0; j<4; j++) + for(int i=0; i<4; i++) + mImage->GetTransform()->GetMatrix()->SetElement(j,i,readerTransfo->GetOutput()->GetBufferPointer()[4*i+j]); + + //From cm to mm + for(int i=0; i<3; i++) + mImage->GetTransform()->GetMatrix()->SetElement(i,3,10*mImage->GetTransform()->GetMatrix()->GetElement(i,3)); + + mImage->GetTransform()->Inverse(); + mImage->UpdateReslice(); + } } } //------------------------------------------------------------------------------