1 #ifndef TIL_DISTANCE_TRANSFORM_H 2 #define TIL_DISTANCE_TRANSFORM_H 15 template <
typename TImage >
17 cityBlock(TImage &seg,
18 typename TImage::value_type foreground,
19 typename TImage::value_type background
23 typename TImage::LinearIterator iSeg(seg);
29 for (; !iSeg.isAtEnd(); ++iSeg)
32 if (*iSeg == foreground) *iSeg = 0;
34 else if (*iSeg == background) *iSeg = INFINITY;
36 else *iSeg = OTHER_OBJECT;
42 typename TImage::LinearIterator iSeg(seg);
43 for(; !iSeg.isAtEnd(); ++iSeg)
45 if (*iSeg == OTHER_OBJECT)
continue;
46 *iSeg =
min(*iSeg,
min(
min(
min(iSeg.getValue<-1,0,0>(), iSeg.getValue<0,-1,0>()), iSeg.getValue<0,0,-1>) + T(1), INFINITY)));
51 typename TImage::LinearIterator iSeg(seg);
52 for(; !iSeg.isAtEnd(); --iSeg)
54 if (*iSeg == OTHER_OBJECT)
continue;
55 *iSeg =
min(*iSeg,
min(
min(
min(iSeg.getValue<+1,0,0>(), iSeg.getValue<0,+1,0>()), iSeg.getValue<0,0,+1>) + T(1), INFINITY)));
boost::enable_if< is_Image< TImage >, typename TImage::value_type >::type min(const TImage &im)
Belongs to package Box Do not include directly, include til/Box.h instead.
General macros, definitions and functions.
TImage::value_type max(const TImage &im)
Returns the maximum intensity of the input image.