This is a merge commit message of the following branches:
Merge: fcf3eb5 bb6ddb7
Conflicts:
ChangeLog
configure.ac
milena/ChangeLog
milena/apps/morphers/iz.cc
milena/mln/algebra/quat.hh
milena/mln/core/internal/labeled_image_base.hh
milena/mln/debug/trace.hh
milena/mln/fun/v2v/rgb8_to_rgbn.hh
milena/mln/io/magick/load.hh
milena/mln/value/int_u.hh
milena/mln/world/binary_2d/subsample.hh
milena/tests/fun/Makefile.am
scribo/scribo/filter/object_groups_with_holes.hh
scribo/scribo/primitive/regroup/from_single_left_link.hh
scribo/scribo/text/extract_paragraphs_hdoc.hh
scribo/scribo/toolchain/internal/text_in_picture_functor.hh
scribo/tests/primitive/extract/alignments.cc
.dir-locals.el | 5 +
AUTHORS | 108 +-
COPYING | 14 +-
ChangeLog | 135 +-
HACKING | 7 +-
INSTALL | 9 +-
bootstrap | 4 +-
build-aux/.gitignore | 1 +
build-aux/mln_add_file | 8 +-
configure.ac | 64 +-
doc/Doxyfile.in | 4 +-
doc/Makefile.am | 92 +-
lrde-scmstats.sh | 4 +-
milena/ChangeLog | 1827 +-
milena/Makefile.am | 1 +
milena/apps/Makefile.am | 6 +-
.../constrained-connectivity.cc | 10 +-
milena/apps/generic-skel/Makefile.am | 115 +
.../generic-skel/image2d-skel-unconstrained.cc | 92 +
.../generic-skel/image2d-skel-with-end-points.cc | 94 +
.../generic-skel/image3d-skel-unconstrained.cc | 109 +
.../generic-skel/image3d-skel-with-1d-isthmuses.cc | 114 +
.../generic-skel/image3d-skel-with-end-points.cc | 114 +
milena/apps/generic-skel/image3d-skel.hh | 399 +
.../test-image2d-skel-unconstrained.in | 24 +
.../test-image2d-skel-with-end-points.in | 24 +
milena/apps/generic-skel/test-mixed.in | 25 +
milena/apps/graph-morpho/convert.hh | 4 +-
milena/apps/graph-morpho/make.hh | 6 +-
milena/apps/graph-morpho/morpho.hh | 8 +-
milena/apps/mesh-segm-skel/Makefile.am | 187 +-
.../apps/mesh-segm-skel/mesh-complex-2-collapse.cc | 153 +
.../mesh-complex-max-curv-1-collapse.cc | 386 +
.../mesh-complex-max-curv-2-collapse.cc | 328 +
.../mesh-complex-max-curv-extrema.cc | 187 +
.../mesh-segm-skel/mesh-complex-max-curv-segm.cc | 56 +-
.../mesh-segm-skel/mesh-complex-max-curv-skel.cc | 328 +
.../apps/mesh-segm-skel/mesh-complex-max-curv.cc | 17 +-
.../mesh-segm-skel/mesh-complex-pinv-curv-segm.cc | 192 +
.../mesh-segm-skel/mesh-complex-pinv-curv-skel.cc | 344 +
milena/apps/mesh-segm-skel/mesh-complex-segm.cc | 26 +-
milena/apps/mesh-segm-skel/mesh-complex-skel.cc | 126 +-
milena/apps/mesh-segm-skel/misc.hh | 15 +-
milena/apps/mesh-segm-skel/off-to-vtk-bin.cc | 58 +
milena/apps/mesh-segm-skel/save_bin_alt.hh | 310 +-
.../mesh-segm-skel/test-mesh-complex-2-collapse.in | 23 +
.../test-mesh-complex-max-curv-1-collapse.in | 24 +
.../test-mesh-complex-max-curv-2-collapse.in | 24 +
.../test-mesh-complex-max-curv-extrema.in | 26 +
.../test-mesh-complex-max-curv-skel.in | 26 +
.../test-mesh-complex-pinv-curv-segm.in | 27 +
.../test-mesh-complex-pinv-curv-skel.in | 26 +
milena/apps/mesh-segm-skel/test-mixed.in | 25 +
milena/apps/morphers/iz.cc | 35 +-
milena/apps/morphers/recorder-bft.cc | 9 +-
milena/doc/Doxyfile.in | 6 +-
milena/doc/Makefile.am | 77 +-
milena/doc/examples/devel/facade.cc.raw | 4 +-
milena/doc/examples/devel/impl.cc.raw | 7 +-
milena/doc/figures/extend-1.ppm | Bin 12406 -> 12407 bytes
milena/doc/figures/extend-2.ppm | Bin 16546 -> 16547 bytes
milena/doc/figures/extend-3.ppm | Bin 16546 -> 16547 bytes
milena/doc/figures/extend-4.ppm | 2 +-
milena/doc/figures/extend-5.ppm | Bin 12406 -> 12407 bytes
milena/doc/figures/fill-1.ppm | Bin 12406 -> 12407 bytes
milena/doc/figures/fill-2.ppm | Bin 12406 -> 12407 bytes
milena/doc/figures/fill-imageif-cfun-1.ppm | Bin 206 -> 207 bytes
milena/doc/figures/fill-subdomain-1.pbm | 2 +-
milena/doc/figures/fill-subdomain-2.ppm | Bin 206 -> 207 bytes
milena/doc/figures/fill-subdomain-3.ppm | Bin 206 -> 207 bytes
milena/doc/figures/fill-subdomain-4.ppm | Bin 206 -> 207 bytes
milena/doc/figures/ima2d-rot-1.ppm | Bin 235320 -> 235321 bytes
milena/doc/figures/ima2d-rot-2.ppm | Bin 235320 -> 235321 bytes
milena/doc/figures/ima_save.pbm | 2 +-
milena/doc/figures/labeling-compute-1.pbm | 2 +-
milena/doc/figures/labeling-compute-2.ppm | Bin 206 -> 207 bytes
milena/doc/figures/logical-not-1.pbm | 2 +-
milena/doc/figures/logical-not-2.pbm | 2 +-
milena/doc/figures/logical-not-3.pbm | 2 +-
milena/doc/figures/tuto2_first_image-1.pbm | 2 +-
milena/doc/figures/tuto3_colorize-1.pgm | Bin 141 -> 142 bytes
milena/doc/figures/tuto3_colorize-2.ppm | Bin 191 -> 192 bytes
milena/doc/figures/tuto3_rw_image-1.ppm | Bin 4918 -> 4919 bytes
milena/doc/figures/tuto3_rw_image-2.ppm | 2 +-
milena/doc/figures/tuto3_rw_image-3.ppm | Bin 12406 -> 12407 bytes
.../figures/tuto4_genericity_and_algorithms-1.ppm | Bin 12406 -> 12407 bytes
.../figures/tuto4_genericity_and_algorithms-2.ppm | Bin 12406 -> 12407 bytes
.../figures/tuto4_genericity_and_algorithms-3.pbm | 2 +-
.../figures/tuto4_genericity_and_algorithms-4.ppm | Bin 12406 -> 12407 bytes
.../figures/tuto4_genericity_and_algorithms-5.ppm | Bin 12406 -> 12407 bytes
.../figures/tuto4_genericity_and_algorithms-6.ppm | Bin 12406 -> 12407 bytes
milena/doc/generate_dist_files.sh | 47 -
milena/doc/tools/clearbanner.sh | 21 -
milena/doc/tools/todoxygen.sh | 23 +-
milena/headers.mk | 20 +-
milena/img/README | 6 +
milena/img/bunny.pgm | Bin 0 -> 27000043 bytes
milena/mesh/Makefile.am | 26 +-
milena/mesh/bunny-holefilled.vtk |458714 ++++++++++++++++++++
milena/mesh/pseudo-manifold.vtk | 188 +
milena/mesh/teapot.vtk |25008 ++
milena/mesh/tetrahedron.vtk | 48 +
milena/mln/accu/stat/median_alt.hh | 14 +-
milena/mln/accu/transform_snake.hh | 2 +-
milena/mln/algebra/mat.hh | 4 +-
milena/mln/algebra/quat.hh | 7 +-
milena/mln/canvas/all.hh | 2 +-
.../canvas/browsing/dir_struct_elt_incr_update.hh | 31 +-
milena/mln/core/alias/complex_image.hh | 18 +-
milena/mln/core/concept/function.hh | 12 +-
milena/mln/core/contract.hh | 11 +-
.../mln/core/image/dmorph/mutable_extension_ima.hh | 272 +
milena/mln/core/image/graph_elt_neighborhood_if.hh | 8 +-
milena/mln/core/image/graph_elt_window_if.hh | 10 +-
milena/mln/core/image/image2d.hh | 5 -
milena/mln/core/image/imorph/labeled_image.hh | 8 +-
milena/mln/core/image/vmorph/fun_image.hh | 24 +-
milena/mln/core/internal/classical_window_base.hh | 1 -
milena/mln/core/internal/image_morpher.hh | 1 -
milena/mln/core/internal/labeled_image_base.hh | 35 +-
milena/mln/core/point.hh | 2 +-
milena/mln/core/routine/mutable_extend.hh | 67 +
milena/mln/core/site_set/p_edges.hh | 16 +-
milena/mln/core/site_set/p_graph_piter.hh | 4 +-
milena/mln/core/site_set/p_line2d.hh | 1 -
milena/mln/core/site_set/p_set.hh | 14 +-
milena/mln/data/fill.hh | 3 +-
milena/mln/data/stretch.hh | 12 +-
milena/mln/debug/trace.hh | 40 +-
milena/mln/draw/dashed_line.hh | 18 +-
milena/mln/fun/p2b/antilogy.hh | 1 -
milena/mln/fun/p2b/tautology.hh | 1 -
milena/mln/fun/v2v/array.hh | 11 +-
milena/mln/fun/v2v/rgb8_to_rgbn.hh | 61 +-
milena/mln/fun/v2v/rgb_to_hsl.hh | 2 +-
milena/mln/fun/x2x/rotation.hh | 7 +-
milena/mln/geom/complex_geometry.hh | 16 +-
milena/mln/io/fld/write_header.hh | 9 +-
milena/mln/io/magick/load.hh | 6 +-
milena/mln/io/off/load.hh | 27 +-
milena/mln/io/off/save.hh | 10 +-
milena/mln/io/pdf/load.hh | 8 +-
milena/mln/io/pnm/save_header.hh | 10 +-
milena/mln/io/raw/load.hh | 3 +-
milena/mln/io/tiff/load.hh | 10 +-
milena/mln/io/vtk/all.hh | 47 +
milena/mln/io/vtk/load.hh | 615 +
milena/mln/io/vtk/save.hh | 649 +
milena/mln/labeling/flat_zones.hh | 4 +-
milena/mln/linear/#ch_convolve.hh# | 103 -
milena/mln/linear/gaussian.hh | 3 +-
milena/mln/make/attachment.hh | 53 +-
milena/mln/make/cell.hh | 11 +-
milena/mln/make/detachment.hh | 56 +-
milena/mln/math/pi.hh | 10 +-
milena/mln/morpho/tree/data.hh | 32 +-
milena/mln/morpho/tree/impl/dual_hqueue.hh | 5 +-
milena/mln/morpho/tree/impl/dual_union_find.hh | 13 +-
milena/mln/morpho/watershed/flooding.hh | 25 +-
milena/mln/morpho/watershed/topological.hh | 198 +-
milena/mln/registration/icp.hh | 15 +-
milena/mln/tag/init.hh | 1 -
milena/mln/test/positive.hh | 11 +-
milena/mln/test/predicate.hh | 8 +-
milena/mln/topo/connectivity_number_2d.hh | 130 +
milena/mln/topo/connectivity_number_3d.hh | 309 +
milena/mln/topo/detach.hh | 83 -
milena/mln/topo/detach_cell.hh | 154 +
milena/mln/topo/detach_pair.hh | 191 +
milena/mln/topo/detach_point.hh | 114 +
milena/mln/topo/is_facet.hh | 52 +-
milena/mln/topo/is_n_face.hh | 16 +-
milena/mln/topo/is_not_1d_isthmus.hh | 208 +
milena/mln/topo/is_not_end_point.hh | 121 +
milena/mln/topo/is_simple_2d.hh | 135 +-
milena/mln/topo/is_simple_cell.hh | 114 +-
milena/mln/topo/is_simple_pair.hh | 225 +
milena/mln/topo/is_simple_point2d.hh | 142 +
milena/mln/topo/is_simple_point3d.hh | 191 +
milena/mln/topo/no_constraint.hh | 82 +
milena/mln/topo/skeleton/breadth_first_thinning.hh | 171 +-
.../mln/topo/skeleton/priority_driven_thinning.hh | 215 +
milena/mln/trait/image/props.hh | 2 +-
milena/mln/trait/images.hh | 7 +-
milena/mln/transform/fft.hh | 705 +
milena/mln/util/adjacency_matrix.hh | 13 +-
milena/mln/util/array.hh | 43 +-
milena/mln/util/edge.hh | 3 +-
milena/mln/util/fibonacci_heap.hh | 93 +-
milena/mln/util/object_id.hh | 8 +-
milena/mln/util/set.hh | 4 +-
milena/mln/util/timer.hh | 24 -
milena/mln/util/tracked_ptr.hh | 8 +-
milena/mln/value/hsl.hh | 9 +-
milena/mln/value/int_u.hh | 194 +-
milena/mln/value/int_u.hxx | 198 +
milena/mln/value/internal/gray_f.hh | 2 +-
milena/mln/value/lut_vec.hh | 8 +-
milena/mln/value/qt/rgb32.hh | 78 +-
milena/mln/value/rgb.hh | 38 +-
milena/mln/version.hh.in | 19 +-
milena/mln/world/binary_2d/subsample.hh | 27 +-
milena/new-header | 4 +-
milena/tests/Makefile.am | 10 +-
milena/tests/accu/compute.cc | 5 +-
milena/tests/core/alias/Makefile.am | 3 +-
milena/tests/core/alias/dpoint2d.cc | 4 +-
milena/tests/core/alias/neighb2d.cc | 54 +
milena/tests/core/image/complex_image.hh | 20 +-
milena/tests/data/transform.cc | 18 +-
milena/tests/draw/Makefile.am | 4 +-
milena/tests/draw/dashed_line.cc | 53 +
milena/tests/draw/line.cc | 17 +-
milena/tests/io/Makefile.am | 5 +-
milena/tests/io/dump/Makefile.am | 4 +-
milena/tests/io/dump/dump.cc | 32 +
milena/tests/io/magick/load.cc | 2 +-
milena/tests/io/vtk/Makefile.am | 30 +
milena/tests/io/vtk/load_bin.cc | 60 +
milena/tests/io/vtk/load_save_bin.cc | 48 +
milena/tests/io/vtk/save.cc | 106 +
milena/tests/labeling/compute.cc | 14 +-
milena/tests/labeling/pack.cc | 13 +-
milena/tests/make/Makefile.am | 4 +-
milena/tests/make/attachment.cc | 77 +
milena/tests/make/detachment.cc | 98 +
milena/tests/topo/Makefile.am | 13 +-
milena/tests/topo/complex.cc | 3 +
milena/tests/topo/connectivity_numbers_2d.cc | 87 +
milena/tests/topo/detach_pair.cc | 73 +
milena/tests/topo/is_facet.cc | 80 +
milena/tests/topo/is_simple_pair.cc | 73 +
milena/tests/topo/skeleton/Makefile.am | 12 +-
.../tests/topo/skeleton/breadth_first_thinning.cc | 74 +
.../skeleton/breadth_first_thinning_constrained.cc | 78 +
.../topo/skeleton/priority_driven_thinning.cc | 92 +
.../priority_driven_thinning_constrained.cc | 96 +
milena/tests/transform/Makefile.am | 22 +-
milena/tests/transform/fft.cc | 105 +
milena/tests/unit_test/Makefile.am | 3 +-
milena/tests/unit_test/cond_tests_fftw3 | 1 +
milena/tests/unit_test/unit-tests.mk | 35 +-
milena/tests/util/line_graph.cc | 22 +-
milena/tests/value/Makefile.am | 8 +-
milena/tests/value/int_u32.cc | 37 +
milena/tests/value/scalar.cc | 90 -
milena/tests/world/binary_2d/Makefile.am | 11 +-
milena/tests/world/binary_2d/subsample.cc | 48 +
milena/tools/Makefile.am | 66 +-
milena/tools/compute_local_configurations.cc | 109 +
milena/tools/connectivity_numbers_3d.cc | 46 +
milena/tools/connectivity_numbers_3d.hh | 407 +
milena/tools/connectivity_numbers_3d_tbb.cc | 47 +
milena/tools/connectivity_numbers_3d_tbb.hh | 163 +
milena/tools/gen_cxx_lut | 103 +
milena/tools/simple_point3d_lut.cc | 48 +
milena/tools/simple_point3d_lut.hh | 190 +
milena/tools/simple_point3d_lut_26_6.cc | 30 +
milena/tools/simple_point3d_lut_tbb.cc | 49 +
milena/tools/simple_point3d_lut_tbb.hh | 185 +
milena/tools/test_simple_point3d_lut_26_6.cc | 136 +
milena/tools/tools.mk | 7 +-
milena/trash/display_color_pretty.hh | 15 +-
milena/trash/display_remove.hh | 13 +-
milena/trash/display_save.hh | 14 +-
milena/trash/display_save_and_show.hh | 10 +-
milena/trash/display_show.hh | 10 +-
milena/trash/neighb_get.hh | 6 +-
scribo/ChangeLog | 220 +-
scribo/demo/viewer/Makefile.am | 3 +-
scribo/doc/Doxyfile.in | 2 +-
scribo/doc/Makefile.am | 77 +-
scribo/doc/tools/todoxygen.sh | 23 +-
scribo/headers.mk | 3 +
scribo/scribo/afp/components.hh | 218 +
scribo/scribo/afp/link.hh | 181 +
scribo/scribo/afp/regroup.hh | 123 +
.../binarization/internal/local_threshold_core.hh | 3 +-
scribo/scribo/core/document.hh | 13 +-
scribo/scribo/core/internal/doc_serializer.hh | 18 +-
scribo/scribo/core/line_info.hh | 6 +-
scribo/scribo/core/line_set.hh | 2 -
scribo/scribo/core/object_groups.hh | 5 +-
scribo/scribo/core/paragraph_set.hh | 3 +-
scribo/scribo/estim/components_features.hh | 24 +-
scribo/scribo/filter/internal/component_aligned.hh | 4 +-
scribo/scribo/filter/internal/compute.hh | 4 +-
scribo/scribo/filter/object_groups_with_holes.hh | 2 +-
scribo/scribo/filter/objects_with_holes.hh | 33 +-
scribo/scribo/filter/separators_in_borders.hh | 14 -
scribo/scribo/io/xml/load.hh | 15 +-
scribo/scribo/postprocessing/fill_object_holes.hh | 9 -
scribo/scribo/preprocessing/deskew.hh | 7 +-
scribo/scribo/preprocessing/deskew_crop.hh | 3 +-
scribo/scribo/primitive/extract/alignments.hh | 8 +-
.../primitive/extract/lines_h_thick_and_thin.hh | 3 +-
scribo/scribo/primitive/extract/non_text.hh | 4 -
scribo/scribo/primitive/extract/non_text_kmean.hh | 5 +-
.../primitive/extract/separators_nonvisible.hh | 63 -
.../primitive/link/internal/link_functor_base.hh | 4 +-
.../primitive/regroup/from_single_left_link.hh | 4 +-
scribo/scribo/text/clean_inplace.hh | 15 +-
scribo/scribo/text/extract_paragraphs_hdoc.hh | 44 -
scribo/scribo/text/merging.hh | 55 +-
scribo/scribo/text/recognition.hh | 216 +-
.../toolchain/internal/text_in_picture_functor.hh | 42 +-
scribo/scribo/util/init_integral_image.hh | 5 +-
scribo/src/Makefile.am | 9 +-
scribo/src/afp/components.hh | 228 -
scribo/src/afp/link.hh | 178 -
scribo/src/afp/regroup.hh | 120 -
scribo/src/binarization/Makefile.am | 5 -
scribo/src/text_recognition_in_picture.cc | 4 +-
scribo/tests/preprocessing/crop.cc | 6 +-
.../preprocessing/crop_without_localization.cc | 6 +-
scribo/tests/preprocessing/deskew.cc | 6 +-
scribo/tests/preprocessing/rotate_90.cc | 6 +-
scribo/tests/primitive/extract/alignments.cc | 19 +-
scribo/tests/unit_test/unit-tests.mk | 3 +
swilena/ChangeLog | 10 +-
swilena/python/Makefile.am | 2 +-
321 files changed, 500117 insertions(+), 2789 deletions(-)
diff --cc ChangeLog
index cfd20e3,2314fc0..2d897e4
--- a/ChangeLog
+++ b/ChangeLog
@@@ -1,23 -1,134 +1,154 @@@
+2013-04-29 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * NEWS: Notify changes in data::convert prototype.
+
+2013-04-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Cite papers in documentation.
+
+ * mln/linear/log.hh,
+ * mln/topo/skeleton/crest.hh: Here.
+
+2013-04-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * doc/doc.bib: Add more references.
+
+2013-04-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * configure.ac: Do not configure milena/tests/fun/i2v and
+ milena/tests/fun/stat.
+
+ 2013-08-30 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * configure.ac: Untabify.
+
+ 2011-07-11 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Remove buggy symbol definitions.
+
+ * configure.ac: No longer define OLN_PACKAGE_NAME,
+ OLN_PACKAGE_BUGREPORT, OLN_PACKAGE_STRING and OLN_PACKAGE_VERSION
+ using AC_DEFINE_UNQUOTED.
+
+ 2010-08-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * configure.ac: Configure milena/apps/generic-skel/Makefile.
+
+ 2010-06-24 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * configure.ac: Configure milena/tests/io/vtk/Makefile.
+
+ 2010-07-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Configure tests in mesh-segm-skel apps.
+
+ * configure.ac: Configure
+ milena/apps/mesh-segm-skel/test-mesh-complex-pinv-curv-segm and
+ milena/apps/mesh-segm-skel/test-mesh-complex-pinv-curv-skel.
+
+ 2010-06-14 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Configure milena/apps/mesh-segm-skel/test-mesh-complex-max-curv-skel.
+
+ * configure.ac: Here.
+
+ 2010-05-11 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Configure milena/apps/mesh-segm-skel/test-mesh-complex-max-curv-extrema.
+
+ * configure.ac: Here.
+
+ 2013-08-26 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Improve the generation of Doxyfiles in Olena.
+
+ * doc/Makefile.am (edit)
+ ($(srcdir)/user-refman.stamp):
+ Use `[@]' instead of `\@' for portability reasons.
+ (ID): New (empty).
+ ($(DOXYFILE_USER)): Do not depend on $Id$ from ChangeLog.
+ * doc/Doxyfile.in (PROJECT_NUMBER): Reintegrate @ID@ to the
+ project number, even if it is not yet set.
+ Improve the generation of Doxyfiles in Olena.
+
+ 2012-10-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Ask configure to try to find FFTW (version 3).
+
+ * configure.ac: Here.
+
+ 2013-08-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * AUTHORS: Update.
+
+ 2013-08-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * COPYING: Untabify.
+
+ 2013-08-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * configure.ac: Configure milena/tests/fun/v2i/Makefile.
+
+ 2010-04-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * configure.ac: Typo.
+
+ 2013-06-28 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have configure find bib2bib and bibtex2html.
+
+ * configure.ac: Check for bib2bib and bibtex2html.
+ Define BIB2BIB and BIBTEX2HTML and use them...
+ * doc/Makefile.am (lrde_olena.bib, lrde_olena.html): ...here.
+ * bootstrap: No longer check for bib2bib and bibtex2html.
+
+ 2013-06-28 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have configure find rst2html.
+
+ * configure.ac: Check for rst2html.
+ Define RST2HTML and use it...
+ * doc/Makefile.am (contributors.html): ...here.
+
+ 2013-06-18 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Mention bibtex2html and bib2bib as documentation build dependencies.
+
+ * HACKING (Required Software): Here.
+
+ 2013-06-18 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Require bibtex2html 1.95 and bib2bib 1.95.
+
+ * bootstrap: Here.
+ (require): Accept complex command line patterns as third argument
+ to handle bibtex2html's and bib2bib's ``--version'' option.
+
+ 2013-06-18 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Work around constraints of TeXLive's bibtex2html on Mac OS X.
+
+ * doc/Makefile.am (lrde_olena.html): Here.
+
+ 2013-06-14 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Shell-related portability fixes in Olena's Makefiles.
+
+ * doc/Makefile.am: Rewrite patterns ``perl X `find Y''' as
+ ``find Y -exec perl X {} \;'' to avoid long `perl' command lines and
+ please the shell.
+
+ 2013-06-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Use `perl -pi' instead of `sed -i' in Olena.
+
+ * build-aux/mln_add_file,
+ * doc/Makefile.am,
+ * lrde-scmstats.sh:
+ Here, as `sed -i' (with no backup file) behaves differently on
+ GNU/Linux and Mac OS X. For more information, see:
+
http://stackoverflow.com/questions/5694228/.
+
2013-04-18 Guillaume Lazzara <z(a)lrde.epita.fr>
Remove unstable viewer.
diff --cc INSTALL
index 7d1c323,7d1c323..a1e89e1
--- a/INSTALL
+++ b/INSTALL
@@@ -1,8 -1,8 +1,8 @@@
Installation Instructions
*************************
--Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
--2006, 2007, 2008, 2009 Free Software Foundation, Inc.
++Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation,
++Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
@@@ -226,6 -226,6 +226,11 @@@ order to use an ANSI C compiler
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
++ HP-UX `make' updates targets which have the same time stamps as
++their prerequisites, which makes it generally unusable when shipped
++generated files such as `configure' are involved. Use GNU `make'
++instead.
++
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
a workaround. If GNU CC is not installed, it is therefore recommended
diff --cc milena/ChangeLog
index 0b4eefd,3a3a087..c9cdf37
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@@ -1,723 -1,1826 +1,2546 @@@
+2013-05-13 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * doc/mln/labeling/labeling.dox: Write general documentation on
+ labeling.
+
+2013-05-13 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * doc/ref-guide.tex: Mention *_without_localization routines in
+ reference guide.
+
+2013-05-13 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Document sub_image morpher.
+
+ * doc/examples-outputs.mk,
+ * doc/examples.mk,
+ * doc/figures.mk,
+ * doc/outputs.mk,
+ * doc/programs-examples.mk: Regen.
+
+ * doc/examples.dox: Revamp layout and add link to the new sub_image
+ example.
+
+ * doc/examples/sub_image.cc,
+ * doc/outputs/sub_image.txt,
+ * doc/figures/sub_image-1.pbm,
+ * doc/figures/sub_image-2.pbm: New.
+
+ * mln/core/image/dmorph/sub_image.hh: Write documentation.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/core/routine/duplicate.hh: Document this routine.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes in documentation.
+
+ * doc/mln/core/image/morphers.dox: Add a reference to duplicate().
+
+ * mln/core/pixter1d.hh: Remove \internal commands.
+
+ * mln/data/transform.hh: Improve layout of pseudo-code.
+
+ * mln/io/pdf/load.hh: Remove duplicate '*' in comments.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve documentation of several macros.
+
+ * mln/core/concept/iterator.hh: Document arguments.
+
+ * mln/core/macros.hh: Add more documentation details for iterator
+ related macros.
+
+ * mln/core/var.hh: Fix typos.
+
+ * mln/debug/trace.hh: Add documentation to mln_trace and
+ mln_trace_warning.
+
+ * mln/trait/value_.hh: Add documentation to several common macros.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix missing parts of mln::box interface in documentation.
+
+ * doc/mln/core/alias/box1d.dox,
+ * doc/mln/core/alias/box2d.dox,
+ * doc/mln/core/alias/box2d_h.dox,
+ * doc/mln/core/alias/box3d.dox: Make class inherit from box_impl.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/core/var.hh: Document mln_VAR().
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Cross reference algebra::vec and make::vec in their respective
+ documentation.
+
+ * mln/algebra/vec.hh,
+ * mln/make/vec.hh: Here.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Document extended and transformed_image morphers.
+
+ * doc/examples-outputs.mk,
+ * doc/examples.mk,
+ * doc/outputs.mk: Regen.
+
+ * doc/examples.dox: Add link to new examples.
+
+ * doc/outputs/extended_image.txt,
+ * doc/outputs/transformed_image.txt,
+ * doc/examples/extended_image.cc,
+ * doc/examples/transformed_image.cc: New.
+
+ * doc/programs-examples.mk: Add new example programs.
+
+ * mln/core/image/dmorph/extended.hh,
+ * mln/core/image/dmorph/transformed_image.hh: Write documentation
+ and insert example code.
+
+ * mln/fun/p2p/fold.hh,
+ * mln/fun/p2p/mirror.hh,
+ * mln/fun/p2p/translation.hh: Make references to
+ transformed_image.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/core/site_set/box.hh: Add shrink() and to_smaller() members.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a module related to literals.
+
+ * doc/mln/literal/literal.dox: New.
+
+ * mln/literal/black.hh,
+ * mln/literal/colors.hh,
+ * mln/literal/identity.hh,
+ * mln/literal/max.hh,
+ * mln/literal/min.hh,
+ * mln/literal/one.hh,
+ * mln/literal/origin.hh,
+ * mln/literal/white.hh,
+ * mln/literal/zero.hh: Move to literal module.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes in existing documentation.
+
+ * mln/data/convert.hh: Remove a duplicate \overload.
+
+ * mln/core/macros.hh: Fix definitions.
+
+ * mln/value/qt/rgb32.hh: Fix invalid cross reference.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/core/concept/iterator.hh: Document iterator macros.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Move concepts in their related type module.
+
+ * mln/core/concept/image.hh,
+ * mln/core/concept/neighborhood.hh,
+ * mln/core/concept/site_set.hh,
+ * mln/core/concept/value.hh,
+ * mln/core/concept/window.hh: Here.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * doc/Doxyfile.in: Hide 'It' symbol.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * doc/mln/core/image/images.dox: Document generic image interface.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * doc/mln/main.dox: Set macro module as top level entry.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/core/concept/image.hh: Document Image concept.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * doc/mln/value/value/dox: Specify that built-in types can be
+ used.
+
+2013-04-29 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Introduce a new module for useful macros.
+
+ * doc/mln/core/macros.dox: New.
+
+ * doc/mln/main.dox: New module.
+
+ * mln/core/macros.hh: Add comments.
+
+2013-04-29 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve documentation in fun::p2b, fun::p2p, fun::p2v and
+ fun::x2v.
+
+ * mln/fun/p2b/antilogy.hh,
+ * mln/fun/p2b/big_chess.hh,
+ * mln/fun/p2b/chess.hh,
+ * mln/fun/p2b/has.hh,
+ * mln/fun/p2b/tautology.hh,
+ * mln/fun/p2p/fold.hh,
+ * mln/fun/p2p/mirror.hh,
+ * mln/fun/p2p/translation.hh,
+ * mln/fun/p2v/elifs.hh,
+ * mln/fun/p2v/iota.hh,
+ * mln/fun/p2v/ternary.hh,
+ * mln/fun/x2v/bilinear.hh,
+ * mln/fun/x2v/l1_norm.hh,
+ * mln/fun/x2v/nneighbor.hh,
+ * mln/fun/x2v/trilinear.hh: Here.
+
+2013-04-24 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Handle 16 bits value types with io::magick.
+
+ * mln/io/magick/load.hh,
+ * mln/io/magick/save.hh: Enable portions of code supporting 16bits
+ images if GraphicsMagick supports it.
+
+2013-04-24 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Relax conversion dispatch.
+
+ * mln/convert/impl/from_value_to_value.hh: Disable dispatch and
+ rely on from_to().
+
+ * mln/value/rgb.hh: Add a from_to_() overload to handle conversion
+ from rgb<n> to rgb<m>.
+
+2013-04-23 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * tests/io/magick/save.cc: Kill compilation warnings.
+
+2013-04-23 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add save options to magick::save.
+
+ * mln/io/magick/save.hh: Add save_options structure.
+
+2013-04-23 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a new routine to get image headers thanks to GraphicsMagick.
+
+ * mln/io/magick/get_header.hh,
+ * mln/tests/io/magick/get_header.cc: New
+
+ * mln/tests/io/magick/Makefile.am: New target.
+
+2013-04-29 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * tests/fun/Makefile.am: Remove duplicate subdir entry for v2v.
+
+2013-04-29 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Swap arguments in data::convert.
+
+ * mln/data/convert.hh: Here.
+
+ * apps/morphers/iz.cc,
+ * demos/inter_pixel/inter_pixel.cc,
+ * doc/examples/trash/graph.cc,
+ * doc/mln/convert.dox,
+ * mln/debug/superpose.hh,
+ * mln/morpho/watershed/superpose.hh,
+ * mln/world/binary_2d/subsample.hh,
+ * tests/data/compute_in_window.cc,
+ * tests/data/convert.cc: Update calls to data::convert.
+
+2013-04-29 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * doc/mln/io/io.dox: List the required dependencies for each I/O
+ type.
+
+2013-04-26 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/core/internal/image_base.hh: Add more documentation for
+ destroy() method.
+
+2013-04-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * doc/mln/topo/topo.dox: New. Introduce mathematical topology
+ module.
+
+2013-04-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add more "See also" statement in function documentation.
+
+ * mln/fun/v2b/always_false.hh,
+ * mln/fun/v2b/always_true.hh,
+ * mln/fun/v2b/lnot.hh,
+ * mln/fun/v2b/threshold_ge.hh,
+ * mln/fun/v2b/threshold_le.hh,
+ * mln/fun/v2v/abs.hh,
+ * mln/fun/v2v/all_to.hh,
+ * mln/fun/v2v/array.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/hsl_to_rgb.hh,
+ * mln/fun/v2v/id.hh,
+ * mln/fun/v2v/inc.hh,
+ * mln/fun/v2v/index_of_value.hh,
+ * mln/fun/v2v/linear.hh,
+ * mln/fun/v2v/mahalanobis.hh,
+ * mln/fun/v2v/norm.hh,
+ * mln/fun/v2v/projection.hh,
+ * mln/fun/v2v/qt_rgb_to_int_u.hh,
+ * mln/fun/v2v/rgb8_to_rgbn.hh,
+ * mln/fun/v2v/rgb_to_hsl.hh,
+ * mln/fun/v2v/rgb_to_int_u.hh,
+ * mln/fun/v2v/rgb_to_luma.hh,
+ * mln/fun/v2v/round.hh,
+ * mln/fun/v2v/round_sat.hh,
+ * mln/fun/v2v/saturate.hh,
+ * mln/fun/v2v/value_at_index.hh,
+ * mln/fun/v2v/wrap.hh,
+ * mln/fun/vv2b/eq.hh,
+ * mln/fun/vv2b/ge.hh,
+ * mln/fun/vv2b/gt.hh,
+ * mln/fun/vv2b/implies.hh,
+ * mln/fun/vv2b/le.hh,
+ * mln/fun/vv2b/lt.hh,
+ * mln/fun/vv2v/diff_abs.hh,
+ * mln/fun/vv2v/land.hh,
+ * mln/fun/vv2v/land_not.hh,
+ * mln/fun/vv2v/lor.hh,
+ * mln/fun/vv2v/lxor.hh,
+ * mln/fun/vv2v/max.hh,
+ * mln/fun/vv2v/min.hh,
+ * mln/fun/vv2v/vec.hh: Here.
+
+2013-04-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/make/relabelfun.hh: Fix bad variable replacement.
+
+2013-04-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * doc/Doxyfile.in: Enable BRIEF_MEMBER_DESC.
+
+2013-04-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * doc/split-examples.mk: Regen.
+
+2013-04-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/core/concept/function.hh: Make Function_vv2b inherit from
+ Function_vv2v.
+
+2013-04-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add function module in Milena documentation.
+
+ * doc/mln/fun/fun.dox: Add new documentation groups.
+
+ * doc/mln/main.dox: Include a figure of the function hierarchy.
+
+ * mln/fun/n2v/white_gaussian.hh,
+ * mln/fun/v2v/abs.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/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/qt_rgb_to_int_u.hh,
+ * mln/fun/v2v/rgb8_to_rgbn.hh,
+ * mln/fun/v2v/rgb_to_hsl.hh,
+ * mln/fun/v2v/rgb_to_int_u.hh,
+ * mln/fun/v2v/rgb_to_luma.hh,
+ * mln/fun/v2v/round.hh,
+ * mln/fun/v2v/round_sat.hh,
+ * mln/fun/v2v/saturate.hh,
+ * mln/fun/v2v/wrap.hh,
+ * mln/fun/v2w2v/all.hh,
+ * mln/fun/v2w2v/cos.hh,
+ * mln/fun/v2w_w2v/all.hh,
+ * mln/fun/v2w_w2v/norm.hh,
+ * mln/fun/vv2b/all.hh,
+ * mln/fun/vv2b/eq.hh,
+ * mln/fun/vv2b/ge.hh,
+ * mln/fun/vv2b/gt.hh,
+ * mln/fun/vv2b/implies.hh,
+ * mln/fun/vv2b/le.hh,
+ * mln/fun/vv2b/lt.hh: Move to their respective function group.
+
+2013-04-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * doc/mln/convert.dox: Fix a typo.
+
+2013-04-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * doc/Makefile.am: Do not regenerate non-generated images.
+
+2013-04-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a new figure in Milena documentation.
+
+ * doc/img/function_hierarchy.png,
+ * doc/img/src/function_hierarchy.dia: New.
+
+2013-04-25 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Move fun::i2v, fun::stat and fun::v2i in fun::v2v.
+
+ * mln/fun/i2v/all_to.hh,
+ * mln/fun/i2v/array.hh,
+ * mln/fun/i2v/value_at_index.hh,
+ * mln/fun/stat/mahalanobis.hh,
+ * mln/fun/v2i/index_of_value.hh,
+ * tests/fun/i2v/all_to.cc,
+ * tests/fun/i2v/array.cc,
+ * tests/fun/i2v/value_at_index.cc,
+ * tests/fun/stat/mahalanobis.cc,
+ * tests/fun/v2i/index_of_value.cc: Move...
+
+ * mln/fun/v2v/all_to.hh,
+ * mln/fun/v2v/array.hh,
+ * mln/fun/v2v/index_of_value.hh,
+ * mln/fun/v2v/mahalanobis.hh,
+ * mln/fun/v2v/value_at_index.hh,
+ * tests/fun/v2v/all_to.cc,
+ * tests/fun/v2v/array.cc,
+ * tests/fun/v2v/index_of_value.cc,
+ * tests/fun/v2v/mahalanobis.cc,
+ * tests/fun/v2v/value_at_index.cc,
+ * tests/fun/x2x/composed.cc,
+ * tests/fun/x2x/translation.cc: ... here.
+
+ * mln/fun/stat/all.hh,
+ * mln/fun/i2v/essential.hh,
+ * mln/fun/i2v/all.hh,
+ * mln/fun/v2i/all.hh,
+ * tests/fun/i2v/Makefile.am,
+ * tests/fun/stat/Makefile.am,
+ * tests/fun/v2i/Makefile.am: Remove.
+
+ * tests/fun/Makefile.am: Remove deprecated subdirs.
+
+ * tests/fun/v2v/Makefile.am: Add new targets.
+
+ * apps/papers/levillain.09.ismm/classif-graph.cc,
+ * doc/examples/graph-data.cc,
+ * doc/examples/split/graph-data-4.cc.raw,
+ * doc/examples/trash/graph.cc,
+ * doc/examples/trash/mk_graph.cc,
+ * doc/examples/trash/tuto_bis.cc,
+ * headers.mk,
+ * mln/accu/label_used.hh,
+ * mln/accu/stat/var.hh,
+ * mln/algebra/vec.hh,
+ * mln/core/image/edge_image.hh,
+ * mln/core/image/image1d.hh,
+ * mln/core/image/image2d.hh,
+ * mln/core/image/image3d.hh,
+ * mln/core/image/vertex_image.hh,
+ * mln/core/internal/labeled_image_base.hh,
+ * mln/core/routine/init.hxx,
+ * mln/core/site_set/p_array.hh,
+ * mln/core/window.hh,
+ * mln/data/transform.spe.hh,
+ * mln/fun/all.hh,
+ * mln/fun/essential.hh,
+ * mln/fun/x2x/translation.hh,
+ * mln/histo/point_from_value.hh,
+ * mln/labeling/colorize.hh,
+ * mln/labeling/mean_values.hh,
+ * mln/labeling/pack.hh,
+ * mln/labeling/relabel.hh,
+ * mln/make/edge_image.hh,
+ * mln/make/p_edges_with_mass_centers.hh,
+ * mln/make/p_vertices_with_mass_centers.hh,
+ * mln/make/relabelfun.hh,
+ * mln/make/voronoi.hh,
+ * mln/metal/vec.hh,
+ * mln/morpho/line_gradient.hh,
+ * mln/trait/ch_function_value.hh,
+ * mln/util/array.hh,
+ * mln/value/lut_vec.hh,
+ * mln/win/ball.hh,
+ * tests/algebra/h_mat.cc,
+ * tests/algebra/mat.cc,
+ * tests/algebra/vec2.cc,
+ * tests/core/image/edge_image.cc,
+ * tests/core/image/graph_image.cc,
+ * tests/core/image/imorph/labeled_image.cc,
+ * tests/core/image/line_graph_image.cc,
+ * tests/core/image/vertex_and_edge_image.cc,
+ * tests/core/image/vertex_image.cc,
+ * tests/core/other/graph_elt_neighborhood.cc,
+ * tests/core/other/graph_elt_window.cc,
+ * tests/core/other/point_set_compatibility.cc,
+ * tests/core/site_set/p_vertices.cc,
+ * tests/draw/graph.cc,
+ * tests/graph/labeling.cc,
+ * tests/make/p_edges_with_mass_centers.cc,
+ * tests/make/p_vertices_with_mass_centers.cc,
+ * tests/morpho/artificial_line_graph_image_wst.cc,
+ * tests/morpho/closing/area_on_vertices.cc,
+ * tests/morpho/graph_image_morpho.cc,
+ * tests/morpho/graph_image_wst.cc,
+ * tests/morpho/lena_line_graph_image_wst1.cc,
+ * tests/morpho/lena_line_graph_image_wst2.cc,
+ * tests/morpho/line_graph_image_morpho.cc,
+ * tests/morpho/line_graph_image_wst.cc,
+ * tests/morpho/opening/area_on_vertices.cc,
+ * tests/pw/image.cc,
+ * tests/unit_test/unit-tests.mk,
+ * tools/area_flooding.cc: Rename fun::i2v, fun::stat and fun::v2i
+ namespaces to v2v.
+
+2013-04-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/core/concept/function.hh: Document function interface for
+ each concept.
+
+2013-04-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/core/image/image2d_ffmpeg.hh: Fix compilation issues.
+
+2013-04-18 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/core/image/image2d_ffmpeg.hh: Enable fastest access.
+
+2013-04-18 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/core/image/image2d_ffmpeg.hh: New image type for ffmpeg frames.
+
+2013-04-18 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add support for graylevel images in labeling::blobs.
+
+ * mln/canvas/labeling/blobs.hh: Add a fastest version and make it
+ support graylevel images.
+
+ * mln/labeling/blobs.hh,
+ * mln/labeling/blobs_and_compute.hh: Add support for graylevel images.
+
+ * tests/labeling/blobs.cc,
+ * tests/labeling/blobs_and_compute.cc: Add a test for graylevel images.
+
+ * tests/labeling/Makefile.am: Remove all_blobs target.
+
+ * mln/labeling/all_blobs.hh,
+ * tests/labeling/all_blobs.cc: Remove.
+
+2013-04-18 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/core/internal/pixel_impl.hh: Add change_offset().
+
+2013-04-17 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add a labeling routine working on grayscale images.
+
+ * mln/canvas/labeling/blobs.hh,
+ * mln/labeling/blobs.hh,
+ * mln/labeling/blobs_and_compute.hh: Introduce a new functor
+ method handles().
+
+ * tests/labeling/Makefile.am: Add target.
+
+ * mln/labeling/all_blobs.hh,
+ * tests/labeling/all_blobs.cc: New.
+
+2013-04-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Kill Doxygen warnings.
+
+ * mln/data/convert.hh: Add a missing \overload.
+
+ * mln/value/qt/rgb32.hh: Do not force autolink.
+
+2013-04-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Specify conversion formulas for rgb to integer conversion
+ functions.
+
+ * mln/fun/v2v/rgb_to_int_u.hh,
+ * mln/fun/v2v/rgb_to_luma.hh: Here.
+
+2013-04-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Create sub-modules in image geometry module.
+
+ * doc/mln/geom/geom.dox: Add cropping sub-module.
+
+ * doc/mln/transformation.dox: Add new sub-modules.
+
+ * mln/binarization/threshold.hh: Move to conversion module.
+
+ * mln/geom/crop.hh,
+ * mln/geom/crop_without_localization.hh,
+ * mln/geom/horizontal_symmetry.hh,
+ * mln/geom/rotate.hh,
+ * mln/geom/translate.hh,
+ * mln/geom/vertical_symmetry.hh,
+ * mln/registration/icp.hh,
+ * mln/subsampling/antialiased.hh,
+ * mln/upscaling/art/scale2x.hh,
+ * mln/upscaling/art/scale3x.hh: Move to newly created sub-modules.
+
+2013-04-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * doc/mln/convert.dox: Fix typos.
+
+2013-04-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add documentation about image conversions.
+
+ * doc/mln/convert.dox: Add examples and explanations.
+
+ * mln/convert/from_to.hh,
+ * mln/convert/to.hh,
+ * mln/convert/to_image.hh,
+ * mln/convert/to_p_array.hh,
+ * mln/convert/to_p_set.hh,
+ * mln/convert/to_qimage.hh,
+ * mln/convert/to_qimage_nocopy.hh,
+ * mln/convert/to_upper_window.hh,
+ * mln/convert/to_window.hh,
+ * mln/data/convert.hh,
+ * mln/fun/v2v/convert.hh,
+ * mln/fun/v2v/hsl_to_rgb.hh,
+ * mln/fun/v2v/qt_rgb_to_int_u.hh,
+ * mln/fun/v2v/rgb8_to_rgbn.hh,
+ * mln/fun/v2v/rgb_to_hsl.hh,
+ * mln/fun/v2v/rgb_to_int_u.hh,
+ * mln/fun/v2v/rgb_to_luma.hh: Add to conversion module.
+
+2013-04-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/data/convert.hh: Introduce a new overload taking a
+ conversion function as parameter.
+
+2013-04-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add references to from_to_ overloads in documentation.
+
+ * mln/algebra/h_mat.hh,
+ * mln/algebra/quat.hh,
+ * mln/algebra/vec.hh,
+ * mln/convert/from_to.hh,
+ * mln/convert/impl/from_double_to_value.hh,
+ * mln/convert/impl/from_float_to_value.hh,
+ * mln/convert/impl/from_unsigned_to_value.hh,
+ * mln/core/alias/neighb2d.hh,
+ * mln/core/alias/neighb3d.hh,
+ * mln/core/alias/window1d.hh,
+ * mln/core/alias/window2d.hh,
+ * mln/core/alias/window3d.hh,
+ * mln/core/concept/gpoint.hh,
+ * mln/core/image/#image2d#,
+ * mln/core/image/image1d.hh,
+ * mln/core/image/image2d.hh,
+ * mln/core/image/image3d.hh,
+ * mln/core/mixed_neighb.hh,
+ * mln/core/neighb.hh,
+ * mln/core/w_window.hh,
+ * mln/fun/i2v/array.hh,
+ * mln/histo/array.hh,
+ * mln/util/array.hh,
+ * mln/util/object_id.hh,
+ * mln/value/hsl.hh,
+ * mln/value/int_u.hh,
+ * mln/value/label.hh,
+ * mln/value/qt/rgb32.hh,
+ * mln/value/rgb.hh: Add to from_to_ group.
+
+2013-04-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Explain how to iterate over an image in tutorial.
+
+ * doc/examples/split/tuto3_rw_image-3.cc.raw,
+ * doc/examples/split/tuto3_rw_image-4.cc.raw,
+ * doc/examples/split/tuto3_rw_image-5.cc.raw,
+ * doc/examples/split/tuto3_rw_image-6.cc.raw,
+ * doc/examples/split/tuto3_rw_image-7.cc.raw,
+ * doc/examples/split/tuto3_rw_image-8.cc.raw: Regen.
+
+ * doc/examples/tuto3_rw_image.cc: Add an example with iterators.
+
+ * doc/tutorial.tex: Add more explanations on iterators.
+
+2013-04-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Introduce image transformation module in documentation.
+
+ * doc/mln/main.dox: Create new group.
+
+ * mln/geom/crop.hh,
+ * mln/geom/crop_without_localization.hh,
+ * mln/geom/horizontal_symmetry.hh,
+ * mln/geom/rotate.hh,
+ * mln/geom/translate.hh,
+ * mln/geom/vertical_symmetry.hh,
+ * mln/registration/icp.hh,
+ * mln/subsampling/antialiased.hh,
+ * mln/upscaling/art/scale2x.hh,
+ * mln/upscaling/art/scale3x.hh: move to this new group.
+
+2013-04-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Make template parameter name more consistant with naming
+ conventions.
+
+ * mln/core/image/image1d.hh,
+ * mln/core/image/image2d.hh,
+ * mln/core/image/image3d.hh: Here.
+
+2013-04-17 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add data::fill_without_localization.
+
+ * mln/data/fill_without_localization.hh,
+ * tests/data/fill_without_localization.cc: New.
+
+ * tests/data/Makefile.am: Add a new target.
+
+ 2013-09-02 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add parentheses around complex operands of operator `|'.
+
+ * apps/mesh-segm-skel/mesh-complex-max-curv-1-collapse.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-2-collapse.cc:
+ Here, as suggested by g++ 4.7.
+
+ 2013-09-02 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Do not run test-mixed in Milena apps with the `check' target.
+
+ * apps/generic-skel/test-mixed.in,
+ * apps/mesh-segm-skel/test-mixed.in:
+ Add a `-wadgmm-2010' suffix to saved images to distinguish them
+ from outputs of other tests.
+ * apps/generic-skel/Makefile.am,
+ * apps/mesh-segm-skel/Makefile.am
+ (MOSTLYCLEANFILES): Adjust.
+ Add files generated by disabled test cases.
+ (generated_checked_tests): New.
+ Contain all generated checked tests.
+ (generated_tests): Set it to contain all test (checked
+ automatically and run manually).
+ (TESTS): Set it to $(generated_checked_tests).
+ Aesthetic changes.
+
+ 2013-08-31 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Aesthetic changes in Milena apps Makefiles.
+
+ * apps/generic-skel/Makefile.am,
+ * apps/mesh-segm-skel/Makefile.am:
+ Here.
+
+ 2013-08-31 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Factor the generation of tests in Milena's apps/mesh-segm-skel.
+
+ * apps/mesh-segm-skel/Makefile.am: Here.
+
+ 2013-08-31 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Distribute sources of generated tests in Milena apps.
+
+ * apps/generic-skel/Makefile.am (EXTRA_DIST): Add test-mixed.in.
+ * apps/mesh-segm-skel/Makefile.am (EXTRA_DIST): Add
+ test-mesh-complex-2-collapse.in,
+ test-mesh-complex-max-curv-2-collapse.in,
+ test-mesh-complex-max-curv-1-collapse.in and
+ test-mixed.in.
+
+ 2013-08-31 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Do not install Milena apps.
+
+ * apps/generic-skel/Makefile.am,
+ * apps/mesh-segm-skel/Makefile.am:
+ s/bin_PROGRAMS/noinst_PROGRAMS/.
+
+ 2013-08-31 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix the distribution.
+
+ * apps/generic-skel/Makefile.am (noinst_HEADERS):
+ Add image3d-skel.hh.
+
+ 2013-08-31 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix a Makefile inclusion in Milena's apps/generic-skel.
+
+ * apps/generic-skel/Makefile.am: Include
+ $(top_srcdir)/milena/common.mk.
+
+ 2013-08-30 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Simplify even more Milena Makefiles thanks to AM_DEFAULT_SOURCE_EXT.
+
+ * apps/generic-skel/Makefile.am,
+ * apps/mesh-segm-skel/Makefile.am,
+ * tests/io/vtk/Makefile.am,
+ * tests/transform/Makefile.am,
+ * tools/Makefile.am:
+ Here.
+
+ 2013-08-30 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Regen images of the Milena documentation.
+
+ * doc/figures/extend-1.ppm,
+ * doc/figures/extend-2.ppm,
+ * doc/figures/extend-3.ppm,
+ * doc/figures/extend-4.ppm,
+ * doc/figures/extend-5.ppm,
+ * doc/figures/fill-1.ppm,
+ * doc/figures/fill-2.ppm,
+ * doc/figures/fill-imageif-cfun-1.ppm,
+ * doc/figures/fill-subdomain-1.pbm,
+ * doc/figures/fill-subdomain-2.ppm,
+ * doc/figures/fill-subdomain-3.ppm,
+ * doc/figures/fill-subdomain-4.ppm,
+ * doc/figures/ima2d-rot-1.ppm,
+ * doc/figures/ima2d-rot-2.ppm,
+ * doc/figures/ima_save.pbm,
+ * doc/figures/labeling-compute-1.pbm,
+ * doc/figures/labeling-compute-2.ppm,
+ * doc/figures/logical-not-1.pbm,
+ * doc/figures/logical-not-2.pbm,
+ * doc/figures/logical-not-3.pbm,
+ * doc/figures/tuto2_first_image-1.pbm,
+ * doc/figures/tuto3_colorize-1.pgm,
+ * doc/figures/tuto3_colorize-2.ppm,
+ * doc/figures/tuto3_rw_image-1.ppm,
+ * doc/figures/tuto3_rw_image-2.ppm,
+ * doc/figures/tuto3_rw_image-3.ppm,
+ * doc/figures/tuto4_genericity_and_algorithms-1.ppm,
+ * doc/figures/tuto4_genericity_and_algorithms-2.ppm,
+ * doc/figures/tuto4_genericity_and_algorithms-3.pbm,
+ * doc/figures/tuto4_genericity_and_algorithms-4.ppm,
+ * doc/figures/tuto4_genericity_and_algorithms-5.ppm,
+ * doc/figures/tuto4_genericity_and_algorithms-6.ppm:
+ Regen.
+
+ 2013-08-30 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Make remaining Milena copyright headers uniform.
+
+ * apps/generic-skel/image2d-skel-unconstrained.cc,
+ * apps/generic-skel/image2d-skel-with-end-points.cc,
+ * apps/mesh-segm-skel/mesh-complex-2-collapse.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-1-collapse.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-2-collapse.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-extrema.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-skel.cc,
+ * apps/mesh-segm-skel/mesh-complex-pinv-curv-segm.cc,
+ * apps/mesh-segm-skel/mesh-complex-pinv-curv-skel.cc,
+ * apps/mesh-segm-skel/off-to-vtk-bin.cc,
+ * mln/topo/is_not_1d_isthmus.hh,
+ * mln/topo/is_not_end_point.hh:
+ Here.
+
+ 2013-08-30 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Disable tests/value/int_u32 in Milena.
+
+ * tests/value/Makefile.am: Here.
+
+ 2013-08-29 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix 3D simple point generators in Milena tools.
+
+ * tools/Makefile.am: Fix build rules of optional programs.
+ * tools/simple_point3d_lut_tbb.cc: Rename as...
+ * tools/simple_point_3d_lut_tbb.cc: ...this.
+ s/point_3d/point3d/.
+
+ 2013-08-29 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Kill warnings about unused variables.
+
+ * mln/io/vtk/save.hh,
+ * tools/connectivity_numbers_3d_tbb.hh,
+ * tools/simple_point3d_lut_tbb.hh:
+ Here.
+
+ 2013-08-29 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Kill warnings about signed vs unsigned values.
+
+ * mln/topo/is_not_1d_isthmus.hh
+ (mln::topo::is_not_1d_isthmus<I, N>::operator()): Here.
+
+ 2013-08-29 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Catch up with the current interface of breadth_first_thinning.
+
+ * apps/morphers/recorder-bft.cc: Here.
+
+ 2013-08-29 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Catch up with the current interface of mln::image3d.
+
+ * apps/generic-skel/image3d-skel-unconstrained.cc,
+ * apps/generic-skel/image3d-skel.hh:
+ Here.
+
+ 2013-08-29 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Replace meyer_wst with watershed::flooding.
+
+ * apps/mesh-segm-skel/mesh-complex-pinv-curv-segm.cc: Here.
+
+ 2013-08-29 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Convert remaining Milena code to mln_trace.
+
+ * doc/examples/devel/facade.cc.raw,
+ * doc/examples/devel/impl.cc.raw,
+ * mln/io/vtk/save.hh,
+ * mln/topo/skeleton/breadth_first_thinning.hh,
+ * mln/topo/skeleton/priority_driven_thinning.hh,
+ * new-header:
+ Here.
+
+ 2013-08-29 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix the use of Pi in Milena's apps/mesh-segm-skel.
+
+ * apps/mesh-segm-skel/mesh-complex-max-curv-extrema.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-segm.cc,
+ * apps/mesh-segm-skel/mesh-complex-pinv-curv-segm.cc,
+ * apps/mesh-segm-skel/mesh-complex-pinv-curv-skel.cc:
+ Here.
+
+ 2013-08-29 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix header inclusions in Milena's apps/mesh-segm-skel.
+
+ * apps/mesh-segm-skel/mesh-complex-max-curv-1-collapse.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-2-collapse.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-extrema.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-skel.cc,
+ * apps/mesh-segm-skel/mesh-complex-pinv-curv-segm.cc,
+ * apps/mesh-segm-skel/mesh-complex-pinv-curv-skel.cc:
+ Here.
+
+ 2012-02-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add tests to generate figures for the WADGMM 2010/LNCS submission.
+
+ * apps/generic-skel/image2d-skel-unconstrained.cc,
+ * apps/generic-skel/image2d-skel-with-end-points.cc,
+ * apps/generic-skel/image3d-skel-unconstrained.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-1-collapse.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-2-collapse.cc,
+ * apps/mesh-segm-skel/mesh-complex-pinv-curv-skel.cc:
+ Display the size of the input.
+ Time the thinning step.
+ * milena/apps/generic-skel/test-mixed.in,
+ * milena/apps/mesh-segm-skel/test-mixed.in:
+ New.
+ * apps/generic-skel/Makefile.am (generated_tests): Add test-mixed.
+ (test-mixed): New target.
+ (check-mixed): New (phony) target.
+ * apps/mesh-segm-skel/Makefile.am: Likewise.
+ ($(generated_tests)): New target.
+ (AM_CPPFLAGS): Add -I$(top_builddir)/milena so that
+ mln/version.hh, which is a generated header, can be found by the
+ compiler.
+
+ 2011-06-13 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Introduce a no-constraint functor to replace fun::p2b::tautology.
+
+ * mln/fun/p2b/antilogy.hh,
+ * mln/fun/p2b/tautology.hh:
+ Do not include mln/core/alias/point2d.hh.
+ * mln/topo/no_constraint.hh: New file.
+ * mln/topo/skeleton/breadth_first_thinning.hh,
+ * mln/topo/skeleton/priority_driven_thinning.hh:
+ Use mln::topo::no_constraint instead of mln::fun::p2b::tautology.
+ Do not include the standard header `algorithm'.
+ * headers.mk, tests/unit_test/unit-tests.mk: Regen.
+
+ 2011-07-13 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Factor code of 2D skeletonizations in apps/generic-skel/.
+
+ * mln/topo/is_not_end_point.hh: s/nbh/nbh_fg/.
+ (is_not_end_point<I, N>::is_not_end_point(const Neighborhood<N>&)):
+ New ctor.
+ (is_not_end_point<I, N>::set_image): New method.
+ (is_not_end_point<I, N>::ima_): Turn this reference into a pointer.
+ Adjust.
+ * mln/topo/is_simple_point2d.hh
+ (mln::topo::is_simple_point2d<I, N>::operator())
+ * mln/topo/detach_point.hh
+ (mln::topo::detach_point<I>::operator()):
+ Add preconditions.
+ * apps/generic-skel/image2d-skel-with-end-points.cc:
+ Use `mln::topo::is_simple_point2d' and `mln:: topo::detach_point'
+ from mln/topo/, instead of `is_simple_2d' and `detach' from
+ image2d-skel.hh
+ * apps/generic-skel/image2d-skel-unconstrained.cc: Likewise.
+ Remove the (lack of) constraint, as
+ mln::topo::skeleton::breadth_first_thinning already takes care of
+ this.
+ * apps/generic-skel/image2d-skel.hh: Remove.
+ * apps/generic-skel/Makefile.am
+ (image2d_skel_unconstrained_SOURCES)
+ (image2d_skel_with_end_points_SOURCES):
+ Remove image2d-skel.hh.
+
+ 2011-07-13 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Misc changes in apps/generic-skel/ and tools/.
+
+ * apps/generic-skel/image3d-skel-unconstrained.cc:
+ Remove a useless header inclusion.
+ * apps/generic-skel/image3d-skel-with-end-points.cc:
+ Fix a comment.
+ * tools/compute_local_configurations.cc:
+ Add a comment.
+ * tools/connectivity_numbers_3d.hh: Add a FIXME.
+
+ 2011-07-13 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Exercise breadth-first thinning with predicate is_not_1d_isthmus.
+
+ * apps/generic-skel/image3d-skel-with-1d-isthmuses.cc: New.
+ * apps/generic-skel/Makefile.am (bin_PROGRAMS):
+ Add image3d-skel-with-1d-isthmuses.
+ (image3d_skel_with_1d_isthmuses_SOURCES): New.
+ (TESTS): Add image3d-skel-with-1d-isthmuses.
+ (MOSTLYCLEANFILES): Add
+ image3d-skel-with-1d-isthmuses-input.raw,
+ image3d-skel-with-1d-isthmuses-input.vtk,
+ image3d-skel-with-1d-isthmuses-skel.raw and
+ image3d-skel-with-1d-isthmuses-skel.vtk.
+
+ 2011-07-13 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add a non 1D isthmus predicate for (2D and 3D) binary images.
+
+ * mln/topo/is_not_1d_isthmus.hh: New.
+ * headers.mk, tests/unit_test/unit-tests.mk: Regen.
+
+ 2011-07-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Check the consistency of tools/simple_point3d_lut_26_6.hh.
+
+ * tools/simple_point3d_lut_26_6.cc: New.
+ * tools/test_simple_point3d_lut_26_6.cc: New.
+ * tools/tools.mk (AM_CPPFLAGS): Add -I$(top_builddir)/milena.
+ * tools/Makefile.am (noinst_LTLIBRARIES): New.
+ Add libsimple_point3d_lut_26_6.la.
+ (libsimple_point3d_lut_26_6_la_SOURCES): New.
+ (EXTRA_PROGRAMS): Add test_simple_point3d_lut_26_6.
+ (test_simple_point3d_lut_26_6_SOURCES)
+ (test_simple_point3d_lut_26_6_LDADD):
+ New.
+
+ 2011-07-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix and improve the (fast) computation of 2D connectivity numbers.
+
+ * mln/topo/is_simple_2d.hh (mln::connectivity_number_2d): Create
+ the configuration number by considering that the first (resp.
+ last) neighbors (in the forward browsing order) represent the
+ least (resp. most) significant bits of the configuration number,
+ as does the algorithm that computed the 8-c and 4-c LUTs (arrays
+ mln::connectivity_number_c8 and mln::connectivity_number_c4).
+ * mln/topo/connectivity_number_2d.hh: New.
+ * mln/topo/is_simple_point2d.hh: Fix dates in copyright header.
+ * tests/topo/connectivity_numbers_2d.cc: New.
+ * tests/topo/Makefile.am (check_PROGRAMS):
+ Add connectivity_numbers_2d.
+ (connectivity_numbers_2d_SOURCES): New.
+
+ 2011-07-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add more tests.
+
+ * tests/core/alias/dpoint2d.cc: Exercise the substraction of a
+ dpoint2d from a point2d.
+ * tests/core/alias/neighb2d.cc: New.
+ * tests/core/alias/Makefile.am (check_PROGRAMS): Add neighb2d.
+ (neighb2d_SOURCES): New.
+ * tests/io/dump/dump.cc: Exercise mln::io::dump::load and
+ mln::io::dump::save with 3D binary images.
+ * tests/io/dump/Makefile.am (MOSTLYCLEANFILES):
+ Add dump-bool-3d.dump
+ * tests/value/int_u32.cc: New test (known to fail).
+ * tests/value/Makefile.am (check_PROGRAMS): Add int_u32.
+ (int_u32_SOURCES): New.
+ (XFAIL_TESTS): New.
+ Add int_u32.
+
+ 2011-07-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * apps/generic-skel/image3d-skel.hh: Add `inline' qualifiers.
+
+ 2011-07-11 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Introduce a better VTK output routine in apps/generic-skel.
+
+ * apps/generic-skel/image3d-skel.hh (save_vtk_polyhedrons):
+ New function.
+ Use it...
+ * apps/generic-skel/image3d-skel-unconstrained.cc,
+ * apps/generic-skel/image3d-skel-with-end-points.cc:
+ ...here, instead of save_vtk_polygons.
+
+ 2011-07-11 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add a VTK output routine in apps/generic-skel.
+
+ * apps/generic-skel/image3d-skel.hh: Aesthetic changes.
+ (save_vtk_polygons): New function.
+ Use it...
+ * apps/generic-skel/image3d-skel-unconstrained.cc,
+ * apps/generic-skel/image3d-skel-with-end-points.cc:
+ ...here, to save images in VTK format.
+ * apps/generic-skel/Makefile.am (MOSTLYCLEANFILES):
+ Add image3d-skel-unconstrained-input.vtk,
+ image3d-skel-unconstrained-skel.vtk,
+ image3d-skel-with-end-points-input.vtk and
+ image3d-skel-with-end-points-skel.vtk,
+
+ 2011-07-11 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Use package metadata macros instead of hard-coded strings in I/Os.
+
+ * mln/io/fld/write_header.hh (mln::io::fld::write_header)
+ * mln/io/off/save.hh
+ (mln::io::off::internal::off_saver<I, E>::operator())
+ * mln/io/pnm/save_header.hh (mln::io::pnm::save_header)
+ * mln/io/vtk/save.hh
+ (mln::io::vtk::internal::vtk_saver<I, E>::operator()):
+ Here.
+ * mln/version.hh.in (OLN_PACKAGE_URL, OLN_PACKAGE_AUTHORS):
+ New macros.
+
+ 2011-07-11 Roland Levillain <roland(a)lrde.epita.fr>
+
+ No longer consider mln/version.hh.in as handled by autoheader.
+
+ * mln/version.hh.in (OLN_PACKAGE_BUGREPORT, OLN_PACKAGE_NAME)
+ (OLN_PACKAGE_STRING, OLN_PACKAGE_VERSION): Define these macros
+ using "@PACKAGE_BUGREPORT@", "@PACKAGE_NAME@",
"@PACKAGE_STRING@"
+ and "@PACKAGE_VERSION@".
+
+ 2011-06-16 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Set connectivity number functions when building is_simple_point3d.
+
+ * mln/topo/is_simple_point3d.hh
+ (mln::topo::is_simple_point3d<I, N>::init_): New method.
+ (connectivity_number_fun_t): New (private) typedef.
+ (connectivity_number_fg, connectivity_number_bg):
+ New (private) members.
+ Initialize them...
+ (mln::topo::is_simple_point3d<I, N>::is_simple_point3d):
+ ...from the ctors, using init_().
+
+ 2011-06-16 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix, factor and improve the (exact) simple 3D point criterion.
+
+ * mln/topo/is_simple_point3d.hh
+ (mln::topo::is_simple_point3d<I, N>::operator()):
+ Honor the neighborhoods.
+ Use the new routines to compute the connectivity numbers instead
+ of computing them directly.
+
+ 2011-06-16 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add routines to compute 3D connectivity numbers.
+
+ * mln/topo/connectivity_number_3d.hh: New.
+ * headers.mk, tests/unit_test/unit-tests.mk: Regen.
+
+ 2011-06-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Improve the generation of simple 3D point look-up tables.
+
+ * tools/gen_cxx_lut: New script.
+ * tools/Makefile.am (EXTRA_DIST): Add gen_cxx_lut.
+ (simple_point3d_lut_26_6.hh): Add a dependency on
+ $(srcdir)/gen_cxx_lut.
+ Use gen_cxx_lut to generate this target.
+
+ 2011-06-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ tools: s/simple_point_3d/simple_point3d/.
+
+ * tools/simple_point_3d_lut.cc,
+ * tools/simple_point_3d_lut.hh,
+ * tools/simple_point_3d_lut_tbb.hh:
+ Rename as...
+ * tools/simple_point3d_lut.cc,
+ * tools/simple_point3d_lut.hh,
+ * tools/simple_point3d_lut_tbb.hh:
+ ...these.
+ * tools/Makefile.am: s/simple_point_3d/simple_point3d/.
+
+ 2011-06-14 Roland Levillain <roland(a)lrde.epita.fr>
+
+ New app: apps/generic-skel/image3d-skel-unconstrained.
+
+ * apps/generic-skel/image3d-skel-unconstrained.cc: New.
+ * apps/generic-skel/Makefile.am (bin_PROGRAMS):
+ Add image3d-skel-unconstrained.
+ (image3d_skel_unconstrained_SOURCES): New.
+ (TESTS): Rename as...
+ (generated_tests): New variable.
+ ($(generated_tests)): New target.
+ Supersede...
+ (test-image2d-skel-unconstrained test-image2d-skel-with-end-points):
+ ...this target.
+ (CLEANFILES): Set to $(generated_tests).
+ (TESTS): Add $(generated_tests).
+ Add image3d-skel-unconstrained and image3d-skel-with-end-points.
+ (MOSTLYCLEANFILES): Add image3d-skel-unconstrained-input.raw and
+ image3d-skel-unconstrained-skel.raw.
+
+ 2011-06-14 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Isolate reusable code from image3d-skel-with-end-points.
+
+ * apps/generic-skel/image3d-skel-with-end-points.cc
+ (load_pgm_3d, save_raw_3d, subsampling_3d, draw_torus):
+ Move functions...
+ * apps/generic-skel/image3d-skel.hh: ...here (new file).
+ (make_triple_torus): New function.
+ * apps/generic-skel/Makefile.am (noinst_HEADERS):
+ Add image3d-skel.hh.
+
+ 2011-06-14 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add a 3D volume of the Stanford bunny.
+
+ * img/bunny.pgm: New.
+ From Benjamin Raynal <raynalb(a)esiee.fr>fr>.
+ Document it...
+ * img/README: ...here.
+ * Makefile.am (dist_img_DATA): Add img/bunny.pgm.
+
+ 2011-06-01 Roland Levillain <roland(a)lrde.epita.fr>
+
+ New application computing a 3D skeleton preserving end points.
+
+ * apps/generic-skel/image3d-skel-with-end-points.cc: New.
+ * apps/generic-skel/Makefile.am (bin_PROGRAMS):
+ Add image3d_skel_with_end_points.
+ (image3d_skel_with_end_points): New.
+ (MOSTLYCLEANFILES): Add image3d-skel-with-end-points-input.raw
+ and image3d-skel-with-end-points-skel.raw.
+
+ 2011-05-31 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Regen Milena's Makefile helpers.
+
+ * headers.mk, tests/unit_test/unit-tests.mk: Here.
+
+ 2011-05-31 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add a first version of a simple 3D point predicate.
+
+ * mln/topo/is_simple_point3d.hh: New.
+
+ 2011-05-31 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Generate a simple 3D points look-up table for the (26,6)-adjacency.
+
+ * tools/Makefile.am (CLEANFILES): New.
+ Add simple_point_3d_lut_26_6.txt and simple_point_3d_lut_26_6.hh.
+ (simple_point_luts): New (phony) target.
+ (simple_point_3d_lut_26_6.txt)
+ (simple_point_3d_lut_26_6.hh):
+ New targets.
+
+ 2011-05-31 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Parallel computation of simple 3D point look-up tables.
+
+ * tools/simple_point_3d_lut_tbb.hh,
+ * tools/simple_point_3d_lut_tbb.cc:
+ New.
+ * tools/Makefile.am (noinst_HEADERS): Add simple_point_3d_lut_tbb.hh.
+ (EXTRA_PROGRAMS): Add simple_point_3d_lut_tbb.
+ (simple_point_3d_lut_tbb_SOURCES)
+ (simple_point_3d_lut_tbb_CPPFLAGS)
+ (simple_point_3d_lut_tbb_LDFLAGS):
+ New.
+
+ 2011-05-31 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Sequential computation of simple 3D points look-up tables.
+
+ * tools/simple_point_3d_lut.hh,
+ * tools/simple_point_3d_lut.cc:
+ New.
+ * tools/Makefile.am (noinst_HEADERS): Add simple_point_3d_lut.hh.
+ (EXTRA_PROGRAMS): Add simple_point_3d_lut.
+ (simple_point_3d_lut_SOURCES): New.
+
+ 2013-08-28 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Improve mln::topo::is_simple_2d_t.
+
+ * mln/topo/is_simple_2d.hh
+ (mln::topo::is_simple_2d_t<N>::nb_connectivity2d):
+ (mln::topo::is_simple_2d_t<N>::nb_connectivity2d__):
+ Use a more reliable method to identify the neighborhood.
+ * mln/topo/is_simple_point2d.hh: Typo in comment.
+
+ 2013-08-28 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Reintroduce is_simple_2d and connectivity_number_2d into mln::topo.
+
+ * mln/topo/is_simple_2d.hh (mln::topo::is_simple_2d)
+ (mln::topo::connectivity_number_2d):
+ New.
+ * apps/generic-skel/image2d-skel.hh (is_simple_2d::operator()):
+ Adjust.
+
+ 2011-05-31 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Factor connectivity_numbers_3d and connectivity_numbers_3d_tbb.
+
+ * tools/connectivity_numbers_3d.hh (connectivity_numbers_3d):
+ Reindent.
+ (connectivity_number_3d__6_26_one)
+ (connectivity_number_3d__6p_18_one)
+ (connectivity_number_3d__18_6p_one):
+ Fix types: s/config_3d_t/conn_number_t/.
+ (usage): New function.
+ (display_connectivity_numbers): New function.
+ Use it to simplify...
+ * tools/connectivity_numbers_3d.cc,
+ * tools/connectivity_numbers_3d_tbb.cc (main): ...these functions.
+ (usage): Remove.
+ * tools/compute_local_configurations.cc,
+ * tools/connectivity_numbers_3d_tbb.hh:
+ Add a comment.
+
+ 2011-05-25 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add a parallel version of connectivity_numbers_3d using TBB.
+
+ * tools/connectivity_numbers_3d_tbb.hh,
+ * tools/connectivity_numbers_3d_tbb.cc:
+ New.
+ * tools/Makefile.am (CPPFLAGS_TBB, LDFLAGS_TBB): New.
+ (extra): New (phony) target.
+ (EXTRA_PROGRAMS)
+ (connectivity_numbers_3d_tbb_SOURCES)
+ (connectivity_numbers_3d_tbb_CPPFLAGS)
+ (connectivity_numbers_3d_tbb_LDFLAGS):
+ New variables.
+
+ 2011-05-25 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Make tools/connectivity_numbers_3d thread-safe.
+
+ * tools/connectivity_numbers_3d.hh
+ (connectivity_number_3d__6_26_one)
+ (connectivity_number_3d__26_6_one)
+ (connectivity_number_3d__6p_18_one)
+ (connectivity_number_3d__18_6p_one):
+ Create and use a copy of the neighborhood instead of using a
+ shared, thread-unsafe object.
+ Aesthetic changes.
+ * tools/connectivity_numbers_3d.cc: Aesthetic changes.
+
+ 2011-05-25 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Factor soon-to-be shared components of connectivity_numbers_3d.
+
+ * tools/connectivity_numbers_3d.cc: Move most of the contents of
+ this file into..
+ * tools/connectivity_numbers_3d.hh: ...this (new) file.
+ * tools/Makefile.am (connectivity_numbers_3d_SOURCES):
+ Add connectivity_numbers_3d.hh
+
+ 2011-05-24 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add a tool to compute 3D connectivity numbers.
+
+ * tools/connectivity_numbers_3d.cc: New.
+ * tools/Makefile.am (noinst_PROGRAMS):
+ Add connectivity_numbers_3d.
+ (connectivity_numbers_3d_SOURCES): New.
+
+ 2011-04-21 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have tools/compute_local_configurations compile.
+
+ * tools/compute_local_configurations.cc: Add missing header
+ inclusion (mln/value/int_u8.hh).
+ Add copyright notice.
+ * tools/Makefile.am (noinst_PROGRAMS): Add
+ compute_local_configurations.
+
+ 2011-04-21 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Import the computation of (2D) connectivity numbers from sandbox.
+
+ * tools/compute_local_configurations.cc: New.
+ Imported from
+ sandbox/inim/2009/ocr/compute_local_configurations.cc.
+
+ 2010-08-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ New apps on generic skeletonization.
+
+ * apps/generic-skel/image2d-skel-unconstrained.cc,
+ * apps/generic-skel/image2d-skel-with-end-points.cc,
+ * apps/generic-skel/image2d-skel.hh:
+ New.
+ * apps/generic-skel/test-image2d-skel-unconstrained.in,
+ * apps/generic-skel/test-image2d-skel-with-end-points.in:
+ New tests.
+ * apps/generic-skel/Makefile.am: New.
+ * apps/Makefile.am (SUBDIRS): Add generic-skel.
+
+ 2011-04-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ apps/graph-morpho: Catch up with current mln::topo::is_n_face.
+
+ * apps/graph-morpho/morpho.hh
+ (trait::graph< mln::complex_image<1, G, V> >::is_vertex)
+ (trait::graph< mln::complex_image<1, G, V> >::is_edge):
+ Fix the return type.
+
+ 2011-03-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Use priority-driven thinning in collapse-based thinnings apps.
+
+ * apps/mesh-segm-skel/mesh-complex-max-curv-2-collapse.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-1-collapse.cc:
+ Here.
+
+ 2011-03-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Simplify curvature-based thinnings using 2- and 1-collapses apps.
+
+ * apps/mesh-segm-skel/mesh-complex-max-curv-2-collapse.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-1-collapse.cc:
+ Here.
+
+ 2011-03-14 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Miscellaneous changes in mesh-related operations.
+
+ * mln/topo/is_simple_cell.hh: Add static preconditions.
+ Reduce the number of pointer manipulations.
+ Aesthetic changes.
+ * mln/topo/detach_cell.hh: Move a static precondition.
+ Aesthetic changes.
+ * mln/io/vtk/save.hh: Cosmetic changes.
+
+ 2011-03-14 Roland Levillain <roland(a)lrde.epita.fr>
+
+ New apps: max curvature-based thinnings using 2- and 1-collapses.
+
+ * apps/mesh-segm-skel/mesh-complex-max-curv-2-collapse.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-1-collapse.cc:
+ New.
+ * apps/mesh-segm-skel/test-mesh-complex-max-curv-2-collapse.in,
+ * apps/mesh-segm-skel/test-mesh-complex-max-curv-1-collapse.in:
+ New.
+ * apps/mesh-segm-skel/Makefile.am (bin_PROGRAMS):
+ Add mesh-complex-max-curv-2-collapse.
+ And mesh-complex-max-curv-1-collapse
+ (mesh_complex_max_curve_2_collapse_SOURCES)
+ (mesh_complex_max_curve_1_collapse_SOURCES):
+ New.
+ (edit): New.
+ (test-mesh-complex-max-curv-2-collapse)
+ (test-mesh-complex-max-curv-1-collapse):
+ New target.
+ (TESTS, CLEANFILES): Add test-mesh-complex-max-curv-2-collapse
+ and test-mesh-complex-max-curv-1-collapse.
+ (MOSTLYCLEANFILES): Add teapot-max-curv-2-collapse.vtk,
+ bunny-holefilled-max-curv-2-collapse.vtk,
+ teapot-max-curv-1-collapse.vtk and
+ bunny-holefilled-max-curv-1-collapse.vtk.
+
+ 2011-03-14 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add VTK versions of some OFF meshes.
+
+ * mesh/bunny-holefilled.vtk,
+ * mesh/teapot.vtk:
+ New.
+ Generated from mesh/bunny-holefilled.off and mesh/teapot.off using
+ apps/mesh-segm-skel/off-to-vtk-bin.
+ * mesh/Makefile.am (dist_mesh_DATA): Add bunny-holefilled.vtk and
+ teapot.vtk.
+
+ 2011-03-14 Roland Levillain <roland(a)lrde.epita.fr>
+
+ New app: binary OFF to VTK mesh conversion.
+
+ * apps/mesh-segm-skel/off-to-vtk-bin.cc: New.
+ * apps/mesh-segm-skel/Makefile.am
+ (bin_PROGRAMS): Add off-to-vtk-bin.
+ (off_to_vtk_bin_SOURCES): New.
+
+ 2011-03-14 Roland Levillain <roland(a)lrde.epita.fr>
+
+ New app performing a 2-collapse on a mesh.
+
+ * apps/mesh-segm-skel/mesh-complex-2-collapse.cc: New.
+ * apps/mesh-segm-skel/test-mesh-complex-2-collapse.in: New.
+ * apps/mesh-segm-skel/Makefile.am (bin_PROGRAMS):
+ Add mesh-complex-2-collapse.
+ (mesh_complex_2_collapse_SOURCES): New.
+ (edit): New.
+ (test-mesh-complex-2-collapse): New target.
+ (TESTS, CLEANFILES): Add test-mesh-complex-2-collapse.
+ (MOSTLYCLEANFILES): Add pseudo-manifold-2-collapse.vtk.
+
+ 2011-03-14 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Prevent a site from being introduced twice in thinning's queues.
+
+ * mln/topo/skeleton/breadth_first_thinning.hh,
+ * mln/topo/skeleton/priority_driven_thinning.hh:
+ Use an image `in_queue' to tag sites inserted in the queue.
+
+ 2011-03-14 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add routines to identify and detach (collapse) simple pairs.
+
+ * mln/topo/is_simple_pair.hh,
+ * mln/topo/detach_pair.hh:
+ New.
+ * tests/topo/is_simple_pair.cc,
+ * tests/topo/detach_pair.cc:
+ New tests.
+ * tests/topo/Makefile.am (check_PROGRAMS): Add is_simple_pair and
+ detach_pair.
+ (detach_pair_SOURCES, is_simple_pair_SOURCES): New.
+ (MOSTLYCLEANFILES): New. Add detach_pair-out.vtk.
+
+ 2011-03-01 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add preliminary VTK input for binary images.
+
+ * mln/io/vtk/load.hh: New file.
+ Include it...
+ * mln/io/vtk/all.hh: ...here.
+ * tests/io/vtk/load_bin.cc,
+ * tests/io/vtk/load_save_bin.cc:
+ New.
+ * tests/io/vtk/Makefile.am (check_PROGRAMS): Add load_bin and
+ load_save_bin.
+ (load_bin_SOURCES, load_save_bin_SOURCES): New.
+ (MOSTLYCLEANFILES): Add load_save_bin-out.vtk.
+
+ 2011-03-01 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add VTK-format meshes.
+
+ * mesh/tetrahedron.vtk,
+ * mesh/pseudo-manifold.vtk:
+ New.
+ * mesh/Makefile.am (dist_mesh_DATA): Add tetrahedron.vtk and
+ pseudo-manifold.vtk.
+
+ 2011-03-01 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add a pre-allocation routine to mln::geom::complex_geometry.
+
+ * mln/geom/complex_geometry.hh
+ (mln::geom::complex_geometry<D, P>::reserve): New.
+ Use it...
+ * mln/io/off/load.hh: ...here.
+ Aesthetic changes.
+
+ 2011-02-25 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Small corrections in apps/mesh-segm-skel.
+
+ * apps/mesh-segm-skel/test-mesh-complex-max-curv-extrema.in:
+ Add a missing copyright header.
+
+ 2011-02-24 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Exercise topology-related routines.
+
+ * tests/core/image/complex_image.hh
+ (make_test_bin_2complex_image2d): New function.
+ * tests/topo/is_facet.cc,
+ * tests/make/detachment.cc,
+ * tests/make/attachment.cc:
+ New.
+ * tests/topo/Makefile.am (check_PROGRAMS): Add is_facet.
+ (is_facet_SOURCES): New.
+ * tests/make/Makefile.am (check_PROGRAMS): Add attachment and
+ detachment.
+ (attachment_SOURCES, detachment_SOURCES): New.
+
+ 2011-02-24 Roland Levillain <roland(a)lrde.epita.fr>
+
+ New complex image alias: mln::bin_2complex_image2d.
+
+ * mln/core/alias/complex_image.hh (mln::bin_2complex_image2d):
+ New typedef.
+
+ 2011-02-24 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Revamp mln::topo::is_simple_cell.
+
+ * mln/topo/is_simple_cell.hh
+ (mln::topo::is_simple_cell<I, N, NL, NH>::operator()):
+ Replace ad hoc code by a call to is_facet.
+
+ 2011-02-24 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have is_facet take into account the values of a (complex) image.
+
+ * mln/topo/is_facet.hh (mln::topo::is_facet): Take a binary image
+ and a neighborhood as arguments and take the image's values into
+ account.
+
+ 2011-02-24 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Revamp topology-related routines.
+
+ * mln/make/attachment.hh,
+ * mln/make/cell.hh,
+ * mln/make/detachment.hh,
+ * mln/topo/detach_cell.hh:
+ Do not require the face passed as argument to be a facet.
+
+ 2011-02-24 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Make the interface of thinning algorithms uniform w.r.t. functors.
+
+ * mln/topo/skeleton/priority_driven_thinning.hh
+ (mln::topo::skeleton::priority_driven_thinning): Catch up
+ with mln::topo::skeleton::breadth_first_thinning.
+ * mln/topo/detach_point.hh: Turn into a functor to match the new
+ interface of thinning algorithms.
+ * tests/topo/skeleton/breadth_first_thinning.cc
+ * tests/topo/skeleton/breadth_first_thinning_constrained.cc
+ * tests/topo/skeleton/priority_driven_thinning.cc
+ * tests/topo/skeleton/priority_driven_thinning_constrained.cc:
+ Adjust.
+
+ 2011-02-24 Roland Levillain <roland(a)lrde.epita.fr>
+
+ State a cell is not simple if it does not correspond to a facet.
+
+ * mln/topo/is_simple_cell.hh
+ (mln::topo::is_simple_cell<I, N, NL, NH>::operator()): Here.
+
+ 2010-09-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Use mln::data::paste to simplify mesh skeleton applications.
+
+ * apps/mesh-segm-skel/mesh-complex-skel.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-skel.cc,
+ * apps/mesh-segm-skel/mesh-complex-pinv-curv-skel.cc:
+ Here.
+
+ 2010-09-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Update mesh skeleton applications.
+
+ * apps/mesh-segm-skel/mesh-complex-skel.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-skel.cc,
+ * apps/mesh-segm-skel/mesh-complex-pinv-curv-skel.cc:
+ Catch up with the new interface of breadth-first thinning and
+ auxiliary routines.
+
+ 2010-09-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ More generic breadth-first-thinning-based skeleton transformations.
+
+ * mln/topo/is_simple_cell.hh: Make this functor more generic.
+ * mln/topo/detach_cell.hh (detach): Turn this function into a
+ more generic functor.
+ * mln/make/attachment.hh (mln::make::attachment)
+ * mln/make/detachment.hh (mln::make::detachment):
+ Make these routines more generic.
+ * mln/topo/skeleton/breadth_first_thinning.hh
+ (mln::topo::skeleton::breadth_first_thinning):
+ Adjust.
+ * headers.mk: Regen.
+
+ 2010-09-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Introduce a helper to build an mln::mutable_extension_ima.
+
+ * mln/core/routine/mutable_extend.hh: New.
+ * headers.mk: Regen.
+
+ 2010-09-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Introduce an extension-by-mutable-image morpher.
+
+ * mln/core/image/dmorph/mutable_extension_ima.hh: New.
+ * headers.mk: Regen.
+
+ 2010-09-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Get the `detach' argument of thinning algorithms by reference.
+
+ * mln/topo/skeleton/breadth_first_thinning.hh
+ (topo::skeleton::breadth_first_thinning)
+ * mln/topo/skeleton/priority_driven_thinning.hh
+ (topo::skeleton::priority_driven_thinning):
+ Here.
+
+ 2010-09-19 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Get rid of intermediate psites in thinning algorithms.
+
+ * mln/topo/skeleton/breadth_first_thinning.hh,
+ * mln/topo/skeleton/priority_driven_thinning.hh:
+ Here.
+
+ 2010-09-19 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have topo::is_n_face take a psite type as class parameter.
+
+ * mln/topo/is_n_face.hh: Here, so that the argument of this
+ functor (e.g., an iterator) is always converted to the psite
+ type.
+ * apps/mesh-segm-skel/mesh-complex-max-curv-skel.cc,
+ * apps/mesh-segm-skel/mesh-complex-pinv-curv-skel.cc,
+ * apps/mesh-segm-skel/mesh-complex-skel.cc:
+ Adjust.
+
+ 2010-09-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Aesthetic changes in thinning algorithms.
+
+ * mln/topo/skeleton/breadth_first_thinning.hh: Remove a comment.
+ * mln/topo/skeleton/priority_driven_thinning.hh: Likewise.
+ Rename p_queue to queue to avoid confusions with mln::p_queue and
+ improve uniformity w.r.t. topo::breadth_first_thinning.
+
+ 2010-09-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix the processing order in topo::breadth_first_thinning.
+
+ * mln/topo/skeleton/breadth_first_thinning.hh: Use a p_queue_fast
+ site set instead of a pair of p_set's to ensure an actual
+ breadth-first processing of sites.
+
+ 2010-09-16 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Split interface and implementation of topo::is_not_end_point.
+
+ * mln/topo/is_not_end_point.hh: Here.
+
+ 2010-09-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Catch up with the renaming to detach_cell.
+
+ * apps/mesh-segm-skel/mesh-complex-max-curv-skel.cc,
+ * apps/mesh-segm-skel/mesh-complex-pinv-curv-skel.cc,
+ * apps/mesh-segm-skel/mesh-complex-skel.cc:
+ s/detach/detach_cell/.
+
+ 2010-09-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Rename topo::detach as topo::detach_cell.
+
+ * mln/topo/detach.hh (detach): Rename as...
+ * mln/topo/detach_cell.hh (detach_cell): ...this, to prevent
+ confusions with detach_point.
+ * headers.mk: Regen.
+
+ 2010-09-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Exercise breadth-first and priority-driven thinnings.
+
+ * tests/topo/skeleton/breadth_first_thinning.cc,
+ * tests/topo/skeleton/breadth_first_thinning_constrained.cc,
+ * tests/topo/skeleton/priority_driven_thinning.cc,
+ * tests/topo/skeleton/priority_driven_thinning_constrained.cc:
+ New.
+ * tests/topo/skeleton/Makefile.am (check_PROGRAMS): Add
+ breadth_first_thinning, breadth_first_thinning_constrained,
+ priority_driven_thinning and priority_driven_thinning_constrained.
+ (breadth_first_thinning_SOURCES)
+ (breadth_first_thinning_constrained_SOURCES)
+ (priority_driven_thinning_SOURCES)
+ (priority_driven_thinning_constrained_SOURCES):
+ New.
+ (MOSTLYCLEANFILES): Add breadth_first_thinning-small.pbm,
+ breadth_first_thinning_constrained-small.pbm,
+ priority_driven_thinning-small.pbm and
+ priority_driven_thinning_constrained-small.pbm.
+
+ 2010-09-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ New skeletonization algorithm: priority-driven thinning.
+
+ * mln/topo/skeleton/priority_driven_thinning.hh: New.
+ * headers.mk: Regen.
+
+ 2010-09-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add helpers to compute skeletons by thinning on regular 2D images.
+
+ * mln/topo/is_simple_point2d.hh,
+ * mln/topo/detach_point.hh,
+ * mln/topo/is_not_end_point.hh:
+ New.
+ * headers.mk: Regen.
+
+ 2010-09-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add tracing mechanism to breadth-first thinning.
+
+ * mln/topo/skeleton/breadth_first_thinning.hh: Here.
+ Typos and aesthetic changes.
+
+ 2010-09-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Small fix in breadth-first thinning.
+
+ * mln/topo/skeleton/breadth_first_thinning.hh: Do not try to
+ detach an aldready processed site.
+
+ 2010-09-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Make the 5th argument of breadth_first_thinning truly optional.
+
+ * mln/topo/skeleton/breadth_first_thinning.hh
+ (mln::topo::skeleton::breadth_first_thinning):
+ Disable the default value of the 5th argument, which cannot be
+ used in practice, since it depends on the parameter H.
+ Add a 4-argument overloading to make the `constraint' argument
+ optional.
+
+ 2010-09-01 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add more documentation on the detach procedure.
+
+ * mln/make/detachment.hh: Here.
+ Typo.
+ * mln/topo/detach.hh: Typo.
+
+ 2010-07-28 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Regen Milena's Makefile helpers.
+
+ * headers.mk, tests/unit_test/unit-tests.mk: Here.
+
+ 2010-07-28 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add a VTK output for images of unsigned integers.
+
+ * mln/io/vtk/save.hh
+ (io::vtk::save(const unsigned_2complex_image3df&, const std::string&)):
+ New function.
+ (io::vtk::internal::unsigned_vtk_saver): New structure.
+ * tests/io/vtk/save.cc: Add a tests case for images of unsigneds.
+ * tests/io/vtk/Makefile.am (MOSTLYCLEANFILES):
+ Add save-tetrahedron-unsigned.vtk.
+
+ 2010-07-28 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * mln/io/vtk/save.hh: Fix documentation.
+
+ 2010-07-27 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * mln/io/vtk/all.hh: New.
+
+ 2010-06-24 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add a specific (temporary) VTK output routine for binary mesh images.
+
+ * apps/mesh-segm-skel/save_bin_alt.hh
+ (mln::io::vtk::save_bin_alt): New function.
+
+ 2010-06-24 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Exercise mln::io::vtk::save.
+
+ * tests/io/vtk/save.cc: New.
+ * tests/io/vtk/Makefile.am: New.
+ * tests/io/Makefile.am (SUBDIRS): Add vtk.
+
+ 2010-06-24 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Start a VTK output for complex-based images.
+
+ * mln/io/vtk/save.hh: New.
+
+ 2010-08-18 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * mln/topo/skeleton/breadth_first_thinning.hh: Reindent.
+
+ 2010-08-18 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix two errors in mln::topo::skeleton::breadth_first_thinning.
+
+ * mln/topo/skeleton/breadth_first_thinning.hh: Remove a stray
+ semicolon at the end of a `for' statement.
+ Create psite using the right iterator.
+
+ 2010-07-28 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Disable the last test case in test-mesh-complex-pinv-curv-skel.
+
+ * apps/mesh-segm-skel/test-mesh-complex-pinv-curv-skel.in: Here.
+
+ 2010-07-15 Roland Levillain <roland(a)lrde.epita.fr>
+
+ mesh-complex-pinv-curv-segm and mesh-complex-pinv-curv-skel apps.
+
+ * apps/mesh-segm-skel/mesh-complex-pinv-curv-segm.cc,
+ * apps/mesh-segm-skel/mesh-complex-pinv-curv-skel.cc:
+ New.
+ * apps/mesh-segm-skel/mesh-complex-max-curv-segm.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-skel.cc:
+ Remove dead code.
+ * apps/mesh-segm-skel/test-mesh-complex-pinv-curv-segm.in,
+ * apps/mesh-segm-skel/test-mesh-complex-pinv-curv-skel.in:
+ New.
+ * apps/mesh-segm-skel/Makefile.am (bin_PROGRAMS): Add
+ mesh-complex-pinv-curv-segm and mesh-complex-pinv-curv-skel.
+ (mesh_complex_pinv_curv_segm_SOURCES)
+ (mesh_complex_pinv_curv_skel_SOURCES):
+ New.
+ (TESTS): Add test-mesh-complex-pinv-curv-segm and
+ test-mesh-complex-pinv-curv-skel.
+ (MOSTLYCLEANFILES): Add socket-complex-pinv-curv-segm.off,
+ teapot-complex-pinv-curv-segm.off,
+ socket-complex-pinv-curv-skel.off and
+ teapot-complex-pinv-curv-skel.off.
+
+ 2010-06-14 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Actually use the maximal curvature in mesh-complex-max-curv-segm.
+
+ * apps/mesh-segm-skel/mesh-complex-max-curv-segm.cc: Here.
+
+ 2010-06-14 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Improve the precision of some mesh-segm-skel apps.
+
+ * apps/mesh-segm-skel/mesh-complex-segm.cc,
+ * apps/mesh-segm-skel/mesh-complex-skel.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-segm.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv-skel.cc:
+ Convert the floating point value input to an unsigned integer
+ image to avoid precision errors due to float comparisons.
+
+ 2010-06-14 Roland Levillain <roland(a)lrde.epita.fr>
+
+ New application: mesh-complex-max-curv-skel.
+
+ * apps/mesh-segm-skel/mesh-complex-max-curv-skel.cc: New.
+ * apps/mesh-segm-skel/test-mesh-complex-max-curv-skel.in: New.
+ * apps/mesh-segm-skel/Makefile.am (bin_PROGRAMS):
+ Add mesh-complex-max-curv-skel.
+ (mesh_complex_max_curv_skel_SOURCES): New.
+ (TESTS): Add test-mesh-complex-max-curv-skel.
+ (MOSTLYCLEANFILES): Add socket-complex-max-curv-skel.off and
+ teapot-complex-max-curv-skel.off.
+
+ 2010-05-11 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Clean up and new FIXMES in in apps/mesh-segm-skel.
+
+ * apps/mesh-segm-skel/mesh-complex-max-curv.cc: Remove dead code.
+ * apps/mesh-segm-skel/mesh-complex-skel.cc: Typo.
+ * apps/mesh-segm-skel/Makefile.am: Add titles and FIXMES.
+
+ 2010-05-11 Roland Levillain <roland(a)lrde.epita.fr>
+
+ New application: mesh-complex-max-curv-extrema.
+
+ * apps/mesh-segm-skel/mesh-complex-max-curv-extrema.cc: New.
+ * apps/mesh-segm-skel/test-mesh-complex-max-curv-extrema.in: New.
+ * apps/mesh-segm-skel/Makefile.am (bin_PROGRAMS): Add
+ mesh-complex-max-curv-extrema.
+ (mesh_complex_max_curv_extrema_SOURCES): New.
+ (TESTS): Add test-mesh-complex-max-curv-segm-extrema.
+ (MOSTLYCLEANFILES): Add socket-complex-max-curv-segm-extrema.off
+ and teapot-complex-max-curv-segm-extrema.off.
+
+ 2010-05-10 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix a bug in the reimplementation of Trimesh algorithms.
+
+ * apps/mesh-segm-skel/misc.hh (mln::geom::mesh_curvature):
+ Always call algebra::ldlt_decomp, even when NDEBUG is defined.
+ Typo.
+ Avoid a warning about an undefined variable when NDEBUG is not
+ defined.
+
+ 2010-05-04 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Improve topo::skeleton::breadth_first_thinning.
+
+ * mln/topo/skeleton/breadth_first_thinning.hh
+ (mln::topo::skeleton::breadth_first_thinning):
+ Fix a bias in the algorithm due to a buggy predicate.
+ Introduce a temporary psite to help the compiler.
+ Fix the type of `output'.
+
+ 2013-08-29 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Catch up with the new interface of the topological watershed.
+
+ * apps/constrained-connectivity/constrained-connectivity.cc: Here.
+
+ 2010-05-11 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Have the topological WST be more generic.
+
+ * mln/morpho/watershed/topological.hh: s/site/psite/g.
+ (morpho::watershed::min, morpho::watershed::max):
+ Abort when the set of components is empty.
+ * mln/core/site_set/p_set.hh (p_set<P>::is_empty): New method.
+
+ 2013-08-28 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix Pi usage in Milena's apps.
+
+ * apps/mesh-segm-skel/mesh-complex-max-curv-segm.cc,
+ * apps/mesh-segm-skel/mesh-complex-max-curv.cc:
+ Here.
+
+ 2013-08-27 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Use mln::math::pi instead of a local definition in Milena.
+
+ * mln/algebra/quat.hh (mln::algebra::quat::set_unit): Here.
+
+ 2013-08-27 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Set mln::math::pi to 20 decimals.
+
+ * mln/math/pi.hh (mln::math::pi): Here.
+ Use the value of the M_PI macro from glibc's math.h header.
+
+ 2013-08-27 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Display Milena fatal errors on std::cerr, not std::cout.
+
+ * mln/io/pdf/load.hh,
+ * mln/io/tiff/load.hh:
+ Here.
+
+ 2013-08-27 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Remove Milena debug code making side effects on streams.
+
+ * mln/accu/stat/median_alt.hh,
+ * mln/canvas/browsing/dir_struct_elt_incr_update.hh,
+ * mln/core/image/image2d.hh,
+ * mln/core/internal/classical_window_base.hh,
+ * mln/core/internal/image_morpher.hh,
+ * mln/io/raw/load.hh,
+ * mln/morpho/tree/data.hh,
+ * mln/morpho/tree/impl/dual_hqueue.hh,
+ * mln/morpho/tree/impl/dual_union_find.hh,
+ * mln/morpho/watershed/topological.hh,
+ * mln/util/edge.hh,
+ * mln/util/timer.hh:
+ Here.
+
+ 2010-03-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Remove old tools from doc/.
+
+ * doc/Makefile.am (EXTRA_DIST): Remove generate_dist_files.sh and
+ tools/clearbanner.sh.
+ * doc/generate_dist_files.sh,
+ * doc/tools/clearbanner.sh:
+ Remove.
+
+ 2013-08-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Improve the generation of Doxyfiles in Milena.
+
+ * doc/Makefile.am (edit)
+ ($(srcdir)/user-refman.stamp)
+ ($(srcdir)/devel-refman.stamp):
+ Use `[@]' instead of `\@' for portability reasons.
+ (ID): New (empty).
+ (edit_devel): Prevent configure from expanding @builddir@.
+ Christen the product as ``Developer documentation''.
+ ($(DOXYFILE_USER), $(DOXYFILE_DEVEL)): Do not depend on $Id$ from
+ ChangeLog.
+ * doc/Doxyfile.in (PROJECT_NUMBER): Reintegrate @ID@ to the
+ project number, even if it is not yet set.
+
+ 2013-08-26 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Run FFT unit tests only when FFTW3 support is enabled.
+
+ * tests/unit_test/cond_tests_fftw3: New.
+ * tests/unit_test/Makefile.am (COND_TESTS): Add cond_tests_fftw3.
+ * tests/unit_test/unit-tests.mk: Regen.
+
+ 2012-10-10 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Split the interface of the FFT off from its implementation.
+
+ * mln/transform/fft.hh: Here.
+
+ 2012-10-10 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Stylistic changes in the Fast Fourier Transform.
+
+ * mln/transform/fft.hh: Here.
+
+ 2012-10-10 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Remove dead code in the Fast Fourier Transform.
+
+ * mln/transform/fft.hh: Here.
+
+ 2012-10-10 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Minor corrections in the Fast Fourier Transform.
+
+ * mln/transform/fft.hh
+ (internal::_fft<T>::transformed_image() const): Return a const
+ reference instead of a copy.
+ (internal::_fft<T>::transformed_image_clipped_magn(double, bool)):
+ Drop the const before the first argument.
+ Properly initialize `max'.
+ (internal::_fft<T>::transformed_image_log_magn(double, double, bool)):
+ Properly initialize `max'.
+
+ 2012-10-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Improve the test of the Fast Fourier Transform.
+
+ * tests/transform/fft.cc: Ensure the inverse transform of the
+ transform is pretty much the same as the input image.
+ Save the cropped transform.
+ Remove dead code.
+ * tests/transform/Makefile.am (MOSTLYCLEANFILES):
+ Add fft_trans_cropped.pgm.
+
+ 2012-10-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Update copyright headers.
+
+ * mln/transform/fft.hh,
+ * tests/transform/fft.cc:
+ Here.
+
+ 2012-10-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * headers.mk, tests/unit_test/unit-tests.mk: Regen.
+
+ 2012-10-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Exercise the Fast Fourier Transform.
+
+ * tests/transform/fft.cc: Fix the path to the input image.
+ * tests/transform/Makefile.am
+ (check_PROGRAMS) [HAVE_FFTW3]: Add fft.
+ (fft_SOURCES, fft_CPPFLAGS, fft_LDFLAGS) [HAVE_FFTW3]: New.
+ (MOSTLYCLEANFILES): New.
+
+ 2012-10-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix the Fast Fourier Transform.
+
+ * mln/transform/fft.hh
+ (mln::transform::fft<T, internal::fft_real>::fft):
+ Properly initialize the plan of the inverse transform using
+ fftw_plan_dft_c2r_2d.
+ (mln::transform::fft<T, internal::fft_real>::transform_inv):
+ Use the entire complex values (not just their real parts) to
+ compute the inverse transform.
+ (mln::transform::class fft<T, internal::fft_cplx>::fft):
+ Call the proper function (fftw_plan_dft_2d) to create the plan of
+ the inverse transform.
+ Switch the input and the output so that the inverse transform uses
+ the right images.
+
+ 2012-10-09 Alexandre Abraham <abraham(a)lrde.epita.fr>
+
+ Import the FFTW-based Fast Fourier Transform.
+
+ * mln/transform/fft.hh,
+ * tests/transform/fft.cc:
+ New.
+ Imported from the old directory sanbox/abraham/.
+
+ 2013-08-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix a couple of Milena tests.
+
+ * tests/accu/compute.cc: Correction the checked assertion.
+ * tests/value/scalar.cc: Remove this (non-relevant) test.
+
+ 2013-08-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * mln/data/transform: Remove (empty) file.
+
+ 2013-08-23 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Distribute all Milena test images.
+
+ * tests/Makefile.am (EXTRA_DIST): Add img/example-0.ppm,
+ img/example-1.ppm, img/example-2.ppm and img/example-3.ppm.
+
+ 2013-08-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Improve Milena's mln/fun/v2v/rgb8_to_rgbn.hh.
+
+ * mln/fun/v2v/rgb8_to_rgbn.hh: Turn precondition into a static
+ assertion.
+ Remove (dead) debugging code.
+ Rewrite Doxygen comments.
+ Cosmetic changes.
+
+ 2013-08-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * mln/core/image/dmorph/sub_image.hh: Fix indentation.
+
+ 2013-08-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Enable tests/fun/v2i.
+
+ * tests/fun/Makefile.am (SUBDIRS): Add v2i.
+
+ 2012-07-19 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Various aesthetic changes in Milena.
+
+ * mln/data/stretch.hh,
+ * mln/fun/x2x/rotation.hh,
+ * mln/tag/init.hh,
+ * mln/test/positive.hh,
+ * mln/test/predicate.hh:
+ Here.
+
+ 2012-07-19 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * mln/core/point.hh: Fix documentation.
+
+ 2012-02-08 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * mln/morpho/watershed/flooding.hh: Uniformity-related changes.
+
+ 2012-02-08 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * mln/data/stretch.hh: Do not name unused arguments.
+
+ 2011-10-06 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * tests/util/line_graph.cc: Wrap long lines.
+
+ 2011-10-06 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Use Doxygen grouping commands uniformly in Milena.
+
+ * mln/core/image/graph_elt_neighborhood_if.hh,
+ * mln/core/image/graph_elt_window_if.hh,
+ * mln/core/image/imorph/labeled_image.hh,
+ * mln/core/internal/labeled_image_base.hh,
+ * mln/core/site_set/p_edges.hh,
+ * mln/fun/i2v/array.hh,
+ * mln/util/adjacency_matrix.hh,
+ * mln/util/array.hh,
+ * mln/util/object_id.hh,
+ * mln/util/tracked_ptr.hh,
+ * mln/value/lut_vec.hh:
+ Here.
+
+ 2012-05-22 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * tests/data/transform.cc: Aesthetic changes.
+
+ 2011-07-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Improve the documentation of mln::util::set.
+
+ * mln/util/set.hh: Here.
+
+ 2011-07-12 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Various fixes related to image properties (traits).
+
+ * mln/core/image/vmorph/fun_image.hh,
+ * mln/trait/image/props.hh,
+ * mln/trait/images.hh:
+ Here.
+
+ 2010-11-29 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Clean up white space.
+
+ * mln/core/site_set/p_graph_piter.hh,
+ * mln/accu/transform_snake.hh:
+ Here.
+
+ 2010-10-19 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Typos and aesthetic changes in Milena apps.
+
+ * apps/graph-morpho/make.hh (make::complex1d_image)
+ * apps/graph-morpho/convert.hh (convert::to_complex_image)
+ Here.
+
+ 2010-09-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * mln/canvas/all.hh: Sort #include directives.
+
+ 2010-08-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Aesthetic changes.
+
+ * mln/morpho/tree/data.hh,
+ * mln/registration/icp.hh,
+ * mln/util/fibonacci_heap.hh:
+ Wrap long lines, fix punctuation, etc.
+
+ 2010-07-28 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * mln/io/off/save.hh: Fix documentation.
+
+ 2010-07-28 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Enforce coding style w.r.t. function declarations.
+
+ * mln/io/magick/load.hh: Here.
+
+ 2010-04-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add Doxygen documentation to a test.
+
+ * tests/topo/complex.cc: Here.
+
+ 2010-04-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix Doxygen comments.
+
+ * mln/value/int_u.hh,
+ * mln/value/rgb.hh:
+ Here.
+
+ 2010-05-11 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Remove a useless comment line.
+
+ * apps/Makefile.am: Here.
+
+ 2010-05-11 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Wrap long lines.
+
+ * mln/data/fill.hh: Here.
+
+ 2010-05-10 Roland Levillain <roland(a)lrde.epita.fr>
+
+ More conversions from C-style casts to C++-style casts.
+
+ * mln/core/contract.hh: Here.
+
+ 2010-02-08 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Use Doxygen comments properly.
+
+ * mln/value/rgb.hh: Here.
+
+ 2010-02-08 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Typos in comments.
+
+ * mln/core/concept/function.hh: Here.
+
+ 2009-09-24 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Reformat a documentation header.
+
+ * mln/morpho/watershed/flooding.hh: Here.
+
+ 2009-09-04 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Re-wrap a long line.
+
+ * mln/labeling/flat_zones.hh: Here.
+
+ 2009-06-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Remove useless C casts.
+
+ * mln/fun/v2v/rgb_to_hsl.hh: Here.
+
+ 2013-07-29 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Clean up Milena's tests/draw/line.cc.
+
+ * tests/draw/line.cc: Remove a useless header inclusion.
+ Add a description.
+ Stylistic changes.
+
+ 2013-07-25 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Remove an inadvertently added file.
+
+ * mln/linear/#ch_convolve.hh#: Remove.
+
+ 2013-07-25 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix and improve mln::draw::dashed_line.
+
+ * mln/core/site_set/p_line2d.hh (mln::p_line2d::has(const psite&)):
+ Remove a too strict precondition.
+ * mln/draw/dashed_line.hh (mln::draw::dashed_line):
+ Rework implementation to make it more like mln::draw::line's.
+ Clean up a bit.
+ * tests/draw/dashed_line.cc: New test.
+ * tests/draw/Makefile.am (check_PROGRAMS): Add dashed_line.
+
+ 2013-07-04 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Work around a Clang 3.0 bug.
+
+ * tests/labeling/compute.cc,
+ * tests/labeling/pack.cc:
+ Here.
+
+ 2013-06-28 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Aesthetic changes in mln/world/binary_2d/subsample.hh.
+
+ * mln/world/binary_2d/subsample.hh: Here.
+
+ 2013-06-28 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix two bugs in mln/world/binary_2d/subsample.hh.
+
+ * mln/world/binary_2d/subsample.hh
+ (world::binary_2d::subsample(const image2d<bool>&, unsigned)):
+ Properly initialize (and deallocate) the sliding window (array of
+ pointers).
+ Fix the size of the output image.
+ Have the declaration of this function match its definition.
+ * tests/world/binary_2d/subsample.cc: New test.
+ * tests/world/binary_2d/Makefile.am
+ (check_PROGRAMS): Add subsample.
+ (MOSTLYCLEANFILES): Add subsample-small.pgm.
+
+ 2013-06-24 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Address compiler warnings about unused variables and arguments.
+
+ * mln/algebra/mat.hh (mln::algebra::impl::det)
+ * mln/linear/gaussian.hh (mln::linear::impl::generic_filter_)
+ * mln/registration/icp.hh
+ (mln::registration::remove_too_far_sites_debug)
+ (mln::registration::compute_distance_criteria)
+ * tests/io/magick/load.cc (main)
+ * tests/io/magick/save.cc (main):
+ Here.
+
+ 2013-06-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Avoid comparisons between signed and unsigned values.
+
+ * apps/morphers/iz.cc: Here.
+ Add a copyright notice and a Doxygen header.
+
+ 2013-06-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Aesthetic changes.
+
+ * mln/value/int_u.hh: Here.
+ * mln/value/internal/gray_f.hh: Typo in comment.
+
+ 2013-06-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Resolve ambiguous calls to operator* in value::qt::rgb32.
+
+ * mln/value/qt/rgb32.hh: Here.
+
+ 2013-06-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix mln::value::hsl_'s dependencies.
+
+ * mln/value/hsl.hh: Here.
+ [MLN_INCLUDE_ONLY]: Fix closing #endif statement.
+
+ 2013-06-20 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Fix mutual dependencies between value::int_u and value::qt::rgb32.
+
+ * mln/value/int_u.hh: Move definitions...
+ * mln/value/int_u.hxx: ...here (new file).
+ * mln/value/qt/rgb32.hh: Adjust.
+ * headers.mk (nobase_include_HEADERS): Regen.
+
+ 2013-06-19 Roland Levillain <roland(a)lrde.epita.fr>
+
+ * doc/Doxyfile.in: Help Emacs fontify this file.
+
+ 2013-06-18 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Make mln::util::timer copy-constructible and (copy-)assignable.
+
+ * mln/util/timer.hh: Rely on the default copy constructor and
+ the default (copy-)assignment operator.
+
+ 2013-06-14 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Shell-related portability fixes in Milena's Makefiles.
+
+ * doc/Makefile.am: Rewrite patterns ``perl X `find Y''' as
+ ``find Y -exec perl X {} \;'' to avoid long `perl' command lines and
+ please the shell.
+ Wrap some long lines.
+
+ 2013-06-17 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Use `perl -pi' instead of `sed -i' in Milena.
+
+ * doc/Makefile.am,
+ * doc/tools/clearbanner.sh,
+ * doc/tools/todoxygen.sh:
+ Here, as `sed -i' (with no backup file) behaves differently on
+ GNU/Linux and Mac OS X. For more information, see:
+
http://stackoverflow.com/questions/5694228/.
+
+ 2013-06-13 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Update the documentation of mln_trace.
+
+ * mln/debug/trace.hh: Here.
+ Aesthetic changes.
+
2013-04-17 Guillaume Lazzara <z(a)lrde.epita.fr>
* doc/mln/convert.dox: Fix from_to_ module name.
diff --cc milena/apps/morphers/iz.cc
index ae0d6d3,1603d38..5a39eac
--- a/milena/apps/morphers/iz.cc
+++ b/milena/apps/morphers/iz.cc
@@@ -119,8 -148,8 +148,8 @@@ int main(int argc, char* argv[]
io::ppm::save(labeling::colorize(value::rgb8(), ws), "tmp_ws.ppm");
{
- image2d<value::rgb8> ws_ = data::convert(value::rgb8(), input);
+ image2d<value::rgb8> ws_ = data::convert(input, value::rgb8());
- data::fill((ws_ | (pw::value(ws) == pw::cst(0))).rw(), literal::red);
+ data::fill((ws_ | (pw::value(ws) == pw::cst(0u))).rw(), literal::red);
io::ppm::save(ws_, "tmp_ws_superpose.ppm");
// test% g++ -I. main.cc -DNDEBUG -O2
diff --cc milena/mln/core/internal/labeled_image_base.hh
index 5d9b784,1da204a..b563781
--- a/milena/mln/core/internal/labeled_image_base.hh
+++ b/milena/mln/core/internal/labeled_image_base.hh
@@@ -177,8 -181,9 +181,9 @@@ namespace ml
void init_update_data_();
void prepare_update_data_(const mln_value(I)& lbl,
const mln_value(I)& new_lbl);
- void update_data_(const fun::i2v::array<mln_value(I)>& relabel_fun);
+
+ void update_data_(const fun::v2v::array<mln_value(I)>& relabel_fun);
- /// @}
+ /// \}
};
diff --cc milena/mln/debug/trace.hh
index 9352d7b,e3f3261..1025da8
--- a/milena/mln/debug/trace.hh
+++ b/milena/mln/debug/trace.hh
@@@ -28,22 -28,16 +28,24 @@@
/// \file
///
- /// Definition of the trace entering procedure.
+ /// Definition of the function entering/exiting tracing mechanism.
+
+ # include <ctime>
- # include <string>
# include <iostream>
+ # include <string>
# include <stack>
- # include <ctime>
+
# include <mln/core/contract.hh>
+/*!
+ \def mln_trace(S)
+ \brief Create a trace entry with S as name.
+
+ This macro must be called once at the beginning of a function.
+
+ \sa mln::debug::trace
+*/
# define mln_trace(S) \
mln::debug::trace mln_trace_(S); \
(void) mln_trace_;
@@@ -86,11 -73,9 +89,11 @@@ namespace ml
}
\endcode
- \warning mln_trace() declares a named local variable, so do not
- use mln_trace twice in the same scope in order to avoid
- duplicate declarations.
+ \warning mln_trace() declares a local variable (named
+ mln_trace_), so do not use mln_trace twice in the same scope to
+ avoid duplicate declarations.
+
+ \sa mln_trace mln_trace_warning
*/
class trace
{
diff --cc milena/mln/fun/v2v/array.hh
index 743afe4,0000000..b202f33
mode 100644,000000..100644
--- a/milena/mln/fun/v2v/array.hh
+++ b/milena/mln/fun/v2v/array.hh
@@@ -1,387 -1,0 +1,390 @@@
+// Copyright (C) 2008, 2009, 2012, 2013 EPITA Research and Development
+// Laboratory (LRDE)
+//
+// This file is part of Olena.
+//
+// Olena is free software: you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation, version 2 of the License.
+//
+// Olena is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Olena. If not, see <http://www.gnu.org/licenses/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+#ifndef MLN_FUN_V2V_ARRAY_HH
+# define MLN_FUN_V2V_ARRAY_HH
+
+/// \file
+///
+/// Function mapping an Id i to a value v.
+
+# include <vector>
+# include <algorithm>
+# include <mln/core/concept/function.hh>
+# include <mln/util/array.hh>
+# include <mln/metal/equal.hh>
+# include <mln/tag/init.hh>
+# include <mln/convert/to.hh>
+
+# include <mln/fun/internal/selector.hh>
+
+namespace mln
+{
+
+ /// Forward declaration.
+ namespace fun {
+ namespace v2v {
+ template <typename T> class array;
+ } // end of namespace mln::fun::v2v
+ } // end of namespace mln::fun
+
+ namespace util {
+ template <typename T> class array;
+ }
+
+
+ namespace fun
+ {
+
+ namespace v2v
+ {
+
+ /*! \brief Function mapping an id to a value.
+
+ \sa data::transform
+ \ingroup funv2v
+ */
+ template <typename T>
+ class array
+ : public fun::internal::selector_from_result_<T, array<T> >::ret
+ {
+ public:
+
- /// Returned value types
- /// @{
++ /// \name Returned value types
++ /// \{
++
+ typedef T result;
+ typedef typename std::vector<T>::reference mutable_result;
- /// @}
+
- /// Constructors
++ /// \}
++
++ /// \name Constructors
+ /// \{
+
+ /// Default.
+ array();
+ /// Constructs a function with \p nvalues.
+ array(unsigned n);
+ /// Constructs a function with \p nvalues and \p val as default value.
+ array(unsigned n, const T& val);
+
+ /// Used in from_to(). Constructs that function from an util::array.
+ /// Always prefer using from_to instead of this constructor.
+ array(const util::array<T>& from);
+ /// Used in from_to(). Constructs that function from an std::vector.
+ /// Always prefer using from_to instead of this constructor.
+ array(const std::vector<T>& from);
++
+ /// \}
+
+
+ /// Pre-allocate space.
+ void reserve(unsigned n);
+
+ /// Set the function size to \p n.
+ void resize(unsigned n);
+ /// Set the function size to \p n and initialize the value with
+ /// \p val.
+ void resize(unsigned n, const T& val);
+
+ /// Append a new value in the function.
+ void append(const T& val);
+
+ /// Return the number of values.
+ unsigned size() const;
+
+ /// Const access to the ith value.
+ result operator()(unsigned i) const;
+ /// Read-Write access to the ith value.
+ mutable_result operator()(unsigned i);
+
+ /// Initialize an empty function.
+ void init_(unsigned n);
+
+ /// Return the underlying std::vector.
+ const std::vector<T>& std_vector() const;
+
+ protected:
+ std::vector<T> v_;
+
+ };
+
+
+ /*!
+ \brief Operator<<.
+ \relates fun::v2v::array
+ */
+ template <typename T>
+ std::ostream& operator<<(std::ostream& ostr,
+ const array<T>& a);
+
+
+ /*!
+ \brief Conversion: fun::v2v::array -> util::array
+ \ingroup fromto
+ */
+ template <typename T1, typename T2>
+ void
+ from_to_(const fun::v2v::array<T1>& from, util::array<T2>&
to);
+
+ } // end of namespace mln::fun::v2v
+
+ } // end of namespace mln::fun
+
+} // end of namespace mln
+
+
+namespace std
+{
+
+ /*!
+ \brief Conversion: std::vectorfun::v2v::array<T> ->
fun::v2v::array<T>
+ \ingroup fromto
+ */
+ template <typename T>
+ inline
+ void
+ from_to_(const vector<T>& from, mln::fun::v2v::array<T>& to);
+
+ /*!
+ \brief Conversion: std::vector<T> -> mln::fun::v2v::array<U>
+ \ingroup fromto
+ */
+ template <typename T, typename U>
+ inline
+ void
+ from_to_(const vector<T>& from, mln::fun::v2v::array<U>& to);
+
+} // end of namespace std
+
+
+# ifndef MLN_INCLUDE_ONLY
+
+namespace mln
+{
+
+ // Init.
+
+ template <typename T1, typename T2>
+ void init_(tag::function_t,
+ fun::v2v::array<T1>& f,
+ const fun::v2v::array<T2>& model)
+ {
+ f.init_(model.size());
+ }
+
+
+ /// fun::v2v::array
+
+ namespace fun
+ {
+
+ namespace v2v
+ {
+
+ template <typename T>
+ inline
+ array<T>::array()
+ {
+ }
+
+ template <typename T>
+ inline
+ array<T>::array(unsigned n)
+ : v_(n)
+ {
+ }
+
+ template <typename T>
+ inline
+ array<T>::array(unsigned n, const T& val)
+ : v_(n, val)
+ {
+ }
+
+ template <typename T>
+ inline
+ array<T>::array(const util::array<T>& from)
+ : v_(from.std_vector())
+ {
+
+ }
+
+ template <typename T>
+ inline
+ array<T>::array(const std::vector<T>& from)
+ : v_(from)
+ {
+
+ }
+
+ template <typename T>
+ inline
+ void
+ array<T>::reserve(unsigned n)
+ {
+ v_.reserve(n);
+ }
+
+ template <typename T>
+ inline
+ void
+ array<T>::resize(unsigned n)
+ {
+ v_.resize(n);
+ }
+
+ template <typename T>
+ inline
+ void
+ array<T>::append(const T& val)
+ {
+ v_.push_back(val);
+ }
+
+ template <typename T>
+ inline
+ void
+ array<T>::resize(unsigned n, const T& val)
+ {
+ v_.resize(n, val);
+ }
+
+ template <typename T>
+ inline
+ unsigned
+ array<T>::size() const
+ {
+ return v_.size();
+ }
+
+ template <typename T>
+ inline
+ typename array<T>::result
+ array<T>::operator()(unsigned i) const
+ {
+ mln_precondition(i < v_.size());
+ return v_[i];
+ }
+
+ template <typename T>
+ inline
+ typename array<T>::mutable_result
+ array<T>::operator()(unsigned i)
+ {
+ mln_precondition(i < v_.size());
+ return v_[i];
+ }
+
+ template <typename T>
+ inline
+ void
+ array<T>::init_(unsigned n)
+ {
+ v_.resize(n);
+ }
+
+ template <typename T>
+ inline
+ const std::vector<T>&
+ array<T>::std_vector() const
+ {
+ return v_;
+ }
+
+
+ // Operator <<.
+
+ template <typename T>
+ std::ostream& operator<<(std::ostream& ostr,
+ const array<T>& a)
+ {
+ ostr << '(';
+ const unsigned n = a.size();
+ for (unsigned i = 0; i < n; ++i)
+ {
+ ostr << a(i);
+ if (i != n - 1)
+ ostr << ", ";
+ }
+ ostr << ')';
+ return ostr;
+ }
+
+
+ // Conversion
+
+ template <typename T1, typename T2>
+ void
+ from_to_(const array<T1>& from, util::array<T2>& to)
+ {
+ to.resize(from.size());
+
+ for (unsigned i = 0; i < from.size(); ++i)
+ to[i] = mln::convert::to<T2>(from(i));
+ }
+
+ } // end of namespace mln::fun::v2v
+
+ } // end of namespace mln::fun
+
+
+ template <typename T>
+ inline
+ fun::v2v::array<T> array(unsigned n, const T& t)
+ {
+ fun::v2v::array<T> tmp(n, t);
+ return tmp;
+ }
+
+} // end of namespace mln
+
+namespace std
+{
+
+ template <typename T>
+ inline
+ void
+ from_to_(const vector<T>& from, mln::fun::v2v::array<T>& to)
+ {
+ to = mln::fun::v2v::array<T>(from);
+ }
+
+ template <typename T, typename U>
+ inline
+ void
+ from_to_(const vector<T>& from, mln::fun::v2v::array<U>& to)
+ {
+ to.resize(from.nelements());
+ for (unsigned i = 0; i < from.size(); ++i)
+ to(i) = mln::convert::to<U>(from[i]);
+ }
+
+} // end of namespace std
+
+# endif // ! MLN_INCLUDE_ONLY
+
+#endif // ! MLN_FUN_V2V_ARRAY_HH
diff --cc milena/mln/fun/v2v/rgb8_to_rgbn.hh
index 236c95b,29d0d9c..d48112b
--- a/milena/mln/fun/v2v/rgb8_to_rgbn.hh
+++ b/milena/mln/fun/v2v/rgb8_to_rgbn.hh
@@@ -47,16 -46,11 +46,14 @@@ namespace ml
{
- /*! \brief Convert a rgb8 value to a rgn, n < 8.
-
- \tparam n defines the output quantification used for the
- transformation.
-
- How to use this function is detailed in section \ref convert.
-
- \sa data::convert data::transform
- \ingroup funv2v convert
- */
+ /// \brief Convert an mln::value::rgb8 to an mln::value::rgbn.
+ ///
+ /// \tparam n The quantification of the output value (where n < 8).
+ ///
- /// \ingroup modfunv2v
++ /// How to use this function is detailed in section \ref convert.
++ ///
++ /// \sa data::convert data::transform
++ /// \ingroup funv2v convert
template <unsigned n>
struct rgb8_to_rgbn : Function_v2v< rgb8_to_rgbn<n> >
{
diff --cc milena/mln/io/magick/load.hh
index 0962303,603f40a..0c285a0
--- a/milena/mln/io/magick/load.hh
+++ b/milena/mln/io/magick/load.hh
@@@ -72,9 -61,23 +72,10 @@@ namespace ml
\ingroup iomagick
*/
template <typename I>
- void load(Image<I>& ima, const std::string& filename);
+ void
+ load(Image<I>& ima, const std::string& filename);
- // FIXME: Unfinished?
-#if 0
- /** Load data from a file into a Milena tiled image using
- Magick++.
-
- \param[out] ima The image data are loaded into.
- \param[in] filename The name of the input file. */
- template <typename T>
- void
- load(Image<tiled2d<T> >& ima, const std::string& filename);
-#endif
-
-
# ifndef MLN_INCLUDE_ONLY
namespace impl
diff --cc milena/mln/value/int_u.hh
index cfe2252,18f1c81..6bdb411
--- a/milena/mln/value/int_u.hh
+++ b/milena/mln/value/int_u.hh
@@@ -211,19 -209,11 +220,18 @@@ namespace ml
template <unsigned n>
void from_to_(const int_u<n>& from, float& to_);
- /// \internal Conversion: int_u -> double.
+
+ /*!
+ \brief Conversion: int_u -> double.
+ \ingroup fromto
+ */
template <unsigned n>
- void
- from_to_(const int_u<n>& from, double& to_);
+ void from_to_(const int_u<n>& from, double& to_);
- /// \internal Conversion: Conversion: int_u -> rgb.
+ /*!
+ \brief Conversion: Conversion: int_u -> rgb.
+ \ingroup fromto
+ */
template <unsigned m>
void from_to_(const int_u<m>& from, qt::rgb32& to);
diff --cc milena/mln/world/binary_2d/subsample.hh
index 5e94016,3ea041a..7115e56
--- a/milena/mln/world/binary_2d/subsample.hh
+++ b/milena/mln/world/binary_2d/subsample.hh
@@@ -73,21 -73,14 +73,14 @@@ namespace ml
using value::int_u8;
if (n == 0)
- {
- image2d<value::int_u8>
- output = data::convert(input, int_u8());
- return data::convert(int_u8(), input);
++ return data::convert(input, int_u8());
- return output;
- }
-
- const bool** ptr;
+ const bool** ptr = new const bool*[n];
const unsigned nrows = input.nrows() / n;
const unsigned ncols = input.ncols() / n;
- image2d<int_u8> output;
- initialize(output, input);
+ image2d<int_u8> output(nrows, ncols);
const unsigned delta_row = input.delta_offset(down);
- unsigned count = 0;
for (unsigned row = 0; row < nrows; ++row)
{
diff --cc milena/tests/unit_test/unit-tests.mk
index a98b5cf,72ca7eb..6142ab5
--- a/milena/tests/unit_test/unit-tests.mk
+++ b/milena/tests/unit_test/unit-tests.mk
@@@ -188,6 -197,6 +197,8 @@@ mln_binarization_binarization
mln_binarization_essential \
mln_binarization_includes \
mln_binarization_threshold \
++mln_binarization_tmms \
++mln_binarization_tmms_hysteresis \
mln_border_adjust \
mln_border_all \
mln_border_duplicate \
@@@ -368,6 -378,6 +380,7 @@@ mln_core_image_graph_window_if_piter
mln_core_image_graph_window_piter \
mln_core_image_image1d \
mln_core_image_image2d \
++mln_core_image_image2d_ffmpeg \
mln_core_image_image3d \
mln_core_image_imorph_all \
mln_core_image_imorph_decorated_image \
@@@ -504,6 -515,6 +518,7 @@@ mln_data_fast_median
mln_data_fill \
mln_data_fill_with_image \
mln_data_fill_with_value \
++mln_data_fill_without_localization \
mln_data_median \
mln_data_memcpy_ \
mln_data_memset_ \
@@@ -518,6 -529,6 +533,7 @@@ mln_data_sort_offsets
mln_data_sort_psites \
mln_data_split \
mln_data_stretch \
++mln_data_stretch_inplace \
mln_data_to_enc \
mln_data_transform \
mln_data_transform_inplace \
@@@ -738,6 -753,6 +754,7 @@@ mln_io_fld_load_header
mln_io_fld_max_components \
mln_io_fld_save \
mln_io_fld_write_header \
++mln_io_magick_get_header \
mln_io_off_all \
mln_io_off_load \
mln_io_off_save \
@@@ -797,6 -815,6 +817,7 @@@ mln_labeling_relabel
mln_labeling_superpose \
mln_labeling_value \
mln_labeling_value_and_compute \
++mln_labeling_values \
mln_labeling_wrap \
mln_linear_all \
mln_linear_ch_convolve \
@@@ -1189,6 -1218,6 +1221,7 @@@ mln_transform_internal_distance_functo
mln_transform_internal_influence_zone_functor \
mln_upscaling_art_scale2x \
mln_upscaling_art_scale3x \
++mln_upscaling_upscaling_bicubic_2x \
mln_util_adjacency_matrix \
mln_util_all \
mln_util_array \
diff --cc scribo/scribo/filter/object_groups_with_holes.hh
index 64c16f2,d2347bb..1caf251
--- a/scribo/scribo/filter/object_groups_with_holes.hh
+++ b/scribo/scribo/filter/object_groups_with_holes.hh
@@@ -185,7 -185,7 +185,7 @@@ namespace scrib
// Will 'True' if a group has at least two background
// components.
- fun::v2v::array<bool>
- mln::fun::i2v::array<bool>
++ mln::fun::v2v::array<bool>
to_keep(value::next(components.nelements()), false);
const L& lbl = components.labeled_image();
diff --cc scribo/scribo/primitive/extract/separators_nonvisible.hh
index 9781cad,565bb7e..02e7602
--- a/scribo/scribo/primitive/extract/separators_nonvisible.hh
+++ b/scribo/scribo/primitive/extract/separators_nonvisible.hh
@@@ -160,13 -147,10 +147,10 @@@ namespace scrib
component_set<L>
components = scribo::primitive::extract::components(input_clo, c8(),
ncomponents);
- // t_ = t;
- // std::cout << "extract::components - " << t_ <<
std::endl;
-
// Debug
logger().log_image(AuxiliaryResults,
- data::convert(value::int_u8(),
- components.labeled_image()),
+ data::convert(components.labeled_image(),
+ value::int_u8()),
"lbl");
unsigned dmax = 5;
@@@ -453,15 -400,9 +400,9 @@@
}
- // t_ = t;
- // std::cout << "* reading data - " << t_ << std::endl;
-
- // t.restart();
labeling::relabel_inplace(sep_lbl, nlabels, relbl);
- // t_ = t;
- // std::cout << "* relabel_inplace - " << t_ <<
std::endl;
- mln_concrete(I) output = data::convert(bool(), sep_lbl);
+ mln_concrete(I) output = data::convert(sep_lbl, bool());
if (_debug_)
{
diff --cc scribo/scribo/primitive/regroup/from_single_left_link.hh
index 42d7486,0712182..c39b8b5
--- a/scribo/scribo/primitive/regroup/from_single_left_link.hh
+++ b/scribo/scribo/primitive/regroup/from_single_left_link.hh
@@@ -106,7 -106,7 +106,7 @@@ namespace scrib
object_groups<L> output = groups.duplicate();
- fun::v2v::array<mln_value(L)> relabel_fun;
- mln::fun::i2v::array<mln_value(L)> relabel_fun;
++ mln::fun::v2v::array<mln_value(L)> relabel_fun;
component_set<L>
components = primitive::group::apply(groups, relabel_fun);
diff --cc scribo/tests/primitive/extract/alignments.cc
index f767a8e,5c6a10a..6e8cb0f
--- a/scribo/tests/primitive/extract/alignments.cc
+++ b/scribo/tests/primitive/extract/alignments.cc
@@@ -52,16 -52,15 +53,15 @@@ int main(
document<L> doc(os.str().c_str());
doc.open();
- doc.set_binary_image(data::convert(bool(), doc.image()));
+ doc.set_binary_image(data::convert(doc.image(), bool()));
- // Extract lines
- line_set<L>
- lines = scribo::text::extract_lines_wo_merge(doc, c8());
+ // Extract lines.
+ line_set<L> lines = scribo::text::extract_lines_wo_merge(doc, c8());
doc.set_paragraphs(scribo::make::paragraph(lines));
- // Find alignments
- mln::util::couple<component_set<L>, mln_ch_value_(L,bool)>
- res = primitive::extract::alignments(doc, 3, 3);
+ // Find alignments.
+ mln::util::couple<component_set<L>, mln_ch_value_(L,bool)> res =
+ primitive::extract::alignments(doc, 3.f, 3);
std::ostringstream os_out;
image2d<bool> ref;
hooks/post-receive
--
Olena, a generic and efficient image processing platform