]> Creatis software - clitk.git/blob - common/clitkImageUtilities.txx
removed headers
[clitk.git] / common / clitkImageUtilities.txx
1 #ifndef CLITKIMAGEUTILITIES_TXX
2 #define CLITKIMAGEUTILITIES_TXX
3 /**
4  =================================================
5  * @file   clitkImageUtilities.txx
6  * @author David Sarrut <david.sarrut@creatis.insa-lyon.fr>
7  * @date   22 Sep 2006 10:39:48
8  * 
9  * @brief  
10  * 
11  * 
12  =================================================*/
13
14 //====================================================================
15 // Compute the number of different intensities in an image
16 template<class ImageType>
17 int ComputeHowManyDifferentIntensity(const typename ImageType::Pointer & image, 
18                                                                          std::vector<typename ImageType::PixelType> & l)
19 {
20   //std::set<typename ImageType::PixelType> listOfIntensities;
21   std::map<typename ImageType::PixelType, bool> listOfIntensities;
22   //  listOfIntensities.resize(0);
23   typedef itk::ImageRegionConstIterator<ImageType> ConstIteratorType;
24   ConstIteratorType pi(image, image->GetLargestPossibleRegion());
25   pi.Begin();
26   while (!pi.IsAtEnd()) {
27         if (!listOfIntensities[pi.Get()]) listOfIntensities[pi.Get()] = true;
28         // if (std::find(listOfIntensities.begin(), 
29 //                                listOfIntensities.end(), 
30 //                                pi.Get()) == listOfIntensities.end()) {
31 //        listOfIntensities.insert(pi.Get());
32 //      }
33         ++pi;
34   }
35   
36   //typename std::set<typename ImageType::PixelType>::const_iterator ppi = listOfIntensities.begin();
37   typename std::map<typename ImageType::PixelType, bool>::const_iterator ppi = listOfIntensities.begin();
38   while (ppi != listOfIntensities.end()) {
39         l.push_back(ppi->first);
40         ++ppi;
41   }
42
43   return listOfIntensities.size();
44 }
45 //====================================================================
46   
47 //====================================================================
48 template<class InputImageType, class MaskImageType>
49 void ComputeWeightsOfEachClasses(const typename InputImageType::Pointer & input, 
50                                                                  const typename MaskImageType::Pointer & mask,
51                                                                  const std::vector<typename MaskImageType::PixelType> & listOfIntensities, 
52                                                                  std::map<typename MaskImageType::PixelType, 
53                                                                  std::map<typename InputImageType::PixelType, double> > & mapOfLabelsAndWeights) {
54   // Check size
55   if (input->GetLargestPossibleRegion() != mask->GetLargestPossibleRegion()) {
56         itkGenericExceptionMacro(<< "Input and mask images have not the same size"
57                                                          << std::endl
58                                                          << "Input = " << input->GetLargestPossibleRegion()
59                                                          << std::endl
60                                                          << "Mask = " << mask->GetLargestPossibleRegion());
61   }
62
63   // reset weights list
64   mapOfLabelsAndWeights.clear();
65
66   // loop
67   typedef itk::ImageRegionConstIterator<InputImageType> ConstInputIteratorType;
68   ConstInputIteratorType pi(input, input->GetLargestPossibleRegion());
69   typedef itk::ImageRegionConstIterator<MaskImageType> ConstMaskIteratorType;
70   ConstMaskIteratorType pm(mask, mask->GetLargestPossibleRegion());
71   pi.Begin();
72   pm.Begin();
73   while (!pi.IsAtEnd()) {
74         mapOfLabelsAndWeights[pm.Get()][pi.Get()]++;
75         ++pi;
76         ++pm;
77   }
78 }
79 //====================================================================
80
81 // //====================================================================
82 // template<class ImageType>
83 // typename ImageType::Pointer NewImage3D(int x, int y, int z, float dx, float dy, float dz) {  
84 //   typename ImageType::Pointer output = ImageType::New();
85 //   typename ImageType::RegionType region;
86 //   typename ImageType::SizeType size;
87 //   size[0] = x;
88 //   size[1] = y;
89 //   size[2] = z;
90 //   region.SetSize(size);
91 //   output->SetRegions(region);
92 //   output->Allocate();
93 //   typename ImageType::SpacingType spacing;  
94 //   spacing[0] = dx;
95 //   spacing[1] = dy;
96 //   spacing[2] = dz;
97 //   output->SetSpacing(spacing);
98 //   return output;
99 // }
100 // //====================================================================
101
102
103 #endif /* end #define CLITKIMAGEUTILITIES_TXX */
104