* Makefile.am,
* tests/img/test_bw.tif,
* tests/img/test_gl.tif,
* tests/img/test_rgb8.tif: add new test images.
* headers.mk: update list of distributed files.
* mln/value/rgb.hh,
* mln/convert/from_to.hxx: add from_to overload from rgb8 to bool.
* mln/io/magick/load.hh: update doc.
* mln/io/tiff/load.hh: Fix loading of rgb files.
* tests/data.hh.in: add a new macro for test images directory.
* tests/io/Makefile.am,
* tests/io/tiff/Makefile.am,
* tests/io/tiff/load.cc: new test for io::tiff::load.
* tests/unit_test/unit-tests.mk: update unit test list.
---
milena/ChangeLog | 26 +++++++
milena/Makefile.am | 5 +
milena/headers.mk | 29 +++++++-
milena/mln/convert/from_to.hxx | 4 +
milena/mln/io/magick/load.hh | 2 +-
milena/mln/io/tiff/load.hh | 129 +++++++++++++++++++-------------
milena/mln/value/rgb.hh | 11 +++
milena/tests/data.hh.in | 10 ++-
milena/tests/img/test_bw.tif | Bin 0 -> 332 bytes
milena/tests/img/test_gl.tif | Bin 0 -> 352 bytes
milena/tests/img/test_rgb8.tif | Bin 0 -> 416 bytes
milena/tests/io/Makefile.am | 3 +-
milena/tests/io/{ => tiff}/Makefile.am | 17 ++--
milena/tests/io/tiff/load.cc | 97 ++++++++++++++++++++++++
milena/tests/unit_test/unit-tests.mk | 58 +++++++++++++-
15 files changed, 318 insertions(+), 73 deletions(-)
create mode 100644 milena/tests/img/test_bw.tif
create mode 100644 milena/tests/img/test_gl.tif
create mode 100644 milena/tests/img/test_rgb8.tif
copy milena/tests/io/{ => tiff}/Makefile.am (51%)
create mode 100644 milena/tests/io/tiff/load.cc
diff --git a/milena/ChangeLog b/milena/ChangeLog
index 7e6190d..76e2c32 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,5 +1,31 @@
2009-04-08 Guillaume Lazzara <lazzara(a)lrde.epita.fr>
+ Small fixes.
+
+ * Makefile.am,
+ * tests/img/test_bw.tif,
+ * tests/img/test_gl.tif,
+ * tests/img/test_rgb8.tif: add new test images.
+
+ * headers.mk: update list of distributed files.
+
+ * mln/value/rgb.hh,
+ * mln/convert/from_to.hxx: add from_to overload from rgb8 to bool.
+
+ * mln/io/magick/load.hh: update doc.
+
+ * mln/io/tiff/load.hh: Fix loading of rgb files.
+
+ * tests/data.hh.in: add a new macro for test images directory.
+
+ * tests/io/Makefile.am,
+ * tests/io/tiff/Makefile.am,
+ * tests/io/tiff/load.cc: new test for io::tiff::load.
+
+ * tests/unit_test/unit-tests.mk: update unit test list.
+
+2009-04-08 Guillaume Lazzara <lazzara(a)lrde.epita.fr>
+
Remove an invalid conversion operator from a morpher to a concrete
image.
diff --git a/milena/Makefile.am b/milena/Makefile.am
index a2b83c6..ffb87cc 100644
--- a/milena/Makefile.am
+++ b/milena/Makefile.am
@@ -55,6 +55,11 @@ img/tiny.ppm \
img/toto.pbm
EXTRA_DIST += \
+tests/img/test_rgb8.tif \
+tests/img/test_bw.tif \
+tests/img/test_gl.tif
+
+EXTRA_DIST += \
generate_dist_headers.sh\
tools \
tools/area_flooding.cc \
diff --git a/milena/headers.mk b/milena/headers.mk
index fd5844c..590621d 100644
--- a/milena/headers.mk
+++ b/milena/headers.mk
@@ -38,6 +38,7 @@ mln/draw/plot.hh \
mln/draw/line.hh \
mln/draw/essential.hh \
mln/pw/image.hh \
+mln/pw/internal/image_base.hh \
mln/pw/all.hh \
mln/pw/value.hh \
mln/pw/cst.hh \
@@ -139,10 +140,12 @@ mln/make/double_neighb2d.hh \
mln/make/image3d.hh \
mln/make/dpoint2d_h.hh \
mln/make/w_window.hh \
+mln/make/cell.hh \
mln/make/image.hh \
mln/make/vec.hh \
mln/make/all.hh \
mln/make/dual_neighb.hh \
+mln/make/attachment.hh \
mln/make/w_window3d.hh \
mln/make/mat.hh \
mln/make/win_chamfer.hh \
@@ -153,6 +156,7 @@ mln/make/box2d.hh \
mln/make/h_mat.hh \
mln/make/w_window2d.hh \
mln/make/box3d.hh \
+mln/make/detachment.hh \
mln/make/region_adjacency_graph.hh \
mln/make/relabelfun.hh \
mln/make/pixel.hh \
@@ -161,6 +165,7 @@ mln/make/box2d_h.hh \
mln/make/w_window1d.hh \
mln/make/image2d.hh \
mln/make/w_window_directional.hh \
+mln/make/rag_and_labeled_wsl.hh \
mln/make/w_window3d_int.hh \
mln/make/essential.hh \
mln/make/w_window1d_int.hh \
@@ -183,8 +188,10 @@ mln/extension/adjust_fill.hh \
mln/extension/fill.hh \
mln/extension/essential.hh \
mln/fun/p2b/chess.hh \
+mln/fun/p2b/tautology.hh \
mln/fun/p2b/all.hh \
mln/fun/p2b/has.hh \
+mln/fun/p2b/antilogy.hh \
mln/fun/p2b/big_chess.hh \
mln/fun/p2b/essential.hh \
mln/fun/p2p/all.hh \
@@ -378,6 +385,7 @@ mln/accu/min_h.hh \
mln/accu/site_set/rectangularity.hh \
mln/accu/site_set/all.hh \
mln/accu/site_set/essential.hh \
+mln/accu/stat/variance.hh \
mln/accu/stat/deviation.hh \
mln/accu/max.hh \
mln/accu/lor.hh \
@@ -399,11 +407,13 @@ mln/accu/transform.hh \
mln/accu/median_alt.hh \
mln/accu/volume.hh \
mln/accu/sum.hh \
+mln/accu/label_used.hh \
mln/accu/height.hh \
mln/accu/land.hh \
mln/accu/take.hh \
mln/accu/histo.hh \
mln/accu/pair.hh \
+mln/accu/count_labels.hh \
mln/accu/count_adjacent_vertices.hh \
mln/accu/convolve.hh \
mln/accu/v.hh \
@@ -458,9 +468,11 @@ mln/level/median.hh \
mln/math/jacobi.hh \
mln/math/max.hh \
mln/math/sqr.hh \
+mln/math/pi.hh \
mln/math/all.hh \
mln/math/sign.hh \
mln/math/abs.hh \
+mln/math/sin.hh \
mln/math/cos.hh \
mln/math/diff_abs.hh \
mln/math/round.hh \
@@ -612,10 +624,12 @@ mln/algebra/mat.hh \
mln/algebra/h_mat.hh \
mln/algebra/quat.hh \
mln/algebra/essential.hh \
+mln/linear/gaussian_directional_2d.hh \
mln/linear/convolve_2x1d.hh \
mln/linear/all.hh \
mln/linear/ch_convolve.hh \
mln/linear/gaussian.hh \
+mln/linear/gaussian_1d.hh \
mln/linear/convolve.hh \
mln/linear/sobel_2d.hh \
mln/linear/local/convolve.hh \
@@ -708,7 +722,9 @@ mln/morpho/essential.hh \
mln/topo/n_face_iter.hh \
mln/topo/face_iter.hh \
mln/topo/is_simple_2d.hh \
+mln/topo/detach.hh \
mln/topo/centered_iter_adapter.hh \
+mln/topo/is_n_face.hh \
mln/topo/internal/complex_set_iterator_base.hh \
mln/topo/internal/complex_iterator_base.hh \
mln/topo/internal/complex_relative_iterator_base.hh \
@@ -717,6 +733,7 @@ mln/topo/algebraic_n_face.hh \
mln/topo/attic/faces_iter.hh \
mln/topo/adj_lower_dim_connected_n_face_iter.hh \
mln/topo/n_face.hh \
+mln/topo/is_facet.hh \
mln/topo/adj_lower_higher_face_iter.hh \
mln/topo/all.hh \
mln/topo/face_data.hh \
@@ -724,9 +741,11 @@ mln/topo/static_n_face_iter.hh \
mln/topo/face.hh \
mln/topo/adj_m_face_iter.hh \
mln/topo/complex.hh \
+mln/topo/is_simple_cell.hh \
mln/topo/adj_higher_face_iter.hh \
mln/topo/adj_lower_face_iter.hh \
mln/topo/complex_iterators.hh \
+mln/topo/skeleton/breadth_first_thinning.hh \
mln/topo/center_only_iter.hh \
mln/topo/adj_higher_dim_connected_n_face_iter.hh \
mln/topo/algebraic_face.hh \
@@ -968,6 +987,7 @@ mln/core/image/interpolated.hh \
mln/core/image/lazy_image.hh \
mln/core/image/t_image.hh \
mln/core/image/hexa_piter.hh \
+mln/core/image/edge_image.hh \
mln/core/image/value_enc_image.hh \
mln/core/image/fun_image.hh \
mln/core/image/graph_elt_neighborhood.hh \
@@ -981,13 +1001,13 @@ mln/core/image/complex_window_piter.hh \
mln/core/image/tr_image.hh \
mln/core/image/sub_image.hh \
mln/core/image/rle_image.hh \
-mln/core/image/line_graph_elt_window.hh \
mln/core/image/mono_rle_encode.hh \
mln/core/image/bgraph_psite.hh \
mln/core/image/sparse_image.hh \
mln/core/image/bgraph_image.hh \
mln/core/image/complex_neighborhoods.hh \
mln/core/image/graph_window_piter.hh \
+mln/core/image/vertex_image.hh \
mln/core/image/sparse_encode.hh \
mln/core/image/safe.hh \
mln/core/image/extension_fun.hh \
@@ -995,7 +1015,6 @@ mln/core/image/image1d.hh \
mln/core/image/extension_val.hh \
mln/core/image/image_if.hh \
mln/core/image/hexa.hh \
-mln/core/image/line_graph_elt_neighborhood.hh \
mln/core/image/extended.hh \
mln/core/image/p2p_image.hh \
mln/core/image/slice_image.hh \
@@ -1022,6 +1041,7 @@ mln/labeling/level.hh \
mln/labeling/flat_zones.hh \
mln/labeling/foreground.hh \
mln/labeling/regional_maxima.hh \
+mln/labeling/wrap.hh \
mln/labeling/compute.hh \
mln/labeling/regional_minima.hh \
mln/labeling/essential.hh \
@@ -1069,6 +1089,7 @@ mln/io/cloud/save.hh \
mln/io/all.hh \
mln/io/magick/load.hh \
mln/io/magick/all.hh \
+mln/io/magick/save.hh \
mln/io/dump/load.hh \
mln/io/dump/all.hh \
mln/io/dump/save.hh \
@@ -1084,6 +1105,9 @@ mln/io/pnm/save.hh \
mln/io/pnm/save_header.hh \
mln/io/txt/all.hh \
mln/io/txt/save.hh \
+mln/io/tiff/load.hh \
+mln/io/tiff/all.hh \
+mln/io/tiff/save.hh \
mln/io/dicom/load.hh \
mln/io/abort.hh \
mln/io/fits/load.hh \
@@ -1091,6 +1115,7 @@ mln/io/fits/all.hh \
mln/io/off/load.hh \
mln/io/off/all.hh \
mln/io/off/save.hh \
+mln/io/plot/save.hh \
mln/io/essential.hh \
mln/logical/includes.hh \
mln/logical/and_not.hh \
diff --git a/milena/mln/convert/from_to.hxx b/milena/mln/convert/from_to.hxx
index d21304c..38cb062 100644
--- a/milena/mln/convert/from_to.hxx
+++ b/milena/mln/convert/from_to.hxx
@@ -197,6 +197,10 @@ namespace mln
void
from_to_(const value::rgb<8>& from,
value::hsl_<float,float,float>& to);
+ // rgb -> bool.
+ template <unsigned m>
+ void from_to_(const value::rgb<m>& from, bool& to);
+
// C-array -> Image.
template <typename V, unsigned S, typename I>
diff --git a/milena/mln/io/magick/load.hh b/milena/mln/io/magick/load.hh
index c67e1fa..e3a7659 100644
--- a/milena/mln/io/magick/load.hh
+++ b/milena/mln/io/magick/load.hh
@@ -29,7 +29,7 @@
# define MLN_IO_MAGICK_LOAD_HH
///
-/// \file mln/io/magick/load.hh
+/// \file mln/io/magick/load.hh
///
/// Define a function which loads an image of kind magick with
/// given path.
diff --git a/milena/mln/io/tiff/load.hh b/milena/mln/io/tiff/load.hh
index 1ee2ea1..5d33bd9 100644
--- a/milena/mln/io/tiff/load.hh
+++ b/milena/mln/io/tiff/load.hh
@@ -34,7 +34,8 @@
/// Load TIFF images to Milena images.
///
/// \todo Add support for several tiles.
-/// \todo Handle TIFFTAG_ORIENTATION (origin of the image).
+/// \todo Use ReadScanline instead of ReadRGBAImage in order to avoid a
+/// dispatch and share the same code whatever is the value type.
# include <iostream>
@@ -68,10 +69,11 @@ namespace mln
namespace internal
{
-
+
inline
point2d ij2rc_1(int i, int j, int ni_1, int nj_1)
{
+ (void) nj_1;
return point2d(ni_1 - i, j);
}
@@ -84,36 +86,43 @@ namespace mln
inline
point2d ij2rc_3(int i, int j, int ni_1, int nj_1)
{
+ (void) ni_1;
return point2d(i, nj_1 - j);
}
inline
point2d ij2rc_4(int i, int j, int ni_1, int nj_1)
{
+ (void) ni_1;
+ (void) nj_1;
return point2d(i, j);
}
inline
point2d ij2rc_5(int i, int j, int ni_1, int nj_1)
{
+ (void) nj_1;
return point2d(j, ni_1 - i);
}
inline
point2d ij2rc_6(int i, int j, int ni_1, int nj_1)
{
- return point2d(nj_1 - j, ni_1 - i);
+ return point2d(nj_1 - j, ni_1 - i);
}
inline
point2d ij2rc_7(int i, int j, int ni_1, int nj_1)
{
+ (void) ni_1;
return point2d(nj_1 - j, i);
}
inline
point2d ij2rc_8(int i, int j, int ni_1, int nj_1)
{
+ (void) ni_1;
+ (void) nj_1;
return point2d(j, i);
}
@@ -121,7 +130,7 @@ namespace mln
template <typename I>
inline
- void load_header(I& ima, TIFF *file)
+ I load_header(TIFF *file)
{
uint32 width, height;
@@ -129,7 +138,8 @@ namespace mln
TIFFGetField(file, TIFFTAG_IMAGELENGTH, &height);
mln_concrete(I) new_ima(height, width, 0);
- exact(ima) = new_ima;
+
+ return new_ima;
}
@@ -143,7 +153,7 @@ namespace mln
TIFFGetField(file, TIFFTAG_SAMPLESPERPIXEL, &samples_per_pixel);
uint16 data_size = bits_per_sample * samples_per_pixel;
- if (data_size != 24 || data_size != 32)
+ if (data_size != 24 && data_size != 32)
{
std::cout << "Trying to load a non color TIFF "
<< "image into a color Milena image." << std::endl;
@@ -160,26 +170,51 @@ namespace mln
abort();
}
- unsigned i = ima.nrows() - 1;
- unsigned j = 0;
- mln_piter(I) p(ima.domain());
- for_all(p)
- {
- unsigned idx = i * ima.ncols() + j;
- value::rgb8 v;
+ uint16 orientation;
+ TIFFGetField(file, TIFFTAG_ORIENTATION, &orientation);
- v.red() = (unsigned char) TIFFGetR(raster[idx]);
- v.green() = (unsigned char) TIFFGetG(raster[idx]);
- v.blue() = (unsigned char) TIFFGetB(raster[idx]);
- ima(p) = v;
+ typedef point2d (*fun_t)(int, int, int, int);
+ fun_t funs[] = { 0, ij2rc_1, ij2rc_2, ij2rc_3, ij2rc_4,
+ ij2rc_5, ij2rc_6, ij2rc_7, ij2rc_8 };
+ fun_t fun = funs[orientation];
+
+ int ni_1, nj_1;
+ unsigned idx = 0;
- ++j;
- if (!(j%ima.ncols()))
+ if (orientation <= 4)
{
- --i;
- j = 0;
+ ni_1 = ima.nrows() - 1;
+ nj_1 = ima.ncols() - 1;
+ for (int i = 0; i <= ni_1; ++i)
+ for (int j = 0; j <= nj_1; ++j)
+ {
+ value::rgb8 v;
+
+ v.red() = (unsigned char) TIFFGetR(raster[idx]);
+ v.green() = (unsigned char) TIFFGetG(raster[idx]);
+ v.blue() = (unsigned char) TIFFGetB(raster[idx]);
+ ima((*fun)(i, j, ni_1, nj_1)) = v;
+
+ ++idx;
+ }
+ }
+ else
+ {
+ nj_1 = ima.nrows() - 1;
+ ni_1 = ima.ncols() - 1;
+ for (int j = 0; j <= nj_1; ++j)
+ for (int i = 0; i <= ni_1; ++i)
+ {
+ value::rgb8 v;
+
+ v.red() = (unsigned char) TIFFGetR(raster[idx]);
+ v.green() = (unsigned char) TIFFGetG(raster[idx]);
+ v.blue() = (unsigned char) TIFFGetB(raster[idx]);
+ ima((*fun)(i, j, ni_1, nj_1)) = v;
+
+ ++idx;
+ }
}
- }
_TIFFfree(raster);
}
@@ -200,29 +235,33 @@ namespace mln
abort();
}
-
uint32 npixels = ima.ncols() * ima.nrows();
uint32 *raster = (uint32 *) _TIFFmalloc(npixels * sizeof (uint32));
- TIFFReadRGBAImage(file, ima.ncols(), ima.nrows(), raster, 0);
-
+ if (!TIFFReadRGBAImage(file, ima.ncols(), ima.nrows(), raster, 0))
+ {
+ std::cout << "Error while reading the image file. Is it corrupted?"
+ << std::endl;
+ abort();
+ }
uint16 orientation;
TIFFGetField(file, TIFFTAG_ORIENTATION, &orientation);
typedef point2d (*fun_t)(int, int, int, int);
- fun_t funs[] = { 0, ij2rc_1, ij2rc_2, ij2rc_3, ij2rc_4, ij2rc_5, ij2rc_6, ij2rc_7,
ij2rc_8 };
+ fun_t funs[] = { 0, ij2rc_1, ij2rc_2, ij2rc_3, ij2rc_4,
+ ij2rc_5, ij2rc_6, ij2rc_7, ij2rc_8 };
fun_t fun = funs[orientation];
int ni_1, nj_1;
unsigned idx = 0;
- if (orientation <= 4)
+ if (orientation <= 4)
{
ni_1 = ima.nrows() - 1;
nj_1 = ima.ncols() - 1;
- for (unsigned i = 0; i <= ni_1; ++i)
- for (unsigned j = 0; j <= nj_1; ++j)
+ for (int i = 0; i <= ni_1; ++i)
+ for (int j = 0; j <= nj_1; ++j)
{
ima((*fun)(i, j, ni_1, nj_1)) = (unsigned char) TIFFGetR(raster[idx++]);
}
@@ -231,31 +270,13 @@ namespace mln
{
nj_1 = ima.nrows() - 1;
ni_1 = ima.ncols() - 1;
- for (unsigned j = 0; j <= nj_1; ++j)
- for (unsigned i = 0; i <= ni_1; ++i)
+ for (int j = 0; j <= nj_1; ++j)
+ for (int i = 0; i <= ni_1; ++i)
{
ima((*fun)(i, j, ni_1, nj_1)) = (unsigned char) TIFFGetR(raster[idx++]);
}
}
- std::cout << std::endl;
-
-
-// unsigned i = ima.nrows() - 1;
-// unsigned j = 0;
-// mln_piter(I) p(ima.domain());
-// for_all(p)
-// {
-// unsigned idx = i * ima.ncols() + j;
-// ima(p) = (unsigned char) TIFFGetR(raster[idx]);
-// ++j;
-// if (!(j%ima.ncols()))
-// {
-// --i;
-// j = 0;
-// }
-// }
-
_TIFFfree(raster);
}
@@ -301,10 +322,12 @@ namespace mln
template <typename I>
inline
- void load(Image<I>& ima, const std::string& filename)
+ void load(Image<I>& ima_, const std::string& filename)
{
trace::entering("mln::io::tiff::load");
+ I& ima = exact(ima_);
+
TIFF *file = TIFFOpen(filename.c_str(), "r");
if (file == 0)
{
@@ -314,10 +337,10 @@ namespace mln
abort();
}
- internal::load_header(exact(ima), file);
- internal::load_data_dispatch(exact(ima), file);
+ ima = internal::load_header<I>(file);
+ internal::load_data_dispatch(ima, file);
- mln_postcondition(exact(ima).is_valid());
+ mln_postcondition(ima.is_valid());
(void) TIFFClose(file);
trace::exiting("mln::io::tiff::load");
diff --git a/milena/mln/value/rgb.hh b/milena/mln/value/rgb.hh
index a751c65..ebeeb5e 100644
--- a/milena/mln/value/rgb.hh
+++ b/milena/mln/value/rgb.hh
@@ -135,6 +135,10 @@ namespace mln
template <typename H, typename S, typename L>
void from_to_(const value::hsl_<H,S,L>&, value::rgb<16>& to);
+ // rgb -> bool.
+ template <unsigned m>
+ void from_to_(const value::rgb<m>& from, bool& to);
+
} // end of namespace mln::convert::over_load
} // end of namespace mln::convert
@@ -796,6 +800,13 @@ namespace mln
to = fun::v2v::f_hsl_to_rgb_3x16(from);
}
+ template <unsigned m>
+ void
+ from_to_(const value::rgb<m>& from, bool& to)
+ {
+ to = (from.red() != 0 && from.green() != 0 && from.blue() != 0);
+ }
+
} // end of namespace mln::convert::over_load
} // end of namespace mln::convert
diff --git a/milena/tests/data.hh.in b/milena/tests/data.hh.in
index f26299b..de0257e 100644
--- a/milena/tests/data.hh.in
+++ b/milena/tests/data.hh.in
@@ -1,4 +1,5 @@
-// Copyright (C) 2008 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2008, 2009 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of the Olena Library. This library is free
// software; you can redistribute it and/or modify it under the terms
@@ -33,10 +34,13 @@
/* Macros are evil, but they save us an extra compilation unit here
(as well as additional burden in Makefiles, too.). */
-/// \brief The absolute path to the img directory of Milena.
+/// The absolute path to the img directory of Milena.
# define MLN_IMG_DIR "@abs_top_srcdir@/milena/img"
-/// \brief The absolute path to the mesh directory of Milena.
+/// The absolute path to the img directory of Milena.
+# define MLN_TESTS_IMG_DIR "@abs_top_srcdir@/milena/tests/img"
+
+/// The absolute path to the mesh directory of Milena.
# define MLN_MESH_DIR "@abs_top_srcdir@/milena/mesh"
#endif // ! TESTS_DATA_HH
diff --git a/milena/tests/img/test_bw.tif b/milena/tests/img/test_bw.tif
new file mode 100644
index 0000000000000000000000000000000000000000..5a84c6a4c7e7044b25bd9497024f7ece35e819ac
GIT binary patch
literal 332
zcmYk2zY4-I5XLX{4>~9)sGtsY69*4>2SG(U2)=<t8*Q*@!3G5<@lkv>U&2Ma#0)(+
z?swt)zJvt92$}%!7*w9K*W|;X0beKrqcdBqV7W{S%dzL!=n9TY#AV0ETVoz9X}+oJ
z#O9t685-=LU!lF3%W37f?RZ9-j?-6(yR2m2Go_rK;{|a)=N&rsNN)<c3Nh2^;T)y0
z!YEY&V}8H$3&-r5U>b{r<4J0w1eLU_R43FT)4Tm`tmP44ei2-Y(7#C?`Kw^FHPLHo
I^96SP0N%bR?EnA(
literal 0
HcmV?d00001
diff --git a/milena/tests/img/test_gl.tif b/milena/tests/img/test_gl.tif
new file mode 100644
index 0000000000000000000000000000000000000000..1d9d0763c05a6263c8eb8b2222847e503eb88093
GIT binary patch
literal 352
zcmebD)M8L$U|?uqkpEzA!o|wWpf~?<`fnw^|IKU<3K>|!bQl^M7z7#qF|aT&0@Z;5
zBQu!I2IMdzv6-N34xl(Ql+6lcvq9M){k)7!46Z=>2N3fC*+M|t4k#hW2r(a|R|rYH
zC=y!?%60&%5r?Xm1+t|WS;6iJ0GcBWWk&$nGDvzgpll|fdJxc0%uUfRF3C^M&dATn
z)z8S!P1Vmytg1>ZO4Khd%hS)#NzF^tPtPm?vhwtEGr`=<+;sht)Z&u(^c=mC%rpiD
e=c3falGGH1^30M91$R&10FcohKn(IKm<9mHT`$}K
literal 0
HcmV?d00001
diff --git a/milena/tests/img/test_rgb8.tif b/milena/tests/img/test_rgb8.tif
new file mode 100644
index 0000000000000000000000000000000000000000..0bfc2fdfd69f8ba24c559c39e6cb752a8b87ef18
GIT binary patch
literal 416
zcmebD)M9XAU|?uqQ1Jhu!o|x}-Qb|GfJN{>7sKHNA2eD_68<w79}rlPW5e*hw`ozJ
zMT?b!R@>HOL5n*@k^0jQI4}q?{9|BYU<8^028_&LHXD$`h{R?BvYCNm3P6R-P;piu
zpAE`p0<w7-nHVB~v>H$iACN5sWY+=Nf{YOJIe>g2sCtlnqEI%-Trnuy0mv4Is<#BP
zr5IVk?wJ78APr^D0J3F}%+Y|dL2j@`VgtDh9AK!Qn46+sT#}!hosplDtDljdo2s9a
zSXGr+l&D`^mZzVelbV;PpPpF)Waa7SW`emTsl_G5`kDFqC7EgZdU{ZlnVYT;lF<W-
fGB_8dCYGe8D3oWGWGJ|M`UZfk^Z;Uz_rNp&W|u+T
literal 0
HcmV?d00001
diff --git a/milena/tests/io/Makefile.am b/milena/tests/io/Makefile.am
index 78986bd..cc4a0f8 100644
--- a/milena/tests/io/Makefile.am
+++ b/milena/tests/io/Makefile.am
@@ -10,4 +10,5 @@ SUBDIRS = \
pfm \
pgm \
pnm \
- ppm
+ ppm \
+ tiff
diff --git a/milena/tests/io/Makefile.am b/milena/tests/io/tiff/Makefile.am
similarity index 51%
copy from milena/tests/io/Makefile.am
copy to milena/tests/io/tiff/Makefile.am
index 78986bd..92fc55c 100644
--- a/milena/tests/io/Makefile.am
+++ b/milena/tests/io/tiff/Makefile.am
@@ -2,12 +2,11 @@
include $(top_srcdir)/milena/tests/tests.mk
-SUBDIRS = \
- dump \
- fits \
- off \
- pbm \
- pfm \
- pgm \
- pnm \
- ppm
+load_LDFLAGS=-ltiff
+
+check_PROGRAMS = \
+ load
+
+load_SOURCES = load.cc
+
+TESTS = $(check_PROGRAMS)
diff --git a/milena/tests/io/tiff/load.cc b/milena/tests/io/tiff/load.cc
new file mode 100644
index 0000000..d516828
--- /dev/null
+++ b/milena/tests/io/tiff/load.cc
@@ -0,0 +1,97 @@
+// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE)
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR 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 this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library 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.
+
+/// \file tests/io/tiff/load.cc
+///
+/// Test on mln::io::tiff::load.
+
+#include <mln/core/image/image2d.hh>
+#include <mln/io/tiff/load.hh>
+
+#include <mln/level/compare.hh>
+
+#include <mln/value/int_u8.hh>
+#include <mln/value/rgb8.hh>
+
+#include "tests/data.hh"
+
+#include <mln/debug/println.hh>
+
+using mln::value::rgb8;
+using mln::value::int_u8;
+
+rgb8 ref_rgb[6][6] = { { rgb8(0,0,0), rgb8(255,255,255), rgb8(255,255,255),
rgb8(255,255,255), rgb8(255,246,0), rgb8(0,0,0) },
+ { rgb8(255,255,255), rgb8(0,0,0), rgb8(255,255,255), rgb8(255,255,255),
rgb8(255,255,255), rgb8(0,0,0) },
+ { rgb8(0,255,48), rgb8(255,255,255), rgb8(255,0,0), rgb8(255,255,255),
rgb8(0,255,246), rgb8(0,0,0) },
+ { rgb8(255,255,255), rgb8(255,255,255), rgb8(255,255,255), rgb8(0,0,0),
rgb8(255,255,255), rgb8(0,0,0) },
+ { rgb8(42,0,255), rgb8(255,255,255), rgb8(255,255,255), rgb8(255,255,255),
rgb8(0,0,0), rgb8(0,0,0) },
+ { rgb8(0,0,0), rgb8(0,0,0), rgb8(0,0,0), rgb8(0,0,0), rgb8(0,0,0), rgb8(0,0,0) }
};
+
+int_u8 ref_gl[6][6] = { { 0, 255, 255, 255, 230, 0 },
+ { 255, 0, 255, 255, 255, 0 },
+ { 186, 255, 54, 255, 200, 0 },
+ { 255, 255, 255, 0, 255, 0 },
+ { 27, 255, 255, 255, 0, 0 },
+ { 0, 0, 0, 0, 0, 0 } };
+
+bool ref_bw[6][6] = { { 0, 1, 1, 1, 1, 0 },
+ { 1, 0, 1, 1, 1, 0 },
+ { 1, 1, 0, 1, 1, 0 },
+ { 1, 1, 1, 0, 1, 0 },
+ { 0, 1, 1, 1, 0, 0 },
+ { 0, 0, 0, 0, 0, 0 } };
+
+
+int main()
+{
+ using namespace mln;
+ using namespace mln::value;
+
+ /// Value: rgb8
+ {
+ image2d<rgb8> ref = make::image(ref_rgb);
+ image2d<rgb8> pic;
+ io::tiff::load(pic, MLN_TESTS_IMG_DIR "/test_rgb8.tif");
+ mln_assertion(pic == ref);
+ }
+
+ {
+ image2d<int_u8> ref = make::image(ref_gl);
+ image2d<int_u8> pic;
+ io::tiff::load(pic, MLN_TESTS_IMG_DIR "/test_gl.tif");
+ mln_assertion(pic == ref);
+ }
+
+ {
+ image2d<bool> ref = make::image(ref_bw);
+ image2d<bool> pic;
+ io::tiff::load(pic, MLN_TESTS_IMG_DIR "/test_bw.tif");
+ mln_assertion(pic == ref);
+ }
+
+}
+
diff --git a/milena/tests/unit_test/unit-tests.mk b/milena/tests/unit_test/unit-tests.mk
index c6bf5dd..15c6fcd 100644
--- a/milena/tests/unit_test/unit-tests.mk
+++ b/milena/tests/unit_test/unit-tests.mk
@@ -36,6 +36,7 @@ mln_draw_plot \
mln_draw_line \
mln_draw_essential \
mln_pw_image \
+mln_pw_internal_image_base \
mln_pw_all \
mln_pw_value \
mln_pw_cst \
@@ -134,10 +135,12 @@ mln_make_double_neighb2d \
mln_make_image3d \
mln_make_dpoint2d_h \
mln_make_w_window \
+mln_make_cell \
mln_make_image \
mln_make_vec \
mln_make_all \
mln_make_dual_neighb \
+mln_make_attachment \
mln_make_w_window3d \
mln_make_mat \
mln_make_win_chamfer \
@@ -148,6 +151,7 @@ mln_make_box2d \
mln_make_h_mat \
mln_make_w_window2d \
mln_make_box3d \
+mln_make_detachment \
mln_make_region_adjacency_graph \
mln_make_relabelfun \
mln_make_pixel \
@@ -156,6 +160,7 @@ mln_make_box2d_h \
mln_make_w_window1d \
mln_make_image2d \
mln_make_w_window_directional \
+mln_make_rag_and_labeled_wsl \
mln_make_w_window3d_int \
mln_make_essential \
mln_make_w_window1d_int \
@@ -178,8 +183,10 @@ mln_extension_adjust_fill \
mln_extension_fill \
mln_extension_essential \
mln_fun_p2b_chess \
+mln_fun_p2b_tautology \
mln_fun_p2b_all \
mln_fun_p2b_has \
+mln_fun_p2b_antilogy \
mln_fun_p2b_big_chess \
mln_fun_p2b_essential \
mln_fun_p2p_all \
@@ -373,6 +380,7 @@ mln_accu_min_h \
mln_accu_site_set_rectangularity \
mln_accu_site_set_all \
mln_accu_site_set_essential \
+mln_accu_stat_variance \
mln_accu_stat_deviation \
mln_accu_max \
mln_accu_lor \
@@ -394,11 +402,13 @@ mln_accu_transform \
mln_accu_median_alt \
mln_accu_volume \
mln_accu_sum \
+mln_accu_label_used \
mln_accu_height \
mln_accu_land \
mln_accu_take \
mln_accu_histo \
mln_accu_pair \
+mln_accu_count_labels \
mln_accu_count_adjacent_vertices \
mln_accu_convolve \
mln_accu_v \
@@ -451,9 +461,11 @@ mln_level_median \
mln_math_jacobi \
mln_math_max \
mln_math_sqr \
+mln_math_pi \
mln_math_all \
mln_math_sign \
mln_math_abs \
+mln_math_sin \
mln_math_cos \
mln_math_diff_abs \
mln_math_round \
@@ -605,10 +617,12 @@ mln_algebra_mat \
mln_algebra_h_mat \
mln_algebra_quat \
mln_algebra_essential \
+mln_linear_gaussian_directional_2d \
mln_linear_convolve_2x1d \
mln_linear_all \
mln_linear_ch_convolve \
mln_linear_gaussian \
+mln_linear_gaussian_1d \
mln_linear_convolve \
mln_linear_sobel_2d \
mln_linear_local_convolve \
@@ -700,7 +714,9 @@ mln_morpho_essential \
mln_topo_n_face_iter \
mln_topo_face_iter \
mln_topo_is_simple_2d \
+mln_topo_detach \
mln_topo_centered_iter_adapter \
+mln_topo_is_n_face \
mln_topo_internal_complex_set_iterator_base \
mln_topo_internal_complex_iterator_base \
mln_topo_internal_complex_relative_iterator_base \
@@ -709,6 +725,7 @@ mln_topo_algebraic_n_face \
mln_topo_attic_faces_iter \
mln_topo_adj_lower_dim_connected_n_face_iter \
mln_topo_n_face \
+mln_topo_is_facet \
mln_topo_adj_lower_higher_face_iter \
mln_topo_all \
mln_topo_face_data \
@@ -716,9 +733,11 @@ mln_topo_static_n_face_iter \
mln_topo_face \
mln_topo_adj_m_face_iter \
mln_topo_complex \
+mln_topo_is_simple_cell \
mln_topo_adj_higher_face_iter \
mln_topo_adj_lower_face_iter \
mln_topo_complex_iterators \
+mln_topo_skeleton_breadth_first_thinning \
mln_topo_center_only_iter \
mln_topo_adj_higher_dim_connected_n_face_iter \
mln_topo_algebraic_face \
@@ -943,6 +962,7 @@ mln_core_image_interpolated \
mln_core_image_lazy_image \
mln_core_image_t_image \
mln_core_image_hexa_piter \
+mln_core_image_edge_image \
mln_core_image_value_enc_image \
mln_core_image_fun_image \
mln_core_image_graph_elt_neighborhood \
@@ -956,13 +976,13 @@ mln_core_image_complex_window_piter \
mln_core_image_tr_image \
mln_core_image_sub_image \
mln_core_image_rle_image \
-mln_core_image_line_graph_elt_window \
mln_core_image_mono_rle_encode \
mln_core_image_bgraph_psite \
mln_core_image_sparse_image \
mln_core_image_bgraph_image \
mln_core_image_complex_neighborhoods \
mln_core_image_graph_window_piter \
+mln_core_image_vertex_image \
mln_core_image_sparse_encode \
mln_core_image_safe \
mln_core_image_extension_fun \
@@ -970,7 +990,6 @@ mln_core_image_image1d \
mln_core_image_extension_val \
mln_core_image_image_if \
mln_core_image_hexa \
-mln_core_image_line_graph_elt_neighborhood \
mln_core_image_extended \
mln_core_image_p2p_image \
mln_core_image_slice_image \
@@ -996,6 +1015,7 @@ mln_labeling_level \
mln_labeling_flat_zones \
mln_labeling_foreground \
mln_labeling_regional_maxima \
+mln_labeling_wrap \
mln_labeling_compute \
mln_labeling_regional_minima \
mln_labeling_essential \
@@ -1040,6 +1060,7 @@ mln_io_cloud_save \
mln_io_all \
mln_io_magick_load \
mln_io_magick_all \
+mln_io_magick_save \
mln_io_dump_load \
mln_io_dump_all \
mln_io_dump_save \
@@ -1055,6 +1076,9 @@ mln_io_pnm_save \
mln_io_pnm_save_header \
mln_io_txt_all \
mln_io_txt_save \
+mln_io_tiff_load \
+mln_io_tiff_all \
+mln_io_tiff_save \
mln_io_dicom_load \
mln_io_abort \
mln_io_fits_load \
@@ -1062,6 +1086,7 @@ mln_io_fits_all \
mln_io_off_load \
mln_io_off_all \
mln_io_off_save \
+mln_io_plot_save \
mln_io_essential \
mln_logical_includes \
mln_logical_and_not \
@@ -1155,6 +1180,7 @@ mln_draw_plot_SOURCES = mln_draw_plot.cc
mln_draw_line_SOURCES = mln_draw_line.cc
mln_draw_essential_SOURCES = mln_draw_essential.cc
mln_pw_image_SOURCES = mln_pw_image.cc
+mln_pw_internal_image_base_SOURCES = mln_pw_internal_image_base.cc
mln_pw_all_SOURCES = mln_pw_all.cc
mln_pw_value_SOURCES = mln_pw_value.cc
mln_pw_cst_SOURCES = mln_pw_cst.cc
@@ -1253,10 +1279,12 @@ mln_make_double_neighb2d_SOURCES = mln_make_double_neighb2d.cc
mln_make_image3d_SOURCES = mln_make_image3d.cc
mln_make_dpoint2d_h_SOURCES = mln_make_dpoint2d_h.cc
mln_make_w_window_SOURCES = mln_make_w_window.cc
+mln_make_cell_SOURCES = mln_make_cell.cc
mln_make_image_SOURCES = mln_make_image.cc
mln_make_vec_SOURCES = mln_make_vec.cc
mln_make_all_SOURCES = mln_make_all.cc
mln_make_dual_neighb_SOURCES = mln_make_dual_neighb.cc
+mln_make_attachment_SOURCES = mln_make_attachment.cc
mln_make_w_window3d_SOURCES = mln_make_w_window3d.cc
mln_make_mat_SOURCES = mln_make_mat.cc
mln_make_win_chamfer_SOURCES = mln_make_win_chamfer.cc
@@ -1267,6 +1295,7 @@ mln_make_box2d_SOURCES = mln_make_box2d.cc
mln_make_h_mat_SOURCES = mln_make_h_mat.cc
mln_make_w_window2d_SOURCES = mln_make_w_window2d.cc
mln_make_box3d_SOURCES = mln_make_box3d.cc
+mln_make_detachment_SOURCES = mln_make_detachment.cc
mln_make_region_adjacency_graph_SOURCES = mln_make_region_adjacency_graph.cc
mln_make_relabelfun_SOURCES = mln_make_relabelfun.cc
mln_make_pixel_SOURCES = mln_make_pixel.cc
@@ -1275,6 +1304,7 @@ mln_make_box2d_h_SOURCES = mln_make_box2d_h.cc
mln_make_w_window1d_SOURCES = mln_make_w_window1d.cc
mln_make_image2d_SOURCES = mln_make_image2d.cc
mln_make_w_window_directional_SOURCES = mln_make_w_window_directional.cc
+mln_make_rag_and_labeled_wsl_SOURCES = mln_make_rag_and_labeled_wsl.cc
mln_make_w_window3d_int_SOURCES = mln_make_w_window3d_int.cc
mln_make_essential_SOURCES = mln_make_essential.cc
mln_make_w_window1d_int_SOURCES = mln_make_w_window1d_int.cc
@@ -1297,8 +1327,10 @@ mln_extension_adjust_fill_SOURCES = mln_extension_adjust_fill.cc
mln_extension_fill_SOURCES = mln_extension_fill.cc
mln_extension_essential_SOURCES = mln_extension_essential.cc
mln_fun_p2b_chess_SOURCES = mln_fun_p2b_chess.cc
+mln_fun_p2b_tautology_SOURCES = mln_fun_p2b_tautology.cc
mln_fun_p2b_all_SOURCES = mln_fun_p2b_all.cc
mln_fun_p2b_has_SOURCES = mln_fun_p2b_has.cc
+mln_fun_p2b_antilogy_SOURCES = mln_fun_p2b_antilogy.cc
mln_fun_p2b_big_chess_SOURCES = mln_fun_p2b_big_chess.cc
mln_fun_p2b_essential_SOURCES = mln_fun_p2b_essential.cc
mln_fun_p2p_all_SOURCES = mln_fun_p2p_all.cc
@@ -1492,6 +1524,7 @@ mln_accu_min_h_SOURCES = mln_accu_min_h.cc
mln_accu_site_set_rectangularity_SOURCES = mln_accu_site_set_rectangularity.cc
mln_accu_site_set_all_SOURCES = mln_accu_site_set_all.cc
mln_accu_site_set_essential_SOURCES = mln_accu_site_set_essential.cc
+mln_accu_stat_variance_SOURCES = mln_accu_stat_variance.cc
mln_accu_stat_deviation_SOURCES = mln_accu_stat_deviation.cc
mln_accu_max_SOURCES = mln_accu_max.cc
mln_accu_lor_SOURCES = mln_accu_lor.cc
@@ -1513,11 +1546,13 @@ mln_accu_transform_SOURCES = mln_accu_transform.cc
mln_accu_median_alt_SOURCES = mln_accu_median_alt.cc
mln_accu_volume_SOURCES = mln_accu_volume.cc
mln_accu_sum_SOURCES = mln_accu_sum.cc
+mln_accu_label_used_SOURCES = mln_accu_label_used.cc
mln_accu_height_SOURCES = mln_accu_height.cc
mln_accu_land_SOURCES = mln_accu_land.cc
mln_accu_take_SOURCES = mln_accu_take.cc
mln_accu_histo_SOURCES = mln_accu_histo.cc
mln_accu_pair_SOURCES = mln_accu_pair.cc
+mln_accu_count_labels_SOURCES = mln_accu_count_labels.cc
mln_accu_count_adjacent_vertices_SOURCES = mln_accu_count_adjacent_vertices.cc
mln_accu_convolve_SOURCES = mln_accu_convolve.cc
mln_accu_v_SOURCES = mln_accu_v.cc
@@ -1570,9 +1605,11 @@ mln_level_median_SOURCES = mln_level_median.cc
mln_math_jacobi_SOURCES = mln_math_jacobi.cc
mln_math_max_SOURCES = mln_math_max.cc
mln_math_sqr_SOURCES = mln_math_sqr.cc
+mln_math_pi_SOURCES = mln_math_pi.cc
mln_math_all_SOURCES = mln_math_all.cc
mln_math_sign_SOURCES = mln_math_sign.cc
mln_math_abs_SOURCES = mln_math_abs.cc
+mln_math_sin_SOURCES = mln_math_sin.cc
mln_math_cos_SOURCES = mln_math_cos.cc
mln_math_diff_abs_SOURCES = mln_math_diff_abs.cc
mln_math_round_SOURCES = mln_math_round.cc
@@ -1724,10 +1761,12 @@ mln_algebra_mat_SOURCES = mln_algebra_mat.cc
mln_algebra_h_mat_SOURCES = mln_algebra_h_mat.cc
mln_algebra_quat_SOURCES = mln_algebra_quat.cc
mln_algebra_essential_SOURCES = mln_algebra_essential.cc
+mln_linear_gaussian_directional_2d_SOURCES = mln_linear_gaussian_directional_2d.cc
mln_linear_convolve_2x1d_SOURCES = mln_linear_convolve_2x1d.cc
mln_linear_all_SOURCES = mln_linear_all.cc
mln_linear_ch_convolve_SOURCES = mln_linear_ch_convolve.cc
mln_linear_gaussian_SOURCES = mln_linear_gaussian.cc
+mln_linear_gaussian_1d_SOURCES = mln_linear_gaussian_1d.cc
mln_linear_convolve_SOURCES = mln_linear_convolve.cc
mln_linear_sobel_2d_SOURCES = mln_linear_sobel_2d.cc
mln_linear_local_convolve_SOURCES = mln_linear_local_convolve.cc
@@ -1819,7 +1858,9 @@ mln_morpho_essential_SOURCES = mln_morpho_essential.cc
mln_topo_n_face_iter_SOURCES = mln_topo_n_face_iter.cc
mln_topo_face_iter_SOURCES = mln_topo_face_iter.cc
mln_topo_is_simple_2d_SOURCES = mln_topo_is_simple_2d.cc
+mln_topo_detach_SOURCES = mln_topo_detach.cc
mln_topo_centered_iter_adapter_SOURCES = mln_topo_centered_iter_adapter.cc
+mln_topo_is_n_face_SOURCES = mln_topo_is_n_face.cc
mln_topo_internal_complex_set_iterator_base_SOURCES =
mln_topo_internal_complex_set_iterator_base.cc
mln_topo_internal_complex_iterator_base_SOURCES =
mln_topo_internal_complex_iterator_base.cc
mln_topo_internal_complex_relative_iterator_base_SOURCES =
mln_topo_internal_complex_relative_iterator_base.cc
@@ -1828,6 +1869,7 @@ mln_topo_algebraic_n_face_SOURCES = mln_topo_algebraic_n_face.cc
mln_topo_attic_faces_iter_SOURCES = mln_topo_attic_faces_iter.cc
mln_topo_adj_lower_dim_connected_n_face_iter_SOURCES =
mln_topo_adj_lower_dim_connected_n_face_iter.cc
mln_topo_n_face_SOURCES = mln_topo_n_face.cc
+mln_topo_is_facet_SOURCES = mln_topo_is_facet.cc
mln_topo_adj_lower_higher_face_iter_SOURCES = mln_topo_adj_lower_higher_face_iter.cc
mln_topo_all_SOURCES = mln_topo_all.cc
mln_topo_face_data_SOURCES = mln_topo_face_data.cc
@@ -1835,9 +1877,11 @@ mln_topo_static_n_face_iter_SOURCES =
mln_topo_static_n_face_iter.cc
mln_topo_face_SOURCES = mln_topo_face.cc
mln_topo_adj_m_face_iter_SOURCES = mln_topo_adj_m_face_iter.cc
mln_topo_complex_SOURCES = mln_topo_complex.cc
+mln_topo_is_simple_cell_SOURCES = mln_topo_is_simple_cell.cc
mln_topo_adj_higher_face_iter_SOURCES = mln_topo_adj_higher_face_iter.cc
mln_topo_adj_lower_face_iter_SOURCES = mln_topo_adj_lower_face_iter.cc
mln_topo_complex_iterators_SOURCES = mln_topo_complex_iterators.cc
+mln_topo_skeleton_breadth_first_thinning_SOURCES =
mln_topo_skeleton_breadth_first_thinning.cc
mln_topo_center_only_iter_SOURCES = mln_topo_center_only_iter.cc
mln_topo_adj_higher_dim_connected_n_face_iter_SOURCES =
mln_topo_adj_higher_dim_connected_n_face_iter.cc
mln_topo_algebraic_face_SOURCES = mln_topo_algebraic_face.cc
@@ -2062,6 +2106,7 @@ mln_core_image_interpolated_SOURCES =
mln_core_image_interpolated.cc
mln_core_image_lazy_image_SOURCES = mln_core_image_lazy_image.cc
mln_core_image_t_image_SOURCES = mln_core_image_t_image.cc
mln_core_image_hexa_piter_SOURCES = mln_core_image_hexa_piter.cc
+mln_core_image_edge_image_SOURCES = mln_core_image_edge_image.cc
mln_core_image_value_enc_image_SOURCES = mln_core_image_value_enc_image.cc
mln_core_image_fun_image_SOURCES = mln_core_image_fun_image.cc
mln_core_image_graph_elt_neighborhood_SOURCES = mln_core_image_graph_elt_neighborhood.cc
@@ -2075,13 +2120,13 @@ mln_core_image_complex_window_piter_SOURCES =
mln_core_image_complex_window_pite
mln_core_image_tr_image_SOURCES = mln_core_image_tr_image.cc
mln_core_image_sub_image_SOURCES = mln_core_image_sub_image.cc
mln_core_image_rle_image_SOURCES = mln_core_image_rle_image.cc
-mln_core_image_line_graph_elt_window_SOURCES = mln_core_image_line_graph_elt_window.cc
mln_core_image_mono_rle_encode_SOURCES = mln_core_image_mono_rle_encode.cc
mln_core_image_bgraph_psite_SOURCES = mln_core_image_bgraph_psite.cc
mln_core_image_sparse_image_SOURCES = mln_core_image_sparse_image.cc
mln_core_image_bgraph_image_SOURCES = mln_core_image_bgraph_image.cc
mln_core_image_complex_neighborhoods_SOURCES = mln_core_image_complex_neighborhoods.cc
mln_core_image_graph_window_piter_SOURCES = mln_core_image_graph_window_piter.cc
+mln_core_image_vertex_image_SOURCES = mln_core_image_vertex_image.cc
mln_core_image_sparse_encode_SOURCES = mln_core_image_sparse_encode.cc
mln_core_image_safe_SOURCES = mln_core_image_safe.cc
mln_core_image_extension_fun_SOURCES = mln_core_image_extension_fun.cc
@@ -2089,7 +2134,6 @@ mln_core_image_image1d_SOURCES = mln_core_image_image1d.cc
mln_core_image_extension_val_SOURCES = mln_core_image_extension_val.cc
mln_core_image_image_if_SOURCES = mln_core_image_image_if.cc
mln_core_image_hexa_SOURCES = mln_core_image_hexa.cc
-mln_core_image_line_graph_elt_neighborhood_SOURCES =
mln_core_image_line_graph_elt_neighborhood.cc
mln_core_image_extended_SOURCES = mln_core_image_extended.cc
mln_core_image_p2p_image_SOURCES = mln_core_image_p2p_image.cc
mln_core_image_slice_image_SOURCES = mln_core_image_slice_image.cc
@@ -2115,6 +2159,7 @@ mln_labeling_level_SOURCES = mln_labeling_level.cc
mln_labeling_flat_zones_SOURCES = mln_labeling_flat_zones.cc
mln_labeling_foreground_SOURCES = mln_labeling_foreground.cc
mln_labeling_regional_maxima_SOURCES = mln_labeling_regional_maxima.cc
+mln_labeling_wrap_SOURCES = mln_labeling_wrap.cc
mln_labeling_compute_SOURCES = mln_labeling_compute.cc
mln_labeling_regional_minima_SOURCES = mln_labeling_regional_minima.cc
mln_labeling_essential_SOURCES = mln_labeling_essential.cc
@@ -2159,6 +2204,7 @@ mln_io_cloud_save_SOURCES = mln_io_cloud_save.cc
mln_io_all_SOURCES = mln_io_all.cc
mln_io_magick_load_SOURCES = mln_io_magick_load.cc
mln_io_magick_all_SOURCES = mln_io_magick_all.cc
+mln_io_magick_save_SOURCES = mln_io_magick_save.cc
mln_io_dump_load_SOURCES = mln_io_dump_load.cc
mln_io_dump_all_SOURCES = mln_io_dump_all.cc
mln_io_dump_save_SOURCES = mln_io_dump_save.cc
@@ -2174,6 +2220,9 @@ mln_io_pnm_save_SOURCES = mln_io_pnm_save.cc
mln_io_pnm_save_header_SOURCES = mln_io_pnm_save_header.cc
mln_io_txt_all_SOURCES = mln_io_txt_all.cc
mln_io_txt_save_SOURCES = mln_io_txt_save.cc
+mln_io_tiff_load_SOURCES = mln_io_tiff_load.cc
+mln_io_tiff_all_SOURCES = mln_io_tiff_all.cc
+mln_io_tiff_save_SOURCES = mln_io_tiff_save.cc
mln_io_dicom_load_SOURCES = mln_io_dicom_load.cc
mln_io_abort_SOURCES = mln_io_abort.cc
mln_io_fits_load_SOURCES = mln_io_fits_load.cc
@@ -2181,6 +2230,7 @@ mln_io_fits_all_SOURCES = mln_io_fits_all.cc
mln_io_off_load_SOURCES = mln_io_off_load.cc
mln_io_off_all_SOURCES = mln_io_off_all.cc
mln_io_off_save_SOURCES = mln_io_off_save.cc
+mln_io_plot_save_SOURCES = mln_io_plot_save.cc
mln_io_essential_SOURCES = mln_io_essential.cc
mln_logical_includes_SOURCES = mln_logical_includes.cc
mln_logical_and_not_SOURCES = mln_logical_and_not.cc
--
1.5.6.5