Olena-patches
Threads by month
- ----- 2025 -----
- 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 2013
- 5 participants
- 214 discussions
* doc/Doxyfile.in: Fix include path in documentation.
* doc/doc.bib: Add new references.
---
ChangeLog | 8 ++++++++
doc/Doxyfile.in | 2 +-
doc/doc.bib | 29 +++++++++++++++++++++++++++++
3 files changed, 38 insertions(+), 1 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 0754452..f765d56 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2013-03-20 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Improve common documentation.
+
+ * doc/Doxyfile.in: Fix include path in documentation.
+
+ * doc/doc.bib: Add new references.
+
2013-03-13 Guillaume Lazzara <z(a)lrde.epita.fr>
Remove references to external directory.
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
index 9e10f56..2e7c939 100644
--- a/doc/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -34,7 +34,7 @@ ALWAYS_DETAILED_SEC = YES
INLINE_INHERITED_MEMB = YES
FULL_PATH_NAMES = NO
STRIP_FROM_PATH = @top_srcdir@
-STRIP_FROM_INC_PATH =
+STRIP_FROM_INC_PATH = @top_srcdir@
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
diff --git a/doc/doc.bib b/doc/doc.bib
index 46208e5..46280bd 100644
--- a/doc/doc.bib
+++ b/doc/doc.bib
@@ -35,4 +35,33 @@
year = {2008},
address = {San Jose, CA},
month = {Jan}
+}
+
+@inproceedings{meunier2005icdar,
+ title={Optimized {XY-Cut} for determining a page reading order},
+ author={J.-L. Meunier},
+ booktitle={Proceedings of International Conference on Document Analysis and Recognition},
+ pages={347--351},
+ year={2005},
+ organization={IEEE}
+}
+
+@article{nagy1992computer,
+ title={A prototype document image analysis system for technical journals},
+ author={George Nagy and Sharad Seth and Mahesh Viswanathan},
+ journal={Computer},
+ volume={25},
+ number={7},
+ pages={10--22},
+ year={1992},
+ publisher={IEEE}
+}
+
+@inproceedings{kruatrachue2005waset,
+ title={Fast Document Segmentation Using Contour and {XY-Cut} Technique},
+ author={Boontee Kruatrachue and Narongchai Moongfangklang and Kritawan Siriboon},
+ booktitle={Proceedings of World Academy of Science, Engineering and Technology},
+ volume={5},
+ pages={27--29},
+ year={2005}
}
\ No newline at end of file
--
1.7.2.5
1
0
* doc/Doxyfile.in: Improve member functions presentation.
* doc/DoxygenLayout.xml: Fix invalid xml elements.
---
scribo/ChangeLog | 8 ++++++++
scribo/doc/Doxyfile.in | 18 ++++++++++--------
scribo/doc/DoxygenLayout.xml | 2 +-
3 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index ede4371..a987ade 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,5 +1,13 @@
2013-03-20 Guillaume Lazzara <z(a)lrde.epita.fr>
+ Improve documentation layout.
+
+ * doc/Doxyfile.in: Improve member functions presentation.
+
+ * doc/DoxygenLayout.xml: Fix invalid xml elements.
+
+2013-03-20 Guillaume Lazzara <z(a)lrde.epita.fr>
+
Improve documentation of Scribo.
* doc/scribo/binarization/binarization.dox,
diff --git a/scribo/doc/Doxyfile.in b/scribo/doc/Doxyfile.in
index b215839..bc0f2c7 100644
--- a/scribo/doc/Doxyfile.in
+++ b/scribo/doc/Doxyfile.in
@@ -1,5 +1,5 @@
-# Copyright (C) 2011, 2012 EPITA Research and Development Laboratory
-# (LRDE)
+# Copyright (C) 2011, 2012, 2013 EPITA Research and Development
+# Laboratory (LRDE)
#
# This file is part of Olena.
#
@@ -32,9 +32,9 @@ REPEAT_BRIEF = YES
ABBREVIATE_BRIEF =
ALWAYS_DETAILED_SEC = YES
INLINE_INHERITED_MEMB = YES
-FULL_PATH_NAMES = NO
+FULL_PATH_NAMES = YES
STRIP_FROM_PATH = @top_srcdir@/scribo
-STRIP_FROM_INC_PATH =
+STRIP_FROM_INC_PATH = @top_srcdir@/scribo
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
@@ -46,7 +46,7 @@ OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO
BUILTIN_STL_SUPPORT = YES
IDL_PROPERTY_SUPPORT = NO
-DISTRIBUTE_GROUP_DOC = NO
+DISTRIBUTE_GROUP_DOC = YES
SUBGROUPING = YES
INLINE_GROUPED_CLASSES = NO
SORT_GROUP_NAMES = YES
@@ -71,6 +71,7 @@ INLINE_INFO = YES
SORT_MEMBER_DOCS = YES
SORT_BRIEF_DOCS = YES
SORT_BY_SCOPE_NAME = YES
+SORT_MEMBERS_CTORS_1ST = YES
GENERATE_TODOLIST = NO
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
@@ -105,9 +106,10 @@ EXCLUDE = @top_srcdir@/scribo/demo \
@top_srcdir@/scribo/sandbox \
@top_srcdir@/scribo/doc/user-refman \
@top_srcdir@/scribo/doc/devel-refman \
- @top_srcdir@/scribo/tests/unit_test
+ @top_srcdir@/scribo/tests/unit_test \
+ @top_srcdir@/scribo/+*
EXCLUDE_SYMLINKS = YES
-EXCLUDE_PATTERNS = *spe.hh
+EXCLUDE_PATTERNS = *.spe.hh *.moc.cc
EXCLUDE_SYMBOLS = *_ mln::trait::*
EXAMPLE_PATH = @top_srcdir@/scribo/doc/examples \
@top_srcdir@/scribo/doc/outputs \
@@ -143,7 +145,7 @@ VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES
COLS_IN_ALPHA_INDEX = 5
-IGNORE_PREFIX = mln::
+IGNORE_PREFIX = scribo::
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
diff --git a/scribo/doc/DoxygenLayout.xml b/scribo/doc/DoxygenLayout.xml
index e9d1901..b3bf627 100644
--- a/scribo/doc/DoxygenLayout.xml
+++ b/scribo/doc/DoxygenLayout.xml
@@ -1,4 +1,5 @@
<doxygenlayout version="1.0">
+ <!-- Generated by doxygen 1.8.3.1-20130209 -->
<!-- Navigation index tabs for HTML output -->
<navindex>
<tab type="mainpage" visible="yes" title="Scribo"/>
@@ -18,7 +19,6 @@
<tab type="filelist" visible="yes" title="" intro=""/>
<tab type="globals" visible="yes" title="" intro=""/>
</tab>
- <tab type="dirs" visible="yes" title="" intro=""/>
<tab type="examples" visible="yes" title="" intro=""/>
</navindex>
--
1.7.2.5
1
0
* doc/scribo/binarization/binarization.dox,
* doc/scribo/binarization/kim.dox,
* doc/scribo/binarization/otsu.dox,
* doc/scribo/binarization/wolf.dox,
* doc/scribo/core/component_set.dox,
* doc/scribo/filter/component_groups.dox,
* doc/scribo/filter/component_links.dox,
* doc/scribo/filter/components.dox,
* doc/scribo/filter/elements.dox,
* doc/scribo/filter/line_links.dox,
* doc/scribo/filter/paragraphs.dox,
* doc/scribo/primitive/extract/separators.dox,
* scribo/core/component_info.hh,
* scribo/core/tag/component.hh: Add more documentation.
* doc/scribo/layout/layout.dox,
* doc/scribo/namespaces.dox,
* doc/scribo/primitive/extract/components.dox,
* doc/scribo/primitive/extract/extract.dox: New.
* scribo/binarization/internal/local_threshold_core.hh,
* scribo/binarization/internal/singh_formula.hh,
* scribo/binarization/kim.hh,
* scribo/binarization/niblack_fast.hh,
* scribo/binarization/niblack_threshold.hh,
* scribo/binarization/otsu.hh,
* scribo/binarization/otsu_threshold.hh,
* scribo/binarization/sauvola_ms_split.hh,
* scribo/binarization/singh.hh,
* scribo/binarization/wolf.hh,
* scribo/binarization/wolf_fast.hh,
* scribo/core/component_set.hh,
* scribo/core/concept/serializable.hh,
* scribo/core/object_links.hh,
* scribo/debug/logger.hh,
* scribo/filter/paragraphs_in_borders.hh,
* scribo/filter/separators_in_borders.hh,
* scribo/filter/separators_vert_in_borders.hh,
* scribo/layout/xy_cut.hh,
* scribo/primitive/extract/components.hh,
* scribo/primitive/extract/lines_v_single.hh,
* scribo/subsampling/bilinear.hh,
* scribo/text/merging_hdoc.hh: Fix existing documentation.
---
scribo/ChangeLog | 48 +++++++++
scribo/doc/scribo/binarization/binarization.dox | 8 +-
scribo/doc/scribo/binarization/kim.dox | 23 ++++
scribo/doc/scribo/binarization/otsu.dox | 11 ++-
scribo/doc/scribo/binarization/wolf.dox | 6 +
scribo/doc/scribo/core/component_set.dox | 90 ++++++++++++++++
scribo/doc/scribo/filter/component_groups.dox | 2 +-
scribo/doc/scribo/filter/component_links.dox | 2 +-
scribo/doc/scribo/filter/components.dox | 2 +-
scribo/doc/scribo/filter/elements.dox | 2 +-
scribo/doc/scribo/filter/line_links.dox | 4 +-
scribo/doc/scribo/filter/paragraphs.dox | 4 +-
scribo/doc/scribo/layout/layout.dox | 6 +
scribo/doc/scribo/namespaces.dox | 7 ++
scribo/doc/scribo/primitive/extract/components.dox | 7 ++
scribo/doc/scribo/primitive/extract/extract.dox | 7 ++
scribo/doc/scribo/primitive/extract/separators.dox | 8 +-
.../binarization/internal/local_threshold_core.hh | 6 +-
.../scribo/binarization/internal/singh_formula.hh | 13 +--
scribo/scribo/binarization/kim.hh | 22 +---
scribo/scribo/binarization/niblack_fast.hh | 20 ++--
scribo/scribo/binarization/niblack_threshold.hh | 12 +--
scribo/scribo/binarization/otsu.hh | 8 +-
scribo/scribo/binarization/otsu_threshold.hh | 12 +-
scribo/scribo/binarization/sauvola_ms_split.hh | 19 ++--
scribo/scribo/binarization/singh.hh | 10 +-
scribo/scribo/binarization/wolf.hh | 20 ++--
scribo/scribo/binarization/wolf_fast.hh | 19 ++--
scribo/scribo/core/component_info.hh | 10 ++
scribo/scribo/core/component_set.hh | 77 +++++++++-----
scribo/scribo/core/concept/serializable.hh | 9 +-
scribo/scribo/core/object_links.hh | 8 +-
scribo/scribo/core/tag/component.hh | 56 +++++++---
scribo/scribo/debug/logger.hh | 8 +-
scribo/scribo/filter/paragraphs_in_borders.hh | 50 +++++----
scribo/scribo/filter/separators_in_borders.hh | 63 ++++++------
scribo/scribo/filter/separators_vert_in_borders.hh | 51 +++++-----
scribo/scribo/layout/xy_cut.hh | 14 ++-
scribo/scribo/primitive/extract/components.hh | 40 +++++---
scribo/scribo/primitive/extract/lines_v_single.hh | 2 +-
scribo/scribo/subsampling/bilinear.hh | 4 +-
scribo/scribo/text/merging_hdoc.hh | 112 ++++----------------
42 files changed, 552 insertions(+), 350 deletions(-)
create mode 100644 scribo/doc/scribo/binarization/kim.dox
create mode 100644 scribo/doc/scribo/binarization/wolf.dox
create mode 100644 scribo/doc/scribo/core/component_set.dox
create mode 100644 scribo/doc/scribo/layout/layout.dox
create mode 100644 scribo/doc/scribo/namespaces.dox
create mode 100644 scribo/doc/scribo/primitive/extract/components.dox
create mode 100644 scribo/doc/scribo/primitive/extract/extract.dox
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index 954af2c..ede4371 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,5 +1,53 @@
2013-03-20 Guillaume Lazzara <z(a)lrde.epita.fr>
+ Improve documentation of Scribo.
+
+ * doc/scribo/binarization/binarization.dox,
+ * doc/scribo/binarization/kim.dox,
+ * doc/scribo/binarization/otsu.dox,
+ * doc/scribo/binarization/wolf.dox,
+ * doc/scribo/core/component_set.dox,
+ * doc/scribo/filter/component_groups.dox,
+ * doc/scribo/filter/component_links.dox,
+ * doc/scribo/filter/components.dox,
+ * doc/scribo/filter/elements.dox,
+ * doc/scribo/filter/line_links.dox,
+ * doc/scribo/filter/paragraphs.dox,
+ * doc/scribo/primitive/extract/separators.dox,
+ * scribo/core/component_info.hh,
+ * scribo/core/tag/component.hh: Add more documentation.
+
+ * doc/scribo/layout/layout.dox,
+ * doc/scribo/namespaces.dox,
+ * doc/scribo/primitive/extract/components.dox,
+ * doc/scribo/primitive/extract/extract.dox: New.
+
+ * scribo/binarization/internal/local_threshold_core.hh,
+ * scribo/binarization/internal/singh_formula.hh,
+ * scribo/binarization/kim.hh,
+ * scribo/binarization/niblack_fast.hh,
+ * scribo/binarization/niblack_threshold.hh,
+ * scribo/binarization/otsu.hh,
+ * scribo/binarization/otsu_threshold.hh,
+ * scribo/binarization/sauvola_ms_split.hh,
+ * scribo/binarization/singh.hh,
+ * scribo/binarization/wolf.hh,
+ * scribo/binarization/wolf_fast.hh,
+ * scribo/core/component_set.hh,
+ * scribo/core/concept/serializable.hh,
+ * scribo/core/object_links.hh,
+ * scribo/debug/logger.hh,
+ * scribo/filter/paragraphs_in_borders.hh,
+ * scribo/filter/separators_in_borders.hh,
+ * scribo/filter/separators_vert_in_borders.hh,
+ * scribo/layout/xy_cut.hh,
+ * scribo/primitive/extract/components.hh,
+ * scribo/primitive/extract/lines_v_single.hh,
+ * scribo/subsampling/bilinear.hh,
+ * scribo/text/merging_hdoc.hh: Fix existing documentation.
+
+2013-03-20 Guillaume Lazzara <z(a)lrde.epita.fr>
+
Replace \fixme with FIXME.
* scribo/binarization/global_threshold_auto.hh,
diff --git a/scribo/doc/scribo/binarization/binarization.dox b/scribo/doc/scribo/binarization/binarization.dox
index 5a11603..145bf14 100644
--- a/scribo/doc/scribo/binarization/binarization.dox
+++ b/scribo/doc/scribo/binarization/binarization.dox
@@ -1,6 +1,6 @@
/*! \defgroup grpalgobin Binarization
- *
- * \brief Binarization algorithms.
- *
- * \ingroup grproutine
+
+ \brief Binarization algorithms.
+
+ \ingroup grproutine
*/
diff --git a/scribo/doc/scribo/binarization/kim.dox b/scribo/doc/scribo/binarization/kim.dox
new file mode 100644
index 0000000..c3f9ff8
--- /dev/null
+++ b/scribo/doc/scribo/binarization/kim.dox
@@ -0,0 +1,23 @@
+/*! \defgroup grpalgobinkim Kim
+
+ \brief Kim's Binarization implementations.
+
+ This algorithms performs a first rough binarization on the input
+ (here we use Sauvola's method). Then text lines are roughly
+ detected by grouping connected components. For each text lines,
+ character thickness and x height is computed. Finally, each
+ lines is binarized again, using text features as parameters for
+ adjusting the final threshold.
+
+ This algorithms considers that global and local statistics
+ should be used to compute a threshold in text areas.
+
+ This is an improvement of Sauvola's method.
+
+ This implementation is based on the paper "Multi-Window
+ Binarization of Camera Image for Document Recognition", In-Jung
+ Kim, Proceedings of the 9th International Workshop on Frontiers
+ in Handwriting Recognition (IWFHR-9 2004)
+
+ \ingroup grpalgobin
+ */
diff --git a/scribo/doc/scribo/binarization/otsu.dox b/scribo/doc/scribo/binarization/otsu.dox
index 4ae3f6e..7f56b36 100644
--- a/scribo/doc/scribo/binarization/otsu.dox
+++ b/scribo/doc/scribo/binarization/otsu.dox
@@ -1,6 +1,9 @@
/*! \defgroup grpalgobinotsu Otsu
- *
- * \brief Otsu's Binarization implementations.
- *
- * \ingroup grpalgobin
+
+ \brief Otsu's Binarization implementations.
+
+ This implementation is based on Ocropus's implementation.
+ http://code.google.com/p/ocropus/
+
+ \ingroup grpalgobin
*/
diff --git a/scribo/doc/scribo/binarization/wolf.dox b/scribo/doc/scribo/binarization/wolf.dox
new file mode 100644
index 0000000..1dc87fe
--- /dev/null
+++ b/scribo/doc/scribo/binarization/wolf.dox
@@ -0,0 +1,6 @@
+/*! \defgroup grpalgobinwolf Wolf
+ *
+ * \brief Wolf's Binarization implementations.
+ *
+ * \ingroup grpalgobin
+ */
diff --git a/scribo/doc/scribo/core/component_set.dox b/scribo/doc/scribo/core/component_set.dox
new file mode 100644
index 0000000..ccde17c
--- /dev/null
+++ b/scribo/doc/scribo/core/component_set.dox
@@ -0,0 +1,90 @@
+/*!
+ \class scribo::component_set
+
+ This structure is used to store rich information related to
+ components in an image.
+
+ It can be constructed directly from a labeled image and the number
+ of components, or using primitive::extract::components (easier and
+ recommanded) with a binary image.
+
+ \code
+ mln::image2d<bool> ima;
+ mln::io::pbm::load(ima, "document.pbm");
+
+ typedef scribo::def::lbl_type V;
+ typedef mln::image2d<V> L;
+ V ncomps;
+ component_set<L> comps = primitive::extract::components(ima, c4(), ncomps);
+ \endcode
+
+ Each component is associated to an id, \ref component_id_t. This
+ id is equivalent to the component label in the label image (\ref
+ labeled_image()).
+
+ A component_set is considered as valid if it has been initialized
+ (i.e. not instantiated with the default constructor).
+
+ On construction, information is automatically computed for each
+ components. To iterate over all the components and get that
+ information, use operator()() or info():
+
+ \code
+ for_all_comps(c,comps)
+ {
+ const scribo::component_info<L>& comp_info = comps.info(c);
+
+ // Some code here...
+ }
+ \endcode
+
+ Among component information, a component::Tag tag is stored and
+ used to mark specific components. This tag can be massively
+ updated for all components using update_tags(). The function
+ passed to this method must implement the following interface:
+
+ \code
+ template <typename L>
+ struct my_function
+ : mln::Function_v2b< my_function<L> >
+ {
+ // Constructor
+ my_function(const scribo::component_set<L>& components)
+ : components_(components)
+ {
+ }
+
+ // Core function
+ bool operator()(const mln_value(L)& l) const
+ {
+ if (l == mln::literal::zero)
+ return false;
+ return true;// your test here
+ }
+
+ /// Component set.
+ scribo::component_set<L> components_;
+ };
+ \endcode
+
+ Tags can be used to filter/make a selection of
+ components. Routines performing this selection/filtering
+ automatically are listed in \ref grpalgofiltercomp section.
+
+ Components considered as separators in the input image (lines,
+ blocks, ...) may be processed separately and are useful of the
+ rest of the layout analysis. This structure allows you to store a
+ binary image of separators which will be used in some routines to
+ prevent wrong regrouping. Note that no component information will
+ be computed for separators. The separator image can be managed
+ with has_separators(), add_separators(), separators(), and
+ clear_separators().
+
+ scribo::component_set is the first data structure in the
+ hierarchical representation of a document as explained in \ref
+ grpstruct.
+
+ \sa component_info, component::Tag, component::Type, grpstruct,
+ grpalgofiltercomp.
+
+*/
\ No newline at end of file
diff --git a/scribo/doc/scribo/filter/component_groups.dox b/scribo/doc/scribo/filter/component_groups.dox
index 3cdc6e7..34b9c7d 100644
--- a/scribo/doc/scribo/filter/component_groups.dox
+++ b/scribo/doc/scribo/filter/component_groups.dox
@@ -1,4 +1,4 @@
-/*! \defgroup grpalgofiltercompgroup Component Groups
+/*! \defgroup grpalgofiltercompgroup Component Group Filtering
*
* \brief Component groups filtering routines.
*
diff --git a/scribo/doc/scribo/filter/component_links.dox b/scribo/doc/scribo/filter/component_links.dox
index f577dec..6b0fb99 100644
--- a/scribo/doc/scribo/filter/component_links.dox
+++ b/scribo/doc/scribo/filter/component_links.dox
@@ -1,4 +1,4 @@
-/*! \defgroup grpalgofiltercomplink Component Links
+/*! \defgroup grpalgofiltercomplink Component Link Filtering
*
* \brief Component links filtering routines.
*
diff --git a/scribo/doc/scribo/filter/components.dox b/scribo/doc/scribo/filter/components.dox
index 7a23912..f098ae8 100644
--- a/scribo/doc/scribo/filter/components.dox
+++ b/scribo/doc/scribo/filter/components.dox
@@ -1,4 +1,4 @@
-/*! \defgroup grpalgofiltercomp Components
+/*! \defgroup grpalgofiltercomp Component Filtering
*
* \brief Component filtering routines.
*
diff --git a/scribo/doc/scribo/filter/elements.dox b/scribo/doc/scribo/filter/elements.dox
index ce0720d..2b8b50c 100644
--- a/scribo/doc/scribo/filter/elements.dox
+++ b/scribo/doc/scribo/filter/elements.dox
@@ -1,4 +1,4 @@
-/*! \defgroup grpalgofilterelt Elements
+/*! \defgroup grpalgofilterelt Element Filtering
*
* \brief Elements filtering routines.
*
diff --git a/scribo/doc/scribo/filter/line_links.dox b/scribo/doc/scribo/filter/line_links.dox
index 9510d14..5206951 100644
--- a/scribo/doc/scribo/filter/line_links.dox
+++ b/scribo/doc/scribo/filter/line_links.dox
@@ -1,6 +1,6 @@
-/*! \defgroup grpalgofilterlinelink Line Links
+/*! \defgroup grpalgofilterlinelink Line Link Filtering
*
- * \brief Line links filtering routines.
+ * \brief Line link filtering routines.
*
* \ingroup grpalgofilter
*/
diff --git a/scribo/doc/scribo/filter/paragraphs.dox b/scribo/doc/scribo/filter/paragraphs.dox
index d0e4a3e..1c922d1 100644
--- a/scribo/doc/scribo/filter/paragraphs.dox
+++ b/scribo/doc/scribo/filter/paragraphs.dox
@@ -1,6 +1,6 @@
-/*! \defgroup grpalgofilterpar Paragraphs
+/*! \defgroup grpalgofilterpar Paragraph Filtering
*
- * \brief Paragraphs filtering routines.
+ * \brief Paragraph filtering routines.
*
* \ingroup grpalgofilter
*/
diff --git a/scribo/doc/scribo/layout/layout.dox b/scribo/doc/scribo/layout/layout.dox
new file mode 100644
index 0000000..4e72f3f
--- /dev/null
+++ b/scribo/doc/scribo/layout/layout.dox
@@ -0,0 +1,6 @@
+/*! \defgroup grpalgolayout Layout Analysis
+ *
+ * \brief Document Layout Analysis algorithms.
+ *
+ * \ingroup grproutine
+ */
diff --git a/scribo/doc/scribo/namespaces.dox b/scribo/doc/scribo/namespaces.dox
new file mode 100644
index 0000000..f35e86b
--- /dev/null
+++ b/scribo/doc/scribo/namespaces.dox
@@ -0,0 +1,7 @@
+/*! \namespace scribo
+ \brief The main namespace of the Scribo module.
+*/
+
+/*! \namespace scribo::component
+ \brief Namespace of classes related to components.
+*/
\ No newline at end of file
diff --git a/scribo/doc/scribo/primitive/extract/components.dox b/scribo/doc/scribo/primitive/extract/components.dox
new file mode 100644
index 0000000..60af13c
--- /dev/null
+++ b/scribo/doc/scribo/primitive/extract/components.dox
@@ -0,0 +1,7 @@
+/*! \defgroup extractprimitivecomps Components Extraction
+
+ \brief All routines/algorithms to extract components.
+
+ \ingroup grproutine
+
+*/
\ No newline at end of file
diff --git a/scribo/doc/scribo/primitive/extract/extract.dox b/scribo/doc/scribo/primitive/extract/extract.dox
new file mode 100644
index 0000000..dde4ee7
--- /dev/null
+++ b/scribo/doc/scribo/primitive/extract/extract.dox
@@ -0,0 +1,7 @@
+/*! \defgroup extractprimitive Primitive Extraction
+
+ \brief All routines/algorithms to extract primitive objects.
+
+ \ingroup grproutine
+
+*/
\ No newline at end of file
diff --git a/scribo/doc/scribo/primitive/extract/separators.dox b/scribo/doc/scribo/primitive/extract/separators.dox
index 62f022b..6bd9917 100644
--- a/scribo/doc/scribo/primitive/extract/separators.dox
+++ b/scribo/doc/scribo/primitive/extract/separators.dox
@@ -1,6 +1,6 @@
/*! \defgroup extractprimitiveseps Lines and Separators extraction
- *
- * \brief All routines/algorithms to extract lines and separators.
- *
- * \ingroup grproutine
+
+ \brief All routines/algorithms to extract lines and separators.
+
+ \ingroup extractprimitive
*/
diff --git a/scribo/scribo/binarization/internal/local_threshold_core.hh b/scribo/scribo/binarization/internal/local_threshold_core.hh
index af8d4aa..5de9761 100644
--- a/scribo/scribo/binarization/internal/local_threshold_core.hh
+++ b/scribo/scribo/binarization/internal/local_threshold_core.hh
@@ -69,9 +69,9 @@ namespace scribo
/*! \brief Run Sauvola core algorithm. Use functor \p f to
compute the threshold and perform computation.
- \input[in] input An image.
- \input[in] f Functor computing Sauvola's formula.
- \input[in] window_size The window size.
+ \param[in] input An image.
+ \param[in] f Functor computing Sauvola's formula.
+ \param[in] window_size The window size.
*/
template <typename I, typename F>
diff --git a/scribo/scribo/binarization/internal/singh_formula.hh b/scribo/scribo/binarization/internal/singh_formula.hh
index e307a2c..e7627c0 100644
--- a/scribo/scribo/binarization/internal/singh_formula.hh
+++ b/scribo/scribo/binarization/internal/singh_formula.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2012 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2012, 2013 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -59,20 +60,18 @@ namespace scribo
/*! \brief Compute a threshold using Singh's formula.
+ \param[in] v The current image value.
\param[in] m_x_y Mean value.
- \param[in] s_x_y Standard deviation.
- \param[in] k Control the threshold value in the local
+ \param[in] K Control the threshold value in the local
window. The higher, the lower the threshold
form the local mean m(x, y).
- \param[in] R Maximum value of the standard deviation (128
- for grayscale documents).
\return A threshold.
*/
double operator()(const V& v, const double m_x_y, const double K) const;
- /*!
- \overload K = 0.34.
+ /*! \overload
+ K = 0.34.
*/
double operator()(const V& v, const double m_x_y) const;
diff --git a/scribo/scribo/binarization/kim.hh b/scribo/scribo/binarization/kim.hh
index f0e066c..7495cfa 100644
--- a/scribo/scribo/binarization/kim.hh
+++ b/scribo/scribo/binarization/kim.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2012 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2012, 2013 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -46,27 +47,14 @@ namespace scribo
/*! \brief Kim's binarization
- This algorithms performs a first rough binarization on the input
- (here we use Sauvola's method). Then text lines are roughly
- detected by grouping connected components. For each text lines,
- character thickness and x height is computed. Finally, each
- lines is binarized again, using text features as parameters for
- adjusting the final threshold.
-
- This algorithms considers that global and local statistics
- should be used to compute a threshold in text areas.
-
- This is an improvement of Sauvola's method.
+ \copydetails grpalgobinkim
\param[in] input A gray-level image.
\param[in] window_size the window size to be used for the first
binarization.
\param[in] k Sauvola's formula parameter.
- This implementation is based on the paper "Multi-Window
- Binarization of Camera Image for Document Recognition", In-Jung
- Kim, Proceedings of the 9th International Workshop on Frontiers
- in Handwriting Recognition (IWFHR-9 2004)
+ \ingroup grpalgobinkim
*/
template <typename I>
mln_ch_value(I, bool)
@@ -74,6 +62,8 @@ namespace scribo
/*! \overload
k is set to SCRIBO_DEFAULT_SAUVOLA_K.
+
+ \ingroup grpalgobinkim
*/
template <typename I>
mln_ch_value(I, bool)
diff --git a/scribo/scribo/binarization/niblack_fast.hh b/scribo/scribo/binarization/niblack_fast.hh
index 5143a4d..6e8f608 100644
--- a/scribo/scribo/binarization/niblack_fast.hh
+++ b/scribo/scribo/binarization/niblack_fast.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010, 2011, 2012 EPITA Research and Development
-// Laboratory (LRDE)
+// Copyright (C) 2009, 2010, 2011, 2012, 2013 EPITA Research and
+// Development Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -50,12 +50,13 @@ namespace scribo
is faster than the original implementation thanks to the use of
integral images.
- \input[in] input An image.
- \input[in] window_size The window size.
- \input[in] K Sauvola's formulae constant.
+ \param[in] input An image.
+ \param[in] window_size The window size.
+ \param[in] K Sauvola's formulae constant.
\return A binary image.
+ \ingroup grpalgobinniblack
*/
template <typename I>
mln_ch_value(I, bool)
@@ -68,15 +69,18 @@ namespace scribo
Sauvola's formulae constant K is set to
SCRIBO_DEFAULT_NIBLACK_K.
+ \ingroup grpalgobinniblack
*/
template <typename I>
mln_ch_value(I, bool)
niblack_fast(const Image<I>& input, unsigned window_size);
- /// \overload
- /// The window size is set to 11.
- //
+ /*! \overload
+ The window size is set to 11.
+
+ \ingroup grpalgobinniblack
+ */
template <typename I>
mln_ch_value(I, bool)
niblack_fast(const Image<I>& input);
diff --git a/scribo/scribo/binarization/niblack_threshold.hh b/scribo/scribo/binarization/niblack_threshold.hh
index ceb9415..2106128 100644
--- a/scribo/scribo/binarization/niblack_threshold.hh
+++ b/scribo/scribo/binarization/niblack_threshold.hh
@@ -1,4 +1,4 @@
-// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Copyright (C) 2009, 2010, 2011, 2013 EPITA Research and Development
// Laboratory (LRDE)
//
// This file is part of Olena.
@@ -49,14 +49,12 @@ namespace scribo
using namespace mln;
- /*! \brief Compute an image of local threshold using Niblack algorithm.
+ /*! \brief Compute an image of local threshold using Niblack
+ algorithm.
- \param[in] input A gray level image.
- \param[in] window_size The window size.
+ \param[in] input A gray level image.
+ \param[in] window_size The window size.
\param[in] K Controls the threshold value in the local window.
- \param[out] simple The sum of all intensities of \p input.
- \param[out] squared The sum of all squared intensities of \p
- input.
\return An image of local thresholds.
diff --git a/scribo/scribo/binarization/otsu.hh b/scribo/scribo/binarization/otsu.hh
index 2a8163d..8bb56ce 100644
--- a/scribo/scribo/binarization/otsu.hh
+++ b/scribo/scribo/binarization/otsu.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2011 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2011, 2013 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -39,10 +40,9 @@ namespace scribo
using namespace mln;
- /*! An implementation of Otsu's binarization algorithm.
+ /*! \brief An implementation of Otsu's binarization algorithm.
- It is based on Ocropus's implementation.
- http://code.google.com/p/ocropus/
+ \copydetails grpalgobinotsu
\param[in] input A gray-scale image.
diff --git a/scribo/scribo/binarization/otsu_threshold.hh b/scribo/scribo/binarization/otsu_threshold.hh
index 1ee4b42..99ad6b1 100644
--- a/scribo/scribo/binarization/otsu_threshold.hh
+++ b/scribo/scribo/binarization/otsu_threshold.hh
@@ -42,16 +42,16 @@ namespace scribo
using namespace mln;
- /*! Compute a global binarization threshold using Otsu's algorithm.
+ /*! \brief Compute a global binarization threshold using Otsu's
+ algorithm.
- It is based on Ocropus's implementation.
- http://code.google.com/p/ocropus/
+ \copydetails grpalgobinotsu
- \param[in] input A gray-scale image.
+ \param[in] input A gray-scale image.
- \return A global threshold value.
+ \return A global threshold value.
- \ingroup grpalgobinotsu
+ \ingroup grpalgobinotsu
*/
template <typename I>
mln_value(I)
diff --git a/scribo/scribo/binarization/sauvola_ms_split.hh b/scribo/scribo/binarization/sauvola_ms_split.hh
index c577d52..330a2cc 100644
--- a/scribo/scribo/binarization/sauvola_ms_split.hh
+++ b/scribo/scribo/binarization/sauvola_ms_split.hh
@@ -72,23 +72,26 @@ namespace scribo
*/
template <typename I>
mln_ch_value(I, bool)
- sauvola_ms_split(const Image<I>& input_1_, unsigned w_1,
+ sauvola_ms_split(const Image<I>& input_1, unsigned w_1,
unsigned s, unsigned min_ntrue, double k2,
double k3, double k4);
- /// \overload
- /// k2, k3 and k4 are set to \p K.
+ /*! \overload
+ k2, k3 and k4 are set to \p K.
+
+ \ingroup grpalgobinsauvola
+ */
template <typename I>
mln_ch_value(I, bool)
sauvola_ms_split(const Image<I>& input_1, unsigned w_1,
unsigned s, unsigned min_ntrue, double K);
- /// \overload
- /// k2, k3 and k4 are set to 0.34.
- ///
- /// \ingroup grpalgobinsauvola
- //
+ /*! \overload
+ k2, k3 and k4 are set to 0.34.
+
+ \ingroup grpalgobinsauvola
+ */
template <typename I>
mln_ch_value(I, bool)
sauvola_ms_split(const Image<I>& input_1, unsigned w_1,
diff --git a/scribo/scribo/binarization/singh.hh b/scribo/scribo/binarization/singh.hh
index d66fd04..ae84d62 100644
--- a/scribo/scribo/binarization/singh.hh
+++ b/scribo/scribo/binarization/singh.hh
@@ -45,9 +45,9 @@ namespace scribo
/*! \brief Convert an image into a binary image.
- \input[in] input An image.
- \input[in] window_size The window size.
- \input[in] K Singh's formulae constant.
+ \param[in] input An image.
+ \param[in] window_size The window size.
+ \param[in] K Singh's formulae constant.
\return A binary image.
@@ -62,8 +62,8 @@ namespace scribo
Singh's formulae constant K is set to 0.34.
- \input[in] input An image.
- \input[in] window_size The window size.
+ \param[in] input An image.
+ \param[in] window_size The window size.
\return A binary image.
diff --git a/scribo/scribo/binarization/wolf.hh b/scribo/scribo/binarization/wolf.hh
index aadf2af..840d69f 100644
--- a/scribo/scribo/binarization/wolf.hh
+++ b/scribo/scribo/binarization/wolf.hh
@@ -47,9 +47,9 @@ namespace scribo
/*! \brief Convert an image into a binary image.
- \input[in] input An image.
- \input[in] window_size The window size.
- \input[in] K Wolf's formulae constant.
+ \param[in] input An image.
+ \param[in] window_size The window size.
+ \param[in] K Wolf's formulae constant.
\return A binary image.
@@ -57,6 +57,7 @@ namespace scribo
Enhancement and Binarization in Multimedia Documents", Christian
Wolf, Jean-Michel Jolion, Françoise Chassaing, ICPR 2002.
+ \ingroup grpalgobinwolf
*/
template <typename I>
mln_ch_value(I, bool)
@@ -68,20 +69,23 @@ namespace scribo
Wolf's formulae constant K is set to 0.34.
- \input[in] input An image.
- \input[in] window_size The window size.
+ \param[in] input An image.
+ \param[in] window_size The window size.
\return A binary image.
+ \ingroup grpalgobinwolf
*/
template <typename I>
mln_ch_value(I, bool)
wolf(const Image<I>& input, unsigned window_size);
- /// \overload
- /// The window size is set to 11.
- //
+ /*! \overload
+ The window size is set to 11.
+
+ \ingroup grpalgobinwolf
+ */
template <typename I>
mln_ch_value(I, bool)
wolf(const Image<I>& input);
diff --git a/scribo/scribo/binarization/wolf_fast.hh b/scribo/scribo/binarization/wolf_fast.hh
index e0cf56d..a984532 100644
--- a/scribo/scribo/binarization/wolf_fast.hh
+++ b/scribo/scribo/binarization/wolf_fast.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2012 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2012, 2013 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -46,9 +47,9 @@ namespace scribo
/*! \brief Convert an image into a binary image.
- \input[in] input An image.
- \input[in] window_size The window size.
- \input[in] K Wolf's formulae constant.
+ \param[in] input An image.
+ \param[in] window_size The window size.
+ \param[in] K Wolf's formulae constant.
\return A binary image.
@@ -60,6 +61,7 @@ namespace scribo
is faster than the original implementation thanks to the use of
integral images.
+ \ingroup grpalgobinwolf
*/
template <typename I>
mln_ch_value(I, bool)
@@ -71,15 +73,18 @@ namespace scribo
Wolf's formulae constant K is set to 0.34.
+ \ingroup grpalgobinwolf
*/
template <typename I>
mln_ch_value(I, bool)
wolf_fast(const Image<I>& input, unsigned window_size);
- /// \overload
- /// The window size is set to 11.
- //
+ /*! \overload
+ The window size is set to 11.
+
+ \ingroup grpalgobinwolf
+ */
template <typename I>
mln_ch_value(I, bool)
wolf_fast(const Image<I>& input);
diff --git a/scribo/scribo/core/component_info.hh b/scribo/scribo/core/component_info.hh
index b42787f..d8e3381 100644
--- a/scribo/scribo/core/component_info.hh
+++ b/scribo/scribo/core/component_info.hh
@@ -47,9 +47,19 @@ namespace scribo
// Forward declarations.
template <typename L> class component_set;
+ /*! \brief The type of the component ids.
+
+ This id is mainly used in structures like scribo::component_set
+ and scribo::component_info structures. It refers to the actual
+ label used in the underlying labeled component image stored in
+ scribo::component_set.
+ */
typedef mln::util::object_id<scribo::ComponentId, unsigned> component_id_t;
+ /*! \brief Component information data structure.
+
+ */
template <typename L>
class component_info : public Serializable<component_info<L> >
{
diff --git a/scribo/scribo/core/component_set.hh b/scribo/scribo/core/component_set.hh
index 32eb636..789c752 100644
--- a/scribo/scribo/core/component_set.hh
+++ b/scribo/scribo/core/component_set.hh
@@ -1,4 +1,4 @@
-// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Copyright (C) 2009, 2010, 2011, 2013 EPITA Research and Development
// Laboratory (LRDE)
//
// This file is part of Olena.
@@ -74,7 +74,10 @@ namespace scribo
namespace internal
{
- /// Data structure for \c scribo::component_set<I>.
+ /*! \internal \brief Data structure for \c scribo::component_set.
+
+ \ingroup grpstruct
+ */
template <typename L>
struct component_set_data
{
@@ -118,10 +121,10 @@ namespace scribo
} // end of namespace scribo::internal
- /// \brief Represents all the components in a document image.
- ///
- /// \ingroup grpstruct
- //
+ /*! \brief Represents all the components in a document image.
+
+ \ingroup grpstruct
+ */
template <typename L>
class component_set : public Serializable<component_set<L> >
{
@@ -139,27 +142,31 @@ namespace scribo
public:
- /// Constructors
- /// @{
- /// Constructor without argument.
+ // Constructors
+
+ /// Default.
component_set();
- // Constructor from internal data.
+ /// Constructor from internal data.
component_set(const mln::util::tracked_ptr<data_t>& data);
- /// Constructor from an image \p ima and the number of labels \p ncomps.
+ /// Constructor from an image \p ima and the number of labels \p
+ /// ncomps.
component_set(const L& ima, const mln_value(L)& ncomps);
- /// Constructor from an image \p ima, the number of labels \p ncomps and
- /// attributes values (bounding box and mass center).
+ /// Constructor from an image \p ima, the number of labels \p
+ /// ncomps and attributes values (bounding box and mass center).
component_set(const L& ima, const mln_value(L)& ncomps,
const mln::util::array<pair_accu_t>& attribs,
component::Type type = component::Undefined);
+ /// Constructor from an image \p ima, the number of labels \p
+ /// ncomps and attributes values (bounding box and mass center).
component_set(const L& ima, const mln_value(L)& ncomps,
const mln::util::array<pair_data_t>& attribs,
component::Type type = component::Undefined);
- /// @}
+
+ // Misc Members
/// Return the component count.
mln_value(L) nelements() const;
@@ -177,7 +184,8 @@ namespace scribo
const component_info<L>& operator()(const component_id_t& id) const;
- /// Update tag of components set to 'false' in \p f with \p tag.
+ /// Update component tag for which \p f returns 'False', with \p
+ /// tag.
template <typename F>
void update_tags(const mln::Function_v2b<F>& f, component::Tag tag);
@@ -187,55 +195,66 @@ namespace scribo
/// Return the underlying labeled image
const L& labeled_image() const;
- /// Is this component set valid?
+ /// A component_set is considered as valid if it has been
+ /// initialized (i.e. not instantiated with the default
+ /// constructor).
bool is_valid() const;
- /// Separators components related routines.
- /// @{
+ // Separators components related routines.
/// Return true if an image of separator exists.
bool has_separators() const;
- /// Add separators in the underlying labeled image.
+ /// Add a new separator binary image or perform a logical OR with
+ /// the existing one.
void add_separators(const mln_ch_value(L, bool)& ima);
- /// Return the Boolean image of separators.
+ /// Return the binary image of separators.
const mln_ch_value(L, bool)& separators() const;
- /// Remove any existing separators.
+ /// Clear separator image.
void clear_separators();
- /// @}
-
-
- /// Internal methods
- /// @{
+ // Internal methods
+ /// \internal
/// Return all the component infos.
+ //
const mln::util::array<scribo::component_info<L> >& infos_() const;
+ /// \internal
/// Unique set Id.
+ //
id_t id_() const;
+ /// \internal
/// Read/Write access to the underlying labeled image.
- /// Careful! Write in this image at your own risks! It may lead to
+ ///
+ /// \warning Write in this image at your own risks! It may lead to
/// non-synchronised related data.
//
L& labeled_image_();
+ /// \internal
+ /// Force replacing the underlying labeled image. \warning Use it
+ /// at your own risks... This image may not
+ ///
+ /// reflect the component information stored in this
+ /// component_set.
+ //
void update_labeled_image_(const L& lbl);
+ /// \internal
/// Return the underlying labeled image where invalid components
/// have been erased.
///
- /// WARNING: this image is computed on the fly...!
+ /// \warning this image is computed on the fly...!
//
mln_concrete(L) valid_comps_image_() const;
- /// @}
protected:
/// Duplicate the underlying image and create a new component_set.
diff --git a/scribo/scribo/core/concept/serializable.hh b/scribo/scribo/core/concept/serializable.hh
index 6e661a6..e016667 100644
--- a/scribo/scribo/core/concept/serializable.hh
+++ b/scribo/scribo/core/concept/serializable.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2011 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2011, 2013 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -28,7 +29,7 @@
/// \file
///
-/// Concept for serializer visitors.
+/// Concept for objects that can be serialized.
# include <mln/core/concept/object.hh>
# include <scribo/core/concept/serialize_visitor.hh>
@@ -36,11 +37,13 @@
namespace scribo
{
- /// \brief Link functor concept.
+ /// \brief Concept for objects that can be serialized.
template <typename E>
class Serializable : public mln::Object<E>
{
public:
+
+ /// Allow this object to be serialized by \p visitor.
template <typename E2>
void accept(const SerializeVisitor<E2>& visitor) const;
};
diff --git a/scribo/scribo/core/object_links.hh b/scribo/scribo/core/object_links.hh
index a2543a7..0515d84 100644
--- a/scribo/scribo/core/object_links.hh
+++ b/scribo/scribo/core/object_links.hh
@@ -1,4 +1,4 @@
-// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Copyright (C) 2009, 2010, 2011, 2013 EPITA Research and Development
// Laboratory (LRDE)
//
// This file is part of Olena.
@@ -94,7 +94,7 @@ namespace scribo
bool has_linking_enabled(unsigned comp_id) const;
/// Return True if component \p comp_id has a link starting from
- /// itself to another one.
+ /// itself to another component.
bool is_linked(unsigned comp_id) const;
unsigned nelements() const;
@@ -108,8 +108,8 @@ namespace scribo
/// linked later.
void clear(unsigned id);
- /// Do not allow component with id \p id to be linked to anyother
- /// ones.
+ /// Do not allow component with id \p id to be linked to another
+ /// component.
void disable_linking(unsigned id);
/// Get link id for component \p comp_id.
diff --git a/scribo/scribo/core/tag/component.hh b/scribo/scribo/core/tag/component.hh
index d5afb36..5cf62fc 100644
--- a/scribo/scribo/core/tag/component.hh
+++ b/scribo/scribo/core/tag/component.hh
@@ -1,4 +1,4 @@
-// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Copyright (C) 2009, 2010, 2011, 2013 EPITA Research and Development
// Laboratory (LRDE)
//
// This file is part of Olena.
@@ -27,48 +27,70 @@
#ifndef SCRIBO_CORE_TAG_COMPONENT_HH
# define SCRIBO_CORE_TAG_COMPONENT_HH
-# include <iostream>
-
/// \file
///
/// \brief Component tags.
+# include <iostream>
+
namespace scribo
{
- // Component id tag.
+ /// Component id tag.
struct ComponentId;
-
namespace component
{
+ /*! \brief All possible tags that can be used for components.
+
+ component::Tag values can be converted to String using
+ operator<<(std::ostream &ostr, const Tag &tag). String values
+ can be converted to component::Tag using str2tag().
+
+ \sa scribo::component_set scribo::component_info
+ */
enum Tag
{
- None = 0,
- Ignored
+ None = 0, ///< No tag set.
+ Ignored ///< To be ignored in further processing.
};
+ /*! \brief All possible types of components.
+
+ component::Type values can be converted to String using
+ operator<<(std::ostream &ostr, const Type &type). String values
+ can be converted to component::Type using str2type().
+
+ \sa scribo::component_set scribo::component_info str2type()
+ */
enum Type
{
- Undefined = 0,
- Character,
- VerticalLineSeparator,
- HorizontalLineSeparator,
- WhitespaceSeparator,
- Noise,
- Punctuation,
- Image,
- DropCapital
+ Undefined = 0, ///< No type defined.
+ Character, ///< Character.
+ VerticalLineSeparator, ///< Vertical line separator.
+ HorizontalLineSeparator, ///< Horizontal line separator.
+ WhitespaceSeparator, ///< whitespace separator.
+ Noise, ///< Noise.
+ Punctuation, ///< Punctuation.
+ Image, ///< Image.
+ DropCapital ///< Drop capital.
};
+ /// \brief Operator allowing scribo::component::Tag to be printed
+ /// out.
std::ostream& operator<<(std::ostream& ostr, const Tag& tag);
+
+ /// \brief Convert a std::string to a scribo::component::Tag.
Tag str2tag(const std::string& str);
+ /// \brief Operator allowing scribo::component::Type to be printed
+ /// out.
std::ostream& operator<<(std::ostream& ostr, const Type& type);
+ /// \brief Convert a std::string to a scribo::component::Type.
Type str2type(const std::string& str);
@@ -176,4 +198,4 @@ namespace scribo
} // end of namespace scribo
-#endif // ! SCRIBO_CORE_TAG_COMP_HH
+#endif // ! SCRIBO_CORE_TAG_COMPONENT_HH
diff --git a/scribo/scribo/debug/logger.hh b/scribo/scribo/debug/logger.hh
index 5c0fcbe..b65b04a 100644
--- a/scribo/scribo/debug/logger.hh
+++ b/scribo/scribo/debug/logger.hh
@@ -50,8 +50,8 @@ namespace scribo
/*! \brief Enum defining different level of image logging
- According to the debug level set in #logger_ the image may
- be saved or not.
+ According to the debug level set in scribo::debug::logger_ the
+ image may be saved or not.
*/
enum Level
{
@@ -65,8 +65,8 @@ namespace scribo
/*! \brief Enum defining different modes of text logging
- According to the verbose mode set in #logger_ the text may
- be logged or not.
+ According to the verbose mode set in scribo::debug::logger_ the
+ text may be logged or not.
*/
enum VerboseMode
{
diff --git a/scribo/scribo/filter/paragraphs_in_borders.hh b/scribo/scribo/filter/paragraphs_in_borders.hh
index e05534c..f32ba44 100644
--- a/scribo/scribo/filter/paragraphs_in_borders.hh
+++ b/scribo/scribo/filter/paragraphs_in_borders.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2011 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2011, 2013 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -46,29 +47,30 @@ namespace scribo
using namespace mln;
- /// \brief Invalidate paragraphs located close to the image borders.
- ///
- /// \param[in,out] doc A document structure.
- ///
- /// Warning: it does not remove paragraphs from separator
- /// image. It only invalidate separator components in their
- /// respective component_set.
- ///
- /// \verbatim
- ///
- /// -----------
- /// |_!____!__|
- /// | ! ! <--------- Paragraphs located in this area are
- /// | ! ! | invalidated.
- /// | ! ! |
- /// |_!____!__|
- /// | ! ! |
- /// -----------
- ///
- /// \endverbatim
- ///
- /// \ingroup grpalgofilterpar
- //
+ /*! \brief Invalidate paragraphs located close to the image
+ borders.
+
+ \param[in,out] doc A document structure.
+
+ Warning: it does not remove paragraphs from separator
+ image. It only invalidate separator components in their
+ respective component_set.
+
+ \verbatim
+
+ -----------
+ |_!____!__|
+ | ! ! <--------- Paragraphs located in this area are
+ | ! ! | invalidated.
+ | ! ! |
+ |_!____!__|
+ | ! ! |
+ -----------
+
+ \endverbatim
+
+ \ingroup grpalgofilterpar
+ */
template <typename L>
void
paragraphs_in_borders(document<L>& doc);
diff --git a/scribo/scribo/filter/separators_in_borders.hh b/scribo/scribo/filter/separators_in_borders.hh
index 304e785..ae9ff70 100644
--- a/scribo/scribo/filter/separators_in_borders.hh
+++ b/scribo/scribo/filter/separators_in_borders.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2011 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2011, 2013 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -46,36 +47,36 @@ namespace scribo
using namespace mln;
- /// \brief Invalidate separators located close to the image
- /// borders.
- ///
- /// \param[in,out] doc A document structure.
- /// \param[in] vratio Ratio to be used for evaluating the inner
- /// border size in which vertical separators
- /// will be invalidated.
- /// \param[in] hratio Ratio to be used for evaluating the inner
- /// border size in which horizontal separators
- /// will be invalidated.
- ///
- /// Warning: it does not remove separators from separator
- /// image. It only invalidate separator components in their
- /// respective component_set.
- ///
- /// \verbatim
- ///
- /// -----------
- /// |_!____!__|
- /// | ! ! <--------- Separators located in this area are
- /// | ! ! | invalidated.
- /// | ! ! |
- /// |_!____!__|
- /// | ! ! |
- /// -----------
- ///
- /// \endverbatim
- ///
- /// \ingroup grpalgofilterelt
- //
+ /*! \brief Invalidate separators located close to the image
+ borders.
+
+ \param[in,out] doc A document structure.
+ \param[in] vratio Ratio to be used for evaluating the inner
+ border size in which vertical separators
+ will be invalidated.
+ \param[in] hratio Ratio to be used for evaluating the inner
+ border size in which horizontal separators
+ will be invalidated.
+
+ \warning it does not remove separators from separator image. It
+ only invalidate separator components in their respective
+ component_set.
+
+ \verbatim
+
+ -----------
+ |_!____!__|
+ | ! ! <--------- Separators located in this area are
+ | ! ! | invalidated.
+ | ! ! |
+ |_!____!__|
+ | ! ! |
+ -----------
+
+ \endverbatim
+
+ \ingroup grpalgofilterelt
+ */
template <typename L>
void
separators_in_borders(document<L>& doc, float vratio, float hratio);
diff --git a/scribo/scribo/filter/separators_vert_in_borders.hh b/scribo/scribo/filter/separators_vert_in_borders.hh
index a20625c..a836554 100644
--- a/scribo/scribo/filter/separators_vert_in_borders.hh
+++ b/scribo/scribo/filter/separators_vert_in_borders.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2011 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2011, 2013 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -48,30 +49,30 @@ namespace scribo
using namespace mln;
- /// \brief Invalidate vertical separators located close to the image
- /// borders.
- ///
- /// \param[in,out] doc A document structure.
- ///
- /// Warning: it does not remove separators from separator
- /// image. It only invalidate separator components in their
- /// respective component_set.
- ///
- /// \verbatim
- ///
- /// -----------
- /// |_!____!__|
- /// | ! ! <--------- Separators located in this area are
- /// | ! ! | invalidated.
- /// | ! ! |
- /// |_!____!__|
- /// | ! ! |
- /// -----------
- ///
- /// \endverbatim
- ///
- /// \ingroup grpalgofilterelt
- //
+ /*! \brief Invalidate vertical separators located close to the image
+ borders.
+
+ \param[in,out] doc A document structure.
+
+ Warning: it does not remove separators from separator
+ image. It only invalidate separator components in their
+ respective component_set.
+
+ \verbatim
+
+ -----------
+ |_!____!__|
+ | ! ! <--------- Separators located in this area are
+ | ! ! | invalidated.
+ | ! ! |
+ |_!____!__|
+ | ! ! |
+ -----------
+
+ \endverbatim
+
+ \ingroup grpalgofilterelt
+ */
template <typename L>
void
separators_vert_in_borders(document<L>& doc);
diff --git a/scribo/scribo/layout/xy_cut.hh b/scribo/scribo/layout/xy_cut.hh
index d3d5227..b55d51c 100644
--- a/scribo/scribo/layout/xy_cut.hh
+++ b/scribo/scribo/layout/xy_cut.hh
@@ -48,19 +48,21 @@ namespace scribo
using namespace mln;
/// \brief XY-Cut layout analysis algorithm.
- /*! This algorithm is an implementation made from \cite
- nagy.1992.computer7 : "A prototype document image analysis
- system for technical journals.".
+ /*! This algorithm is an implementation inspired by
+ \cite nagy1992computer, \cite kruatrachue2005waset and
+ \cite meunier2005icdar.
It recusively subdivides empty spaces in the document until a
minimum division size is reached. The latter is defined with \p
min_height and \p min_width.
- \input[in] ima A binary image.
- \input[in] min_height The minimum height of a subdivision.
- \input[in] min_width The minimum width of a subdivision.
+ \param[in] ima A binary image.
+ \param[in] min_height The minimum height of a subdivision.
+ \param[in] min_width The minimum width of a subdivision.
\return An array of component group bounding boxes.
+
+ \ingroup grpalgolayout
*/
template <typename I>
mln::util::array<mln_box(I)>
diff --git a/scribo/scribo/primitive/extract/components.hh b/scribo/scribo/primitive/extract/components.hh
index ef55c09..db13967 100644
--- a/scribo/scribo/primitive/extract/components.hh
+++ b/scribo/scribo/primitive/extract/components.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2011, 2013 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2011, 2013 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -63,17 +63,19 @@ namespace scribo
using namespace mln;
- /// \brief Extract components in a binary image.
- ///
- /// \param[in] input A RGB image.
- /// \param[in] binary_input A binary image. Components must be set to 'True'.
- /// and background to 'false'.
- /// \param[in] nbh A neighborhood to be used for labeling.
- /// \param[in,out] ncomponents Will store the numbers of components found.
- /// \param[in] type The default component type set to components.
- ///
- /// \return An image of labeled components.
- //
+ /*! \brief Extract components in a binary image.
+
+ \param[in] input A RGB image.
+ \param[in] binary_input A binary image. Components must be set to 'True'.
+ and background to 'false'.
+ \param[in] nbh A neighborhood to be used for labeling.
+ \param[in,out] ncomponents Will store the numbers of components found.
+ \param[in] type The default component type set to components.
+
+ \return An image of labeled components.
+
+ \ingroup extractprimitivecomps
+ */
template <typename I, typename J, typename N, typename V>
inline
component_set<mln_ch_value(I,V)>
@@ -82,6 +84,18 @@ namespace scribo
component::Type type = component::Undefined);
+ /*! \overload
+
+ \param[in] binary_input A binary image. Components must be set to 'True'.
+ and background to 'false'.
+ \param[in] nbh A neighborhood to be used for labeling.
+ \param[in,out] ncomponents Will store the numbers of components found.
+ \param[in] type The default component type set to components.
+
+ \return A component_set.
+
+ \ingroup extractprimitivecomps
+ */
template <typename I, typename N, typename V>
inline
component_set<mln_ch_value(I,V)>
diff --git a/scribo/scribo/primitive/extract/lines_v_single.hh b/scribo/scribo/primitive/extract/lines_v_single.hh
index 2d5d88a..c2ab1ca 100644
--- a/scribo/scribo/primitive/extract/lines_v_single.hh
+++ b/scribo/scribo/primitive/extract/lines_v_single.hh
@@ -57,7 +57,7 @@ namespace scribo
* \param[in] input A binary image.
* \param[in] nbh The neighborhood used for labeling image
* components.
- * \param[in,out] nlines Type used for labeling.
+ * \param[in] nlines Type used for labeling.
* \param[in] min_line_length The minimum line length.
* \param[in] h_w_ratio The minimum ratio height/width object
* bounding boxes to consider an
diff --git a/scribo/scribo/subsampling/bilinear.hh b/scribo/scribo/subsampling/bilinear.hh
index aba09c8..e992761 100644
--- a/scribo/scribo/subsampling/bilinear.hh
+++ b/scribo/scribo/subsampling/bilinear.hh
@@ -49,8 +49,8 @@ namespace scribo
/// \brief Bilinear subsampling.
/*!
- \input[in] input An image.
- \input[in] sub_ratio The subsampling size ratio.
+ \param[in] input An image.
+ \param[in] sub_ratio The subsampling size ratio.
*/
template <typename I>
mln_concrete(I)
diff --git a/scribo/scribo/text/merging_hdoc.hh b/scribo/scribo/text/merging_hdoc.hh
index 4c6a7c4..5065338 100644
--- a/scribo/scribo/text/merging_hdoc.hh
+++ b/scribo/scribo/text/merging_hdoc.hh
@@ -1,4 +1,4 @@
-// Copyright (C) 2010, 2011, 2012 EPITA Research and Development
+// Copyright (C) 2010, 2011, 2012, 2013 EPITA Research and Development
// Laboratory (LRDE)
//
// This file is part of Olena.
@@ -73,15 +73,15 @@ namespace scribo
/*! \brief Merge text component in order to reconstruct text lines
in old documents.
- \param[in] lines A line set.
+ \param[in] lines A line set.
- \return A new line set. Line ids are preserved and merged
- lines (not valid anymore) are tagged with line::Merged. The
- lines produced with this algorithm (valid lines) are tagged
- with line::None. Line type is also set either with line::Text
- or line::Punctuation.
+ \return A new line set. Line ids are preserved and merged
+ lines (not valid anymore) are tagged with line::Merged. The
+ lines produced with this algorithm (valid lines) are tagged
+ with line::None. Line type is also set either with line::Text
+ or line::Punctuation.
- \ingroup grptext
+ \ingroup grptext
*/
template <typename L>
line_set<L>
@@ -505,24 +505,6 @@ namespace scribo
const box2d& l_ted_ebbox = l_ted.ebbox();
-// std::cout << "top_row = " << top_row << " - bot_row = " << bot_row << std::endl;
-// std::cout << std::abs(bot_row - l_ted.baseline())
-// << " - d "
-// << std::abs(bot_row - l_ted.descent())
-// << " - dd "
-// << std::abs(bot_row - l_ted.ebbox().pmax().row())
-// << " - "
-// << std::abs(top_row - l_ted.meanline())
-// << " - a "
-// << std::abs(top_row - l_ted.ascent())
-// << " - aa "
-// << std::abs(top_row - l_ted.ebbox().pmin().row())
-// << " - "
-// << l_ted.ascent()
-// << " - "
-// << l_ted.descent()
-// << std::endl;
-
if ((std::abs(bot_row - l_ted.baseline()) < 5
|| std::abs(bot_row - l_ted_ebbox.pmax().row()) < 5)
&&
@@ -554,13 +536,13 @@ namespace scribo
if already merged
continue
- ///
- /// x-----------x
- /// | |
- /// x x x
- /// | |
- /// x-----------x
- ///
+
+ x-----------x
+ | |
+ x x x
+ | |
+ x-----------x
+
Set labels <- Every labels corresponding to the colliding bounding
boxes (uses only the 7 sites detailled above).
@@ -764,30 +746,17 @@ namespace scribo
l = do_union(lines, l, mc, parent);
// }
-// std::cout << "weird: inclusion of a txt_line in a txt_line!" << std::endl;
-
- /// Merge is perform if the current line is a
- /// petouille considered as a line.
-// if ((std::abs(lines(l).ascent() - lines(mc).ascent()) >= 5)
-// || (std::abs(lines(l).descent() - lines(mc).descent()) >= 5))
-// continue;
-
-// // FIXME: Is it valid?
-// // A text line is included in another text line.
-// // They are merged.
-// //
-// l_ = do_union(lines, mc, l, parent);
-// draw_box(billboard, lines(l_).ebbox(), l_);
-
# ifndef SCRIBO_NDEBUG
// Log:
draw_box(log, b, 126);
# endif // ! SCRIBO_NDEBUG
}
- else // FIXME: Remove! since included in a non-text-line, so not drawn, so inclusion impossible!!!!!!!!!!
+ else // FIXME: Remove! since included in a
+ // non-text-line, so not drawn, so inclusion
+ // impossible!!!!!!!!!!
{
- std::cout << "error: should NOT happen (a text line included in a NON-text-line (so not drawn!!!)" << std::endl;
+ std::cerr << "error: should NOT happen (a text line included in a NON-text-line (so not drawn!!!)" << std::endl;
++count_txtline_IN_junk;
// a non-text-line (probably a drawing or a frame) includes a text line
@@ -976,32 +945,7 @@ namespace scribo
}
-// std::cout
-// << " new txtline = " << count_new_txtline << std::endl
-// << " comp IN txtline = " << count_comp_IN_txtline << std::endl
-// << " 2 lines merge = " << count_two_lines_merge << std::endl
-// << " comp HITS txtline = " << count_comp_HITS_txtline << std::endl
-// << " txtline IN junk = " << count_txtline_IN_junk << std::endl
-// << " txtline IN txtline = " << count_txtline_IN_txtline << std::endl
-// << " WTF! = " << count_WTF << std::endl;
-
-
(void) ith_pass;
-// if (ith_pass == 1)
-// {
-// mln::io::pgm::save(log, "log_1.pgm");
-// mln::io::pgm::save(data::wrap(int_u8(), billboard), "log_1e.pgm");
-// }
-// else if (ith_pass == 2)
-// {
-// mln::io::pgm::save(log, "log_2.pgm");
-// mln::io::pgm::save(data::wrap(int_u8(), billboard), "log_2e.pgm");
-// }
-// else if (ith_pass == 3)
-// {
-// mln::io::pgm::save(log, "log_3.pgm");
-// mln::io::pgm::save(data::wrap(int_u8(), billboard), "log_3e.pgm");
-// }
}
@@ -1055,9 +999,6 @@ namespace scribo
// Sort lines by bbox.nelements() and ids.
std::sort(v.begin(), v.end(), func);
-// mln::util::timer t;
-
-
// Setting lines as text lines according to specific criterions.
for_all_lines(l, lines)
if (looks_like_a_text_line(lines(l)))
@@ -1065,13 +1006,9 @@ namespace scribo
// First pass
-// t.start();
one_merge_pass(1, input_domain, v, lines, parent);
-// float ts = t.stop();
-// std::cout << "time " << ts << std::endl;
-
-// lines.force_stats_update();
+ //lines.force_stats_update();
// Sort lines by bbox.nelements() and ids again!
// line may have grown differently since the first pass.
@@ -1079,10 +1016,7 @@ namespace scribo
// Second pass
-// t.start();
one_merge_pass(2, input_domain, v, lines, parent); // <- last pass
-// ts = t.stop();
-// std::cout << "time " << ts << std::endl;
lines.force_stats_update();
@@ -1101,15 +1035,9 @@ namespace scribo
{
using namespace mln;
-// mln::util::timer t;
-// t.start();
-
scribo::line_set<L> output
= internal::draw_boxes(lines.components().labeled_image().domain(),
lines);
-// float ts = t.stop();
-// std::cout << ts << std::endl;
-
return output;
}
--
1.7.2.5
1
0
* scribo/binarization/global_threshold_auto.hh,
* scribo/binarization/internal/niblack_formula.hh,
* scribo/binarization/niblack_threshold.hh,
* scribo/binarization/sauvola_ms.hh,
* scribo/binarization/sauvola_threshold.hh,
* scribo/core/component_set.hh,
* scribo/core/line_info.hh,
* scribo/filter/images_in_paragraph.hh,
* scribo/postprocessing/fill_object_holes.hh,
* scribo/preprocessing/deskew.hh,
* scribo/primitive/extract/internal/union.hh,
* scribo/primitive/extract/non_text.hh,
* scribo/primitive/extract/non_text_hdoc.hh,
* scribo/primitive/extract/non_text_kmean.hh,
* scribo/primitive/link/internal/find_several_links.hh,
* scribo/primitive/link/internal/link_functor_base.hh,
* scribo/primitive/link/merge_double_link_closest_aligned.hh: Here.
---
scribo/ChangeLog | 22 ++++++++++++++++++++
.../scribo/binarization/global_threshold_auto.hh | 2 +-
.../binarization/internal/niblack_formula.hh | 2 +-
scribo/scribo/binarization/niblack_threshold.hh | 2 +-
scribo/scribo/binarization/sauvola_ms.hh | 2 +-
scribo/scribo/binarization/sauvola_threshold.hh | 2 +-
scribo/scribo/core/component_set.hh | 3 +-
scribo/scribo/core/line_info.hh | 4 +-
scribo/scribo/filter/images_in_paragraph.hh | 2 +-
scribo/scribo/postprocessing/fill_object_holes.hh | 6 ++--
scribo/scribo/preprocessing/deskew.hh | 2 +-
scribo/scribo/primitive/extract/internal/union.hh | 2 +-
scribo/scribo/primitive/extract/non_text.hh | 2 +-
scribo/scribo/primitive/extract/non_text_hdoc.hh | 2 +-
scribo/scribo/primitive/extract/non_text_kmean.hh | 2 +-
.../primitive/link/internal/find_several_links.hh | 4 +-
.../primitive/link/internal/link_functor_base.hh | 2 +-
.../link/merge_double_link_closest_aligned.hh | 2 +-
18 files changed, 43 insertions(+), 22 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index b1e4665..954af2c 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,5 +1,27 @@
2013-03-20 Guillaume Lazzara <z(a)lrde.epita.fr>
+ Replace \fixme with FIXME.
+
+ * scribo/binarization/global_threshold_auto.hh,
+ * scribo/binarization/internal/niblack_formula.hh,
+ * scribo/binarization/niblack_threshold.hh,
+ * scribo/binarization/sauvola_ms.hh,
+ * scribo/binarization/sauvola_threshold.hh,
+ * scribo/core/component_set.hh,
+ * scribo/core/line_info.hh,
+ * scribo/filter/images_in_paragraph.hh,
+ * scribo/postprocessing/fill_object_holes.hh,
+ * scribo/preprocessing/deskew.hh,
+ * scribo/primitive/extract/internal/union.hh,
+ * scribo/primitive/extract/non_text.hh,
+ * scribo/primitive/extract/non_text_hdoc.hh,
+ * scribo/primitive/extract/non_text_kmean.hh,
+ * scribo/primitive/link/internal/find_several_links.hh,
+ * scribo/primitive/link/internal/link_functor_base.hh,
+ * scribo/primitive/link/merge_double_link_closest_aligned.hh: Here.
+
+2013-03-20 Guillaume Lazzara <z(a)lrde.epita.fr>
+
Fix an invalid initialization in several binarization algorithms.
* scribo/binarization/internal/local_threshold_core.hh: Fix doc.
diff --git a/scribo/scribo/binarization/global_threshold_auto.hh b/scribo/scribo/binarization/global_threshold_auto.hh
index 196ca3a..01dc8c5 100644
--- a/scribo/scribo/binarization/global_threshold_auto.hh
+++ b/scribo/scribo/binarization/global_threshold_auto.hh
@@ -31,7 +31,7 @@
///
/// Binarize a graylevel image using an automatic global threshold.
///
-/// \fixme: Adapt the filtering if no threshold is found.
+/// FIXME: Adapt the filtering if no threshold is found.
# include <mln/core/image/image1d.hh>
# include <mln/core/alias/neighb1d.hh>
diff --git a/scribo/scribo/binarization/internal/niblack_formula.hh b/scribo/scribo/binarization/internal/niblack_formula.hh
index eb57103..437950a 100644
--- a/scribo/scribo/binarization/internal/niblack_formula.hh
+++ b/scribo/scribo/binarization/internal/niblack_formula.hh
@@ -32,7 +32,7 @@
/// \brief Routines computing a threshold using Niblack's binarization
/// formula.
-// \fixme Having an unused parameter to fulfill the required interface
+// FIXME: Having an unused parameter to fulfill the required interface
// may not be the best solution...
// Setup default Niblack's formula parameters values.
diff --git a/scribo/scribo/binarization/niblack_threshold.hh b/scribo/scribo/binarization/niblack_threshold.hh
index 1bd074b..ceb9415 100644
--- a/scribo/scribo/binarization/niblack_threshold.hh
+++ b/scribo/scribo/binarization/niblack_threshold.hh
@@ -31,7 +31,7 @@
///
/// Compute an image of local threshold using Niblack algorithm.
-/// \fixme return type too restrictive!
+/// FIXME: return type too restrictive!
# include <algorithm>
# include <cmath>
diff --git a/scribo/scribo/binarization/sauvola_ms.hh b/scribo/scribo/binarization/sauvola_ms.hh
index e5a46cb..0bfd5a4 100644
--- a/scribo/scribo/binarization/sauvola_ms.hh
+++ b/scribo/scribo/binarization/sauvola_ms.hh
@@ -33,7 +33,7 @@
/// \brief Binarize an image using a multi-scale implementation of
/// Sauvola's algoritm.
///
-/// \fixme Use the integral image for successive subsampling.
+/// FIXME: Use the integral image for successive subsampling.
# include <mln/core/alias/neighb2d.hh>
diff --git a/scribo/scribo/binarization/sauvola_threshold.hh b/scribo/scribo/binarization/sauvola_threshold.hh
index ad6a5a9..c9ea3f3 100644
--- a/scribo/scribo/binarization/sauvola_threshold.hh
+++ b/scribo/scribo/binarization/sauvola_threshold.hh
@@ -31,7 +31,7 @@
///
/// Compute an image of local threshold using Sauvola algorithm.
-/// \fixme return type too restrictive!
+/// FIXME: return type too restrictive!
# include <algorithm>
# include <cmath>
diff --git a/scribo/scribo/core/component_set.hh b/scribo/scribo/core/component_set.hh
index 8c3e83f..32eb636 100644
--- a/scribo/scribo/core/component_set.hh
+++ b/scribo/scribo/core/component_set.hh
@@ -31,10 +31,9 @@
///
/// \brief Definition of a component set.
///
-/// \fixme component_set should always set a component type in order
+/// FIXME: component_set should always set a component type in order
/// to be fully supported by visitors.
-
# include <mln/core/concept/site_set.hh>
# include <mln/core/concept/function.hh>
diff --git a/scribo/scribo/core/line_info.hh b/scribo/scribo/core/line_info.hh
index 59ce1d3..bdbc18b 100644
--- a/scribo/scribo/core/line_info.hh
+++ b/scribo/scribo/core/line_info.hh
@@ -31,10 +31,10 @@
///
/// \brief Line information data structure.
///
-/// \fixme The meanline should not be stored! The user can deduce it
+/// FIXME: The meanline should not be stored! The user can deduce it
/// from the x_height and the baseline.
///
-/// \fixme The way the meanline and the baseline are computed is not
+/// FIXME: The way the meanline and the baseline are computed is not
/// optimal and does not work if the components are too high (because
/// of the median accumulator and int_u12 overflows).
diff --git a/scribo/scribo/filter/images_in_paragraph.hh b/scribo/scribo/filter/images_in_paragraph.hh
index 5fc340b..45e5fc4 100644
--- a/scribo/scribo/filter/images_in_paragraph.hh
+++ b/scribo/scribo/filter/images_in_paragraph.hh
@@ -29,7 +29,7 @@
/// \file
///
/// Invalidate false positive images.
-/// \fixme Share same test canvas as text::merging.
+/// FIXME: Share same test canvas as text::merging.
# include <mln/core/concept/image.hh>
diff --git a/scribo/scribo/postprocessing/fill_object_holes.hh b/scribo/scribo/postprocessing/fill_object_holes.hh
index 037874d..636b929 100644
--- a/scribo/scribo/postprocessing/fill_object_holes.hh
+++ b/scribo/scribo/postprocessing/fill_object_holes.hh
@@ -30,9 +30,9 @@
///
/// \brief Fill-in object small holes.
-/// \FIXME share code with filter/object_groups_with_holes.hh
-/// \FIXME Merge the two following routines.
-/// \FIXME Use a size ratio in both overloads.
+/// FIXME: share code with filter/object_groups_with_holes.hh
+/// FIXME: Merge the two following routines.
+/// FIXME: Use a size ratio in both overloads.
# include <sstream>
diff --git a/scribo/scribo/preprocessing/deskew.hh b/scribo/scribo/preprocessing/deskew.hh
index 284bd0e..555bad7 100644
--- a/scribo/scribo/preprocessing/deskew.hh
+++ b/scribo/scribo/preprocessing/deskew.hh
@@ -30,7 +30,7 @@
///
/// Deskew an image.
-/// \FIXME: provide a version for binary images.
+/// FIXME: provide a version for binary images.
# include <queue>
diff --git a/scribo/scribo/primitive/extract/internal/union.hh b/scribo/scribo/primitive/extract/internal/union.hh
index 89687d6..660652f 100644
--- a/scribo/scribo/primitive/extract/internal/union.hh
+++ b/scribo/scribo/primitive/extract/internal/union.hh
@@ -27,7 +27,7 @@
///
/// \brief Various utilities for image extraction
///
-/// \fixme To be cleanup
+/// FIXME: To be cleanup
#ifndef SCRIBO_PRIMITIVE_EXTRACT_INTERNAL_UNION_HH
# define SCRIBO_PRIMITIVE_EXTRACT_INTERNAL_UNION_HH
diff --git a/scribo/scribo/primitive/extract/non_text.hh b/scribo/scribo/primitive/extract/non_text.hh
index fe81a46..e2ebbd7 100644
--- a/scribo/scribo/primitive/extract/non_text.hh
+++ b/scribo/scribo/primitive/extract/non_text.hh
@@ -28,7 +28,7 @@
///
/// \brief Find in a document non text which are not text.
///
-/// \fixme To be optimized!
+/// FIXME: To be optimized!
#ifndef SCRIBO_PRIMITIVE_EXTRACT_NON_TEXT_HH
# define SCRIBO_PRIMITIVE_EXTRACT_NON_TEXT_HH
diff --git a/scribo/scribo/primitive/extract/non_text_hdoc.hh b/scribo/scribo/primitive/extract/non_text_hdoc.hh
index e506b4b..9de95d3 100644
--- a/scribo/scribo/primitive/extract/non_text_hdoc.hh
+++ b/scribo/scribo/primitive/extract/non_text_hdoc.hh
@@ -28,7 +28,7 @@
///
/// \brief Find in a document non text which are not text.
///
-/// \fixme To be optimized!
+/// FIXME: To be optimized!
#ifndef SCRIBO_PRIMITIVE_EXTRACT_NON_TEXT_HDOC_HH
# define SCRIBO_PRIMITIVE_EXTRACT_NON_TEXT_HDOC_HH
diff --git a/scribo/scribo/primitive/extract/non_text_kmean.hh b/scribo/scribo/primitive/extract/non_text_kmean.hh
index 716e772..55b9a7b 100644
--- a/scribo/scribo/primitive/extract/non_text_kmean.hh
+++ b/scribo/scribo/primitive/extract/non_text_kmean.hh
@@ -28,7 +28,7 @@
///
/// \brief Find in a document non text which are not text.
///
-/// \fixme To be optimized!
+/// FIXME: To be optimized!
#ifndef SCRIBO_PRIMITIVE_EXTRACT_NON_TEXT_KMEAN_HH
# define SCRIBO_PRIMITIVE_EXTRACT_NON_TEXT_KMEAN_HH
diff --git a/scribo/scribo/primitive/link/internal/find_several_links.hh b/scribo/scribo/primitive/link/internal/find_several_links.hh
index 2d4a663..74d3b18 100644
--- a/scribo/scribo/primitive/link/internal/find_several_links.hh
+++ b/scribo/scribo/primitive/link/internal/find_several_links.hh
@@ -31,7 +31,7 @@
///
/// Find the neighbor of a line of text if exists.
///
-/// \fixme do not iterate over the number of anchor types but use a
+/// FIXME: do not iterate over the number of anchor types but use a
/// set of anchors specified in the functor.
# include <mln/core/concept/image.hh>
@@ -93,7 +93,7 @@ namespace scribo
for_all_anchors(a, functor.anchors()) // <-- nanchor && anchors
{
- // FIXME : See fixme at the beginning of this file.
+ // FIXME:: See fixme at the beginning of this file.
anchor::Type anchor = functor.anchors()[a];
mln_site(scribo_support_(F))
diff --git a/scribo/scribo/primitive/link/internal/link_functor_base.hh b/scribo/scribo/primitive/link/internal/link_functor_base.hh
index a509126..e63096f 100644
--- a/scribo/scribo/primitive/link/internal/link_functor_base.hh
+++ b/scribo/scribo/primitive/link/internal/link_functor_base.hh
@@ -31,7 +31,7 @@
///
/// Base class for link functors.
///
-/// \fixme type used for 'current_object' argument should be of type
+/// FIXME: type used for 'current_object' argument should be of type
/// mln_value(L)
# include <mln/core/concept/image.hh>
diff --git a/scribo/scribo/primitive/link/merge_double_link_closest_aligned.hh b/scribo/scribo/primitive/link/merge_double_link_closest_aligned.hh
index e3221c1..d981672 100644
--- a/scribo/scribo/primitive/link/merge_double_link_closest_aligned.hh
+++ b/scribo/scribo/primitive/link/merge_double_link_closest_aligned.hh
@@ -91,7 +91,7 @@ namespace scribo
for_all_links(l, output)
if (right(l) != l)
{
- //FIXME Handle the case when a component is included in another one ?
+ //FIXME: Handle the case when a component is included in another one ?
// Update distance
align_data(l).first()
--
1.7.2.5
1
0
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 unstable/scribo has been updated
via 9a540a39c053b5a730edb6ccff5d9871bdfa1274 (commit)
via c621ab07ea277fd211c6905aa581918891ba2174 (commit)
via 7c5e9ccb89f6f8b2d9ca6a2531386aef2201bd1a (commit)
via b6f55689cb59716f61c6331c3e3483185c42a410 (commit)
via 28448a695a1c10a090f7d03c395fdf203fe6cb7e (commit)
via ce984130f0fcb7959a6b62dd0f1e819e5d66728e (commit)
via 357035117860ee79ae50a628f4e91e496905e6fc (commit)
via 4b986216fbc85d5f86db7b55a85a28a9d25608f2 (commit)
via 1995b37c1c05412c38ae84ba0528e5510d379409 (commit)
via e45787c19b8816a54b4a57f514eae3a7c0a5a219 (commit)
via 3164abc5750dc9dbf92c86a4b6d006a26126c8ec (commit)
via e435b9ba61dddbb786e339dbef3d593316c0d3e8 (commit)
via d48b8a4ae1e70487c3d8cd3370090e8ab132eb98 (commit)
via 24d3d373e86a8db51b64e2b2ff640cbec1486455 (commit)
from 153144dc8928d799662d0398a48e06eec842a8ed (commit)
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 -----------------------------------------------------------------
9a540a3 Fix an invalid initialization in several binarization algorithms.
c621ab0 scribo/debug/links_image.hh: Make use of object_link interface.
7c5e9cc Merge branch 'exp/trace' into unstable/scribo
b6f5568 demo/xml2doc/main.cc: Kill warnings.
28448a6 tests/trait/op/plus.cc: Kill warnings.
ce98413 mln/io/magick/internal/init_magick.hh: Add a missing inline.
3570351 Make fld tests write in different files.
-----------------------------------------------------------------------
Summary of changes:
milena/ChangeLog | 443 ++++++++++++++
milena/doc/benchmark/canvas.cc | 6 +-
.../examples/split/tuto3_first_routine-1.cc.raw | 3 +-
.../examples/split/tuto3_first_routine-3.cc.raw | 2 +-
.../examples/split/tuto3_first_routine-8.cc.raw | 1 -
milena/doc/examples/split/tuto3_trace-1.cc.raw | 2 +-
milena/doc/examples/split/tuto3_trace-2.cc.raw | 2 +-
milena/doc/examples/trash/tuto_bis.cc | 3 +-
milena/doc/examples/tuto3/first_routine.cc | 6 +-
milena/doc/examples/tuto3/trace.cc | 6 +-
milena/doc/outputs/accu-right-instantiation.txt | 2 +
milena/doc/outputs/borderthickness.txt | 2 +
milena/doc/outputs/estim-sites.txt | 2 +
milena/doc/outputs/extend.txt | 31 +
milena/doc/outputs/fill-call-1.txt | 8 +
milena/doc/outputs/fill-imageif-cfun.txt | 10 +
milena/doc/outputs/fill-part-image.txt | 18 +
milena/doc/outputs/fill-subdomain-shorter.txt | 20 +
milena/doc/outputs/fill-subdomain.txt | 41 ++
milena/doc/outputs/fill.txt | 4 +
milena/doc/outputs/ima-load.txt | 1 +
milena/doc/outputs/ima-save.txt | 1 +
milena/doc/outputs/ima2d-6-clone.txt | 7 +
milena/doc/outputs/ima2d-7.txt | 6 +
milena/doc/outputs/ima2d-rot.txt | 32 +
milena/doc/outputs/labeling-compute.txt | 19 +
milena/doc/outputs/logical-not.txt | 10 +
milena/doc/outputs/paste-call-1.txt | 15 +
milena/doc/outputs/split/tuto3_println-1.txt | 11 +
milena/doc/outputs/split/tuto3_println-2.txt | 7 +
milena/doc/outputs/tuto2_first_image.txt | 7 +
milena/doc/outputs/tuto3_colorize.txt | 7 +
milena/doc/outputs/tuto3_first_routine.txt | 48 ++
milena/doc/outputs/tuto3_println.txt | 18 +
milena/doc/outputs/tuto3_rw_image.txt | 24 +
.../outputs/tuto4_genericity_and_algorithms.txt | 83 +++
milena/mln/accu/compute.hh | 9 +-
milena/mln/accu/image/init.hh | 9 +-
milena/mln/accu/image/set_value.hh | 18 +-
milena/mln/accu/image/take.hh | 18 +-
milena/mln/accu/image/take_as_init.hh | 18 +-
milena/mln/accu/image/take_n_times.hh | 18 +-
milena/mln/accu/image/to_result.hh | 9 +-
milena/mln/accu/image/untake.hh | 18 +-
milena/mln/accu/stat/histo3d_rgb.hh | 13 +-
milena/mln/accu/transform.hh | 12 +-
milena/mln/accu/transform_diagonal.hh | 6 +-
milena/mln/accu/transform_directional.hh | 6 +-
milena/mln/accu/transform_line.hh | 15 +-
milena/mln/accu/transform_snake.hh | 6 +-
milena/mln/accu/transform_stop.hh | 12 +-
milena/mln/all.hh | 2 +-
milena/mln/arith/diff_abs.hh | 3 +-
milena/mln/arith/div.hh | 18 +-
milena/mln/arith/div.spe.hh | 6 +-
milena/mln/arith/min.hh | 16 +-
milena/mln/arith/min.spe.hh | 6 +-
milena/mln/arith/minus.hh | 33 +-
milena/mln/arith/plus.hh | 36 +-
milena/mln/arith/revert.hh | 9 +-
milena/mln/arith/revert.spe.hh | 8 +-
milena/mln/arith/times.hh | 18 +-
milena/mln/arith/times.spe.hh | 6 +-
milena/mln/binarization/binarization.hh | 6 +-
milena/mln/binarization/threshold.hh | 3 +-
milena/mln/border/adjust.hh | 3 +-
milena/mln/border/duplicate.hh | 12 +-
milena/mln/border/equalize.hh | 6 +-
milena/mln/border/fill.hh | 9 +-
milena/mln/border/find.hh | 3 +-
milena/mln/border/get.hh | 9 +-
milena/mln/border/mirror.hh | 15 +-
milena/mln/border/resize.hh | 3 +-
milena/mln/border/resize_equal.hh | 3 +-
milena/mln/canvas/browsing/backdiagonal2d.hh | 3 +-
milena/mln/canvas/browsing/diagonal2d.hh | 3 +-
.../canvas/browsing/dir_struct_elt_incr_update.hh | 3 +-
milena/mln/canvas/browsing/directional.hh | 3 +-
milena/mln/canvas/browsing/fwd.hh | 3 +-
milena/mln/canvas/browsing/hyper_directional.hh | 3 +-
.../canvas/browsing/internal/graph_first_search.hh | 3 +-
milena/mln/canvas/browsing/snake_fwd.hh | 3 +-
milena/mln/canvas/browsing/snake_generic.hh | 3 +-
milena/mln/canvas/browsing/snake_vert.hh | 3 +-
milena/mln/canvas/distance_front.hh | 9 +-
milena/mln/canvas/distance_geodesic.hh | 9 +-
milena/mln/canvas/labeling/blobs.hh | 7 +-
milena/mln/canvas/labeling/generic.hh | 9 +-
milena/mln/canvas/labeling/sorted.hh | 8 +-
milena/mln/canvas/labeling/video.hh | 10 +-
milena/mln/canvas/morpho/attribute_filter.hh | 6 +-
milena/mln/clustering/kmean_rgb.hh | 61 +--
milena/mln/convert/to.hh | 7 +-
milena/mln/convert/to_qimage.hh | 3 +-
milena/mln/convert/to_qimage_nocopy.hh | 3 +-
milena/mln/core/concept/object.hh | 4 +-
milena/mln/core/routine/duplicate.hh | 3 +-
milena/mln/core/routine/initialize.hh | 7 +-
milena/mln/data/abs.hh | 6 +-
milena/mln/data/apply.hh | 6 +-
milena/mln/data/apply.spe.hh | 3 +-
milena/mln/data/approx/median.hh | 6 +-
milena/mln/data/compare.hh | 9 +-
milena/mln/data/compute.hh | 3 +-
milena/mln/data/compute_in_window.hh | 9 +-
milena/mln/data/convert.hh | 9 +-
milena/mln/data/fill.hh | 3 +-
milena/mln/data/fill_with_image.hh | 6 +-
milena/mln/data/fill_with_image.spe.hh | 12 +-
milena/mln/data/fill_with_value.hh | 6 +-
milena/mln/data/fill_with_value.spe.hh | 9 +-
milena/mln/data/median.hh | 9 +-
milena/mln/data/memcpy_.hh | 6 +-
milena/mln/data/memset_.hh | 9 +-
milena/mln/data/paste.hh | 6 +-
milena/mln/data/paste.spe.hh | 12 +-
milena/mln/data/paste_without_localization.hh | 15 +-
milena/mln/data/replace.hh | 6 +-
milena/mln/data/saturate.hh | 9 +-
milena/mln/data/sort_offsets.hh | 18 +-
milena/mln/data/split.hh | 3 +-
milena/mln/data/stretch.hh | 12 +-
milena/mln/data/to_enc.hh | 3 +-
milena/mln/data/transform.hh | 12 +-
milena/mln/data/transform.spe.hh | 24 +-
milena/mln/data/transform_inplace.hh | 30 +-
milena/mln/data/update.hh | 9 +-
milena/mln/data/wrap.hh | 3 +-
milena/mln/debug/draw_graph.hh | 12 +-
milena/mln/debug/iota.hh | 3 +-
milena/mln/debug/mosaic.hh | 3 +-
milena/mln/debug/println.hh | 3 +-
milena/mln/debug/put_word.hh | 4 +-
milena/mln/debug/slices_2d.hh | 6 +-
milena/mln/debug/superpose.hh | 3 +-
milena/mln/debug/trace.hh | 218 +++++++
milena/mln/debug/z_order.hh | 3 +-
milena/mln/draw/dashed_line.hh | 8 +-
milena/mln/draw/line.hh | 8 +-
milena/mln/essential/routine.hh | 5 +-
milena/mln/extension/adjust.hh | 12 +-
milena/mln/extension/adjust_duplicate.hh | 12 +-
milena/mln/extension/adjust_fill.hh | 12 +-
milena/mln/extension/duplicate.hh | 3 +-
milena/mln/extension/fill.hh | 3 +-
milena/mln/fun/x2x/composed.hh | 3 +-
milena/mln/geom/chamfer.hh | 3 +-
milena/mln/geom/crop.hh | 3 +-
milena/mln/geom/crop_without_localization.hh | 3 +-
milena/mln/geom/horizontal_symmetry.hh | 3 +-
milena/mln/geom/max_ind.hh | 3 +-
milena/mln/geom/min_ind.hh | 3 +-
milena/mln/geom/ninds.hh | 3 +-
milena/mln/geom/nsites.hh | 3 +-
milena/mln/geom/rotate.hh | 6 +-
milena/mln/geom/seeds2tiling.hh | 6 +-
milena/mln/geom/seeds2tiling_roundness.hh | 6 +-
milena/mln/geom/translate.hh | 3 +-
milena/mln/geom/vertical_symmetry.hh | 3 +-
milena/mln/graph/compute.hh | 3 +-
milena/mln/graph/labeling.hh | 3 +-
milena/mln/graph/to_neighb.hh | 3 +-
milena/mln/graph/to_win.hh | 3 +-
milena/mln/histo/compute.hh | 3 +-
milena/mln/histo/equalize.hh | 3 +-
milena/mln/io/cloud/load.hh | 3 +-
milena/mln/io/cloud/save.hh | 3 +-
milena/mln/io/dicom/get_header.hh | 3 +-
milena/mln/io/dicom/load.hh | 9 +-
milena/mln/io/dump/get_header.hh | 3 +-
milena/mln/io/dump/load.hh | 3 +-
milena/mln/io/dump/save.hh | 3 +-
milena/mln/io/fits/load.hh | 3 +-
milena/mln/io/fld/load.hh | 3 +-
milena/mln/io/fld/save.hh | 3 +-
milena/mln/io/magick/internal/init_magick.hh | 1 +
milena/mln/io/magick/load.hh | 4 +-
milena/mln/io/magick/save.hh | 10 +-
milena/mln/io/off/load.hh | 9 +-
milena/mln/io/off/save.hh | 12 +-
milena/mln/io/pbm/load.hh | 3 +-
milena/mln/io/pbm/save.hh | 3 +-
milena/mln/io/pbms/load.hh | 3 +-
milena/mln/io/pdf/get_header.hh | 3 +-
milena/mln/io/pdf/load.hh | 9 +-
milena/mln/io/pfm/load.hh | 3 +-
milena/mln/io/pfm/save.hh | 3 +-
milena/mln/io/pgm/load.hh | 6 +-
milena/mln/io/pgm/save.hh | 3 +-
milena/mln/io/pgms/load.hh | 3 +-
milena/mln/io/plot/load.hh | 3 +-
milena/mln/io/plot/save.hh | 9 +-
milena/mln/io/pnm/load.hh | 6 +-
milena/mln/io/pnm/save.hh | 3 +-
milena/mln/io/pnms/load.hh | 6 +-
milena/mln/io/ppm/load.hh | 6 +-
milena/mln/io/ppms/load.hh | 3 +-
milena/mln/io/raw/get_header.hh | 3 +-
milena/mln/io/raw/load.hh | 3 +-
milena/mln/io/raw/save.hh | 3 +-
milena/mln/io/svg/simple_svg_1.0.0.hh | 642 ++++++++++++++++++++
milena/mln/io/tiff/load.hh | 3 +-
milena/mln/io/txt/save.hh | 3 +-
milena/mln/labeling/background.hh | 3 +-
milena/mln/labeling/blobs.hh | 3 +-
milena/mln/labeling/blobs_and_compute.hh | 3 +-
milena/mln/labeling/colorize.hh | 8 +-
milena/mln/labeling/compute.hh | 30 +-
milena/mln/labeling/compute_image.hh | 9 +-
milena/mln/labeling/fill_holes.hh | 3 +-
milena/mln/labeling/flat_zones.hh | 3 +-
milena/mln/labeling/foreground.hh | 3 +-
milena/mln/labeling/mean_values.hh | 9 +-
milena/mln/labeling/n_max.hh | 3 +-
milena/mln/labeling/pack.hh | 6 +-
milena/mln/labeling/regional_maxima.hh | 3 +-
milena/mln/labeling/regional_minima.hh | 3 +-
milena/mln/labeling/relabel.hh | 12 +-
milena/mln/labeling/superpose.hh | 3 +-
milena/mln/labeling/value.hh | 3 +-
milena/mln/labeling/value.spe.hh | 3 +-
milena/mln/labeling/value_and_compute.hh | 3 +-
milena/mln/labeling/wrap.hh | 3 +-
milena/mln/linear/convolve.hh | 9 +-
milena/mln/linear/convolve_2x1d.hh | 3 +-
milena/mln/linear/convolve_directional.hh | 3 +-
milena/mln/linear/gaussian_1d.hh | 3 +-
milena/mln/linear/gaussian_directional_2d.hh | 3 +-
milena/mln/linear/lap.hh | 12 +-
milena/mln/linear/log.hh | 11 +-
milena/mln/linear/sobel_2d.hh | 12 +-
milena/mln/logical/and.hh | 6 +-
milena/mln/logical/and_not.hh | 6 +-
milena/mln/logical/not.hh | 6 +-
milena/mln/logical/not.spe.hh | 6 +-
milena/mln/logical/or.hh | 6 +-
milena/mln/logical/xor.hh | 6 +-
milena/mln/make/dual_neighb.hh | 3 +-
milena/mln/make/dummy_p_edges.hh | 3 +-
milena/mln/make/dummy_p_vertices.hh | 3 +-
milena/mln/make/edge_image.hh | 18 +-
milena/mln/make/influence_zone_adjacency_graph.hh | 6 +-
milena/mln/make/p_edges_with_mass_centers.hh | 3 +-
milena/mln/make/p_vertices_with_mass_centers.hh | 3 +-
milena/mln/make/rag_and_labeled_wsl.hh | 6 +-
milena/mln/make/region_adjacency_graph.hh | 6 +-
milena/mln/make/relabelfun.hh | 6 +-
milena/mln/make/vertex_image.hh | 6 +-
milena/mln/make/w_window.hh | 3 +-
milena/mln/morpho/algebraic_filter.hh | 3 +-
milena/mln/morpho/approx/dilation.hh | 9 +-
milena/mln/morpho/approx/erosion.hh | 9 +-
milena/mln/morpho/closing/algebraic.hh | 3 +-
milena/mln/morpho/closing/approx/structural.hh | 3 +-
milena/mln/morpho/closing/area.hh | 3 +-
milena/mln/morpho/closing/area_on_vertices.hh | 3 +-
milena/mln/morpho/closing/height.hh | 3 +-
milena/mln/morpho/closing/leveling.hh | 3 +-
milena/mln/morpho/closing/structural.hh | 3 +-
milena/mln/morpho/closing/sum.hh | 3 +-
milena/mln/morpho/closing/volume.hh | 3 +-
milena/mln/morpho/complementation.hh | 6 +-
milena/mln/morpho/contrast.hh | 3 +-
milena/mln/morpho/dilation.hh | 9 +-
milena/mln/morpho/elementary/closing.hh | 3 +-
milena/mln/morpho/elementary/dilation.hh | 3 +-
milena/mln/morpho/elementary/erosion.hh | 3 +-
milena/mln/morpho/elementary/gradient.hh | 12 +-
milena/mln/morpho/elementary/gradient_external.hh | 3 +-
milena/mln/morpho/elementary/gradient_internal.hh | 3 +-
milena/mln/morpho/elementary/laplacian.hh | 3 +-
milena/mln/morpho/elementary/like_ero_fun.hh | 6 +-
milena/mln/morpho/elementary/like_ero_set.hh | 6 +-
milena/mln/morpho/elementary/opening.hh | 3 +-
milena/mln/morpho/elementary/top_hat.hh | 9 +-
milena/mln/morpho/erosion.hh | 9 +-
milena/mln/morpho/general.hh | 9 +-
milena/mln/morpho/general.spe.hh | 21 +-
milena/mln/morpho/gradient.hh | 9 +-
milena/mln/morpho/hit_or_miss.hh | 21 +-
milena/mln/morpho/laplacian.hh | 6 +-
milena/mln/morpho/leveling_filter.hh | 3 +-
milena/mln/morpho/line_gradient.hh | 3 +-
milena/mln/morpho/meyer_wst.hh | 3 +-
milena/mln/morpho/min.hh | 6 +-
milena/mln/morpho/minus.hh | 3 +-
milena/mln/morpho/opening/algebraic.hh | 3 +-
milena/mln/morpho/opening/approx/structural.hh | 3 +-
milena/mln/morpho/opening/area.hh | 3 +-
milena/mln/morpho/opening/area_on_vertices.hh | 3 +-
milena/mln/morpho/opening/height.hh | 3 +-
milena/mln/morpho/opening/leveling.hh | 3 +-
milena/mln/morpho/opening/structural.hh | 3 +-
milena/mln/morpho/opening/volume.hh | 3 +-
milena/mln/morpho/plus.hh | 3 +-
milena/mln/morpho/rank_filter.hh | 12 +-
.../reconstruction/by_dilation/union_find.hh | 6 +-
.../morpho/reconstruction/by_erosion/union_find.hh | 6 +-
milena/mln/morpho/skeleton_constrained.hh | 9 +-
milena/mln/morpho/thick_miss.hh | 3 +-
milena/mln/morpho/thickening.hh | 3 +-
milena/mln/morpho/thin_fit.hh | 3 +-
milena/mln/morpho/thinning.hh | 3 +-
milena/mln/morpho/top_hat.hh | 9 +-
milena/mln/morpho/tree/component_tree.hh | 6 +-
milena/mln/morpho/tree/compute_attribute_image.hh | 6 +-
milena/mln/morpho/tree/compute_parent.hh | 6 +-
milena/mln/morpho/tree/dual_input_tree.hh | 3 +-
milena/mln/morpho/tree/filter/direct.hh | 3 +-
milena/mln/morpho/tree/filter/filter.hh | 3 +-
milena/mln/morpho/tree/filter/max.hh | 3 +-
milena/mln/morpho/tree/filter/min.hh | 3 +-
milena/mln/morpho/tree/filter/subtractive.hh | 3 +-
milena/mln/morpho/tree/impl/dual_hqueue.hh | 3 +-
milena/mln/morpho/tree/impl/dual_union_find.hh | 3 +-
milena/mln/morpho/tree/max.hh | 3 +-
milena/mln/morpho/watershed/flooding.hh | 9 +-
milena/mln/morpho/watershed/superpose.hh | 3 +-
milena/mln/opt/at.hh | 5 +-
milena/mln/registration/icp.hh | 3 +-
milena/mln/set/card.hh | 9 +-
milena/mln/set/compute.hh | 9 +-
milena/mln/set/compute_with_weights.hh | 15 +-
milena/mln/set/diff.hh | 3 +-
milena/mln/set/get.hh | 3 +-
milena/mln/set/has.hh | 3 +-
milena/mln/set/inter.hh | 3 +-
milena/mln/set/sym_diff.hh | 3 +-
milena/mln/set/uni.hh | 3 +-
milena/mln/set/unique.hh | 3 +-
milena/mln/subsampling/antialiased.hh | 13 +-
milena/mln/test/positive.hh | 3 +-
milena/mln/test/predicate.hh | 9 +-
milena/mln/topo/skeleton/crest.hh | 9 +-
milena/mln/trace/all.hh | 52 --
milena/mln/trace/entering.hh | 89 ---
milena/mln/trace/essential.hh | 36 --
milena/mln/trace/exiting.hh | 118 ----
milena/mln/trace/quiet.hh | 84 ---
milena/mln/trace/resume.hh | 60 --
milena/mln/trace/stop.hh | 63 --
milena/mln/trace/warning.hh | 64 --
.../distance_and_closest_point_geodesic.hh | 6 +-
.../distance_and_influence_zone_geodesic.hh | 3 +-
milena/mln/transform/distance_front.hh | 3 +-
milena/mln/transform/distance_geodesic.hh | 3 +-
milena/mln/transform/hough.hh | 3 +-
milena/mln/transform/influence_zone_front.hh | 3 +-
milena/mln/transform/influence_zone_geodesic.hh | 6 +-
.../transform/influence_zone_geodesic_saturated.hh | 3 +-
milena/mln/upscaling/art/scale2x.hh | 3 +-
milena/mln/upscaling/art/scale3x.hh | 3 +-
milena/mln/util/tree_fast_to_image.hh | 6 +-
milena/mln/util/tree_to_fast.hh | 8 +-
milena/mln/util/tree_to_image.hh | 21 +-
milena/mln/win/diff.hh | 3 +-
milena/mln/win/inter.hh | 3 +-
milena/mln/win/shift.hh | 3 +-
milena/mln/win/sym.hh | 6 +-
milena/mln/world/binary_2d/enlarge.hh | 3 +-
milena/mln/world/binary_2d/subsample.hh | 4 +-
milena/mln/world/inter_pixel/compute.hh | 3 +-
.../mln/world/inter_pixel/dim2/make_edge_image.hh | 3 +-
milena/mln/world/inter_pixel/full2image.hh | 3 +-
milena/mln/world/inter_pixel/immerse.hh | 3 +-
milena/mln/world/rgb/invert.hh | 9 +-
milena/mln/world/rgb/invert.spe.hh | 9 +-
milena/tests/arith/diff_abs.cc | 2 +-
milena/tests/arith/minus.cc | 2 +-
milena/tests/arith/plus.cc | 4 +-
milena/tests/arith/revert.cc | 2 +-
milena/tests/arith/times.cc | 2 +-
milena/tests/data/fill_with_image.cc | 4 +-
milena/tests/data/paste.cc | 4 +-
milena/tests/geom/nsites.cc | 2 +-
milena/tests/io/fld/fld1d.cc | 9 +-
milena/tests/io/fld/fld2d.cc | 21 +-
milena/tests/io/fld/fld3d.cc | 9 +-
milena/tests/linear/gaussian.cc | 6 +-
milena/tests/morpho/closing/algebraic.cc | 2 +-
milena/tests/morpho/elementary/closing.cc | 2 +-
milena/tests/morpho/elementary/dilation.cc | 2 +-
milena/tests/morpho/elementary/erosion.cc | 2 +-
milena/tests/morpho/elementary/opening.cc | 2 +-
milena/tests/morpho/elementary/top_hat.cc | 2 +-
milena/tests/morpho/general.cc | 4 +-
milena/tests/morpho/opening/algebraic.cc | 2 +-
milena/tests/morpho/top_hat.cc | 2 +-
milena/tests/opt/at.cc | 4 +-
milena/tests/opt/element.cc | 4 +-
milena/tests/opt/value.cc | 5 +-
milena/tests/trait/op/plus.cc | 6 +-
milena/tests/unit_test/unit-tests.mk | 8 -
scribo/ChangeLog | 331 ++++++++++
scribo/demo/xml2doc/main.cc | 23 +-
scribo/scribo/binarization/global_threshold.hh | 3 +-
.../scribo/binarization/global_threshold_auto.hh | 3 +-
.../binarization/internal/local_threshold_core.hh | 19 +-
.../binarization/internal/niblack_functor.hh | 14 +-
.../binarization/internal/niblack_functor_fast.hh | 12 +
.../internal/niblack_threshold_functor.hh | 12 +-
.../binarization/internal/sauvola_functor.hh | 18 +
.../binarization/internal/sauvola_ms_functor.hh | 18 +-
.../internal/sauvola_threshold_functor.hh | 16 +-
.../scribo/binarization/internal/singh_functor.hh | 12 +
.../scribo/binarization/internal/wolf_functor.hh | 17 +-
.../binarization/internal/wolf_functor_fast.hh | 15 +
scribo/scribo/binarization/kim.hh | 3 +-
scribo/scribo/binarization/local_threshold.hh | 9 +-
scribo/scribo/binarization/niblack.hh | 3 +-
scribo/scribo/binarization/niblack_fast.hh | 3 +-
scribo/scribo/binarization/niblack_threshold.hh | 3 +-
scribo/scribo/binarization/otsu.hh | 2 +-
scribo/scribo/binarization/otsu_threshold.hh | 3 +-
scribo/scribo/binarization/sauvola.hh | 3 +-
scribo/scribo/binarization/sauvola_ms.hh | 9 +-
scribo/scribo/binarization/sauvola_ms_split.hh | 3 +-
scribo/scribo/binarization/sauvola_threshold.hh | 3 +-
scribo/scribo/binarization/singh.hh | 3 +-
scribo/scribo/binarization/wolf.hh | 10 +-
scribo/scribo/binarization/wolf_fast.hh | 7 +-
scribo/scribo/canvas/integral_browsing.hh | 14 +-
scribo/scribo/convert/from_base64.hh | 9 +-
scribo/scribo/convert/to_base64.hh | 3 +-
scribo/scribo/core/central_sites.hh | 3 +-
scribo/scribo/core/erase_objects.hh | 3 +-
scribo/scribo/core/init_integral_image.hh | 3 +-
scribo/scribo/debug/alignment_decision_image.hh | 3 +-
scribo/scribo/debug/bboxes_enlarged_image.hh | 3 +-
scribo/scribo/debug/bboxes_image.hh | 9 +-
scribo/scribo/debug/char_space_image.hh | 3 +-
scribo/scribo/debug/decision_image.hh | 6 +-
scribo/scribo/debug/highlight_text_area.hh | 12 +-
scribo/scribo/debug/line_info_image.hh | 3 +-
scribo/scribo/debug/linked_bboxes_image.hh | 9 +-
scribo/scribo/debug/links_decision_image.hh | 3 +-
scribo/scribo/debug/links_image.hh | 8 +-
.../scribo/debug/looks_like_a_text_line_image.hh | 3 +-
scribo/scribo/debug/mean_and_base_lines_image.hh | 3 +-
scribo/scribo/debug/save_comp_diff.hh | 3 +-
scribo/scribo/debug/save_label_image.hh | 3 +-
scribo/scribo/debug/save_table_image.hh | 6 +-
scribo/scribo/debug/text_areas_image.hh | 3 +-
scribo/scribo/draw/bounding_box_links.hh | 9 +-
scribo/scribo/draw/bounding_boxes.hh | 6 +-
scribo/scribo/draw/groups_bboxes.hh | 3 +-
scribo/scribo/draw/line_components.hh | 3 +-
scribo/scribo/estim/components_features.hh | 3 +-
scribo/scribo/estim/font_boldness.hh | 12 +-
scribo/scribo/estim/font_color.hh | 9 +-
scribo/scribo/estim/internal/compute_skeleton.hh | 3 +-
scribo/scribo/estim/object_groups_mean_width.hh | 3 +-
scribo/scribo/filter/common/objects_photo.hh | 3 +-
scribo/scribo/filter/images_in_paragraph.hh | 3 +-
scribo/scribo/filter/internal/alignment_angle.hh | 11 +-
scribo/scribo/filter/internal/component_aligned.hh | 3 +-
scribo/scribo/filter/internal/compute.hh | 6 +-
scribo/scribo/filter/object_groups_mean_width.hh | 3 +-
scribo/scribo/filter/object_groups_size_ratio.hh | 3 +-
scribo/scribo/filter/object_groups_small.hh | 3 +-
scribo/scribo/filter/object_groups_with_holes.hh | 7 +-
scribo/scribo/filter/object_links_aligned.hh | 3 +-
scribo/scribo/filter/object_links_bbox_h_ratio.hh | 3 +-
scribo/scribo/filter/object_links_bbox_overlap.hh | 3 +-
scribo/scribo/filter/object_links_bbox_ratio.hh | 3 +-
scribo/scribo/filter/object_links_bbox_w_ratio.hh | 3 +-
.../scribo/filter/object_links_bottom_aligned.hh | 3 +-
.../scribo/filter/object_links_center_aligned.hh | 3 +-
scribo/scribo/filter/object_links_left_aligned.hh | 3 +-
.../filter/object_links_non_aligned_simple.hh | 3 +-
scribo/scribo/filter/object_links_right_aligned.hh | 3 +-
scribo/scribo/filter/object_links_top_aligned.hh | 3 +-
scribo/scribo/filter/objects_h_thick.hh | 6 +-
scribo/scribo/filter/objects_h_thin.hh | 6 +-
scribo/scribo/filter/objects_large.hh | 6 +-
scribo/scribo/filter/objects_on_border.hh | 3 +-
scribo/scribo/filter/objects_size_ratio.hh | 3 +-
scribo/scribo/filter/objects_small.hh | 6 +-
scribo/scribo/filter/objects_thick.hh | 6 +-
scribo/scribo/filter/objects_thin.hh | 6 +-
scribo/scribo/filter/objects_v_thick.hh | 6 +-
scribo/scribo/filter/objects_v_thin.hh | 6 +-
scribo/scribo/filter/objects_with_holes.hh | 8 +-
scribo/scribo/filter/paragraphs_bbox_overlap.hh | 3 +-
scribo/scribo/filter/paragraphs_in_borders.hh | 3 +-
scribo/scribo/filter/paragraphs_in_image.hh | 3 +-
scribo/scribo/filter/separators_in_borders.hh | 3 +-
scribo/scribo/filter/separators_in_element.hh | 3 +-
scribo/scribo/filter/separators_in_paragraph.hh | 3 +-
scribo/scribo/filter/separators_vert_in_borders.hh | 3 +-
scribo/scribo/io/img/save.hh | 8 +-
scribo/scribo/io/text_boxes/save.hh | 3 +-
scribo/scribo/io/xml/internal/save_image_to_xml.hh | 3 +-
scribo/scribo/io/xml/save.hh | 6 +-
scribo/scribo/layout/xy_cut.hh | 18 +-
scribo/scribo/make/debug_filename.hh | 8 +-
scribo/scribo/make/influence_zone_graph.hh | 3 +-
scribo/scribo/make/text_blocks_image.hh | 3 +-
scribo/scribo/make/text_components_image.hh | 3 +-
scribo/scribo/postprocessing/fill_object_holes.hh | 10 +-
.../postprocessing/images_to_drop_capital.hh | 3 +-
scribo/scribo/preprocessing/crop.hh | 3 +-
.../preprocessing/crop_without_localization.hh | 3 +-
scribo/scribo/preprocessing/denoise.hh | 3 +-
scribo/scribo/preprocessing/denoise_bg.hh | 3 +-
scribo/scribo/preprocessing/denoise_fg.hh | 3 +-
scribo/scribo/preprocessing/deskew.hh | 3 +-
scribo/scribo/preprocessing/deskew_crop.hh | 3 +-
.../scribo/preprocessing/homogeneous_contrast.hh | 3 +-
scribo/scribo/preprocessing/rotate_90.hh | 3 +-
scribo/scribo/preprocessing/split_bg_fg.hh | 12 +-
scribo/scribo/primitive/extract/alignments.hh | 10 +-
scribo/scribo/primitive/extract/canvas.hh | 3 +-
scribo/scribo/primitive/extract/cells.hh | 3 +-
scribo/scribo/primitive/extract/components.hh | 6 +-
.../primitive/extract/horizontal_separators.hh | 3 +-
.../scribo/primitive/extract/lines_discontinued.hh | 3 +-
.../primitive/extract/lines_h_discontinued.hh | 3 +-
scribo/scribo/primitive/extract/lines_h_pattern.hh | 3 +-
scribo/scribo/primitive/extract/lines_h_single.hh | 6 +-
scribo/scribo/primitive/extract/lines_h_thick.hh | 3 +-
.../primitive/extract/lines_h_thick_and_single.hh | 3 +-
.../primitive/extract/lines_h_thick_and_thin.hh | 3 +-
scribo/scribo/primitive/extract/lines_pattern.hh | 9 +-
scribo/scribo/primitive/extract/lines_thick.hh | 3 +-
.../primitive/extract/lines_v_discontinued.hh | 3 +-
scribo/scribo/primitive/extract/lines_v_pattern.hh | 3 +-
scribo/scribo/primitive/extract/lines_v_single.hh | 6 +-
scribo/scribo/primitive/extract/lines_v_thick.hh | 3 +-
.../primitive/extract/lines_v_thick_and_single.hh | 3 +-
scribo/scribo/primitive/extract/non_text.hh | 3 +-
scribo/scribo/primitive/extract/non_text_hdoc.hh | 3 +-
scribo/scribo/primitive/extract/non_text_kmean.hh | 3 +-
scribo/scribo/primitive/extract/separators.hh | 3 +-
.../primitive/extract/separators_nonvisible.hh | 3 +-
.../primitive/extract/vertical_separators.hh | 3 +-
scribo/scribo/primitive/group/apply.hh | 6 +-
scribo/scribo/primitive/group/from_double_link.hh | 3 +-
.../scribo/primitive/group/from_double_link_any.hh | 3 +-
scribo/scribo/primitive/group/from_graph.hh | 3 +-
scribo/scribo/primitive/group/from_single_link.hh | 3 +-
scribo/scribo/primitive/identify.hh | 8 +-
.../scribo/primitive/internal/find_graph_link.hh | 3 +-
scribo/scribo/primitive/internal/rd.hh | 6 +-
.../scribo/primitive/internal/update_graph_link.hh | 3 +-
scribo/scribo/primitive/link/compute.hh | 3 +-
scribo/scribo/primitive/link/compute_several.hh | 3 +-
.../primitive/link/internal/compute_anchor.hh | 4 +-
scribo/scribo/primitive/link/merge_double_link.hh | 3 +-
.../link/merge_double_link_closest_aligned.hh | 3 +-
scribo/scribo/primitive/link/with_graph.hh | 3 +-
scribo/scribo/primitive/link/with_rag.hh | 3 +-
.../scribo/primitive/link/with_several_graphes.hh | 3 +-
.../primitive/link/with_several_left_links.hh | 3 +-
.../link/with_several_right_closest_links.hh | 3 +-
.../primitive/link/with_several_right_links.hh | 3 +-
.../link/with_several_right_links_overlap.hh | 3 +-
.../scribo/primitive/link/with_single_down_link.hh | 3 +-
.../scribo/primitive/link/with_single_left_link.hh | 3 +-
.../link/with_single_left_link_dmax_ratio.hh | 3 +-
.../with_single_left_link_dmax_ratio_aligned.hh | 3 +-
.../primitive/link/with_single_right_link.hh | 3 +-
.../link/with_single_right_link_bottom.hh | 3 +-
.../link/with_single_right_link_dmax_ratio.hh | 3 +-
.../with_single_right_link_dmax_ratio_aligned.hh | 3 +-
.../primitive/link/with_single_right_link_top.hh | 3 +-
.../scribo/primitive/link/with_single_up_link.hh | 3 +-
scribo/scribo/primitive/merge/components.hh | 3 +-
.../primitive/regroup/from_single_left_link.hh | 3 +-
.../regroup/from_single_left_link_wrt_h_ratio.hh | 3 +-
scribo/scribo/primitive/remove/separators.hh | 3 +-
scribo/scribo/subsampling/bilinear.hh | 3 +-
scribo/scribo/subsampling/integral.hh | 12 +-
scribo/scribo/subsampling/integral_single_image.hh | 12 +-
scribo/scribo/table/align_lines_horizontaly.hh | 3 +-
scribo/scribo/table/align_lines_verticaly.hh | 3 +-
scribo/scribo/table/connect_horizontal_lines.hh | 3 +-
scribo/scribo/table/connect_vertical_lines.hh | 3 +-
scribo/scribo/table/erase.hh | 3 +-
scribo/scribo/table/extract.hh | 3 +-
scribo/scribo/table/internal/align_lines.hh | 3 +-
scribo/scribo/table/internal/connect_lines.hh | 3 +-
scribo/scribo/table/internal/repair_lines.hh | 3 +-
scribo/scribo/table/rebuild.hh | 3 +-
scribo/scribo/table/repair_horizontal_lines.hh | 3 +-
scribo/scribo/table/repair_vertical_lines.hh | 3 +-
scribo/scribo/text/clean.hh | 3 +-
scribo/scribo/text/clean_inplace.hh | 3 +-
scribo/scribo/text/extract_lines.hh | 6 +-
scribo/scribo/text/extract_lines_with_features.hh | 3 +-
scribo/scribo/text/extract_lines_wo_merge.hh | 3 +-
scribo/scribo/text/look_like_text_lines.hh | 6 +-
scribo/scribo/text/paragraphs_closing.hh | 3 +-
scribo/scribo/text/recognition.hh | 12 +-
.../internal/text_in_doc_preprocess_functor.hh | 2 +-
scribo/scribo/toolchain/nepomuk/text_extraction.hh | 3 +-
scribo/scribo/toolchain/text_in_doc_preprocess.hh | 3 +-
scribo/scribo/toolchain/text_in_picture.hh | 3 +-
scribo/scribo/upsampling/bs2x.hh | 3 +-
scribo/scribo/upsampling/eagle.hh | 3 +-
scribo/scribo/util/box_intersection.hh | 3 +-
scribo/scribo/util/box_is_included.hh | 3 +-
scribo/scribo/util/component_precise_outline.hh | 4 +-
scribo/scribo/util/compute_sub_domains.hh | 3 +-
scribo/scribo/util/hex_to_color.hh | 3 +-
scribo/scribo/util/init_integral_image.hh | 12 +-
scribo/src/afp/regroup.hh | 5 +-
scribo/src/binarization/global_threshold.cc | 3 +-
scribo/src/binarization/kim.cc | 2 +-
scribo/src/binarization/niblack.cc | 3 +-
scribo/src/binarization/otsu.cc | 3 +-
.../src/binarization/pgm_global_threshold_auto.cc | 3 +-
.../binarization/pgm_niblack_threshold_image.cc | 3 +-
scribo/src/binarization/sauvola.cc | 3 +-
scribo/src/binarization/sauvola_debug.cc | 3 +-
scribo/src/binarization/sauvola_ms.cc | 2 +-
scribo/src/binarization/sauvola_ms_debug.cc | 2 +-
scribo/src/binarization/sauvola_ms_fg.cc | 2 +-
scribo/src/binarization/sauvola_ms_split.cc | 2 +-
scribo/src/binarization/singh.cc | 3 +-
scribo/src/binarization/wolf.cc | 3 +-
scribo/src/content_in_doc.cc | 3 +-
scribo/src/content_in_hdoc.cc | 3 +-
scribo/src/contest/DAE-2011/content_in_doc_dae.cc | 3 +-
scribo/src/contest/DAE-2011/content_in_hdoc_dae.cc | 3 +-
.../contest/hdlac-2011/content_in_hdoc_hdlac.cc | 3 +-
scribo/src/debug/highlight_text_area.cc | 3 +-
.../src/debug/show_info_median_inter_characters.cc | 3 +-
scribo/src/debug/show_info_x_height.cc | 3 +-
scribo/src/debug/show_lines_boldness.cc | 3 +-
scribo/src/debug/show_objects_large.cc | 2 +-
scribo/src/debug/show_objects_large_small.cc | 2 +-
scribo/src/debug/show_objects_small.cc | 2 +-
scribo/src/debug/show_objects_thick.cc | 2 +-
scribo/src/debug/show_objects_thin.cc | 2 +-
scribo/src/debug/show_paragraph_blocks.cc | 3 +-
scribo/src/debug/show_separators.cc | 3 +-
scribo/src/debug/show_stoppers.cc | 3 +-
scribo/src/debug/show_text_lines.cc | 3 +-
scribo/src/debug/show_text_lines_wo_seps.cc | 3 +-
scribo/src/filter/objects_large.cc | 3 +-
scribo/src/filter/objects_small.cc | 3 +-
scribo/src/filter/objects_thick.cc | 3 +-
scribo/src/filter/objects_thin.cc | 3 +-
scribo/src/filter/objects_with_holes.cc | 3 +-
scribo/src/filter/objects_with_holes_pgm.cc | 3 +-
scribo/src/misc/negate.cc | 7 +-
scribo/src/misc/superpose.cc | 7 +-
scribo/src/non_text_components.cc | 3 +-
scribo/src/pbm_text_in_doc.cc | 3 +-
scribo/src/postprocessing/fill_object_holes.cc | 3 +-
scribo/src/preprocessing/denoise_bg.cc | 3 +-
scribo/src/preprocessing/denoise_fg.cc | 3 +-
scribo/src/preprocessing/preprocess.cc | 3 +-
scribo/src/preprocessing/split_bg_fg.cc | 3 +-
scribo/src/preprocessing/subsample.cc | 3 +-
scribo/src/preprocessing/unskew.cc | 7 +-
scribo/src/primitive/extract/alignments.cc | 3 +-
.../src/primitive/extract/discontinued_hlines.cc | 3 +-
scribo/src/primitive/extract/discontinued_lines.cc | 3 +-
.../src/primitive/extract/discontinued_vlines.cc | 3 +-
scribo/src/primitive/extract/lines_pattern.cc | 3 +-
.../src/primitive/extract/separators_nonvisible.cc | 3 +-
scribo/src/primitive/extract/thick_hlines.cc | 3 +-
scribo/src/primitive/extract/thick_vlines.cc | 3 +-
.../src/primitive/find/find_discontinued_lines.cc | 3 +-
scribo/src/primitive/find/find_pattern_lines.cc | 3 +-
scribo/src/primitive/find/find_single_lines.cc | 3 +-
.../primitive/find/find_thick_and_single_lines.cc | 3 +-
scribo/src/primitive/find/find_thick_lines.cc | 3 +-
scribo/src/primitive/remove/separators.cc | 3 +-
scribo/src/table/erase.cc | 3 +-
scribo/src/table/extract.cc | 3 +-
scribo/src/text/cleantxt.cc | 3 +-
scribo/src/text/pbm_lines_recognition.cc | 3 +-
scribo/src/text/pbm_recognition.cc | 3 +-
scribo/src/text_in_picture.cc | 3 +-
scribo/src/text_in_picture_dual.cc | 2 +-
scribo/src/text_recognition_in_picture.cc | 3 +-
scribo/src/util/component_precise_outline.cc | 3 +-
680 files changed, 3366 insertions(+), 2720 deletions(-)
create mode 100644 milena/mln/debug/trace.hh
create mode 100644 milena/mln/io/svg/simple_svg_1.0.0.hh
delete mode 100644 milena/mln/trace/all.hh
delete mode 100644 milena/mln/trace/entering.hh
delete mode 100644 milena/mln/trace/essential.hh
delete mode 100644 milena/mln/trace/exiting.hh
delete mode 100644 milena/mln/trace/quiet.hh
delete mode 100644 milena/mln/trace/resume.hh
delete mode 100644 milena/mln/trace/stop.hh
delete mode 100644 milena/mln/trace/warning.hh
hooks/post-receive
--
Olena, a generic and efficient image processing platform
1
0

olena-2.0-406-g9a540a3 Fix an invalid initialization in several binarization algorithms.
by Guillaume Lazzara 20 Mar '13
by Guillaume Lazzara 20 Mar '13
20 Mar '13
* scribo/binarization/internal/local_threshold_core.hh: Fix doc.
* scribo/binarization/internal/niblack_functor.hh,
* scribo/binarization/internal/niblack_functor_fast.hh,
* scribo/binarization/internal/niblack_threshold_functor.hh,
* scribo/binarization/internal/sauvola_functor.hh,
* scribo/binarization/internal/sauvola_ms_functor.hh,
* scribo/binarization/internal/sauvola_threshold_functor.hh,
* scribo/binarization/internal/singh_functor.hh,
* scribo/binarization/internal/wolf_functor.hh,
* scribo/binarization/internal/wolf_functor_fast.hh,
* scribo/binarization/wolf.hh,
* scribo/binarization/wolf_fast.hh: Add init() member and more assertions.
* scribo/canvas/integral_browsing.hh: Call init() function.
---
scribo/ChangeLog | 21 ++++++++++++++++++++
.../binarization/internal/local_threshold_core.hh | 10 ++++----
.../binarization/internal/niblack_functor.hh | 14 ++++++++++++-
.../binarization/internal/niblack_functor_fast.hh | 12 +++++++++++
.../internal/niblack_threshold_functor.hh | 12 +++++++++-
.../binarization/internal/sauvola_functor.hh | 18 +++++++++++++++++
.../binarization/internal/sauvola_ms_functor.hh | 18 +++++++++++++++-
.../internal/sauvola_threshold_functor.hh | 16 +++++++++++++-
.../scribo/binarization/internal/singh_functor.hh | 12 +++++++++++
.../scribo/binarization/internal/wolf_functor.hh | 17 +++++++++++++++-
.../binarization/internal/wolf_functor_fast.hh | 15 ++++++++++++++
scribo/scribo/binarization/wolf.hh | 7 +++++-
scribo/scribo/binarization/wolf_fast.hh | 4 +++
scribo/scribo/canvas/integral_browsing.hh | 2 +
14 files changed, 164 insertions(+), 14 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index a58900d..b1e4665 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,3 +1,24 @@
+2013-03-20 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Fix an invalid initialization in several binarization algorithms.
+
+ * scribo/binarization/internal/local_threshold_core.hh: Fix doc.
+
+ * scribo/binarization/internal/niblack_functor.hh,
+ * scribo/binarization/internal/niblack_functor_fast.hh,
+ * scribo/binarization/internal/niblack_threshold_functor.hh,
+ * scribo/binarization/internal/sauvola_functor.hh,
+ * scribo/binarization/internal/sauvola_ms_functor.hh,
+ * scribo/binarization/internal/sauvola_threshold_functor.hh,
+ * scribo/binarization/internal/singh_functor.hh,
+ * scribo/binarization/internal/wolf_functor.hh,
+ * scribo/binarization/internal/wolf_functor_fast.hh,
+ * scribo/binarization/wolf.hh,
+ * scribo/binarization/wolf_fast.hh: Add init() member and more
+ assertions.
+
+ * scribo/canvas/integral_browsing.hh: Call init() function.
+
2013-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
* scribo/debug/links_image.hh: Make use of object_link interface.
diff --git a/scribo/scribo/binarization/internal/local_threshold_core.hh b/scribo/scribo/binarization/internal/local_threshold_core.hh
index 90f0659..af8d4aa 100644
--- a/scribo/scribo/binarization/internal/local_threshold_core.hh
+++ b/scribo/scribo/binarization/internal/local_threshold_core.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2011, 2012 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2011, 2012, 2013 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -131,9 +131,9 @@ namespace scribo
int integral_scale_ratio = F::step;
- // Make sure the image sizes are a multiple of 3 in each
- // dimension. (browsing while binarizing relies on that
- // property).
+ // Make sure the image sizes are a multiple of
+ // integral_scale_ratio in each dimension. (browsing while
+ // binarizing relies on that property).
mln::util::array<mln::util::couple<box2d, unsigned> >
sub_domains = scribo::util::compute_sub_domains(input, 1,
integral_scale_ratio);
diff --git a/scribo/scribo/binarization/internal/niblack_functor.hh b/scribo/scribo/binarization/internal/niblack_functor.hh
index 6c4da98..8c502b7 100644
--- a/scribo/scribo/binarization/internal/niblack_functor.hh
+++ b/scribo/scribo/binarization/internal/niblack_functor.hh
@@ -64,6 +64,8 @@ namespace scribo
niblack_functor(const Image<I>& input, double K);
+ void init();
+
// Run every 4 pixels.
void exec(double mean, double stddev);
@@ -94,8 +96,16 @@ namespace scribo
pi(&input(input.domain().pmin())),
K_(K)
{
- next_line = 2 * input.border();
+ mln_precondition(exact(input).is_valid());
+ }
+ template <typename I>
+ void
+ niblack_functor<I>::init()
+ {
+ // This initialization MUST be done here since input image
+ // borders may have changed!
+ next_line = 2 * input.border();
initialize(output, input);
po = &output(output.domain().pmin());
}
@@ -104,6 +114,8 @@ namespace scribo
void
niblack_functor<I>::exec(double mean, double stddev)
{
+ mln_assertion(input.border() == output.border());
+
double th = formula_(mean, stddev, K_);
*po++ = (*pi++ <= th);
diff --git a/scribo/scribo/binarization/internal/niblack_functor_fast.hh b/scribo/scribo/binarization/internal/niblack_functor_fast.hh
index fd36756..cfebbeb 100644
--- a/scribo/scribo/binarization/internal/niblack_functor_fast.hh
+++ b/scribo/scribo/binarization/internal/niblack_functor_fast.hh
@@ -65,6 +65,8 @@ namespace scribo
// values.
enum { step = 3 };
+ void init();
+
// Run every 4 pixels.
void exec(double mean, double stddev);
@@ -97,6 +99,16 @@ namespace scribo
pi(&input(input.domain().pmin())),
K_(K)
{
+ mln_precondition(exact(input).is_valid());
+ }
+
+ template <typename I>
+ void
+ niblack_functor_fast<I>::init()
+ {
+ // This initialization MUST be done here since input image
+ // borders may have changed!
+
// Since we iterate from a smaller image in the largest ones
// and image at scale 1 does not always have a size which can
// be divided by 3, some sites in the border may not be
diff --git a/scribo/scribo/binarization/internal/niblack_threshold_functor.hh b/scribo/scribo/binarization/internal/niblack_threshold_functor.hh
index d2f82c9..fab5f7b 100644
--- a/scribo/scribo/binarization/internal/niblack_threshold_functor.hh
+++ b/scribo/scribo/binarization/internal/niblack_threshold_functor.hh
@@ -94,9 +94,16 @@ namespace scribo
double K)
: K_(K)
{
- const I& input = exact(input_);
- mln_precondition(input.is_valid());
+ mln_precondition(exact(input).is_valid());
+ mln_precondition(K > 0.);
+ }
+ template <typename I>
+ void
+ niblack_threshold_functor<I>::init()
+ {
+ // This initialization MUST be done here since input image
+ // borders may have changed!
next_line3 = input.delta_offset(dpoint2d(+2,0)) + 2 * input.border() - 1;
offset1 = input.delta_offset(dpoint2d(+1,0));
@@ -110,6 +117,7 @@ namespace scribo
void
niblack_threshold_functor<I>::exec(double mean, double stddev)
{
+ mln_assertion(input.border() == output.border());
static point2d p(0,0);
typedef mln_value(I) V;
diff --git a/scribo/scribo/binarization/internal/sauvola_functor.hh b/scribo/scribo/binarization/internal/sauvola_functor.hh
index 613b3e5..4aca8ca 100644
--- a/scribo/scribo/binarization/internal/sauvola_functor.hh
+++ b/scribo/scribo/binarization/internal/sauvola_functor.hh
@@ -65,6 +65,8 @@ namespace scribo
sauvola_functor(const Image<I>& input, double K, double R);
+ void init();
+
// Run every 4 pixels.
void exec(double mean, double stddev);
@@ -99,6 +101,19 @@ namespace scribo
K_(K),
R_(R)
{
+ mln_precondition(exact(input).is_valid());
+ mln_precondition(K > 0.);
+ mln_precondition(R > 0.);
+ }
+
+
+ template <typename I>
+ void
+ sauvola_functor<I>::init()
+ {
+ // This initialization MUST be done here since input image
+ // borders may have changed!
+
// Since we iterate from a smaller image in the largest ones
// and image at scale 1 does not always have a size which can
// be divided by 3, some sites in the border may not be
@@ -117,10 +132,13 @@ namespace scribo
po = &output(output.domain().pmin());
}
+
template <typename I>
void
sauvola_functor<I>::exec(double mean, double stddev)
{
+ mln_assertion(input.border() == output.border());
+
double th = formula_(mean, stddev, K_, R_);
for (int i = 0; i < step; ++i, ++po, ++pi)
diff --git a/scribo/scribo/binarization/internal/sauvola_ms_functor.hh b/scribo/scribo/binarization/internal/sauvola_ms_functor.hh
index 84a205c..10733ab 100644
--- a/scribo/scribo/binarization/internal/sauvola_ms_functor.hh
+++ b/scribo/scribo/binarization/internal/sauvola_ms_functor.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010, 2011, 2012 EPITA Research and Development
-// Laboratory (LRDE)
+// Copyright (C) 2009, 2010, 2011, 2012, 2013 EPITA Research and
+// Development Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -95,6 +95,7 @@ namespace scribo
const image2d<value::int_u8>&e_2,
unsigned i, unsigned q);
+ void init();
void exec(double mean, double stddev);
void end_of_row(int row);
void finalize();
@@ -137,6 +138,12 @@ namespace scribo
R_(R),
i_(i)
{
+ mln_precondition(exact(input).is_valid());
+ mln_precondition(R > 0.);
+ mln_precondition(e_2.is_valid());
+ mln_precondition(q > 0);
+ mln_precondition(i > 1);
+
res = 0;
pxl.start();
@@ -170,6 +177,13 @@ namespace scribo
template <typename I>
void
+ sauvola_ms_functor<I>::init()
+ {
+ }
+
+
+ template <typename I>
+ void
sauvola_ms_functor<I>::exec(double mean, double stddev)
{
mln_precondition(pxl.is_valid());
diff --git a/scribo/scribo/binarization/internal/sauvola_threshold_functor.hh b/scribo/scribo/binarization/internal/sauvola_threshold_functor.hh
index fd5eac8..19b7bf3 100644
--- a/scribo/scribo/binarization/internal/sauvola_threshold_functor.hh
+++ b/scribo/scribo/binarization/internal/sauvola_threshold_functor.hh
@@ -66,6 +66,8 @@ namespace scribo
sauvola_threshold_functor(const Image<I>& input,
double K, double R);
+ init();
+
// Run every 4 pixels.
void exec(double mean, double stddev);
@@ -96,8 +98,17 @@ namespace scribo
: K_(K),
R_(R)
{
- const I& input = exact(input_);
- mln_precondition(input.is_valid());
+ mln_precondition(exact(input).is_valid());
+ mln_precondition(K > 0.);
+ mln_precondition(R > 0.);
+ }
+
+ template <typename I>
+ void
+ sauvola_threshold_functor<I>::init()
+ {
+ // This initialization MUST be done here since input image
+ // borders may have changed!
next_line3 = input.delta_offset(dpoint2d(+2,0)) + 2 * input.border() - 1;
@@ -112,6 +123,7 @@ namespace scribo
void
sauvola_threshold_functor<I>::exec(double mean, double stddev)
{
+ mln_assertion(input.border() == output.border());
static point2d p(0,0);
typedef mln_value(I) V;
diff --git a/scribo/scribo/binarization/internal/singh_functor.hh b/scribo/scribo/binarization/internal/singh_functor.hh
index fb8f525..8a93c44 100644
--- a/scribo/scribo/binarization/internal/singh_functor.hh
+++ b/scribo/scribo/binarization/internal/singh_functor.hh
@@ -98,6 +98,17 @@ namespace scribo
pi(&input(input.domain().pmin())),
K_(K)
{
+ mln_precondition(exact(input).is_valid());
+ mln_precondition(K > 0.);
+ }
+
+ template <typename I>
+ void
+ niblack_functor<I>::init()
+ {
+ // This initialization MUST be done here since input image
+ // borders may have changed!
+
// Since we iterate from a smaller image in the largest ones
// and image at scale 1 does not always have a size which can
// be divided by 3, some sites in the border may not be
@@ -120,6 +131,7 @@ namespace scribo
void
singh_functor<I>::exec(double mean, double stddev)
{
+ mln_precondition(input.border() == output.border());
(void) stddev;
diff --git a/scribo/scribo/binarization/internal/wolf_functor.hh b/scribo/scribo/binarization/internal/wolf_functor.hh
index 399b92a..f7947b4 100644
--- a/scribo/scribo/binarization/internal/wolf_functor.hh
+++ b/scribo/scribo/binarization/internal/wolf_functor.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2012 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2012, 2013 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -68,6 +69,8 @@ namespace scribo
const mln_value(I)& global_min,
double global_max_stddev);
+ void init();
+
// Run every 4 pixels.
void exec(double mean, double stddev);
@@ -105,6 +108,16 @@ namespace scribo
global_min_(global_min),
global_max_stddev_(global_max_stddev)
{
+ mln_precondition(exact(input).is_valid());
+ mln_precondition(K > 0.);
+ }
+
+ template <typename I>
+ void
+ wolf_functor<I>::init()
+ {
+ // This initialization MUST be done here since input image
+ // borders may have changed!
next_line = 2 * input.border();
initialize(output, input);
@@ -115,6 +128,8 @@ namespace scribo
void
wolf_functor<I>::exec(double mean, double stddev)
{
+ mln_assertion(input.border() == output.border());
+
double th = formula_(mean, stddev, K_,
global_max_stddev_, global_min_);
diff --git a/scribo/scribo/binarization/internal/wolf_functor_fast.hh b/scribo/scribo/binarization/internal/wolf_functor_fast.hh
index a61bead..118157c 100644
--- a/scribo/scribo/binarization/internal/wolf_functor_fast.hh
+++ b/scribo/scribo/binarization/internal/wolf_functor_fast.hh
@@ -69,6 +69,8 @@ namespace scribo
const mln_value(I)& global_min,
double global_max_stddev);
+ void init();
+
// Run every 4 pixels.
void exec(double mean, double stddev);
@@ -108,6 +110,17 @@ namespace scribo
global_min_(global_min),
global_max_stddev_(global_max_stddev)
{
+ mln_precondition(exact(input).is_valid());
+ mln_precondition(K > 0.);
+ }
+
+ template <typename I>
+ void
+ wolf_functor_fast<I>::init()
+ {
+ // This initialization MUST be done here since input image
+ // borders may have changed!
+
// Since we iterate from a smaller image in the largest ones
// and image at scale 1 does not always have a size which can
// be divided by 3, some sites in the border may not be
@@ -130,6 +143,8 @@ namespace scribo
void
wolf_functor_fast<I>::exec(double mean, double stddev)
{
+ mln_assertion(input.border() == output.border());
+
double th = formula_(mean, stddev, K_,
global_max_stddev_, global_min_);
diff --git a/scribo/scribo/binarization/wolf.hh b/scribo/scribo/binarization/wolf.hh
index 376c486..aadf2af 100644
--- a/scribo/scribo/binarization/wolf.hh
+++ b/scribo/scribo/binarization/wolf.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2012 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2012, 2013 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -99,6 +100,10 @@ namespace scribo
{
}
+ void init()
+ {
+ }
+
// Run every 4 pixels.
void exec(double mean, double stddev)
{
diff --git a/scribo/scribo/binarization/wolf_fast.hh b/scribo/scribo/binarization/wolf_fast.hh
index 10e9d28..e0cf56d 100644
--- a/scribo/scribo/binarization/wolf_fast.hh
+++ b/scribo/scribo/binarization/wolf_fast.hh
@@ -98,6 +98,10 @@ namespace scribo
{
}
+ void init()
+ {
+ }
+
// Run every 4 pixels.
void exec(double mean, double stddev)
{
diff --git a/scribo/scribo/canvas/integral_browsing.hh b/scribo/scribo/canvas/integral_browsing.hh
index c554eaf..c293ba9 100644
--- a/scribo/scribo/canvas/integral_browsing.hh
+++ b/scribo/scribo/canvas/integral_browsing.hh
@@ -108,6 +108,8 @@ namespace scribo
" was larger than image width.");
}
+ // Initialization
+ functor.init();
const int
nrows = ima.nrows(),
--
1.7.2.5
1
0
---
scribo/sandbox/icdar_13_table/Makefile | 2 +-
scribo/sandbox/icdar_13_table/src/new.cc | 51 +++++++-----------------------
scribo/sandbox/icdar_13_table/src/xml.cc | 31 ++++++++++++++++++
scribo/sandbox/icdar_13_table/src/xml.hh | 24 ++++++++++++++
4 files changed, 68 insertions(+), 40 deletions(-)
create mode 100644 scribo/sandbox/icdar_13_table/src/xml.cc
create mode 100644 scribo/sandbox/icdar_13_table/src/xml.hh
diff --git a/scribo/sandbox/icdar_13_table/Makefile b/scribo/sandbox/icdar_13_table/Makefile
index 8155a34..8d0cd1a 100644
--- a/scribo/sandbox/icdar_13_table/Makefile
+++ b/scribo/sandbox/icdar_13_table/Makefile
@@ -4,7 +4,7 @@ CFLAGS=-Wall -Werror -O3 -DHAVE_TESSERACT_3 -DNDEBUG
CLIBS=-I../../../milena/ -I../../ -I/usr/include/poppler
CLEAN=*.o output/* log final.xml
-SRC=src/new.cc
+SRC=src/xml.cc src/new.cc
SRC_OLD=src/main.cc
OUTPUT=table
OUTPUT_OLD=old
diff --git a/scribo/sandbox/icdar_13_table/src/new.cc b/scribo/sandbox/icdar_13_table/src/new.cc
index 54b9f3b..95bf575 100644
--- a/scribo/sandbox/icdar_13_table/src/new.cc
+++ b/scribo/sandbox/icdar_13_table/src/new.cc
@@ -1,3 +1,5 @@
+#include "xml.hh"
+
// INCLUDES OLENA
#include <mln/binarization/all.hh>
@@ -83,38 +85,6 @@ void write_image(const image2d<value::rgb8>& ima,
++number;
}
-// Open and initialize XML
-void start_xml(std::ofstream& xml, const char* name, const char* pdf)
-{
- xml.open(name);
- xml << "<?xml version\"1.0\" encoding=\"UTF-8\"?>" << std::endl
- << "<document filename='" << pdf << "'>" << std::endl;
-}
-
-// Finalize an close XML
-void end_xml(std::ofstream& xml)
-{
- xml << "</document>" << std::endl;
- xml.close();
-}
-
-// Write a new (simple) table in XML file
-void write_table(std::ofstream& xml, const point2d& start, const point2d& end)
-{
- static unsigned table = 0;
- static unsigned region = 0;
- static unsigned page = 1;
-
- xml << "\t<table id='" << table << "'>" << std::endl
- << "\t\t<region id='" << region << "' page='" << page << "'>" << std::endl
- << "\t\t<bounding-box x1='" << start[1] << "' y1='" << start[0] << "' "
- << "x2='" << end[1] << "' y2='" << end[0] << "'/>" << std::endl
- << "\t\t</region>" << std::endl
- << "\t</table>" << std::endl;
-
- ++table;
-}
-
// Draw vertical links from top to bottom (red)
void draw_links_tb(const scribo::object_groups< image2d<unsigned> >& groups,
image2d<value::rgb8>& ima_groups,
@@ -142,8 +112,8 @@ void draw_links_tb(const scribo::object_groups< image2d<unsigned> >& groups,
&& (b1.pmin()[1] == b2.pmin()[1]
|| (b1.pmin()[1] < b2.pmin()[1] && b1.pmax()[1] > b2.pmin()[1])
|| (b1.pmin()[1] > b2.pmin()[1] && b2.pmax()[1] > b1.pmin()[1])) // Boxes are aligned
- && abs(p1[0] - p2[0]) < 3 * max_height // Reduced gap
- && abs(p1[1] - p2[1]) < 20) // Vertical proximity
+ && (unsigned) abs(p1[0] - p2[0]) < 3 * max_height // Reduced gap
+ && (unsigned) abs(p1[1] - p2[1]) < 20) // Vertical proximity
{
draw::line(ima_groups, p1, p2, literal::red);
balance[i] += 1;
@@ -181,8 +151,8 @@ void draw_links_bt(const scribo::object_groups< image2d<unsigned> >& groups,
&& (b1.pmin()[1] == b2.pmin()[1]
|| (b1.pmin()[1] < b2.pmin()[1] && b1.pmax()[1] > b2.pmin()[1])
|| (b1.pmin()[1] > b2.pmin()[1] && b2.pmax()[1] > b1.pmin()[1])) // Boxes are aligned
- && abs(p1[0] - p2[0]) < 3 * max_height // Reduced gap
- && abs(p1[1] - p2[1]) < 20) // Vertical proximity
+ && (unsigned) abs(p1[0] - p2[0]) < 3 * max_height // Reduced gap
+ && (unsigned) abs(p1[1] - p2[1]) < 20) // Vertical proximity
{
draw::line(ima_groups, p1, p2, literal::red);
balance[i] += 1;
@@ -261,7 +231,7 @@ int main(int argc, char** argv)
typedef value::label_16 V;
typedef image2d<V> L;
- std::ofstream xml;
+ //std::ofstream xml;
std::ostringstream path;
image2d<value::rgb8> original, ima_links, ima_groups, ima_valid;
image2d<value::int_u8> filtered;
@@ -271,7 +241,8 @@ int main(int argc, char** argv)
unsigned dpi = 72;
// Loading and binarization
- start_xml(xml, "final.xml", argv[1]);
+ //start_xml(xml, "final.xml", argv[1]);
+ XML* xml = new XML("final.xml", argv[1]);
util::array< image2d<value::rgb8> > pdf;
io::pdf::load(pdf, argv[1], dpi);
@@ -424,7 +395,9 @@ int main(int argc, char** argv)
write_image(ima_valid, "valid", page, number, path);
}
- end_xml(xml);
+
+ //end_xml(xml);
+ delete xml;
return 0;
}
diff --git a/scribo/sandbox/icdar_13_table/src/xml.cc b/scribo/sandbox/icdar_13_table/src/xml.cc
new file mode 100644
index 0000000..76fed84
--- /dev/null
+++ b/scribo/sandbox/icdar_13_table/src/xml.cc
@@ -0,0 +1,31 @@
+#include "xml.hh"
+
+XML::XML(const char* name, const char* pdf)
+ : _name(name), _pdf(pdf)
+{
+ _xml.open(_name);
+ _xml << "<?xml version\"1.0\" encoding=\"UTF-8\"?>" << std::endl
+ << "<document filename='" << _pdf << "'>" << std::endl;
+}
+
+XML::~XML()
+{
+ _xml << "</document>" << std::endl;
+ _xml.close();
+}
+
+void XML::write_table(const point2d& start, const point2d& end)
+{
+ static unsigned table = 0;
+ static unsigned region = 0;
+ static unsigned page = 1;
+
+ _xml << "\t<table id='" << table << "'>" << std::endl
+ << "\t\t<region id='" << region << "' page='" << page << "'>" << std::endl
+ << "\t\t<bounding-box x1='" << start[1] << "' y1='" << start[0] << "' "
+ << "x2='" << end[1] << "' y2='" << end[0] << "'/>" << std::endl
+ << "\t\t</region>" << std::endl
+ << "\t</table>" << std::endl;
+
+ ++table;
+}
diff --git a/scribo/sandbox/icdar_13_table/src/xml.hh b/scribo/sandbox/icdar_13_table/src/xml.hh
new file mode 100644
index 0000000..397d585
--- /dev/null
+++ b/scribo/sandbox/icdar_13_table/src/xml.hh
@@ -0,0 +1,24 @@
+#ifndef XML_HH
+# define XML_HH
+# define MLN_WO_GLOBAL_VARS
+
+# include <iostream>
+# include <fstream>
+# include <mln/core/alias/point2d.hh>
+
+using namespace mln;
+
+class XML
+{
+ public:
+ XML(const char* name, const char* pdf);
+ ~XML();
+ void write_table(const point2d& start, const point2d& end);
+
+ private:
+ std::ofstream _xml;
+ const char* _name;
+ const char* _pdf;
+};
+
+#endif /* !XML_HH */
--
1.7.2.5
1
0
---
scribo/sandbox/icdar_13_table/TODO | 3 +-
scribo/sandbox/icdar_13_table/src/new.cc | 281 ++++++++++++++++++++----------
2 files changed, 190 insertions(+), 94 deletions(-)
diff --git a/scribo/sandbox/icdar_13_table/TODO b/scribo/sandbox/icdar_13_table/TODO
index e3c6f52..86486c9 100644
--- a/scribo/sandbox/icdar_13_table/TODO
+++ b/scribo/sandbox/icdar_13_table/TODO
@@ -4,9 +4,10 @@
Table location sub-competition :
* Find links betwwen pages for mutlipages tables
- * Get text from reversed-video zones
* *** glibc detected *** ./table: corrupted double-linked list
with the file us-005.pdf from the test set
+ * 'Floating point exeption' using sauvola_ms(a, b, c) with a floating point
+ c instead of an unsigned (Z is working on it)
Table structure recognition sub-competition :
* All
diff --git a/scribo/sandbox/icdar_13_table/src/new.cc b/scribo/sandbox/icdar_13_table/src/new.cc
index aca31bb..54b9f3b 100644
--- a/scribo/sandbox/icdar_13_table/src/new.cc
+++ b/scribo/sandbox/icdar_13_table/src/new.cc
@@ -53,6 +53,36 @@
using namespace mln;
+// Write image2d<bool> images
+void write_image(const image2d<bool>& ima,
+ const char* name,
+ const unsigned page,
+ unsigned& number,
+ std::ostringstream& path)
+{
+ path.str("");
+ path << "output/p" << page
+ << "_" << number
+ << "_" << name << ".pbm";
+ io::pbm::save(ima, path.str());
+ ++number;
+}
+
+// Write image2d<value::rbg8> images
+void write_image(const image2d<value::rgb8>& ima,
+ const char* name,
+ const unsigned page,
+ unsigned& number,
+ std::ostringstream& path)
+{
+ path.str("");
+ path << "output/p" << page
+ << "_" << number
+ << "_" << name << ".ppm";
+ io::ppm::save(ima, path.str());
+ ++number;
+}
+
// Open and initialize XML
void start_xml(std::ofstream& xml, const char* name, const char* pdf)
{
@@ -85,10 +115,147 @@ void write_table(std::ofstream& xml, const point2d& start, const point2d& end)
++table;
}
- /********/
- /* MAIN */
- /********/
+// Draw vertical links from top to bottom (red)
+void draw_links_tb(const scribo::object_groups< image2d<unsigned> >& groups,
+ image2d<value::rgb8>& ima_groups,
+ std::vector<short>& balance,
+ unsigned average_width)
+{
+ for (unsigned i = 1; i <= groups.nelements(); ++i)
+ {
+ for (unsigned j = 1; j <= groups.nelements(); ++j)
+ {
+ if (i != j)
+ {
+ const box2d& b1 = groups(i).bbox();
+ const box2d& b2 = groups(j).bbox();
+ const point2d& p1 = b1.pcenter();
+ const point2d& p2 = b2.pcenter();
+
+ unsigned max_height = std::max(b1.height(), b2.height());
+ unsigned min_height = std::min(b1.height(), b2.height());
+
+ if (p1[0] < p2[0] // Avoid redundancy
+ && max_height * 2 < ima_groups.ncols()
+ && min_height + 3 >= max_height // Same heights
+ && b1.width() < 2 * average_width && b2.width() < 2 * average_width // Regular width
+ && (b1.pmin()[1] == b2.pmin()[1]
+ || (b1.pmin()[1] < b2.pmin()[1] && b1.pmax()[1] > b2.pmin()[1])
+ || (b1.pmin()[1] > b2.pmin()[1] && b2.pmax()[1] > b1.pmin()[1])) // Boxes are aligned
+ && abs(p1[0] - p2[0]) < 3 * max_height // Reduced gap
+ && abs(p1[1] - p2[1]) < 20) // Vertical proximity
+ {
+ draw::line(ima_groups, p1, p2, literal::red);
+ balance[i] += 1;
+ break;
+ }
+ }
+ }
+ }
+}
+
+// Draw vertical links from bottom to top (red)
+void draw_links_bt(const scribo::object_groups< image2d<unsigned> >& groups,
+ image2d<value::rgb8>& ima_groups,
+ std::vector<short>& balance,
+ unsigned average_width)
+{
+ for (unsigned i = groups.nelements(); i > 0; --i)
+ {
+ for (unsigned j = groups.nelements(); j > 0; --j)
+ {
+ if (i != j)
+ {
+ const box2d& b1 = groups(i).bbox();
+ const box2d& b2 = groups(j).bbox();
+ const point2d& p1 = b1.pcenter();
+ const point2d& p2 = b2.pcenter();
+
+ unsigned max_height = std::max(b1.height(), b2.height());
+ unsigned min_height = std::min(b1.height(), b2.height());
+
+ if (p1[0] > p2[0] // Avoid redundancy
+ && max_height * 2 < ima_groups.ncols()
+ && min_height + 3 >= max_height // Same heights
+ && b1.width() < 2 * average_width && b2.width() < 2 * average_width // Regular width
+ && (b1.pmin()[1] == b2.pmin()[1]
+ || (b1.pmin()[1] < b2.pmin()[1] && b1.pmax()[1] > b2.pmin()[1])
+ || (b1.pmin()[1] > b2.pmin()[1] && b2.pmax()[1] > b1.pmin()[1])) // Boxes are aligned
+ && abs(p1[0] - p2[0]) < 3 * max_height // Reduced gap
+ && abs(p1[1] - p2[1]) < 20) // Vertical proximity
+ {
+ draw::line(ima_groups, p1, p2, literal::red);
+ balance[i] += 1;
+ break;
+ }
+ }
+ }
+ }
+}
+
+// Draw horizontal links from left to right (green)
+void draw_links_lr(const scribo::object_groups< image2d<unsigned> >& groups,
+ image2d<value::rgb8>& ima_groups,
+ std::vector<short>& balance)
+{
+ for (unsigned i = 1; i <= groups.nelements(); ++i)
+ {
+ for (unsigned j = 1; j <= groups.nelements(); ++j)
+ {
+ if (i != j)
+ {
+ const box2d& b1 = groups(i).bbox();
+ const box2d& b2 = groups(j).bbox();
+ const point2d& p1 = b1.pcenter();
+ const point2d& p2 = b2.pcenter();
+
+ if (p1[1] < p2[1] // Avoid redundancy
+ && (b1.pmin()[0] == b2.pmin()[0]
+ || (b1.pmin()[0] < b2.pmin()[0] && b1.pmax()[0] > b2.pmin()[0])
+ || (b1.pmin()[0] > b2.pmin()[0] && b2.pmax()[0] > b1.pmin()[0])) // Boxes are aligned
+ && abs(p1[0] - p2[0]) < 10) // Reduced gap
+ {
+ draw::line(ima_groups, p1, p2, literal::green);
+ balance[i] += 1;
+ break;
+ }
+ }
+ }
+ }
+}
+
+// Draw horizontal links from right to left (green)
+void draw_links_rl(const scribo::object_groups< image2d<unsigned> >& groups,
+ image2d<value::rgb8>& ima_groups,
+ std::vector<short>& balance)
+{
+ for (unsigned i = groups.nelements(); i > 0; --i)
+ {
+ for (unsigned j = groups.nelements(); j > 0; --j)
+ {
+ if (i != j)
+ {
+ const box2d& b1 = groups(i).bbox();
+ const box2d& b2 = groups(j).bbox();
+ const point2d& p1 = b1.pcenter();
+ const point2d& p2 = b2.pcenter();
+
+ if (p1[1] > p2[1] // Avoid redundancy
+ && (b1.pmin()[0] == b2.pmin()[0]
+ || (b1.pmin()[0] < b2.pmin()[0] && b1.pmax()[0] > b2.pmin()[0])
+ || (b1.pmin()[0] > b2.pmin()[0] && b2.pmax()[0] > b1.pmin()[0])) // Boxes are aligned
+ && abs(p1[0] - p2[0]) < 10) // Reduced gap
+ {
+ draw::line(ima_groups, p1, p2, literal::green);
+ balance[i] += 1;
+ break;
+ }
+ }
+ }
+ }
+}
+/******************************** MAIN ****************************************/
int main(int argc, char** argv)
{
typedef value::label_16 V;
@@ -108,6 +275,7 @@ int main(int argc, char** argv)
util::array< image2d<value::rgb8> > pdf;
io::pdf::load(pdf, argv[1], dpi);
+
for (unsigned page = 0; page < pdf.nelements(); ++page)
{
original = pdf[page];
@@ -219,66 +387,11 @@ int main(int argc, char** argv)
std::vector<short> balance(groups.nelements(), 0);
- // Draw vertical links (red)
- for (unsigned i = 1; i < groups.nelements(); ++i)
- {
- for (unsigned j = 1; j < groups.nelements(); ++j)
- {
- if (i != j)
- {
- const box2d& b1 = groups(i).bbox();
- const box2d& b2 = groups(j).bbox();
- const point2d& p1 = b1.pcenter();
- const point2d& p2 = b2.pcenter();
-
- unsigned max_height = std::max(b1.height(), b2.height());
- unsigned min_height = std::min(b1.height(), b2.height());
-
- if (p1[0] < p2[0] // Avoid redundancy
- && max_height * 2 < bin_merged.ncols()
- && min_height + 3 >= max_height // Same heights
- && b1.width() < 2 * average_width && b2.width() < 2 * average_width // Regular width
- && (b1.pmin()[1] == b2.pmin()[1]
- || (b1.pmin()[1] < b2.pmin()[1] && b1.pmax()[1] > b2.pmin()[1])
- || (b1.pmin()[1] > b2.pmin()[1] && b2.pmax()[1] > b1.pmin()[1])) // Boxes are aligned
- && abs(p1[0] - p2[0]) < 3 * max_height // Reduced gap
- && abs(p1[1] - p2[1]) < 20) // Vertical proximity
- {
- draw::line(ima_groups, p1, p2, literal::red);
- balance[i] += 1;
- balance[j] += 1;
- break;
- }
- }
- }
- }
-
- // Draw horizontal links (green)
- for (unsigned i = 1; i < groups.nelements(); ++i)
- {
- for (unsigned j = 1; j < groups.nelements(); ++j)
- {
- if (i != j)
- {
- const box2d& b1 = groups(i).bbox();
- const box2d& b2 = groups(j).bbox();
- const point2d& p1 = b1.pcenter();
- const point2d& p2 = b2.pcenter();
-
- if (p1[1] < p2[1] // Avoid redundancy
- && (b1.pmin()[0] == b2.pmin()[0]
- || (b1.pmin()[0] < b2.pmin()[0] && b1.pmax()[0] > b2.pmin()[0])
- || (b1.pmin()[0] > b2.pmin()[0] && b2.pmax()[0] > b1.pmin()[0])) // Boxes are aligned
- && abs(p1[0] - p2[0]) < 10) // Reduced gap
- {
- draw::line(ima_groups, p1, p2, literal::green);
- balance[i] += 1;
- balance[j] += 1;
- break;
- }
- }
- }
- }
+ // Draw and count links
+ draw_links_tb(groups, ima_groups, balance, average_width);
+ draw_links_bt(groups, ima_groups, balance, average_width);
+ draw_links_lr(groups, ima_groups, balance);
+ draw_links_rl(groups, ima_groups, balance);
// Draw weighted boxes (red < orange < cyan < green) (useless ?)
for (unsigned i = 0; i < balance.size(); ++i)
@@ -297,36 +410,18 @@ int main(int argc, char** argv)
}
// Write images and close XML
- // FIXME To externalize
- path.str(""); path << "output/p" << page << "_0_bin.pbm";
- io::pbm::save(bin, path.str());
-
- path.str(""); path << "output/p" << page << "_1_bin_without_separators.pbm";
- io::pbm::save(bin_without_separators, path.str());
-
- path.str(""); path << "output/p" << page << "_2_denoised.pbm";
- io::pbm::save(denoised, path.str());
-
- path.str(""); path << "output/p" << page << "_3_reverse.pbm";
- io::pbm::save(reverse, path.str());
-
- path.str(""); path << "output/p" << page << "_4_reverse_selection.pbm";
- io::pbm::save(reverse_selection, path.str());
-
- path.str(""); path << "output/p" << page << "_5_bin_merged.pbm";
- io::pbm::save(bin_merged, path.str());
-
- path.str(""); path << "output/p" << page << "_6_components.pbm";
- io::pbm::save(comp, path.str());
-
- path.str(""); path << "output/p" << page << "_7_links.ppm";
- io::ppm::save(ima_links, path.str());
-
- path.str(""); path << "output/p" << page << "_8_groups.ppm";
- io::ppm::save(ima_groups, path.str());
-
- path.str(""); path << "output/p" << page << "_9_valid.ppm";
- io::ppm::save(ima_valid, path.str());
+ unsigned number = 0;
+
+ write_image(bin, "bin", page, number, path);
+ write_image(bin_without_separators, "bin_without_separators", page, number, path);
+ write_image(denoised, "denoised", page, number, path);
+ write_image(reverse, "reverse", page, number, path);
+ write_image(reverse_selection, "", page, number, path);
+ write_image(bin_merged, "reverse_selection", page, number, path);
+ write_image(comp, "bin_merged", page, number, path);
+ write_image(ima_links, "components", page, number, path);
+ write_image(ima_groups, "groups", page, number, path);
+ write_image(ima_valid, "valid", page, number, path);
}
end_xml(xml);
--
1.7.2.5
1
0

olena-2.0-405-gc621ab0 scribo/debug/links_image.hh: Make use of object_link interface.
by Guillaume Lazzara 19 Mar '13
by Guillaume Lazzara 19 Mar '13
19 Mar '13
---
scribo/ChangeLog | 4 ++++
scribo/scribo/debug/links_image.hh | 5 +++--
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index f1c29f3..a58900d 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,5 +1,9 @@
2013-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+ * scribo/debug/links_image.hh: Make use of object_link interface.
+
+2013-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
* demo/xml2doc/main.cc: Kill warnings.
2013-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
diff --git a/scribo/scribo/debug/links_image.hh b/scribo/scribo/debug/links_image.hh
index c41446f..30fb071 100644
--- a/scribo/scribo/debug/links_image.hh
+++ b/scribo/scribo/debug/links_image.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2011, 2013 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2011, 2013 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -87,7 +88,7 @@ namespace scribo
scribo::draw::bounding_boxes(links_image, comps, literal::blue);
for_all_links(l, links)
- if (links(l) != l)
+ if (links.is_linked(l))
mln::draw::line(links_image,
primitive::link::internal::compute_anchor(comps,
l,
--
1.7.2.5
1
0

olena-2.0-404-g7c5e9cc Merge branch 'exp/trace' into unstable/scribo
by Guillaume Lazzara 19 Mar '13
by Guillaume Lazzara 19 Mar '13
19 Mar '13
This is a merge commit message of the following branches:
Merge: b6f5568 4b98621
Conflicts:
scribo/ChangeLog
milena/ChangeLog | 426 +++++++++++++
milena/doc/benchmark/canvas.cc | 6 +-
.../examples/split/tuto3_first_routine-1.cc.raw | 3 +-
.../examples/split/tuto3_first_routine-3.cc.raw | 2 +-
.../examples/split/tuto3_first_routine-8.cc.raw | 1 -
milena/doc/examples/split/tuto3_trace-1.cc.raw | 2 +-
milena/doc/examples/split/tuto3_trace-2.cc.raw | 2 +-
milena/doc/examples/trash/tuto_bis.cc | 3 +-
milena/doc/examples/tuto3/first_routine.cc | 6 +-
milena/doc/examples/tuto3/trace.cc | 6 +-
milena/doc/outputs/accu-right-instantiation.txt | 2 +
milena/doc/outputs/borderthickness.txt | 2 +
milena/doc/outputs/estim-sites.txt | 2 +
milena/doc/outputs/extend.txt | 31 +
milena/doc/outputs/fill-call-1.txt | 8 +
milena/doc/outputs/fill-imageif-cfun.txt | 10 +
milena/doc/outputs/fill-part-image.txt | 18 +
milena/doc/outputs/fill-subdomain-shorter.txt | 20 +
milena/doc/outputs/fill-subdomain.txt | 41 ++
milena/doc/outputs/fill.txt | 4 +
milena/doc/outputs/ima-load.txt | 1 +
milena/doc/outputs/ima-save.txt | 1 +
milena/doc/outputs/ima2d-6-clone.txt | 7 +
milena/doc/outputs/ima2d-7.txt | 6 +
milena/doc/outputs/ima2d-rot.txt | 32 +
milena/doc/outputs/labeling-compute.txt | 19 +
milena/doc/outputs/logical-not.txt | 10 +
milena/doc/outputs/paste-call-1.txt | 15 +
milena/doc/outputs/split/tuto3_println-1.txt | 11 +
milena/doc/outputs/split/tuto3_println-2.txt | 7 +
milena/doc/outputs/tuto2_first_image.txt | 7 +
milena/doc/outputs/tuto3_colorize.txt | 7 +
milena/doc/outputs/tuto3_first_routine.txt | 48 ++
milena/doc/outputs/tuto3_println.txt | 18 +
milena/doc/outputs/tuto3_rw_image.txt | 24 +
.../outputs/tuto4_genericity_and_algorithms.txt | 83 +++
milena/mln/accu/compute.hh | 9 +-
milena/mln/accu/image/init.hh | 9 +-
milena/mln/accu/image/set_value.hh | 18 +-
milena/mln/accu/image/take.hh | 18 +-
milena/mln/accu/image/take_as_init.hh | 18 +-
milena/mln/accu/image/take_n_times.hh | 18 +-
milena/mln/accu/image/to_result.hh | 9 +-
milena/mln/accu/image/untake.hh | 18 +-
milena/mln/accu/stat/histo3d_rgb.hh | 13 +-
milena/mln/accu/transform.hh | 12 +-
milena/mln/accu/transform_diagonal.hh | 6 +-
milena/mln/accu/transform_directional.hh | 6 +-
milena/mln/accu/transform_line.hh | 15 +-
milena/mln/accu/transform_snake.hh | 6 +-
milena/mln/accu/transform_stop.hh | 12 +-
milena/mln/all.hh | 2 +-
milena/mln/arith/diff_abs.hh | 3 +-
milena/mln/arith/div.hh | 18 +-
milena/mln/arith/div.spe.hh | 6 +-
milena/mln/arith/min.hh | 16 +-
milena/mln/arith/min.spe.hh | 6 +-
milena/mln/arith/minus.hh | 33 +-
milena/mln/arith/plus.hh | 36 +-
milena/mln/arith/revert.hh | 9 +-
milena/mln/arith/revert.spe.hh | 8 +-
milena/mln/arith/times.hh | 18 +-
milena/mln/arith/times.spe.hh | 6 +-
milena/mln/binarization/binarization.hh | 6 +-
milena/mln/binarization/threshold.hh | 3 +-
milena/mln/border/adjust.hh | 3 +-
milena/mln/border/duplicate.hh | 12 +-
milena/mln/border/equalize.hh | 6 +-
milena/mln/border/fill.hh | 9 +-
milena/mln/border/find.hh | 3 +-
milena/mln/border/get.hh | 9 +-
milena/mln/border/mirror.hh | 15 +-
milena/mln/border/resize.hh | 3 +-
milena/mln/border/resize_equal.hh | 3 +-
milena/mln/canvas/browsing/backdiagonal2d.hh | 3 +-
milena/mln/canvas/browsing/diagonal2d.hh | 3 +-
.../canvas/browsing/dir_struct_elt_incr_update.hh | 3 +-
milena/mln/canvas/browsing/directional.hh | 3 +-
milena/mln/canvas/browsing/fwd.hh | 3 +-
milena/mln/canvas/browsing/hyper_directional.hh | 3 +-
.../canvas/browsing/internal/graph_first_search.hh | 3 +-
milena/mln/canvas/browsing/snake_fwd.hh | 3 +-
milena/mln/canvas/browsing/snake_generic.hh | 3 +-
milena/mln/canvas/browsing/snake_vert.hh | 3 +-
milena/mln/canvas/distance_front.hh | 9 +-
milena/mln/canvas/distance_geodesic.hh | 9 +-
milena/mln/canvas/labeling/blobs.hh | 7 +-
milena/mln/canvas/labeling/generic.hh | 9 +-
milena/mln/canvas/labeling/sorted.hh | 8 +-
milena/mln/canvas/labeling/video.hh | 10 +-
milena/mln/canvas/morpho/attribute_filter.hh | 6 +-
milena/mln/clustering/kmean_rgb.hh | 61 +--
milena/mln/convert/to.hh | 7 +-
milena/mln/convert/to_qimage.hh | 3 +-
milena/mln/convert/to_qimage_nocopy.hh | 3 +-
milena/mln/core/concept/object.hh | 4 +-
milena/mln/core/routine/duplicate.hh | 3 +-
milena/mln/core/routine/initialize.hh | 7 +-
milena/mln/data/abs.hh | 6 +-
milena/mln/data/apply.hh | 6 +-
milena/mln/data/apply.spe.hh | 3 +-
milena/mln/data/approx/median.hh | 6 +-
milena/mln/data/compare.hh | 9 +-
milena/mln/data/compute.hh | 3 +-
milena/mln/data/compute_in_window.hh | 9 +-
milena/mln/data/convert.hh | 9 +-
milena/mln/data/fill.hh | 3 +-
milena/mln/data/fill_with_image.hh | 6 +-
milena/mln/data/fill_with_image.spe.hh | 12 +-
milena/mln/data/fill_with_value.hh | 6 +-
milena/mln/data/fill_with_value.spe.hh | 9 +-
milena/mln/data/median.hh | 9 +-
milena/mln/data/memcpy_.hh | 6 +-
milena/mln/data/memset_.hh | 9 +-
milena/mln/data/paste.hh | 6 +-
milena/mln/data/paste.spe.hh | 12 +-
milena/mln/data/paste_without_localization.hh | 15 +-
milena/mln/data/replace.hh | 6 +-
milena/mln/data/saturate.hh | 9 +-
milena/mln/data/sort_offsets.hh | 18 +-
milena/mln/data/split.hh | 3 +-
milena/mln/data/stretch.hh | 12 +-
milena/mln/data/to_enc.hh | 3 +-
milena/mln/data/transform.hh | 12 +-
milena/mln/data/transform.spe.hh | 24 +-
milena/mln/data/transform_inplace.hh | 30 +-
milena/mln/data/update.hh | 9 +-
milena/mln/data/wrap.hh | 3 +-
milena/mln/debug/draw_graph.hh | 12 +-
milena/mln/debug/iota.hh | 3 +-
milena/mln/debug/mosaic.hh | 3 +-
milena/mln/debug/println.hh | 3 +-
milena/mln/debug/put_word.hh | 4 +-
milena/mln/debug/slices_2d.hh | 6 +-
milena/mln/debug/superpose.hh | 3 +-
milena/mln/debug/trace.hh | 218 +++++++
milena/mln/debug/z_order.hh | 3 +-
milena/mln/draw/dashed_line.hh | 8 +-
milena/mln/draw/line.hh | 8 +-
milena/mln/essential/routine.hh | 5 +-
milena/mln/extension/adjust.hh | 12 +-
milena/mln/extension/adjust_duplicate.hh | 12 +-
milena/mln/extension/adjust_fill.hh | 12 +-
milena/mln/extension/duplicate.hh | 3 +-
milena/mln/extension/fill.hh | 3 +-
milena/mln/fun/x2x/composed.hh | 3 +-
milena/mln/geom/chamfer.hh | 3 +-
milena/mln/geom/crop.hh | 3 +-
milena/mln/geom/crop_without_localization.hh | 3 +-
milena/mln/geom/horizontal_symmetry.hh | 3 +-
milena/mln/geom/max_ind.hh | 3 +-
milena/mln/geom/min_ind.hh | 3 +-
milena/mln/geom/ninds.hh | 3 +-
milena/mln/geom/nsites.hh | 3 +-
milena/mln/geom/rotate.hh | 6 +-
milena/mln/geom/seeds2tiling.hh | 6 +-
milena/mln/geom/seeds2tiling_roundness.hh | 6 +-
milena/mln/geom/translate.hh | 3 +-
milena/mln/geom/vertical_symmetry.hh | 3 +-
milena/mln/graph/compute.hh | 3 +-
milena/mln/graph/labeling.hh | 3 +-
milena/mln/graph/to_neighb.hh | 3 +-
milena/mln/graph/to_win.hh | 3 +-
milena/mln/histo/compute.hh | 3 +-
milena/mln/histo/equalize.hh | 3 +-
milena/mln/io/cloud/load.hh | 3 +-
milena/mln/io/cloud/save.hh | 3 +-
milena/mln/io/dicom/get_header.hh | 3 +-
milena/mln/io/dicom/load.hh | 9 +-
milena/mln/io/dump/get_header.hh | 3 +-
milena/mln/io/dump/load.hh | 3 +-
milena/mln/io/dump/save.hh | 3 +-
milena/mln/io/fits/load.hh | 3 +-
milena/mln/io/fld/load.hh | 3 +-
milena/mln/io/fld/save.hh | 3 +-
milena/mln/io/magick/load.hh | 4 +-
milena/mln/io/magick/save.hh | 10 +-
milena/mln/io/off/load.hh | 9 +-
milena/mln/io/off/save.hh | 12 +-
milena/mln/io/pbm/load.hh | 3 +-
milena/mln/io/pbm/save.hh | 3 +-
milena/mln/io/pbms/load.hh | 3 +-
milena/mln/io/pdf/get_header.hh | 3 +-
milena/mln/io/pdf/load.hh | 9 +-
milena/mln/io/pfm/load.hh | 3 +-
milena/mln/io/pfm/save.hh | 3 +-
milena/mln/io/pgm/load.hh | 6 +-
milena/mln/io/pgm/save.hh | 3 +-
milena/mln/io/pgms/load.hh | 3 +-
milena/mln/io/plot/load.hh | 3 +-
milena/mln/io/plot/save.hh | 9 +-
milena/mln/io/pnm/load.hh | 6 +-
milena/mln/io/pnm/save.hh | 3 +-
milena/mln/io/pnms/load.hh | 6 +-
milena/mln/io/ppm/load.hh | 6 +-
milena/mln/io/ppms/load.hh | 3 +-
milena/mln/io/raw/get_header.hh | 3 +-
milena/mln/io/raw/load.hh | 3 +-
milena/mln/io/raw/save.hh | 3 +-
milena/mln/io/svg/simple_svg_1.0.0.hh | 642 ++++++++++++++++++++
milena/mln/io/tiff/load.hh | 3 +-
milena/mln/io/txt/save.hh | 3 +-
milena/mln/labeling/background.hh | 3 +-
milena/mln/labeling/blobs.hh | 3 +-
milena/mln/labeling/blobs_and_compute.hh | 3 +-
milena/mln/labeling/colorize.hh | 8 +-
milena/mln/labeling/compute.hh | 30 +-
milena/mln/labeling/compute_image.hh | 9 +-
milena/mln/labeling/fill_holes.hh | 3 +-
milena/mln/labeling/flat_zones.hh | 3 +-
milena/mln/labeling/foreground.hh | 3 +-
milena/mln/labeling/mean_values.hh | 9 +-
milena/mln/labeling/n_max.hh | 3 +-
milena/mln/labeling/pack.hh | 6 +-
milena/mln/labeling/regional_maxima.hh | 3 +-
milena/mln/labeling/regional_minima.hh | 3 +-
milena/mln/labeling/relabel.hh | 12 +-
milena/mln/labeling/superpose.hh | 3 +-
milena/mln/labeling/value.hh | 3 +-
milena/mln/labeling/value.spe.hh | 3 +-
milena/mln/labeling/value_and_compute.hh | 3 +-
milena/mln/labeling/wrap.hh | 3 +-
milena/mln/linear/convolve.hh | 9 +-
milena/mln/linear/convolve_2x1d.hh | 3 +-
milena/mln/linear/convolve_directional.hh | 3 +-
milena/mln/linear/gaussian_1d.hh | 3 +-
milena/mln/linear/gaussian_directional_2d.hh | 3 +-
milena/mln/linear/lap.hh | 12 +-
milena/mln/linear/log.hh | 11 +-
milena/mln/linear/sobel_2d.hh | 12 +-
milena/mln/logical/and.hh | 6 +-
milena/mln/logical/and_not.hh | 6 +-
milena/mln/logical/not.hh | 6 +-
milena/mln/logical/not.spe.hh | 6 +-
milena/mln/logical/or.hh | 6 +-
milena/mln/logical/xor.hh | 6 +-
milena/mln/make/dual_neighb.hh | 3 +-
milena/mln/make/dummy_p_edges.hh | 3 +-
milena/mln/make/dummy_p_vertices.hh | 3 +-
milena/mln/make/edge_image.hh | 18 +-
milena/mln/make/influence_zone_adjacency_graph.hh | 6 +-
milena/mln/make/p_edges_with_mass_centers.hh | 3 +-
milena/mln/make/p_vertices_with_mass_centers.hh | 3 +-
milena/mln/make/rag_and_labeled_wsl.hh | 6 +-
milena/mln/make/region_adjacency_graph.hh | 6 +-
milena/mln/make/relabelfun.hh | 6 +-
milena/mln/make/vertex_image.hh | 6 +-
milena/mln/make/w_window.hh | 3 +-
milena/mln/morpho/algebraic_filter.hh | 3 +-
milena/mln/morpho/approx/dilation.hh | 9 +-
milena/mln/morpho/approx/erosion.hh | 9 +-
milena/mln/morpho/closing/algebraic.hh | 3 +-
milena/mln/morpho/closing/approx/structural.hh | 3 +-
milena/mln/morpho/closing/area.hh | 3 +-
milena/mln/morpho/closing/area_on_vertices.hh | 3 +-
milena/mln/morpho/closing/height.hh | 3 +-
milena/mln/morpho/closing/leveling.hh | 3 +-
milena/mln/morpho/closing/structural.hh | 3 +-
milena/mln/morpho/closing/sum.hh | 3 +-
milena/mln/morpho/closing/volume.hh | 3 +-
milena/mln/morpho/complementation.hh | 6 +-
milena/mln/morpho/contrast.hh | 3 +-
milena/mln/morpho/dilation.hh | 9 +-
milena/mln/morpho/elementary/closing.hh | 3 +-
milena/mln/morpho/elementary/dilation.hh | 3 +-
milena/mln/morpho/elementary/erosion.hh | 3 +-
milena/mln/morpho/elementary/gradient.hh | 12 +-
milena/mln/morpho/elementary/gradient_external.hh | 3 +-
milena/mln/morpho/elementary/gradient_internal.hh | 3 +-
milena/mln/morpho/elementary/laplacian.hh | 3 +-
milena/mln/morpho/elementary/like_ero_fun.hh | 6 +-
milena/mln/morpho/elementary/like_ero_set.hh | 6 +-
milena/mln/morpho/elementary/opening.hh | 3 +-
milena/mln/morpho/elementary/top_hat.hh | 9 +-
milena/mln/morpho/erosion.hh | 9 +-
milena/mln/morpho/general.hh | 9 +-
milena/mln/morpho/general.spe.hh | 21 +-
milena/mln/morpho/gradient.hh | 9 +-
milena/mln/morpho/hit_or_miss.hh | 21 +-
milena/mln/morpho/laplacian.hh | 6 +-
milena/mln/morpho/leveling_filter.hh | 3 +-
milena/mln/morpho/line_gradient.hh | 3 +-
milena/mln/morpho/meyer_wst.hh | 3 +-
milena/mln/morpho/min.hh | 6 +-
milena/mln/morpho/minus.hh | 3 +-
milena/mln/morpho/opening/algebraic.hh | 3 +-
milena/mln/morpho/opening/approx/structural.hh | 3 +-
milena/mln/morpho/opening/area.hh | 3 +-
milena/mln/morpho/opening/area_on_vertices.hh | 3 +-
milena/mln/morpho/opening/height.hh | 3 +-
milena/mln/morpho/opening/leveling.hh | 3 +-
milena/mln/morpho/opening/structural.hh | 3 +-
milena/mln/morpho/opening/volume.hh | 3 +-
milena/mln/morpho/plus.hh | 3 +-
milena/mln/morpho/rank_filter.hh | 12 +-
.../reconstruction/by_dilation/union_find.hh | 6 +-
.../morpho/reconstruction/by_erosion/union_find.hh | 6 +-
milena/mln/morpho/skeleton_constrained.hh | 9 +-
milena/mln/morpho/thick_miss.hh | 3 +-
milena/mln/morpho/thickening.hh | 3 +-
milena/mln/morpho/thin_fit.hh | 3 +-
milena/mln/morpho/thinning.hh | 3 +-
milena/mln/morpho/top_hat.hh | 9 +-
milena/mln/morpho/tree/component_tree.hh | 6 +-
milena/mln/morpho/tree/compute_attribute_image.hh | 6 +-
milena/mln/morpho/tree/compute_parent.hh | 6 +-
milena/mln/morpho/tree/dual_input_tree.hh | 3 +-
milena/mln/morpho/tree/filter/direct.hh | 3 +-
milena/mln/morpho/tree/filter/filter.hh | 3 +-
milena/mln/morpho/tree/filter/max.hh | 3 +-
milena/mln/morpho/tree/filter/min.hh | 3 +-
milena/mln/morpho/tree/filter/subtractive.hh | 3 +-
milena/mln/morpho/tree/impl/dual_hqueue.hh | 3 +-
milena/mln/morpho/tree/impl/dual_union_find.hh | 3 +-
milena/mln/morpho/tree/max.hh | 3 +-
milena/mln/morpho/watershed/flooding.hh | 9 +-
milena/mln/morpho/watershed/superpose.hh | 3 +-
milena/mln/opt/at.hh | 5 +-
milena/mln/registration/icp.hh | 3 +-
milena/mln/set/card.hh | 9 +-
milena/mln/set/compute.hh | 9 +-
milena/mln/set/compute_with_weights.hh | 15 +-
milena/mln/set/diff.hh | 3 +-
milena/mln/set/get.hh | 3 +-
milena/mln/set/has.hh | 3 +-
milena/mln/set/inter.hh | 3 +-
milena/mln/set/sym_diff.hh | 3 +-
milena/mln/set/uni.hh | 3 +-
milena/mln/set/unique.hh | 3 +-
milena/mln/subsampling/antialiased.hh | 13 +-
milena/mln/test/positive.hh | 3 +-
milena/mln/test/predicate.hh | 9 +-
milena/mln/topo/skeleton/crest.hh | 9 +-
milena/mln/trace/all.hh | 52 --
milena/mln/trace/entering.hh | 89 ---
milena/mln/trace/essential.hh | 36 --
milena/mln/trace/exiting.hh | 118 ----
milena/mln/trace/quiet.hh | 84 ---
milena/mln/trace/resume.hh | 60 --
milena/mln/trace/stop.hh | 63 --
milena/mln/trace/warning.hh | 64 --
.../distance_and_closest_point_geodesic.hh | 6 +-
.../distance_and_influence_zone_geodesic.hh | 3 +-
milena/mln/transform/distance_front.hh | 3 +-
milena/mln/transform/distance_geodesic.hh | 3 +-
milena/mln/transform/hough.hh | 3 +-
milena/mln/transform/influence_zone_front.hh | 3 +-
milena/mln/transform/influence_zone_geodesic.hh | 6 +-
.../transform/influence_zone_geodesic_saturated.hh | 3 +-
milena/mln/upscaling/art/scale2x.hh | 3 +-
milena/mln/upscaling/art/scale3x.hh | 3 +-
milena/mln/util/tree_fast_to_image.hh | 6 +-
milena/mln/util/tree_to_fast.hh | 8 +-
milena/mln/util/tree_to_image.hh | 21 +-
milena/mln/win/diff.hh | 3 +-
milena/mln/win/inter.hh | 3 +-
milena/mln/win/shift.hh | 3 +-
milena/mln/win/sym.hh | 6 +-
milena/mln/world/binary_2d/enlarge.hh | 3 +-
milena/mln/world/binary_2d/subsample.hh | 4 +-
milena/mln/world/inter_pixel/compute.hh | 3 +-
.../mln/world/inter_pixel/dim2/make_edge_image.hh | 3 +-
milena/mln/world/inter_pixel/full2image.hh | 3 +-
milena/mln/world/inter_pixel/immerse.hh | 3 +-
milena/mln/world/rgb/invert.hh | 9 +-
milena/mln/world/rgb/invert.spe.hh | 9 +-
milena/tests/arith/diff_abs.cc | 2 +-
milena/tests/arith/minus.cc | 2 +-
milena/tests/arith/plus.cc | 4 +-
milena/tests/arith/revert.cc | 2 +-
milena/tests/arith/times.cc | 2 +-
milena/tests/data/fill_with_image.cc | 4 +-
milena/tests/data/paste.cc | 4 +-
milena/tests/geom/nsites.cc | 2 +-
milena/tests/linear/gaussian.cc | 6 +-
milena/tests/morpho/closing/algebraic.cc | 2 +-
milena/tests/morpho/elementary/closing.cc | 2 +-
milena/tests/morpho/elementary/dilation.cc | 2 +-
milena/tests/morpho/elementary/erosion.cc | 2 +-
milena/tests/morpho/elementary/opening.cc | 2 +-
milena/tests/morpho/elementary/top_hat.cc | 2 +-
milena/tests/morpho/general.cc | 4 +-
milena/tests/morpho/opening/algebraic.cc | 2 +-
milena/tests/morpho/top_hat.cc | 2 +-
milena/tests/opt/at.cc | 4 +-
milena/tests/opt/element.cc | 4 +-
milena/tests/opt/value.cc | 5 +-
milena/tests/unit_test/unit-tests.mk | 8 -
scribo/ChangeLog | 302 +++++++++
scribo/demo/xml2doc/main.cc | 1 -
scribo/scribo/binarization/global_threshold.hh | 3 +-
.../scribo/binarization/global_threshold_auto.hh | 3 +-
.../binarization/internal/local_threshold_core.hh | 9 +-
scribo/scribo/binarization/kim.hh | 3 +-
scribo/scribo/binarization/local_threshold.hh | 9 +-
scribo/scribo/binarization/niblack.hh | 3 +-
scribo/scribo/binarization/niblack_fast.hh | 3 +-
scribo/scribo/binarization/niblack_threshold.hh | 3 +-
scribo/scribo/binarization/otsu.hh | 2 +-
scribo/scribo/binarization/otsu_threshold.hh | 3 +-
scribo/scribo/binarization/sauvola.hh | 3 +-
scribo/scribo/binarization/sauvola_ms.hh | 9 +-
scribo/scribo/binarization/sauvola_ms_split.hh | 3 +-
scribo/scribo/binarization/sauvola_threshold.hh | 3 +-
scribo/scribo/binarization/singh.hh | 3 +-
scribo/scribo/binarization/wolf.hh | 3 +-
scribo/scribo/binarization/wolf_fast.hh | 3 +-
scribo/scribo/canvas/integral_browsing.hh | 12 +-
scribo/scribo/convert/from_base64.hh | 9 +-
scribo/scribo/convert/to_base64.hh | 3 +-
scribo/scribo/core/central_sites.hh | 3 +-
scribo/scribo/core/erase_objects.hh | 3 +-
scribo/scribo/core/init_integral_image.hh | 3 +-
scribo/scribo/debug/alignment_decision_image.hh | 3 +-
scribo/scribo/debug/bboxes_enlarged_image.hh | 3 +-
scribo/scribo/debug/bboxes_image.hh | 9 +-
scribo/scribo/debug/char_space_image.hh | 3 +-
scribo/scribo/debug/decision_image.hh | 6 +-
scribo/scribo/debug/highlight_text_area.hh | 12 +-
scribo/scribo/debug/line_info_image.hh | 3 +-
scribo/scribo/debug/linked_bboxes_image.hh | 9 +-
scribo/scribo/debug/links_decision_image.hh | 3 +-
scribo/scribo/debug/links_image.hh | 3 +-
.../scribo/debug/looks_like_a_text_line_image.hh | 3 +-
scribo/scribo/debug/mean_and_base_lines_image.hh | 3 +-
scribo/scribo/debug/save_comp_diff.hh | 3 +-
scribo/scribo/debug/save_label_image.hh | 3 +-
scribo/scribo/debug/save_table_image.hh | 6 +-
scribo/scribo/debug/text_areas_image.hh | 3 +-
scribo/scribo/draw/bounding_box_links.hh | 9 +-
scribo/scribo/draw/bounding_boxes.hh | 6 +-
scribo/scribo/draw/groups_bboxes.hh | 3 +-
scribo/scribo/draw/line_components.hh | 3 +-
scribo/scribo/estim/components_features.hh | 3 +-
scribo/scribo/estim/font_boldness.hh | 12 +-
scribo/scribo/estim/font_color.hh | 9 +-
scribo/scribo/estim/internal/compute_skeleton.hh | 3 +-
scribo/scribo/estim/object_groups_mean_width.hh | 3 +-
scribo/scribo/filter/common/objects_photo.hh | 3 +-
scribo/scribo/filter/images_in_paragraph.hh | 3 +-
scribo/scribo/filter/internal/alignment_angle.hh | 11 +-
scribo/scribo/filter/internal/component_aligned.hh | 3 +-
scribo/scribo/filter/internal/compute.hh | 6 +-
scribo/scribo/filter/object_groups_mean_width.hh | 3 +-
scribo/scribo/filter/object_groups_size_ratio.hh | 3 +-
scribo/scribo/filter/object_groups_small.hh | 3 +-
scribo/scribo/filter/object_groups_with_holes.hh | 7 +-
scribo/scribo/filter/object_links_aligned.hh | 3 +-
scribo/scribo/filter/object_links_bbox_h_ratio.hh | 3 +-
scribo/scribo/filter/object_links_bbox_overlap.hh | 3 +-
scribo/scribo/filter/object_links_bbox_ratio.hh | 3 +-
scribo/scribo/filter/object_links_bbox_w_ratio.hh | 3 +-
.../scribo/filter/object_links_bottom_aligned.hh | 3 +-
.../scribo/filter/object_links_center_aligned.hh | 3 +-
scribo/scribo/filter/object_links_left_aligned.hh | 3 +-
.../filter/object_links_non_aligned_simple.hh | 3 +-
scribo/scribo/filter/object_links_right_aligned.hh | 3 +-
scribo/scribo/filter/object_links_top_aligned.hh | 3 +-
scribo/scribo/filter/objects_h_thick.hh | 6 +-
scribo/scribo/filter/objects_h_thin.hh | 6 +-
scribo/scribo/filter/objects_large.hh | 6 +-
scribo/scribo/filter/objects_on_border.hh | 3 +-
scribo/scribo/filter/objects_size_ratio.hh | 3 +-
scribo/scribo/filter/objects_small.hh | 6 +-
scribo/scribo/filter/objects_thick.hh | 6 +-
scribo/scribo/filter/objects_thin.hh | 6 +-
scribo/scribo/filter/objects_v_thick.hh | 6 +-
scribo/scribo/filter/objects_v_thin.hh | 6 +-
scribo/scribo/filter/objects_with_holes.hh | 8 +-
scribo/scribo/filter/paragraphs_bbox_overlap.hh | 3 +-
scribo/scribo/filter/paragraphs_in_borders.hh | 3 +-
scribo/scribo/filter/paragraphs_in_image.hh | 3 +-
scribo/scribo/filter/separators_in_borders.hh | 3 +-
scribo/scribo/filter/separators_in_element.hh | 3 +-
scribo/scribo/filter/separators_in_paragraph.hh | 3 +-
scribo/scribo/filter/separators_vert_in_borders.hh | 3 +-
scribo/scribo/io/img/save.hh | 8 +-
scribo/scribo/io/text_boxes/save.hh | 3 +-
scribo/scribo/io/xml/internal/save_image_to_xml.hh | 3 +-
scribo/scribo/io/xml/save.hh | 6 +-
scribo/scribo/layout/xy_cut.hh | 18 +-
scribo/scribo/make/debug_filename.hh | 8 +-
scribo/scribo/make/influence_zone_graph.hh | 3 +-
scribo/scribo/make/text_blocks_image.hh | 3 +-
scribo/scribo/make/text_components_image.hh | 3 +-
scribo/scribo/postprocessing/fill_object_holes.hh | 10 +-
.../postprocessing/images_to_drop_capital.hh | 3 +-
scribo/scribo/preprocessing/crop.hh | 3 +-
.../preprocessing/crop_without_localization.hh | 3 +-
scribo/scribo/preprocessing/denoise.hh | 3 +-
scribo/scribo/preprocessing/denoise_bg.hh | 3 +-
scribo/scribo/preprocessing/denoise_fg.hh | 3 +-
scribo/scribo/preprocessing/deskew.hh | 3 +-
scribo/scribo/preprocessing/deskew_crop.hh | 3 +-
.../scribo/preprocessing/homogeneous_contrast.hh | 3 +-
scribo/scribo/preprocessing/rotate_90.hh | 3 +-
scribo/scribo/preprocessing/split_bg_fg.hh | 12 +-
scribo/scribo/primitive/extract/alignments.hh | 10 +-
scribo/scribo/primitive/extract/canvas.hh | 3 +-
scribo/scribo/primitive/extract/cells.hh | 3 +-
scribo/scribo/primitive/extract/components.hh | 6 +-
.../primitive/extract/horizontal_separators.hh | 3 +-
.../scribo/primitive/extract/lines_discontinued.hh | 3 +-
.../primitive/extract/lines_h_discontinued.hh | 3 +-
scribo/scribo/primitive/extract/lines_h_pattern.hh | 3 +-
scribo/scribo/primitive/extract/lines_h_single.hh | 6 +-
scribo/scribo/primitive/extract/lines_h_thick.hh | 3 +-
.../primitive/extract/lines_h_thick_and_single.hh | 3 +-
.../primitive/extract/lines_h_thick_and_thin.hh | 3 +-
scribo/scribo/primitive/extract/lines_pattern.hh | 9 +-
scribo/scribo/primitive/extract/lines_thick.hh | 3 +-
.../primitive/extract/lines_v_discontinued.hh | 3 +-
scribo/scribo/primitive/extract/lines_v_pattern.hh | 3 +-
scribo/scribo/primitive/extract/lines_v_single.hh | 6 +-
scribo/scribo/primitive/extract/lines_v_thick.hh | 3 +-
.../primitive/extract/lines_v_thick_and_single.hh | 3 +-
scribo/scribo/primitive/extract/non_text.hh | 3 +-
scribo/scribo/primitive/extract/non_text_hdoc.hh | 3 +-
scribo/scribo/primitive/extract/non_text_kmean.hh | 3 +-
scribo/scribo/primitive/extract/separators.hh | 3 +-
.../primitive/extract/separators_nonvisible.hh | 3 +-
.../primitive/extract/vertical_separators.hh | 3 +-
scribo/scribo/primitive/group/apply.hh | 6 +-
scribo/scribo/primitive/group/from_double_link.hh | 3 +-
.../scribo/primitive/group/from_double_link_any.hh | 3 +-
scribo/scribo/primitive/group/from_graph.hh | 3 +-
scribo/scribo/primitive/group/from_single_link.hh | 3 +-
scribo/scribo/primitive/identify.hh | 8 +-
.../scribo/primitive/internal/find_graph_link.hh | 3 +-
scribo/scribo/primitive/internal/rd.hh | 6 +-
.../scribo/primitive/internal/update_graph_link.hh | 3 +-
scribo/scribo/primitive/link/compute.hh | 3 +-
scribo/scribo/primitive/link/compute_several.hh | 3 +-
.../primitive/link/internal/compute_anchor.hh | 4 +-
scribo/scribo/primitive/link/merge_double_link.hh | 3 +-
.../link/merge_double_link_closest_aligned.hh | 3 +-
scribo/scribo/primitive/link/with_graph.hh | 3 +-
scribo/scribo/primitive/link/with_rag.hh | 3 +-
.../scribo/primitive/link/with_several_graphes.hh | 3 +-
.../primitive/link/with_several_left_links.hh | 3 +-
.../link/with_several_right_closest_links.hh | 3 +-
.../primitive/link/with_several_right_links.hh | 3 +-
.../link/with_several_right_links_overlap.hh | 3 +-
.../scribo/primitive/link/with_single_down_link.hh | 3 +-
.../scribo/primitive/link/with_single_left_link.hh | 3 +-
.../link/with_single_left_link_dmax_ratio.hh | 3 +-
.../with_single_left_link_dmax_ratio_aligned.hh | 3 +-
.../primitive/link/with_single_right_link.hh | 3 +-
.../link/with_single_right_link_bottom.hh | 3 +-
.../link/with_single_right_link_dmax_ratio.hh | 3 +-
.../with_single_right_link_dmax_ratio_aligned.hh | 3 +-
.../primitive/link/with_single_right_link_top.hh | 3 +-
.../scribo/primitive/link/with_single_up_link.hh | 3 +-
scribo/scribo/primitive/merge/components.hh | 3 +-
.../primitive/regroup/from_single_left_link.hh | 3 +-
.../regroup/from_single_left_link_wrt_h_ratio.hh | 3 +-
scribo/scribo/primitive/remove/separators.hh | 3 +-
scribo/scribo/subsampling/bilinear.hh | 3 +-
scribo/scribo/subsampling/integral.hh | 12 +-
scribo/scribo/subsampling/integral_single_image.hh | 12 +-
scribo/scribo/table/align_lines_horizontaly.hh | 3 +-
scribo/scribo/table/align_lines_verticaly.hh | 3 +-
scribo/scribo/table/connect_horizontal_lines.hh | 3 +-
scribo/scribo/table/connect_vertical_lines.hh | 3 +-
scribo/scribo/table/erase.hh | 3 +-
scribo/scribo/table/extract.hh | 3 +-
scribo/scribo/table/internal/align_lines.hh | 3 +-
scribo/scribo/table/internal/connect_lines.hh | 3 +-
scribo/scribo/table/internal/repair_lines.hh | 3 +-
scribo/scribo/table/rebuild.hh | 3 +-
scribo/scribo/table/repair_horizontal_lines.hh | 3 +-
scribo/scribo/table/repair_vertical_lines.hh | 3 +-
scribo/scribo/text/clean.hh | 3 +-
scribo/scribo/text/clean_inplace.hh | 3 +-
scribo/scribo/text/extract_lines.hh | 6 +-
scribo/scribo/text/extract_lines_with_features.hh | 3 +-
scribo/scribo/text/extract_lines_wo_merge.hh | 3 +-
scribo/scribo/text/look_like_text_lines.hh | 6 +-
scribo/scribo/text/paragraphs_closing.hh | 3 +-
scribo/scribo/text/recognition.hh | 12 +-
.../internal/text_in_doc_preprocess_functor.hh | 2 +-
scribo/scribo/toolchain/nepomuk/text_extraction.hh | 3 +-
scribo/scribo/toolchain/text_in_doc_preprocess.hh | 3 +-
scribo/scribo/toolchain/text_in_picture.hh | 3 +-
scribo/scribo/upsampling/bs2x.hh | 3 +-
scribo/scribo/upsampling/eagle.hh | 3 +-
scribo/scribo/util/box_intersection.hh | 3 +-
scribo/scribo/util/box_is_included.hh | 3 +-
scribo/scribo/util/component_precise_outline.hh | 4 +-
scribo/scribo/util/compute_sub_domains.hh | 3 +-
scribo/scribo/util/hex_to_color.hh | 3 +-
scribo/scribo/util/init_integral_image.hh | 12 +-
scribo/src/afp/regroup.hh | 5 +-
scribo/src/binarization/global_threshold.cc | 3 +-
scribo/src/binarization/kim.cc | 2 +-
scribo/src/binarization/niblack.cc | 3 +-
scribo/src/binarization/otsu.cc | 3 +-
.../src/binarization/pgm_global_threshold_auto.cc | 3 +-
.../binarization/pgm_niblack_threshold_image.cc | 3 +-
scribo/src/binarization/sauvola.cc | 3 +-
scribo/src/binarization/sauvola_debug.cc | 3 +-
scribo/src/binarization/sauvola_ms.cc | 2 +-
scribo/src/binarization/sauvola_ms_debug.cc | 2 +-
scribo/src/binarization/sauvola_ms_fg.cc | 2 +-
scribo/src/binarization/sauvola_ms_split.cc | 2 +-
scribo/src/binarization/singh.cc | 3 +-
scribo/src/binarization/wolf.cc | 3 +-
scribo/src/content_in_doc.cc | 3 +-
scribo/src/content_in_hdoc.cc | 3 +-
scribo/src/contest/DAE-2011/content_in_doc_dae.cc | 3 +-
scribo/src/contest/DAE-2011/content_in_hdoc_dae.cc | 3 +-
.../contest/hdlac-2011/content_in_hdoc_hdlac.cc | 3 +-
scribo/src/debug/highlight_text_area.cc | 3 +-
.../src/debug/show_info_median_inter_characters.cc | 3 +-
scribo/src/debug/show_info_x_height.cc | 3 +-
scribo/src/debug/show_lines_boldness.cc | 3 +-
scribo/src/debug/show_objects_large.cc | 2 +-
scribo/src/debug/show_objects_large_small.cc | 2 +-
scribo/src/debug/show_objects_small.cc | 2 +-
scribo/src/debug/show_objects_thick.cc | 2 +-
scribo/src/debug/show_objects_thin.cc | 2 +-
scribo/src/debug/show_paragraph_blocks.cc | 3 +-
scribo/src/debug/show_separators.cc | 3 +-
scribo/src/debug/show_stoppers.cc | 3 +-
scribo/src/debug/show_text_lines.cc | 3 +-
scribo/src/debug/show_text_lines_wo_seps.cc | 3 +-
scribo/src/filter/objects_large.cc | 3 +-
scribo/src/filter/objects_small.cc | 3 +-
scribo/src/filter/objects_thick.cc | 3 +-
scribo/src/filter/objects_thin.cc | 3 +-
scribo/src/filter/objects_with_holes.cc | 3 +-
scribo/src/filter/objects_with_holes_pgm.cc | 3 +-
scribo/src/misc/negate.cc | 7 +-
scribo/src/misc/superpose.cc | 7 +-
scribo/src/non_text_components.cc | 3 +-
scribo/src/pbm_text_in_doc.cc | 3 +-
scribo/src/postprocessing/fill_object_holes.cc | 3 +-
scribo/src/preprocessing/denoise_bg.cc | 3 +-
scribo/src/preprocessing/denoise_fg.cc | 3 +-
scribo/src/preprocessing/preprocess.cc | 3 +-
scribo/src/preprocessing/split_bg_fg.cc | 3 +-
scribo/src/preprocessing/subsample.cc | 3 +-
scribo/src/preprocessing/unskew.cc | 7 +-
scribo/src/primitive/extract/alignments.cc | 3 +-
.../src/primitive/extract/discontinued_hlines.cc | 3 +-
scribo/src/primitive/extract/discontinued_lines.cc | 3 +-
.../src/primitive/extract/discontinued_vlines.cc | 3 +-
scribo/src/primitive/extract/lines_pattern.cc | 3 +-
.../src/primitive/extract/separators_nonvisible.cc | 3 +-
scribo/src/primitive/extract/thick_hlines.cc | 3 +-
scribo/src/primitive/extract/thick_vlines.cc | 3 +-
.../src/primitive/find/find_discontinued_lines.cc | 3 +-
scribo/src/primitive/find/find_pattern_lines.cc | 3 +-
scribo/src/primitive/find/find_single_lines.cc | 3 +-
.../primitive/find/find_thick_and_single_lines.cc | 3 +-
scribo/src/primitive/find/find_thick_lines.cc | 3 +-
scribo/src/primitive/remove/separators.cc | 3 +-
scribo/src/table/erase.cc | 3 +-
scribo/src/table/extract.cc | 3 +-
scribo/src/text/cleantxt.cc | 3 +-
scribo/src/text/pbm_lines_recognition.cc | 3 +-
scribo/src/text/pbm_recognition.cc | 3 +-
scribo/src/text_in_picture.cc | 3 +-
scribo/src/text_in_picture_dual.cc | 2 +-
scribo/src/text_recognition_in_picture.cc | 3 +-
scribo/src/util/component_precise_outline.cc | 3 +-
666 files changed, 3135 insertions(+), 2675 deletions(-)
diff --cc milena/ChangeLog
index 3170851,48577a2..4504e7c
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@@ -1,22 -1,53 +1,70 @@@
+ 2013-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Introduce mln_trace_warning macro.
+
+ * mln/border/mirror.hh,
+ * mln/canvas/labeling/blobs.hh,
+ * mln/canvas/labeling/generic.hh,
+ * mln/canvas/labeling/sorted.hh,
+ * mln/canvas/labeling/video.hh,
+ * mln/data/stretch.hh,
+ * mln/debug/put_word.hh,
+ * mln/debug/trace.hh,
+ * mln/draw/dashed_line.hh,
+ * mln/draw/line.hh,
+ * mln/labeling/colorize.hh,
+ * mln/subsampling/antialiased.hh: Make use of this macro here.
+
+ 2013-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Remove last references to mln::trace::*.
+
+ * mln/arith/min.hh,
+ * mln/clustering/kmean_rgb.hh,
+ * mln/world/rgb/invert.spe.hh: Remove duplicate references to
+ mln_trace.
+
+ * tests/data/fill_with_image.cc,
+ * tests/data/paste.cc,
+ * tests/linear/gaussian.cc,
+ * tests/opt/at.cc,
+ * tests/opt/element.cc,
+ * tests/opt/value.cc: Remove useless include.
+
+ * tests/unit_test/unit-tests.mk: Remove mln_trace_* tests.
+
+ 2013-03-18 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Remove deprecated trace system.
+
+ * mln/trace/all.hh,
+ * mln/trace/entering.hh,
+ * mln/trace/essential.hh,
+ * mln/trace/exiting.hh,
+ * mln/trace/quiet.hh,
+ * mln/trace/resume.hh,
+ * mln/trace/stop.hh,
+ * mln/trace/warning.hh: Remove.
+
2013-03-18 Guillaume Lazzara <z(a)lrde.epita.fr>
+ * tests/trait/op/plus.cc: Kill warnings.
+
+2013-03-18 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * mln/io/magick/internal/init_magick.hh: Add a missing inline.
+
+2013-03-18 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Make fld tests write in different files.
+
+ * tests/io/fld/fld1d.cc,
+ * tests/io/fld/fld2d.cc,
+ * tests/io/fld/fld3d.cc: Write in different files to allow those
+ tests to be run simultaneously.
+
+2013-03-18 Guillaume Lazzara <z(a)lrde.epita.fr>
+
* tests/unit_test/unit-tests.mk: Regen.
2013-03-18 Guillaume Lazzara <z(a)lrde.epita.fr>
diff --cc scribo/ChangeLog
index 0121ab4,e0d0731..f1c29f3
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@@ -1,7 -1,305 +1,309 @@@
2013-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+ * demo/xml2doc/main.cc: Kill warnings.
+
++2013-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
++
+ Make use of mln_trace_warning in Scribo.
+
+ * scribo/canvas/integral_browsing.hh,
+ * scribo/filter/internal/alignment_angle.hh,
+ * scribo/io/img/save.hh,
+ * scribo/io/xml/save.hh,
+ * scribo/make/debug_filename.hh,
+ * scribo/primitive/extract/alignments.hh,
+ * scribo/primitive/link/internal/compute_anchor.hh: Here.
+
+ 2013-03-19 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Remove last references to mln::trace::*.
+
+ * demo/xml2doc/main.cc,
+ * scribo/make/debug_filename.hh,
+ * scribo/primitive/identify.hh,
+ * src/afp/regroup.hh,
+ * src/misc/negate.cc,
+ * src/misc/superpose.cc,
+ * src/preprocessing/split_bg_fg.cc,
+ * src/preprocessing/unskew.cc: Here.
+
+ 2013-03-15 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Make use of mln_trace.
+
+ * scribo/binarization/global_threshold.hh,
+ * scribo/binarization/global_threshold_auto.hh,
+ * scribo/binarization/internal/local_threshold_core.hh,
+ * scribo/binarization/kim.hh,
+ * scribo/binarization/local_threshold.hh,
+ * scribo/binarization/niblack.hh,
+ * scribo/binarization/niblack_fast.hh,
+ * scribo/binarization/niblack_threshold.hh,
+ * scribo/binarization/otsu.hh,
+ * scribo/binarization/otsu_threshold.hh,
+ * scribo/binarization/sauvola.hh,
+ * scribo/binarization/sauvola_ms.hh,
+ * scribo/binarization/sauvola_ms_split.hh,
+ * scribo/binarization/sauvola_threshold.hh,
+ * scribo/binarization/singh.hh,
+ * scribo/binarization/wolf.hh,
+ * scribo/binarization/wolf_fast.hh,
+ * scribo/convert/from_base64.hh,
+ * scribo/convert/to_base64.hh,
+ * scribo/core/central_sites.hh,
+ * scribo/core/erase_objects.hh,
+ * scribo/core/init_integral_image.hh,
+ * scribo/debug/alignment_decision_image.hh,
+ * scribo/debug/bboxes_enlarged_image.hh,
+ * scribo/debug/bboxes_image.hh,
+ * scribo/debug/char_space_image.hh,
+ * scribo/debug/decision_image.hh,
+ * scribo/debug/highlight_text_area.hh,
+ * scribo/debug/line_info_image.hh,
+ * scribo/debug/linked_bboxes_image.hh,
+ * scribo/debug/links_decision_image.hh,
+ * scribo/debug/links_image.hh,
+ * scribo/debug/looks_like_a_text_line_image.hh,
+ * scribo/debug/mean_and_base_lines_image.hh,
+ * scribo/debug/save_comp_diff.hh,
+ * scribo/debug/save_label_image.hh,
+ * scribo/debug/save_table_image.hh,
+ * scribo/debug/text_areas_image.hh,
+ * scribo/draw/bounding_box_links.hh,
+ * scribo/draw/bounding_boxes.hh,
+ * scribo/draw/groups_bboxes.hh,
+ * scribo/draw/line_components.hh,
+ * scribo/estim/components_features.hh,
+ * scribo/estim/font_boldness.hh,
+ * scribo/estim/font_color.hh,
+ * scribo/estim/internal/compute_skeleton.hh,
+ * scribo/estim/object_groups_mean_width.hh,
+ * scribo/filter/common/objects_photo.hh,
+ * scribo/filter/images_in_paragraph.hh,
+ * scribo/filter/internal/alignment_angle.hh,
+ * scribo/filter/internal/component_aligned.hh,
+ * scribo/filter/internal/compute.hh,
+ * scribo/filter/object_groups_mean_width.hh,
+ * scribo/filter/object_groups_size_ratio.hh,
+ * scribo/filter/object_groups_small.hh,
+ * scribo/filter/object_groups_with_holes.hh,
+ * scribo/filter/object_links_aligned.hh,
+ * scribo/filter/object_links_bbox_h_ratio.hh,
+ * scribo/filter/object_links_bbox_overlap.hh,
+ * scribo/filter/object_links_bbox_ratio.hh,
+ * scribo/filter/object_links_bbox_w_ratio.hh,
+ * scribo/filter/object_links_bottom_aligned.hh,
+ * scribo/filter/object_links_center_aligned.hh,
+ * scribo/filter/object_links_left_aligned.hh,
+ * scribo/filter/object_links_non_aligned_simple.hh,
+ * scribo/filter/object_links_right_aligned.hh,
+ * scribo/filter/object_links_top_aligned.hh,
+ * scribo/filter/objects_h_thick.hh,
+ * scribo/filter/objects_h_thin.hh,
+ * scribo/filter/objects_large.hh,
+ * scribo/filter/objects_on_border.hh,
+ * scribo/filter/objects_size_ratio.hh,
+ * scribo/filter/objects_small.hh,
+ * scribo/filter/objects_thick.hh,
+ * scribo/filter/objects_thin.hh,
+ * scribo/filter/objects_v_thick.hh,
+ * scribo/filter/objects_v_thin.hh,
+ * scribo/filter/objects_with_holes.hh,
+ * scribo/filter/paragraphs_bbox_overlap.hh,
+ * scribo/filter/paragraphs_in_borders.hh,
+ * scribo/filter/paragraphs_in_image.hh,
+ * scribo/filter/separators_in_borders.hh,
+ * scribo/filter/separators_in_element.hh,
+ * scribo/filter/separators_in_paragraph.hh,
+ * scribo/filter/separators_vert_in_borders.hh,
+ * scribo/io/img/save.hh,
+ * scribo/io/text_boxes/save.hh,
+ * scribo/io/xml/internal/save_image_to_xml.hh,
+ * scribo/io/xml/save.hh,
+ * scribo/layout/xy_cut.hh,
+ * scribo/make/influence_zone_graph.hh,
+ * scribo/make/text_blocks_image.hh,
+ * scribo/make/text_components_image.hh,
+ * scribo/postprocessing/fill_object_holes.hh,
+ * scribo/postprocessing/images_to_drop_capital.hh,
+ * scribo/preprocessing/crop.hh,
+ * scribo/preprocessing/crop_without_localization.hh,
+ * scribo/preprocessing/denoise.hh,
+ * scribo/preprocessing/denoise_bg.hh,
+ * scribo/preprocessing/denoise_fg.hh,
+ * scribo/preprocessing/deskew.hh,
+ * scribo/preprocessing/deskew_crop.hh,
+ * scribo/preprocessing/homogeneous_contrast.hh,
+ * scribo/preprocessing/rotate_90.hh,
+ * scribo/preprocessing/split_bg_fg.hh,
+ * scribo/primitive/extract/alignments.hh,
+ * scribo/primitive/extract/canvas.hh,
+ * scribo/primitive/extract/cells.hh,
+ * scribo/primitive/extract/components.hh,
+ * scribo/primitive/extract/horizontal_separators.hh,
+ * scribo/primitive/extract/lines_discontinued.hh,
+ * scribo/primitive/extract/lines_h_discontinued.hh,
+ * scribo/primitive/extract/lines_h_pattern.hh,
+ * scribo/primitive/extract/lines_h_single.hh,
+ * scribo/primitive/extract/lines_h_thick.hh,
+ * scribo/primitive/extract/lines_h_thick_and_single.hh,
+ * scribo/primitive/extract/lines_h_thick_and_thin.hh,
+ * scribo/primitive/extract/lines_pattern.hh,
+ * scribo/primitive/extract/lines_thick.hh,
+ * scribo/primitive/extract/lines_v_discontinued.hh,
+ * scribo/primitive/extract/lines_v_pattern.hh,
+ * scribo/primitive/extract/lines_v_single.hh,
+ * scribo/primitive/extract/lines_v_thick.hh,
+ * scribo/primitive/extract/lines_v_thick_and_single.hh,
+ * scribo/primitive/extract/non_text.hh,
+ * scribo/primitive/extract/non_text_hdoc.hh,
+ * scribo/primitive/extract/non_text_kmean.hh,
+ * scribo/primitive/extract/separators.hh,
+ * scribo/primitive/extract/separators_nonvisible.hh,
+ * scribo/primitive/extract/vertical_separators.hh,
+ * scribo/primitive/group/apply.hh,
+ * scribo/primitive/group/from_double_link.hh,
+ * scribo/primitive/group/from_double_link_any.hh,
+ * scribo/primitive/group/from_graph.hh,
+ * scribo/primitive/group/from_single_link.hh,
+ * scribo/primitive/identify.hh,
+ * scribo/primitive/internal/find_graph_link.hh,
+ * scribo/primitive/internal/rd.hh,
+ * scribo/primitive/internal/update_graph_link.hh,
+ * scribo/primitive/link/compute.hh,
+ * scribo/primitive/link/compute_several.hh,
+ * scribo/primitive/link/merge_double_link.hh,
+ * scribo/primitive/link/merge_double_link_closest_aligned.hh,
+ * scribo/primitive/link/with_graph.hh,
+ * scribo/primitive/link/with_rag.hh,
+ * scribo/primitive/link/with_several_graphes.hh,
+ * scribo/primitive/link/with_several_left_links.hh,
+ * scribo/primitive/link/with_several_right_closest_links.hh,
+ * scribo/primitive/link/with_several_right_links.hh,
+ * scribo/primitive/link/with_several_right_links_overlap.hh,
+ * scribo/primitive/link/with_single_down_link.hh,
+ * scribo/primitive/link/with_single_left_link.hh,
+ * scribo/primitive/link/with_single_left_link_dmax_ratio.hh,
+ * scribo/primitive/link/with_single_left_link_dmax_ratio_aligned.hh,
+ * scribo/primitive/link/with_single_right_link.hh,
+ * scribo/primitive/link/with_single_right_link_bottom.hh,
+ * scribo/primitive/link/with_single_right_link_dmax_ratio.hh,
+ * scribo/primitive/link/with_single_right_link_dmax_ratio_aligned.hh,
+ * scribo/primitive/link/with_single_right_link_top.hh,
+ * scribo/primitive/link/with_single_up_link.hh,
+ * scribo/primitive/merge/components.hh,
+ * scribo/primitive/regroup/from_single_left_link.hh,
+ * scribo/primitive/regroup/from_single_left_link_wrt_h_ratio.hh,
+ * scribo/primitive/remove/separators.hh,
+ * scribo/subsampling/bilinear.hh,
+ * scribo/subsampling/integral.hh,
+ * scribo/subsampling/integral_single_image.hh,
+ * scribo/table/align_lines_horizontaly.hh,
+ * scribo/table/align_lines_verticaly.hh,
+ * scribo/table/connect_horizontal_lines.hh,
+ * scribo/table/connect_vertical_lines.hh,
+ * scribo/table/erase.hh,
+ * scribo/table/extract.hh,
+ * scribo/table/internal/align_lines.hh,
+ * scribo/table/internal/connect_lines.hh,
+ * scribo/table/internal/repair_lines.hh,
+ * scribo/table/rebuild.hh,
+ * scribo/table/repair_horizontal_lines.hh,
+ * scribo/table/repair_vertical_lines.hh,
+ * scribo/text/clean.hh,
+ * scribo/text/clean_inplace.hh,
+ * scribo/text/extract_lines.hh,
+ * scribo/text/extract_lines_with_features.hh,
+ * scribo/text/extract_lines_wo_merge.hh,
+ * scribo/text/look_like_text_lines.hh,
+ * scribo/text/paragraphs_closing.hh,
+ * scribo/text/recognition.hh,
+ * scribo/toolchain/internal/text_in_doc_preprocess_functor.hh,
+ * scribo/toolchain/nepomuk/text_extraction.hh,
+ * scribo/toolchain/text_in_doc_preprocess.hh,
+ * scribo/toolchain/text_in_picture.hh,
+ * scribo/upsampling/bs2x.hh,
+ * scribo/upsampling/eagle.hh,
+ * scribo/util/box_intersection.hh,
+ * scribo/util/box_is_included.hh,
+ * scribo/util/component_precise_outline.hh,
+ * scribo/util/compute_sub_domains.hh,
+ * scribo/util/hex_to_color.hh,
+ * scribo/util/init_integral_image.hh,
+ * src/binarization/global_threshold.cc,
+ * src/binarization/kim.cc,
+ * src/binarization/niblack.cc,
+ * src/binarization/otsu.cc,
+ * src/binarization/pgm_global_threshold_auto.cc,
+ * src/binarization/pgm_niblack_threshold_image.cc,
+ * src/binarization/sauvola.cc,
+ * src/binarization/sauvola_debug.cc,
+ * src/binarization/sauvola_ms.cc,
+ * src/binarization/sauvola_ms_debug.cc,
+ * src/binarization/sauvola_ms_fg.cc,
+ * src/binarization/sauvola_ms_split.cc,
+ * src/binarization/singh.cc,
+ * src/binarization/wolf.cc,
+ * src/content_in_doc.cc,
+ * src/content_in_hdoc.cc,
+ * src/contest/DAE-2011/content_in_doc_dae.cc,
+ * src/contest/DAE-2011/content_in_hdoc_dae.cc,
+ * src/contest/hdlac-2011/content_in_hdoc_hdlac.cc,
+ * src/debug/highlight_text_area.cc,
+ * src/debug/show_info_median_inter_characters.cc,
+ * src/debug/show_info_x_height.cc,
+ * src/debug/show_lines_boldness.cc,
+ * src/debug/show_objects_large.cc,
+ * src/debug/show_objects_large_small.cc,
+ * src/debug/show_objects_small.cc,
+ * src/debug/show_objects_thick.cc,
+ * src/debug/show_objects_thin.cc,
+ * src/debug/show_paragraph_blocks.cc,
+ * src/debug/show_separators.cc,
+ * src/debug/show_stoppers.cc,
+ * src/debug/show_text_lines.cc,
+ * src/debug/show_text_lines_wo_seps.cc,
+ * src/filter/objects_large.cc,
+ * src/filter/objects_small.cc,
+ * src/filter/objects_thick.cc,
+ * src/filter/objects_thin.cc,
+ * src/filter/objects_with_holes.cc,
+ * src/filter/objects_with_holes_pgm.cc,
+ * src/misc/negate.cc,
+ * src/misc/superpose.cc,
+ * src/non_text_components.cc,
+ * src/pbm_text_in_doc.cc,
+ * src/postprocessing/fill_object_holes.cc,
+ * src/preprocessing/denoise_bg.cc,
+ * src/preprocessing/denoise_fg.cc,
+ * src/preprocessing/preprocess.cc,
+ * src/preprocessing/split_bg_fg.cc,
+ * src/preprocessing/subsample.cc,
+ * src/preprocessing/unskew.cc,
+ * src/primitive/extract/alignments.cc,
+ * src/primitive/extract/discontinued_hlines.cc,
+ * src/primitive/extract/discontinued_lines.cc,
+ * src/primitive/extract/discontinued_vlines.cc,
+ * src/primitive/extract/lines_pattern.cc,
+ * src/primitive/extract/separators_nonvisible.cc,
+ * src/primitive/extract/thick_hlines.cc,
+ * src/primitive/extract/thick_vlines.cc,
+ * src/primitive/find/find_discontinued_lines.cc,
+ * src/primitive/find/find_pattern_lines.cc,
+ * src/primitive/find/find_single_lines.cc,
+ * src/primitive/find/find_thick_and_single_lines.cc,
+ * src/primitive/find/find_thick_lines.cc,
+ * src/primitive/remove/separators.cc,
+ * src/table/erase.cc,
+ * src/table/extract.cc,
+ * src/text/cleantxt.cc,
+ * src/text/pbm_lines_recognition.cc,
+ * src/text/pbm_recognition.cc,
+ * src/text_in_picture.cc,
+ * src/text_in_picture_dual.cc,
+ * src/text_recognition_in_picture.cc,
+ * src/util/component_precise_outline.cc: Here.
+
2013-03-15 Guillaume Lazzara <z(a)lrde.epita.fr>
Remove references to InitializeMagick().
hooks/post-receive
--
Olena, a generic and efficient image processing platform
1
0