* tests/morpho/Makefile.am (check_PROGRAMS): Re-enable
graph_image_morpho, lena_line_graph_image_wst1,
line_graph_image_wst and line_graph_image_morpho.
* tests/morpho/graph_image_morpho.cc
* tests/morpho/line_graph_image_morpho.cc:
Add missing code from tests/core/image/graph_image.cc and
tests/core/image/line_graph_image.cc to have this test pass again.
* tests/morpho/lena_line_graph_image_wst1.cc: Catch up with
util::ord usage and domain's has() semantics.
---
milena/ChangeLog | 14 ++++++++
milena/tests/core/image/Makefile.am | 3 ++
milena/tests/morpho/Makefile.am | 8 ++--
milena/tests/morpho/graph_image_morpho.cc | 36 +++++++++++++++++++++
milena/tests/morpho/lena_line_graph_image_wst1.cc | 7 +++-
milena/tests/morpho/line_graph_image_morpho.cc | 3 ++
6 files changed, 65 insertions(+), 6 deletions(-)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index abe1c4e..193a46d 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,5 +1,19 @@
2008-09-23 Roland Levillain <roland(a)lrde.epita.fr>
+ Fix more morphological tests on graph-based images.
+
+ * tests/morpho/Makefile.am (check_PROGRAMS): Re-enable
+ graph_image_morpho, lena_line_graph_image_wst1,
+ line_graph_image_wst and line_graph_image_morpho.
+ * tests/morpho/graph_image_morpho.cc
+ * tests/morpho/line_graph_image_morpho.cc:
+ Add missing code from tests/core/image/graph_image.cc and
+ tests/core/image/line_graph_image.cc to have this test pass again.
+ * tests/morpho/lena_line_graph_image_wst1.cc: Catch up with
+ util::ord usage and domain's has() semantics.
+
+2008-09-23 Roland Levillain <roland(a)lrde.epita.fr>
+
Have morphological erosion work on non-classical image types.
* mln/morpho/erosion.spe.hh
diff --git a/milena/tests/core/image/Makefile.am b/milena/tests/core/image/Makefile.am
index bf39e2b..dc247cc 100644
--- a/milena/tests/core/image/Makefile.am
+++ b/milena/tests/core/image/Makefile.am
@@ -36,6 +36,9 @@ cast_image_SOURCES = cast_image.cc
complex_image_SOURCES = complex_image.cc
decorated_image_SOURCES = decorated_image.cc
graph_image_SOURCES = graph_image.cc
+### FIXME: graph_image_wst is almost a clone of graph_image: move it
+### into tests/morpho and turn it into a real test on the WST (see
+### line_graph_image_wst).
##graph_image_wst_SOURCES = graph_image_wst.cc
flat_image_SOURCES = flat_image.cc
##hexa_SOURCES = hexa.cc
diff --git a/milena/tests/morpho/Makefile.am b/milena/tests/morpho/Makefile.am
index 36f11dd..48e3a82 100644
--- a/milena/tests/morpho/Makefile.am
+++ b/milena/tests/morpho/Makefile.am
@@ -15,13 +15,13 @@ check_PROGRAMS = \
erosion_min_h \
gradient \
gradient_elementary \
-## graph_image_morpho \
+ graph_image_morpho \
hit_or_miss \
laplacian \
-## lena_line_graph_image_wst1 \
+ lena_line_graph_image_wst1 \
lena_line_graph_image_wst2 \
-## line_graph_image_wst \
-## line_graph_image_morpho \
+ line_graph_image_wst \
+ line_graph_image_morpho \
meyer_wst \
meyer_wst_long \
opening_area \
diff --git a/milena/tests/morpho/graph_image_morpho.cc b/milena/tests/morpho/graph_image_morpho.cc
index 2acc5a5..0653953 100644
--- a/milena/tests/morpho/graph_image_morpho.cc
+++ b/milena/tests/morpho/graph_image_morpho.cc
@@ -38,6 +38,7 @@
#include <mln/core/image/graph_window_piter.hh>
#include <mln/morpho/dilation.hh>
+#include <mln/morpho/erosion.hh>
#include <mln/draw/graph.hh>
#include <mln/debug/iota.hh>
@@ -105,10 +106,45 @@ int main()
// Initialize values.
debug::iota(ima);
+ /*-------------------------------------.
+ | Image representation/visualization. |
+ `-------------------------------------*/
+
+ // Compute the bounding box of IMA.
+ /* FIXME: mln::graph_image should automatically feature a bbox when
+ its parameter P is akin to a point. */
+ accu::bbox<point2d> a;
+ for (std::vector<point2d>::const_iterator i = points.begin();
+ i != points.end(); ++i)
+ a.take(*i);
+ box2d bbox = a.to_result();
+ // Print the image.
+ /* FIXME: Unfortunately, displaying graph images is not easy right
+ now (2008-02-05). We could use
+
+ debug::println(ima);
+
+ but there's not specialization working for graph_image; the one
+ selected by the compiler is based on a 2-D bbox, and expects the
+ interface of graph_image to work with points (not psites).
+ Moreover, this implementation only shows *values*, not the graph
+ itslef.
+
+ An alternative is to use draw::graph (which, again, is misnamed),
+ but it doesn't show the values, only the vertices and edges of the
+ graph.
+
+ The current solution is a mix between draw::graph and hand-made
+ iterations. */
+ image2d<int> ima_rep(bbox);
+
/*--------------------------.
| Processing graph images. |
`--------------------------*/
+ typedef graph_elt_window<point2d> win_t;
+ win_t win;
+
graph_image<point2d, int> ima_dil = morpho::dilation(ima, win);
draw::graph(ima_rep, ima_dil, 9);
debug::println(ima_rep);
diff --git a/milena/tests/morpho/lena_line_graph_image_wst1.cc b/milena/tests/morpho/lena_line_graph_image_wst1.cc
index 0af7832..d60980f 100644
--- a/milena/tests/morpho/lena_line_graph_image_wst1.cc
+++ b/milena/tests/morpho/lena_line_graph_image_wst1.cc
@@ -46,8 +46,11 @@
in it, interpolating inter-pixel points;
\li print the watershed on lines into that same image, and save it. */
+#include <map>
#include <vector>
+#include <mln/util/ord.hh>
+
#include <mln/core/image/image2d.hh>
#include <mln/core/alias/point2d.hh>
#include <mln/core/alias/window2d.hh>
@@ -112,7 +115,7 @@ int main()
exhibits the lack of a service from util::graph (or a another,
missing tool) regarding the retrieval of vertex ids from
points. */
- std::map<point2d, util::vertex_id> points;
+ std::map<point2d, util::vertex_id, util::ord<point2d> > points;
util::vertex_id id = 0;
// Vertices.
@@ -136,7 +139,7 @@ int main()
mln_fwd_qiter_(window2d) q(next_c4_win, p);
for_all (p)
for_all (q)
- if (work.has(q))
+ if (work.domain().has(q))
{
g.add_edge(points[p], points[q]);
edge_values.push_back(math::max(work(p), work(q)));
diff --git a/milena/tests/morpho/line_graph_image_morpho.cc b/milena/tests/morpho/line_graph_image_morpho.cc
index a3c74cf..43bf66b 100644
--- a/milena/tests/morpho/line_graph_image_morpho.cc
+++ b/milena/tests/morpho/line_graph_image_morpho.cc
@@ -109,6 +109,9 @@ int main()
| Processing graph images. |
`--------------------------*/
+ typedef line_graph_elt_window<point2d> win_t;
+ win_t win;
+
line_graph_image<point2d, int> ima_dil = morpho::dilation(ima, win);
// Manual iteration over the domain of IMA_DIL.
mln_piter_(ima_t) p_dil(ima_dil.domain());
--
1.6.0.1
Je viens de boucler la migration des dernières classes concernant les
graphes et images de graphes ce soir. J'ai mis à jour la page du Trac
qui référence les fichiers concernés :
https://trac.lrde.org/olena/wiki/Olena/GraphBasedImages
Ça peut t'être utile pour retrouver l'information nécessaire à ton
travail.
La plupart des tests passent, sauf ceux qui utilisent la morpho
élémentaire (à cause du nouveau dispatcher dynamique de l'érosion et
de la dilatation, mais c'est un autre sujet).
Ne pas hésiter à me solliciter en cas de doute. Je vais continuer mon
travail sur les complexes, en suivant/poursuivant un chemin parallèle
au tient vis-à-vis des graphes : tu peux y jeter un oeil pour t'en
inspirer.
Bon courage !
---
milena/ChangeLog | 4 ++++
milena/mln/core/site_set/p_graph.hh | 2 +-
2 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index 5c3f153..453bd0f 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,5 +1,9 @@
2008-09-22 Roland Levillain <roland(a)lrde.epita.fr>
+ * mln/core/site_set/p_graph.hh (operator<=): Typo in comment.
+
+2008-09-22 Roland Levillain <roland(a)lrde.epita.fr>
+
Update mln::draw::line w.r.t to mln::p_line2d.
* mln/draw/line.hh (mln::draw::line): s/line2d/p_line2d/.
diff --git a/milena/mln/core/site_set/p_graph.hh b/milena/mln/core/site_set/p_graph.hh
index 073b91f..b714d0b 100644
--- a/milena/mln/core/site_set/p_graph.hh
+++ b/milena/mln/core/site_set/p_graph.hh
@@ -185,7 +185,7 @@ namespace mln
/// \brief Inclusion of a mln::p_graph in another one.
///
/// This inclusion relation is very strict for the moment, since our
- /// infrastrure for graphs is simple: a mln::p_graph is included
+ /// infrastructure for graphs is simple: a mln::p_graph is included
/// in another one if their are equal.
///
/// \todo Refine this later, when we are able to express subgraph
--
1.5.6.5