Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
mitkCLUtil.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef mitkCLUtil_h
14 #define mitkCLUtil_h
15 
16 #include <itkeigen/Eigen/Dense>
17 #include <MitkCLUtilitiesExports.h>
18 #include <itkImageRegionIterator.h>
19 
20 
21 #include <mitkImage.h>
22 #include <mitkImageCast.h>
23 #include <mitkITKImageImport.h>
24 
25 #include <itkConnectedComponentImageFilter.h>
26 namespace mitk
27 {
28 
40 {
41 public:
46  {
50  All
51  };
52 
59  static void CreateCheckerboardMask(mitk::Image::Pointer image, mitk::Image::Pointer & outimage);
60 
68  static void InterpolateCheckerboardPrediction(mitk::Image::Pointer checkerboard_prediction, mitk::Image::Pointer & checkerboard_mask, mitk::Image::Pointer & outimage);
69 
76  static void CountVoxel(mitk::Image::Pointer image, std::map<unsigned int, unsigned int> & map);
77 
85  static void CountVoxel(mitk::Image::Pointer image, unsigned int label, unsigned int & count);
86 
93  static void CountVoxel(mitk::Image::Pointer image, unsigned int & count);
94 
103  static void SumVoxelForLabel(mitk::Image::Pointer image, const mitk::Image::Pointer & source , unsigned int label, double & val );
104 
113  static void SqSumVoxelForLabel(mitk::Image::Pointer image, const mitk::Image::Pointer & source, unsigned int label, double & val );
114 
122  static void LogicalAndImages(const Image::Pointer &image1, const Image::Pointer &image2, Image::Pointer &outimage);
123 
131  static void GaussianFilter(mitk::Image::Pointer image, mitk::Image::Pointer & smoothed ,double sigma);
132 
143  static void DifferenceOfGaussianFilter(mitk::Image::Pointer image, mitk::Image::Pointer & smoothed, double sigma1, double sigma2);
144 
152  static void LaplacianOfGaussianFilter(mitk::Image::Pointer image, mitk::Image::Pointer & smoothed, double sigma1);
153 
163  static void HessianOfGaussianFilter(mitk::Image::Pointer image, std::vector<mitk::Image::Pointer> &out, double sigma);
164 
173  static void LocalHistogram(mitk::Image::Pointer image, std::vector<mitk::Image::Pointer> &out, int Bins, int NeighbourhoodSize);
174 
185  template<typename TMatrixElementType>
186  static mitk::Image::Pointer Transform(const Eigen::Matrix<TMatrixElementType, Eigen::Dynamic, Eigen::Dynamic> & matrix, const mitk::Image::Pointer & mask)
187  {
188  itk::Image<unsigned int, 3>::Pointer itkMask;
189  mitk::CastToItkImage(mask,itkMask);
190 
191  typename itk::Image<TMatrixElementType, 3>::Pointer itk_img = itk::Image<TMatrixElementType, 3>::New();
192  itk_img->SetRegions(itkMask->GetLargestPossibleRegion());
193  itk_img->SetOrigin(itkMask->GetOrigin());
194  itk_img->SetSpacing(itkMask->GetSpacing());
195  itk_img->SetDirection(itkMask->GetDirection());
196  itk_img->Allocate();
197 
198 
199  unsigned int n_numSamples = 0;
200  mitk::CLUtil::CountVoxel(mask,n_numSamples);
201 
202  if(n_numSamples != matrix.rows())
203  MITK_ERROR << "Number of samples in matrix and number of points under the masks is not the same!";
204 
205  auto mit = itk::ImageRegionConstIterator<itk::Image<unsigned int, 3> >(itkMask, itkMask->GetLargestPossibleRegion());
206  auto oit = itk::ImageRegionIterator<itk::Image<TMatrixElementType, 3> >(itk_img, itk_img->GetLargestPossibleRegion());
207 
208  unsigned int current_row = 0;
209  while(!mit.IsAtEnd())
210  {
211  if(mit.Value() > 0)
212  oit.Set(matrix(current_row++,0));
213  else
214  oit.Set(0.0);
215  ++mit;
216  ++oit;
217  }
218 
219  mitk::Image::Pointer out_img = mitk::Image::New();
220  mitk::GrabItkImageMemory(itk_img,out_img);
221  return out_img;
222  }
234  template<typename TMatrixElementType>
235  static Eigen::Matrix<TMatrixElementType, Eigen::Dynamic, Eigen::Dynamic> Transform(const mitk::Image::Pointer & img, const mitk::Image::Pointer & mask)
236  {
237  itk::Image<unsigned int, 3>::Pointer current_mask;
238  mitk::CastToItkImage(mask,current_mask);
239 
240  unsigned int n_numSamples = 0;
241  mitk::CLUtil::CountVoxel(mask,n_numSamples);
242 
243  typename itk::Image<TMatrixElementType, 3>::Pointer current_img;
244  mitk::CastToItkImage(img,current_img);
245 
246  Eigen::Matrix<TMatrixElementType, Eigen::Dynamic, Eigen::Dynamic> out_matrix(n_numSamples,1);
247 
248  auto mit = itk::ImageRegionConstIterator<itk::Image<unsigned int, 3> >(current_mask, current_mask->GetLargestPossibleRegion());
249  auto iit = itk::ImageRegionConstIterator<itk::Image<TMatrixElementType, 3> >(current_img,current_img->GetLargestPossibleRegion());
250  unsigned int current_row = 0;
251  while (!mit.IsAtEnd()) {
252  if(mit.Value() > 0)
253  out_matrix(current_row++) = iit.Value();
254  ++mit;
255  ++iit;
256  }
257 
258  return out_matrix;
259  }
260 
268  static void DilateBinary(mitk::Image::Pointer & sourceImage, mitk::Image::Pointer& resultImage, int radius , MorphologicalDimensions d);
269 
277  static void ErodeBinary(mitk::Image::Pointer & sourceImage, mitk::Image::Pointer& resultImage, int radius, MorphologicalDimensions d);
278 
286  static void ClosingBinary(mitk::Image::Pointer & sourceImage, mitk::Image::Pointer& resultImage, int radius, MorphologicalDimensions d);
287 
293  static void MergeLabels(mitk::Image::Pointer & img, const std::map<unsigned int, unsigned int> & map);
294 
302  static void ConnectedComponentsImage(mitk::Image::Pointer & image, mitk::Image::Pointer& mask, mitk::Image::Pointer &outimage, unsigned int& num_components);
303 
310  static void GrabLabel(mitk::Image::Pointer & image, mitk::Image::Pointer & outimage, unsigned int label);
311 
318  static void InsertLabel(mitk::Image::Pointer & image, mitk::Image::Pointer & maskImage, unsigned int label);
319 
327  static void ErodeGrayscale(mitk::Image::Pointer & image, unsigned int radius, mitk::CLUtil::MorphologicalDimensions d, mitk::Image::Pointer & outimage );
328 
336  static void DilateGrayscale(mitk::Image::Pointer & image, unsigned int radius, mitk::CLUtil::MorphologicalDimensions d, mitk::Image::Pointer & outimage );
337 
343  static void FillHoleGrayscale(mitk::Image::Pointer & image, mitk::Image::Pointer & outimage);
344 
352  static void ProbabilityMap(const mitk::Image::Pointer& sourceImage, double mean, double std_dev, mitk::Image::Pointer& resultImage);
353 
354  template<class TImageType>
355  static void itkCountVoxel( TImageType * image, std::map<unsigned int, unsigned int> & map)
356  {
357  auto it = itk::ImageRegionIterator< TImageType >(image,image->GetLargestPossibleRegion());
358  while(!it.IsAtEnd())
359  {
360  if(map.find(it.Value()) == map.end())
361  map[it.Value()] = 0;
362  map[it.Value()]++;
363  ++it;
364  }
365  }
366 
367  template <class TImageType>
368  static void itkCountVoxel(TImageType* image, typename TImageType::PixelType label, unsigned int & count )
369  {
370  itk::ImageRegionConstIterator<TImageType> inputIter(image, image->GetLargestPossibleRegion());
371  while(!inputIter.IsAtEnd())
372  {
373  if(inputIter.Value() == label) ++count;
374  ++inputIter;
375  }
376  }
377 
378  template<typename TImageType>
379  static inline void itkCountVoxel(TImageType * mask, unsigned int & n_numSamples)
380  {
381  auto mit = itk::ImageRegionConstIterator<TImageType>(mask, mask->GetLargestPossibleRegion());
382  while (!mit.IsAtEnd())
383  {
384  if(mit.Value() > 0)
385  n_numSamples++;
386  ++mit;
387  }
388  }
389 
390  template <class TImageType1, class TImageType2>
391  static void itkSampleLabel(TImageType1* image, TImageType2* output, double acceptrate, unsigned int label)
392  {
393  std::srand (time(nullptr));
394 
395  itk::ImageRegionConstIterator< TImageType1 > inputIter(image, image->GetLargestPossibleRegion());
396  itk::ImageRegionIterator< TImageType2 > outputIter(output, output->GetLargestPossibleRegion());
397 
398  while (!inputIter.IsAtEnd())
399  {
400  double r = (double)(rand()) / RAND_MAX;
401  if(inputIter.Get() == label && r < acceptrate)
402  outputIter.Set(label);
403 
404  ++inputIter;
405  ++outputIter;
406  }
407  }
408 
409  template <class TImageType>
410  static void itkSampleLabel(TImageType* image, mitk::Image::Pointer & output, unsigned int n_samples_drawn)
411  {
412  std::srand (time(nullptr));
413 
414  typename TImageType::Pointer itk_out = TImageType::New();
415  itk_out->SetRegions(image->GetLargestPossibleRegion());
416  itk_out->SetDirection(image->GetDirection());
417  itk_out->SetOrigin(image->GetOrigin());
418  itk_out->SetSpacing(image->GetSpacing());
419  itk_out->Allocate();
420  itk_out->FillBuffer(0);
421 
422  itk::ImageRegionConstIterator< TImageType > inputIter(image, image->GetLargestPossibleRegion());
423  itk::ImageRegionIterator< TImageType > outputIter(itk_out, itk_out->GetLargestPossibleRegion());
424 
425  for(unsigned int i = 0 ; i < n_samples_drawn ;)
426  {
427  double r = (double)(rand()) / RAND_MAX;
428  if(inputIter.Value() != 0 && r < 0.01 && outputIter.Value() == 0)
429  {
430  outputIter.Set(inputIter.Value());
431  i++;
432  }
433  ++inputIter;
434  ++outputIter;
435 
436  if(inputIter.IsAtEnd())
437  {
438  inputIter.GoToBegin();
439  outputIter.GoToBegin();
440  }
441 
442  }
443 
444  mitk::CastToMitkImage(itk_out, output);
445  }
446 
447 private:
448 
449  template<class TImageType>
450  static void itkErodeGrayscale(TImageType * image, mitk::Image::Pointer & outimage , unsigned int radius, mitk::CLUtil::MorphologicalDimensions d);
451 
452  template<class TImageType>
453  static void itkDilateGrayscale(TImageType * image, mitk::Image::Pointer & outimage , unsigned int radius, mitk::CLUtil::MorphologicalDimensions d);
454 
455  template<class TImageType>
456  static void itkFillHoleGrayscale(TImageType * image, mitk::Image::Pointer & outimage);
457 
458  template< typename TImageType >
459  static void itkInsertLabel(TImageType * maskImage, mitk::Image::Pointer & outimage, unsigned int label)
460  {
461 
462  typename TImageType::Pointer itk_out;
463 
464  if(outimage.IsNull()) // create if necessary
465  {
466  MITK_INFO << "Initialize new image";
467  itk_out = TImageType::New();
468  itk_out->SetSpacing(maskImage->GetSpacing());
469  itk_out->SetDirection(maskImage->GetDirection());
470  itk_out->SetOrigin(maskImage->GetOrigin());
471  itk_out->SetRegions(maskImage->GetLargestPossibleRegion());
472  itk_out->Allocate();
473  itk_out->FillBuffer(0);
474  }else
475  {
476  mitk::CastToItkImage(outimage, itk_out);
477  }
478 
479  itk::ImageRegionIterator<TImageType> oit(itk_out,itk_out->GetLargestPossibleRegion());
480  itk::ImageRegionConstIterator<TImageType> mit(maskImage,maskImage->GetLargestPossibleRegion());
481 
482  while(!mit.IsAtEnd())
483  {
484  if(mit.Value() != 0)
485  {
486  oit.Set(label);
487  }
488  ++oit;
489  ++mit;
490  }
491 
492  mitk::CastToMitkImage(itk_out,outimage);
493  }
494 
495 
496  template< typename TImageType >
497  static void itkGrabLabel(TImageType * image, mitk::Image::Pointer & outimage, unsigned int label)
498  {
499  typedef itk::Image<unsigned short, 3> TOutType;
500  TOutType::Pointer itk_out = TOutType::New();
501  itk_out->SetRegions(image->GetLargestPossibleRegion());
502  itk_out->SetDirection(image->GetDirection());
503  itk_out->SetOrigin(image->GetOrigin());
504  itk_out->SetSpacing(image->GetSpacing());
505  itk_out->Allocate();
506 
507  itk::ImageRegionConstIterator<TImageType> iit(image, image->GetLargestPossibleRegion());
508  itk::ImageRegionIterator<TOutType> oit(itk_out,itk_out->GetLargestPossibleRegion());
509 
510  while(!iit.IsAtEnd())
511  {
512  if(iit.Value() == static_cast<typename TImageType::PixelType>(label))
513  oit.Set(1);
514  else
515  oit.Set(0);
516 
517  ++iit;
518  ++oit;
519  }
520 
521  mitk::CastToMitkImage(itk_out, outimage);
522  }
523 
524  template<class TImagetype>
525  static void itkMergeLabels(TImagetype * img, const std::map<unsigned int, unsigned int> & map)
526  {
527 
528  auto it = itk::ImageRegionIterator<TImagetype>(img,img->GetLargestPossibleRegion());
529 
530  while(!it.IsAtEnd())
531  {
532  if(map.find(it.Value())!=map.end())
533  it.Set( map.at(it.Value()) );
534  ++it;
535  }
536 
537  }
538 
539  template<typename TImageType>
540  static void itkConnectedComponentsImage(TImageType * image, mitk::Image::Pointer& mask, mitk::Image::Pointer &outimage, unsigned int& num_components)
541  {
542  typedef itk::Image<unsigned short, 3> MaskImageType;
543  MaskImageType::Pointer itk_mask;
544  if(mask.IsNull())
545  {
546  itk_mask = MaskImageType::New();
547  itk_mask->SetRegions(image->GetLargestPossibleRegion());
548  itk_mask->SetDirection(image->GetDirection());
549  itk_mask->SetOrigin(image->GetOrigin());
550  itk_mask->SetSpacing(image->GetSpacing());
551  itk_mask->Allocate();
552  itk_mask->FillBuffer(1);
553  }else{
554  mitk::CastToItkImage(mask,itk_mask);
555  }
556 
557  typedef itk::ConnectedComponentImageFilter<TImageType, MaskImageType, MaskImageType > FilterType;
558  typename FilterType::Pointer cc_filter = FilterType::New();
559  cc_filter->SetMaskImage(itk_mask.GetPointer());
560  cc_filter->SetInput(image);
561  cc_filter->SetBackgroundValue(0);
562  cc_filter->Update();
563 
564  num_components = cc_filter->GetObjectCount();
565  mitk::CastToMitkImage(cc_filter->GetOutput(), outimage);
566  }
567 
568  template< typename TImageType >
569  static void itkCreateCheckerboardMask(TImageType * image, mitk::Image::Pointer & outimage);
570 
571  template< typename TImageType >
572  static void itkInterpolateCheckerboardPrediction(TImageType * checkerboard_prediction, mitk::Image::Pointer & checkerboard_mask, mitk::Image::Pointer & outimage);
573 
574  template <class TImageType>
575  static void itkSumVoxelForLabel(TImageType* image, const mitk::Image::Pointer & source , typename TImageType::PixelType label, double & val );
576 
577  template <class TImageType>
578  static void itkSqSumVoxelForLabel(TImageType* image, const mitk::Image::Pointer & source, typename TImageType::PixelType label, double & val );
579 
580  template<typename TStructuringElement>
581  static void itkFitStructuringElement(TStructuringElement & se, MorphologicalDimensions d, int radius);
582 
583  template<typename TImageType>
584  static void itkDilateBinary(TImageType * sourceImage, mitk::Image::Pointer& resultImage, int radius , MorphologicalDimensions d);
585 
586  template<typename TImageType>
587  static void itkErodeBinary(TImageType * sourceImage, mitk::Image::Pointer& resultImage, int radius, MorphologicalDimensions d);
588 
589  template<typename TImageType>
590  static void itkClosingBinary(TImageType * sourceImage, mitk::Image::Pointer& resultImage, int radius, MorphologicalDimensions d);
591 
592  template<typename TPixel, unsigned int VDimension>
593  static void itkFillHolesBinary(itk::Image<TPixel, VDimension>* sourceImage, mitk::Image::Pointer& resultImage);
594 
595  template<typename TImageType>
596  static void itkLogicalAndImages(const TImageType * image1, const mitk::Image::Pointer & image2, mitk::Image::Pointer & outimage);
597 
598  template<class TImageType>
599  static void itkGaussianFilter(TImageType * image, mitk::Image::Pointer & smoothed ,double sigma);
600 
601  template<class TImageType>
602  static void itkDifferenceOfGaussianFilter(TImageType * image, mitk::Image::Pointer & smoothed, double sigma1, double sigma2);
603 
604  template<typename TImageType>
605  static void itkProbabilityMap(const TImageType * sourceImage, double mean, double std_dev, mitk::Image::Pointer& resultImage);
606 
607  template<typename TPixel, unsigned int VImageDimension>
608  static void itkHessianOfGaussianFilter(itk::Image<TPixel, VImageDimension>* itkImage, double variance, std::vector<mitk::Image::Pointer> &out);
609 
610  template<typename TPixel, unsigned int VImageDimension>
611  static void itkLaplacianOfGaussianFilter(itk::Image<TPixel, VImageDimension>* itkImage, double variance, mitk::Image::Pointer &output);
612 
613  template<typename TPixel, unsigned int VImageDimension>
614  static void itkLocalHistograms(itk::Image<TPixel, VImageDimension>* itkImage, std::vector<mitk::Image::Pointer> &out, int size, int bins);
615 };
616 
617 } //namespace MITK
618 
619 #endif
#define MITKCLUTILITIES_EXPORT
Collection of static utility functions for classification and image processing.
Definition: mitkCLUtil.h:40
static void HessianOfGaussianFilter(mitk::Image::Pointer image, std::vector< mitk::Image::Pointer > &out, double sigma)
Compute the Hessian of Gaussian for an image.
static void ProbabilityMap(const mitk::Image::Pointer &sourceImage, double mean, double std_dev, mitk::Image::Pointer &resultImage)
Create a probability map based on Gaussian distribution parameters.
MorphologicalDimensions
Specifies the anatomical plane for morphological operations.
Definition: mitkCLUtil.h:46
@ Sagittal
Sagittal plane.
Definition: mitkCLUtil.h:49
@ Axial
Axial (transverse) plane.
Definition: mitkCLUtil.h:47
@ Coronal
Coronal (frontal) plane.
Definition: mitkCLUtil.h:48
static void CreateCheckerboardMask(mitk::Image::Pointer image, mitk::Image::Pointer &outimage)
Create a checkerboard mask from the given image.
static void InterpolateCheckerboardPrediction(mitk::Image::Pointer checkerboard_prediction, mitk::Image::Pointer &checkerboard_mask, mitk::Image::Pointer &outimage)
Interpolate a prediction using a checkerboard pattern.
static void LogicalAndImages(const Image::Pointer &image1, const Image::Pointer &image2, Image::Pointer &outimage)
Compute the logical AND of two binary images.
static void GaussianFilter(mitk::Image::Pointer image, mitk::Image::Pointer &smoothed, double sigma)
Apply a Gaussian smoothing filter to an image.
static void SumVoxelForLabel(mitk::Image::Pointer image, const mitk::Image::Pointer &source, unsigned int label, double &val)
Sum intensity values from a source image for voxels matching a given label.
static void GrabLabel(mitk::Image::Pointer &image, mitk::Image::Pointer &outimage, unsigned int label)
Extract a single label from a label image into a binary mask.
static void FillHoleGrayscale(mitk::Image::Pointer &image, mitk::Image::Pointer &outimage)
Fill holes in a grayscale image.
static void itkSampleLabel(TImageType1 *image, TImageType2 *output, double acceptrate, unsigned int label)
Definition: mitkCLUtil.h:391
static void itkCountVoxel(TImageType *image, typename TImageType::PixelType label, unsigned int &count)
Definition: mitkCLUtil.h:368
static void MergeLabels(mitk::Image::Pointer &img, const std::map< unsigned int, unsigned int > &map)
Merge labels in a label image according to a mapping.
static void InsertLabel(mitk::Image::Pointer &image, mitk::Image::Pointer &maskImage, unsigned int label)
Insert a label value into an output image at positions defined by a mask.
static void ClosingBinary(mitk::Image::Pointer &sourceImage, mitk::Image::Pointer &resultImage, int radius, MorphologicalDimensions d)
Perform morphological closing on a binary image.
static void itkCountVoxel(TImageType *mask, unsigned int &n_numSamples)
Definition: mitkCLUtil.h:379
static void itkSampleLabel(TImageType *image, mitk::Image::Pointer &output, unsigned int n_samples_drawn)
Definition: mitkCLUtil.h:410
static void DifferenceOfGaussianFilter(mitk::Image::Pointer image, mitk::Image::Pointer &smoothed, double sigma1, double sigma2)
Compute the Difference of Gaussians (DoG) of an image.
static void LocalHistogram(mitk::Image::Pointer image, std::vector< mitk::Image::Pointer > &out, int Bins, int NeighbourhoodSize)
Compute local histograms for each voxel in an image.
static void SqSumVoxelForLabel(mitk::Image::Pointer image, const mitk::Image::Pointer &source, unsigned int label, double &val)
Sum squared intensity values from a source image for voxels matching a given label.
static void itkCountVoxel(TImageType *image, std::map< unsigned int, unsigned int > &map)
Definition: mitkCLUtil.h:355
static void ErodeBinary(mitk::Image::Pointer &sourceImage, mitk::Image::Pointer &resultImage, int radius, MorphologicalDimensions d)
Erode a binary image using a ball structuring element.
static void CountVoxel(mitk::Image::Pointer image, unsigned int label, unsigned int &count)
Count the number of voxels with a specific label value.
static void ErodeGrayscale(mitk::Image::Pointer &image, unsigned int radius, mitk::CLUtil::MorphologicalDimensions d, mitk::Image::Pointer &outimage)
Perform grayscale erosion using a ball structuring element.
static void DilateBinary(mitk::Image::Pointer &sourceImage, mitk::Image::Pointer &resultImage, int radius, MorphologicalDimensions d)
Dilate a binary image using a ball structuring element.
static void CountVoxel(mitk::Image::Pointer image, std::map< unsigned int, unsigned int > &map)
Count voxels per label in an image.
static mitk::Image::Pointer Transform(const Eigen::Matrix< TMatrixElementType, Eigen::Dynamic, Eigen::Dynamic > &matrix, const mitk::Image::Pointer &mask)
Transform an Eigen matrix back to an MITK image using a mask.
Definition: mitkCLUtil.h:186
static void CountVoxel(mitk::Image::Pointer image, unsigned int &count)
Count the total number of non-zero voxels.
static void DilateGrayscale(mitk::Image::Pointer &image, unsigned int radius, mitk::CLUtil::MorphologicalDimensions d, mitk::Image::Pointer &outimage)
Perform grayscale dilation using a ball structuring element.
static void ConnectedComponentsImage(mitk::Image::Pointer &image, mitk::Image::Pointer &mask, mitk::Image::Pointer &outimage, unsigned int &num_components)
Compute connected components of a label image.
static Eigen::Matrix< TMatrixElementType, Eigen::Dynamic, Eigen::Dynamic > Transform(const mitk::Image::Pointer &img, const mitk::Image::Pointer &mask)
Transform an MITK image into an Eigen column matrix using a mask.
Definition: mitkCLUtil.h:235
static void LaplacianOfGaussianFilter(mitk::Image::Pointer image, mitk::Image::Pointer &smoothed, double sigma1)
Compute the Laplacian of Gaussian (LoG) of an image.
static Pointer New()
void MITKCORE_EXPORT CastToItkImage(const mitk::Image *mitkImage, itk::SmartPointer< ItkOutputImageType > &itkOutputImage)
Cast an mitk::Image to an itk::Image with a specific type.
Image::Pointer GrabItkImageMemory(itk::SmartPointer< ItkOutputImageType > &itkimage, mitk::Image *mitkImage=nullptr, const BaseGeometry *geometry=nullptr, bool update=true)
Grab the memory of an itk::Image (with a specific type) and put it into an mitk::Image.
void CastToMitkImage(const itk::SmartPointer< ItkOutputImageType > &itkimage, itk::SmartPointer< mitk::Image > &mitkoutputimage)
Cast an itk::Image (with a specific type) to an mitk::Image.
Definition: mitkImageCast.h:82
#define MITK_INFO
Log an informational message.
Definition: mitkLog.h:358
#define MITK_ERROR
Log an error message.
Definition: mitkLog.h:372
Find image slices visible on a given plane.
@ All
Return all nodes in the DataStorage.