X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=common%2FvvImage.txx;h=a84fa76669d7a317655d725e9e2e8371fd8f133c;hb=24fb0576a860ea843722b1d84561186542b62fd5;hp=1561a13d447a52256d0f02c02b323a63a4aeffe3;hpb=25e6b21607eea7d39428c109e4bc0ebe00f54ed9;p=clitk.git diff --git a/common/vvImage.txx b/common/vvImage.txx index 1561a13..a84fa76 100755 --- a/common/vvImage.txx +++ b/common/vvImage.txx @@ -4,29 +4,33 @@ template void vvImage::AddItkImage(TItkImageType *input) { + // Convert from ITK object to VTK object mImageDimension = TItkImageType::ImageDimension; typedef itk::ImageToVTKImageFilter ConverterType; typename ConverterType::Pointer converter = ConverterType::New(); + mItkToVtkConverters.push_back(dynamic_cast< itk::ProcessObject *>(converter.GetPointer())); converter->SetInput(input); + converter->Update(); + mVtkImages.push_back( converter->GetOutput() ); + + // Account for direction in transform. The offset is already accounted for + // in the VTK image coordinates, no need to put it in the transform. + vtkSmartPointer matrix = vtkSmartPointer::New(); + matrix->Identity(); + for(unsigned int j=0; jGetImageDimension(); j++) + for(unsigned int i=0; iGetImageDimension(); i++) + (*matrix)[i][j] = input->GetDirection()[i][j]; + mTransform->SetMatrix(matrix); - try { - converter->Update(); - } - catch ( itk::ExceptionObject & err ) { - std::cerr << "Error while setting vvImage from ITK" - << " " << err << std::endl; - } - mItkToVtkConverters.push_back(dynamic_cast< itk::ProcessObject *>(converter.GetPointer())); - mVtkImages.push_back(converter->GetOutput()); - - //mVtkImageReslice.push_back(vtkSmartPointer::New()); - //mVtkImageReslice.back()->SetInterpolationModeToLinear(); - //mVtkImageReslice.back()->AutoCropOutputOn(); - //mVtkImageReslice.back()->SetBackgroundColor(-1000,-1000,-1000,1); - //mVtkImageReslice.back()->SetResliceTransform(mTransform); - //mVtkImageReslice.back()->SetInput(0, image); - //mVtkImageReslice.back()->Update(); - //mVtkImages.push_back( mVtkImageReslice.back()->GetOutput(0) ); + // Create the corresponding transformed image + mVtkImageReslice.push_back(vtkSmartPointer::New()); + mVtkImageReslice.back()->SetInterpolationModeToLinear(); + mVtkImageReslice.back()->AutoCropOutputOn(); + mVtkImageReslice.back()->SetBackgroundColor(-1000,-1000,-1000,1); + mVtkImageReslice.back()->SetResliceTransform(mTransform); + mVtkImageReslice.back()->SetInput(0, converter->GetOutput()); + mVtkImageReslice.back()->UpdateInformation(); + mTransformedVtkImages.push_back( mVtkImageReslice.back()->GetOutput(0) ); } //--------------------------------------------------------------------