- University of LYON http://www.universite-lyon.fr/
- Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
- CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
- University of LYON http://www.universite-lyon.fr/
- Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
- CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
#include <vtkPolyDataToImageStencil.h>
#include <vtkSmartPointer.h>
#include <vtkImageStencil.h>
#include <vtkPolyDataToImageStencil.h>
#include <vtkSmartPointer.h>
#include <vtkImageStencil.h>
}
//--------------------------------------------------------------------
//--------------------------------------------------------------------
}
//--------------------------------------------------------------------
//--------------------------------------------------------------------
mROI = roi;
}
//--------------------------------------------------------------------
//--------------------------------------------------------------------
mROI = roi;
}
//--------------------------------------------------------------------
//--------------------------------------------------------------------
mCropMask = b;
}
//--------------------------------------------------------------------
//--------------------------------------------------------------------
mCropMask = b;
}
//--------------------------------------------------------------------
//--------------------------------------------------------------------
itk::ImageIOBase::Pointer header = clitk::readImageHeader(f);
if (header->GetNumberOfDimensions() < 3) {
std::cerr << "Error. Please provide a 3D image instead of " << f << std::endl;
itk::ImageIOBase::Pointer header = clitk::readImageHeader(f);
if (header->GetNumberOfDimensions() < 3) {
std::cerr << "Error. Please provide a 3D image instead of " << f << std::endl;
origin.resize(3);
origin[0] = floor((bounds[0]-mOrigin[0])/mSpacing[0]-2)*mSpacing[0]+mOrigin[0];
origin[1] = floor((bounds[2]-mOrigin[1])/mSpacing[1]-2)*mSpacing[1]+mOrigin[1];
origin[2] = floor((bounds[4]-mOrigin[2])/mSpacing[2]-2)*mSpacing[2]+mOrigin[2];
origin.resize(3);
origin[0] = floor((bounds[0]-mOrigin[0])/mSpacing[0]-2)*mSpacing[0]+mOrigin[0];
origin[1] = floor((bounds[2]-mOrigin[1])/mSpacing[1]-2)*mSpacing[1]+mOrigin[1];
origin[2] = floor((bounds[4]-mOrigin[2])/mSpacing[2]-2)*mSpacing[2]+mOrigin[2];
extend.resize(3);
extend[0] = ceil((bounds[1]-origin[0])/mSpacing[0]+4);
extend[1] = ceil((bounds[3]-origin[1])/mSpacing[1]+4);
extend[2] = ceil((bounds[5]-origin[2])/mSpacing[2]+4);
extend.resize(3);
extend[0] = ceil((bounds[1]-origin[0])/mSpacing[0]+4);
extend[1] = ceil((bounds[3]-origin[1])/mSpacing[1]+4);
extend[2] = ceil((bounds[5]-origin[2])/mSpacing[2]+4);
// Create new output image
mBinaryImage = vtkImageData::New();
mBinaryImage->SetScalarTypeToUnsignedChar();
mBinaryImage->SetOrigin(&origin[0]);
mBinaryImage->SetSpacing(&mSpacing[0]);
// Create new output image
mBinaryImage = vtkImageData::New();
mBinaryImage->SetScalarTypeToUnsignedChar();
mBinaryImage->SetOrigin(&origin[0]);
mBinaryImage->SetSpacing(&mSpacing[0]);
// }
memset(mBinaryImage->GetScalarPointer(), 0,
mBinaryImage->GetDimensions()[0]*mBinaryImage->GetDimensions()[1]*mBinaryImage->GetDimensions()[2]*sizeof(unsigned char));
// }
memset(mBinaryImage->GetScalarPointer(), 0,
mBinaryImage->GetDimensions()[0]*mBinaryImage->GetDimensions()[1]*mBinaryImage->GetDimensions()[2]*sizeof(unsigned char));
// Extrude
vtkSmartPointer<vtkLinearExtrusionFilter> extrude=vtkSmartPointer<vtkLinearExtrusionFilter>::New();
extrude->SetInput(mesh);
///We extrude in the -slice_spacing direction to respect the FOCAL convention // ?????????????
extrude->SetVector(0, 0, -mSpacing[2]);
// Extrude
vtkSmartPointer<vtkLinearExtrusionFilter> extrude=vtkSmartPointer<vtkLinearExtrusionFilter>::New();
extrude->SetInput(mesh);
///We extrude in the -slice_spacing direction to respect the FOCAL convention // ?????????????
extrude->SetVector(0, 0, -mSpacing[2]);
vtkSmartPointer<vtkPolyDataToImageStencil> sts=vtkSmartPointer<vtkPolyDataToImageStencil>::New();
//The following line is extremely important
//http://www.nabble.com/Bug-in-vtkPolyDataToImageStencil--td23368312.html#a23370933
vtkSmartPointer<vtkPolyDataToImageStencil> sts=vtkSmartPointer<vtkPolyDataToImageStencil>::New();
//The following line is extremely important
//http://www.nabble.com/Bug-in-vtkPolyDataToImageStencil--td23368312.html#a23370933
stencil->SetInput(mBinaryImage);
stencil->ReverseStencilOn();
stencil->Update();
mBinaryImage->ShallowCopy(stencil->GetOutput());
stencil->SetInput(mBinaryImage);
stencil->ReverseStencilOn();
stencil->Update();
mBinaryImage->ShallowCopy(stencil->GetOutput());
- typedef itk::Image<unsigned char, 3> ImageType;
- typedef itk::VTKImageToImageFilter<ImageType> ConnectorType;
- ConnectorType::Pointer connector = ConnectorType::New();
- connector->SetInput(GetOutput());
- connector->Update();
- clitk::writeImage<ImageType>(connector->GetOutput(), mOutputFilename);
+ typedef itk::Image<unsigned char, 3> ImageType;
+ typedef itk::VTKImageToImageFilter<ImageType> ConnectorType;
+ ConnectorType::Pointer connector = ConnectorType::New();
+ connector->SetInput(GetOutput());
+ connector->Update();
+ clitk::writeImage<ImageType>(connector->GetOutput(), mOutputFilename);