1 /*=========================================================================
2 Program: vv http://www.creatis.insa-lyon.fr/rio/vv
5 - University of LYON http://www.universite-lyon.fr/
6 - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
7 - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
9 This software is distributed WITHOUT ANY WARRANTY; without even
10 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 PURPOSE. See the copyright notices for more information.
13 It is distributed under dual licence
15 - BSD See included LICENSE.txt file
16 - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17 ======================================================================-====*/
19 #ifndef CLITKSEGMENTATIONUTILS_H
20 #define CLITKSEGMENTATIONUTILS_H
22 #include "clitkCommon.h"
23 #include "clitkAutoCropFilter.h"
24 #include "clitkLabelizeParameters.h"
25 #include <itkBoundingBox.h>
29 //--------------------------------------------------------------------
30 template<class ImageType>
31 void ComputeBBFromImageRegion(typename ImageType::Pointer image,
32 typename ImageType::RegionType region,
33 typename itk::BoundingBox<unsigned long,
34 ImageType::ImageDimension>::Pointer bb);
36 //--------------------------------------------------------------------
37 template<int Dimension>
38 void ComputeBBIntersection(typename itk::BoundingBox<unsigned long, Dimension>::Pointer bbo,
39 typename itk::BoundingBox<unsigned long, Dimension>::Pointer bbi1,
40 typename itk::BoundingBox<unsigned long, Dimension>::Pointer bbi2);
42 //--------------------------------------------------------------------
43 template<class ImageType>
44 void ComputeRegionFromBB(typename ImageType::Pointer image,
45 const typename itk::BoundingBox<unsigned long,
46 ImageType::ImageDimension>::Pointer bb,
47 typename ImageType::RegionType & region);
48 //--------------------------------------------------------------------
49 template<class TInternalImageType, class TMaskInternalImageType>
50 typename TInternalImageType::Pointer
51 SetBackground(typename TInternalImageType::ConstPointer input,
52 typename TMaskInternalImageType::ConstPointer mask,
53 typename TMaskInternalImageType::PixelType maskBG,
54 typename TInternalImageType::PixelType outValue);
55 //--------------------------------------------------------------------
58 //--------------------------------------------------------------------
59 template<class TInternalImageType, class TMaskInternalImageType>
60 typename TInternalImageType::Pointer
61 SetBackground(typename TInternalImageType::Pointer input,
62 typename TMaskInternalImageType::Pointer mask,
63 typename TMaskInternalImageType::PixelType maskBG,
64 typename TInternalImageType::PixelType outValue) {
65 return SetBackground<TInternalImageType, TMaskInternalImageType>
66 (static_cast<typename TInternalImageType::ConstPointer>(input),
67 static_cast<typename TMaskInternalImageType::ConstPointer>(mask),
70 //--------------------------------------------------------------------
73 //--------------------------------------------------------------------
74 template<class TImageType>
75 typename TImageType::Pointer
76 Labelize(typename TImageType::Pointer input,
77 typename TImageType::PixelType BG,
78 bool isFullyConnected,
79 int minimalComponentSize);
80 //--------------------------------------------------------------------
83 //--------------------------------------------------------------------
84 template<class ImageType>
85 typename ImageType::Pointer
86 RemoveLabels(typename ImageType::Pointer input,
87 typename ImageType::PixelType BG,
88 std::vector<typename ImageType::PixelType> & labelsToRemove);
89 //--------------------------------------------------------------------
92 //--------------------------------------------------------------------
93 template<class ImageType>
94 typename ImageType::Pointer
95 AutoCrop(typename ImageType::Pointer input,
96 typename ImageType::PixelType BG) {
97 typedef clitk::AutoCropFilter<ImageType> AutoCropFilterType;
98 typename AutoCropFilterType::Pointer autoCropFilter = AutoCropFilterType::New();
99 autoCropFilter->SetInput(input);
100 autoCropFilter->Update();
101 return autoCropFilter->GetOutput();
104 //--------------------------------------------------------------------
107 //--------------------------------------------------------------------
108 template<class TImageType>
109 typename TImageType::Pointer
110 KeepLabels(typename TImageType::Pointer input,
111 typename TImageType::PixelType BG,
112 typename TImageType::PixelType FG,
113 typename TImageType::PixelType firstKeep,
114 typename TImageType::PixelType lastKeep,
116 //--------------------------------------------------------------------
119 //--------------------------------------------------------------------
120 template<class TImageType>
121 typename TImageType::Pointer
122 LabelizeAndSelectLabels(typename TImageType::Pointer input,
123 typename TImageType::PixelType BG,
124 typename TImageType::PixelType FG,
125 bool isFullyConnected,
126 int minimalComponentSize,
127 LabelizeParameters<typename TImageType::PixelType> * param);
129 //--------------------------------------------------------------------
130 template<class ImageType>
131 typename ImageType::Pointer
132 EnlargeImageLike(typename ImageType::Pointer input,
133 typename ImageType::Pointer like,
134 typename ImageType::PixelType BG);
138 #include "clitkSegmentationUtils.txx"