37 #include <vtkLookupTable.h> 39 #include <itkExceptionObject.h> 40 #include <itkGradientMagnitudeRecursiveGaussianImageFilter.h> 41 #include <itkWatershedImageFilter.h> 58 Superclass::Activated();
63 Superclass::Deactivated();
102 labelSetOutput->InitializeByLabeledImage(output);
106 dataNode->SetData(labelSetOutput);
109 std::string name = referenceData->GetName() +
"_Watershed";
110 dataNode->SetName(name);
113 mitk::DataStorage::SetOfObjects::ConstPointer children =
115 mitk::DataStorage::SetOfObjects::ConstIterator currentNode = children->Begin();
117 while (currentNode != children->End())
119 if (dataNode->GetName().compare(currentNode->Value()->GetName()) == 0)
121 removeNode = currentNode->Value();
126 if (removeNode.IsNotNull())
132 catch (itk::ExceptionObject &e)
134 MITK_ERROR <<
"Watershed Filter Error: " << e.GetDescription();
140 template <
typename TPixel,
unsigned int VImageDimension>
144 typedef itk::WatershedImageFilter<itk::Image<float, VImageDimension>> WatershedFilter;
145 typedef itk::GradientMagnitudeRecursiveGaussianImageFilter<itk::Image<TPixel, VImageDimension>,
146 itk::Image<float, VImageDimension>>
150 typename MagnitudeFilter::Pointer magnitude = MagnitudeFilter::New();
151 magnitude->SetInput(originalImage);
152 magnitude->SetSigma(1.0);
156 command->AddStepsToDo(60);
159 typename WatershedFilter::Pointer watershed = WatershedFilter::New();
160 watershed->SetInput(magnitude->GetOutput());
163 watershed->AddObserver(itk::ProgressEvent(), command);
167 typedef itk::CastImageFilter<
typename WatershedFilter::OutputImageType,
168 itk::Image<Tool::DefaultSegmentationDataType, VImageDimension>>
170 typename CastFilter::Pointer cast = CastFilter::New();
171 cast->SetInput(watershed->GetOutput());
177 command->SetProgress(10);
virtual SetOfObjects::ConstPointer GetDerivations(const DataNode *node, const NodePredicateBase *condition=nullptr, bool onlyDirectDerivations=true) const =0
returns a set of derived objects for a given node.
#define MITKSEGMENTATION_EXPORT
DataCollection - Class to facilitate loading/accessing structured data.
const SliceNavigationController * GetTimeNavigationController() const
virtual void Add(DataNode *node, const DataStorage::SetOfObjects *parents=nullptr)=0
Adds a DataNode containing a data object to its internal storage.
#define AccessByItk_1(mitkImage, itkImageTypeFunction, arg1)
Image::Pointer GrabItkImageMemory(itk::SmartPointer< ItkOutputImageType > &itkimage, mitk::Image *mitkImage=nullptr, const BaseGeometry *geometry=nullptr, bool update=true)
Grabs the memory of an itk::Image (with a specific type) and puts it into an mitk::Image.The memory is managed by the mitk::Image after calling this function. The itk::Image remains valid until the mitk::Image decides to free the memory.
MITK_TOOL_MACRO(MITKSEGMENTATION_EXPORT, LiveWireTool2D, "LiveWire tool")
static RenderingManager * GetInstance()
Module * GetModule() const
Image class for storing images.
ModuleResource GetResource(const std::string &path) const
virtual void Remove(const DataNode *node)=0
Removes node from the DataStorage.
mitk::Stepper * GetTime()
Get the Stepper through the time.
virtual unsigned int GetPos() const
static ModuleContext * GetModuleContext()
Returns the module context of the calling module.
void RequestUpdateAll(RequestType type=REQUEST_UPDATE_ALL)