1 #ifndef vil_abs_shuffle_distance_h_ 2 #define vil_abs_shuffle_distance_h_ 12 template <
class T1,
class T2>
14 const std::ptrdiff_t* offset,
unsigned n)
16 double min_v = im[offset[0]]<v0?(v0-im[offset[0]]):(im[offset[0]]-v0);
17 for (
unsigned i=1;i<n;++i)
19 T2 v1 = im[offset[i]];
20 double abs_diff = (v0<v1?(v1-v0):(v0-v1));
21 if (abs_diff<min_v) min_v=abs_diff;
31 template <
class T1,
class T2>
38 unsigned n = element.
p_i().size();
39 for (
unsigned int k=0;k<n;++k)
41 unsigned int i = i0+element.
p_i()[k];
42 unsigned int j = j0+element.
p_j()[k];
43 if (i<image.
ni() && j<image.
nj())
45 T2 v1 = image(i,j,plane);
46 double abs_diff = (v0<v1?(v1-v0):(v0-v1));
47 if (abs_diff < min_v) { min_v = abs_diff; }
62 template <
class T1,
class T2>
66 bool include_borders=
true);
68 #endif // vil_abs_shuffle_distance_h_ Structuring element for morphology represented as a list of non-zero pixels.
const std::vector< int > & p_j() const
j position of elements (i,j).
Structuring element for morphology represented as a list of non-zero pixels.
Concrete view of image data of type T held in memory.
double vil_abs_shuffle_distance(T1 v0, const vil_image_view< T2 > &image, unsigned plane, const vil_structuring_element &element, int i0, int j0)
Return min difference of pixels under structuring element centred at (i0,j0).
unsigned ni() const
Width.
unsigned nj() const
Height.
A base class reference-counting view of some image data.
const std::vector< int > & p_i() const
i position of elements (i,j).