33 #include <itkBinaryThresholdImageFilter.h> 34 #include <itkImageRegionIterator.h> 47 : m_SensibleMinimumThresholdValue(-100),
48 m_SensibleMaximumThresholdValue(+100),
49 m_CurrentThresholdValue(0.0),
83 Superclass::Activated();
121 Superclass::Deactivated();
169 itk::RGBPixel<float> pixel;
179 if (image.IsNotNull())
184 if (workingImage.IsNotNull())
193 if (previewImage.IsNull())
195 MITK_ERROR <<
"Cannot create helper objects.";
199 previewImage->GetActiveLabel()->SetColor(pixel);
200 previewImage->GetActiveLabelSet()->UpdateLookupTable(previewImage->GetActiveLabel()->GetValue());
227 if (image.GetPointer() == originalImage.GetPointer())
234 if ((originalImage->GetPixelType().GetPixelType() == itk::ImageIOBase::SCALAR) &&
235 (originalImage->GetPixelType().GetComponentType() == itk::ImageIOBase::FLOAT ||
236 originalImage->GetPixelType().GetComponentType() == itk::ImageIOBase::DOUBLE))
249 template <
typename TPixel,
unsigned int VImageDimension>
250 static void ITKSetVolume(itk::Image<TPixel, VImageDimension> *originalImage,
252 unsigned int timeStep)
254 segmentation->
SetVolume((
void *)originalImage->GetPixelContainer()->GetBufferPointer(), timeStep);
262 if (feedBackImage.IsNotNull())
266 if (emptySegmentation)
269 for (
unsigned int timeStep = 0; timeStep < feedBackImage->GetTimeSteps(); ++timeStep)
274 timeSelector->SetInput(feedBackImage);
275 timeSelector->SetTimeNr(timeStep);
276 timeSelector->UpdateLargestPossibleRegion();
279 if (image3D->GetDimension() == 2)
282 image3D,
ITKSetVolume, 2, dynamic_cast<Image *>(emptySegmentation->GetData()), timeStep);
287 image3D,
ITKSetVolume, 3, dynamic_cast<Image *>(emptySegmentation->GetData()), timeStep);
292 Tool::ErrorMessage(
"Error accessing single time steps of the original image. Cannot create segmentation.");
300 padFilter->SetInput(0, dynamic_cast<mitk::Image *>(emptySegmentation->GetData()));
302 padFilter->SetBinaryFilter(
true);
303 padFilter->SetUpperThreshold(1);
304 padFilter->SetLowerThreshold(1);
307 emptySegmentation->SetData(padFilter->GetOutput());
321 if (node.IsNotNull())
329 roiFilter->SetInput(image);
330 roiFilter->SetRegionOfInterest(node->GetData());
334 tmpNode->SetData(roiFilter->GetOutput());
350 template <
typename TPixel,
unsigned int VImageDimension>
353 double thresholdValue,
354 unsigned int timeStep)
356 typedef itk::Image<TPixel, VImageDimension>
ImageType;
357 typedef itk::Image<mitk::Tool::DefaultSegmentationDataType, VImageDimension> SegmentationType;
358 typedef itk::BinaryThresholdImageFilter<ImageType, SegmentationType> ThresholdFilterType;
360 typename ThresholdFilterType::Pointer filter = ThresholdFilterType::New();
361 filter->SetInput(originalImage);
362 filter->SetLowerThreshold(thresholdValue);
364 filter->SetInsideValue(1);
365 filter->SetOutsideValue(0);
368 segmentation->
SetVolume((
void *)(filter->GetOutput()->GetPixelContainer()->GetBufferPointer()), timeStep);
371 template <
typename TPixel,
unsigned int VImageDimension>
374 double thresholdValue,
375 unsigned int timeStep)
377 typedef itk::Image<TPixel, VImageDimension>
ImageType;
378 typedef itk::Image<unsigned char, VImageDimension> SegmentationType;
379 typedef itk::BinaryThresholdImageFilter<ImageType, SegmentationType> ThresholdFilterType;
381 typename ThresholdFilterType::Pointer filter = ThresholdFilterType::New();
382 filter->SetInput(originalImage);
383 filter->SetLowerThreshold(thresholdValue);
385 filter->SetInsideValue(1);
386 filter->SetOutsideValue(0);
389 segmentation->
SetVolume((
void *)(filter->GetOutput()->GetPixelContainer()->GetBufferPointer()), timeStep);
396 if (thresholdImage && previewImage)
398 for (
unsigned int timeStep = 0; timeStep < thresholdImage->GetTimeSteps(); ++timeStep)
401 timeSelector->SetInput(thresholdImage);
402 timeSelector->SetTimeNr(timeStep);
403 timeSelector->UpdateLargestPossibleRegion();
Data management class that handles 'was created by' relations.
itk::Image< unsigned char, 3 > ImageType
#define MITKSEGMENTATION_EXPORT
DataCollection - Class to facilitate loading/accessing structured data.
#define AccessByItk_n(mitkImage, itkImageTypeFunction, va_tuple)
Access a MITK image by an ITK image with one or more parameters.
virtual bool SetVolume(const void *data, int t=0, int n=0)
Set data as volume at time t in channel n. It is in the responsibility of the caller to ensure that t...
virtual ScalarType GetScalarValueMin(int t=0, unsigned int component=0)
Get the minimum for scalar images. Recomputation performed only when necessary.
MITK_TOOL_MACRO(MITKSEGMENTATION_EXPORT, LiveWireTool2D, "LiveWire tool")
#define AccessFixedDimensionByItk_2(mitkImage, itkImageTypeFunction, dimension, arg1, arg2)
static RenderingManager * GetInstance()
virtual ScalarType GetScalarValueMax(int t=0, unsigned int component=0)
Get the maximum for scalar images. Recomputation performed only when necessary.
Module * GetModule() const
Image class for storing images.
ModuleResource GetResource(const std::string &path) const
mitk::Image::Pointer image
Class holding the statistics informations about a single mitk::Image.
LabelSetImage class for handling labels and layers in a segmentation session.
static ModuleContext * GetModuleContext()
Returns the module context of the calling module.
void RequestUpdateAll(RequestType type=REQUEST_UPDATE_ALL)
Class for nodes of the DataTree.