* 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@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@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