DGtal  0.6.devel
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
imageSetDT.cpp
1 
30 
31 #include <iostream>
32 #include <fstream>
33 #include <algorithm>
35 
37 #include "DGtal/base/Common.h"
38 #include "DGtal/helpers/StdDefs.h"
39 
40 #include "DGtal/base/BasicFunctors.h"
41 #include "DGtal/kernel/BasicPointPredicates.h"
42 #include "DGtal/kernel/sets/DigitalSetInserter.h"
43 
44 #include "DGtal/images/ImageContainerBySTLVector.h"
45 #include "DGtal/images/ImageHelper.h"
46 #include "DGtal/geometry/volumes/distance/DistanceTransformation.h"
47 #include "DGtal/images/imagesSetsUtils/IntervalForegroundPredicate.h"
48 
49 #include "DGtal/io/boards/Board2D.h"
50 #include "DGtal/io/readers/PNMReader.h"
51 #include "DGtal/io/colormaps/HueShadeColorMap.h"
52 #include "DGtal/io/colormaps/GrayscaleColorMap.h"
53 
54 #include "ConfigExamples.h"
56 
57 
59 
60 int main()
61 {
66 
67 
69  std::string filename = examplesPath + "samples/contourS.pgm";
70  Image image = DGtal::PNMReader<Image>::importPGM(filename);
71  DGtal::trace.info() << "Imported image: "<<image<<endl;
73 
74 
76  DGtal::Board2D aBoard;
77  aBoard << image.domain();
78  aBoard.saveSVG("imageDomainTuto.svg");
79  aBoard.clear();
80  Display2DFactory::drawImage<Gray>(aBoard, image, (unsigned char)0, (unsigned char)255);
81  aBoard.saveEPS("imageDomainTuto2.eps");
83 
84 
85  Z2i::DigitalSet mySet(image.domain());
86  DigitalSetInserter<Z2i::DigitalSet> inserter(mySet);
87  setFromImage(image, inserter, 1, 135);
88  aBoard.clear();
89  aBoard << mySet.domain()
90  << mySet;
91  aBoard.saveEPS("imageDomainTuto2bis.eps");
92 
93 
95  typedef IntervalForegroundPredicate<Image> Binarizer;
96  Binarizer b(image,1, 135);
98  typedef DTL2::OutputImage OutputImage;
99  DTL2 dt(image.domain(),b);
100 
101  OutputImage result = dt.compute();
103 
104 
106  OutputImage::Value maxDT = (*std::max_element(result.begin(),
107  result.end()));
109 
110  aBoard.clear();
111  Display2DFactory::drawImage<HueTwice>(aBoard, result, (OutputImage::Value)0, (OutputImage::Value)maxDT);
112  aBoard.saveEPS("imageDomainTuto3.eps");
114 
115  return 0;
116 
117 }
118