* doc/Doxyfile.in: Enable JAVADOC_AUTOBRIEF.
* doc/groups/images.hh: create a new modules for morphers.
* tests/unit_test/unit-tests.mk,
* headers.mk: update auto-generated lists.
* mln/convert/from_to.hxx,
* mln/value/label.hh: add from_to overload for conversion from
label<n> to bool.
* mln/core/image/bgraph_image.hh,
* mln/core/image/complex_image.hh,
* mln/core/image/edge_image.hh,
* mln/core/image/flat_image.hh,
* mln/core/image/image1d.hh,
* mln/core/image/image2d.hh,
* mln/core/image/image3d.hh,
* mln/io/pbm/all.hh,
* mln/pw/image.hh: update doc.
* mln/core/macros.hh: fix mln_box macro.
* mln/labeling/colorize.hh: do not call next() member on label type.
* mln/make/relabelfun.hh: image value type does not need to be a
label type anymore.
* mln/subsampling/subsampling.hh: fix invalid use of mln_coord.
* mln/tag/init.hh: cleanup.
* mln/util/array.hh: fix infinite recursion.
* mln/util/eat.hh,
* mln/util/ignore.hh,
* mln/util/nil.hh,
* mln/util/tracked_ptr.hh,
* mln/util/yes.hh: Add these objects in util module.
* apps/statues/trimesh/misc.hh: avoid warnings.
* mln/core/image/all.hh: fix includes.
* mln/core/site_set/p_transformed.hh: rename transform routine to
ptransform (name conflict with a namespace).
* mln/morpho/tree/propagate_representative.hh: add missing includes.
* tests/transformation/rotate.cc: fix reference image.
---
milena/ChangeLog | 55 ++++++++
milena/apps/statues/trimesh/misc.hh | 18 ++--
milena/doc/Doxyfile.in | 2 +-
milena/doc/groups/images.hh | 7 +
milena/headers.mk | 75 +++++++-----
milena/mln/convert/from_to.hxx | 3 +
milena/mln/core/image/all.hh | 1 -
milena/mln/core/image/bgraph_image.hh | 3 +
milena/mln/core/image/complex_image.hh | 2 +-
milena/mln/core/image/edge_image.hh | 1 +
milena/mln/core/image/flat_image.hh | 2 +-
milena/mln/core/image/image1d.hh | 3 +-
milena/mln/core/image/image2d.hh | 3 +-
milena/mln/core/image/image3d.hh | 3 +-
milena/mln/core/macros.hh | 4 +-
milena/mln/core/site_set/p_transformed.hh | 11 +-
milena/mln/io/pbm/all.hh | 10 +-
milena/mln/labeling/colorize.hh | 2 +-
milena/mln/make/relabelfun.hh | 63 +++++-----
milena/mln/morpho/tree/propagate_representative.hh | 60 ++++++----
milena/mln/pw/image.hh | 3 +-
milena/mln/subsampling/subsampling.hh | 5 +-
milena/mln/tag/init.hh | 39 +++---
milena/mln/util/array.hh | 2 +-
milena/mln/util/eat.hh | 17 ++--
milena/mln/util/ignore.hh | 18 ++--
milena/mln/util/nil.hh | 17 ++--
milena/mln/util/tracked_ptr.hh | 30 ++---
milena/mln/util/yes.hh | 22 ++--
milena/mln/value/label.hh | 13 ++
milena/tests/transformation/rotate.cc | 3 +-
milena/tests/unit_test/unit-tests.mk | 132 +++++++++++---------
32 files changed, 378 insertions(+), 251 deletions(-)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index c68baff..25652da 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,5 +1,60 @@
2009-05-28 Guillaume Lazzara <lazzara(a)lrde.epita.fr>
+ Small fixes.
+
+ * doc/Doxyfile.in: Enable JAVADOC_AUTOBRIEF.
+
+ * doc/groups/images.hh: create a new modules for morphers.
+
+ * tests/unit_test/unit-tests.mk,
+ * headers.mk: update auto-generated lists.
+
+ * mln/convert/from_to.hxx,
+ * mln/value/label.hh: add from_to overload for conversion from
+ label<n> to bool.
+
+ * mln/core/image/bgraph_image.hh,
+ * mln/core/image/complex_image.hh,
+ * mln/core/image/edge_image.hh,
+ * mln/core/image/flat_image.hh,
+ * mln/core/image/image1d.hh,
+ * mln/core/image/image2d.hh,
+ * mln/core/image/image3d.hh,
+ * mln/io/pbm/all.hh,
+ * mln/pw/image.hh: update doc.
+
+ * mln/core/macros.hh: fix mln_box macro.
+
+ * mln/labeling/colorize.hh: do not call next() member on label type.
+
+ * mln/make/relabelfun.hh: image value type does not need to be a
+ label type anymore.
+
+ * mln/subsampling/subsampling.hh: fix invalid use of mln_coord.
+
+ * mln/tag/init.hh: cleanup.
+
+ * mln/util/array.hh: fix infinite recursion.
+
+ * mln/util/eat.hh,
+ * mln/util/ignore.hh,
+ * mln/util/nil.hh,
+ * mln/util/tracked_ptr.hh,
+ * mln/util/yes.hh: Add these objects in util module.
+
+ * apps/statues/trimesh/misc.hh: avoid warnings.
+
+ * mln/core/image/all.hh: fix includes.
+
+ * mln/core/site_set/p_transformed.hh: rename transform routine to
+ ptransform (name conflict with a namespace).
+
+ * mln/morpho/tree/propagate_representative.hh: add missing includes.
+
+ * tests/transformation/rotate.cc: fix reference image.
+
+2009-05-28 Guillaume Lazzara <lazzara(a)lrde.epita.fr>
+
Add world::binary_2d::enlarge.
* mln/world/binary_2d/enlarge.hh: new routine.
diff --git a/milena/apps/statues/trimesh/misc.hh b/milena/apps/statues/trimesh/misc.hh
index d72477d..ae7c033 100644
--- a/milena/apps/statues/trimesh/misc.hh
+++ b/milena/apps/statues/trimesh/misc.hh
@@ -73,7 +73,7 @@ namespace mln
/** \brief Perform LDL^T decomposition of a symmetric positive
definite matrix. Like Cholesky, but no square roots.
Overwrites lower triangle of matrix.
-
+
From Trimesh's ldltdc routine. */
template <unsigned N, typename T>
inline
@@ -81,14 +81,14 @@ namespace mln
ldlt_decomp(mat<N, N, T>& A, vec<N, T>& rdiag)
{
vec<N - 1, T> v;
- for (int i = 0; i < N; ++i)
+ for (unsigned i = 0; i < N; ++i)
{
- for (int k = 0; k < i; ++k)
+ for (unsigned k = 0; k < i; ++k)
v[k] = A(i, k) * rdiag[k];
- for (int j = i; j < N; ++j)
+ for (unsigned j = i; j < N; ++j)
{
T sum = A(i, j);
- for (int k = 0; k < i; k++)
+ for (unsigned k = 0; k < i; k++)
sum -= v[k] * A(j, k);
if (i == j)
{
@@ -117,14 +117,14 @@ namespace mln
for (unsigned i = 0; i < N; ++i)
{
T sum = B[i];
- for (int k = 0; k < i; ++k)
+ for (unsigned k = 0; k < i; ++k)
sum -= A(i, k) * x[k];
x[i] = sum * rdiag[i];
}
for (int i = N - 1; i >= 0; --i)
{
T sum = 0;
- for (int k = i + 1; k < N; ++k)
+ for (unsigned k = i + 1; k < N; ++k)
sum += A(k, i) * x[k];
x[i] -= sum * rdiag[i];
}
@@ -623,7 +623,9 @@ namespace mln
// Least squares solution.
vec3f diag;
+#ifndef NDEBUG
bool ldlt_decomp_sucess_p = algebra::ldlt_decomp(w, diag);
+#endif // ! NDEBUG
mln_assertion(ldlt_decomp_sucess_p);
algebra::ldlt_solve(w, diag, m, m);
@@ -639,7 +641,7 @@ namespace mln
curv2(p[j]) += wt * c2;
}
}
-
+
/*-------------------------------------------------------------.
| Compute principal directions and curvatures at each vertex. |
`-------------------------------------------------------------*/
diff --git a/milena/doc/Doxyfile.in b/milena/doc/Doxyfile.in
index cedcbc1..0abb0fc 100644
--- a/milena/doc/Doxyfile.in
+++ b/milena/doc/Doxyfile.in
@@ -18,7 +18,7 @@ STRIP_FROM_PATH = @top_srcdir@/milena \
@top_builddir@/milena
STRIP_FROM_INC_PATH =
SHORT_NAMES = YES
-JAVADOC_AUTOBRIEF = NO
+JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = NO
INHERIT_DOCS = YES
diff --git a/milena/doc/groups/images.hh b/milena/doc/groups/images.hh
index c248cbb..438410b 100644
--- a/milena/doc/groups/images.hh
+++ b/milena/doc/groups/images.hh
@@ -12,6 +12,13 @@
* \ingroup modimage
*/
+/*! \defgroup modimagemorpher Image morphers
+ *
+ * \brief Morpher on both image values and domain.
+ *
+ * \ingroup modimage
+ */
+
/*! \defgroup modimagevaluemorpher Values morphers
*
* \brief Morpher on image values.
diff --git a/milena/headers.mk b/milena/headers.mk
index a040f8d..b9d8ea3 100644
--- a/milena/headers.mk
+++ b/milena/headers.mk
@@ -253,65 +253,69 @@ mln/core/grids.hh \
mln/core/image/all.hh \
mln/core/image/bgraph_image.hh \
mln/core/image/bgraph_psite.hh \
-mln/core/image/cast_image.hh \
mln/core/image/ch_piter.hh \
mln/core/image/complex_image.hh \
mln/core/image/complex_neighborhood_piter.hh \
mln/core/image/complex_neighborhoods.hh \
mln/core/image/complex_window_piter.hh \
mln/core/image/complex_windows.hh \
-mln/core/image/decorated_image.hh \
mln/core/image/dmorph/all.hh \
+mln/core/image/dmorph/extended.hh \
+mln/core/image/dmorph/extension_fun.hh \
+mln/core/image/dmorph/extension_ima.hh \
+mln/core/image/dmorph/extension_val.hh \
+mln/core/image/dmorph/hexa.hh \
+mln/core/image/dmorph/hexa_piter.hh \
+mln/core/image/dmorph/image2d_h.hh \
+mln/core/image/dmorph/image_if.hh \
+mln/core/image/dmorph/p2p_image.hh \
+mln/core/image/dmorph/slice_image.hh \
+mln/core/image/dmorph/sub_image.hh \
+mln/core/image/dmorph/sub_image_if.hh \
mln/core/image/dmorph/transformed_image.hh \
+mln/core/image/dmorph/unproject_image.hh \
mln/core/image/edge_image.hh \
mln/core/image/essential.hh \
-mln/core/image/extended.hh \
-mln/core/image/extension_fun.hh \
-mln/core/image/extension_ima.hh \
-mln/core/image/extension_val.hh \
mln/core/image/flat_image.hh \
-mln/core/image/fun_image.hh \
mln/core/image/graph_elt_neighborhood.hh \
mln/core/image/graph_elt_neighborhood_if.hh \
mln/core/image/graph_elt_window.hh \
mln/core/image/graph_elt_window_if.hh \
mln/core/image/graph_window_if_piter.hh \
mln/core/image/graph_window_piter.hh \
-mln/core/image/hexa.hh \
-mln/core/image/hexa_piter.hh \
mln/core/image/image1d.hh \
mln/core/image/image2d.hh \
-mln/core/image/image2d_h.hh \
mln/core/image/image3d.hh \
-mln/core/image/image_if.hh \
-mln/core/image/interpolated.hh \
-mln/core/image/lazy_image.hh \
+mln/core/image/imorph/all.hh \
+mln/core/image/imorph/decorated_image.hh \
+mln/core/image/imorph/interpolated.hh \
+mln/core/image/imorph/labeled_image.hh \
+mln/core/image/imorph/lazy_image.hh \
+mln/core/image/imorph/plain.hh \
+mln/core/image/imorph/safe.hh \
+mln/core/image/imorph/tr_image.hh \
mln/core/image/mono_obased_rle_encode.hh \
mln/core/image/mono_obased_rle_image.hh \
mln/core/image/mono_rle_encode.hh \
mln/core/image/mono_rle_image.hh \
+mln/core/image/morph/all.hh \
+mln/core/image/morph/t_image.hh \
mln/core/image/obased_rle_encode.hh \
mln/core/image/obased_rle_image.hh \
-mln/core/image/p2p_image.hh \
-mln/core/image/plain.hh \
mln/core/image/rle_encode.hh \
mln/core/image/rle_image.hh \
-mln/core/image/safe.hh \
-mln/core/image/slice_image.hh \
mln/core/image/sparse_encode.hh \
mln/core/image/sparse_image.hh \
-mln/core/image/sub_image.hh \
-mln/core/image/sub_image_if.hh \
-mln/core/image/t_image.hh \
-mln/core/image/thru_morpher.hh \
-mln/core/image/thrubin_morpher.hh \
-mln/core/image/tr_image.hh \
mln/core/image/tr_mesh.hh \
-mln/core/image/unproject_image.hh \
mln/core/image/value_enc_image.hh \
mln/core/image/value_encode.hh \
mln/core/image/vertex_image.hh \
-mln/core/image/violent_cast_image.hh \
+mln/core/image/vmorph/all.hh \
+mln/core/image/vmorph/cast_image.hh \
+mln/core/image/vmorph/fun_image.hh \
+mln/core/image/vmorph/thru_image.hh \
+mln/core/image/vmorph/thrubin_image.hh \
+mln/core/image/vmorph/violent_cast_image.hh \
mln/core/internal/box_impl.hh \
mln/core/internal/check/image_all.hh \
mln/core/internal/check/image_fastest.hh \
@@ -441,6 +445,7 @@ mln/debug/println_with_border.spe.hh \
mln/debug/put_word.hh \
mln/debug/quiet.hh \
mln/debug/slices_2d.hh \
+mln/debug/superpose.hh \
mln/display/all.hh \
mln/display/essential.hh \
mln/draw/all.hh \
@@ -512,7 +517,6 @@ mln/fun/meta/essential.hh \
mln/fun/meta/first.hh \
mln/fun/meta/green.hh \
mln/fun/meta/hue.hh \
-mln/fun/meta/inty.hh \
mln/fun/meta/lum.hh \
mln/fun/meta/red.hh \
mln/fun/meta/sat.hh \
@@ -527,6 +531,7 @@ mln/fun/p2b/essential.hh \
mln/fun/p2b/has.hh \
mln/fun/p2b/tautology.hh \
mln/fun/p2p/all.hh \
+mln/fun/p2p/fold.hh \
mln/fun/p2p/mirror.hh \
mln/fun/p2p/translation.hh \
mln/fun/p2v/all.hh \
@@ -554,18 +559,17 @@ mln/fun/v2v/abs.hh \
mln/fun/v2v/all.hh \
mln/fun/v2v/cast.hh \
mln/fun/v2v/ch_function_value.hh \
+mln/fun/v2v/component.hh \
mln/fun/v2v/convert.hh \
mln/fun/v2v/dec.hh \
mln/fun/v2v/enc.hh \
mln/fun/v2v/essential.hh \
-mln/fun/v2v/hsi_to_rgb.hh \
mln/fun/v2v/hsl_to_rgb.hh \
mln/fun/v2v/id.hh \
mln/fun/v2v/inc.hh \
mln/fun/v2v/linear.hh \
mln/fun/v2v/norm.hh \
mln/fun/v2v/projection.hh \
-mln/fun/v2v/rgb_to_hsi.hh \
mln/fun/v2v/rgb_to_hsl.hh \
mln/fun/v2v/saturate.hh \
mln/fun/v2v/wrap.hh \
@@ -644,6 +648,7 @@ mln/histo/array.hh \
mln/histo/compute.hh \
mln/histo/compute.spe.hh \
mln/histo/essential.hh \
+mln/histo/point_from_value.hh \
mln/io/abort.hh \
mln/io/all.hh \
mln/io/cloud/all.hh \
@@ -686,6 +691,7 @@ mln/io/ppm/load.hh \
mln/io/ppm/save.hh \
mln/io/tiff/all.hh \
mln/io/tiff/load.hh \
+mln/io/tiff/save.hh \
mln/io/txt/all.hh \
mln/io/txt/save.hh \
mln/labeling/all.hh \
@@ -955,7 +961,16 @@ mln/morpho/tree/all.hh \
mln/morpho/tree/compute_attribute_image.hh \
mln/morpho/tree/compute_parent.hh \
mln/morpho/tree/data.hh \
+mln/morpho/tree/filter/all.hh \
+mln/morpho/tree/filter/direct.hh \
+mln/morpho/tree/filter/filter.hh \
+mln/morpho/tree/filter/max.hh \
+mln/morpho/tree/filter/min.hh \
+mln/morpho/tree/filter/subtractive.hh \
mln/morpho/tree/max.hh \
+mln/morpho/tree/propagate_if.hh \
+mln/morpho/tree/propagate_node.hh \
+mln/morpho/tree/propagate_representative.hh \
mln/morpho/tree/utils.hh \
mln/morpho/watershed/all.hh \
mln/morpho/watershed/flooding.hh \
@@ -1215,7 +1230,6 @@ mln/value/gl8.hh \
mln/value/glf.hh \
mln/value/graylevel.hh \
mln/value/graylevel_f.hh \
-mln/value/hsi.hh \
mln/value/hsl.hh \
mln/value/int_s.hh \
mln/value/int_s16.hh \
@@ -1256,7 +1270,6 @@ mln/value/sign.hh \
mln/value/stack.hh \
mln/value/super_value.hh \
mln/value/viter.hh \
-mln/version.hh \
mln/win/all.hh \
mln/win/backdiag2d.hh \
mln/win/ball.hh \
@@ -1280,6 +1293,8 @@ mln/win/sym.hh \
mln/win/vline2d.hh \
mln/world/all.hh \
mln/world/binary_2d/all.hh \
+mln/world/binary_2d/enlarge.hh \
+mln/world/binary_2d/enlarge_hq2x.hh \
mln/world/binary_2d/projected_histo.hh \
mln/world/binary_2d/subsample.hh \
mln/world/inter_pixel/all.hh \
diff --git a/milena/mln/convert/from_to.hxx b/milena/mln/convert/from_to.hxx
index ca6eb81..9ad0de8 100644
--- a/milena/mln/convert/from_to.hxx
+++ b/milena/mln/convert/from_to.hxx
@@ -173,6 +173,9 @@ namespace mln
template <unsigned n>
void from_to_(const value::int_u<n>& from, value::label<n>&
to_);
+ template <unsigned n>
+ void from_to_(const value::label<n>& from, bool& to_);
+
// int_u<n> -> label<m> with n < m
template <unsigned n, unsigned m>
void
diff --git a/milena/mln/core/image/all.hh b/milena/mln/core/image/all.hh
index c973d55..5597041 100644
--- a/milena/mln/core/image/all.hh
+++ b/milena/mln/core/image/all.hh
@@ -63,7 +63,6 @@
# include <mln/core/image/image3d.hh>
# include <mln/core/image/sparse_encode.hh>
# include <mln/core/image/sparse_image.hh>
-# include <mln/core/image/t_image.hh>
# include <mln/core/image/tr_mesh.hh>
# include <mln/core/image/vertex_image.hh>
diff --git a/milena/mln/core/image/bgraph_image.hh
b/milena/mln/core/image/bgraph_image.hh
index a59c1de..153a96a 100644
--- a/milena/mln/core/image/bgraph_image.hh
+++ b/milena/mln/core/image/bgraph_image.hh
@@ -93,6 +93,9 @@ namespace mln
} // end of namespace mln::trait
/// Kind of image based on a boost graph structure.
+ ///
+ /// \ingroup modimageconcrete
+ //
template <typename P, typename V>
struct bgraph_image :
public internal::image_primary< V, p_bgraph<P>, bgraph_image<P, V>
>
diff --git a/milena/mln/core/image/complex_image.hh
b/milena/mln/core/image/complex_image.hh
index 98d00c5..4521722 100644
--- a/milena/mln/core/image/complex_image.hh
+++ b/milena/mln/core/image/complex_image.hh
@@ -115,7 +115,7 @@ namespace mln
} // end of namespace mln::trait
- /// \brief Image based on a complex.
+ /// Image based on a complex.
///
/// Values attached to each face of the complex.
///
diff --git a/milena/mln/core/image/edge_image.hh b/milena/mln/core/image/edge_image.hh
index 3c71bb8..7850db2 100644
--- a/milena/mln/core/image/edge_image.hh
+++ b/milena/mln/core/image/edge_image.hh
@@ -121,6 +121,7 @@ namespace mln
/// \brief Image based on graph edges.
///
/// \ingroup modimageconcrete
+ //
template <typename P, typename V, typename G = util::graph>
class edge_image
: public pw::internal::image_base<fun::i2v::array<V>,
diff --git a/milena/mln/core/image/flat_image.hh b/milena/mln/core/image/flat_image.hh
index 5d5beab..b4cb111 100644
--- a/milena/mln/core/image/flat_image.hh
+++ b/milena/mln/core/image/flat_image.hh
@@ -100,7 +100,7 @@ namespace mln
- /// \brief Image with a single value.
+ /// Image with a single value.
///
/// \ingroup modimageconcrete
//
diff --git a/milena/mln/core/image/image1d.hh b/milena/mln/core/image/image1d.hh
index c137f17..3c5e47a 100644
--- a/milena/mln/core/image/image1d.hh
+++ b/milena/mln/core/image/image1d.hh
@@ -145,13 +145,14 @@ namespace mln
- /// \brief Basic 1D image class.
+ /// Basic 1D image class.
///
/// The parameter \c T is the type of pixel values. This image class
/// stores data in memory and has a virtual border with constant
/// thickness before and after data.
///
/// \ingroup modimageconcrete
+ //
template <typename T>
struct image1d :
public internal::image_primary< T, box1d, image1d<T> >
diff --git a/milena/mln/core/image/image2d.hh b/milena/mln/core/image/image2d.hh
index f5d30cc..f8579a9 100644
--- a/milena/mln/core/image/image2d.hh
+++ b/milena/mln/core/image/image2d.hh
@@ -126,13 +126,14 @@ namespace mln
- /// \brief Basic 2D image class.
+ /// Basic 2D image class.
///
/// The parameter \c T is the type of pixel values. This image class
/// stores data in memory and has a virtual border with constant
/// thickness around data.
///
/// \ingroup modimageconcrete
+ //
template <typename T>
class image2d : public internal::image_primary< T, mln::box2d, image2d<T>
>
{
diff --git a/milena/mln/core/image/image3d.hh b/milena/mln/core/image/image3d.hh
index a0bdb5d..19fc774 100644
--- a/milena/mln/core/image/image3d.hh
+++ b/milena/mln/core/image/image3d.hh
@@ -120,13 +120,14 @@ namespace mln
- /// \brief Basic 3D image class.
+ /// Basic 3D image class.
///
/// The parameter \c T is the type of pixel values. This image class
/// stores data in memory and has a virtual border with constant
/// thickness around data.
///
/// \ingroup modimageconcrete
+ //
template <typename T>
struct image3d : public internal::image_primary< T, box3d, image3d<T> >
{
diff --git a/milena/mln/core/macros.hh b/milena/mln/core/macros.hh
index 75ab5f0..51c32dd 100644
--- a/milena/mln/core/macros.hh
+++ b/milena/mln/core/macros.hh
@@ -81,8 +81,8 @@
/// Shortcuts to access the box type associated to T.
/// \{
-# define mln_box(T) typename T::box
-# define mln_box_(T) T::box
+# define mln_box(T) typename mln::box<mln_psite(T)>
+# define mln_box_(T) mln::box<mln_psite(T)>
/// \}
diff --git a/milena/mln/core/site_set/p_transformed.hh
b/milena/mln/core/site_set/p_transformed.hh
index 563c69b..0e3efe7 100644
--- a/milena/mln/core/site_set/p_transformed.hh
+++ b/milena/mln/core/site_set/p_transformed.hh
@@ -64,10 +64,12 @@ namespace mln
///
/// \param[in] s A site set.
/// \param[in] f A function from site to site.
+ ///
/// \return The transformed site set.
+ //
template <typename S, typename F>
p_transformed<S, F>
- transform(const Site_Set<S>& s, const Function_v2v<F>& f);
+ ptransform(const Site_Set<S>& s, const Function_v2v<F>& f);
@@ -77,6 +79,7 @@ namespace mln
///
/// Parameter \c S is a site set type; parameter F is a function
/// from site to site.
+ //
template <typename S, typename F>
class p_transformed
: public internal::site_set_base_< mln_psite(S), p_transformed<S,F> >,
@@ -114,7 +117,7 @@ namespace mln
bool is_valid() const;
- /// Test if \p p belongs to the subset.
+ /// Test if \p p belongs to the subset.
bool has(const psite& p) const;
@@ -141,7 +144,7 @@ namespace mln
template <typename S, typename F>
inline
p_transformed<S, F>
- transform(const Site_Set<S>& s, const Function_v2v<F>& f)
+ ptransform(const Site_Set<S>& s, const Function_v2v<F>& f)
{
mlc_equal(mln_result(F), mln_psite(S))::check();
p_transformed<S, F> tmp(exact(s), exact(f));
@@ -156,7 +159,7 @@ namespace mln
p_transformed<S,F>::p_transformed()
{
}
-
+
template <typename S, typename F>
inline
p_transformed<S,F>::p_transformed(const S& s, const F& f)
diff --git a/milena/mln/io/pbm/all.hh b/milena/mln/io/pbm/all.hh
index 27afa57..afd7922 100644
--- a/milena/mln/io/pbm/all.hh
+++ b/milena/mln/io/pbm/all.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2007 EPITA Research and Development Laboratory
+// Copyright (C) 2007, 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
@@ -28,10 +29,9 @@
#ifndef MLN_IO_PBM_ALL_HH
# define MLN_IO_PBM_ALL_HH
-/*! \file mln/io/pbm/all.hh
- *
- * \brief File that includes all pbm io materials.
- */
+/// \file mln/io/pbm/all.hh
+///
+/// File that includes all pbm io materials.
namespace mln
diff --git a/milena/mln/labeling/colorize.hh b/milena/mln/labeling/colorize.hh
index 49b1f63..db2a415 100644
--- a/milena/mln/labeling/colorize.hh
+++ b/milena/mln/labeling/colorize.hh
@@ -120,7 +120,7 @@ namespace mln
// mlc_is_a(mln_value(L), mln::value::Symbolic)::check();
(void) value;
- unsigned label_count = nlabels.next();
+ unsigned label_count = static_cast<unsigned>(nlabels) + 1;
static fun::i2v::array<V> f(0);
int diff_size = f.size() - label_count;
if (diff_size < 0)
diff --git a/milena/mln/make/relabelfun.hh b/milena/mln/make/relabelfun.hh
index 11fe1fe..efa5acf 100644
--- a/milena/mln/make/relabelfun.hh
+++ b/milena/mln/make/relabelfun.hh
@@ -46,78 +46,77 @@ namespace mln
/// Create a i2v function from a v2b function.
/// This function can be used to relabel a labeled image.
///
- /// \param[in] fv2b A v2b function.
- /// \param[in] nlabels The number of labels.
- /// \param[in] new_nlabels The number of labels after relabeling.
+ /// \param[in] fv2b A v2b function.
+ /// \param[in] nlabels The number of labels.
+ /// \param[in] new_nlabels The number of labels after relabeling.
///
/// \return a i2v function.
///
/// \sa mln::labeling::relabel
- template <unsigned n, typename F>
- fun::i2v::array< value::label<n> >
+ template <typename V, typename F>
+ fun::i2v::array<V>
relabelfun(const Function_v2b<F>& fv2b,
- const value::label<n>& nlabels,
- value::label<n>& new_nlabels);
+ const V& nlabels,
+ V& new_nlabels);
/// Create a i2v function from a v2v function.
/// This function can be used to relabel a labeled image.
///
- /// \param[in] fv2v A v2v function.
- /// \param[in] nlabels The number of labels.
- /// \param[in] new_nlabels The number of labels after relabeling.
+ /// \param[in] fv2v A v2v function. This function maps an id to
+ /// an already existing one.
+ /// \param[in] nlabels The number of labels.
+ /// \param[in] new_nlabels The number of labels after relabeling.
///
/// \return a i2v function.
///
/// \sa mln::labeling::relabel
- template <unsigned n, typename F>
- fun::i2v::array< value::label<n> >
+ template <typename V, typename F>
+ fun::i2v::array<V>
relabelfun(const Function_v2v<F>& fv2v,
- const value::label<n>& nlabels,
- value::label<n>& new_nlabels);
+ const V& nlabels,
+ V& new_nlabels);
# ifndef MLN_INCLUDE_ONLY
- template <unsigned n, typename F>
+ template <typename V, typename F>
inline
- fun::i2v::array< value::label<n> >
+ fun::i2v::array<V>
relabelfun(const Function_v2b<F>& fv2b_,
- const value::label<n>& nlabels,
- value::label<n>& new_nlabels)
+ const V& nlabels,
+ V& new_nlabels)
{
trace::entering("make::relabelfun");
const F& fv2b = exact(fv2b_);
- value::label<n> tmp_nlabels = literal::zero;
- typedef value::label<n> label_t;
- fun::i2v::array<label_t> fi2v(nlabels.next(), literal::zero);
- for (label_t i = 1; i <= nlabels; ++i)
+ unsigned nlabels_i = static_cast<unsigned>(nlabels) + 1;
+ V tmp_nlabels = literal::zero;
+ fun::i2v::array<V> fi2v(nlabels_i, literal::zero);
+ for (V i = 1; i < nlabels_i; ++i)
if (fv2b(i))
- {
fi2v(i) = ++tmp_nlabels;
- }
new_nlabels = tmp_nlabels;
trace::exiting("make::relabelfun");
return fi2v;
}
- template <unsigned n, typename F>
+ template <typename V, typename F>
inline
- fun::i2v::array< value::label<n> >
+ fun::i2v::array<V>
relabelfun(const Function_v2v<F>& fv2v_,
- const value::label<n>& nlabels,
- value::label<n>& new_nlabels)
+ const V& nlabels,
+ V& new_nlabels)
{
trace::entering("make::relabelfun");
const F& fv2v = exact(fv2v_);
- value::label<n> tmp_nlabels = literal::zero;
- typedef value::label<n> label_t;
- fun::i2v::array<label_t> fi2v(nlabels.next(), literal::zero);
- for (label_t i = 1; i < nlabels.next(); ++i)
+ unsigned nlabels_i = static_cast<unsigned>(nlabels) + 1;
+ V tmp_nlabels = literal::zero;
+ fun::i2v::array<V> fi2v(nlabels_i, literal::zero);
+ for (V i = 1; i < nlabels_i; ++i)
if (fi2v(fv2v(i)) == literal::zero)
{
fi2v(fv2v(i)) = ++tmp_nlabels;
diff --git a/milena/mln/morpho/tree/propagate_representative.hh
b/milena/mln/morpho/tree/propagate_representative.hh
index 92eb0e9..6ccd18a 100644
--- a/milena/mln/morpho/tree/propagate_representative.hh
+++ b/milena/mln/morpho/tree/propagate_representative.hh
@@ -26,24 +26,33 @@
// reasons why the executable file might be covered by the GNU General
// Public License.
-#ifndef MLN_MORPHO_TREE_PROPAGATE_REPRESENTATIVE_HH_
-# define MLN_MORPHO_TREE_PROPAGATE_REPRESENTATIVE_HH_
+#ifndef MLN_MORPHO_TREE_PROPAGATE_REPRESENTATIVE_HH
+# define MLN_MORPHO_TREE_PROPAGATE_REPRESENTATIVE_HH
/// \file mln/morpho/tree/propagate_representative.hh
///
/// Component tree routines.
-namespace mln{
- namespace morpho {
- namespace tree {
-
- /**
- ** Propagate the representative node's value to
- ** non-representative points of the component.
- **
- ** @param t Component tree.
- ** @param f_ Value image.
- */
+
+# include <mln/core/concept/image.hh>
+# include <mln/morpho/tree/data.hh>
+
+
+namespace mln
+{
+
+ namespace morpho
+ {
+
+ namespace tree
+ {
+
+ /// Propagate the representative node's value to
+ /// non-representative points of the component.
+ ///
+ /// \param t Component tree.
+ /// \param f_ Value image.
+ //
template <typename T, typename F>
void
propagate_representative(const T& t, Image<F>& f_);
@@ -52,25 +61,32 @@ namespace mln{
# ifndef MLN_INCLUDE_ONLY
+
template <typename T, typename F>
inline
void
propagate_representative(const T& t, Image<F>& f_)
{
F a = exact(f_);
+ mln_precondition(a.is_valid());
+
mln_up_site_piter(T) p(t);
for_all(p)
if (! t.is_a_node(p))
- {
- mln_assertion(t.is_a_node(t.parent(p)));
- a(p) = a(t.parent(p));
- }
+ {
+ mln_assertion(t.is_a_node(t.parent(p)));
+ a(p) = a(t.parent(p));
+ }
}
-# endif /* !MLN_INCLUDE_ONLY */
- }
- }
-}
+# endif // ! MLN_INCLUDE_ONLY
+
+
+ } // end of namespace mln::morpho::tree
+
+ } // end of namespace mln::morpho
+
+} // end of namespace mln
-#endif /* !MLN_MORPHO_TREE_PROPAGATE_REPRESENTATIVE_HH_ */
+#endif // ! MLN_MORPHO_TREE_PROPAGATE_REPRESENTATIVE_HH
diff --git a/milena/mln/pw/image.hh b/milena/mln/pw/image.hh
index 9bd6b87..5d5adef 100644
--- a/milena/mln/pw/image.hh
+++ b/milena/mln/pw/image.hh
@@ -84,7 +84,8 @@ namespace mln
namespace pw
{
- /// \brief A generic point-wise image implementation.
+ /// A generic point-wise image implementation.
+ ///
/// Parameter \p F is a function restricting the domain.
/// Parameter \p S is the domain type.
///
diff --git a/milena/mln/subsampling/subsampling.hh
b/milena/mln/subsampling/subsampling.hh
index fee6f97..21eaad9 100644
--- a/milena/mln/subsampling/subsampling.hh
+++ b/milena/mln/subsampling/subsampling.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2008 EPITA Research and Development Laboratory (LRDE)
+// 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
@@ -62,7 +63,7 @@ namespace mln
mln_concrete(image2d<T>)
subsampling_(const image2d<T>& input,
const mln_deduce(image2d<T>, site, delta)& first_p,
- const mln_coord(image2d<T>)& gap)
+ const mln_deduce(image2d<T>, site, coord)& gap)
{
trace::entering("subsampling::impl::subsampling_");
mln_concrete(image2d<T>) output(geom::nrows(input) / gap,
diff --git a/milena/mln/tag/init.hh b/milena/mln/tag/init.hh
index e6921a7..21bd0b2 100644
--- a/milena/mln/tag/init.hh
+++ b/milena/mln/tag/init.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2007, 2008 EPITA Research and Development Laboratory
+// 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
@@ -28,10 +29,9 @@
#ifndef MLN_TAG_INIT_HH
# define MLN_TAG_INIT_HH
-/*! \file mln/tag/init.hh
- *
- * \brief Definition of tags used in the mln::init mechanism.
- */
+/// \file mln/tag/init.hh
+///
+/// Definition of tags used in the mln::init mechanism.
namespace mln
@@ -40,28 +40,29 @@ namespace mln
namespace tag
{
- struct image_t {};
- struct domain_t {};
+
struct bbox_t {};
struct border_t {};
+ struct domain_t {};
struct extension_t {};
struct function_t {};
+ struct image_t {};
- extern const image_t& image;
- extern const domain_t& domain;
- extern const bbox_t& bbox;
- extern const border_t& border;
- extern const extension_t& extension;
- extern const function_t& function;
+ extern bbox_t bbox;
+ extern border_t border;
+ extern domain_t domain;
+ extern extension_t extension;
+ extern function_t function;
+ extern image_t image;
# ifndef MLN_INCLUDE_ONLY
- const image_t& image = image_t();
- const domain_t& domain = domain_t();
- const bbox_t& bbox = bbox_t();
- const border_t& border = border_t();
- const extension_t& extension = extension_t();
- const function_t& function = function_t();
+ bbox_t bbox;
+ border_t border;
+ domain_t domain;
+ extension_t extension;
+ function_t function;
+ image_t image;
# endif // !MLN_INCLUDE_ONLY
diff --git a/milena/mln/util/array.hh b/milena/mln/util/array.hh
index fd1f85b..4ffdf2d 100644
--- a/milena/mln/util/array.hh
+++ b/milena/mln/util/array.hh
@@ -507,7 +507,7 @@ namespace mln
typename array<T>::mutable_result
array<T>::operator()(unsigned i)
{
- return (*this)(i);
+ return (*this)[i];
}
template <typename T>
diff --git a/milena/mln/util/eat.hh b/milena/mln/util/eat.hh
index 27a53d6..569a9ad 100644
--- a/milena/mln/util/eat.hh
+++ b/milena/mln/util/eat.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2007 EPITA Research and Development Laboratory
+// Copyright (C) 2007, 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
@@ -28,10 +29,9 @@
#ifndef MLN_UTIL_EAT_HH
# define MLN_UTIL_EAT_HH
-/*! \file mln/util/eat.hh
- *
- * \brief Definition of an "eater" object.
- */
+/// \file mln/util/eat.hh
+///
+/// Definition of an "eater" object.
# include <mln/core/concept/object.hh>
@@ -42,9 +42,10 @@ namespace mln
namespace util
{
- /*! \brief Eat structure.
- *
- */
+ /// Eat structure.
+ ///
+ /// \ingroup modutil
+ //
struct eat : public Object< eat >
{
eat();
diff --git a/milena/mln/util/ignore.hh b/milena/mln/util/ignore.hh
index 2fd547e..32a6b25 100644
--- a/milena/mln/util/ignore.hh
+++ b/milena/mln/util/ignore.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2007 EPITA Research and Development Laboratory
+// Copyright (C) 2007, 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
@@ -28,10 +29,9 @@
#ifndef MLN_UTIL_IGNORE_HH
# define MLN_UTIL_IGNORE_HH
-/*! \file mln/util/ignore.hh
- *
- * \brief Definition of an "ignorer" object.
- */
+/// \file mln/util/ignore.hh
+///
+/// Definition of an "ignorer" object.
# include <mln/core/concept/object.hh>
@@ -42,9 +42,10 @@ namespace mln
namespace util
{
- /*! \brief Ignore structure.
- *
- */
+ /// Ignore structure.
+ ///
+ /// \ingroup modutil
+ //
struct ignore : public Object< ignore >
{
ignore();
@@ -53,6 +54,7 @@ namespace mln
operator T() const;
};
+
# ifndef MLN_INCLUDE_ONLY
// ignore
diff --git a/milena/mln/util/nil.hh b/milena/mln/util/nil.hh
index 43d73ef..9633994 100644
--- a/milena/mln/util/nil.hh
+++ b/milena/mln/util/nil.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2007 EPITA Research and Development Laboratory
+// Copyright (C) 2007, 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
@@ -28,10 +29,9 @@
#ifndef MLN_UTIL_NIL_HH
# define MLN_UTIL_NIL_HH
-/*! \file mln/util/nil.hh
- *
- * \brief Definition of an "niler" object.
- */
+/// \file mln/util/nil.hh
+///
+/// Definition of an "niler" object.
# include <mln/core/concept/object.hh>
@@ -42,9 +42,10 @@ namespace mln
namespace util
{
- /*! \brief Nil structure.
- *
- */
+ /// \brief Nil structure.
+ ///
+ /// \ingroup modutil
+ //
struct nil : public Object< nil >
{
nil();
diff --git a/milena/mln/util/tracked_ptr.hh b/milena/mln/util/tracked_ptr.hh
index 0148880..25c0ea3 100644
--- a/milena/mln/util/tracked_ptr.hh
+++ b/milena/mln/util/tracked_ptr.hh
@@ -32,8 +32,6 @@
/// \file mln/util/tracked_ptr.hh
///
/// Definition of a smart pointer for shared data with tracking.
-///
-/// \todo Split defs from decls.
# include <set>
# include <iostream>
@@ -48,6 +46,10 @@ namespace mln
namespace util
{
+ /// Smart pointer for shared data with tracking.
+ ///
+ /// \ingroup modutil
+ //
template <typename T>
struct tracked_ptr
{
@@ -73,14 +75,13 @@ namespace mln
/// \invariant Pointer proxy exists.
T* operator->();
- /// Ctor.
+ /// Constructors.
+ /// @{
tracked_ptr();
-
- /// Ctor.
tracked_ptr(T* ptr);
-
- /// Cpy ctor.
+ /// Copy constructor.
tracked_ptr(const tracked_ptr<T>& rhs);
+ /// @}
/// Assignment.
tracked_ptr<T>& operator=(const tracked_ptr<T>& rhs);
@@ -88,7 +89,7 @@ namespace mln
/// Assignment.
tracked_ptr<T>& operator=(T* ptr);
- /// Dtor.
+ /// Destructor.
~tracked_ptr();
bool run_() const;
@@ -111,7 +112,6 @@ namespace mln
}
template <typename T>
- /// Negation (for arithmetical tests).
inline
bool tracked_ptr<T>::operator !() const
{
@@ -120,9 +120,6 @@ namespace mln
}
template <typename T>
- /// Mimics the behavior of op-> for a pointer in the const case.
- ///
- /// \invariant Pointer proxy exists.
inline
const T* tracked_ptr<T>::operator->() const
{
@@ -132,9 +129,6 @@ namespace mln
}
template <typename T>
- /// \brief Mimics the behavior of op-> for a pointer in the mutable case.
- ///
- /// \invariant Pointer proxy exists.
inline
T* tracked_ptr<T>::operator->()
{
@@ -144,7 +138,6 @@ namespace mln
}
template <typename T>
- /// Ctor.
inline
tracked_ptr<T>::tracked_ptr() :
ptr_(0),
@@ -154,7 +147,6 @@ namespace mln
}
template <typename T>
- /// Ctor.
inline
tracked_ptr<T>::tracked_ptr(T* ptr) :
ptr_(ptr)
@@ -172,7 +164,6 @@ namespace mln
}
template <typename T>
- /// Cpy ctor.
inline
tracked_ptr<T>::tracked_ptr(const tracked_ptr<T>& rhs) :
ptr_(rhs.ptr_),
@@ -185,7 +176,6 @@ namespace mln
}
template <typename T>
- /// Assignment.
inline
tracked_ptr<T>& tracked_ptr<T>::operator=(const
tracked_ptr<T>& rhs)
{
@@ -204,7 +194,6 @@ namespace mln
}
template <typename T>
- /// Assignment.
inline
tracked_ptr<T>& tracked_ptr<T>::operator=(T* ptr)
{
@@ -226,7 +215,6 @@ namespace mln
return *this;
}
- /// Dtor.
template <typename T>
inline
tracked_ptr<T>::~tracked_ptr()
diff --git a/milena/mln/util/yes.hh b/milena/mln/util/yes.hh
index c460c42..44f15f8 100644
--- a/milena/mln/util/yes.hh
+++ b/milena/mln/util/yes.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2008 EPITA Research and Development Laboratory
+// 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
@@ -28,10 +29,10 @@
#ifndef MLN_UTIL_YES_HH
# define MLN_UTIL_YES_HH
-/*! \file mln/util/yes.hh
- *
- * \brief Definition of an object that always says "yes".
- */
+/// \file mln/util/yes.hh
+///
+/// Definition of an object that always says "yes".
+
# include <mln/core/concept/object.hh>
# include <mln/core/routine/ops.hh>
@@ -40,7 +41,7 @@
namespace mln
{
- // Fwd decl.
+ // Forward declaration.
namespace util { struct yes; }
@@ -64,16 +65,17 @@ namespace mln
{
typedef util::yes ret;
};
-
+
} // end of namespace mln::trait
namespace util
{
- /*! \brief Yes structure.
- *
- */
+ /// Object that always says "yes".
+ ///
+ /// \ingroup modutil
+ //
struct yes : public Object< yes >
{
yes();
diff --git a/milena/mln/value/label.hh b/milena/mln/value/label.hh
index 054524a..dd61b33 100644
--- a/milena/mln/value/label.hh
+++ b/milena/mln/value/label.hh
@@ -108,6 +108,11 @@ namespace mln
void
from_to_(const value::int_u<n>& from, value::label<m>& to_);
+ // label -> bool.
+ template <unsigned n>
+ void
+ from_to_(const value::label<n>& from, bool& to_);
+
} // end of namespace mln::convert::over_load
} // end of namespace mln::convert
@@ -213,6 +218,14 @@ namespace mln
to_ = from;
}
+ template <unsigned n>
+ inline
+ void
+ from_to_(const value::label<n>& from, bool& to_)
+ {
+ to_ = (from != literal::zero);
+ }
+
} // end of namespace mln::convert::over_load
} // end of namespace mln::convert
diff --git a/milena/tests/transformation/rotate.cc
b/milena/tests/transformation/rotate.cc
index d0dfaee..274c47c 100644
--- a/milena/tests/transformation/rotate.cc
+++ b/milena/tests/transformation/rotate.cc
@@ -34,13 +34,12 @@
# include <mln/make/image.hh>
# include <mln/level/compare.hh>
-
int main()
{
using namespace mln;
bool ref_values[][5] = { { 0, 1, 0, 0, 0 },
- { 0, 0, 1, 0, 0 },
+ { 0, 1, 1, 0, 0 },
{ 0, 0, 1, 1, 0 },
{ 0, 0, 0, 1, 1 },
{ 0, 0, 0, 0, 1 } };
diff --git a/milena/tests/unit_test/unit-tests.mk b/milena/tests/unit_test/unit-tests.mk
index 16e30b4..8c856aa 100644
--- a/milena/tests/unit_test/unit-tests.mk
+++ b/milena/tests/unit_test/unit-tests.mk
@@ -231,65 +231,69 @@ mln_core_grids \
mln_core_image_all \
mln_core_image_bgraph_image \
mln_core_image_bgraph_psite \
-mln_core_image_cast_image \
mln_core_image_ch_piter \
mln_core_image_complex_image \
mln_core_image_complex_neighborhood_piter \
mln_core_image_complex_neighborhoods \
mln_core_image_complex_window_piter \
mln_core_image_complex_windows \
-mln_core_image_decorated_image \
mln_core_image_dmorph_all \
+mln_core_image_dmorph_extended \
+mln_core_image_dmorph_extension_fun \
+mln_core_image_dmorph_extension_ima \
+mln_core_image_dmorph_extension_val \
+mln_core_image_dmorph_hexa \
+mln_core_image_dmorph_hexa_piter \
+mln_core_image_dmorph_image2d_h \
+mln_core_image_dmorph_image_if \
+mln_core_image_dmorph_p2p_image \
+mln_core_image_dmorph_slice_image \
+mln_core_image_dmorph_sub_image \
+mln_core_image_dmorph_sub_image_if \
mln_core_image_dmorph_transformed_image \
+mln_core_image_dmorph_unproject_image \
mln_core_image_edge_image \
mln_core_image_essential \
-mln_core_image_extended \
-mln_core_image_extension_fun \
-mln_core_image_extension_ima \
-mln_core_image_extension_val \
mln_core_image_flat_image \
-mln_core_image_fun_image \
mln_core_image_graph_elt_neighborhood \
mln_core_image_graph_elt_neighborhood_if \
mln_core_image_graph_elt_window \
mln_core_image_graph_elt_window_if \
mln_core_image_graph_window_if_piter \
mln_core_image_graph_window_piter \
-mln_core_image_hexa \
-mln_core_image_hexa_piter \
mln_core_image_image1d \
mln_core_image_image2d \
-mln_core_image_image2d_h \
mln_core_image_image3d \
-mln_core_image_image_if \
-mln_core_image_interpolated \
-mln_core_image_lazy_image \
+mln_core_image_imorph_all \
+mln_core_image_imorph_decorated_image \
+mln_core_image_imorph_interpolated \
+mln_core_image_imorph_labeled_image \
+mln_core_image_imorph_lazy_image \
+mln_core_image_imorph_plain \
+mln_core_image_imorph_safe \
+mln_core_image_imorph_tr_image \
mln_core_image_mono_obased_rle_encode \
mln_core_image_mono_obased_rle_image \
mln_core_image_mono_rle_encode \
mln_core_image_mono_rle_image \
+mln_core_image_morph_all \
+mln_core_image_morph_t_image \
mln_core_image_obased_rle_encode \
mln_core_image_obased_rle_image \
-mln_core_image_p2p_image \
-mln_core_image_plain \
mln_core_image_rle_encode \
mln_core_image_rle_image \
-mln_core_image_safe \
-mln_core_image_slice_image \
mln_core_image_sparse_encode \
mln_core_image_sparse_image \
-mln_core_image_sub_image \
-mln_core_image_sub_image_if \
-mln_core_image_t_image \
-mln_core_image_thru_morpher \
-mln_core_image_thrubin_morpher \
-mln_core_image_tr_image \
mln_core_image_tr_mesh \
-mln_core_image_unproject_image \
mln_core_image_value_enc_image \
mln_core_image_value_encode \
mln_core_image_vertex_image \
-mln_core_image_violent_cast_image \
+mln_core_image_vmorph_all \
+mln_core_image_vmorph_cast_image \
+mln_core_image_vmorph_fun_image \
+mln_core_image_vmorph_thru_image \
+mln_core_image_vmorph_thrubin_image \
+mln_core_image_vmorph_violent_cast_image \
mln_core_internal_box_impl \
mln_core_internal_check_image_all \
mln_core_internal_check_image_fastest \
@@ -413,6 +417,7 @@ mln_debug_println_with_border \
mln_debug_put_word \
mln_debug_quiet \
mln_debug_slices_2d \
+mln_debug_superpose \
mln_display_all \
mln_display_essential \
mln_draw_all \
@@ -484,7 +489,6 @@ mln_fun_meta_essential \
mln_fun_meta_first \
mln_fun_meta_green \
mln_fun_meta_hue \
-mln_fun_meta_inty \
mln_fun_meta_lum \
mln_fun_meta_red \
mln_fun_meta_sat \
@@ -499,6 +503,7 @@ mln_fun_p2b_essential \
mln_fun_p2b_has \
mln_fun_p2b_tautology \
mln_fun_p2p_all \
+mln_fun_p2p_fold \
mln_fun_p2p_mirror \
mln_fun_p2p_translation \
mln_fun_p2v_all \
@@ -526,18 +531,17 @@ mln_fun_v2v_abs \
mln_fun_v2v_all \
mln_fun_v2v_cast \
mln_fun_v2v_ch_function_value \
+mln_fun_v2v_component \
mln_fun_v2v_convert \
mln_fun_v2v_dec \
mln_fun_v2v_enc \
mln_fun_v2v_essential \
-mln_fun_v2v_hsi_to_rgb \
mln_fun_v2v_hsl_to_rgb \
mln_fun_v2v_id \
mln_fun_v2v_inc \
mln_fun_v2v_linear \
mln_fun_v2v_norm \
mln_fun_v2v_projection \
-mln_fun_v2v_rgb_to_hsi \
mln_fun_v2v_rgb_to_hsl \
mln_fun_v2v_saturate \
mln_fun_v2v_wrap \
@@ -615,6 +619,7 @@ mln_histo_all \
mln_histo_array \
mln_histo_compute \
mln_histo_essential \
+mln_histo_point_from_value \
mln_io_abort \
mln_io_all \
mln_io_cloud_all \
@@ -657,6 +662,7 @@ mln_io_ppm_load \
mln_io_ppm_save \
mln_io_tiff_all \
mln_io_tiff_load \
+mln_io_tiff_save \
mln_io_txt_all \
mln_io_txt_save \
mln_labeling_all \
@@ -1190,7 +1196,6 @@ mln_value_gl8 \
mln_value_glf \
mln_value_graylevel \
mln_value_graylevel_f \
-mln_value_hsi \
mln_value_hsl \
mln_value_int_s \
mln_value_int_s16 \
@@ -1231,7 +1236,6 @@ mln_value_sign \
mln_value_stack \
mln_value_super_value \
mln_value_viter \
-mln_version \
mln_win_all \
mln_win_backdiag2d \
mln_win_ball \
@@ -1255,6 +1259,8 @@ mln_win_sym \
mln_win_vline2d \
mln_world_all \
mln_world_binary_2d_all \
+mln_world_binary_2d_enlarge \
+mln_world_binary_2d_enlarge_hq2x \
mln_world_binary_2d_projected_histo \
mln_world_binary_2d_subsample \
mln_world_inter_pixel_all \
@@ -1503,65 +1509,69 @@ mln_core_grids_SOURCES = mln_core_grids.cc
mln_core_image_all_SOURCES = mln_core_image_all.cc
mln_core_image_bgraph_image_SOURCES = mln_core_image_bgraph_image.cc
mln_core_image_bgraph_psite_SOURCES = mln_core_image_bgraph_psite.cc
-mln_core_image_cast_image_SOURCES = mln_core_image_cast_image.cc
mln_core_image_ch_piter_SOURCES = mln_core_image_ch_piter.cc
mln_core_image_complex_image_SOURCES = mln_core_image_complex_image.cc
mln_core_image_complex_neighborhood_piter_SOURCES =
mln_core_image_complex_neighborhood_piter.cc
mln_core_image_complex_neighborhoods_SOURCES = mln_core_image_complex_neighborhoods.cc
mln_core_image_complex_window_piter_SOURCES = mln_core_image_complex_window_piter.cc
mln_core_image_complex_windows_SOURCES = mln_core_image_complex_windows.cc
-mln_core_image_decorated_image_SOURCES = mln_core_image_decorated_image.cc
mln_core_image_dmorph_all_SOURCES = mln_core_image_dmorph_all.cc
+mln_core_image_dmorph_extended_SOURCES = mln_core_image_dmorph_extended.cc
+mln_core_image_dmorph_extension_fun_SOURCES = mln_core_image_dmorph_extension_fun.cc
+mln_core_image_dmorph_extension_ima_SOURCES = mln_core_image_dmorph_extension_ima.cc
+mln_core_image_dmorph_extension_val_SOURCES = mln_core_image_dmorph_extension_val.cc
+mln_core_image_dmorph_hexa_SOURCES = mln_core_image_dmorph_hexa.cc
+mln_core_image_dmorph_hexa_piter_SOURCES = mln_core_image_dmorph_hexa_piter.cc
+mln_core_image_dmorph_image2d_h_SOURCES = mln_core_image_dmorph_image2d_h.cc
+mln_core_image_dmorph_image_if_SOURCES = mln_core_image_dmorph_image_if.cc
+mln_core_image_dmorph_p2p_image_SOURCES = mln_core_image_dmorph_p2p_image.cc
+mln_core_image_dmorph_slice_image_SOURCES = mln_core_image_dmorph_slice_image.cc
+mln_core_image_dmorph_sub_image_SOURCES = mln_core_image_dmorph_sub_image.cc
+mln_core_image_dmorph_sub_image_if_SOURCES = mln_core_image_dmorph_sub_image_if.cc
mln_core_image_dmorph_transformed_image_SOURCES =
mln_core_image_dmorph_transformed_image.cc
+mln_core_image_dmorph_unproject_image_SOURCES = mln_core_image_dmorph_unproject_image.cc
mln_core_image_edge_image_SOURCES = mln_core_image_edge_image.cc
mln_core_image_essential_SOURCES = mln_core_image_essential.cc
-mln_core_image_extended_SOURCES = mln_core_image_extended.cc
-mln_core_image_extension_fun_SOURCES = mln_core_image_extension_fun.cc
-mln_core_image_extension_ima_SOURCES = mln_core_image_extension_ima.cc
-mln_core_image_extension_val_SOURCES = mln_core_image_extension_val.cc
mln_core_image_flat_image_SOURCES = mln_core_image_flat_image.cc
-mln_core_image_fun_image_SOURCES = mln_core_image_fun_image.cc
mln_core_image_graph_elt_neighborhood_SOURCES = mln_core_image_graph_elt_neighborhood.cc
mln_core_image_graph_elt_neighborhood_if_SOURCES =
mln_core_image_graph_elt_neighborhood_if.cc
mln_core_image_graph_elt_window_SOURCES = mln_core_image_graph_elt_window.cc
mln_core_image_graph_elt_window_if_SOURCES = mln_core_image_graph_elt_window_if.cc
mln_core_image_graph_window_if_piter_SOURCES = mln_core_image_graph_window_if_piter.cc
mln_core_image_graph_window_piter_SOURCES = mln_core_image_graph_window_piter.cc
-mln_core_image_hexa_SOURCES = mln_core_image_hexa.cc
-mln_core_image_hexa_piter_SOURCES = mln_core_image_hexa_piter.cc
mln_core_image_image1d_SOURCES = mln_core_image_image1d.cc
mln_core_image_image2d_SOURCES = mln_core_image_image2d.cc
-mln_core_image_image2d_h_SOURCES = mln_core_image_image2d_h.cc
mln_core_image_image3d_SOURCES = mln_core_image_image3d.cc
-mln_core_image_image_if_SOURCES = mln_core_image_image_if.cc
-mln_core_image_interpolated_SOURCES = mln_core_image_interpolated.cc
-mln_core_image_lazy_image_SOURCES = mln_core_image_lazy_image.cc
+mln_core_image_imorph_all_SOURCES = mln_core_image_imorph_all.cc
+mln_core_image_imorph_decorated_image_SOURCES = mln_core_image_imorph_decorated_image.cc
+mln_core_image_imorph_interpolated_SOURCES = mln_core_image_imorph_interpolated.cc
+mln_core_image_imorph_labeled_image_SOURCES = mln_core_image_imorph_labeled_image.cc
+mln_core_image_imorph_lazy_image_SOURCES = mln_core_image_imorph_lazy_image.cc
+mln_core_image_imorph_plain_SOURCES = mln_core_image_imorph_plain.cc
+mln_core_image_imorph_safe_SOURCES = mln_core_image_imorph_safe.cc
+mln_core_image_imorph_tr_image_SOURCES = mln_core_image_imorph_tr_image.cc
mln_core_image_mono_obased_rle_encode_SOURCES = mln_core_image_mono_obased_rle_encode.cc
mln_core_image_mono_obased_rle_image_SOURCES = mln_core_image_mono_obased_rle_image.cc
mln_core_image_mono_rle_encode_SOURCES = mln_core_image_mono_rle_encode.cc
mln_core_image_mono_rle_image_SOURCES = mln_core_image_mono_rle_image.cc
+mln_core_image_morph_all_SOURCES = mln_core_image_morph_all.cc
+mln_core_image_morph_t_image_SOURCES = mln_core_image_morph_t_image.cc
mln_core_image_obased_rle_encode_SOURCES = mln_core_image_obased_rle_encode.cc
mln_core_image_obased_rle_image_SOURCES = mln_core_image_obased_rle_image.cc
-mln_core_image_p2p_image_SOURCES = mln_core_image_p2p_image.cc
-mln_core_image_plain_SOURCES = mln_core_image_plain.cc
mln_core_image_rle_encode_SOURCES = mln_core_image_rle_encode.cc
mln_core_image_rle_image_SOURCES = mln_core_image_rle_image.cc
-mln_core_image_safe_SOURCES = mln_core_image_safe.cc
-mln_core_image_slice_image_SOURCES = mln_core_image_slice_image.cc
mln_core_image_sparse_encode_SOURCES = mln_core_image_sparse_encode.cc
mln_core_image_sparse_image_SOURCES = mln_core_image_sparse_image.cc
-mln_core_image_sub_image_SOURCES = mln_core_image_sub_image.cc
-mln_core_image_sub_image_if_SOURCES = mln_core_image_sub_image_if.cc
-mln_core_image_t_image_SOURCES = mln_core_image_t_image.cc
-mln_core_image_thru_morpher_SOURCES = mln_core_image_thru_morpher.cc
-mln_core_image_thrubin_morpher_SOURCES = mln_core_image_thrubin_morpher.cc
-mln_core_image_tr_image_SOURCES = mln_core_image_tr_image.cc
mln_core_image_tr_mesh_SOURCES = mln_core_image_tr_mesh.cc
-mln_core_image_unproject_image_SOURCES = mln_core_image_unproject_image.cc
mln_core_image_value_enc_image_SOURCES = mln_core_image_value_enc_image.cc
mln_core_image_value_encode_SOURCES = mln_core_image_value_encode.cc
mln_core_image_vertex_image_SOURCES = mln_core_image_vertex_image.cc
-mln_core_image_violent_cast_image_SOURCES = mln_core_image_violent_cast_image.cc
+mln_core_image_vmorph_all_SOURCES = mln_core_image_vmorph_all.cc
+mln_core_image_vmorph_cast_image_SOURCES = mln_core_image_vmorph_cast_image.cc
+mln_core_image_vmorph_fun_image_SOURCES = mln_core_image_vmorph_fun_image.cc
+mln_core_image_vmorph_thru_image_SOURCES = mln_core_image_vmorph_thru_image.cc
+mln_core_image_vmorph_thrubin_image_SOURCES = mln_core_image_vmorph_thrubin_image.cc
+mln_core_image_vmorph_violent_cast_image_SOURCES =
mln_core_image_vmorph_violent_cast_image.cc
mln_core_internal_box_impl_SOURCES = mln_core_internal_box_impl.cc
mln_core_internal_check_image_all_SOURCES = mln_core_internal_check_image_all.cc
mln_core_internal_check_image_fastest_SOURCES = mln_core_internal_check_image_fastest.cc
@@ -1685,6 +1695,7 @@ mln_debug_println_with_border_SOURCES =
mln_debug_println_with_border.cc
mln_debug_put_word_SOURCES = mln_debug_put_word.cc
mln_debug_quiet_SOURCES = mln_debug_quiet.cc
mln_debug_slices_2d_SOURCES = mln_debug_slices_2d.cc
+mln_debug_superpose_SOURCES = mln_debug_superpose.cc
mln_display_all_SOURCES = mln_display_all.cc
mln_display_essential_SOURCES = mln_display_essential.cc
mln_draw_all_SOURCES = mln_draw_all.cc
@@ -1756,7 +1767,6 @@ mln_fun_meta_essential_SOURCES = mln_fun_meta_essential.cc
mln_fun_meta_first_SOURCES = mln_fun_meta_first.cc
mln_fun_meta_green_SOURCES = mln_fun_meta_green.cc
mln_fun_meta_hue_SOURCES = mln_fun_meta_hue.cc
-mln_fun_meta_inty_SOURCES = mln_fun_meta_inty.cc
mln_fun_meta_lum_SOURCES = mln_fun_meta_lum.cc
mln_fun_meta_red_SOURCES = mln_fun_meta_red.cc
mln_fun_meta_sat_SOURCES = mln_fun_meta_sat.cc
@@ -1771,6 +1781,7 @@ mln_fun_p2b_essential_SOURCES = mln_fun_p2b_essential.cc
mln_fun_p2b_has_SOURCES = mln_fun_p2b_has.cc
mln_fun_p2b_tautology_SOURCES = mln_fun_p2b_tautology.cc
mln_fun_p2p_all_SOURCES = mln_fun_p2p_all.cc
+mln_fun_p2p_fold_SOURCES = mln_fun_p2p_fold.cc
mln_fun_p2p_mirror_SOURCES = mln_fun_p2p_mirror.cc
mln_fun_p2p_translation_SOURCES = mln_fun_p2p_translation.cc
mln_fun_p2v_all_SOURCES = mln_fun_p2v_all.cc
@@ -1798,18 +1809,17 @@ mln_fun_v2v_abs_SOURCES = mln_fun_v2v_abs.cc
mln_fun_v2v_all_SOURCES = mln_fun_v2v_all.cc
mln_fun_v2v_cast_SOURCES = mln_fun_v2v_cast.cc
mln_fun_v2v_ch_function_value_SOURCES = mln_fun_v2v_ch_function_value.cc
+mln_fun_v2v_component_SOURCES = mln_fun_v2v_component.cc
mln_fun_v2v_convert_SOURCES = mln_fun_v2v_convert.cc
mln_fun_v2v_dec_SOURCES = mln_fun_v2v_dec.cc
mln_fun_v2v_enc_SOURCES = mln_fun_v2v_enc.cc
mln_fun_v2v_essential_SOURCES = mln_fun_v2v_essential.cc
-mln_fun_v2v_hsi_to_rgb_SOURCES = mln_fun_v2v_hsi_to_rgb.cc
mln_fun_v2v_hsl_to_rgb_SOURCES = mln_fun_v2v_hsl_to_rgb.cc
mln_fun_v2v_id_SOURCES = mln_fun_v2v_id.cc
mln_fun_v2v_inc_SOURCES = mln_fun_v2v_inc.cc
mln_fun_v2v_linear_SOURCES = mln_fun_v2v_linear.cc
mln_fun_v2v_norm_SOURCES = mln_fun_v2v_norm.cc
mln_fun_v2v_projection_SOURCES = mln_fun_v2v_projection.cc
-mln_fun_v2v_rgb_to_hsi_SOURCES = mln_fun_v2v_rgb_to_hsi.cc
mln_fun_v2v_rgb_to_hsl_SOURCES = mln_fun_v2v_rgb_to_hsl.cc
mln_fun_v2v_saturate_SOURCES = mln_fun_v2v_saturate.cc
mln_fun_v2v_wrap_SOURCES = mln_fun_v2v_wrap.cc
@@ -1887,6 +1897,7 @@ mln_histo_all_SOURCES = mln_histo_all.cc
mln_histo_array_SOURCES = mln_histo_array.cc
mln_histo_compute_SOURCES = mln_histo_compute.cc
mln_histo_essential_SOURCES = mln_histo_essential.cc
+mln_histo_point_from_value_SOURCES = mln_histo_point_from_value.cc
mln_io_abort_SOURCES = mln_io_abort.cc
mln_io_all_SOURCES = mln_io_all.cc
mln_io_cloud_all_SOURCES = mln_io_cloud_all.cc
@@ -1929,6 +1940,7 @@ mln_io_ppm_load_SOURCES = mln_io_ppm_load.cc
mln_io_ppm_save_SOURCES = mln_io_ppm_save.cc
mln_io_tiff_all_SOURCES = mln_io_tiff_all.cc
mln_io_tiff_load_SOURCES = mln_io_tiff_load.cc
+mln_io_tiff_save_SOURCES = mln_io_tiff_save.cc
mln_io_txt_all_SOURCES = mln_io_txt_all.cc
mln_io_txt_save_SOURCES = mln_io_txt_save.cc
mln_labeling_all_SOURCES = mln_labeling_all.cc
@@ -2462,7 +2474,6 @@ mln_value_gl8_SOURCES = mln_value_gl8.cc
mln_value_glf_SOURCES = mln_value_glf.cc
mln_value_graylevel_SOURCES = mln_value_graylevel.cc
mln_value_graylevel_f_SOURCES = mln_value_graylevel_f.cc
-mln_value_hsi_SOURCES = mln_value_hsi.cc
mln_value_hsl_SOURCES = mln_value_hsl.cc
mln_value_int_s_SOURCES = mln_value_int_s.cc
mln_value_int_s16_SOURCES = mln_value_int_s16.cc
@@ -2503,7 +2514,6 @@ mln_value_sign_SOURCES = mln_value_sign.cc
mln_value_stack_SOURCES = mln_value_stack.cc
mln_value_super_value_SOURCES = mln_value_super_value.cc
mln_value_viter_SOURCES = mln_value_viter.cc
-mln_version_SOURCES = mln_version.cc
mln_win_all_SOURCES = mln_win_all.cc
mln_win_backdiag2d_SOURCES = mln_win_backdiag2d.cc
mln_win_ball_SOURCES = mln_win_ball.cc
@@ -2527,6 +2537,8 @@ mln_win_sym_SOURCES = mln_win_sym.cc
mln_win_vline2d_SOURCES = mln_win_vline2d.cc
mln_world_all_SOURCES = mln_world_all.cc
mln_world_binary_2d_all_SOURCES = mln_world_binary_2d_all.cc
+mln_world_binary_2d_enlarge_SOURCES = mln_world_binary_2d_enlarge.cc
+mln_world_binary_2d_enlarge_hq2x_SOURCES = mln_world_binary_2d_enlarge_hq2x.cc
mln_world_binary_2d_projected_histo_SOURCES = mln_world_binary_2d_projected_histo.cc
mln_world_binary_2d_subsample_SOURCES = mln_world_binary_2d_subsample.cc
mln_world_inter_pixel_all_SOURCES = mln_world_inter_pixel_all.cc
--
1.5.6.5