Authors belongs to:
- University of LYON http://www.universite-lyon.fr/
- - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
+ - Léon Bérard cancer center http://www.centreleonberard.fr
- CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
This software is distributed WITHOUT ANY WARRANTY; without even
=========================================================================*/
+#include <iterator>
+#include <algorithm>
#include "clitkDicomRT_ROI_ConvertToImageFilter.h"
#include <vtkPolyDataToImageStencil.h>
#include <vtkSmartPointer.h>
#include <vtkImageStencil.h>
#include <vtkLinearExtrusionFilter.h>
-#include <itkVTKImageToImageFilter.h>
#include "clitkImageCommon.h"
//--------------------------------------------------------------------
clitk::DicomRT_ROI_ConvertToImageFilter::DicomRT_ROI_ConvertToImageFilter()
{
mROI = NULL;
- mImageInfoIsSet = false;
mWriteOutput = false;
mCropMask = true;
}
}
//--------------------------------------------------------------------
+bool clitk::DicomRT_ROI_ConvertToImageFilter::ImageInfoIsSet() const
+{
+ return mSize.size() && mSpacing.size() && mOrigin.size();
+}
//--------------------------------------------------------------------
void clitk::DicomRT_ROI_ConvertToImageFilter::SetROI(clitk::DicomRT_ROI * roi)
mOrigin[i] = header->GetOrigin(i);
mSize[i] = header->GetDimensions(i);
}
- mImageInfoIsSet = true;
}
//--------------------------------------------------------------------
+void clitk::DicomRT_ROI_ConvertToImageFilter::SetOutputOrigin(const double* origin)
+{
+ std::copy(origin,origin+3,std::back_inserter(mOrigin));
+}
+//--------------------------------------------------------------------
+void clitk::DicomRT_ROI_ConvertToImageFilter::SetOutputSpacing(const double* spacing)
+{
+ std::copy(spacing,spacing+3,std::back_inserter(mSpacing));
+}
+//--------------------------------------------------------------------
+void clitk::DicomRT_ROI_ConvertToImageFilter::SetOutputSize(const unsigned long* size)
+{
+ std::copy(size,size+3,std::back_inserter(mSize));
+}
//--------------------------------------------------------------------
void clitk::DicomRT_ROI_ConvertToImageFilter::Update()
std::cerr << "Error. No ROI set, please use SetROI." << std::endl;
exit(0);
}
- if (!mImageInfoIsSet) {
+ if (!ImageInfoIsSet()) {
std::cerr << "Error. Please provide image info (spacing/origin) with SetImageFilename" << std::endl;
exit(0);
}
}
// Create new output image
- mBinaryImage = vtkImageData::New();
+ mBinaryImage = vtkSmartPointer<vtkImageData>::New();
mBinaryImage->SetScalarTypeToUnsignedChar();
mBinaryImage->SetOrigin(&origin[0]);
mBinaryImage->SetSpacing(&mSpacing[0]);
// 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->SetVector(0, 0, mROI->GetContourSpacing());
// Binarization
vtkSmartPointer<vtkPolyDataToImageStencil> sts=vtkSmartPointer<vtkPolyDataToImageStencil>::New();
//--------------------------------------------------------------------
vtkImageData * clitk::DicomRT_ROI_ConvertToImageFilter::GetOutput()
{
+ assert(mBinaryImage);
return mBinaryImage;
}
//--------------------------------------------------------------------
+