* milena/headers.mk: update distributed files list.
* milena/mln/core/image/edge_image.hh,
* milena/mln/core/image/vertex_image.hh: fix a wrong image type.
* milena/mln/fun/math/sup.hh: fix wrong template parameters.
* milena/mln/value/rgb.hh,
* milena/mln/util/essential.hh,
* milena/mln/util/all.hh,
* milena/mln/labeling/all.hh,
* milena/mln/debug/all.hh,
* milena/mln/fun/v2v/all.hh: fix includes.
* milena/mln/fun/v2v/rgb_to_hsi.hh: fix duplicate declarations.
* milena/mln/make/influence_zone_adjacency_graph.hh: add missing const
references.
* milena/mln/morpho/opening/area_on_vertices.hh: update according new
graph image types.
* milena/mln/registration/icp.hh: fix use of random_color.
* milena/mln/util/adjacency_matrix.hh: fix wrong ifndef.
* milena/mln/util/object_id.hh,
* milena/mln/util/vertex.hh,
* milena/mln/util/edge.hh: fix operator< and operator==.
* milena/mln/util/graph.hh: add preconditions.
* milena/mln/world/binary_2d/all.hh: new.
* milena/tests/morpho/closing/Makefile.am,
* milena/tests/morpho/closing/area_on_vertices.cc,
* milena/tests/morpho/opening/Makefile.am,
* milena/tests/morpho/opening/area_on_vertices.cc: new tests.
* milena/tests/unit_test/unit-tests.mk: update unit test list.
* milena/tests/util/Makefile.am,
* milena/tests/util/tree_fast_to_image.cc,
* milena/tests/util/tree_to_image.cc: remove tests.
---
milena/ChangeLog | 49 +++++++++++++
milena/headers.mk | 27 +++++---
milena/mln/core/image/edge_image.hh | 3 +-
milena/mln/core/image/vertex_image.hh | 3 +-
milena/mln/debug/all.hh | 3 +-
milena/mln/fun/math/sup.hh | 4 +-
milena/mln/fun/v2v/all.hh | 3 +
milena/mln/fun/v2v/rgb_to_hsi.hh | 53 --------------
milena/mln/labeling/all.hh | 1 +
milena/mln/make/influence_zone_adjacency_graph.hh | 13 ++--
milena/mln/morpho/opening/area_on_vertices.hh | 37 ++++++-----
milena/mln/registration/icp.hh | 3 +-
milena/mln/util/adjacency_matrix.hh | 4 +-
milena/mln/util/all.hh | 2 -
milena/mln/util/edge.hh | 8 ++-
milena/mln/util/essential.hh | 2 +-
milena/mln/util/graph.hh | 5 +-
milena/mln/util/object_id.hh | 7 ++
milena/mln/util/vertex.hh | 4 +-
milena/mln/value/rgb.hh | 1 +
.../{util/essential.hh => world/binary_2d/all.hh} | 26 +++----
milena/tests/morpho/closing/Makefile.am | 2 +
.../morpho/closing/area_on_vertices.cc} | 65 +++++++++---------
milena/tests/morpho/opening/Makefile.am | 2 +
.../morpho/opening/area_on_vertices.cc} | 65 +++++++++---------
milena/tests/unit_test/unit-tests.mk | 72 ++++++++++++++------
milena/tests/util/Makefile.am | 6 +--
27 files changed, 259 insertions(+), 211 deletions(-)
copy milena/mln/{util/essential.hh => world/binary_2d/all.hh} (70%)
copy milena/{mln/fun/math/sup.hh => tests/morpho/closing/area_on_vertices.cc} (58%)
copy milena/{mln/fun/math/sup.hh => tests/morpho/opening/area_on_vertices.cc} (58%)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index 2fda128..e0e1cee 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,5 +1,54 @@
2009-05-11 Guillaume Lazzara <lazzara(a)lrde.epita.fr>
+ Small fixes.
+
+ * milena/headers.mk: update distributed files list.
+
+ * milena/mln/core/image/edge_image.hh,
+ * milena/mln/core/image/vertex_image.hh: fix a wrong image type.
+
+ * milena/mln/fun/math/sup.hh: fix wrong template parameters.
+
+ * milena/mln/value/rgb.hh,
+ * milena/mln/util/essential.hh,
+ * milena/mln/util/all.hh,
+ * milena/mln/labeling/all.hh,
+ * milena/mln/debug/all.hh,
+ * milena/mln/fun/v2v/all.hh: fix includes.
+
+ * milena/mln/fun/v2v/rgb_to_hsi.hh: fix duplicate declarations.
+
+ * milena/mln/make/influence_zone_adjacency_graph.hh: add missing const
+ references.
+
+ * milena/mln/morpho/opening/area_on_vertices.hh: update according new
+ graph image types.
+
+ * milena/mln/registration/icp.hh: fix use of random_color.
+
+ * milena/mln/util/adjacency_matrix.hh: fix wrong ifndef.
+
+ * milena/mln/util/object_id.hh,
+ * milena/mln/util/vertex.hh,
+ * milena/mln/util/edge.hh: fix operator< and operator==.
+
+ * milena/mln/util/graph.hh: add preconditions.
+
+ * milena/mln/world/binary_2d/all.hh: new.
+
+ * milena/tests/morpho/closing/Makefile.am,
+ * milena/tests/morpho/closing/area_on_vertices.cc,
+ * milena/tests/morpho/opening/Makefile.am,
+ * milena/tests/morpho/opening/area_on_vertices.cc: new tests.
+
+ * milena/tests/unit_test/unit-tests.mk: update unit test list.
+
+ * milena/tests/util/Makefile.am,
+ * milena/tests/util/tree_fast_to_image.cc,
+ * milena/tests/util/tree_to_image.cc: remove tests.
+
+2009-05-11 Guillaume Lazzara <lazzara(a)lrde.epita.fr>
+
Fix documentation.
* doc/Doxyfile.in: add macro definitions.
diff --git a/milena/headers.mk b/milena/headers.mk
index 34e4823..d241629 100644
--- a/milena/headers.mk
+++ b/milena/headers.mk
@@ -57,11 +57,18 @@ mln/literal/one.hh \
mln/literal/min.hh \
mln/literal/white.hh \
mln/literal/essential.hh \
+mln/world/all.hh \
mln/world/binary_2d/subsample.hh \
+mln/world/binary_2d/all.hh \
mln/world/binary_2d/projected_histo.hh \
+mln/world/inter_pixel/is_pixel.hh \
+mln/world/inter_pixel/all.hh \
mln/world/inter_pixel/neighb2d.hh \
-mln/world/inter_pixel/image2full.hh \
+mln/world/inter_pixel/is_separator.hh \
+mln/world/inter_pixel/immerse.hh \
+mln/world/inter_pixel/separator_to_pixels.hh \
mln/world/inter_pixel/display_edge.hh \
+mln/world/inter_pixel/compute.hh \
mln/world/inter_pixel/dim2/is_pixel.hh \
mln/world/inter_pixel/dim2/all.hh \
mln/world/inter_pixel/dim2/is_edge.hh \
@@ -82,7 +89,6 @@ mln/util/max.hh \
mln/util/lazy_set.hh \
mln/util/soft_heap.hh \
mln/util/set.hh \
-mln/util/tree_to_image.hh \
mln/util/lemmings.hh \
mln/util/greater_point.hh \
mln/util/internal/graph_iter_base.hh \
@@ -109,18 +115,13 @@ mln/util/yes.hh \
mln/util/line_graph.hh \
mln/util/ord.hh \
mln/util/adjacency_matrix.hh \
-mln/util/tree_fast_to_image.hh \
-mln/util/tree.hh \
mln/util/couple.hh \
mln/util/index.hh \
mln/util/multi_site.hh \
-mln/util/branch_iter.hh \
-mln/util/branch_iter_ind.hh \
-mln/util/tree_to_fast.hh \
mln/util/array.hh \
mln/util/vertex.hh \
mln/util/pix.hh \
-mln/util/tree_fast.hh \
+mln/util/object_id.hh \
mln/util/site_pair.hh \
mln/util/nil.hh \
mln/util/graph_ids.hh \
@@ -128,6 +129,7 @@ mln/util/eat.hh \
mln/util/essential.hh \
mln/data/memset_.hh \
mln/data/paste.spe.hh \
+mln/data/paste_without_localization.hh \
mln/data/memcpy_.hh \
mln/data/all.hh \
mln/data/paste.hh \
@@ -218,6 +220,8 @@ mln/fun/p2p/all.hh \
mln/fun/p2p/translation.hh \
mln/fun/p2p/mirror.hh \
mln/fun/accu_result.hh \
+mln/fun/stat/mahalanobis.hh \
+mln/fun/stat/all.hh \
mln/fun/binary_param.hh \
mln/fun/x2p/closest_point.hh \
mln/fun/x2p/all.hh \
@@ -295,6 +299,8 @@ mln/fun/vv2b/lt.hh \
mln/fun/vv2b/eq.hh \
mln/fun/cast.hh \
mln/fun/composition.hh \
+mln/fun/access/all.hh \
+mln/fun/access/mean.hh \
mln/fun/i2v/all.hh \
mln/fun/i2v/array.hh \
mln/fun/i2v/all_to.hh \
@@ -435,6 +441,7 @@ mln/accu/site_set/all.hh \
mln/accu/site_set/essential.hh \
mln/accu/stat/variance.hh \
mln/accu/stat/deviation.hh \
+mln/accu/stat/all.hh \
mln/accu/stat/var.hh \
mln/accu/max.hh \
mln/accu/lor.hh \
@@ -1026,7 +1033,6 @@ mln/core/concept/window.hh \
mln/core/concept/value.hh \
mln/core/concept/accumulator.hh \
mln/core/concept/site_set.hh \
-mln/core/concept/object_id.hh \
mln/core/concept/object.hh \
mln/core/concept/meta_fun.hh \
mln/core/concept/delta_point_site.hh \
@@ -1109,6 +1115,7 @@ mln/labeling/all.hh \
mln/labeling/level.hh \
mln/labeling/flat_zones.hh \
mln/labeling/foreground.hh \
+mln/labeling/colorize.hh \
mln/labeling/regional_maxima.hh \
mln/labeling/wrap.hh \
mln/labeling/compute.hh \
@@ -1207,7 +1214,6 @@ mln/debug/iota.hh \
mln/debug/all.hh \
mln/debug/println_with_border.hh \
mln/debug/println.spe.hh \
-mln/debug/colorize.hh \
mln/debug/slices_2d.hh \
mln/debug/draw_graph.hh \
mln/debug/filename.hh \
@@ -1233,6 +1239,7 @@ mln/graph/attribute/card.hh \
mln/graph/compute.hh \
mln/graph/essential.hh \
mln/set/uni.hh \
+mln/set/compute_with_weights.hh \
mln/set/unique.hh \
mln/set/inter.hh \
mln/set/all.hh \
diff --git a/milena/mln/core/image/edge_image.hh b/milena/mln/core/image/edge_image.hh
index 76d7fe0..3c71bb8 100644
--- a/milena/mln/core/image/edge_image.hh
+++ b/milena/mln/core/image/edge_image.hh
@@ -146,6 +146,7 @@ namespace mln
/// Function mapping graph elements to sites.
typedef typename internal::efsite_selector<P,G>::site_function_t
site_function_t;
+ typedef mln_result(site_function_t) function_result_t;
/// Window type
typedef graph_elt_window<G,p_edges<G,site_function_t> > win_t;
@@ -193,7 +194,7 @@ namespace mln
{
fun::i2v::array<V> f;
init_(tag::function, f, exact(model));
- p_edges<G,fun::i2v::array<P> > s;
+ p_edges<G, typename edge_image<P,V,G>::site_function_t> s;
init_(tag::domain, s, exact(model));
target.init_(f, s);
}
diff --git a/milena/mln/core/image/vertex_image.hh
b/milena/mln/core/image/vertex_image.hh
index 3498ec7..0d62991 100644
--- a/milena/mln/core/image/vertex_image.hh
+++ b/milena/mln/core/image/vertex_image.hh
@@ -144,6 +144,7 @@ namespace mln
/// Function mapping graph elements to sites.
typedef typename internal::vfsite_selector<P,G>::site_function_t
site_function_t;
+ typedef mln_result(site_function_t) function_result_t;
/// Skeleton type.
@@ -187,7 +188,7 @@ namespace mln
{
fun::i2v::array<V> f;
init_(tag::function, f, exact(model));
- p_vertices<G,fun::i2v::array<P> > s;
+ p_vertices<G,typename edge_image<P,V,G>::site_function_t> s;
init_(tag::domain, s, exact(model));
target.init_(f, s);
}
diff --git a/milena/mln/debug/all.hh b/milena/mln/debug/all.hh
index 814c95b..e65e907 100644
--- a/milena/mln/debug/all.hh
+++ b/milena/mln/debug/all.hh
@@ -48,8 +48,8 @@ namespace mln
}
-# include <mln/debug/format.hh>
# include <mln/debug/draw_graph.hh>
+# include <mln/debug/format.hh>
# include <mln/debug/histo.hh>
# include <mln/debug/iota.hh>
# include <mln/debug/println.hh>
@@ -58,5 +58,4 @@ namespace mln
# include <mln/debug/quiet.hh>
# include <mln/debug/slices_2d.hh>
-
#endif // ! MLN_DEBUG_ALL_HH
diff --git a/milena/mln/fun/math/sup.hh b/milena/mln/fun/math/sup.hh
index 20e19bf..d76b4b2 100644
--- a/milena/mln/fun/math/sup.hh
+++ b/milena/mln/fun/math/sup.hh
@@ -46,7 +46,7 @@ namespace mln
namespace next
{
- template <typename T>
+ template <typename T1, typename T2>
struct set_binary_<mln::fun::sup, mln::Object, T1, mln::Object, T2>
{
typedef set_binary_ ret;
@@ -66,5 +66,5 @@ namespace mln
} // end of namespace mln
-#endif /* ! MLN_FUN_MATH_SUP_HH */
+#endif // ! MLN_FUN_MATH_SUP_HH
diff --git a/milena/mln/fun/v2v/all.hh b/milena/mln/fun/v2v/all.hh
index 2d14054..65de5ca 100644
--- a/milena/mln/fun/v2v/all.hh
+++ b/milena/mln/fun/v2v/all.hh
@@ -54,11 +54,14 @@ namespace mln
# include <mln/fun/v2v/convert.hh>
# include <mln/fun/v2v/dec.hh>
# include <mln/fun/v2v/enc.hh>
+# include <mln/fun/v2v/hsi_to_rgb.hh>
+# include <mln/fun/v2v/hsl_to_rgb.hh>
# include <mln/fun/v2v/id.hh>
# include <mln/fun/v2v/linear.hh>
# include <mln/fun/v2v/norm.hh>
# include <mln/fun/v2v/projection.hh>
# include <mln/fun/v2v/rgb_to_hsi.hh>
+# include <mln/fun/v2v/rgb_to_hsl.hh>
# include <mln/fun/v2v/saturate.hh>
# include <mln/fun/v2v/wrap.hh>
diff --git a/milena/mln/fun/v2v/rgb_to_hsi.hh b/milena/mln/fun/v2v/rgb_to_hsi.hh
index bf9bd5d..c344343 100644
--- a/milena/mln/fun/v2v/rgb_to_hsi.hh
+++ b/milena/mln/fun/v2v/rgb_to_hsi.hh
@@ -61,28 +61,11 @@ namespace mln
extern f_rgb_to_hsi_f_t f_rgb_to_hsi_f;
- template <typename T_rgb>
- struct f_hsi_to_rgb_ : public Function_v2v< f_hsi_to_rgb_<T_rgb> >
- {
- typedef T_rgb result;
-
- template <typename T_hsi>
- T_rgb operator()(const T_hsi& hsi) const;
-
- };
-
- typedef f_hsi_to_rgb_<value::rgb8> f_hsi_to_rgb_3x8_t;
-
- extern f_hsi_to_rgb_3x8_t f_hsi_to_rgb_3x8;
-
-
# ifndef MLN_INCLUDE_ONLY
/// Global variables.
/// \{
f_rgb_to_hsi_f_t f_rgb_to_hsi_f;
-
- f_hsi_to_rgb_3x8_t f_hsi_to_rgb_3x8;
/// \}
@@ -120,42 +103,6 @@ namespace mln
}
- template <typename T_rgb>
- template <typename T_hsi>
- inline
- T_rgb
- f_hsi_to_rgb_<T_rgb>::operator()(const T_hsi& hsi) const
- {
- typedef typename T_rgb::red_t red_t;
- typedef typename T_rgb::green_t green_t;
- typedef typename T_rgb::blue_t blue_t;
-
- static math::round<red_t> to_r;
- static math::round<green_t> to_g;
- static math::round<blue_t> to_b;
-
- static const float
- sqrt3_3 = std::sqrt(3) / 3,
- inv_sqrt6 = 1 / std::sqrt(6),
- inv_sqrt2 = 1 / std::sqrt(2);
-
- float
- h = hsi.hue() / 180.0 * 3.1415,
- alpha = hsi.sat() * std::cos(h),
- beta = hsi.sat() * std::sin(h);
-
-
- red_t r = to_r(sqrt3_3 * hsi.inty() + 2 * inv_sqrt6 * beta);
- green_t g =
- to_g(sqrt3_3 * hsi.inty() + inv_sqrt2 * alpha - inv_sqrt6 * beta);
- blue_t b =
- to_b(sqrt3_3 * hsi.inty() - inv_sqrt2 * alpha - inv_sqrt6 * beta);
-
- T_rgb rgb(r, g, b);
-
- return rgb;
- }
-
# endif // !MLN_INCLUDE_ONLY
} // end of namespace fun::v2v
diff --git a/milena/mln/labeling/all.hh b/milena/mln/labeling/all.hh
index 2931427..e90633b 100644
--- a/milena/mln/labeling/all.hh
+++ b/milena/mln/labeling/all.hh
@@ -55,6 +55,7 @@ namespace mln
# include <mln/labeling/background.hh>
# include <mln/labeling/blobs.hh>
+# include <mln/labeling/colorize.hh>
# include <mln/labeling/compute.hh>
# include <mln/labeling/fill_holes.hh>
# include <mln/labeling/flat_zones.hh>
diff --git a/milena/mln/make/influence_zone_adjacency_graph.hh
b/milena/mln/make/influence_zone_adjacency_graph.hh
index 6cbaa4c..a5c3462 100644
--- a/milena/mln/make/influence_zone_adjacency_graph.hh
+++ b/milena/mln/make/influence_zone_adjacency_graph.hh
@@ -56,14 +56,16 @@ namespace mln
/// Create a graph from an influence zone image.
///
/// \param[in] iz influence zone image.
+ /// \param[in] nbh A neighborhood.
/// \param[in] nlabels number of influence zone in \p iz.
///
/// \return util::graph Graph based on the adjacency of the influence zones.
+ //
template <typename I, typename N>
util::graph
influence_zone_adjacency_graph(const Image<I>& iz_,
const Neighborhood<N>& nbh,
- mln_value(I) nlabels);
+ const mln_value(I)& nlabels);
@@ -77,7 +79,7 @@ namespace mln
void
influence_zone_adjacency_graph_tests(const Image<I>& iz,
const Neighborhood<N>& nbh,
- mln_value(I))
+ const mln_value(I)&)
{
mln_precondition(exact(iz).is_valid());
mln_precondition(exact(nbh).is_valid());
@@ -94,11 +96,12 @@ namespace mln
namespace generic
{
+ /// Generic implementation of make::influence_zone_adjacency_graph.
template <typename I, typename N>
util::graph
influence_zone_adjacency_graph(const Image<I>& iz_,
const Neighborhood<N>& nbh_,
- mln_value(I) nlabels)
+ const mln_value(I)& nlabels)
{
trace::entering("make::impl::generic::influence_zone_adjacency_graph");
@@ -151,7 +154,7 @@ namespace mln
util::graph
influence_zone_adjacency_graph_dispatch(const Image<I>& iz,
const Neighborhood<N>& nbh,
- mln_value(I) nlabels)
+ const mln_value(I)& nlabels)
{
return make::impl::generic::influence_zone_adjacency_graph(iz, nbh, nlabels);
}
@@ -167,7 +170,7 @@ namespace mln
util::graph
influence_zone_adjacency_graph(const Image<I>& iz,
const Neighborhood<N>& nbh,
- mln_value(I) nlabels)
+ const mln_value(I)& nlabels)
{
trace::entering("make::influence_zone_adjacency_graph");
diff --git a/milena/mln/morpho/opening/area_on_vertices.hh
b/milena/mln/morpho/opening/area_on_vertices.hh
index cb69d7f..f0ccd34 100644
--- a/milena/mln/morpho/opening/area_on_vertices.hh
+++ b/milena/mln/morpho/opening/area_on_vertices.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2007, 2008 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2007, 2008, 2009 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of the Olena Library. This library is free
// software; you can redistribute it and/or modify it under the terms
@@ -34,8 +34,7 @@
/// Morphological area opening on a line graph image computing
/// the area in terms of adjacent vertices.
-# include <mln/pw/image.hh>
-# include <mln/core/site_set/p_edges.hh>
+# include <mln/core/image/edge_image.hh>
# include <mln/morpho/opening/algebraic.hh>
# include <mln/morpho/attribute/count_adjacent_vertices.hh>
@@ -49,32 +48,38 @@ namespace mln
namespace opening
{
- /// Morphological area opening on a mln::line_graph_image computing
- /// the area in terms of adjacent vertices.
- template <typename P2V, typename G, typename V2P, typename N>
- pw::image<P2V, p_edges<G, V2P> >
- area_on_vertices(const pw::image<P2V, p_edges<G, V2P> >& input,
+ /// Morphological area opening on a mln::line_graph_image computing
+ /// the area in terms of adjacent vertices.
+ ///
+ /// \param[in] input An edge image.
+ /// \param[in] nbh A graph neighborhood.
+ /// \param[in] lambda Closing parameter.
+ ///
+ /// \return An edge image.
+ //
+ template <typename P, typename V, typename G, typename N>
+ edge_image<P,V,G>
+ area_on_vertices(const edge_image<P,V,G>& input,
const Neighborhood<N>& nbh,
unsigned lambda);
# ifndef MLN_INCLUDE_ONLY
- template <typename P2V, typename G, typename V2P, typename N>
+ template <typename P, typename V, typename G, typename N>
inline
- pw::image<P2V, p_edges<G, V2P> >
- area_on_vertices(const pw::image<P2V, p_edges<G, V2P> >& input,
+ edge_image<P,V,G>
+ area_on_vertices(const edge_image<P,V,G>& input,
const Neighborhood<N>& nbh,
unsigned lambda)
{
trace::entering("morpho::opening::area_on_vertices");
mln_precondition(exact(input).is_valid());
- typedef p_edges<G, V2P> pe_t;
- typedef attribute::count_adjacent_vertices< pw::image<P2V, pe_t> >
attribute_t;
+ typedef attribute::count_adjacent_vertices< edge_image<P,V,G> >
attribute_t;
- pw::image<P2V, p_edges<G, V2P> > output;
- output = opening::algebraic(input, nbh, attribute_t(), lambda);
+ edge_image<P,V,G>
+ output = opening::algebraic(input, nbh, attribute_t(), lambda);
trace::exiting("morpho::opening::area_on_vertices");
return output;
diff --git a/milena/mln/registration/icp.hh b/milena/mln/registration/icp.hh
index a2bee09..25edf96 100644
--- a/milena/mln/registration/icp.hh
+++ b/milena/mln/registration/icp.hh
@@ -62,6 +62,7 @@
# include <mln/io/ppm/save.hh>
# include <mln/io/pbm/save.hh>
+# include <mln/labeling/colorize.hh>
# include <mln/debug/histo.hh>
# include <mln/accu/histo.hh>
@@ -200,7 +201,7 @@ namespace mln
mln_piter(p_array<P>) p(X);
for_all(p)
{
- debug(p) = debug::internal::random_color(value::rgb8());
+ debug(p) = labeling::internal::random_color(value::rgb8());
debug2(p) = true;
}
io::pbm::save(slice(debug2,0), "debug2-a.ppm");
diff --git a/milena/mln/util/adjacency_matrix.hh b/milena/mln/util/adjacency_matrix.hh
index dfda26f..9a60c94 100644
--- a/milena/mln/util/adjacency_matrix.hh
+++ b/milena/mln/util/adjacency_matrix.hh
@@ -250,9 +250,9 @@ namespace mln
::adjacency_matrix_impl_selector(const V& nelements)
{
(void) nelements;
-# ifndef DNDEBUG
+# ifndef NDEBUG
nelements_ = nelements;
-# endif // ! DNDEBUG
+# endif // ! NDEBUG
}
template <typename V>
diff --git a/milena/mln/util/all.hh b/milena/mln/util/all.hh
index 180b8a1..c6d9864 100644
--- a/milena/mln/util/all.hh
+++ b/milena/mln/util/all.hh
@@ -72,9 +72,7 @@ namespace mln
# include <mln/util/tracked_ptr.hh>
# include <mln/util/tree.hh>
# include <mln/util/tree_fast.hh>
-# include <mln/util/tree_fast_to_image.hh>
# include <mln/util/tree_to_fast.hh>
-//# include <mln/util/tree_to_image.hh>
# include <mln/util/vertex.hh>
# include <mln/util/yes.hh>
diff --git a/milena/mln/util/edge.hh b/milena/mln/util/edge.hh
index 0c759db..1de3648 100644
--- a/milena/mln/util/edge.hh
+++ b/milena/mln/util/edge.hh
@@ -359,15 +359,17 @@ namespace mln
bool
operator==(const edge<G>& lhs, const edge<G>& rhs)
{
- return lhs.pair_vertex_ == rhs.pair_vertex_;
+ return lhs.id() == rhs.id()
+ && (lhs.graph().is_subgraph_of(rhs.graph())
+ || rhs.graph().is_subgraph_of(lhs.graph()));
}
template <typename G>
inline
bool
- operator< (const edge<G>& lhs, const edge<G>& rhs)
+ operator<(const edge<G>& lhs, const edge<G>& rhs)
{
- return lhs.pair_vertex_ < rhs.pair_vertex_;
+ return lhs.id() < rhs.id();
}
} // end of namespace mln::util
diff --git a/milena/mln/util/essential.hh b/milena/mln/util/essential.hh
index 3c9b74f..d5eab8a 100644
--- a/milena/mln/util/essential.hh
+++ b/milena/mln/util/essential.hh
@@ -1,4 +1,5 @@
// Copyright (C) 2008, 2009 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of the Olena Library. This library is free
// software; you can redistribute it and/or modify it under the terms
@@ -40,6 +41,5 @@
# include <mln/util/ord_pair.hh>
# include <mln/util/set.hh>
# include <mln/util/site_pair.hh>
-# include <mln/util/tree.hh>
#endif // ! MLN_UTIL_ESSENTIAL_HH
diff --git a/milena/mln/util/graph.hh b/milena/mln/util/graph.hh
index 83c0e8c..3ebd62d 100644
--- a/milena/mln/util/graph.hh
+++ b/milena/mln/util/graph.hh
@@ -385,7 +385,10 @@ namespace mln
edge_id_t
graph::add_edge(const vertex_id_t& id_v1, const vertex_id_t& id_v2)
{
- //FIXME: to be removed! We should not check that, except in without NDEBUG.
+ mln_precondition(id_v1 != id_v2);
+ mln_precondition(has_v(id_v1));
+ mln_precondition(has_v(id_v2));
+
// Does this edge already exist in the graph?
edge_data_t edge(id_v1, id_v2);
# ifndef NDEBUG
diff --git a/milena/mln/util/object_id.hh b/milena/mln/util/object_id.hh
index b3ea879..b50f2a5 100644
--- a/milena/mln/util/object_id.hh
+++ b/milena/mln/util/object_id.hh
@@ -185,6 +185,13 @@ namespace mln
+ template <typename Tag, typename V, typename V2>
+ inline
+ bool
+ operator==(const object_id<Tag,V>& lhs, const Value<V2>& rhs)
+ {
+ return lhs.value() == exact(rhs).to_equiv();
+ }
template <typename Tag, typename V>
inline
diff --git a/milena/mln/util/vertex.hh b/milena/mln/util/vertex.hh
index 4f0c5ad..6d5af65 100644
--- a/milena/mln/util/vertex.hh
+++ b/milena/mln/util/vertex.hh
@@ -378,7 +378,9 @@ namespace mln
bool
operator==(const vertex<G>& v1, const vertex<G>& v2)
{
- return v1.id() == v2.id();
+ return v1.id() == v2.id()
+ && (v1.graph().is_subgraph_of(v2.graph())
+ || v2.graph().is_subgraph_of(v1.graph()));
}
template<typename G>
diff --git a/milena/mln/value/rgb.hh b/milena/mln/value/rgb.hh
index ebeeb5e..54e6b76 100644
--- a/milena/mln/value/rgb.hh
+++ b/milena/mln/value/rgb.hh
@@ -42,6 +42,7 @@
# include <mln/value/ops.hh>
+# include <mln/fun/v2v/hsl_to_rgb.hh>
# include <mln/value/concept/vectorial.hh>
# include <mln/value/int_u.hh>
# include <mln/algebra/vec.hh>
diff --git a/milena/mln/util/essential.hh b/milena/mln/world/binary_2d/all.hh
similarity index 70%
copy from milena/mln/util/essential.hh
copy to milena/mln/world/binary_2d/all.hh
index 3c9b74f..cf94381 100644
--- a/milena/mln/util/essential.hh
+++ b/milena/mln/world/binary_2d/all.hh
@@ -1,4 +1,4 @@
-// Copyright (C) 2008, 2009 EPITA Research and Development Laboratory
+// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE)
//
// This file is part of the Olena Library. This library is free
// software; you can redistribute it and/or modify it under the terms
@@ -25,21 +25,17 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-#ifndef MLN_UTIL_ESSENTIAL_HH
-# define MLN_UTIL_ESSENTIAL_HH
+#ifndef MLN_WORLD_BINARY_2D_ALL_HH
+# define MLN_WORLD_BINARY_2D_ALL_HH
-/// \file mln/util/essential.hh
+/// \file mln/world/all.hh
///
-/// File that includes essential util-related routines.
+/// File that includes all the world routines.
-# include <mln/util/array.hh>
-# include <mln/util/couple.hh>
-# include <mln/util/lazy_set.hh>
-# include <mln/util/lemmings.hh>
-# include <mln/util/ord.hh>
-# include <mln/util/ord_pair.hh>
-# include <mln/util/set.hh>
-# include <mln/util/site_pair.hh>
-# include <mln/util/tree.hh>
-#endif // ! MLN_UTIL_ESSENTIAL_HH
+// Sub-directories.
+# include <mln/world/binary_2d/projected_histo.hh>
+# include <mln/world/binary_2d/subsample.hh>
+
+
+#endif // ! MLN_WORLD_BINARY_2D_ALL_HH
diff --git a/milena/tests/morpho/closing/Makefile.am
b/milena/tests/morpho/closing/Makefile.am
index 6d5ee0a..696cd14 100644
--- a/milena/tests/morpho/closing/Makefile.am
+++ b/milena/tests/morpho/closing/Makefile.am
@@ -6,6 +6,7 @@ SUBDIRS = \
approx
check_PROGRAMS = \
+ area_on_vertices \
leveling \
algebraic \
height \
@@ -14,6 +15,7 @@ check_PROGRAMS = \
structural \
sum
+area_on_vertices_SOURCES = area_on_vertices.cc
leveling_SOURCES = leveling.cc
algebraic_SOURCES = algebraic.cc
height_SOURCES = height.cc
diff --git a/milena/mln/fun/math/sup.hh b/milena/tests/morpho/closing/area_on_vertices.cc
similarity index 58%
copy from milena/mln/fun/math/sup.hh
copy to milena/tests/morpho/closing/area_on_vertices.cc
index 20e19bf..4d8db2d 100644
--- a/milena/mln/fun/math/sup.hh
+++ b/milena/tests/morpho/closing/area_on_vertices.cc
@@ -7,7 +7,7 @@
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR F PARTICULAR PURPOSE. See the GNU
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
@@ -25,46 +25,43 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-#ifndef MLN_FUN_MATH_SUP_HH
-# define MLN_FUN_MATH_SUP_HH
+/// \file tests/morpho/closing/area_on_vertices.cc
+///
+/// Test on mln::morpho::closing::area_on_vertices.
-# include <mln/fun/binary.hh>
-# include <mln/math/max.hh>
+#include <mln/core/image/edge_image.hh>
+#include <mln/morpho/closing/area_on_vertices.hh>
+#include <mln/util/graph.hh>
+#include <mln/fun/i2v/array.hh>
-namespace mln
-{
-
- // Cosinus, bijective
- namespace fun
- {
- struct sup : binary<sup> {};
- }
+#include "tests/data.hh"
- namespace trait
- {
- namespace next
- {
+const unsigned result[] = { 101, 101, 102 };
- template <typename T>
- struct set_binary_<mln::fun::sup, mln::Object, T1, mln::Object, T2>
- {
- typedef set_binary_ ret;
- typedef mln_trait_promote(T1, T2) result;
- typedef T1 argument1;
- typedef T2 argument2;
-
- static result read(const argument1& a, const argument1& b)
- {
- return math::max(a, b);
- }
- };
+int main()
+{
+ using namespace mln;
- } // end of namespace mln::trait::next
+ util::graph gr;
+ gr.add_vertices(5);
+ gr.add_edge(1, 3);
+ gr.add_edge(1, 2);
+ gr.add_edge(2 ,4);
- } // end of namespace mln::trait
+ fun::i2v::array<unsigned> f(5);
+ for (unsigned i = 0; i < 5; ++i)
+ f(i) = 100 + i;
+ typedef edge_image<void,unsigned> e_ima_t;
+ e_ima_t e_ima(gr, f);
+ typedef e_ima_t::nbh_t nbh_t;
+ nbh_t nbh;
-} // end of namespace mln
+ e_ima_t clo = morpho::closing::area_on_vertices(e_ima, nbh, 3);
-#endif /* ! MLN_FUN_MATH_SUP_HH */
+ unsigned i = 0;
+ mln_piter_(e_ima_t) p(clo.domain());
+ for_all(p)
+ mln_assertion(result[i++] == clo(p));
+}
diff --git a/milena/tests/morpho/opening/Makefile.am
b/milena/tests/morpho/opening/Makefile.am
index f0abae0..5f7e44a 100644
--- a/milena/tests/morpho/opening/Makefile.am
+++ b/milena/tests/morpho/opening/Makefile.am
@@ -6,6 +6,7 @@ SUBDIRS = \
approx
check_PROGRAMS = \
+ area_on_vertices \
leveling \
algebraic \
height \
@@ -14,6 +15,7 @@ check_PROGRAMS = \
structural \
sum
+area_on_vertices_SOURCES = area_on_vertices.cc
leveling_SOURCES = leveling.cc
algebraic_SOURCES = algebraic.cc
height_SOURCES = height.cc
diff --git a/milena/mln/fun/math/sup.hh b/milena/tests/morpho/opening/area_on_vertices.cc
similarity index 58%
copy from milena/mln/fun/math/sup.hh
copy to milena/tests/morpho/opening/area_on_vertices.cc
index 20e19bf..f259770 100644
--- a/milena/mln/fun/math/sup.hh
+++ b/milena/tests/morpho/opening/area_on_vertices.cc
@@ -7,7 +7,7 @@
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR F PARTICULAR PURPOSE. See the GNU
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
@@ -25,46 +25,43 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-#ifndef MLN_FUN_MATH_SUP_HH
-# define MLN_FUN_MATH_SUP_HH
+/// \file tests/morpho/opening/area_on_vertices.cc
+///
+/// Test on mln::morpho::opening::area_on_vertices.
-# include <mln/fun/binary.hh>
-# include <mln/math/max.hh>
+#include <mln/core/image/edge_image.hh>
+#include <mln/morpho/opening/area_on_vertices.hh>
+#include <mln/util/graph.hh>
+#include <mln/fun/i2v/array.hh>
-namespace mln
-{
-
- // Cosinus, bijective
- namespace fun
- {
- struct sup : binary<sup> {};
- }
+#include "tests/data.hh"
- namespace trait
- {
- namespace next
- {
+const unsigned result[] = { 100, 101, 101 };
- template <typename T>
- struct set_binary_<mln::fun::sup, mln::Object, T1, mln::Object, T2>
- {
- typedef set_binary_ ret;
- typedef mln_trait_promote(T1, T2) result;
- typedef T1 argument1;
- typedef T2 argument2;
-
- static result read(const argument1& a, const argument1& b)
- {
- return math::max(a, b);
- }
- };
+int main()
+{
+ using namespace mln;
- } // end of namespace mln::trait::next
+ util::graph gr;
+ gr.add_vertices(5);
+ gr.add_edge(1, 3);
+ gr.add_edge(1, 2);
+ gr.add_edge(2 ,4);
- } // end of namespace mln::trait
+ fun::i2v::array<unsigned> f(5);
+ for (unsigned i = 0; i < 5; ++i)
+ f(i) = 100 + i;
+ typedef edge_image<void,unsigned> e_ima_t;
+ e_ima_t e_ima(gr, f);
+ typedef e_ima_t::nbh_t nbh_t;
+ nbh_t nbh;
-} // end of namespace mln
+ e_ima_t clo = morpho::opening::area_on_vertices(e_ima, nbh, 3);
-#endif /* ! MLN_FUN_MATH_SUP_HH */
+ unsigned i = 0;
+ mln_piter_(e_ima_t) p(clo.domain());
+ for_all(p)
+ mln_assertion(result[i++] == clo(p));
+}
diff --git a/milena/tests/unit_test/unit-tests.mk b/milena/tests/unit_test/unit-tests.mk
index 6869395..37f1d72 100644
--- a/milena/tests/unit_test/unit-tests.mk
+++ b/milena/tests/unit_test/unit-tests.mk
@@ -55,16 +55,25 @@ mln_literal_one \
mln_literal_min \
mln_literal_white \
mln_literal_essential \
+mln_world_all \
mln_world_binary_2d_subsample \
+mln_world_binary_2d_all \
mln_world_binary_2d_projected_histo \
+mln_world_inter_pixel_is_pixel \
+mln_world_inter_pixel_all \
mln_world_inter_pixel_neighb2d \
-mln_world_inter_pixel_full \
+mln_world_inter_pixel_is_separator \
+mln_world_inter_pixel_immerse \
+mln_world_inter_pixel_separator_to_pixels \
mln_world_inter_pixel_display_edge \
+mln_world_inter_pixel_compute \
mln_world_inter_pixel_dim2_is_pixel \
mln_world_inter_pixel_dim2_all \
mln_world_inter_pixel_dim2_is_edge \
+mln_world_inter_pixel_dim2_make_edge_image \
mln_world_inter_pixel_dim2_is_dot \
mln_world_inter_pixel_dim2_is_row_odd \
+mln_world_inter_pixel_full2image \
mln_registration_get_rtransf \
mln_registration_internal_rms \
mln_registration_get_rot \
@@ -78,7 +87,6 @@ mln_util_max \
mln_util_lazy_set \
mln_util_soft_heap \
mln_util_set \
-mln_util_tree_to_image \
mln_util_lemmings \
mln_util_greater_point \
mln_util_internal_graph_iter_base \
@@ -104,24 +112,21 @@ mln_util_timer \
mln_util_yes \
mln_util_line_graph \
mln_util_ord \
-mln_util_tree_fast_to_image \
-mln_util_tree \
+mln_util_adjacency_matrix \
mln_util_couple \
mln_util_index \
mln_util_multi_site \
-mln_util_branch_iter \
-mln_util_branch_iter_ind \
-mln_util_tree_to_fast \
mln_util_array \
mln_util_vertex \
mln_util_pix \
-mln_util_tree_fast \
+mln_util_object_id \
mln_util_site_pair \
mln_util_nil \
mln_util_graph_ids \
mln_util_eat \
mln_util_essential \
mln_data_memset_ \
+mln_data_paste_without_localization \
mln_data_memcpy_ \
mln_data_all \
mln_data_paste \
@@ -210,6 +215,8 @@ mln_fun_p2p_all \
mln_fun_p2p_translation \
mln_fun_p2p_mirror \
mln_fun_accu_result \
+mln_fun_stat_mahalanobis \
+mln_fun_stat_all \
mln_fun_binary_param \
mln_fun_x2p_closest_point \
mln_fun_x2p_all \
@@ -287,6 +294,8 @@ mln_fun_vv2b_lt \
mln_fun_vv2b_eq \
mln_fun_cast \
mln_fun_composition \
+mln_fun_access_all \
+mln_fun_access_mean \
mln_fun_i2v_all \
mln_fun_i2v_array \
mln_fun_i2v_all_to \
@@ -297,10 +306,13 @@ mln_fun_x2x_translation \
mln_fun_x2x_rotation \
mln_fun_x2x_essential \
mln_fun_component_red \
+mln_fun_component_comp_count \
+mln_fun_component_scomp \
mln_fun_component_green \
mln_fun_component_comp \
mln_fun_component_blue \
mln_fun_component_rgb \
+mln_fun_component_ithcomp \
mln_fun_compose \
mln_fun_meta_red \
mln_fun_meta_hue \
@@ -424,6 +436,7 @@ mln_accu_site_set_all \
mln_accu_site_set_essential \
mln_accu_stat_variance \
mln_accu_stat_deviation \
+mln_accu_stat_all \
mln_accu_stat_var \
mln_accu_max \
mln_accu_lor \
@@ -471,6 +484,7 @@ mln_accu_image_init \
mln_accu_image_to_result \
mln_accu_image_all \
mln_accu_image_set_value \
+mln_accu_image_untake \
mln_accu_image_take \
mln_accu_image_take_as_init \
mln_accu_image_take_n_times \
@@ -559,7 +573,6 @@ mln_trait_ch_function_value \
mln_trait_ch_value \
mln_trait_solve \
mln_trait_solve_unary \
-mln_trait_fun \
mln_trait_op_postdec \
mln_trait_op_mod \
mln_trait_op_lor \
@@ -587,6 +600,7 @@ mln_trait_op_uplus \
mln_trait_op_essential \
mln_trait_op_eq \
mln_trait_concrete \
+mln_trait_functions \
mln_trait_windows \
mln_trait_site_sets \
mln_trait_image_from_grid \
@@ -994,7 +1008,6 @@ mln_core_concept_window \
mln_core_concept_value \
mln_core_concept_accumulator \
mln_core_concept_site_set \
-mln_core_concept_object_id \
mln_core_concept_object \
mln_core_concept_meta_fun \
mln_core_concept_delta_point_site \
@@ -1076,6 +1089,7 @@ mln_labeling_all \
mln_labeling_level \
mln_labeling_flat_zones \
mln_labeling_foreground \
+mln_labeling_colorize \
mln_labeling_regional_maxima \
mln_labeling_wrap \
mln_labeling_compute \
@@ -1168,7 +1182,6 @@ mln_norm_essential \
mln_debug_iota \
mln_debug_all \
mln_debug_println_with_border \
-mln_debug_colorize \
mln_debug_slices_2d \
mln_debug_draw_graph \
mln_debug_filename \
@@ -1192,6 +1205,7 @@ mln_graph_attribute_card \
mln_graph_compute \
mln_graph_essential \
mln_set_uni \
+mln_set_compute_with_weights \
mln_set_unique \
mln_set_inter \
mln_set_all \
@@ -1273,16 +1287,25 @@ mln_literal_one_SOURCES = mln_literal_one.cc
mln_literal_min_SOURCES = mln_literal_min.cc
mln_literal_white_SOURCES = mln_literal_white.cc
mln_literal_essential_SOURCES = mln_literal_essential.cc
+mln_world_all_SOURCES = mln_world_all.cc
mln_world_binary_2d_subsample_SOURCES = mln_world_binary_2d_subsample.cc
+mln_world_binary_2d_all_SOURCES = mln_world_binary_2d_all.cc
mln_world_binary_2d_projected_histo_SOURCES = mln_world_binary_2d_projected_histo.cc
+mln_world_inter_pixel_is_pixel_SOURCES = mln_world_inter_pixel_is_pixel.cc
+mln_world_inter_pixel_all_SOURCES = mln_world_inter_pixel_all.cc
mln_world_inter_pixel_neighb2d_SOURCES = mln_world_inter_pixel_neighb2d.cc
-mln_world_inter_pixel_full_SOURCES = mln_world_inter_pixel_full.cc
+mln_world_inter_pixel_is_separator_SOURCES = mln_world_inter_pixel_is_separator.cc
+mln_world_inter_pixel_immerse_SOURCES = mln_world_inter_pixel_immerse.cc
+mln_world_inter_pixel_separator_to_pixels_SOURCES =
mln_world_inter_pixel_separator_to_pixels.cc
mln_world_inter_pixel_display_edge_SOURCES = mln_world_inter_pixel_display_edge.cc
+mln_world_inter_pixel_compute_SOURCES = mln_world_inter_pixel_compute.cc
mln_world_inter_pixel_dim2_is_pixel_SOURCES = mln_world_inter_pixel_dim2_is_pixel.cc
mln_world_inter_pixel_dim2_all_SOURCES = mln_world_inter_pixel_dim2_all.cc
mln_world_inter_pixel_dim2_is_edge_SOURCES = mln_world_inter_pixel_dim2_is_edge.cc
+mln_world_inter_pixel_dim2_make_edge_image_SOURCES =
mln_world_inter_pixel_dim2_make_edge_image.cc
mln_world_inter_pixel_dim2_is_dot_SOURCES = mln_world_inter_pixel_dim2_is_dot.cc
mln_world_inter_pixel_dim2_is_row_odd_SOURCES = mln_world_inter_pixel_dim2_is_row_odd.cc
+mln_world_inter_pixel_full2image_SOURCES = mln_world_inter_pixel_full2image.cc
mln_registration_get_rtransf_SOURCES = mln_registration_get_rtransf.cc
mln_registration_internal_rms_SOURCES = mln_registration_internal_rms.cc
mln_registration_get_rot_SOURCES = mln_registration_get_rot.cc
@@ -1296,7 +1319,6 @@ mln_util_max_SOURCES = mln_util_max.cc
mln_util_lazy_set_SOURCES = mln_util_lazy_set.cc
mln_util_soft_heap_SOURCES = mln_util_soft_heap.cc
mln_util_set_SOURCES = mln_util_set.cc
-mln_util_tree_to_image_SOURCES = mln_util_tree_to_image.cc
mln_util_lemmings_SOURCES = mln_util_lemmings.cc
mln_util_greater_point_SOURCES = mln_util_greater_point.cc
mln_util_internal_graph_iter_base_SOURCES = mln_util_internal_graph_iter_base.cc
@@ -1322,24 +1344,21 @@ mln_util_timer_SOURCES = mln_util_timer.cc
mln_util_yes_SOURCES = mln_util_yes.cc
mln_util_line_graph_SOURCES = mln_util_line_graph.cc
mln_util_ord_SOURCES = mln_util_ord.cc
-mln_util_tree_fast_to_image_SOURCES = mln_util_tree_fast_to_image.cc
-mln_util_tree_SOURCES = mln_util_tree.cc
+mln_util_adjacency_matrix_SOURCES = mln_util_adjacency_matrix.cc
mln_util_couple_SOURCES = mln_util_couple.cc
mln_util_index_SOURCES = mln_util_index.cc
mln_util_multi_site_SOURCES = mln_util_multi_site.cc
-mln_util_branch_iter_SOURCES = mln_util_branch_iter.cc
-mln_util_branch_iter_ind_SOURCES = mln_util_branch_iter_ind.cc
-mln_util_tree_to_fast_SOURCES = mln_util_tree_to_fast.cc
mln_util_array_SOURCES = mln_util_array.cc
mln_util_vertex_SOURCES = mln_util_vertex.cc
mln_util_pix_SOURCES = mln_util_pix.cc
-mln_util_tree_fast_SOURCES = mln_util_tree_fast.cc
+mln_util_object_id_SOURCES = mln_util_object_id.cc
mln_util_site_pair_SOURCES = mln_util_site_pair.cc
mln_util_nil_SOURCES = mln_util_nil.cc
mln_util_graph_ids_SOURCES = mln_util_graph_ids.cc
mln_util_eat_SOURCES = mln_util_eat.cc
mln_util_essential_SOURCES = mln_util_essential.cc
mln_data_memset__SOURCES = mln_data_memset_.cc
+mln_data_paste_without_localization_SOURCES = mln_data_paste_without_localization.cc
mln_data_memcpy__SOURCES = mln_data_memcpy_.cc
mln_data_all_SOURCES = mln_data_all.cc
mln_data_paste_SOURCES = mln_data_paste.cc
@@ -1428,6 +1447,8 @@ mln_fun_p2p_all_SOURCES = mln_fun_p2p_all.cc
mln_fun_p2p_translation_SOURCES = mln_fun_p2p_translation.cc
mln_fun_p2p_mirror_SOURCES = mln_fun_p2p_mirror.cc
mln_fun_accu_result_SOURCES = mln_fun_accu_result.cc
+mln_fun_stat_mahalanobis_SOURCES = mln_fun_stat_mahalanobis.cc
+mln_fun_stat_all_SOURCES = mln_fun_stat_all.cc
mln_fun_binary_param_SOURCES = mln_fun_binary_param.cc
mln_fun_x2p_closest_point_SOURCES = mln_fun_x2p_closest_point.cc
mln_fun_x2p_all_SOURCES = mln_fun_x2p_all.cc
@@ -1505,6 +1526,8 @@ mln_fun_vv2b_lt_SOURCES = mln_fun_vv2b_lt.cc
mln_fun_vv2b_eq_SOURCES = mln_fun_vv2b_eq.cc
mln_fun_cast_SOURCES = mln_fun_cast.cc
mln_fun_composition_SOURCES = mln_fun_composition.cc
+mln_fun_access_all_SOURCES = mln_fun_access_all.cc
+mln_fun_access_mean_SOURCES = mln_fun_access_mean.cc
mln_fun_i2v_all_SOURCES = mln_fun_i2v_all.cc
mln_fun_i2v_array_SOURCES = mln_fun_i2v_array.cc
mln_fun_i2v_all_to_SOURCES = mln_fun_i2v_all_to.cc
@@ -1515,10 +1538,13 @@ mln_fun_x2x_translation_SOURCES = mln_fun_x2x_translation.cc
mln_fun_x2x_rotation_SOURCES = mln_fun_x2x_rotation.cc
mln_fun_x2x_essential_SOURCES = mln_fun_x2x_essential.cc
mln_fun_component_red_SOURCES = mln_fun_component_red.cc
+mln_fun_component_comp_count_SOURCES = mln_fun_component_comp_count.cc
+mln_fun_component_scomp_SOURCES = mln_fun_component_scomp.cc
mln_fun_component_green_SOURCES = mln_fun_component_green.cc
mln_fun_component_comp_SOURCES = mln_fun_component_comp.cc
mln_fun_component_blue_SOURCES = mln_fun_component_blue.cc
mln_fun_component_rgb_SOURCES = mln_fun_component_rgb.cc
+mln_fun_component_ithcomp_SOURCES = mln_fun_component_ithcomp.cc
mln_fun_compose_SOURCES = mln_fun_compose.cc
mln_fun_meta_red_SOURCES = mln_fun_meta_red.cc
mln_fun_meta_hue_SOURCES = mln_fun_meta_hue.cc
@@ -1642,6 +1668,7 @@ mln_accu_site_set_all_SOURCES = mln_accu_site_set_all.cc
mln_accu_site_set_essential_SOURCES = mln_accu_site_set_essential.cc
mln_accu_stat_variance_SOURCES = mln_accu_stat_variance.cc
mln_accu_stat_deviation_SOURCES = mln_accu_stat_deviation.cc
+mln_accu_stat_all_SOURCES = mln_accu_stat_all.cc
mln_accu_stat_var_SOURCES = mln_accu_stat_var.cc
mln_accu_max_SOURCES = mln_accu_max.cc
mln_accu_lor_SOURCES = mln_accu_lor.cc
@@ -1689,6 +1716,7 @@ mln_accu_image_init_SOURCES = mln_accu_image_init.cc
mln_accu_image_to_result_SOURCES = mln_accu_image_to_result.cc
mln_accu_image_all_SOURCES = mln_accu_image_all.cc
mln_accu_image_set_value_SOURCES = mln_accu_image_set_value.cc
+mln_accu_image_untake_SOURCES = mln_accu_image_untake.cc
mln_accu_image_take_SOURCES = mln_accu_image_take.cc
mln_accu_image_take_as_init_SOURCES = mln_accu_image_take_as_init.cc
mln_accu_image_take_n_times_SOURCES = mln_accu_image_take_n_times.cc
@@ -1777,7 +1805,6 @@ mln_trait_ch_function_value_SOURCES =
mln_trait_ch_function_value.cc
mln_trait_ch_value_SOURCES = mln_trait_ch_value.cc
mln_trait_solve_SOURCES = mln_trait_solve.cc
mln_trait_solve_unary_SOURCES = mln_trait_solve_unary.cc
-mln_trait_fun_SOURCES = mln_trait_fun.cc
mln_trait_op_postdec_SOURCES = mln_trait_op_postdec.cc
mln_trait_op_mod_SOURCES = mln_trait_op_mod.cc
mln_trait_op_lor_SOURCES = mln_trait_op_lor.cc
@@ -1805,6 +1832,7 @@ mln_trait_op_uplus_SOURCES = mln_trait_op_uplus.cc
mln_trait_op_essential_SOURCES = mln_trait_op_essential.cc
mln_trait_op_eq_SOURCES = mln_trait_op_eq.cc
mln_trait_concrete_SOURCES = mln_trait_concrete.cc
+mln_trait_functions_SOURCES = mln_trait_functions.cc
mln_trait_windows_SOURCES = mln_trait_windows.cc
mln_trait_site_sets_SOURCES = mln_trait_site_sets.cc
mln_trait_image_from_grid_SOURCES = mln_trait_image_from_grid.cc
@@ -2212,7 +2240,6 @@ mln_core_concept_window_SOURCES = mln_core_concept_window.cc
mln_core_concept_value_SOURCES = mln_core_concept_value.cc
mln_core_concept_accumulator_SOURCES = mln_core_concept_accumulator.cc
mln_core_concept_site_set_SOURCES = mln_core_concept_site_set.cc
-mln_core_concept_object_id_SOURCES = mln_core_concept_object_id.cc
mln_core_concept_object_SOURCES = mln_core_concept_object.cc
mln_core_concept_meta_fun_SOURCES = mln_core_concept_meta_fun.cc
mln_core_concept_delta_point_site_SOURCES = mln_core_concept_delta_point_site.cc
@@ -2294,6 +2321,7 @@ mln_labeling_all_SOURCES = mln_labeling_all.cc
mln_labeling_level_SOURCES = mln_labeling_level.cc
mln_labeling_flat_zones_SOURCES = mln_labeling_flat_zones.cc
mln_labeling_foreground_SOURCES = mln_labeling_foreground.cc
+mln_labeling_colorize_SOURCES = mln_labeling_colorize.cc
mln_labeling_regional_maxima_SOURCES = mln_labeling_regional_maxima.cc
mln_labeling_wrap_SOURCES = mln_labeling_wrap.cc
mln_labeling_compute_SOURCES = mln_labeling_compute.cc
@@ -2386,7 +2414,6 @@ mln_norm_essential_SOURCES = mln_norm_essential.cc
mln_debug_iota_SOURCES = mln_debug_iota.cc
mln_debug_all_SOURCES = mln_debug_all.cc
mln_debug_println_with_border_SOURCES = mln_debug_println_with_border.cc
-mln_debug_colorize_SOURCES = mln_debug_colorize.cc
mln_debug_slices_2d_SOURCES = mln_debug_slices_2d.cc
mln_debug_draw_graph_SOURCES = mln_debug_draw_graph.cc
mln_debug_filename_SOURCES = mln_debug_filename.cc
@@ -2410,6 +2437,7 @@ mln_graph_attribute_card_SOURCES = mln_graph_attribute_card.cc
mln_graph_compute_SOURCES = mln_graph_compute.cc
mln_graph_essential_SOURCES = mln_graph_essential.cc
mln_set_uni_SOURCES = mln_set_uni.cc
+mln_set_compute_with_weights_SOURCES = mln_set_compute_with_weights.cc
mln_set_unique_SOURCES = mln_set_unique.cc
mln_set_inter_SOURCES = mln_set_inter.cc
mln_set_all_SOURCES = mln_set_all.cc
diff --git a/milena/tests/util/Makefile.am b/milena/tests/util/Makefile.am
index 07b6018..a808683 100644
--- a/milena/tests/util/Makefile.am
+++ b/milena/tests/util/Makefile.am
@@ -19,9 +19,7 @@ check_PROGRAMS = \
tree \
tree_fast \
tree_fast_to_image \
- tree_to_fast \
- tree_to_image
-
+ tree_to_fast
adjacency_matrix_SOURCES = adjacency_matrix.cc
branch_iter_SOURCES = branch_iter.cc
@@ -37,9 +35,7 @@ set_SOURCES = set.cc
soft_heap_SOURCES = soft_heap.cc
tree_SOURCES = tree.cc
tree_fast_SOURCES = tree_fast.cc
-tree_fast_to_image_SOURCES = tree_to_image.cc
tree_to_fast_SOURCES = tree_to_fast.cc
-tree_to_image_SOURCES = tree_to_image.cc
TESTS = $(check_PROGRAMS)
--
1.6.1.2