SMIL  1.0.4
DFastAreaOpening.h
1 #ifndef _DFAST_AREA_OPENING_H_
2 #define _DFAST_AREA_OPENING_H_
3 
4 #include "Core/include/DCore.h"
5 
6 namespace smil
7 {
25  // AREA OPENING
26 
33  template <class T1, class T2>
34  RES_T ImAreaClosing_PixelQueue(const Image<T1> &imIn, int size,
35  Image<T2> &imOut);
36 
43  template <class T1, class T2>
44  RES_T ImAreaOpening_PixelQueue(const Image<T1> &imIn, int size,
45  Image<T2> &imOut)
46  {
47  ASSERT_ALLOCATED(&imIn)
48  ASSERT_SAME_SIZE(&imIn, &imOut)
49  Image<T1> imNeg(imIn);
50  RES_T res = inv(imIn, imNeg);
51  if (res != RES_OK)
52  return res;
53  res = ImAreaClosing_PixelQueue(imNeg, size, imOut);
54  if (res != RES_OK)
55  return res;
56  return inv(imOut, imOut);
57  }
58 
65  template <class T1, class T2>
66  RES_T ImAreaOpening_MaxTree(const Image<T1> &imIn, int size,
67  Image<T2> &imOut);
68 
75  template <class T1, class T2>
76  RES_T ImAreaClosing_MaxTree(const Image<T1> &imIn, int size, Image<T2> &imOut)
77  {
78  ASSERT_ALLOCATED(&imIn)
79  ASSERT_SAME_SIZE(&imIn, &imOut)
80  Image<T1> imNeg(imIn);
81  RES_T res = inv(imIn, imNeg);
82  if (res != RES_OK)
83  return res;
84  res = ImAreaOpening_MaxTree(imNeg, size, imOut);
85  if (res != RES_OK)
86  return res;
87  return inv(imOut, imOut);
88  }
89 
96  template <class T1, class T2>
97  RES_T ImAreaOpening_UnionFind(const Image<T1> &imIn, int size,
98  Image<T2> &imOut);
99 
106  template <class T1, class T2>
107  RES_T ImAreaClosing_UnionFind(const Image<T1> &imIn, int size,
108  Image<T2> &imOut)
109  {
110  ASSERT_ALLOCATED(&imIn)
111  ASSERT_SAME_SIZE(&imIn, &imOut)
112  Image<T1> imNeg(imIn);
113  RES_T res = inv(imIn, imNeg);
114  if (res != RES_OK)
115  return res;
116  res = ImAreaOpening_UnionFind(imNeg, size, imOut);
117  if (res != RES_OK)
118  return res;
119  return inv(imOut, imOut);
120  }
121 
128  template <class T1, class T2>
129  RES_T ImAreaOpening_Line(const Image<T1> &imIn, int size, Image<T2> &imOut);
130 
137  template <class T1, class T2>
138  RES_T ImAreaClosing_Line(const Image<T1> &imIn, int size, Image<T2> &imOut)
139  {
140  ASSERT_ALLOCATED(&imIn)
141  ASSERT_SAME_SIZE(&imIn, &imOut)
142  Image<T1> imNeg(imIn);
143  RES_T res = inv(imIn, imNeg);
144  if (res != RES_OK)
145  return res;
146  res = ImAreaOpening_Line(imNeg, size, imOut);
147  if (res != RES_OK)
148  return res;
149  return inv(imOut, imOut);
150  }
151 
158  template <class T1, class T2>
159  RES_T ImAreaOpening_LineSupEqu(const Image<T1> &imIn, int size,
160  Image<T2> &imOut);
161 
162  // INERTIA THINNINGS
163 
170  template <class T1, class T2>
171  RES_T ImInertiaThinning_MaxTree(const Image<T1> &imIn, double size,
172  Image<T2> &imOut);
173 
180  template <class T1, class T2>
181  RES_T ImInertiaThickening_MaxTree(const Image<T1> &imIn, double size,
182  Image<T2> &imOut)
183  {
184  ASSERT_ALLOCATED(&imIn)
185  ASSERT_SAME_SIZE(&imIn, &imOut)
186  Image<T1> imNeg(imIn);
187  RES_T res = inv(imIn, imNeg);
188  if (res != RES_OK)
189  return res;
190  res = ImInertiaThinning_MaxTree(imNeg, size, imOut);
191  if (res != RES_OK)
192  return res;
193  return inv(imOut, imOut);
194  }
195 
197 } // namespace smil
198 
199 // FastAreaOpening Module header
200 #include "FastAreaOpening/AreaOpeningPixelQueue.hpp"
201 #include "FastAreaOpening/AreaOpeningMaxTree.hpp"
202 #include "FastAreaOpening/AreaOpeningUnionFind.hpp"
203 #include "FastAreaOpening/AreaOpeningLine.hpp"
204 
205 #endif // _DFAST_AREA_OPENING_H_
RES_T ImAreaOpening_PixelQueue(const Image< T1 > &imIn, int size, Image< T2 > &imOut)
Area Opening with pixel queue algorithm (V4)
Definition: DFastAreaOpening.h:44
RES_T ImAreaOpening_Line(const Image< T1 > &imIn, int size, Image< T2 > &imOut)
Non exact implementation of the Area opening with an 1D line (V4)
Definition: AreaOpeningLine.hpp:27
RES_T ImInertiaThickening_MaxTree(const Image< T1 > &imIn, double size, Image< T2 > &imOut)
Inertia thickening with a max tree algorithm (V4)
Definition: DFastAreaOpening.h:181
RES_T ImAreaOpening_UnionFind(const Image< T1 > &imIn, int size, Image< T2 > &imOut)
Area opening with an union find algorithm (V4)
Definition: AreaOpeningUnionFind.hpp:190
RES_T ImAreaClosing_MaxTree(const Image< T1 > &imIn, int size, Image< T2 > &imOut)
Area closing with a max tree algorithm (V4)
Definition: DFastAreaOpening.h:76
RES_T ImInertiaThinning_MaxTree(const Image< T1 > &imIn, double size, Image< T2 > &imOut)
Inertia thinning with a max tree algorithm (V4)
Definition: AreaOpeningMaxTree.hpp:813
RES_T ImAreaClosing_Line(const Image< T1 > &imIn, int size, Image< T2 > &imOut)
Non exact implementation of the Area closing with an 1D line (V4)
Definition: DFastAreaOpening.h:138
RES_T ImAreaOpening_LineSupEqu(const Image< T1 > &imIn, int size, Image< T2 > &imOut)
Non exact implementation of the Area opening with an 1D line (V4)
Definition: AreaOpeningLine.hpp:194
RES_T ImAreaClosing_UnionFind(const Image< T1 > &imIn, int size, Image< T2 > &imOut)
Area closing with an union find algorithm (V4)
Definition: DFastAreaOpening.h:107
RES_T ImAreaClosing_PixelQueue(const Image< T1 > &imIn, int size, Image< T2 > &imOut)
Area closing with pixel queue algorithm (V4)
Definition: AreaOpeningPixelQueue.hpp:339
RES_T ImAreaOpening_MaxTree(const Image< T1 > &imIn, int size, Image< T2 > &imOut)
Area opening with a max tree algorithm (V4)
Definition: AreaOpeningMaxTree.hpp:772
RES_T inv(const Image< T > &imIn, Image< T > &imOut)
inv() - Invert an image.
Definition: DImageArith.hpp:70