41 #include <itkBinaryDilateImageFilter.h> 42 #include <itkBinaryBallStructuringElement.h> 44 #include <vtkImageCast.h> 68 return "dilation_filter";
74 "<h3>Dilation Filter.</h3>" 75 "<p>This filter dilates a binary volume with a given radius in mm.<p>" 76 "<p>The dilation is performed using a ball structuring element<p>" 83 "Set dilation radius in mm", 1,
DoubleRange(1, 20, 1), 0,
92 "Generate a surface of the output volume",
true,
100 "Color of output model.",
101 QColor(
"green"), root);
117 temp->setValueName(
"Input");
118 temp->setHelp(
"Select segmentation input for dilation");
127 temp->setValueName(
"Output");
128 temp->setHelp(
"Dilated segmentation image");
132 temp->setValueName(
"Contour");
133 temp->setHelp(
"Output contour generated from dilated segmentation image.");
150 Eigen::Array3d spacing = input->getSpacing();
151 itk::Size<3> radiusInVoxels;
152 radiusInVoxels[0] = radius/spacing(0);
153 radiusInVoxels[1] = radius/spacing(1);
154 radiusInVoxels[2] = radius/spacing(2);
159 typedef itk::BinaryBallStructuringElement<unsigned char,3> StructuringElementType;
160 StructuringElementType structuringElement;
161 structuringElement.SetRadius(radiusInVoxels);
162 structuringElement.CreateStructuringElement();
165 typedef itk::BinaryDilateImageFilter<itkImageType, itkImageType, StructuringElementType> dilateFilterType;
166 dilateFilterType::Pointer dilationFilter = dilateFilterType::New();
167 dilationFilter->SetInput(itkImage);
168 dilationFilter->SetKernel(structuringElement);
169 dilationFilter->SetDilateValue(1);
170 dilationFilter->Update();
171 itkImage = dilationFilter->GetOutput();
175 itkToVtkFilter->SetInput(itkImage);
176 itkToVtkFilter->Update();
179 rawResult->DeepCopy(itkToVtkFilter->GetOutput());
182 imageCast->SetInputData(rawResult);
183 imageCast->SetOutputScalarTypeToUnsignedChar();
185 rawResult = imageCast->GetOutput();
189 mRawResult = rawResult;
192 if (generateSurface->getValue())
194 double threshold = 1;
211 QString uid = input->getUid() +
"_seg%1";
212 QString name = input->getName()+
" seg%1";
220 output->resetTransferFunctions();
221 mServices->patient()->insertData(output);
227 if (mRawContour!=NULL)
DilationFilter(VisServicesPtr services)
static BoolPropertyPtr initialize(const QString &uid, QString name, QString help, bool value, QDomNode root=QDomNode())
std::vector< SelectDataStringPropertyBasePtr > mInputTypes
QDomElement mCopiedOptions
virtual QString getName() const
virtual void createOutputTypes()
DoublePropertyPtr getDilationRadiusOption(QDomElement root)
virtual void createInputTypes()
boost::shared_ptr< class ColorProperty > ColorPropertyPtr
virtual void createOptions()
boost::shared_ptr< class VisServices > VisServicesPtr
virtual bool preProcess()
static StringPropertySelectDataPtr New(PatientModelServicePtr patientModelService, QString typeRegexp=".*")
Utility class for describing a bounded numeric range.
boost::shared_ptr< class Image > ImagePtr
virtual bool postProcess()
virtual QString getHelp() const
ColorPropertyPtr getColorOption(QDomElement root)
std::vector< PropertyPtr > mOptionsAdapters
ImagePtr createDerivedImage(PatientModelServicePtr dataManager, QString uid, QString name, vtkImageDataPtr raw, ImagePtr parent)
boost::shared_ptr< class SelectDataStringPropertyBase > SelectDataStringPropertyBasePtr
SmartPointer< Self > Pointer
ImagePtr getCopiedInputImage(int index=0)
vtkSmartPointer< class vtkImageCast > vtkImageCastPtr
vtkSmartPointer< vtkPolyData > vtkPolyDataPtr
boost::shared_ptr< class DoubleProperty > DoublePropertyPtr
std::vector< SelectDataStringPropertyBasePtr > mOutputTypes
static DoublePropertyPtr initialize(const QString &uid, QString name, QString help, double value, DoubleRange range, int decimals, QDomNode root=QDomNode())
virtual QString getType() const
virtual bool postProcess()
static itkImageType::ConstPointer getITKfromSSCImage(ImagePtr image)
static StringPropertySelectImagePtr New(PatientModelServicePtr patientModelService)
static ColorPropertyPtr initialize(const QString &uid, QString name, QString help, QColor value, QDomNode root=QDomNode())
BoolPropertyPtr getGenerateSurfaceOption(QDomElement root)
boost::shared_ptr< class BoolProperty > BoolPropertyPtr
boost::shared_ptr< class Mesh > MeshPtr
Namespace for all CustusX production code.