---
.../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