olena: olena-2.0-895-g0a79e3b Merge branch 'master' into exp/TL

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@lrde.epita.fr> + + * NEWS: Notify changes in data::convert prototype. + +2013-04-25 Guillaume Lazzara <z@lrde.epita.fr> + + Cite papers in documentation. + + * mln/linear/log.hh, + * mln/topo/skeleton/crest.hh: Here. + +2013-04-25 Guillaume Lazzara <z@lrde.epita.fr> + + * doc/doc.bib: Add more references. + +2013-04-25 Guillaume Lazzara <z@lrde.epita.fr> + + * configure.ac: Do not configure milena/tests/fun/i2v and + milena/tests/fun/stat. + + 2013-08-30 Roland Levillain <roland@lrde.epita.fr> + + * configure.ac: Untabify. + + 2011-07-11 Roland Levillain <roland@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@lrde.epita.fr> + + * configure.ac: Configure milena/apps/generic-skel/Makefile. + + 2010-06-24 Roland Levillain <roland@lrde.epita.fr> + + * configure.ac: Configure milena/tests/io/vtk/Makefile. + + 2010-07-15 Roland Levillain <roland@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@lrde.epita.fr> + + Configure milena/apps/mesh-segm-skel/test-mesh-complex-max-curv-skel. + + * configure.ac: Here. + + 2010-05-11 Roland Levillain <roland@lrde.epita.fr> + + Configure milena/apps/mesh-segm-skel/test-mesh-complex-max-curv-extrema. + + * configure.ac: Here. + + 2013-08-26 Roland Levillain <roland@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@lrde.epita.fr> + + Ask configure to try to find FFTW (version 3). + + * configure.ac: Here. + + 2013-08-22 Roland Levillain <roland@lrde.epita.fr> + + * AUTHORS: Update. + + 2013-08-22 Roland Levillain <roland@lrde.epita.fr> + + * COPYING: Untabify. + + 2013-08-22 Roland Levillain <roland@lrde.epita.fr> + + * configure.ac: Configure milena/tests/fun/v2i/Makefile. + + 2010-04-23 Roland Levillain <roland@lrde.epita.fr> + + * configure.ac: Typo. + + 2013-06-28 Roland Levillain <roland@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@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@lrde.epita.fr> + + Mention bibtex2html and bib2bib as documentation build dependencies. + + * HACKING (Required Software): Here. + + 2013-06-18 Roland Levillain <roland@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@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@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@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@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@lrde.epita.fr> + + * doc/mln/labeling/labeling.dox: Write general documentation on + labeling. + +2013-05-13 Guillaume Lazzara <z@lrde.epita.fr> + + * doc/ref-guide.tex: Mention *_without_localization routines in + reference guide. + +2013-05-13 Guillaume Lazzara <z@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@lrde.epita.fr> + + * mln/core/routine/duplicate.hh: Document this routine. + +2013-04-30 Guillaume Lazzara <z@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@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@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@lrde.epita.fr> + + * mln/core/var.hh: Document mln_VAR(). + +2013-04-30 Guillaume Lazzara <z@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@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@lrde.epita.fr> + + * mln/core/site_set/box.hh: Add shrink() and to_smaller() members. + +2013-04-30 Guillaume Lazzara <z@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@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@lrde.epita.fr> + + * mln/core/concept/iterator.hh: Document iterator macros. + +2013-04-30 Guillaume Lazzara <z@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@lrde.epita.fr> + + * doc/Doxyfile.in: Hide 'It' symbol. + +2013-04-30 Guillaume Lazzara <z@lrde.epita.fr> + + * doc/mln/core/image/images.dox: Document generic image interface. + +2013-04-30 Guillaume Lazzara <z@lrde.epita.fr> + + * doc/mln/main.dox: Set macro module as top level entry. + +2013-04-30 Guillaume Lazzara <z@lrde.epita.fr> + + * mln/core/concept/image.hh: Document Image concept. + +2013-04-30 Guillaume Lazzara <z@lrde.epita.fr> + + * doc/mln/value/value/dox: Specify that built-in types can be + used. + +2013-04-29 Guillaume Lazzara <z@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@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@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@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@lrde.epita.fr> + + * tests/io/magick/save.cc: Kill compilation warnings. + +2013-04-23 Guillaume Lazzara <z@lrde.epita.fr> + + Add save options to magick::save. + + * mln/io/magick/save.hh: Add save_options structure. + +2013-04-23 Guillaume Lazzara <z@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@lrde.epita.fr> + + * tests/fun/Makefile.am: Remove duplicate subdir entry for v2v. + +2013-04-29 Guillaume Lazzara <z@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@lrde.epita.fr> + + * doc/mln/io/io.dox: List the required dependencies for each I/O + type. + +2013-04-26 Guillaume Lazzara <z@lrde.epita.fr> + + * mln/core/internal/image_base.hh: Add more documentation for + destroy() method. + +2013-04-25 Guillaume Lazzara <z@lrde.epita.fr> + + * doc/mln/topo/topo.dox: New. Introduce mathematical topology + module. + +2013-04-25 Guillaume Lazzara <z@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@lrde.epita.fr> + + * mln/make/relabelfun.hh: Fix bad variable replacement. + +2013-04-25 Guillaume Lazzara <z@lrde.epita.fr> + + * doc/Doxyfile.in: Enable BRIEF_MEMBER_DESC. + +2013-04-25 Guillaume Lazzara <z@lrde.epita.fr> + + * doc/split-examples.mk: Regen. + +2013-04-25 Guillaume Lazzara <z@lrde.epita.fr> + + * mln/core/concept/function.hh: Make Function_vv2b inherit from + Function_vv2v. + +2013-04-25 Guillaume Lazzara <z@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@lrde.epita.fr> + + * doc/mln/convert.dox: Fix a typo. + +2013-04-25 Guillaume Lazzara <z@lrde.epita.fr> + + * doc/Makefile.am: Do not regenerate non-generated images. + +2013-04-25 Guillaume Lazzara <z@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@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@lrde.epita.fr> + + * mln/core/concept/function.hh: Document function interface for + each concept. + +2013-04-19 Guillaume Lazzara <z@lrde.epita.fr> + + * mln/core/image/image2d_ffmpeg.hh: Fix compilation issues. + +2013-04-18 Guillaume Lazzara <z@lrde.epita.fr> + + * mln/core/image/image2d_ffmpeg.hh: Enable fastest access. + +2013-04-18 Guillaume Lazzara <z@lrde.epita.fr> + + * mln/core/image/image2d_ffmpeg.hh: New image type for ffmpeg frames. + +2013-04-18 Guillaume Lazzara <z@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@lrde.epita.fr> + + * mln/core/internal/pixel_impl.hh: Add change_offset(). + +2013-04-17 Guillaume Lazzara <z@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@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@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@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@lrde.epita.fr> + + * doc/mln/convert.dox: Fix typos. + +2013-04-19 Guillaume Lazzara <z@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@lrde.epita.fr> + + * mln/data/convert.hh: Introduce a new overload taking a + conversion function as parameter. + +2013-04-19 Guillaume Lazzara <z@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@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@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@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@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@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@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@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@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@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@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@lrde.epita.fr> + + Fix the distribution. + + * apps/generic-skel/Makefile.am (noinst_HEADERS): + Add image3d-skel.hh. + + 2013-08-31 Roland Levillain <roland@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@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@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@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@lrde.epita.fr> + + Disable tests/value/int_u32 in Milena. + + * tests/value/Makefile.am: Here. + + 2013-08-29 Roland Levillain <roland@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@lrde.epita.fr> + + * apps/generic-skel/image3d-skel.hh: Add `inline' qualifiers. + + 2011-07-11 Roland Levillain <roland@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@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@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@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@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@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@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@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@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@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@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@lrde.epita.fr> + + Add a 3D volume of the Stanford bunny. + + * img/bunny.pgm: New. + From Benjamin Raynal <raynalb@esiee.fr>. + Document it... + * img/README: ...here. + * Makefile.am (dist_img_DATA): Add img/bunny.pgm. + + 2011-06-01 Roland Levillain <roland@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@lrde.epita.fr> + + Regen Milena's Makefile helpers. + + * headers.mk, tests/unit_test/unit-tests.mk: Here. + + 2011-05-31 Roland Levillain <roland@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@lrde.epita.fr> + + Regen Milena's Makefile helpers. + + * headers.mk, tests/unit_test/unit-tests.mk: Here. + + 2010-07-28 Roland Levillain <roland@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@lrde.epita.fr> + + * mln/io/vtk/save.hh: Fix documentation. + + 2010-07-27 Roland Levillain <roland@lrde.epita.fr> + + * mln/io/vtk/all.hh: New. + + 2010-06-24 Roland Levillain <roland@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@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@lrde.epita.fr> + + Start a VTK output for complex-based images. + + * mln/io/vtk/save.hh: New. + + 2010-08-18 Roland Levillain <roland@lrde.epita.fr> + + * mln/topo/skeleton/breadth_first_thinning.hh: Reindent. + + 2010-08-18 Roland Levillain <roland@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@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@lrde.epita.fr> + + Split the interface of the FFT off from its implementation. + + * mln/transform/fft.hh: Here. + + 2012-10-10 Roland Levillain <roland@lrde.epita.fr> + + Stylistic changes in the Fast Fourier Transform. + + * mln/transform/fft.hh: Here. + + 2012-10-10 Roland Levillain <roland@lrde.epita.fr> + + Remove dead code in the Fast Fourier Transform. + + * mln/transform/fft.hh: Here. + + 2012-10-10 Roland Levillain <roland@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@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@lrde.epita.fr> + + Update copyright headers. + + * mln/transform/fft.hh, + * tests/transform/fft.cc: + Here. + + 2012-10-09 Roland Levillain <roland@lrde.epita.fr> + + * headers.mk, tests/unit_test/unit-tests.mk: Regen. + + 2012-10-09 Roland Levillain <roland@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@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@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@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@lrde.epita.fr> + + * mln/data/transform: Remove (empty) file. + + 2013-08-23 Roland Levillain <roland@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@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@lrde.epita.fr> + + * mln/core/image/dmorph/sub_image.hh: Fix indentation. + + 2013-08-22 Roland Levillain <roland@lrde.epita.fr> + + Enable tests/fun/v2i. + + * tests/fun/Makefile.am (SUBDIRS): Add v2i. + + 2012-07-19 Roland Levillain <roland@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@lrde.epita.fr> + + * mln/core/point.hh: Fix documentation. + + 2012-02-08 Roland Levillain <roland@lrde.epita.fr> + + * mln/morpho/watershed/flooding.hh: Uniformity-related changes. + + 2012-02-08 Roland Levillain <roland@lrde.epita.fr> + + * mln/data/stretch.hh: Do not name unused arguments. + + 2011-10-06 Roland Levillain <roland@lrde.epita.fr> + + * tests/util/line_graph.cc: Wrap long lines. + + 2011-10-06 Roland Levillain <roland@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@lrde.epita.fr> + + * tests/data/transform.cc: Aesthetic changes. + + 2011-07-12 Roland Levillain <roland@lrde.epita.fr> + + Improve the documentation of mln::util::set. + + * mln/util/set.hh: Here. + + 2011-07-12 Roland Levillain <roland@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@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@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@lrde.epita.fr> + + * mln/canvas/all.hh: Sort #include directives. + + 2010-08-17 Roland Levillain <roland@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@lrde.epita.fr> + + * mln/io/off/save.hh: Fix documentation. + + 2010-07-28 Roland Levillain <roland@lrde.epita.fr> + + Enforce coding style w.r.t. function declarations. + + * mln/io/magick/load.hh: Here. + + 2010-04-20 Roland Levillain <roland@lrde.epita.fr> + + Add Doxygen documentation to a test. + + * tests/topo/complex.cc: Here. + + 2010-04-20 Roland Levillain <roland@lrde.epita.fr> + + Fix Doxygen comments. + + * mln/value/int_u.hh, + * mln/value/rgb.hh: + Here. + + 2010-05-11 Roland Levillain <roland@lrde.epita.fr> + + Remove a useless comment line. + + * apps/Makefile.am: Here. + + 2010-05-11 Roland Levillain <roland@lrde.epita.fr> + + Wrap long lines. + + * mln/data/fill.hh: Here. + + 2010-05-10 Roland Levillain <roland@lrde.epita.fr> + + More conversions from C-style casts to C++-style casts. + + * mln/core/contract.hh: Here. + + 2010-02-08 Roland Levillain <roland@lrde.epita.fr> + + Use Doxygen comments properly. + + * mln/value/rgb.hh: Here. + + 2010-02-08 Roland Levillain <roland@lrde.epita.fr> + + Typos in comments. + + * mln/core/concept/function.hh: Here. + + 2009-09-24 Roland Levillain <roland@lrde.epita.fr> + + Reformat a documentation header. + + * mln/morpho/watershed/flooding.hh: Here. + + 2009-09-04 Roland Levillain <roland@lrde.epita.fr> + + Re-wrap a long line. + + * mln/labeling/flat_zones.hh: Here. + + 2009-06-17 Roland Levillain <roland@lrde.epita.fr> + + Remove useless C casts. + + * mln/fun/v2v/rgb_to_hsl.hh: Here. + + 2013-07-29 Roland Levillain <roland@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@lrde.epita.fr> + + Remove an inadvertently added file. + + * mln/linear/#ch_convolve.hh#: Remove. + + 2013-07-25 Roland Levillain <roland@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@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@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@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@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@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@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@lrde.epita.fr> + + Resolve ambiguous calls to operator* in value::qt::rgb32. + + * mln/value/qt/rgb32.hh: Here. + + 2013-06-20 Roland Levillain <roland@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@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@lrde.epita.fr> + + * doc/Doxyfile.in: Help Emacs fontify this file. + + 2013-06-18 Roland Levillain <roland@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@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@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@lrde.epita.fr> + + Update the documentation of mln_trace. + + * mln/debug/trace.hh: Here. + Aesthetic changes. + 2013-04-17 Guillaume Lazzara <z@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
participants (1)
-
myriam robert-seidowsky