Olena-patches
Threads by month
- ----- 2025 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
March 2011
- 7 participants
- 277 discussions
---
scribo/sandbox/z/todolist | 222 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 222 insertions(+), 0 deletions(-)
create mode 100644 scribo/sandbox/z/todolist
diff --git a/scribo/sandbox/z/todolist b/scribo/sandbox/z/todolist
new file mode 100644
index 0000000..56a6f07
--- /dev/null
+++ b/scribo/sandbox/z/todolist
@@ -0,0 +1,222 @@
+* Fix dispatch in morpho::closing_algebraic with morpho/attribute/*.
+ -> tests/morpho/closing_volume do not compile
+
+* Cleanup icp.hh
+ -> remove debug?
+
+* Improve closest point functor in icp.hh
+ -> We want it to handle the case when a given point is not in the closest
+ point image domain.
+
+* Fix pw::value(slice(ima3d, 0)) op pw::cst.
+ -> do not compile.
+
+* Fix segfault in the closest point functor in icp.hh when compiled with -O1
+ -> If no optimization flag is set during compilation, whether NDEBUG is set
+ or not, the code just works.
+
+* Add missing tests for mln/fun/*
+
+* Wrap extract/red,green,blue into a more generic routine
+ -> ex: data::fill(thru(red, ima), 0);
+
+* Implement a subgraph and a regular graph
+
+* Add win::diamond
+
+* Write a lemmings canvas with a conditional stop.
+
+* Fix gray level value types.
+
+* Fix Float value types.
+
+* Cleanup debug::draw_graph.
+
+* Rename Image::pset to Image::domain_t
+
+* Check guards in println.spe.hh and level/median.hh
+
+* Make the graph image types shorter
+ -> Do we want to add a specific image type for graph images or do we want to
+ add new typedefs?
+
+* Add debugging levels in trace.
+
+* Add operator '/'
+ -> ima / box
+
+* Avoid using pw::cst with < and > operators.
+
+* Make Olena compile with gcc 2.95
+ -> Ambiguities at compile time.
+
+* ima | pw::cst(0) instead of ima | (pw::value(ima) == 0)
+
+* Automatic conversions from array<T> to fun::array<U> with U!=T
+
+* Make labeling::compute robust if label 0 is missing.
+ -> Currently, it crashes. (cf. mail theo).
+
+* Make pw::value(ima) op literal::* work.
+
+* Check if l2l::relabel is useful.
+
+
+------------------------
+
+* Add for_all_components(i, array).
+ => Or special array type
+
+* data::fill(util::array<>, value);
+
+* Make graph image type shorter.
+
+* Function associating edges to a pair of sites from a graph image.
+ => Use it by default while constructing a p_edges.
+
+* Function associating a vertex to an edge from a label image.
+ => Use it by default while constructing a p_vertices.
+
+* Routine returning an array mapping vertices and their component representative.
+ (see demat.hh, make_relabel_fun_t)
+
+* Routine Returning the number of vertices per graph component.
+ (see demat.hh, comp_size_t)
+
+* lbl | (attribute::card > 10)
+ => would keep only the components having their attribute card greater than 10.
+ * Or just a routine: keep_inplace(lbl, nlabels, attribute::card > 10);
+
+ template <typename R>
+ struct remove_small_comps
+ : Function_l2b< remove_small_comps<R> >
+ {
+ remove_small_comps(const util::array<R>& nsitecomp)
+ : nsitecomp_(nsitecomp)
+ {
+ }
+
+ /// Return false if the components is smaller than a given size.
+ bool operator()(const label_16& l) const
+ {
+ return nsitecomp_[l] >= settings.min_comp_size;
+ }
+
+ const util::array<R>& nsitecomp_;
+ };
+
+ // Remove components which are too small
+ typedef util::array<accu_count_res_t> nsitecomp_t;
+ nsitecomp_t nsitecomp = labeling::compute(accu_count_t(), lbl, nlabels);
+ remove_small_comps<accu_count_res_t> fl2b(nsitecomp);
+ labeling::relabel_inplace(lbl, nlabels, fl2b);
+
+
+* data::fill(ima | array<box>, false);
+ => instead of:
+
+ for_all_components(i, boxes)
+ data::fill(ima | boxes[i], false);
+
+* draw::boxes
+
+* debug::filename(input_file_name, name);
+ => format the debug output file name correctly.
+ => input_file_name _ id _ name
+
+* image2d tmp = extend(ima, 1); compiles. Do we want that?
+ => may be confusing since tmp do not have the extension!
+
+
+
+--------
+
+
+* Boule N-d.
+
+* Decouper mln/core/image en sous repertoire? / Distinguer morpher sur site,
+ morpher sur valeur...?
+
+
+
+* Add dispatch to make::graph and make::region_adjacency_graph
+
+* Add an adjacency_matrix class and use it in make::*graph.
+
+* Allow graph dump.
+
+* Add specialization for image<bool>
+
+
+
+//////// FROM SCRIBO
+
+* Add for_all_components(i, array).
+ => Or special array type
+
+* data::fill(util::array<>, value);
+
+* Make graph image type shorter.
+
+* Function associating edges to a pair of sites from a graph image.
+ => Use it by default while constructing a p_edges.
+
+* Function associating a vertex to an edge from a label image.
+ => Use it by default while constructing a p_vertices.
+
+* Routine returning an array mapping vertices and their component representative.
+ (see demat.hh, make_relabel_fun_t)
+
+* Routine Returning the number of vertices per graph component.
+ (see demat.hh, comp_size_t)
+
+* lbl | (attribute::card > 10)
+ => would keep only the components having their attribute card greater than 10.
+ * Or just a routine: keep_inplace(lbl, nlabels, attribute::card > 10);
+
+ template <typename R>
+ struct remove_small_comps
+ : Function_l2b< remove_small_comps<R> >
+ {
+ remove_small_comps(const util::array<R>& nsitecomp)
+ : nsitecomp_(nsitecomp)
+ {
+ }
+
+ /// Return false if the components is smaller than a given size.
+ bool operator()(const label_16& l) const
+ {
+ return nsitecomp_[l] >= settings.min_comp_size;
+ }
+
+ const util::array<R>& nsitecomp_;
+ };
+
+ // Remove components which are too small
+ typedef util::array<accu_count_res_t> nsitecomp_t;
+ nsitecomp_t nsitecomp = labeling::compute(accu_count_t(), lbl, nlabels);
+ remove_small_comps<accu_count_res_t> fl2b(nsitecomp);
+ labeling::relabel_inplace(lbl, nlabels, fl2b);
+
+
+* data::fill(ima | array<box>, false);
+ => instead of:
+
+ for_all_components(i, boxes)
+ data::fill(ima | boxes[i], false);
+
+* draw::boxes
+
+* debug::filename(input_file_name, name);
+ => format the debug output file name correctly.
+ => input_file_name _ id _ name
+
+* image2d tmp = extend(ima, 1); compiles. Do we want that?
+ => may be confusing since tmp do not have the extension!
+
+
+
+
+
+
+
--
1.5.6.5
1
0
---
.../primitive/group/from_single_link_robust.hh} | 25 +-
.../scribo/primitive/internal/find_root_robust.hh} | 23 +-
.../{white_spaces.cc => svg.white_spaces.cc} | 577 +++++++++++--------
scribo/sandbox/z/white_spaces/white_spaces | Bin 0 -> 352469 bytes
.../{white_spaces.cc => white_spaces.cc.bak} | 532 +++++++------------
...es.cc => white_spaces.cc.bak.left_right_merged} | 544 +++++++-----------
6 files changed, 756 insertions(+), 945 deletions(-)
copy scribo/{scribo/primitive/group/from_single_link.hh => sandbox/z/scribo/primitive/group/from_single_link_robust.hh} (79%)
copy scribo/{scribo/primitive/internal/find_root.hh => sandbox/z/scribo/primitive/internal/find_root_robust.hh} (74%)
copy scribo/sandbox/z/white_spaces/{white_spaces.cc => svg.white_spaces.cc} (57%)
create mode 100755 scribo/sandbox/z/white_spaces/white_spaces
copy scribo/sandbox/z/white_spaces/{white_spaces.cc => white_spaces.cc.bak} (57%)
copy scribo/sandbox/z/white_spaces/{white_spaces.cc => white_spaces.cc.bak.left_right_merged} (58%)
diff --git a/scribo/scribo/primitive/group/from_single_link.hh b/scribo/sandbox/z/scribo/primitive/group/from_single_link_robust.hh
similarity index 79%
copy from scribo/scribo/primitive/group/from_single_link.hh
copy to scribo/sandbox/z/scribo/primitive/group/from_single_link_robust.hh
index 05efdc7..b8186bb 100644
--- a/scribo/scribo/primitive/group/from_single_link.hh
+++ b/scribo/sandbox/z/scribo/primitive/group/from_single_link_robust.hh
@@ -23,8 +23,8 @@
// exception does not however invalidate any other reasons why the
// executable file might be covered by the GNU General Public License.
-#ifndef SCRIBO_PRIMITIVE_GROUP_FROM_SINGLE_LINK_HH
-# define SCRIBO_PRIMITIVE_GROUP_FROM_SINGLE_LINK_HH
+#ifndef SCRIBO_PRIMITIVE_GROUP_FROM_SINGLE_LINK_ROBUST_HH
+# define SCRIBO_PRIMITIVE_GROUP_FROM_SINGLE_LINK_ROBUST_HH
/// \file
///
@@ -38,7 +38,7 @@
# include <mln/util/array.hh>
-# include <scribo/primitive/internal/find_root.hh>
+# include <scribo/primitive/internal/find_root_robust.hh>
# include <scribo/core/object_groups.hh>
# include <scribo/core/object_links.hh>
@@ -67,7 +67,7 @@ namespace scribo
*/
template <typename L>
object_groups<L>
- from_single_link(const object_links<L>& links);
+ from_single_link_robust(const object_links<L>& links);
# ifndef MLN_INCLUDE_ONLY
@@ -75,12 +75,13 @@ namespace scribo
template <typename L>
inline
object_groups<L>
- from_single_link(const object_links<L>& links)
+ from_single_link_robust(const object_links<L>& links)
{
- trace::entering("scribo::primitive::group::from_single_link");
+ trace::entering("scribo::primitive::group::from_single_link_robust");
mln_precondition(links.is_valid());
+ util::array<bool> deja_vu(links.nelements(), false);
object_groups<L> parent(links);
parent.init_(links);
@@ -88,15 +89,9 @@ namespace scribo
if (!links.components()(i).is_valid())
parent(i) = 0;
else
- ::scribo::primitive::internal::find_root(parent, i);
+ primitive::internal::find_root_robust(parent, i, deja_vu);
-
- // FIXME: useful?
- // Make sure the root is propagated.
- for_all_groups(g, parent)
- internal::find_root(parent, g);
-
- trace::exiting("scribo::primitive::group::from_single_link");
+ trace::exiting("scribo::primitive::group::from_single_link_robust");
return parent;
}
@@ -108,4 +103,4 @@ namespace scribo
} // end of namespace scribo
-#endif // ! SCRIBO_PRIMITIVE_GROUP_FROM_SINGLE_LINK_HH
+#endif // ! SCRIBO_PRIMITIVE_GROUP_FROM_SINGLE_LINK_ROBUST_HH
diff --git a/scribo/scribo/primitive/internal/find_root.hh b/scribo/sandbox/z/scribo/primitive/internal/find_root_robust.hh
similarity index 74%
copy from scribo/scribo/primitive/internal/find_root.hh
copy to scribo/sandbox/z/scribo/primitive/internal/find_root_robust.hh
index aafa4ee..6ea1d1e 100644
--- a/scribo/scribo/primitive/internal/find_root.hh
+++ b/scribo/sandbox/z/scribo/primitive/internal/find_root_robust.hh
@@ -1,5 +1,4 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -24,8 +23,8 @@
// exception does not however invalidate any other reasons why the
// executable file might be covered by the GNU General Public License.
-#ifndef SCRIBO_PRIMITIVE_INTERNAL_FIND_ROOT_HH
-# define SCRIBO_PRIMITIVE_INTERNAL_FIND_ROOT_HH
+#ifndef SCRIBO_PRIMITIVE_INTERNAL_FIND_ROOT_ROBUST_HH
+# define SCRIBO_PRIMITIVE_INTERNAL_FIND_ROOT_ROBUST_HH
/// \file
///
@@ -47,19 +46,25 @@ namespace scribo
/// Find root in a parent array arrays.
template <typename L>
unsigned
- find_root(object_groups<L>& parent, unsigned x);
+ find_root_robust(object_groups<L>& parent, unsigned x,
+ util::array<bool>& deja_vu);
+
# ifndef MLN_INCLUDE_ONLY
template <typename L>
inline
unsigned
- find_root(object_groups<L>& parent, unsigned x)
+ find_root_robust(object_groups<L>& parent, unsigned x,
+ util::array<bool>& deja_vu)
{
- if (parent(x) == x)
+ deja_vu(x) = true;
+ if (deja_vu(x))
+ return parent(x);
+ else if (parent(x) == x)
return x;
else
- return parent(x) = find_root(parent, parent(x));
+ return parent(x) = find_root_robust(parent, parent(x), deja_vu);
}
# endif // ! MLN_INCLUDE_ONLY
@@ -71,4 +76,4 @@ namespace scribo
} // end of namespace scribo
-#endif // ! SCRIBO_PRIMITIVE_INTERNAL_FIND_ROOT_HH
+#endif // ! SCRIBO_PRIMITIVE_INTERNAL_FIND_ROOT_ROBUST_HH
diff --git a/scribo/sandbox/z/white_spaces/white_spaces.cc b/scribo/sandbox/z/white_spaces/svg.white_spaces.cc
similarity index 57%
copy from scribo/sandbox/z/white_spaces/white_spaces.cc
copy to scribo/sandbox/z/white_spaces/svg.white_spaces.cc
index d832d58..ebb44e5 100644
--- a/scribo/sandbox/z/white_spaces/white_spaces.cc
+++ b/scribo/sandbox/z/white_spaces/svg.white_spaces.cc
@@ -11,7 +11,6 @@
#include <mln/labeling/colorize.hh>
#include <mln/labeling/relabel.hh>
-#include <mln/labeling/blobs.hh>
#include <mln/morpho/closing/structural.hh>
#include <mln/morpho/closing/area.hh>
@@ -72,11 +71,6 @@ namespace mln
using namespace scribo;
-
- // Enable debug.
- bool _debug_;
-
-
template <typename L>
void filter_bad_groups(object_groups<L>& top_groups,
object_groups<L>& bot_groups)
@@ -186,11 +180,6 @@ namespace mln
++p.col();
}
- void compute_next_site_f_(unsigned& p)
- {
- ++p;
- }
-
mln_site(L)
start_point_(unsigned current_object, anchor::Type anchor)
@@ -221,10 +210,14 @@ namespace mln
dist = math::abs(p[this->direction_] - b.pmin()[this->direction_]);
+// int ldist = std::max(this->components_(current_object).bbox().width() / 2,
+// this->components_(this->labeled_image_(p)).bbox().width() / 2);
+
int ldist = this->components_(current_object).bbox().width();
// Components are really close, so the angle is more permissive.
if (dist < 3 * ldist)
+// if (dist < (ldist + 0.7 * ldist))
{
return
filter::internal::component_aligned_rad(this->components_,
@@ -251,13 +244,40 @@ namespace mln
{
super_::validate_link_(current_object, start_point, p, anchor);
- if (_debug_)
+ mln_site(L)
+ p1 = mln::my_anchors(this->components_, current_object, anchor),
+ p2 = mln::my_anchors(this->components_, this->labeled_image_(p),
+ anchor);
+ draw::line(debug_, p1, p2, literal::green);
+
+
+ float
+ angle = filter::internal::alignment_angle(this->components_,
+ current_object,
+ this->labeled_image_(p),
+ anchor);
+ angle = (angle * 180.0f) / math::pi;
+ angle = angle * 20.0f + 1.0f;
+ draw::line(debug_angle_, p1, p2, value::rgb8(angle, angle, angle));
+ }
+
+ void invalidate_link_(unsigned current_object,
+ const P& start_point,
+ const P& p,
+ anchor::Type anchor)
+ {
+ super_::invalidate_link_(current_object, start_point, p, anchor);
+
+ if (this->labeled_image_.domain().has(p) && this->labeled_image_(p) != 0)
{
mln_site(L)
p1 = mln::my_anchors(this->components_, current_object, anchor),
p2 = mln::my_anchors(this->components_, this->labeled_image_(p),
anchor);
- draw::line(debug_, p1, p2, literal::green);
+ if (this->labeled_image_.domain().has(p2) && norm::l1_distance(p1.to_vec(), p2.to_vec()) < 300)
+ {
+ draw::line(debug_, p1, p2, literal::red);
+ }
float
@@ -271,39 +291,6 @@ namespace mln
}
}
- void invalidate_link_(unsigned current_object,
- const P& start_point,
- const P& p,
- anchor::Type anchor)
- {
- super_::invalidate_link_(current_object, start_point, p, anchor);
-
- if (_debug_)
- {
- if (this->labeled_image_.domain().has(p) && this->labeled_image_(p) != 0)
- {
- mln_site(L)
- p1 = mln::my_anchors(this->components_, current_object, anchor),
- p2 = mln::my_anchors(this->components_, this->labeled_image_(p),
- anchor);
- if (this->labeled_image_.domain().has(p2) && norm::l1_distance(p1.to_vec(), p2.to_vec()) < 300)
- {
- draw::line(debug_, p1, p2, literal::red);
- }
-
-
- float
- angle = filter::internal::alignment_angle(this->components_,
- current_object,
- this->labeled_image_(p),
- anchor);
- angle = (angle * 180.0f) / math::pi;
- angle = angle * 20.0f + 1.0f;
- draw::line(debug_angle_, p1, p2, value::rgb8(angle, angle, angle));
- }
- }
- }
-
float min_alpha_rad;
float max_alpha_rad;
@@ -341,11 +328,6 @@ namespace mln
++p.col();
}
- void compute_next_site_f_(unsigned& p)
- {
- ++p;
- }
-
};
@@ -375,12 +357,6 @@ namespace mln
--p.col();
}
- void compute_next_site_f_(unsigned& p)
- {
- --p;
- }
-
-
};
}
@@ -397,45 +373,41 @@ int main(int argc, char *argv[])
return 1;
};
- _debug_ = (argc == 7);
+ bool debug = (argc == 7);
- util::timer t;
- util::timer gt;
-
- // Load (OK)
- t.start();
image2d<bool> input;
mln::io::pbm::load(input, argv[1]);
- float t_ = t;
- std::cout << "Image loaded - " << t_ << std::endl;
- gt.start();
+ util::timer t;
- // Closing structural - Connect characters.
- t.restart();
+ t.start();
+ input = scribo::preprocessing::rotate_90(input);
+ float t_ = t;
+ std::cout << "rotate_90 - " << t_ << std::endl;
- win::hline2d vl(17);
- image2d<bool> input_clo = morpho::closing::structural(input, vl);
-// input_clo = scribo::preprocessing::rotate_90(input_clo, true);
+ t.start();
+ image2d<bool> hsep
+ = scribo::primitive::extract::lines_h_pattern(input, 200, 3);
+ if (debug)
+ io::pbm::save(hsep, "hsep.pbm");
+ input = scribo::primitive::remove::separators(input, hsep);
t_ = t;
- std::cout << "closing_structural - " << t_ << std::endl;
+ std::cout << "Remove separators - " << t_ << std::endl;
- if (_debug_)
- {
- // Restore input orientation.
- input = scribo::preprocessing::rotate_90(input, false);
+ if (debug)
+ io::pbm::save(input, "input_sep_removed.pbm");
- io::pbm::save(input_clo, "input_clo.pbm");
- }
- // Rotate (OK)
t.restart();
- input_clo = scribo::preprocessing::rotate_90(input_clo, false);
+ win::vline2d vl(17);
+ image2d<bool> input_clo = morpho::closing::structural(input, vl);
t_ = t;
- std::cout << "rotate_90 - " << t_ << std::endl;
+ std::cout << "closing_structural - " << t_ << std::endl;
+ if (debug)
+ io::pbm::save(input_clo, "input_clo.pbm");
/// Finding components.
@@ -450,13 +422,22 @@ int main(int argc, char *argv[])
t_ = t;
std::cout << "extract::components - " << t_ << std::endl;
- if (_debug_)
+ if (debug)
io::pgm::save(data::convert(value::int_u8(), components.labeled_image()),
"lbl.pgm");
unsigned min_angle = atoi(argv[2]), max_angle = atoi(argv[3]);
+// t.restart();
+// object_links<L>
+// top_right = primitive::link::with_single_right_link_dmax_ratio_aligned(components, 2, min_angle, max_angle, anchor::Top);
+
+// object_links<L>
+// bot_right = primitive::link::with_single_right_link_dmax_ratio_aligned(components, 2, min_angle, max_angle, anchor::Bottom);
+// t_ = t;
+// std::cout << "links - " << t_ << std::endl;
+
unsigned dmax = 5;
t.restart();
@@ -470,17 +451,11 @@ int main(int argc, char *argv[])
// Right
mln::single_right_dmax_ratio_aligned_functor<L>
functor(input_clo, components, dmax, min_angle, max_angle, anchor::Top);
- top_right = primitive::link::impl::compute_fastest(functor, anchor::Top);
+ top_right = primitive::link::compute(functor, anchor::Top);
t.stop();
-
-
- if (_debug_)
- {
- io::ppm::save(functor.debug_, "right_top.ppm");
- io::ppm::save(functor.debug_angle_, "right_top_angle.ppm");
- }
-
+ io::ppm::save(functor.debug_, "right_top.ppm");
+ io::ppm::save(functor.debug_angle_, "right_top_angle.ppm");
t.resume();
// Left
@@ -488,20 +463,14 @@ int main(int argc, char *argv[])
lfunctor(input_clo, components, dmax, min_angle, max_angle, anchor::Top);
top_left = primitive::link::compute(lfunctor, anchor::Top);
-
t.stop();
+ io::ppm::save(lfunctor.debug_, "left_top.ppm");
+ io::ppm::save(lfunctor.debug_angle_, "left_top_angle.ppm");
- if (_debug_)
- {
- io::ppm::save(lfunctor.debug_, "left_top.ppm");
- io::ppm::save(lfunctor.debug_angle_, "left_top_angle.ppm");
-
- image2d<value::rgb8> output = duplicate(functor.debug_);
- data::paste((lfunctor.debug_ | (pw::value(lfunctor.debug_) != pw::cst(literal::black))) | (pw::value(lfunctor.debug_) != pw::cst(literal::white)), output);
-
- io::ppm::save(output, "left_right_top.ppm");
- }
+ image2d<value::rgb8> output = duplicate(functor.debug_);
+ data::paste((lfunctor.debug_ | (pw::value(lfunctor.debug_) != pw::cst(literal::black))) | (pw::value(lfunctor.debug_) != pw::cst(literal::white)), output);
+ io::ppm::save(output, "left_right_top.ppm");
t.resume();
}
@@ -513,13 +482,8 @@ int main(int argc, char *argv[])
functor(input_clo, components, dmax, min_angle, max_angle, anchor::Bottom);
bot_right = primitive::link::compute(functor, anchor::Bottom);
t.stop();
-
- if (_debug_)
- {
- io::ppm::save(functor.debug_, "right_bot.ppm");
- io::ppm::save(functor.debug_angle_, "right_bot_angle.ppm");
- }
-
+ io::ppm::save(functor.debug_, "right_bot.ppm");
+ io::ppm::save(functor.debug_angle_, "right_bot_angle.ppm");
t.resume();
// Left
@@ -527,23 +491,137 @@ int main(int argc, char *argv[])
lfunctor(input_clo, components, dmax, min_angle, max_angle, anchor::Bottom);
bot_left = primitive::link::compute(lfunctor, anchor::Bottom);
t.stop();
+ io::ppm::save(lfunctor.debug_, "left_bot.ppm");
+ io::ppm::save(lfunctor.debug_angle_, "left_bot_angle.ppm");
+ t.resume();
- if (_debug_)
- {
- io::ppm::save(lfunctor.debug_, "left_bot.ppm");
- io::ppm::save(lfunctor.debug_angle_, "left_bot_angle.ppm");
- }
-
- if (_debug_)
- {
- image2d<value::rgb8> output = duplicate(functor.debug_);
- data::paste((lfunctor.debug_ | (pw::value(lfunctor.debug_) != pw::cst(literal::black))) | (pw::value(lfunctor.debug_) != pw::cst(literal::white)), output);
+ t.stop();
+ image2d<value::rgb8> output = duplicate(functor.debug_);
+ data::paste((lfunctor.debug_ | (pw::value(lfunctor.debug_) != pw::cst(literal::black))) | (pw::value(lfunctor.debug_) != pw::cst(literal::white)), output);
- io::ppm::save(output, "left_right_bot.ppm");
- }
+ io::ppm::save(output, "left_right_bot.ppm");
+ t.resume();
}
+// std::cout << top_right << std::endl;
+// std::cout << "--------" << std::endl;
+// std::cout << bot_right << std::endl;
+// std::cout << "--------" << std::endl;
+// std::cout << top_left << std::endl;
+// std::cout << "--------" << std::endl;
+// std::cout << bot_left << std::endl;
+// std::cout << "--------" << std::endl;
+// std::cout << "--------" << std::endl;
+// std::cout << "--------" << std::endl;
+
+
+// std::cout << primitive::group::from_double_link_any(components, top_left, top_right) << std::endl;
+// std::cout << "--------" << std::endl;
+
+
+// // Merge links results.
+// // object_groups<L> top_groups(top_right), bot_groups(bot_right);
+// {
+// for_all_groups(i, top_left)
+// {
+// if (top_right(top_left(i)) == top_left(i)
+// && top_left(i) != i
+// && top_right(i) != top_left(i))
+// top_right(top_left(i)) = i;
+
+// if (bot_right(bot_left(i)) == bot_left(i)
+// && bot_left(i) != i
+// && bot_right(i) != bot_left(i))
+// bot_right(bot_left(i)) = i;
+// }
+
+// std::cout << top_right << std::endl;
+// std::cout << "--------" << std::endl;
+
+
+
+// std::cout << bot_right << std::endl;
+// std::cout << "--------" << std::endl;
+
+// top_groups.init_(top_right);
+// bot_groups.init_(bot_right);
+
+// // Grouping.
+// for_all_groups(i, top_groups)
+// {
+// if (!top_right.components()(i).is_valid())
+// top_groups(i) = 0;
+// else
+// primitive::internal::find_root(top_groups, i);
+
+// if (!bot_right.components()(i).is_valid())
+// bot_groups(i) = 0;
+// else
+// primitive::internal::find_root(bot_groups, i);
+// }
+
+// // Grouping groups.
+// object_groups<L>
+// top_group_relabel(top_right),
+// bot_group_relabel(bot_right);
+// for (unsigned n = 0; n < top_group_relabel.nelements(); ++n)
+// {
+// top_group_relabel(n) = n;
+// bot_group_relabel(n) = n;
+// }
+
+// for_all_links(l, top_right)
+// {
+// if (top_left(l) != l
+// && top_right(l) != top_left(l))
+// {
+// // If there is no links, connect directly. Otherwise, prefer
+// // connecting to the component with the lower pmin row.
+// if ((top_right(top_left(l)) == top_left(l)))
+// // ||
+// // (std::abs(components(bot_left(l)).bbox().pmin().row() - components(bot_right(bot_left(l))).bbox().pmin().row()) > std::abs(components(bot_left(l)).bbox().pmin().row() - components(l).bbox().pmin().row())))
+// top_group_relabel(top_groups(top_left(l))) = top_groups(l);
+// //else
+// // The right link is already the best link possible.
+
+// }
+
+// if (bot_left(l) != l
+// && bot_right(l) != bot_left(l))
+// {
+// // If there is no links, connect directly. Otherwise, prefer
+// // connecting to the component which is the most aligned.
+// if ((bot_right(bot_left(l)) == bot_left(l)))
+// // ||
+// // (std::abs(components(bot_left(l)).bbox().pmax().row() - components(bot_right(bot_left(l))).bbox().pmax().row()) > std::abs(components(bot_left(l)).bbox().pmax().row() - components(l).bbox().pmax().row())))
+// bot_group_relabel(bot_groups(bot_left(l))) = bot_groups(l);
+// //else
+// // The right link is already the best link possible.
+
+// }
+
+// }
+
+// for_all_groups(i, top_groups)
+// {
+// primitive::internal::find_root(top_group_relabel, i);
+// primitive::internal::find_root(bot_group_relabel, i);
+// }
+
+// // Relabeling groups according to previous grouping.
+// for_all_groups(i, top_groups)
+// {
+// if (top_group_relabel(top_groups(i)) != top_groups(i))
+// top_groups(i) = top_group_relabel(top_groups(i));
+
+// if (bot_group_relabel(bot_groups(i)) != bot_groups(i))
+// bot_groups(i) = bot_group_relabel(bot_groups(i));
+// }
+
+// }
+
+
t_ = t;
std::cout << "links - " << t_ << std::endl;
@@ -558,6 +636,10 @@ int main(int argc, char *argv[])
t_ = t;
std::cout << "group - " << t_ << std::endl;
+// std::cout << top_groups << std::endl;
+// std::cout << "------------" << std::endl;
+// std::cout << bot_groups << std::endl;
+// std::cout << "------------" << std::endl;
unsigned min_card = atoi(argv[4]);
@@ -578,39 +660,36 @@ int main(int argc, char *argv[])
- if (_debug_)
- {
-
- image2d<value::rgb8>
- wo_filtering = data::convert(value::rgb8(), input);
+ image2d<value::rgb8>
+ wo_filtering = data::convert(value::rgb8(), input);
- for_all_comp_data(d, btop_accu)
+ for_all_comp_data(d, btop_accu)
+ {
+ if (btop_accu(d).is_valid())
{
- if (btop_accu(d).is_valid())
- {
- mln::draw::line(wo_filtering,
- btop_accu(d).to_result().pmin(),
- point2d(btop_accu(d).to_result().pmin().row(),
- btop_accu(d).to_result().pmax().col()),
- literal::green);
+ mln::draw::line(wo_filtering,
+ btop_accu(d).to_result().pmin(),
+ point2d(btop_accu(d).to_result().pmin().row(),
+ btop_accu(d).to_result().pmax().col()),
+ literal::green);
- }
}
+ }
- for_all_comp_data(d, bbot_accu)
+ for_all_comp_data(d, bbot_accu)
+ {
+ if (bbot_accu(d).is_valid())
{
- if (bbot_accu(d).is_valid())
- {
- mln::draw::line(wo_filtering,
- point2d(bbot_accu(d).to_result().pmax().row(),
- bbot_accu(d).to_result().pmin().col()),
- bbot_accu(d).to_result().pmax(),
- literal::green);
- }
-
+ mln::draw::line(wo_filtering,
+ point2d(bbot_accu(d).to_result().pmax().row(),
+ bbot_accu(d).to_result().pmin().col()),
+ bbot_accu(d).to_result().pmax(),
+ literal::green);
}
- io::ppm::save(wo_filtering, "wo_filtering.ppm");
+
}
+ io::ppm::save(wo_filtering, "wo_filtering.ppm");
+
t.restart();
@@ -621,6 +700,13 @@ int main(int argc, char *argv[])
+// t.restart();
+// filter_bad_groups(top_groups, bot_groups);
+// t_ = t;
+// std::cout << "bad groups - " << t_ << std::endl;
+
+
+
t.restart();
util::array<accu::shape::bbox<point2d> >
top_accu(top_groups.nelements()),
@@ -642,16 +728,12 @@ int main(int argc, char *argv[])
- t.restart();
- image2d<bool> separators;
- initialize(separators, input_clo);
- data::fill(separators, false);
- t_ = t;
- std::cout << "Initialize separators image - " << t_ << std::endl;
- image2d<value::rgb8> both;
+ image2d<bool> separators;// = duplicate(input_clo);
+ initialize(separators, input);
+ data::fill(separators, false);
- if (_debug_)
+ image2d<value::rgb8>
both = data::convert(value::rgb8(), input);
@@ -663,12 +745,11 @@ int main(int argc, char *argv[])
{
if (top_accu(d).is_valid())
{
- if (_debug_)
- mln::draw::line(both,
- top_accu(d).to_result().pmin(),
- point2d(top_accu(d).to_result().pmin().row(),
- top_accu(d).to_result().pmax().col()),
- literal::green);
+ mln::draw::line(both,
+ top_accu(d).to_result().pmin(),
+ point2d(top_accu(d).to_result().pmin().row(),
+ top_accu(d).to_result().pmax().col()),
+ literal::green);
mln::draw::line(separators,
top_accu(d).to_result().pmin(),
@@ -677,7 +758,7 @@ int main(int argc, char *argv[])
true);
}
else
- if (_debug_ && btop_accu(d).is_valid())
+ if (btop_accu(d).is_valid())
mln::draw::line(both,
btop_accu(d).to_result().pmin(),
point2d(btop_accu(d).to_result().pmin().row(),
@@ -689,13 +770,11 @@ int main(int argc, char *argv[])
{
if (bot_accu(d).is_valid())
{
- if (_debug_)
- mln::draw::line(both,
- point2d(bot_accu(d).to_result().pmax().row(),
- bot_accu(d).to_result().pmin().col()),
- bot_accu(d).to_result().pmax(),
- literal::green);
-
+ mln::draw::line(both,
+ point2d(bot_accu(d).to_result().pmax().row(),
+ bot_accu(d).to_result().pmin().col()),
+ bot_accu(d).to_result().pmax(),
+ literal::green);
mln::draw::line(separators,
point2d(bot_accu(d).to_result().pmax().row(),
bot_accu(d).to_result().pmin().col()),
@@ -703,7 +782,7 @@ int main(int argc, char *argv[])
true);
}
else
- if (_debug_ && bbot_accu(d).is_valid())
+ if (bbot_accu(d).is_valid())
mln::draw::line(both,
point2d(bbot_accu(d).to_result().pmax().row(),
bbot_accu(d).to_result().pmin().col()),
@@ -716,88 +795,119 @@ int main(int argc, char *argv[])
std::cout << "Drawing output image - " << t_ << std::endl;
- if (_debug_)
- {
- io::ppm::save(both, argv[5]);
- io::pbm::save(separators, "separators.pbm");
- }
+ io::ppm::save(both, argv[5]);
+ io::pbm::save(separators, "separators.pbm");
+
+// // Hit or miss
+// {
+// t.restart();
+// unsigned length = 100;
+
+// window2d win;
+// dpoint2d
+// dp1(-11, 0),
+// dp2( 11, 0);
+// win.insert(dp1);
+// win.insert(dp2);
+
+// // Adjusting extension.
+// extension::adjust_fill(separators, length / 2, 0);
+
+// accu::count_value<bool> accu(true);
+// typedef image2d<unsigned> I;
+
+// I tmp = accu::transform_line(accu, separators, length, 1);
+
+// image2d<bool> output;
+// initialize(output, separators);
+
+// mln_piter_(I) p(separators.domain());
+// // mln_qiter(window2d) q(win, p);
+// bool is_foreground;
+// for_all(p)
+// {
+
+// if (tmp(p) > unsigned(0.95f * length) + 1)
+// {
+// output(p) = false;
+// continue;
+// }
+
+// is_foreground = true;
+
+// unsigned
+// top_count = tmp(p + dp1),
+// bot_count = tmp(p + dp2);
+
+// if (top_count >= unsigned(length * 0.7f) + 1
+// && bot_count >= unsigned(length * 0.7f) + 1)
+// is_foreground = false;
+
+// output(p) = is_foreground;
+
+// }
+
+// io::pbm::save(output, "separators_hom.pbm");
+// }
+
+// std::cout << "Separator image - " << t_ << std::endl;
// Hit or miss
{
- if (_debug_)
- {
- image2d<bool> input_with_seps = duplicate(input_clo);
- data::paste(separators | pw::value(separators), input_with_seps);
+ image2d<bool> input_with_seps = duplicate(input_clo);
+ data::paste(separators | pw::value(separators), input_with_seps);
+ if (debug)
io::pbm::save(input_with_seps, "input_with_seps.pbm");
- }
t.restart();
- unsigned length = 25;
+ unsigned length = 100;
dpoint2d
dp1(-21, 0),
dp2( 21, 0);
// Adjusting extension.
- t.restart();
- extension::adjust_fill(input_clo, length / 2, 0);
+ extension::adjust_fill(separators, length / 2, 0);
accu::count_value<bool> accu(true);
typedef image2d<unsigned> I;
- I tmp = accu::transform_line(accu, input_clo, length, 1);
- t_ = t;
- std::cout << "* accu::transform_line - " << t_ << std::endl;
+ I tmp = accu::transform_line(accu, input_with_seps, length, 1);
- if (_debug_)
+ if (debug)
io::pgm::save(data::convert(value::int_u8(), tmp), "tmp.pgm");
+ image2d<bool> output;
+ initialize(output, separators);
+ data::fill(output, false);
- t.restart();
value::int_u8 nlabels;
image2d<value::int_u8>
- sep_lbl = labeling::value(separators, true, c8(), nlabels);
- t_ = t;
- std::cout << "* labeling seps - " << t_ << std::endl;
+ sep_lbl = labeling::blobs(separators, c8(), nlabels);
+ mln_piter_(I) p(separators.domain());
- t.restart();
-// util::array<unsigned> lcard(unsigned(nlabels) + 1, 0);
-// util::array<unsigned> lfalse(unsigned(nlabels) + 1, 0);
+ util::array<unsigned> lcard(unsigned(nlabels) + 1, 0);
+ util::array<unsigned> lfalse(unsigned(nlabels) + 1, 0);
util::array<bool> relbl(unsigned(nlabels) + 1, true);
relbl(0) = false;
-
-// unsigned
-// tmp_next_line_dp1 = tmp.delta_index(dp1),
-// tmp_next_line_dp2 = tmp.delta_index(dp2);
-
-// const mln_value(I)* val_sep = &separators(separators.domain().pmin());
-// const value::int_u8* val_lbl = &sep_lbl(sep_lbl.domain().pmin());
-
-// bool go_next = false;
- unsigned invalid_ratio = unsigned(length * 0.30f);
-
-// for (unsigned row = 0; i < nrows; ++row)
-// {
-// for (unsigned col = 0; col < ncols; ++col)
-// {
-
-// }
-
-// val_sep += ;
-// val_lbl += ;
-// }
-
- mln_piter_(I) p(separators.domain());
for_all(p)
if (separators(p))
{
unsigned lbl = sep_lbl(p);
-// ++lcard(lbl);
+ ++lcard(lbl);
+
+// Useless since we already work on selected lines (separators image).
+//
+// if (tmp(p) > unsigned(0.95f * length) + 1)
+// {
+// output(p) = false;
+// continue;
+// }
unsigned
top_count = tmp(p + dp1),
@@ -805,38 +915,19 @@ int main(int argc, char *argv[])
// This site is wrapped between two lines of text so we don't
// want it.
- if (top_count >= invalid_ratio + 1
- && bot_count >= invalid_ratio + 1)
- {
- relbl(lbl) = false;
-// go_next = true;
- }
-// ++lfalse(lbl);
+ if (top_count >= unsigned(length * 0.30f) + 1
+ && bot_count >= unsigned(length * 0.30f) + 1)
+ ++lfalse(lbl);
}
-// for_all_comps(i, relbl)
-// relbl(i) = (lfalse(i) / (float) lcard(i)) < 0.02f;
- t_ = t;
- std::cout << "* reading data - " << t_ << std::endl;
+ for_all_comps(i, relbl)
+ relbl(i) = (lfalse(i) / (float) lcard(i)) < 0.02f;
- t.restart();
labeling::relabel_inplace(sep_lbl, nlabels, relbl);
- t_ = t;
- std::cout << "* relabel_inplace - " << t_ << std::endl;
-
- image2d<bool> output = data::convert(bool(), sep_lbl);
+ data::paste(sep_lbl | (pw::value(sep_lbl) != pw::cst(0)), output);
- if (_debug_)
- {
- io::pbm::save(output, "separators_hom.pbm");
- io::pbm::save(separators, "separators_filtered.pbm");
- }
+ io::pbm::save(output, "separators_hom.pbm");
}
- t_ = t;
std::cout << "Separator image - " << t_ << std::endl;
-
- gt.stop();
- t_ = gt;
- std::cout << "Total time: " << t_ << std::endl;
}
diff --git a/scribo/sandbox/z/white_spaces/white_spaces b/scribo/sandbox/z/white_spaces/white_spaces
new file mode 100755
index 0000000000000000000000000000000000000000..8f0732ee368e0ae331d8868c395d9b6e927a23b8
GIT binary patch
literal 352469
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%0AOk5rU%7HD;-O$KKRUB3OdBAi
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
literal 0
HcmV?d00001
diff --git a/scribo/sandbox/z/white_spaces/white_spaces.cc b/scribo/sandbox/z/white_spaces/white_spaces.cc.bak
similarity index 57%
copy from scribo/sandbox/z/white_spaces/white_spaces.cc
copy to scribo/sandbox/z/white_spaces/white_spaces.cc.bak
index d832d58..1f491ca 100644
--- a/scribo/sandbox/z/white_spaces/white_spaces.cc
+++ b/scribo/sandbox/z/white_spaces/white_spaces.cc.bak
@@ -10,8 +10,6 @@
#include <mln/labeling/colorize.hh>
-#include <mln/labeling/relabel.hh>
-#include <mln/labeling/blobs.hh>
#include <mln/morpho/closing/structural.hh>
#include <mln/morpho/closing/area.hh>
@@ -43,24 +41,17 @@
#include <mln/norm/l1.hh>
#include <scribo/core/object_groups.hh>
-#include <scribo/core/component_set.hh>
#include <scribo/primitive/extract/components.hh>
#include <scribo/primitive/extract/lines_h_pattern.hh>
#include <scribo/primitive/remove/separators.hh>
-
+#include <scribo/primitive/group/from_single_link.hh>
#include <scribo/preprocessing/denoise_fg.hh>
#include <scribo/preprocessing/rotate_90.hh>
-#include <scribo/primitive/link/internal/dmax_default.hh>
-
#include <scribo/primitive/link/with_single_right_link_dmax_ratio.hh>
#include <scribo/primitive/link/with_single_right_link_dmax_ratio_aligned.hh>
-#include <scribo/primitive/group/from_double_link_any.hh>
-
-#include <scribo/primitive/group/from_single_link.hh>
-
#include <scribo/filter/object_links_top_aligned.hh>
#include <scribo/filter/object_groups_small.hh>
#include <scribo/filter/object_links_bottom_aligned.hh>
@@ -72,11 +63,6 @@ namespace mln
using namespace scribo;
-
- // Enable debug.
- bool _debug_;
-
-
template <typename L>
void filter_bad_groups(object_groups<L>& top_groups,
object_groups<L>& bot_groups)
@@ -120,27 +106,26 @@ namespace mln
unsigned current_object,
anchor::Type anchor)
{
- mln_site(L) sp;// = comps(current_object).bbox().pcenter();
+ mln_site(L) sp = comps(current_object).bbox().pcenter();
+
+ unsigned h = comps(current_object).bbox().pmax().row()
+ - comps(current_object).bbox().pmin().row();
- unsigned h = comps(current_object).bbox().height();
switch (anchor)
{
default:
return sp;
-
// Bounding box top center
- case anchor::Top: // FIXME: rename as TopLeft
- sp.col() = comps(current_object).bbox().pmin().col();
+ case anchor::Top:
sp.row() = comps(current_object).bbox().pmin().row()
+ math::min(2u, (h + 1) / 2 - 1);
break;
// Bounding box bottom center
- case anchor::Bottom: // FIXME: rename as BottomLeft
- sp.col() = comps(current_object).bbox().pmax().col();
+ case anchor::Bottom:
sp.row() = comps(current_object).bbox().pmax().row()
- math::min(2u, (h + 1) / 2 - 1);
break;
@@ -155,10 +140,10 @@ namespace mln
template <typename L, typename E>
class single_dmax_ratio_aligned_functor_base
- : public link_single_dmax_ratio_base<L, dmax_default, E>
+ : public link_single_dmax_ratio_base<L, E>
{
// typedef single_right_dmax_ratio_aligned_functor<L> self_t;
- typedef link_single_dmax_ratio_base<L, dmax_default, E> super_;
+ typedef link_single_dmax_ratio_base<L, E> super_;
public:
typedef mln_site(L) P;
@@ -170,13 +155,16 @@ namespace mln
float min_angle,
float max_angle,
anchor::Type anchor_)
- : super_(components,
- anchor::Horizontal,
- dmax_default(dmax)),
- anchor(anchor_),
+ : super_(components, dmax, anchor::Horizontal), anchor(anchor_),
debug_(data::convert(value::rgb8(), input)),
debug_angle_(data::convert(value::rgb8(), input))
{
+ std::cout << "min_angle = " << min_angle
+ << " - max_angle = " << max_angle
+ << std::endl;
+ std::cout << "min_angle_rad = " << min_alpha_rad
+ << " - max_angle_rad = " << max_alpha_rad
+ << std::endl;
min_alpha_rad = (min_angle / 180.0f) * math::pi;
max_alpha_rad = (max_angle / 180.0f) * math::pi;
}
@@ -186,11 +174,6 @@ namespace mln
++p.col();
}
- void compute_next_site_f_(unsigned& p)
- {
- ++p;
- }
-
mln_site(L)
start_point_(unsigned current_object, anchor::Type anchor)
@@ -221,10 +204,14 @@ namespace mln
dist = math::abs(p[this->direction_] - b.pmin()[this->direction_]);
+// int ldist = std::max(this->components_(current_object).bbox().width() / 2,
+// this->components_(this->labeled_image_(p)).bbox().width() / 2);
+
int ldist = this->components_(current_object).bbox().width();
// Components are really close, so the angle is more permissive.
if (dist < 3 * ldist)
+// if (dist < (ldist + 0.7 * ldist))
{
return
filter::internal::component_aligned_rad(this->components_,
@@ -251,13 +238,40 @@ namespace mln
{
super_::validate_link_(current_object, start_point, p, anchor);
- if (_debug_)
+ mln_site(L)
+ p1 = mln::my_anchors(this->components_, current_object, anchor),
+ p2 = mln::my_anchors(this->components_, this->labeled_image_(p),
+ anchor);
+ draw::line(debug_, p1, p2, literal::green);
+
+
+ float
+ angle = filter::internal::alignment_angle(this->components_,
+ current_object,
+ this->labeled_image_(p),
+ anchor);
+ angle = (angle * 180.0f) / math::pi;
+ angle = angle * 20.0f + 1.0f;
+ draw::line(debug_angle_, p1, p2, value::rgb8(angle, angle, angle));
+ }
+
+ void invalidate_link_(unsigned current_object,
+ const P& start_point,
+ const P& p,
+ anchor::Type anchor)
+ {
+ super_::invalidate_link_(current_object, start_point, p, anchor);
+
+ if (this->labeled_image_.domain().has(p) && this->labeled_image_(p) != 0)
{
mln_site(L)
p1 = mln::my_anchors(this->components_, current_object, anchor),
p2 = mln::my_anchors(this->components_, this->labeled_image_(p),
anchor);
- draw::line(debug_, p1, p2, literal::green);
+ if (this->labeled_image_.domain().has(p2) && norm::l1_distance(p1.to_vec(), p2.to_vec()) < 300)
+ {
+ draw::line(debug_, p1, p2, literal::red);
+ }
float
@@ -271,39 +285,6 @@ namespace mln
}
}
- void invalidate_link_(unsigned current_object,
- const P& start_point,
- const P& p,
- anchor::Type anchor)
- {
- super_::invalidate_link_(current_object, start_point, p, anchor);
-
- if (_debug_)
- {
- if (this->labeled_image_.domain().has(p) && this->labeled_image_(p) != 0)
- {
- mln_site(L)
- p1 = mln::my_anchors(this->components_, current_object, anchor),
- p2 = mln::my_anchors(this->components_, this->labeled_image_(p),
- anchor);
- if (this->labeled_image_.domain().has(p2) && norm::l1_distance(p1.to_vec(), p2.to_vec()) < 300)
- {
- draw::line(debug_, p1, p2, literal::red);
- }
-
-
- float
- angle = filter::internal::alignment_angle(this->components_,
- current_object,
- this->labeled_image_(p),
- anchor);
- angle = (angle * 180.0f) / math::pi;
- angle = angle * 20.0f + 1.0f;
- draw::line(debug_angle_, p1, p2, value::rgb8(angle, angle, angle));
- }
- }
- }
-
float min_alpha_rad;
float max_alpha_rad;
@@ -341,11 +322,6 @@ namespace mln
++p.col();
}
- void compute_next_site_f_(unsigned& p)
- {
- ++p;
- }
-
};
@@ -375,12 +351,6 @@ namespace mln
--p.col();
}
- void compute_next_site_f_(unsigned& p)
- {
- --p;
- }
-
-
};
}
@@ -391,51 +361,35 @@ int main(int argc, char *argv[])
using namespace scribo;
using namespace mln;
- if (argc != 6 && argc != 7)
- {
- std::cout << "Usage: " << argv[0] << " <in.pbm> <min_angle = 3> <max_angle = 5> <min_card = 3> <out.ppm> <debug_enabled>" << std::endl;
- return 1;
- };
+ bool debug = (argc == 7);
- _debug_ = (argc == 7);
+ image2d<bool> input;
+ mln::io::pbm::load(input, argv[1]);
util::timer t;
- util::timer gt;
- // Load (OK)
t.start();
- image2d<bool> input;
- mln::io::pbm::load(input, argv[1]);
+ input = scribo::preprocessing::rotate_90(input);
float t_ = t;
- std::cout << "Image loaded - " << t_ << std::endl;
-
- gt.start();
-
- // Closing structural - Connect characters.
- t.restart();
-
- win::hline2d vl(17);
- image2d<bool> input_clo = morpho::closing::structural(input, vl);
+ std::cout << "rotate_90 - " << t_ << std::endl;
-// input_clo = scribo::preprocessing::rotate_90(input_clo, true);
+ t.start();
+ image2d<bool> hsep
+ = scribo::primitive::extract::lines_h_pattern(input, 200, 9);
+ input = scribo::primitive::remove::separators(input, hsep);
t_ = t;
- std::cout << "closing_structural - " << t_ << std::endl;
-
- if (_debug_)
- {
- // Restore input orientation.
- input = scribo::preprocessing::rotate_90(input, false);
+ std::cout << "rotate_90 - " << t_ << std::endl;
- io::pbm::save(input_clo, "input_clo.pbm");
- }
- // Rotate (OK)
t.restart();
- input_clo = scribo::preprocessing::rotate_90(input_clo, false);
+ win::vline2d vl(17);
+ image2d<bool> input_clo = morpho::closing::structural(input, vl);
t_ = t;
- std::cout << "rotate_90 - " << t_ << std::endl;
+ std::cout << "closing_structural - " << t_ << std::endl;
+ if (debug)
+ io::pbm::save(input_clo, "input_clo.pbm");
/// Finding components.
@@ -450,114 +404,109 @@ int main(int argc, char *argv[])
t_ = t;
std::cout << "extract::components - " << t_ << std::endl;
- if (_debug_)
- io::pgm::save(data::convert(value::int_u8(), components.labeled_image()),
- "lbl.pgm");
+ unsigned min_angle = atoi(argv[2]), max_angle = atoi(argv[3]);
+// t.restart();
+// object_links<L>
+// top_links = primitive::link::with_single_right_link_dmax_ratio_aligned(components, 2, min_angle, max_angle, anchor::Top);
- unsigned min_angle = atoi(argv[2]), max_angle = atoi(argv[3]);
+// object_links<L>
+// bot_links = primitive::link::with_single_right_link_dmax_ratio_aligned(components, 2, min_angle, max_angle, anchor::Bottom);
+// t_ = t;
+// std::cout << "links - " << t_ << std::endl;
unsigned dmax = 5;
t.restart();
- object_links<L> top_right, bot_right;
+ object_links<L> top_links, bot_links;
- object_links<L> top_left, bot_left;
+ object_links<L> ltop_links, lbot_links, rtop_links, rbot_links;
- // Top
{
// Right
mln::single_right_dmax_ratio_aligned_functor<L>
functor(input_clo, components, dmax, min_angle, max_angle, anchor::Top);
- top_right = primitive::link::impl::compute_fastest(functor, anchor::Top);
-
- t.stop();
-
-
- if (_debug_)
- {
- io::ppm::save(functor.debug_, "right_top.ppm");
- io::ppm::save(functor.debug_angle_, "right_top_angle.ppm");
- }
-
- t.resume();
+ top_links = primitive::link::compute(functor, anchor::Top);
+ io::ppm::save(functor.debug_, "right_top.ppm");
+ io::ppm::save(functor.debug_angle_, "right_top_angle.ppm");
// Left
mln::single_left_dmax_ratio_aligned_functor<L>
lfunctor(input_clo, components, dmax, min_angle, max_angle, anchor::Top);
- top_left = primitive::link::compute(lfunctor, anchor::Top);
-
+ ltop_links = primitive::link::compute(lfunctor, anchor::Top);
+ io::ppm::save(lfunctor.debug_, "left_top.ppm");
+ io::ppm::save(lfunctor.debug_angle_, "left_top_angle.ppm");
- t.stop();
+ image2d<value::rgb8> output = duplicate(functor.debug_);
+ data::paste((lfunctor.debug_ | (pw::value(lfunctor.debug_) != pw::cst(literal::black))) | (pw::value(lfunctor.debug_) != pw::cst(literal::white)), output);
- if (_debug_)
- {
- io::ppm::save(lfunctor.debug_, "left_top.ppm");
- io::ppm::save(lfunctor.debug_angle_, "left_top_angle.ppm");
-
- image2d<value::rgb8> output = duplicate(functor.debug_);
- data::paste((lfunctor.debug_ | (pw::value(lfunctor.debug_) != pw::cst(literal::black))) | (pw::value(lfunctor.debug_) != pw::cst(literal::white)), output);
-
- io::ppm::save(output, "left_right_top.ppm");
- }
-
- t.resume();
+ io::ppm::save(output, "left_right_top.ppm");
}
- // Bottom
{
// Right
mln::single_right_dmax_ratio_aligned_functor<L>
functor(input_clo, components, dmax, min_angle, max_angle, anchor::Bottom);
- bot_right = primitive::link::compute(functor, anchor::Bottom);
- t.stop();
-
- if (_debug_)
- {
- io::ppm::save(functor.debug_, "right_bot.ppm");
- io::ppm::save(functor.debug_angle_, "right_bot_angle.ppm");
- }
-
- t.resume();
+ bot_links = primitive::link::compute(functor, anchor::Bottom);
+ io::ppm::save(functor.debug_, "right_bot.ppm");
+ io::ppm::save(functor.debug_angle_, "right_bot_angle.ppm");
// Left
mln::single_left_dmax_ratio_aligned_functor<L>
lfunctor(input_clo, components, dmax, min_angle, max_angle, anchor::Bottom);
- bot_left = primitive::link::compute(lfunctor, anchor::Bottom);
- t.stop();
+ lbot_links = primitive::link::compute(lfunctor, anchor::Bottom);
+ io::ppm::save(lfunctor.debug_, "left_bot.ppm");
+ io::ppm::save(lfunctor.debug_angle_, "left_bot_angle.ppm");
- if (_debug_)
- {
- io::ppm::save(lfunctor.debug_, "left_bot.ppm");
- io::ppm::save(lfunctor.debug_angle_, "left_bot_angle.ppm");
- }
+ image2d<value::rgb8> output = duplicate(functor.debug_);
+ data::paste((lfunctor.debug_ | (pw::value(lfunctor.debug_) != pw::cst(literal::black))) | (pw::value(lfunctor.debug_) != pw::cst(literal::white)), output);
- if (_debug_)
- {
- image2d<value::rgb8> output = duplicate(functor.debug_);
- data::paste((lfunctor.debug_ | (pw::value(lfunctor.debug_) != pw::cst(literal::black))) | (pw::value(lfunctor.debug_) != pw::cst(literal::white)), output);
-
- io::ppm::save(output, "left_right_bot.ppm");
- }
+ io::ppm::save(output, "left_right_bot.ppm");
}
+// primitive::link::with_single_right_link_dmax_ratio_aligned(components, 2, min_angle, max_angle, anchor::Top);
+// object_links<L>
+// bot_links = primitive::link::with_single_right_link_dmax_ratio_aligned(components, 2, min_angle, max_angle, anchor::Bottom);
t_ = t;
std::cout << "links - " << t_ << std::endl;
+// t.restart();
+// // Filtering.
+// object_links<L>
+// ftop_links = filter::object_links_top_aligned(top_links, atoi(argv[2])),
+// fbot_links = filter::object_links_bottom_aligned(bot_links, atoi(argv[2]));
+// t_ = t;
+// std::cout << "links alignements - " << t_ << std::endl;
+
+ // Debug image.
+// if (debug)
+// {
+// scribo::debug::save_linked_bboxes_image(input,
+// components,
+// top_links,
+// literal::red,
+// literal::green,
+// "top.ppm",
+// anchor::TopRight);
+
+// scribo::debug::save_linked_bboxes_image(input,
+// components,
+// bot_links,
+// literal::red,
+// literal::green,
+// "bot.ppm",
+// anchor::BottomRight);
+// }
+
t.restart();
- std::cout << "group - top" << std::endl;
- object_groups<L>
- top_groups = primitive::group::from_double_link_any(top_left, top_right);
- std::cout << "group - bot" << std::endl;
- object_groups<L>
- bot_groups = primitive::group::from_double_link_any(bot_left, bot_right);
+ object_groups<L> top_groups = primitive::group::from_single_link(top_links);
+ object_groups<L> bot_groups = primitive::group::from_single_link(bot_links);
t_ = t;
- std::cout << "group - " << t_ << std::endl;
-
+ std::cout << "regroup - " << t_ << std::endl;
unsigned min_card = atoi(argv[4]);
@@ -578,39 +527,36 @@ int main(int argc, char *argv[])
- if (_debug_)
- {
-
- image2d<value::rgb8>
- wo_filtering = data::convert(value::rgb8(), input);
+ image2d<value::rgb8>
+ wo_filtering = data::convert(value::rgb8(), input);
- for_all_comp_data(d, btop_accu)
+ for_all_comp_data(d, btop_accu)
+ {
+ if (btop_accu(d).is_valid())
{
- if (btop_accu(d).is_valid())
- {
- mln::draw::line(wo_filtering,
- btop_accu(d).to_result().pmin(),
- point2d(btop_accu(d).to_result().pmin().row(),
- btop_accu(d).to_result().pmax().col()),
- literal::green);
+ mln::draw::line(wo_filtering,
+ btop_accu(d).to_result().pmin(),
+ point2d(btop_accu(d).to_result().pmin().row(),
+ btop_accu(d).to_result().pmax().col()),
+ literal::green);
- }
}
+ }
- for_all_comp_data(d, bbot_accu)
+ for_all_comp_data(d, bbot_accu)
+ {
+ if (bbot_accu(d).is_valid())
{
- if (bbot_accu(d).is_valid())
- {
- mln::draw::line(wo_filtering,
- point2d(bbot_accu(d).to_result().pmax().row(),
- bbot_accu(d).to_result().pmin().col()),
- bbot_accu(d).to_result().pmax(),
- literal::green);
- }
-
+ mln::draw::line(wo_filtering,
+ point2d(bbot_accu(d).to_result().pmax().row(),
+ bbot_accu(d).to_result().pmin().col()),
+ bbot_accu(d).to_result().pmax(),
+ literal::green);
}
- io::ppm::save(wo_filtering, "wo_filtering.ppm");
+
}
+ io::ppm::save(wo_filtering, "wo_filtering.ppm");
+
t.restart();
@@ -621,6 +567,13 @@ int main(int argc, char *argv[])
+// t.restart();
+// filter_bad_groups(top_groups, bot_groups);
+// t_ = t;
+// std::cout << "bad groups - " << t_ << std::endl;
+
+
+
t.restart();
util::array<accu::shape::bbox<point2d> >
top_accu(top_groups.nelements()),
@@ -642,18 +595,21 @@ int main(int argc, char *argv[])
- t.restart();
- image2d<bool> separators;
- initialize(separators, input_clo);
- data::fill(separators, false);
- t_ = t;
- std::cout << "Initialize separators image - " << t_ << std::endl;
- image2d<value::rgb8> both;
- if (_debug_)
+
+
+ image2d<value::rgb8>
both = data::convert(value::rgb8(), input);
+ image2d<value::rgb8>
+ top_l, bot_l;
+
+ if (debug)
+ {
+ top_l = duplicate(both);
+ bot_l = duplicate(both);
+ }
t.restart();
@@ -661,23 +617,23 @@ int main(int argc, char *argv[])
{
if (top_accu(d).is_valid() || btop_accu(d).is_valid())
{
- if (top_accu(d).is_valid())
- {
- if (_debug_)
- mln::draw::line(both,
+ if (debug)
+ if (top_accu(d).is_valid())
+ mln::draw::line(top_l,
top_accu(d).to_result().pmin(),
point2d(top_accu(d).to_result().pmin().row(),
top_accu(d).to_result().pmax().col()),
literal::green);
- mln::draw::line(separators,
+
+ if (top_accu(d).is_valid())
+ mln::draw::line(both,
top_accu(d).to_result().pmin(),
point2d(top_accu(d).to_result().pmin().row(),
top_accu(d).to_result().pmax().col()),
- true);
- }
+ literal::green);
else
- if (_debug_ && btop_accu(d).is_valid())
+ if (btop_accu(d).is_valid())
mln::draw::line(both,
btop_accu(d).to_result().pmin(),
point2d(btop_accu(d).to_result().pmin().row(),
@@ -687,23 +643,23 @@ int main(int argc, char *argv[])
}
if (bot_accu(d).is_valid() || bbot_accu(d).is_valid())
{
- if (bot_accu(d).is_valid())
- {
- if (_debug_)
- mln::draw::line(both,
+ if (debug)
+ if (bot_accu(d).is_valid())
+ mln::draw::line(bot_l,
point2d(bot_accu(d).to_result().pmax().row(),
bot_accu(d).to_result().pmin().col()),
bot_accu(d).to_result().pmax(),
literal::green);
- mln::draw::line(separators,
+
+ if (bot_accu(d).is_valid())
+ mln::draw::line(both,
point2d(bot_accu(d).to_result().pmax().row(),
bot_accu(d).to_result().pmin().col()),
bot_accu(d).to_result().pmax(),
- true);
- }
+ literal::green);
else
- if (_debug_ && bbot_accu(d).is_valid())
+ if (bbot_accu(d).is_valid())
mln::draw::line(both,
point2d(bbot_accu(d).to_result().pmax().row(),
bbot_accu(d).to_result().pmin().col()),
@@ -716,127 +672,11 @@ int main(int argc, char *argv[])
std::cout << "Drawing output image - " << t_ << std::endl;
- if (_debug_)
+ if (debug)
{
- io::ppm::save(both, argv[5]);
- io::pbm::save(separators, "separators.pbm");
- }
-
-
- // Hit or miss
- {
- if (_debug_)
- {
- image2d<bool> input_with_seps = duplicate(input_clo);
- data::paste(separators | pw::value(separators), input_with_seps);
-
- io::pbm::save(input_with_seps, "input_with_seps.pbm");
- }
-
- t.restart();
- unsigned length = 25;
-
- dpoint2d
- dp1(-21, 0),
- dp2( 21, 0);
-
- // Adjusting extension.
- t.restart();
- extension::adjust_fill(input_clo, length / 2, 0);
-
- accu::count_value<bool> accu(true);
- typedef image2d<unsigned> I;
-
- I tmp = accu::transform_line(accu, input_clo, length, 1);
- t_ = t;
- std::cout << "* accu::transform_line - " << t_ << std::endl;
-
- if (_debug_)
- io::pgm::save(data::convert(value::int_u8(), tmp), "tmp.pgm");
-
-
- t.restart();
- value::int_u8 nlabels;
- image2d<value::int_u8>
- sep_lbl = labeling::value(separators, true, c8(), nlabels);
- t_ = t;
- std::cout << "* labeling seps - " << t_ << std::endl;
-
-
- t.restart();
-// util::array<unsigned> lcard(unsigned(nlabels) + 1, 0);
-// util::array<unsigned> lfalse(unsigned(nlabels) + 1, 0);
-
- util::array<bool> relbl(unsigned(nlabels) + 1, true);
- relbl(0) = false;
-
-
-// unsigned
-// tmp_next_line_dp1 = tmp.delta_index(dp1),
-// tmp_next_line_dp2 = tmp.delta_index(dp2);
-
-// const mln_value(I)* val_sep = &separators(separators.domain().pmin());
-// const value::int_u8* val_lbl = &sep_lbl(sep_lbl.domain().pmin());
-
-// bool go_next = false;
- unsigned invalid_ratio = unsigned(length * 0.30f);
-
-// for (unsigned row = 0; i < nrows; ++row)
-// {
-// for (unsigned col = 0; col < ncols; ++col)
-// {
-
-// }
-
-// val_sep += ;
-// val_lbl += ;
-// }
-
- mln_piter_(I) p(separators.domain());
- for_all(p)
- if (separators(p))
- {
- unsigned lbl = sep_lbl(p);
-// ++lcard(lbl);
-
- unsigned
- top_count = tmp(p + dp1),
- bot_count = tmp(p + dp2);
-
- // This site is wrapped between two lines of text so we don't
- // want it.
- if (top_count >= invalid_ratio + 1
- && bot_count >= invalid_ratio + 1)
- {
- relbl(lbl) = false;
-// go_next = true;
- }
-// ++lfalse(lbl);
- }
-
-// for_all_comps(i, relbl)
-// relbl(i) = (lfalse(i) / (float) lcard(i)) < 0.02f;
- 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;
-
- image2d<bool> output = data::convert(bool(), sep_lbl);
-
- if (_debug_)
- {
- io::pbm::save(output, "separators_hom.pbm");
- io::pbm::save(separators, "separators_filtered.pbm");
- }
+ io::ppm::save(top_l, "top_l.ppm");
+ io::ppm::save(bot_l, "bot_l.ppm");
}
- t_ = t;
- std::cout << "Separator image - " << t_ << std::endl;
-
- gt.stop();
- t_ = gt;
- std::cout << "Total time: " << t_ << std::endl;
+ io::ppm::save(both, argv[5]);
}
diff --git a/scribo/sandbox/z/white_spaces/white_spaces.cc b/scribo/sandbox/z/white_spaces/white_spaces.cc.bak.left_right_merged
similarity index 58%
copy from scribo/sandbox/z/white_spaces/white_spaces.cc
copy to scribo/sandbox/z/white_spaces/white_spaces.cc.bak.left_right_merged
index d832d58..ecd44ae 100644
--- a/scribo/sandbox/z/white_spaces/white_spaces.cc
+++ b/scribo/sandbox/z/white_spaces/white_spaces.cc.bak.left_right_merged
@@ -10,8 +10,6 @@
#include <mln/labeling/colorize.hh>
-#include <mln/labeling/relabel.hh>
-#include <mln/labeling/blobs.hh>
#include <mln/morpho/closing/structural.hh>
#include <mln/morpho/closing/area.hh>
@@ -43,24 +41,17 @@
#include <mln/norm/l1.hh>
#include <scribo/core/object_groups.hh>
-#include <scribo/core/component_set.hh>
#include <scribo/primitive/extract/components.hh>
#include <scribo/primitive/extract/lines_h_pattern.hh>
#include <scribo/primitive/remove/separators.hh>
-
+#include <scribo/primitive/group/from_single_link.hh>
#include <scribo/preprocessing/denoise_fg.hh>
#include <scribo/preprocessing/rotate_90.hh>
-#include <scribo/primitive/link/internal/dmax_default.hh>
-
#include <scribo/primitive/link/with_single_right_link_dmax_ratio.hh>
#include <scribo/primitive/link/with_single_right_link_dmax_ratio_aligned.hh>
-#include <scribo/primitive/group/from_double_link_any.hh>
-
-#include <scribo/primitive/group/from_single_link.hh>
-
#include <scribo/filter/object_links_top_aligned.hh>
#include <scribo/filter/object_groups_small.hh>
#include <scribo/filter/object_links_bottom_aligned.hh>
@@ -72,11 +63,6 @@ namespace mln
using namespace scribo;
-
- // Enable debug.
- bool _debug_;
-
-
template <typename L>
void filter_bad_groups(object_groups<L>& top_groups,
object_groups<L>& bot_groups)
@@ -120,27 +106,26 @@ namespace mln
unsigned current_object,
anchor::Type anchor)
{
- mln_site(L) sp;// = comps(current_object).bbox().pcenter();
+ mln_site(L) sp = comps(current_object).bbox().pcenter();
+
+ unsigned h = comps(current_object).bbox().pmax().row()
+ - comps(current_object).bbox().pmin().row();
- unsigned h = comps(current_object).bbox().height();
switch (anchor)
{
default:
return sp;
-
// Bounding box top center
- case anchor::Top: // FIXME: rename as TopLeft
- sp.col() = comps(current_object).bbox().pmin().col();
+ case anchor::Top:
sp.row() = comps(current_object).bbox().pmin().row()
+ math::min(2u, (h + 1) / 2 - 1);
break;
// Bounding box bottom center
- case anchor::Bottom: // FIXME: rename as BottomLeft
- sp.col() = comps(current_object).bbox().pmax().col();
+ case anchor::Bottom:
sp.row() = comps(current_object).bbox().pmax().row()
- math::min(2u, (h + 1) / 2 - 1);
break;
@@ -155,10 +140,10 @@ namespace mln
template <typename L, typename E>
class single_dmax_ratio_aligned_functor_base
- : public link_single_dmax_ratio_base<L, dmax_default, E>
+ : public link_single_dmax_ratio_base<L, E>
{
// typedef single_right_dmax_ratio_aligned_functor<L> self_t;
- typedef link_single_dmax_ratio_base<L, dmax_default, E> super_;
+ typedef link_single_dmax_ratio_base<L, E> super_;
public:
typedef mln_site(L) P;
@@ -170,13 +155,16 @@ namespace mln
float min_angle,
float max_angle,
anchor::Type anchor_)
- : super_(components,
- anchor::Horizontal,
- dmax_default(dmax)),
- anchor(anchor_),
+ : super_(components, dmax, anchor::Horizontal), anchor(anchor_),
debug_(data::convert(value::rgb8(), input)),
debug_angle_(data::convert(value::rgb8(), input))
{
+ std::cout << "min_angle = " << min_angle
+ << " - max_angle = " << max_angle
+ << std::endl;
+ std::cout << "min_angle_rad = " << min_alpha_rad
+ << " - max_angle_rad = " << max_alpha_rad
+ << std::endl;
min_alpha_rad = (min_angle / 180.0f) * math::pi;
max_alpha_rad = (max_angle / 180.0f) * math::pi;
}
@@ -186,11 +174,6 @@ namespace mln
++p.col();
}
- void compute_next_site_f_(unsigned& p)
- {
- ++p;
- }
-
mln_site(L)
start_point_(unsigned current_object, anchor::Type anchor)
@@ -221,10 +204,14 @@ namespace mln
dist = math::abs(p[this->direction_] - b.pmin()[this->direction_]);
+// int ldist = std::max(this->components_(current_object).bbox().width() / 2,
+// this->components_(this->labeled_image_(p)).bbox().width() / 2);
+
int ldist = this->components_(current_object).bbox().width();
// Components are really close, so the angle is more permissive.
if (dist < 3 * ldist)
+// if (dist < (ldist + 0.7 * ldist))
{
return
filter::internal::component_aligned_rad(this->components_,
@@ -251,13 +238,40 @@ namespace mln
{
super_::validate_link_(current_object, start_point, p, anchor);
- if (_debug_)
+ mln_site(L)
+ p1 = mln::my_anchors(this->components_, current_object, anchor),
+ p2 = mln::my_anchors(this->components_, this->labeled_image_(p),
+ anchor);
+ draw::line(debug_, p1, p2, literal::green);
+
+
+ float
+ angle = filter::internal::alignment_angle(this->components_,
+ current_object,
+ this->labeled_image_(p),
+ anchor);
+ angle = (angle * 180.0f) / math::pi;
+ angle = angle * 20.0f + 1.0f;
+ draw::line(debug_angle_, p1, p2, value::rgb8(angle, angle, angle));
+ }
+
+ void invalidate_link_(unsigned current_object,
+ const P& start_point,
+ const P& p,
+ anchor::Type anchor)
+ {
+ super_::invalidate_link_(current_object, start_point, p, anchor);
+
+ if (this->labeled_image_.domain().has(p) && this->labeled_image_(p) != 0)
{
mln_site(L)
p1 = mln::my_anchors(this->components_, current_object, anchor),
p2 = mln::my_anchors(this->components_, this->labeled_image_(p),
anchor);
- draw::line(debug_, p1, p2, literal::green);
+ if (this->labeled_image_.domain().has(p2) && norm::l1_distance(p1.to_vec(), p2.to_vec()) < 300)
+ {
+ draw::line(debug_, p1, p2, literal::red);
+ }
float
@@ -271,39 +285,6 @@ namespace mln
}
}
- void invalidate_link_(unsigned current_object,
- const P& start_point,
- const P& p,
- anchor::Type anchor)
- {
- super_::invalidate_link_(current_object, start_point, p, anchor);
-
- if (_debug_)
- {
- if (this->labeled_image_.domain().has(p) && this->labeled_image_(p) != 0)
- {
- mln_site(L)
- p1 = mln::my_anchors(this->components_, current_object, anchor),
- p2 = mln::my_anchors(this->components_, this->labeled_image_(p),
- anchor);
- if (this->labeled_image_.domain().has(p2) && norm::l1_distance(p1.to_vec(), p2.to_vec()) < 300)
- {
- draw::line(debug_, p1, p2, literal::red);
- }
-
-
- float
- angle = filter::internal::alignment_angle(this->components_,
- current_object,
- this->labeled_image_(p),
- anchor);
- angle = (angle * 180.0f) / math::pi;
- angle = angle * 20.0f + 1.0f;
- draw::line(debug_angle_, p1, p2, value::rgb8(angle, angle, angle));
- }
- }
- }
-
float min_alpha_rad;
float max_alpha_rad;
@@ -341,11 +322,6 @@ namespace mln
++p.col();
}
- void compute_next_site_f_(unsigned& p)
- {
- ++p;
- }
-
};
@@ -375,12 +351,6 @@ namespace mln
--p.col();
}
- void compute_next_site_f_(unsigned& p)
- {
- --p;
- }
-
-
};
}
@@ -391,51 +361,35 @@ int main(int argc, char *argv[])
using namespace scribo;
using namespace mln;
- if (argc != 6 && argc != 7)
- {
- std::cout << "Usage: " << argv[0] << " <in.pbm> <min_angle = 3> <max_angle = 5> <min_card = 3> <out.ppm> <debug_enabled>" << std::endl;
- return 1;
- };
+ bool debug = (argc == 7);
- _debug_ = (argc == 7);
+ image2d<bool> input;
+ mln::io::pbm::load(input, argv[1]);
util::timer t;
- util::timer gt;
- // Load (OK)
t.start();
- image2d<bool> input;
- mln::io::pbm::load(input, argv[1]);
+ input = scribo::preprocessing::rotate_90(input);
float t_ = t;
- std::cout << "Image loaded - " << t_ << std::endl;
-
- gt.start();
-
- // Closing structural - Connect characters.
- t.restart();
-
- win::hline2d vl(17);
- image2d<bool> input_clo = morpho::closing::structural(input, vl);
+ std::cout << "rotate_90 - " << t_ << std::endl;
-// input_clo = scribo::preprocessing::rotate_90(input_clo, true);
+ t.start();
+ image2d<bool> hsep
+ = scribo::primitive::extract::lines_h_pattern(input, 200, 9);
+ input = scribo::primitive::remove::separators(input, hsep);
t_ = t;
- std::cout << "closing_structural - " << t_ << std::endl;
+ std::cout << "Remove separators - " << t_ << std::endl;
- if (_debug_)
- {
- // Restore input orientation.
- input = scribo::preprocessing::rotate_90(input, false);
-
- io::pbm::save(input_clo, "input_clo.pbm");
- }
- // Rotate (OK)
t.restart();
- input_clo = scribo::preprocessing::rotate_90(input_clo, false);
+ win::vline2d vl(17);
+ image2d<bool> input_clo = morpho::closing::structural(input, vl);
t_ = t;
- std::cout << "rotate_90 - " << t_ << std::endl;
+ std::cout << "closing_structural - " << t_ << std::endl;
+ if (debug)
+ io::pbm::save(input_clo, "input_clo.pbm");
/// Finding components.
@@ -450,19 +404,23 @@ int main(int argc, char *argv[])
t_ = t;
std::cout << "extract::components - " << t_ << std::endl;
- if (_debug_)
- io::pgm::save(data::convert(value::int_u8(), components.labeled_image()),
- "lbl.pgm");
+ unsigned min_angle = atoi(argv[2]), max_angle = atoi(argv[3]);
+// t.restart();
+// object_links<L>
+// top_links = primitive::link::with_single_right_link_dmax_ratio_aligned(components, 2, min_angle, max_angle, anchor::Top);
- unsigned min_angle = atoi(argv[2]), max_angle = atoi(argv[3]);
+// object_links<L>
+// bot_links = primitive::link::with_single_right_link_dmax_ratio_aligned(components, 2, min_angle, max_angle, anchor::Bottom);
+// t_ = t;
+// std::cout << "links - " << t_ << std::endl;
unsigned dmax = 5;
t.restart();
- object_links<L> top_right, bot_right;
+ object_links<L> top_links, bot_links;
- object_links<L> top_left, bot_left;
+ object_links<L> ltop_links, lbot_links;
// Top
@@ -470,38 +428,26 @@ int main(int argc, char *argv[])
// Right
mln::single_right_dmax_ratio_aligned_functor<L>
functor(input_clo, components, dmax, min_angle, max_angle, anchor::Top);
- top_right = primitive::link::impl::compute_fastest(functor, anchor::Top);
+ top_links = primitive::link::compute(functor, anchor::Top);
t.stop();
-
-
- if (_debug_)
- {
- io::ppm::save(functor.debug_, "right_top.ppm");
- io::ppm::save(functor.debug_angle_, "right_top_angle.ppm");
- }
-
+ io::ppm::save(functor.debug_, "right_top.ppm");
+ io::ppm::save(functor.debug_angle_, "right_top_angle.ppm");
t.resume();
// Left
mln::single_left_dmax_ratio_aligned_functor<L>
lfunctor(input_clo, components, dmax, min_angle, max_angle, anchor::Top);
- top_left = primitive::link::compute(lfunctor, anchor::Top);
-
+ ltop_links = primitive::link::compute(lfunctor, anchor::Top);
t.stop();
+ io::ppm::save(lfunctor.debug_, "left_top.ppm");
+ io::ppm::save(lfunctor.debug_angle_, "left_top_angle.ppm");
- if (_debug_)
- {
- io::ppm::save(lfunctor.debug_, "left_top.ppm");
- io::ppm::save(lfunctor.debug_angle_, "left_top_angle.ppm");
-
- image2d<value::rgb8> output = duplicate(functor.debug_);
- data::paste((lfunctor.debug_ | (pw::value(lfunctor.debug_) != pw::cst(literal::black))) | (pw::value(lfunctor.debug_) != pw::cst(literal::white)), output);
-
- io::ppm::save(output, "left_right_top.ppm");
- }
+ image2d<value::rgb8> output = duplicate(functor.debug_);
+ data::paste((lfunctor.debug_ | (pw::value(lfunctor.debug_) != pw::cst(literal::black))) | (pw::value(lfunctor.debug_) != pw::cst(literal::white)), output);
+ io::ppm::save(output, "left_right_top.ppm");
t.resume();
}
@@ -511,36 +457,85 @@ int main(int argc, char *argv[])
// Right
mln::single_right_dmax_ratio_aligned_functor<L>
functor(input_clo, components, dmax, min_angle, max_angle, anchor::Bottom);
- bot_right = primitive::link::compute(functor, anchor::Bottom);
+ bot_links = primitive::link::compute(functor, anchor::Bottom);
t.stop();
-
- if (_debug_)
- {
- io::ppm::save(functor.debug_, "right_bot.ppm");
- io::ppm::save(functor.debug_angle_, "right_bot_angle.ppm");
- }
-
+ io::ppm::save(functor.debug_, "right_bot.ppm");
+ io::ppm::save(functor.debug_angle_, "right_bot_angle.ppm");
t.resume();
// Left
mln::single_left_dmax_ratio_aligned_functor<L>
lfunctor(input_clo, components, dmax, min_angle, max_angle, anchor::Bottom);
- bot_left = primitive::link::compute(lfunctor, anchor::Bottom);
+ lbot_links = primitive::link::compute(lfunctor, anchor::Bottom);
+ t.stop();
+ io::ppm::save(lfunctor.debug_, "left_bot.ppm");
+ io::ppm::save(lfunctor.debug_angle_, "left_bot_angle.ppm");
+ t.resume();
+
t.stop();
+ image2d<value::rgb8> output = duplicate(functor.debug_);
+ data::paste((lfunctor.debug_ | (pw::value(lfunctor.debug_) != pw::cst(literal::black))) | (pw::value(lfunctor.debug_) != pw::cst(literal::white)), output);
- if (_debug_)
+ io::ppm::save(output, "left_right_bot.ppm");
+ t.resume();
+ }
+
+
+
+ // Merge links results.
+ object_groups<L> top_groups(top_links), bot_groups(bot_links);
+ {
+ top_groups.init_(top_links);
+ bot_groups.init_(bot_links);
+
+ for_all_groups(i, top_groups)
+ {
+ if (!top_links.components()(i).is_valid())
+ top_groups(i) = 0;
+ else
+ primitive::internal::find_root(top_groups, i);
+
+ if (!bot_links.components()(i).is_valid())
+ bot_groups(i) = 0;
+ else
+ primitive::internal::find_root(bot_groups, i);
+ }
+
+ util::array<unsigned>
+ top_group_relabel(top_groups.nelements()),
+ bot_group_relabel(bot_groups.nelements());
+ for (unsigned n = 0; n < top_group_relabel.size(); ++n)
+ {
+ top_group_relabel(n) = n;
+ bot_group_relabel(n) = n;
+ }
+
+ for_all_links(l, top_links)
{
- io::ppm::save(lfunctor.debug_, "left_bot.ppm");
- io::ppm::save(lfunctor.debug_angle_, "left_bot_angle.ppm");
+ if (ltop_links(l) != l
+ && top_links(ltop_links(l)) == ltop_links(l)
+ && top_links(l) != ltop_links(l))
+ {
+ top_group_relabel(top_groups(ltop_links(l))) = top_group_relabel(top_groups(l));
+ }
+
+ if (lbot_links(l) != l
+ && bot_links(lbot_links(l)) == lbot_links(l)
+ && bot_links(l) != lbot_links(l))
+ {
+ bot_group_relabel(bot_groups(lbot_links(l))) = bot_group_relabel(bot_groups(l));
+ }
}
- if (_debug_)
+ for_all_groups(i, top_groups)
{
- image2d<value::rgb8> output = duplicate(functor.debug_);
- data::paste((lfunctor.debug_ | (pw::value(lfunctor.debug_) != pw::cst(literal::black))) | (pw::value(lfunctor.debug_) != pw::cst(literal::white)), output);
+ if (top_group_relabel(top_groups(i)) != top_groups(i))
+ top_groups(i) = top_group_relabel(top_groups(i));
- io::ppm::save(output, "left_right_bot.ppm");
+ if (bot_group_relabel(bot_groups(i)) != bot_groups(i))
+ bot_groups(i) = bot_group_relabel(bot_groups(i));
}
+
}
@@ -548,16 +543,11 @@ int main(int argc, char *argv[])
std::cout << "links - " << t_ << std::endl;
- t.restart();
- std::cout << "group - top" << std::endl;
- object_groups<L>
- top_groups = primitive::group::from_double_link_any(top_left, top_right);
- std::cout << "group - bot" << std::endl;
- object_groups<L>
- bot_groups = primitive::group::from_double_link_any(bot_left, bot_right);
- t_ = t;
- std::cout << "group - " << t_ << std::endl;
-
+// t.restart();
+// object_groups<L> top_groups = primitive::group::from_single_link(top_links);
+// object_groups<L> bot_groups = primitive::group::from_single_link(bot_links);
+// t_ = t;
+// std::cout << "regroup - " << t_ << std::endl;
unsigned min_card = atoi(argv[4]);
@@ -578,39 +568,36 @@ int main(int argc, char *argv[])
- if (_debug_)
- {
-
- image2d<value::rgb8>
- wo_filtering = data::convert(value::rgb8(), input);
+ image2d<value::rgb8>
+ wo_filtering = data::convert(value::rgb8(), input);
- for_all_comp_data(d, btop_accu)
+ for_all_comp_data(d, btop_accu)
+ {
+ if (btop_accu(d).is_valid())
{
- if (btop_accu(d).is_valid())
- {
- mln::draw::line(wo_filtering,
- btop_accu(d).to_result().pmin(),
- point2d(btop_accu(d).to_result().pmin().row(),
- btop_accu(d).to_result().pmax().col()),
- literal::green);
+ mln::draw::line(wo_filtering,
+ btop_accu(d).to_result().pmin(),
+ point2d(btop_accu(d).to_result().pmin().row(),
+ btop_accu(d).to_result().pmax().col()),
+ literal::green);
- }
}
+ }
- for_all_comp_data(d, bbot_accu)
+ for_all_comp_data(d, bbot_accu)
+ {
+ if (bbot_accu(d).is_valid())
{
- if (bbot_accu(d).is_valid())
- {
- mln::draw::line(wo_filtering,
- point2d(bbot_accu(d).to_result().pmax().row(),
- bbot_accu(d).to_result().pmin().col()),
- bbot_accu(d).to_result().pmax(),
- literal::green);
- }
-
+ mln::draw::line(wo_filtering,
+ point2d(bbot_accu(d).to_result().pmax().row(),
+ bbot_accu(d).to_result().pmin().col()),
+ bbot_accu(d).to_result().pmax(),
+ literal::green);
}
- io::ppm::save(wo_filtering, "wo_filtering.ppm");
+
}
+ io::ppm::save(wo_filtering, "wo_filtering.ppm");
+
t.restart();
@@ -621,6 +608,13 @@ int main(int argc, char *argv[])
+// t.restart();
+// filter_bad_groups(top_groups, bot_groups);
+// t_ = t;
+// std::cout << "bad groups - " << t_ << std::endl;
+
+
+
t.restart();
util::array<accu::shape::bbox<point2d> >
top_accu(top_groups.nelements()),
@@ -642,18 +636,20 @@ int main(int argc, char *argv[])
- t.restart();
- image2d<bool> separators;
- initialize(separators, input_clo);
- data::fill(separators, false);
- t_ = t;
- std::cout << "Initialize separators image - " << t_ << std::endl;
- image2d<value::rgb8> both;
- if (_debug_)
+
+ image2d<value::rgb8>
both = data::convert(value::rgb8(), input);
+ image2d<value::rgb8>
+ top_l, bot_l;
+
+ if (debug)
+ {
+ top_l = duplicate(both);
+ bot_l = duplicate(both);
+ }
t.restart();
@@ -661,23 +657,23 @@ int main(int argc, char *argv[])
{
if (top_accu(d).is_valid() || btop_accu(d).is_valid())
{
- if (top_accu(d).is_valid())
- {
- if (_debug_)
- mln::draw::line(both,
+ if (debug)
+ if (top_accu(d).is_valid())
+ mln::draw::line(top_l,
top_accu(d).to_result().pmin(),
point2d(top_accu(d).to_result().pmin().row(),
top_accu(d).to_result().pmax().col()),
literal::green);
- mln::draw::line(separators,
+
+ if (top_accu(d).is_valid())
+ mln::draw::line(both,
top_accu(d).to_result().pmin(),
point2d(top_accu(d).to_result().pmin().row(),
top_accu(d).to_result().pmax().col()),
- true);
- }
+ literal::green);
else
- if (_debug_ && btop_accu(d).is_valid())
+ if (btop_accu(d).is_valid())
mln::draw::line(both,
btop_accu(d).to_result().pmin(),
point2d(btop_accu(d).to_result().pmin().row(),
@@ -687,23 +683,23 @@ int main(int argc, char *argv[])
}
if (bot_accu(d).is_valid() || bbot_accu(d).is_valid())
{
- if (bot_accu(d).is_valid())
- {
- if (_debug_)
- mln::draw::line(both,
+ if (debug)
+ if (bot_accu(d).is_valid())
+ mln::draw::line(bot_l,
point2d(bot_accu(d).to_result().pmax().row(),
bot_accu(d).to_result().pmin().col()),
bot_accu(d).to_result().pmax(),
literal::green);
- mln::draw::line(separators,
+
+ if (bot_accu(d).is_valid())
+ mln::draw::line(both,
point2d(bot_accu(d).to_result().pmax().row(),
bot_accu(d).to_result().pmin().col()),
bot_accu(d).to_result().pmax(),
- true);
- }
+ literal::green);
else
- if (_debug_ && bbot_accu(d).is_valid())
+ if (bbot_accu(d).is_valid())
mln::draw::line(both,
point2d(bbot_accu(d).to_result().pmax().row(),
bbot_accu(d).to_result().pmin().col()),
@@ -716,127 +712,11 @@ int main(int argc, char *argv[])
std::cout << "Drawing output image - " << t_ << std::endl;
- if (_debug_)
- {
- io::ppm::save(both, argv[5]);
- io::pbm::save(separators, "separators.pbm");
- }
-
-
- // Hit or miss
+ if (debug)
{
- if (_debug_)
- {
- image2d<bool> input_with_seps = duplicate(input_clo);
- data::paste(separators | pw::value(separators), input_with_seps);
-
- io::pbm::save(input_with_seps, "input_with_seps.pbm");
- }
-
- t.restart();
- unsigned length = 25;
-
- dpoint2d
- dp1(-21, 0),
- dp2( 21, 0);
-
- // Adjusting extension.
- t.restart();
- extension::adjust_fill(input_clo, length / 2, 0);
-
- accu::count_value<bool> accu(true);
- typedef image2d<unsigned> I;
-
- I tmp = accu::transform_line(accu, input_clo, length, 1);
- t_ = t;
- std::cout << "* accu::transform_line - " << t_ << std::endl;
-
- if (_debug_)
- io::pgm::save(data::convert(value::int_u8(), tmp), "tmp.pgm");
-
-
- t.restart();
- value::int_u8 nlabels;
- image2d<value::int_u8>
- sep_lbl = labeling::value(separators, true, c8(), nlabels);
- t_ = t;
- std::cout << "* labeling seps - " << t_ << std::endl;
-
-
- t.restart();
-// util::array<unsigned> lcard(unsigned(nlabels) + 1, 0);
-// util::array<unsigned> lfalse(unsigned(nlabels) + 1, 0);
-
- util::array<bool> relbl(unsigned(nlabels) + 1, true);
- relbl(0) = false;
-
-
-// unsigned
-// tmp_next_line_dp1 = tmp.delta_index(dp1),
-// tmp_next_line_dp2 = tmp.delta_index(dp2);
-
-// const mln_value(I)* val_sep = &separators(separators.domain().pmin());
-// const value::int_u8* val_lbl = &sep_lbl(sep_lbl.domain().pmin());
-
-// bool go_next = false;
- unsigned invalid_ratio = unsigned(length * 0.30f);
-
-// for (unsigned row = 0; i < nrows; ++row)
-// {
-// for (unsigned col = 0; col < ncols; ++col)
-// {
-
-// }
-
-// val_sep += ;
-// val_lbl += ;
-// }
-
- mln_piter_(I) p(separators.domain());
- for_all(p)
- if (separators(p))
- {
- unsigned lbl = sep_lbl(p);
-// ++lcard(lbl);
-
- unsigned
- top_count = tmp(p + dp1),
- bot_count = tmp(p + dp2);
-
- // This site is wrapped between two lines of text so we don't
- // want it.
- if (top_count >= invalid_ratio + 1
- && bot_count >= invalid_ratio + 1)
- {
- relbl(lbl) = false;
-// go_next = true;
- }
-// ++lfalse(lbl);
- }
-
-// for_all_comps(i, relbl)
-// relbl(i) = (lfalse(i) / (float) lcard(i)) < 0.02f;
- 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;
-
- image2d<bool> output = data::convert(bool(), sep_lbl);
-
- if (_debug_)
- {
- io::pbm::save(output, "separators_hom.pbm");
- io::pbm::save(separators, "separators_filtered.pbm");
- }
+ io::ppm::save(top_l, "top_l.ppm");
+ io::ppm::save(bot_l, "bot_l.ppm");
}
- t_ = t;
- std::cout << "Separator image - " << t_ << std::endl;
-
- gt.stop();
- t_ = gt;
- std::cout << "Total time: " << t_ << std::endl;
+ io::ppm::save(both, argv[5]);
}
--
1.5.6.5
1
0
28 Mar '11
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Olena, a generic and efficient image processing platform".
The branch sandbox/z/scribo has been created
at 38564770b08085da470f20d1ca11ab0faebb70c0 (commit)
- Log -----------------------------------------------------------------
3856477 Do not negate Sauvola's output.
0af6845 Change Sauvola's window size for reverted image and filter width ratio.
cd88039 Improve text_in_picture_neg
d6c8fae Improve reconstruction?
a0d5c6a Improve output of white space algorithm.
7840dad sandbox/z/white_spaces/white_spaces.cc: Fix compilation.
7f18abf Backup FineReader XML schema
8aca717 Backup todolist
a81f8f1 Backup files
-----------------------------------------------------------------------
hooks/post-receive
--
Olena, a generic and efficient image processing platform
1
0
last-svn-commit-681-gd71ff74 Makefile.am: Add new rules to build rpm and deb packages.
by Guillaume Lazzara 28 Mar '11
by Guillaume Lazzara 28 Mar '11
28 Mar '11
---
ChangeLog | 4 ++++
Makefile.am | 20 ++++++++++++++++++++
2 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 56ed6c1..34b038c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2010-08-27 Guillaume Lazzara <z(a)lrde.epita.fr>
+ * Makefile.am: Add new rules to build rpm and deb packages.
+
+2010-08-27 Guillaume Lazzara <z(a)lrde.epita.fr>
+
Add package configuration files.
* configure.ac: Ask for the generation of some package
diff --git a/Makefile.am b/Makefile.am
index f89da9f..063a088 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -136,3 +136,23 @@ snapshot:
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& mv -f $(srcdir)/configure.ac.old $(srcdir)/configure.ac
#>>
+
+
+regen-inst:
+ cd milena && $(MAKE) regen-inst \
+ && cd scribo && $(MAKE) regen-inst
+
+deb:
+ cd milena && $(MAKE) deb \
+ && cd scribo && $(MAKE) deb
+
+rpm:
+ cd milena && $(MAKE) rpm \
+ && cd scribo && $(MAKE) rpm
+
+pkg:
+ cd $(abs_top_builddir)/milena \
+ && $(MAKE) pkg \
+ && cd $(abs_top_builddir)/scribo \
+ && $(MAKE) pkg \
+ && cd $(abs_top_builddir)
\ No newline at end of file
--
1.5.6.5
1
0
last-svn-commit-680-g6a4e698 Makefile.am: Add new rules to build rpm and deb packages for Scribo.
by Guillaume Lazzara 28 Mar '11
by Guillaume Lazzara 28 Mar '11
28 Mar '11
---
scribo/ChangeLog | 5 ++++
scribo/Makefile.am | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 58 insertions(+), 0 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index d3b3a65..8016953 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,3 +1,8 @@
+2010-08-27 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * Makefile.am: Add new rules to build rpm and deb packages for
+ Scribo.
+
2010-11-16 Guillaume Lazzara <z(a)lrde.epita.fr>
* scribo/primitive/extract/separators_nonvisible.hh: Fix warnings.
diff --git a/scribo/Makefile.am b/scribo/Makefile.am
index 741cca4..2857d57 100644
--- a/scribo/Makefile.am
+++ b/scribo/Makefile.am
@@ -41,3 +41,56 @@ $(srcdir)/headers.mk: $(top_srcdir)/build-aux/generate_dist_headers.sh
scribo headers.mk nodist-headers
include $(srcdir)/headers.mk
+
+
+
+
+# Packaging
+#----------
+
+tmp_inst_dir = scribo_inst.tmp
+tmp_inst_path = $(abs_builddir)/$(tmp_inst_dir)
+
+regen-inst:
+ rm -rf $(tmp_inst_path) \
+ && mkdir $(tmp_inst_path) \
+ && $(MAKE) DESTDIR=$(tmp_inst_path) install \
+ && mkepmlist --prefix $(bindir) -g sys -u root \
+ $(builddir)/$(tmp_inst_dir)/$(bindir) \
+ > $(top_srcdir)/pkg-aux/scribo_bin_list.inc \
+ && mkepmlist --prefix $(libexecdir) -g sys -u root \
+ $(builddir)/$(tmp_inst_dir)/$(libexecdir) \
+ >> $(top_srcdir)/pkg-aux/scribo_bin_list.inc \
+ && mkepmlist --prefix $(includedir) -g sys -u root \
+ $(builddir)/$(tmp_inst_dir)/$(includedir) \
+ > $(top_srcdir)/pkg-aux/scribo_include_list.inc \
+ && rm -rf $(tmp_inst_path)
+
+
+deb:
+ rm -rf $(tmp_inst_path) \
+ && mkdir $(tmp_inst_path) \
+ && $(MAKE) DESTDIR=$(tmp_inst_path) install \
+ && epm -v -v -f deb -n --output-dir $(top_builddir) scribo \
+ $(top_builddir)/pkg-aux/scribo.list \
+ && rm -rf $(tmp_inst_path)
+
+
+rpm:
+ rm -rf $(tmp_inst_path) \
+ && mkdir $(tmp_inst_path) \
+ && $(MAKE) DESTDIR=$(tmp_inst_path) install \
+ && epm -v -v -f rpm -n --output-dir $(top_builddir) scribo \
+ $(top_builddir)/pkg-aux/scribo.list \
+ && rm -rf $(tmp_inst_path)
+
+pkg:
+ rm -rf $(tmp_inst_path) \
+ && mkdir $(tmp_inst_path) \
+ && $(MAKE) DESTDIR=$(tmp_inst_path) install \
+ && epm -v -v -f rpm -n --output-dir $(top_builddir) scribo \
+ $(top_builddir)/pkg-aux/scribo.list \
+ && epm -v -v -f deb -n --output-dir $(top_builddir) scribo \
+ $(top_builddir)/pkg-aux/scribo.list \
+ && rm -rf $(tmp_inst_path)
+
--
1.5.6.5
1
0
last-svn-commit-679-g3f0712c Makefile.am: Add new rules to build rpm and deb packages for Milena.
by Guillaume Lazzara 28 Mar '11
by Guillaume Lazzara 28 Mar '11
28 Mar '11
---
milena/ChangeLog | 5 +++++
milena/Makefile.am | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 56 insertions(+), 0 deletions(-)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index 6d5de98..e133b6e 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,3 +1,8 @@
+2010-08-27 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * Makefile.am: Add new rules to build rpm and deb packages for
+ Milena.
+
2010-11-18 Guillaume Lazzara <z(a)lrde.epita.fr>
* mln/io/pnm/save.hh: Add a fixme related to an ICE with GCC
diff --git a/milena/Makefile.am b/milena/Makefile.am
index bac240d..a12aedc 100644
--- a/milena/Makefile.am
+++ b/milena/Makefile.am
@@ -110,3 +110,54 @@ EXTRA_DIST += \
tests/img/test_rgb8.tif \
tests/img/test_bw.tif \
tests/img/test_gl.tif
+
+
+
+# Packaging
+#----------
+
+tmp_inst_dir = milena_inst.tmp
+tmp_inst_path = $(abs_builddir)/$(tmp_inst_dir)
+
+regen-inst:
+ rm -rf $(tmp_inst_path) \
+ && $(MAKE) DESTDIR=$(tmp_inst_path) install \
+ && mkepmlist --prefix $(bindir) -g sys -u root \
+ $(builddir)/$(tmp_inst_dir)/$(bindir) \
+ > $(top_srcdir)/pkg-aux/milena_bin_list.inc \
+ && mkepmlist --prefix $(datarootdir)/olena -g sys -u root \
+ $(builddir)/$(tmp_inst_dir)/$(datarootdir)/olena \
+ >> $(top_srcdir)/pkg-aux/milena_bin_list.inc \
+ && mkepmlist --prefix $(datarootdir)/doc -g sys -u root \
+ $(builddir)/$(tmp_inst_dir)/$(datarootdir)/doc \
+ > $(top_srcdir)/pkg-aux/milena_doc_list.inc \
+ && mkepmlist --prefix $(includedir) -g sys -u root \
+ $(builddir)/$(tmp_inst_dir)/$(includedir) \
+ > $(top_srcdir)/pkg-aux/milena_include_list.inc \
+ && rm -rf $(tmp_inst_path)
+
+
+deb:
+ rm -rf $(tmp_inst_path) \
+ && $(MAKE) DESTDIR=$(tmp_inst_path) install \
+ && epm -v -v -f deb -n --output-dir $(top_builddir) milena \
+ $(top_builddir)/pkg-aux/milena.list \
+ && rm -rf $(tmp_inst_path)
+
+
+rpm:
+ rm -rf $(tmp_inst_path) \
+ && $(MAKE) DESTDIR=$(tmp_inst_path) install \
+ && epm -v -v -f rpm -n --output-dir $(top_builddir) milena \
+ $(top_builddir)/pkg-aux/milena.list \
+ && rm -rf $(tmp_inst_path)
+
+pkg:
+ rm -rf $(tmp_inst_path) \
+ && $(MAKE) DESTDIR=$(tmp_inst_path) install \
+ && epm -v -v -f rpm -n --output-dir $(top_builddir) milena \
+ $(top_builddir)/pkg-aux/milena.list \
+ && epm -v -v -f deb -n --output-dir $(top_builddir) milena \
+ $(top_builddir)/pkg-aux/milena.list \
+ && rm -rf $(tmp_inst_path)
+
--
1.5.6.5
1
0
28 Mar '11
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Olena, a generic and efficient image processing platform".
The branch distribute-scribo has been deleted
was 6067c3116a8d2b93468a31dade50dc9b08b546ed
-----------------------------------------------------------------------
6067c3116a8d2b93468a31dade50dc9b08b546ed src/Makefile.am (CLEANFILES): Fix invalid variable name.
-----------------------------------------------------------------------
hooks/post-receive
--
Olena, a generic and efficient image processing platform
1
0
28 Mar '11
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Olena, a generic and efficient image processing platform".
The branch distribute-olena has been updated
discards bd17ca023f62eecc63200894d8f1571264b9b57a (commit)
discards 2c33841ac47210ca11f6c04671971d954e799a85 (commit)
discards 1ed8ee4bd6b8cfb5c40ab1459d8d9ca4e8d2ad30 (commit)
discards 18ea2bc0abf0d9b7d964b2cbd0ede29538f484a4 (commit)
discards 6067c3116a8d2b93468a31dade50dc9b08b546ed (commit)
discards 41c86c19ddf572f665b2792482326c3931b73ff7 (commit)
discards c26599b5852077c93b6a034e6227a900920ca460 (commit)
discards cb6073b98417014a52d6eef64b9f64ae5ccb150b (commit)
discards 0e9feb0f40d45a2f0d6bf2e4e306dc8639f80cc5 (commit)
discards abb3c6e5f0828c643bc8fb2edf20803e2612b234 (commit)
discards c76e031ae15f0f2dfb5bdfb6003c1e014b245ca4 (commit)
discards 099775a7808c97a11f2a3bdee4a867d869b74244 (commit)
discards 996b5e8954ae8cca3d02b95944b92587624707f0 (commit)
discards 9f61c59a05cd064bf8a936735809230f77c02e15 (commit)
discards 3553ffac27fc5037e01e4f9f1d2b74154f399b3d (commit)
discards 6b001285348e035cb589a1c760934954652f25f3 (commit)
discards 56c14243d62ab8acb9e743ce3499a3d495a4dcb9 (commit)
discards f8e2118bd19023a35a46a91666ea23c8ba5e6508 (commit)
discards 1d96a82bf04b223792855301b01a0bc8f40ec162 (commit)
discards d8f86fcf336b9ab608b23cd3d8926413eb064ee1 (commit)
discards b018159ad335cb63ad52bcd74787d759252dbbcc (commit)
discards 4f0776278d9559d965b90092fa7d7f568d8644b4 (commit)
via d71ff74ecef15a8bf4f9bbb64cbcb7ce3b5f6fd4 (commit)
via 6a4e698508b0cae7e19b1f2aac66d0c419fded48 (commit)
via 3f0712c73838790879f74214d581bcce5e9fe749 (commit)
via 8b526cdd84e581da3bef78ed2045399f867f8779 (commit)
via 24d74ffb28a6caa19aedd832c0a7f954ddf4c8a9 (commit)
via f09fec4f86ab4717fd61969b2c0a23b07584017d (commit)
via 75486e11b5bbb2cea5199cefa619f98cd0cb8267 (commit)
via 99f6f2ae7730170f002d10345a068005bf231e30 (commit)
via 270711a0cdbf050d4532c736a478c77669ebe0fd (commit)
via c03272f934234a8574232923c11f932ae9cd2e9d (commit)
via 9bd5d46fd58c6ae2ea96375911e1672a8dd7660f (commit)
via afdb77c5d38cd67f62457dcc619ae1b035f7507a (commit)
via a2b46dc2207a578041af7758853ae17c901b268a (commit)
via 9873b787912e73d48d6a7f7ad17903874c90d0d2 (commit)
via 92e2d041eea0312cb441a805c73606207494fd74 (commit)
via 4c97de45e12e180253707428ca407975b836f599 (commit)
via 0b29bba800f78bd36453bfb0248be2fc6fcfe4a7 (commit)
via bc7c47971d1ae90a2df99732a2139c1b685b8472 (commit)
via 0da3ec219b6d3223a2871f1872d7e7120ba4db22 (commit)
via 9aa2edee69af7d9da7139b0231abbe43c4f32aee (commit)
via 0ad1284da77831e3361661042b01a5fc96502ef9 (commit)
via 5d58ddce6e23c83cb22ad4ef6c11c4cc893b9b29 (commit)
via ffb11d37b76293c473cfa7993ade0bfed18426db (commit)
via 0fb69c9224e2803a6c919b332d3265fe15d6bd78 (commit)
via 0a82e15ff731073934fdb3cc82a92b52fcb1da1b (commit)
via 07d3bc0718629fcdb128167f83f2fe31609218cb (commit)
via 52af6ecc19bfc3ef22af4f3be66d036059a49bf6 (commit)
via 61b2c3733a150025a75b6d4d978de7a60d8ce767 (commit)
via a04c2ef9e9630c40f7256f119a96f6c617255a48 (commit)
via 187ea0363976c7c5a1302cdc4d1ea58ebdbbe60c (commit)
via 667167f7843b90a29a785f9b63ece3623df5184d (commit)
via f14899873413a945c40134c925388958072a781e (commit)
via f50243275bcbd10b5803c6a58270562703333e5a (commit)
via 222955acc954ecb48650036b7f1052bd47d215f4 (commit)
via eec4ffe46dd3eafc91c4376011efb8fd51aaeb7d (commit)
via 964a8b8a76715886c2843ec7ba976a579df7d819 (commit)
via bd9472a7dca698e83cf0eaf348271113907195f8 (commit)
via 33f563714a2786565e9a1e1bf96396923a88d27c (commit)
via 33a1752af0558f4f57966386573deed86cc333d3 (commit)
via 3ad6a4d6b4e31a806d8f3ddcb41871567d92af0a (commit)
via aae4f34afcdb72921bda2492e42768db66874812 (commit)
via 38f31bc053777696828f595905ceda775da86b87 (commit)
via 85d4bb7233887b5387a7e10fad883a38f5b14b3a (commit)
via d44aa817d631482b3906f68a53a8f1a1bcc491b2 (commit)
via 64fb4bc92d81eaf61eba1c09d58e4fc7364a68fd (commit)
via e35598a3d1fb3b028de14805a0669c0de5fca476 (commit)
via e6ba8b92d3de0a9b6f433972d143c1fda9cc0f4d (commit)
via 5f5569ab7b57bc71e465f6e57194030f30a25640 (commit)
via 65981fdfded696c335e50d7a7d13a3d903e86b3d (commit)
via d33f5803ccf53ef6232f76b42e40e327ba965f5a (commit)
via 91a43aed292b0ea99eec6cf88ccf220c6f33aae6 (commit)
via 87a2f38e04bb320cd200ed1efb70e1bfb61259e3 (commit)
via 39901400dfce5d0a09083a15ed483a92a08a3f1d (commit)
via fcf3c1596e55f776e3b30b4cea4f20120f2652b3 (commit)
via d6c1dbb9aa147162ffa272c129f266d46c5e3c5d (commit)
via accfaf184de2160fb73424fef0277d97223bd310 (commit)
via cb91a95d6d7213db994b2ab590c6da2d2ee86a04 (commit)
via cecfdd1b70ac9a2d38b11af6f16ccfc6f82ade4c (commit)
via 9723ab688050807af0f5d7356d0030967b764456 (commit)
via 432df10acf22236a3a6bcb1f7e991f596524f891 (commit)
via 1f5268f36f0fd1ce6163a30aa6d700f92c47b655 (commit)
via e91a1885ccb4f41c4ab23136a7c40fae8a1ff3fd (commit)
via 6ada0c4ee8d458d38d79a2a97087fa8891acc113 (commit)
via 175ec2f5ee6e51bab9c8556b55ab6bc049c92daf (commit)
via ba64aafb164bd76165c35baacd54bdcbb7ad3f51 (commit)
via 400f1e8f4309bfe70b3bea3f2722c789b1f99f12 (commit)
via 7155a610eeec9f36f7d303e3721358ad5c4cf6ab (commit)
via 967ebed481281605b7caceea15fa358b1be167d8 (commit)
via 826cbfc397d2e714907377bfb7784ec74935e5bd (commit)
via 8b2209599f20433e75012ab76dc8f61fa512e05d (commit)
via b0279f5f9bb303de29b8b25783b3a7860361678c (commit)
via 0881758fecf2f159e8e093d324950ec80ac5f13a (commit)
via 8336d4651bc82ffaa494d7380763768e05d85cb4 (commit)
via b48a2f4d78c32cdf341a0e7c53d08540c7744b95 (commit)
via 431e355f94ba5d78afcf598488ff70e319780f45 (commit)
via 1f7e13eed8f2e6ce1cdd09c900781bc35e6ce19c (commit)
via 7dff92ef6d1b4e2773aa1a4c09123e6cb35a450c (commit)
via 6b977f97b5c8cb348064db55fa6be32efddabd05 (commit)
via 688d563da7136bbaf4e01a0b1b4e4f95e3baade1 (commit)
via 2f05ef330b6ba94aded39dbe34edd4d310f2170f (commit)
via 5d5053c6d3902d1f28de6e2586b7a2de3363bad1 (commit)
via f6a72bf09ccc52d372f33fb98f8dbbead37b1f98 (commit)
via 3c6b7923602e5b547d229bc53f76ede0b28af027 (commit)
via 68621c01aa3a48b79072caa13946a4db38ad4a05 (commit)
via 4fd694b5d94b389bf034e22e8d44394865300796 (commit)
via 0d8376dcf74d9e67e3d8dfe80a31dcefb95f050e (commit)
via cfa660b74086b60f4aa7d1b0e5c4e74c9b7574b7 (commit)
via e164d64ca82cea7a2a5aa9ea44c28c886c6a1a7a (commit)
via 2d019c286360c69c66b6116736c35f324265f0c7 (commit)
via 1d68200c95ac1737183f7485775b028d3fc9a56c (commit)
via d8a9be81062034744735939ad7501fba7dc3bdd9 (commit)
via 9c0bdaa04f1cd598361ca551216500be1c09b165 (commit)
via 09c08ad39c60f0a225ca0a30192b431dd98fbca5 (commit)
via de57fc49a1481d6133fcdad8575d8907369bb60f (commit)
via 58691e5c3a3725c0b524de933b9a73d4f5bd45cf (commit)
via 99635db0d439f3e48443a935f02a9069963f59cf (commit)
via e3767ee4fc9c6fd3f90fa98fcc4d4a0907cf2961 (commit)
via ee3e8dfcd6c1af2c356322b6263487455b397426 (commit)
via d7ea2d358ca9444d922c141b48a8fc82f3cebea8 (commit)
via 6d0a92e189fff2861a80a6ca82ae3ffc0de70d97 (commit)
via 07a17b94a3811f0924b1f8d4328697635f664130 (commit)
via f7ae8c2dadd1203f984f9b94a8a6b9262fcb9e0a (commit)
via e388d7985f2ef164e7166b1d4cfd439e7464d54c (commit)
via 7c0d10c398b581710dbf0ca416bb11a01fa5f82f (commit)
via 4a399a3c017746ad78fb6cc9e3f961163fe7bb49 (commit)
via 11d3d490656ebe59056842b44b6b98fe0db97f57 (commit)
via 7fce05ea6edf3bb37aa57de5ff5043bf46651c93 (commit)
via af88c2588a5cb6de0ce442800ec621eabbad0fd3 (commit)
via a3034577ab71a3f80d5f800dbfe4f9c7590f881d (commit)
via a51486d9175a48e881578393b40000a922f03b94 (commit)
via 656656d25c044ceb9cc42775e44f346586dd3d58 (commit)
via 4f559a7aac8e81dfd4f1c1fa7a5a38c95fdae303 (commit)
via 5ced6bdf56078774106308c4cfb198e6cec29c04 (commit)
via 973551651895ce6199ae7ce030d45d97bc06e511 (commit)
via 28614aa4e659481da8da00c93262d0dc1e85554d (commit)
via bcad23e451dd1e759c7d0af2f8706e6e9279f2b6 (commit)
via e313ea201d38347de8f94b7fc0add27ff112b098 (commit)
via 8022d3d0347ebe0cecd98e7d243210ab0880bd81 (commit)
via 66683946f29dd1fc11eb79c8f18829cbc0bed2a8 (commit)
via a280e6bd70b2bade36e7085e021e91f7ab3bcb60 (commit)
via 4cf994ed4b1388b89e8b2c14005a6b6f79c9bd04 (commit)
via e03994db0862f5a246ac8ea4cbe22f3a6af7e478 (commit)
via fb411ccc6182ca371d0d10228e94ba952ca0affe (commit)
via ab11b69bf3320e80d970a92c8cdaf3f0450c0d17 (commit)
via f3d71b3837ab87c355b4cc467aede2ee62e6ee4b (commit)
via bef5b90d379e533ee10ba14bf5988b67e5824720 (commit)
via 2a6106514287e253fe76fb95b7b9a56bdc399faf (commit)
via 16fbbef7db27689c3728436e7035a5a6549826de (commit)
via 1835af00071ea4e14e1641cb87d118d3ba511f4b (commit)
via 0625137ef6694e51353ea04db9cb62365188c67c (commit)
via c325629baf82f376924de68f8d43133e77c934c1 (commit)
via 1a823f73b8f232149a0e953624d895a29f706a2d (commit)
via 58801223f73cb532e43fac2ca8065a43c8fa6985 (commit)
via 607075682b6992513805c0f5cafd95ded370efab (commit)
via 60307833a3b3ff5e7b5da1e9b333a8404c0040f2 (commit)
via 31f0f731e35d208e89a812ebadddcfcf90ebc667 (commit)
via 6c0fa46bdaaf8619358568aabfcf8a20c6c21ee1 (commit)
via cadda529593468fcd00d0750fda70d4648d3badd (commit)
via 256de5f3eed935fc8229a3800be8cb71937b70ee (commit)
via 00ab9ddbdd78e06f7ebd01c57f5e6f490254fa2c (commit)
via 19825009a7bc9c638226dd2963f1a56679d31757 (commit)
via b6641d4b0fe6550d26d15b837ba65e7279f2298b (commit)
via b1afad461fa1621d1b6c98ae81bcbfc23248f6dd (commit)
via 7404579567f626734d6de94fb6cb62072d97553b (commit)
via 00da4238932f0410315ed16fb7be6869f4d0b381 (commit)
via 59ebeab82ed59260c238a59478a79c30c090584b (commit)
This update added new revisions after undoing existing revisions. That is
to say, the old revision is not a strict subset of the new revision. This
situation occurs when you --force push a change and generate a repository
containing something like this:
* -- * -- B -- O -- O -- O (bd17ca023f62eecc63200894d8f1571264b9b57a)
\
N -- N -- N (d71ff74ecef15a8bf4f9bbb64cbcb7ce3b5f6fd4)
When this happens we assume that you've already had alert emails for all
of the O revisions, and so we here report only the revisions in the N
branch from the common base, B.
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
d71ff74 Makefile.am: Add new rules to build rpm and deb packages.
6a4e698 Makefile.am: Add new rules to build rpm and deb packages for Scribo.
3f0712c Makefile.am: Add new rules to build rpm and deb packages for Milena.
8b526cd Add package configuration files.
-----------------------------------------------------------------------
Summary of changes:
milena/ChangeLog | 142 ++
milena/headers.mk | 7 +-
milena/mln/accu/stat/deviation.hh | 8 +-
milena/mln/accu/stat/histo3d_rgb.hh | 346 +++++
milena/mln/arith/revert.hh | 56 +-
milena/mln/arith/revert.spe.hh | 28 +-
milena/mln/canvas/browsing/backdiagonal2d.hh | 9 +-
milena/mln/canvas/browsing/diagonal2d.hh | 8 +-
milena/mln/canvas/browsing/directional.hh | 7 +-
milena/mln/canvas/browsing/snake_fwd.hh | 8 +-
milena/mln/canvas/browsing/snake_generic.hh | 8 +-
milena/mln/clustering/kmean_rgb.hh | 1040 ++++++++++++++
milena/mln/convert/from_to.hh | 16 +-
milena/mln/convert/from_to.hxx | 15 +-
milena/mln/convert/impl/from_unsigned_to_value.hh | 12 +-
milena/mln/convert/to_qimage.hh | 1 -
milena/mln/convert/to_qimage_nocopy.hh | 4 +-
milena/mln/fun/v2v/rgb8_to_rgbn.hh | 109 ++
milena/mln/io/plot/save.hh | 5 +-
milena/mln/io/pnm/save.hh | 4 +-
milena/mln/value/int_u.hh | 30 +
milena/mln/value/qt/rgb32.hh | 10 +
milena/mln/world/rgb/invert.hh | 216 +++
milena/mln/world/rgb/invert.spe.hh | 124 ++
milena/sandbox/ChangeLog | 354 +++++
milena/tests/accu/stat/Makefile.am | 5 +-
milena/tests/accu/stat/deviation.cc | 53 +
milena/tests/unit_test/disabled_tests | 1 +
milena/tests/unit_test/unit-tests.mk | 10 +-
scribo/ChangeLog | 432 ++++++
scribo/demo/viewer/Makefile.am | 11 +-
scribo/demo/viewer/README | 32 +-
scribo/demo/viewer/browser_widget.cc | 91 +-
scribo/demo/viewer/browser_widget.hh | 35 +-
scribo/demo/viewer/common.hh | 27 +-
scribo/demo/viewer/domitem.cc | 98 --
scribo/demo/viewer/domitem.hh | 75 -
scribo/demo/viewer/dommodel.cc | 198 ---
scribo/demo/viewer/dommodel.hh | 85 --
scribo/demo/viewer/help_dialog.cc | 46 +-
scribo/demo/viewer/help_dialog.hh | 27 +-
scribo/demo/viewer/image_region.cc | 33 +-
scribo/demo/viewer/image_region.hh | 36 +-
scribo/demo/viewer/image_region.hxx | 8 +-
scribo/demo/viewer/image_scene.cc | 57 +-
scribo/demo/viewer/image_scene.hh | 31 +-
scribo/demo/viewer/image_view.cc | 27 +-
scribo/demo/viewer/image_view.hh | 27 +-
scribo/demo/viewer/image_widget.cc | 27 +-
scribo/demo/viewer/image_widget.hh | 27 +-
scribo/demo/viewer/key_widget.cc | 154 ++-
scribo/demo/viewer/key_widget.hh | 41 +-
scribo/demo/viewer/main.cc | 27 +-
scribo/demo/viewer/property_widget.cc | 73 -
scribo/demo/viewer/property_widget.hh | 41 -
scribo/demo/viewer/step_widget.cc | 95 +-
scribo/demo/viewer/step_widget.hh | 7 +-
scribo/demo/viewer/viewer.cc | 701 ++++++----
scribo/demo/viewer/viewer.hh | 46 +-
scribo/demo/viewer/viewer.hxx | 27 +-
scribo/demo/viewer/xml_widget.cc | 178 +++-
scribo/demo/viewer/xml_widget.hh | 42 +-
scribo/headers.mk | 10 +-
scribo/sandbox/ChangeLog | 190 +++
scribo/sandbox/arthur/xml_transform/README | 44 +
scribo/sandbox/arthur/xml_transform/common.cc | 13 +
scribo/sandbox/arthur/xml_transform/common.hh | 16 +
scribo/sandbox/arthur/xml_transform/image_crop.cc | 343 +++++
scribo/sandbox/arthur/xml_transform/image_crop.hh | 70 +
scribo/sandbox/arthur/xml_transform/loader.cc | 197 +++
scribo/sandbox/arthur/xml_transform/loader.hh | 51 +
scribo/sandbox/arthur/xml_transform/main.cc | 168 +++
.../arthur/xml_transform/templates/html/css.css | 31 +
.../arthur/xml_transform/templates/html/main.xsl | 251 ++++
.../xml_transform/templates/html/main_base64.xsl | 260 ++++
.../arthur/xml_transform/templates/ooconvert | 517 +++++++
.../arthur/xml_transform/templates/opendoc/css.css | 30 +
.../arthur/xml_transform/templates/opendoc/xsl.xsl | 250 ++++
.../arthur/xml_transform/templates/pdf/line.xsl | 129 ++
.../arthur/xml_transform/templates/pdf/main.xsl | 42 +
.../arthur/xml_transform/templates/pdf/regions.xsl | 59 +
.../arthur/xml_transform/templates/svg/line.xsl | 129 ++
.../arthur/xml_transform/templates/svg/main.xsl | 42 +
.../arthur/xml_transform/templates/svg/regions.xsl | 98 ++
.../xml_transform/templates/xml_transform.sh | 134 ++
.../sandbox/arthur/xml_transform/xml_transform.cc | 133 ++
.../sandbox/arthur/xml_transform/xml_transform.hh | 63 +
.../sandbox/arthur/xml_transform/xml_transform.pro | 17 +
scribo/sandbox/green/ChangeLog | 1402 +++++++++++++++++++
scribo/sandbox/green/README.green | 851 +++++++++++-
.../kmean1d => annotating/bic}/Makefile.am | 0
scribo/sandbox/green/demo/annotating/bic/bic.cc | 122 ++
.../kmean1d => annotating/hsv}/Makefile.am | 0
scribo/sandbox/green/demo/annotating/hsv/hsv.cc | 721 ++++++++++
.../kmean1d => annotating/lep}/Makefile.am | 0
scribo/sandbox/green/demo/annotating/lep/lep.cc | 127 ++
.../kmean1d => annotating/nb_color}/Makefile.am | 0
.../green/demo/annotating/nb_color/nb_color.cc | 143 ++
.../kmean1d => annotating/project}/Makefile.am | 0
.../green/demo/annotating/project/project.cc | 275 ++++
.../kmean1d => annotating/rgb_64}/Makefile.am | 0
.../sandbox/green/demo/annotating/rgb_64/rgb_64.cc | 80 ++
.../kmean1d => annotating/rgb_64_9}/Makefile.am | 0
.../green/demo/annotating/rgb_64_9/rgb_64_9.cc | 132 ++
.../stddev_color}/Makefile.am | 0
.../demo/annotating/stddev_color/stddev_color.cc | 191 +++
.../stddev_color_16}/Makefile.am | 0
.../annotating/stddev_color_16/stddev_color_16.cc | 261 ++++
.../regional_maxima}/Makefile.am | 0
.../labeling/regional_maxima/regional_maxima.cc | 198 +++
.../demo/labeling/regional_maxima/thresholds.txt | 0
.../kmean1d => labeling/watershed}/Makefile.am | 0
.../green/demo/labeling/watershed}/gaussian.sh | 0
.../green/demo/labeling/watershed/watershed.cc | 360 +++++
.../sandbox/green/doc/annotating/class.txt | 0
.../green/doc/annotating/syntheseMillet2008.txt | 0
.../sandbox/green/doc/annotating/testMillet2008 | 0
.../green/doc/examples/accu_color/accu_color.cc | 0
.../sandbox/green/doc/examples/frac/Makefile.am | 0
.../sandbox/green/doc/examples/frac/frac.cc | 0
.../sandbox/green/doc/examples/frac/frac.hh | 0
.../sandbox/green/doc/examples/frac/gcd.hh | 0
.../sandbox/green/doc/examples/frac/sign_prod.hh | 0
.../green/doc/examples/hello_milena/Makefile.am | 0
.../doc/examples/hello_milena/hello_milena.cc | 0
.../green/doc/examples/hello_world}/Makefile.am | 0
.../green/doc/examples/hello_world/hello_world.cc | 0
.../green/doc/examples/hello_world/print.cc | 0
.../sandbox/green/doc/examples/io/Makefile.am | 0
.../sandbox/green/doc/examples/io/io.cc | 0
.../green/doc/examples/learn_milena}/Makefile.am | 0
.../doc/examples/learn_milena/learn_milena.cc | 0
.../sandbox/green/doc/examples/otsu}/Makefile.am | 0
.../sandbox/green/doc/examples/otsu/otsu.cc | 0
.../sandbox/green/doc/examples/stats}/Makefile.am | 0
.../sandbox/green/doc/examples/stats/stats.cc | 0
.../sandbox/green/doc/formulae/formulae.tex | 0
.../sandbox/green/doc/quick_tour/quick_tour.tex | 0
.../green/exp/annotating/achromastism/Makefile.am | 153 ++
.../exp/annotating/achromastism/achromastism.cc | 179 +++
.../exp/annotating/achromastism/text-color.txt | 0
.../green/exp/annotating/achromastism/text-img.txt | 0
.../exp/annotating/achromastism/text-only.txt | 0
.../sandbox/green/exp/annotating/bench/Makefile.am | 153 ++
scribo/sandbox/green/exp/annotating/bench/bench.cc | 1450 ++++++++++++++++++++
.../sandbox/green/exp/annotating/error/Makefile.am | 153 ++
scribo/sandbox/green/exp/annotating/error/error.cc | 833 +++++++++++
.../sandbox/green/exp/annotating/histo/Makefile.am | 153 ++
scribo/sandbox/green/exp/annotating/histo/histo.cc | 366 +++++
.../sandbox/green/exp/annotating/hsv/Makefile.am | 153 ++
scribo/sandbox/green/exp/annotating/hsv/hsv.cc | 912 ++++++++++++
.../sandbox/green/exp/annotating/hue/Makefile.am | 153 ++
scribo/sandbox/green/exp/annotating/hue/hue.cc | 402 ++++++
.../green/exp/annotating/hue}/text-color.txt | 0
.../sandbox/green/exp/annotating/hue}/text-img.txt | 0
.../green/exp/annotating/hue}/text-only.txt | 0
.../green/exp/annotating/nb_color/Makefile.am | 153 ++
.../green/exp/annotating/nb_color/nb_color.cc | 171 +++
.../green/exp/annotating/saturation/Makefile.am | 153 ++
.../green/exp/annotating/saturation/saturation.cc | 175 +++
.../exp/annotating/saturation}/text-color.txt | 0
.../green/exp/annotating/saturation}/text-img.txt | 0
.../green/exp/annotating/saturation}/text-only.txt | 0
.../green/exp/annotating/stddev_color/Makefile.am | 153 ++
.../exp/annotating/stddev_color/stddev_color.cc | 216 +++
.../exp/annotating/stddev_color_16/Makefile.am | 153 ++
.../annotating/stddev_color_16/stddev_color_16.cc | 277 ++++
.../sandbox/green/exp/annotating/value/Makefile.am | 153 ++
.../green/exp/annotating/value}/text-color.txt | 0
.../green/exp/annotating/value}/text-img.txt | 0
.../green/exp/annotating/value}/text-only.txt | 0
scribo/sandbox/green/exp/annotating/value/value.cc | 468 +++++++
.../sandbox/green/exp/regional_maxima/Makefile.am | 153 ++
.../green/exp/regional_maxima/regional_maxima.cc | 196 +++
.../green/exp}/regional_maxima/thresholds.txt | 0
scribo/sandbox/green/mln/accu/stat/histo1d.hh | 3 +-
scribo/sandbox/green/mln/accu/stat/histo2d.hh | 10 +-
scribo/sandbox/green/mln/accu/stat/histo3d_hsl.hh | 4 +-
scribo/sandbox/green/mln/accu/stat/histo3d_rgb.hh | 4 +-
scribo/sandbox/green/mln/clustering/kmean2d.hh | 7 +-
scribo/sandbox/green/mln/display/display_histo.hh | 153 ++-
scribo/sandbox/green/mln/display/project_histo.hh | 183 +++-
scribo/sandbox/green/mln/fun/p2b/achromatic.hh | 24 +-
.../sandbox/green/mln/fun/v2v/hue_concentration.hh | 13 +-
.../green/mln/fun/v2v/rgb_to_achromatism_map.hh | 12 +-
scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh | 15 +-
.../sandbox/green/tools/labeling/histo/Makefile.am | 153 ++
scribo/sandbox/green/tools/labeling/histo/histo.cc | 204 +++
scribo/sandbox/green/tools/labeling/iz/Makefile.am | 153 ++
scribo/sandbox/green/tools/labeling/iz/iz.cc | 495 +++++++
.../green/tools/labeling/opening/Makefile.am | 153 ++
.../green/tools/labeling/opening/opening.cc | 174 +++
.../green/tools/labeling/regmax/Makefile.am | 153 ++
.../sandbox/green/tools/labeling/regmax/regmax.cc | 428 ++++++
.../sandbox/green/use/accu/stat/histo1d/histo1d.cc | 3 +-
.../histo1d => display/display_histo}/Makefile.am | 0
.../use/display/display_histo/display_histo.cc | 86 ++
scribo/scribo/binarization/global_threshold.hh | 5 +
.../scribo/binarization/global_threshold_auto.hh | 2 +-
.../internal/compute_sauvola_threshold.hh | 285 ++++
.../binarization/internal/first_pass_functor.hh | 30 +-
.../scribo/binarization/internal/sauvola_debug.hh | 87 ++
scribo/scribo/binarization/sauvola.hh | 69 +-
scribo/scribo/binarization/sauvola_ms.hh | 61 +-
.../scribo/binarization/sauvola_threshold_image.hh | 365 +-----
.../binarization/sauvola_threshold_image_debug.hh | 421 ------
scribo/scribo/canvas/integral_browsing.hh | 6 +-
scribo/scribo/core/component_set.hh | 7 +-
scribo/scribo/core/document.hh | 189 +++
scribo/scribo/core/line_set.hh | 11 +
scribo/scribo/core/macros.hh | 6 +-
scribo/scribo/filter/objects_large.hh | 46 +
scribo/scribo/filter/objects_small.hh | 7 +-
scribo/scribo/fun/v2b/objects_large_filter.hh | 15 +-
scribo/scribo/fun/v2b/objects_small_filter.hh | 19 +-
scribo/scribo/io/xml/save.hh | 183 ++--
scribo/scribo/preprocessing/deskew.hh | 2 +-
scribo/scribo/primitive/extract/elements.hh | 235 ++++
scribo/scribo/primitive/extract/lines_h_pattern.hh | 10 +-
scribo/scribo/primitive/extract/lines_v_pattern.hh | 10 +-
.../primitive/extract/separators_nonvisible.hh | 916 ++++++++++++
.../scribo/primitive/group/from_double_link_any.hh | 131 ++
.../with_single_right_link_dmax_ratio_aligned.hh | 268 ++++
scribo/scribo/primitive/merge/components.hh | 126 ++
scribo/scribo/toolchain/text_in_doc.hh | 31 +-
scribo/scribo/toolchain/text_in_doc_preprocess.hh | 5 +-
scribo/scribo/toolchain/text_in_picture.hh | 563 ++++++++
scribo/src/Makefile.am | 23 +
scribo/src/binarization/Makefile.am | 6 +-
scribo/src/binarization/pgm_sauvola.cc | 4 +-
.../binarization/pgm_sauvola_threshold_image.cc | 77 +
scribo/src/binarization/ppm_sauvola.cc | 14 +-
scribo/src/binarization/ppm_sauvola_ms.cc | 5 +
scribo/src/binarization/ppm_sauvola_ms_fg.cc | 6 +
scribo/src/binarization/ppm_sauvola_ms_split.cc | 8 +-
scribo/src/binarization/sauvola.cc | 15 +-
scribo/src/binarization/sauvola_debug.cc | 68 +-
scribo/src/binarization/sauvola_ms.cc | 7 +
scribo/src/binarization/sauvola_ms_debug.cc | 40 +-
scribo/src/binarization/sauvola_ms_fg.cc | 6 +
scribo/src/binarization/sauvola_ms_split.cc | 3 +-
scribo/src/content_in_doc.cc | 151 ++
scribo/src/contest/Makefile.am | 2 +-
scribo/src/contest/hdibco-2010/Makefile.am | 2 +-
.../src/contest/hdibco-2010/sauvola_ms_hdibco.cc | 2 +
scribo/src/pbm_text_in_doc.cc | 10 +-
scribo/src/preprocessing/preprocess.cc | 9 +-
scribo/src/primitive/extract/lines_pattern.cc | 4 +-
scribo/src/text_in_picture.cc | 15 -
scribo/src/text_in_picture_neg.cc | 200 +++
scribo/tests/filter/Makefile.am | 9 +-
scribo/tests/filter/components_large.cc | 98 ++
scribo/tests/filter/components_small.cc | 99 ++
scribo/tests/filter/small_and_large_bboxes.cc | 83 --
scribo/tests/unit_test/unit-tests.mk | 22 +-
255 files changed, 26204 insertions(+), 2454 deletions(-)
create mode 100644 milena/mln/accu/stat/histo3d_rgb.hh
create mode 100644 milena/mln/clustering/kmean_rgb.hh
mode change 100644 => 100755 milena/mln/convert/to_qimage.hh
mode change 100644 => 100755 milena/mln/convert/to_qimage_nocopy.hh
create mode 100644 milena/mln/fun/v2v/rgb8_to_rgbn.hh
create mode 100644 milena/mln/world/rgb/invert.hh
create mode 100644 milena/mln/world/rgb/invert.spe.hh
create mode 100644 milena/tests/accu/stat/deviation.cc
delete mode 100644 scribo/demo/viewer/domitem.cc
delete mode 100644 scribo/demo/viewer/domitem.hh
delete mode 100644 scribo/demo/viewer/dommodel.cc
delete mode 100644 scribo/demo/viewer/dommodel.hh
delete mode 100644 scribo/demo/viewer/property_widget.cc
delete mode 100644 scribo/demo/viewer/property_widget.hh
create mode 100644 scribo/sandbox/arthur/xml_transform/README
create mode 100644 scribo/sandbox/arthur/xml_transform/common.cc
create mode 100644 scribo/sandbox/arthur/xml_transform/common.hh
create mode 100644 scribo/sandbox/arthur/xml_transform/image_crop.cc
create mode 100644 scribo/sandbox/arthur/xml_transform/image_crop.hh
create mode 100644 scribo/sandbox/arthur/xml_transform/loader.cc
create mode 100644 scribo/sandbox/arthur/xml_transform/loader.hh
create mode 100644 scribo/sandbox/arthur/xml_transform/main.cc
create mode 100644 scribo/sandbox/arthur/xml_transform/templates/html/css.css
create mode 100644 scribo/sandbox/arthur/xml_transform/templates/html/main.xsl
create mode 100644 scribo/sandbox/arthur/xml_transform/templates/html/main_base64.xsl
create mode 100755 scribo/sandbox/arthur/xml_transform/templates/ooconvert
create mode 100755 scribo/sandbox/arthur/xml_transform/templates/opendoc/css.css
create mode 100755 scribo/sandbox/arthur/xml_transform/templates/opendoc/xsl.xsl
create mode 100644 scribo/sandbox/arthur/xml_transform/templates/pdf/line.xsl
create mode 100644 scribo/sandbox/arthur/xml_transform/templates/pdf/main.xsl
create mode 100644 scribo/sandbox/arthur/xml_transform/templates/pdf/regions.xsl
create mode 100644 scribo/sandbox/arthur/xml_transform/templates/svg/line.xsl
create mode 100644 scribo/sandbox/arthur/xml_transform/templates/svg/main.xsl
create mode 100644 scribo/sandbox/arthur/xml_transform/templates/svg/regions.xsl
create mode 100755 scribo/sandbox/arthur/xml_transform/templates/xml_transform.sh
create mode 100644 scribo/sandbox/arthur/xml_transform/xml_transform.cc
create mode 100644 scribo/sandbox/arthur/xml_transform/xml_transform.hh
create mode 100644 scribo/sandbox/arthur/xml_transform/xml_transform.pro
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/bic}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/bic/bic.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/hsv}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/hsv/hsv.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/lep}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/lep/lep.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/nb_color}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/nb_color/nb_color.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/project}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/project/project.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/rgb_64}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/rgb_64/rgb_64.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/rgb_64_9}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/rgb_64_9/rgb_64_9.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/stddev_color}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/stddev_color/stddev_color.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/stddev_color_16}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/stddev_color_16/stddev_color_16.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => labeling/regional_maxima}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/labeling/regional_maxima/regional_maxima.cc
copy {milena => scribo}/sandbox/green/demo/labeling/regional_maxima/thresholds.txt (100%)
copy scribo/sandbox/green/demo/{clustering/kmean1d => labeling/watershed}/Makefile.am (100%)
copy {milena/sandbox/green/tests/accu/stat/histo1d => scribo/sandbox/green/demo/labeling/watershed}/gaussian.sh (100%)
create mode 100644 scribo/sandbox/green/demo/labeling/watershed/watershed.cc
copy {milena => scribo}/sandbox/green/doc/annotating/class.txt (100%)
copy {milena => scribo}/sandbox/green/doc/annotating/syntheseMillet2008.txt (100%)
copy {milena => scribo}/sandbox/green/doc/annotating/testMillet2008 (100%)
copy {milena => scribo}/sandbox/green/doc/examples/accu_color/accu_color.cc (100%)
copy {milena => scribo}/sandbox/green/doc/examples/frac/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/frac/frac.cc (100%)
copy {milena => scribo}/sandbox/green/doc/examples/frac/frac.hh (100%)
copy {milena => scribo}/sandbox/green/doc/examples/frac/gcd.hh (100%)
copy {milena => scribo}/sandbox/green/doc/examples/frac/sign_prod.hh (100%)
copy {milena => scribo}/sandbox/green/doc/examples/hello_milena/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/hello_milena/hello_milena.cc (100%)
copy {milena/sandbox/green/doc/examples/hello_milena => scribo/sandbox/green/doc/examples/hello_world}/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/hello_world/hello_world.cc (100%)
copy {milena => scribo}/sandbox/green/doc/examples/hello_world/print.cc (100%)
copy {milena => scribo}/sandbox/green/doc/examples/io/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/io/io.cc (100%)
copy {milena/sandbox/green/doc/examples/hello_milena => scribo/sandbox/green/doc/examples/learn_milena}/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/learn_milena/learn_milena.cc (100%)
copy {milena/sandbox/green/doc/examples/hello_milena => scribo/sandbox/green/doc/examples/otsu}/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/otsu/otsu.cc (100%)
copy {milena/sandbox/green/doc/examples/hello_milena => scribo/sandbox/green/doc/examples/stats}/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/stats/stats.cc (100%)
copy {milena => scribo}/sandbox/green/doc/formulae/formulae.tex (100%)
copy {milena => scribo}/sandbox/green/doc/quick_tour/quick_tour.tex (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/achromastism/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/achromastism/achromastism.cc
copy {milena => scribo}/sandbox/green/exp/annotating/achromastism/text-color.txt (100%)
copy {milena => scribo}/sandbox/green/exp/annotating/achromastism/text-img.txt (100%)
copy {milena => scribo}/sandbox/green/exp/annotating/achromastism/text-only.txt (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/bench/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/bench/bench.cc
create mode 100644 scribo/sandbox/green/exp/annotating/error/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/error/error.cc
create mode 100644 scribo/sandbox/green/exp/annotating/histo/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/histo/histo.cc
create mode 100644 scribo/sandbox/green/exp/annotating/hsv/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/hsv/hsv.cc
create mode 100644 scribo/sandbox/green/exp/annotating/hue/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/hue/hue.cc
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/hue}/text-color.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/hue}/text-img.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/hue}/text-only.txt (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/nb_color/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/nb_color/nb_color.cc
create mode 100644 scribo/sandbox/green/exp/annotating/saturation/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/saturation/saturation.cc
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/saturation}/text-color.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/saturation}/text-img.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/saturation}/text-only.txt (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/stddev_color/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/stddev_color/stddev_color.cc
create mode 100644 scribo/sandbox/green/exp/annotating/stddev_color_16/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/stddev_color_16/stddev_color_16.cc
create mode 100644 scribo/sandbox/green/exp/annotating/value/Makefile.am
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/value}/text-color.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/value}/text-img.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/value}/text-only.txt (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/value/value.cc
create mode 100644 scribo/sandbox/green/exp/regional_maxima/Makefile.am
create mode 100644 scribo/sandbox/green/exp/regional_maxima/regional_maxima.cc
copy {milena/sandbox/green/demo/labeling => scribo/sandbox/green/exp}/regional_maxima/thresholds.txt (100%)
create mode 100644 scribo/sandbox/green/tools/labeling/histo/Makefile.am
create mode 100644 scribo/sandbox/green/tools/labeling/histo/histo.cc
create mode 100644 scribo/sandbox/green/tools/labeling/iz/Makefile.am
create mode 100644 scribo/sandbox/green/tools/labeling/iz/iz.cc
create mode 100644 scribo/sandbox/green/tools/labeling/opening/Makefile.am
create mode 100644 scribo/sandbox/green/tools/labeling/opening/opening.cc
create mode 100644 scribo/sandbox/green/tools/labeling/regmax/Makefile.am
create mode 100644 scribo/sandbox/green/tools/labeling/regmax/regmax.cc
copy scribo/sandbox/green/use/{accu/stat/histo1d => display/display_histo}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/use/display/display_histo/display_histo.cc
create mode 100644 scribo/scribo/binarization/internal/compute_sauvola_threshold.hh
create mode 100644 scribo/scribo/binarization/internal/sauvola_debug.hh
delete mode 100644 scribo/scribo/binarization/sauvola_threshold_image_debug.hh
create mode 100644 scribo/scribo/core/document.hh
create mode 100644 scribo/scribo/primitive/extract/elements.hh
create mode 100644 scribo/scribo/primitive/extract/separators_nonvisible.hh
create mode 100644 scribo/scribo/primitive/group/from_double_link_any.hh
create mode 100644 scribo/scribo/primitive/link/with_single_right_link_dmax_ratio_aligned.hh
create mode 100644 scribo/scribo/primitive/merge/components.hh
create mode 100644 scribo/scribo/toolchain/text_in_picture.hh
create mode 100644 scribo/src/binarization/pgm_sauvola_threshold_image.cc
create mode 100644 scribo/src/content_in_doc.cc
create mode 100644 scribo/src/text_in_picture_neg.cc
create mode 100644 scribo/tests/filter/components_large.cc
create mode 100644 scribo/tests/filter/components_small.cc
delete mode 100644 scribo/tests/filter/small_and_large_bboxes.cc
hooks/post-receive
--
Olena, a generic and efficient image processing platform
1
0
28 Mar '11
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Olena, a generic and efficient image processing platform".
The branch exp/next-build-ok has been deleted
was bcad23e451dd1e759c7d0af2f8706e6e9279f2b6
-----------------------------------------------------------------------
bcad23e451dd1e759c7d0af2f8706e6e9279f2b6 Small fixes in Scribo
-----------------------------------------------------------------------
hooks/post-receive
--
Olena, a generic and efficient image processing platform
1
0
28 Mar '11
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Olena, a generic and efficient image processing platform".
The branch next-build-test has been deleted
was 921edcc8bda188c053965f067c4c425f35d6736a
-----------------------------------------------------------------------
921edcc8bda188c053965f067c4c425f35d6736a Fix compilation issues on MAC.
-----------------------------------------------------------------------
hooks/post-receive
--
Olena, a generic and efficient image processing platform
1
0