Olena-patches
Threads by month
- ----- 2025 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- 9625 discussions

olena-2.0-16-gc3282fa Add support for bibliography generation and Improve scribo doc rendering.
by Guillaume Lazzara 29 Nov '11
by Guillaume Lazzara 29 Nov '11
29 Nov '11
---
AUTHORS | 201 ++-
doc/Doxyfile.in | 10 +-
doc/DoxygenLayout.xml | 2 +-
doc/Makefile.am | 46 +-
doc/bibliography.dox | 37 +
doc/bibliography.hh | 19 -
doc/contributors.dox | 5 +
doc/lrde.bib | 3856 +++++++++++++++++++++++++++++
doc/{mainpage.hh => mainpage.dox} | 6 +-
doc/{modules_list.hh => modules_list.dox} | 0
doc/olena.qhcp | 12 -
scribo/doc/Doxyfile.in | 13 +-
scribo/doc/groups.dox | 19 +
scribo/scribo/core/component_set.hh | 4 +
scribo/scribo/core/document.hh | 7 +-
scribo/scribo/core/line_links.hh | 4 +-
scribo/scribo/core/line_set.hh | 7 +-
scribo/scribo/core/object_groups.hh | 2 +
scribo/scribo/core/object_links.hh | 4 +-
scribo/scribo/core/paragraph_set.hh | 1 +
20 files changed, 4141 insertions(+), 114 deletions(-)
create mode 100644 doc/bibliography.dox
delete mode 100644 doc/bibliography.hh
create mode 100644 doc/contributors.dox
create mode 100644 doc/lrde.bib
rename doc/{mainpage.hh => mainpage.dox} (80%)
rename doc/{modules_list.hh => modules_list.dox} (100%)
delete mode 100644 doc/olena.qhcp
create mode 100644 scribo/doc/groups.dox
diff --git a/AUTHORS b/AUTHORS
index f12b60e..9bea227 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -5,7 +5,8 @@ This package was written by and with the assistance of
Active LRDE Staff.
==================
-* Thierry Géraud theo(a)lrde.epita.fr
+* **Thierry Géraud** <theo(a)lrde.epita.fr>
+
- Management of the project in the first place.
- Type system.
- Revamp of Metalic (Olena pre-1.0).
@@ -14,11 +15,15 @@ Active LRDE Staff.
- Olena 1.0 core.
- Numerous hours spent thinking about Olena.
-* Guillaume Lazzara z(a)lrde.epita.fr
+
+* **Guillaume Lazzara** <z(a)lrde.epita.fr>
+
- SCRIBO module main author and maintainer.
- Library improvements.
-* Roland Levillain roland(a)lrde.epita.fr
+
+* **Roland Levillain** <roland(a)lrde.epita.fr>
+
- Project manager.
- Theoretical mentor.
- Renovation of Swilena (Olena 0.10a).
@@ -32,30 +37,41 @@ Active LRDE Staff.
Past contributors of LRDE Staff.
================================
-* Jérôme Darbon jerome(a)lrde.epita.fr
+* **Jérôme Darbon** <jerome(a)lrde.epita.fr>
+
- Image morphology and Olena morpho.
-* Réda Dehak reda(a)lrde.epita.fr
+
+* **Réda Dehak** <reda(a)lrde.epita.fr>
+
- Management of the project.
- Color conversions.
- Cleanup the sources.
-* Akim Demaille akim(a)lrde.epita.fr
+
+* **Akim Demaille** <akim(a)lrde.epita.fr>
+
- Configuration system.
- Maintenance of code's clearness.
-* Alexandre Duret-Lutz adl(a)lrde.epita.fr
+
+* **Alexandre Duret-Lutz** <adl(a)lrde.epita.fr>
+
- Maintenance of the source tree for several years.
- Type system.
- Test system.
- First documentation system.
- Numerous hours spent on Olena to make it better.
-* Fabien Freling fabien.freling(a)lrde.epita.fr
+
+* **Fabien Freling** <fabien.freling(a)lrde.epita.fr>
+
- Work on Melimage with IGR.
- Library improvements.
-* Yann Jacquelet jacquelet(a)lrde.epita.fr
+
+* **Yann Jacquelet** <jacquelet(a)lrde.epita.fr>
+
- SCRIBO-related work.
@@ -63,20 +79,25 @@ Past contributors of LRDE Staff.
Interns.
========
-* Arthur Crépin-Leblond
+* **Arthur Crépin-Leblond**
+
- SCRIBO structured outputs (XML, HTML, PDF).
-* Raphaël Boissel
+
+* **Raphaël Boissel**
- Graph implementation of a DIA toolchain in SCRIBO.
=========================
Students from Class 2012.
=========================
-* Frédéric Bour frederic.bour(a)lrde.epita.fr
+* **Frédéric Bour** <frederic.bour(a)lrde.epita.fr>
+
- Prototype of the upcoming functions system.
-* Julien Marquegnies julien.marquegnies(a)lrde.epita.fr
+
+* **Julien Marquegnies** <julien.marquegnies(a)lrde.epita.fr>
+
- Fast implementation of the Hough transform.
- Many improvements in SCRIBO layout analysis.
@@ -84,7 +105,8 @@ Students from Class 2012.
Students from Class 2011.
=========================
-* Edwin Carlinet edwin.carlinet(a)lrde.epita.fr
+* **Edwin Carlinet** <edwin.carlinet(a)lrde.epita.fr>
+
- Accumulators.
- Morphological connected filters.
@@ -92,32 +114,44 @@ Students from Class 2011.
Students from Class 2010.
=========================
-* Florent D'Halluin
+* **Florent D'Halluin**
+
- Document layout viewer.
-* Etienne Folio
+
+* **Etienne Folio**
+
- Color type traits.
=========================
Students from Class 2009.
=========================
-* Alexandre Abraham
+* **Alexandre Abraham**
+
- R/W functions.
- Topological watershed transform.
-* Nicolas Ballas
+
+* **Nicolas Ballas**
+
- Image properties.
- Data routines.
-* Vivien Delmon
+
+* **Vivien Delmon**
+
- Misc. corrections.
-* Matthieu Garrigues
+
+* **Matthieu Garrigues**
+
- Value types and I/Os.
- Draft of the FLLT.
-* Ugo Jardonnet
+
+* **Ugo Jardonnet**
+
- Geometrical transforms.
- ICP registration algorithm.
@@ -125,24 +159,32 @@ Students from Class 2009.
Students from Class 2008.
=========================
-* Tristan Croiset
+* **Tristan Croiset**
+
- Dynamic (Dyn) (Olena proto-1.0)
-* Quentin Hocquet
+
+* **Quentin Hocquet**
+
- SCOOL
-* Thomas Moulard
+
+* **Thomas Moulard**
+
- SCOOL
=========================
Students from Class 2007.
=========================
-* Christophe Berger
+* **Christophe Berger**
+
- Connected filters (Olena proto-1.0, Olena pre-1.0).
- SCOOP 2 (Olena proto-1.0).
-* Nicolas Widynski
+
+* **Nicolas Widynski**
+
- Connected filters (Olena proto-1.0).
- Inpainting (Olena proto-1.0).
- Segmentation (watershed transform, watersnake, snakes) (Olena proto-1.0)
@@ -151,16 +193,21 @@ Students from Class 2007.
Students from Class 2006.
=========================
-* Simon Odou
+* **Simon Odou**
+
- Contributions to document the code.
- Deconvolution.
- Generic morphers.
- SCOOP 2 (Olena proto-1.0).
-* Nicolas Pouillard
+
+* **Nicolas Pouillard**
+
- Dynamic-static bridge prototype (Dyn) (Olena proto-1.0).
-* Damien Thivolle
+
+* **Damien Thivolle**
+
- Contributions to document the code.
- Generic morphers.
- Configuration system.
@@ -174,14 +221,17 @@ Students from Class 2006.
Students from Class 2005.
=========================
-* Giovanni Palma
+* **Giovanni Palma**
+
- Color conversion.
- Attribute opening and closing algorithms.
- New documentation system.
- Document the code.
- Cleanup the sources.
-* Niels Van Vliet
+
+* **Niels Van Vliet**
+
- Color conversion.
- Attribute opening and closing algorithms.
- Contributions to document the code.
@@ -191,21 +241,28 @@ Students from Class 2005.
Students from Class 2004.
=========================
-* Sylvain Berlemont
+* **Sylvain Berlemont**
+
- Combinatorial maps.
- Cleanup the sources.
-* Nicolas Burrus
+
+* **Nicolas Burrus**
+
- Integre.
- Olena I/O.
- Source tree.
-* David Lesage
+
+* **David Lesage**
+
- Type system.
- New paradigm.
- Cleanup the sources.
-* Astrid Wang
+
+* **Astrid Wang**
+
- New documentation system.
- Static arrays implementation.
@@ -213,25 +270,36 @@ Students from Class 2004.
Students from Class 2003.
=========================
-* Ignacy Gawedzki
+* **Ignacy Gawedzki**
+
- Color system.
-* Jean-Sébastien Mouret
+
+* **Jean-Sébastien Mouret**
+
- Image I/O.
- Source tree and configuration system.
- Fast morphological operators.
-* Quôc Peyrot
+
+* **Quôc Peyrot**
+
- Watershed algorithm.
-* Raphaël Poss
+
+* **Raphaël Poss**
+
- Source tree and configuration system.
- Documentation.
-* Yann Régis-Gianas
+
+* **Yann Régis-Gianas**
+
- Type system.
-* Emmanuel Turquin
+
+* **Emmanuel Turquin**
+
- Implementation of transforms.
- Integre.
@@ -239,22 +307,29 @@ Students from Class 2003.
Students from Class 2002.
=========================
-* Jean Chalard
+* **Jean Chalard**
+
- Colors.
- Vectors and matrices implementation.
- Olena iterators implementation.
- Wavelets.
-* Rémi Coupet
+
+* **Rémi Coupet**
+
- Olena morpho.
- Data types (pre-0.6).
- Olena core.
- Bibliographical research.
-* Ludovic Perrine
+
+* **Ludovic Perrine**
+
- Fuzzy types.
-* Pierre-Yves Strub
+
+* **Pierre-Yves Strub**
+
- Olena morpho.
- Source tree and configuration system.
- Type system.
@@ -263,20 +338,28 @@ Students from Class 2002.
Students from Class 2001.
=========================
-* Alexis Angelidis
+* **Alexis Angelidis**
+
- Olena logo.
-* Vincent Berruchon
-* Renaud François
+* **Vincent Berruchon**
+
+
+* **Renaud François**
+
- Bibliographical research.
-* Anthony Pinagot
+
+* **Anthony Pinagot**
+
- Olena I/O.
- Statistical operators.
- FFT algorithm.
-* Michaël Strauss
+
+* **Michaël Strauss**
+
- Image morphology.
- Watershed algorithms.
- Olena I/O.
@@ -285,7 +368,8 @@ Students from Class 2001.
Students from Class 2000.
=========================
-* Yoann Fabre
+* **Yoann Fabre**
+
- Type system.
@@ -293,17 +377,24 @@ Students from Class 2000.
Other Contributors.
===================
-* Guillaume Duhamel
+* **Guillaume Duhamel**
+
- Low-level routines.
-* Simon Nivault
+
+* **Simon Nivault**
+
- Lemming object.
- Many cleanups.
-* Dimitri Papadopoulos-Orfanos
+
+* **Dimitri Papadopoulos-Orfanos**
+
- Type system.
-* Heru Xue
+
+* **Heru Xue**
+
- Color system.
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
index a0fcf00..86377ef 100644
--- a/doc/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -40,7 +40,7 @@ MULTILINE_CPP_IS_BRIEF = NO
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 8
-ALIASES =
+ALIASES = " "
OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO
BUILTIN_STL_SUPPORT = YES
@@ -92,17 +92,15 @@ WARN_LOGFILE =
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = @top_srcdir@/doc
-FILE_PATTERNS = *.cc \
- *.hh \
- *.hxx \
- *.hcc
+FILE_PATTERNS = *.dox
RECURSIVE = YES
EXCLUDE = @top_srcdir@/milena/ \
@top_srcdir@/scribo/
EXCLUDE_SYMLINKS = YES
EXCLUDE_PATTERNS = *spe.hh
EXCLUDE_SYMBOLS = *::internal* *_ mln::trait::*
-EXAMPLE_PATH =
+EXAMPLE_PATH = @top_srcdir@/doc/ \
+ @builddir@
EXAMPLE_PATTERNS = *.cc \
*.cc.raw \
*.txt
diff --git a/doc/DoxygenLayout.xml b/doc/DoxygenLayout.xml
index a279910..0dbf0d7 100644
--- a/doc/DoxygenLayout.xml
+++ b/doc/DoxygenLayout.xml
@@ -2,7 +2,7 @@
<!-- Navigation index tabs for HTML output -->
<navindex>
<tab type="mainpage" visible="yes" title="Home"/>
- <tab type="pages" visible="no" title=""/>
+ <tab type="pages" visible="yes" title=""/>
<tab type="modules" visible="no" title=""/>
<tab type="namespaces" visible="no" title="">
<tab type="namespaces" visible="no" title=""/>
diff --git a/doc/Makefile.am b/doc/Makefile.am
index e733ab9..1bf95d5 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -53,13 +53,17 @@ regen-doc:
DOXYFILE_USER = Doxyfile_user
-REFMAN_deps = $(srcdir)/footer.html \
- $(srcdir)/header.html \
- $(srcdir)/doxygen.css \
- $(srcdir)/mainpage.hh \
- $(srcdir)/DoxygenLayout.xml \
- $(srcdir)/modules_list.hh \
- $(srcdir)/olena.bib
+REFMAN_deps = $(srcdir)/footer.html \
+ $(srcdir)/header.html \
+ $(srcdir)/doxygen.css \
+ $(srcdir)/mainpage.dox \
+ $(srcdir)/DoxygenLayout.xml \
+ $(srcdir)/modules_list.dox \
+ $(srcdir)/olena.bib \
+ $(srcdir)/contributors.dox \
+ $(srcdir)/bibliography.dox \
+ contributors.html \
+ lrde_olena.html
# Sed is used to generate Doxyfile from Doxyfile.in instead of
# configure, because the former is way faster than the latter.
@@ -113,8 +117,36 @@ $(srcdir)/$(USER_REFMAN): $(srcdir)/user-refman.stamp
EXTRA_DIST += $(USER_REFMAN)
+## -------------- ##
+## Contributors. ##
+## -------------- ##
+
+contributors.html: $(top_srcdir)/AUTHORS
+ rst2html --stylesheet-path=$(srcdir)/doxygen.css --link-stylesheet \
+ --input-encoding=latin1 --output-encoding=latin1 \
+ $(top_srcdir)/AUTHORS > contributors.html
+
+
+## -------------- ##
+## Bibliography. ##
+## -------------- ##
+
+# Warning: also generate lrde_olena.cite
+lrde_olena.bib:
+ bib2bib -s plain -oc lrde_olena.cite -ob lrde_olena.bib -c \
+ 'project = "Image" or project = "Olena"' \
+ -s year -r $(srcdir)/lrde.bib
+
+# Warning: also generate lrde_olena_bib.html
+lrde_olena.html: lrde_olena.bib
+ bibtex2html -s plain -nokeywords -citefile lrde_olena.cite \
+ -noabstract -nofooter -labelname -nodoc -linebreak -nf urllrde PDF lrde_olena.bib
+MAINTAINERCLEANFILES += lrde_olena.cite \
+ lrde_olena.bib \
+ lrde_olena_bib.html \
+ lrde_olena.html
## ---------- ##
## Cleaning. ##
diff --git a/doc/bibliography.dox b/doc/bibliography.dox
new file mode 100644
index 0000000..59518cb
--- /dev/null
+++ b/doc/bibliography.dox
@@ -0,0 +1,37 @@
+/** \page bibliography Bibliography
+
+ In this page, all publications used to implement Olena or related to Olena itself are referenced.
+
+ Summary:
+ \li \ref olnpublis
+ \li \ref olnpublisjournals
+ \li \ref olnpublisconfs
+ \li \ref olnpublisposters
+ \li \ref olnpublistechreps
+
+ \li \ref{burrus.03.mpool}
+ \li \ref{darbon.02.ismm}
+ \li \ref{darbon.04.ecoopphd}
+ \li \cite duret.00.gcse
+ \li \cite geraud.00.icpr
+ \li \cite geraud.01.ai
+ \li \cite geraud.08.mpool
+ \li \cite geraud.99.gretsi
+ \li \cite lazzara.11.icdar
+ \li \cite levillain.09.ismm
+ \li \cite levillain.10.icip
+ \li \cite levillain.10.wadgmm
+ \li \cite levillain.11.gretsi
+
+ \section olnpublis Olena Publications
+
+ \subsection olnpublisjournals In Journals
+
+ \subsection olnpublisconfs In Conferences
+ \htmlinclude lrde_olena.html
+
+ \subsection olnpublisposters Posters
+
+ \subsection olnpublistechreps Student Technical Reports
+
+ */
diff --git a/doc/bibliography.hh b/doc/bibliography.hh
deleted file mode 100644
index 841372b..0000000
--- a/doc/bibliography.hh
+++ /dev/null
@@ -1,19 +0,0 @@
-/** \page bibliography Bibliography
-
- Here you can find all the articles related to the Olena platform.
-
- \li \cite burrus.03.mpool
- \li \cite darbon.02.ismm
- \li \cite darbon.04.ecoopphd
- \li \cite duret.00.gcse
- \li \cite geraud.00.icpr
- \li \cite geraud.01.ai
- \li \cite geraud.08.mpool
- \li \cite geraud.99.gretsi
- \li \cite lazzara.11.icdar
- \li \cite levillain.09.ismm
- \li \cite levillain.10.icip
- \li \cite levillain.10.wadgmm
- \li \cite levillain.11.gretsi
-
- */
diff --git a/doc/contributors.dox b/doc/contributors.dox
new file mode 100644
index 0000000..82b35c6
--- /dev/null
+++ b/doc/contributors.dox
@@ -0,0 +1,5 @@
+/** \page Contributors List of contributors
+
+ \htmlinclude contributors.html
+
+ */
diff --git a/doc/lrde.bib b/doc/lrde.bib
new file mode 100644
index 0000000..c1d6a03
--- /dev/null
+++ b/doc/lrde.bib
@@ -0,0 +1,3856 @@
+ %% ----------------------- %%
+ %% The LRDE Bibliography. %%
+ %% ----------------------- %%
+
+%% This document lists all the publications by members of the LRDE.
+%% $Id: lrde.bib 4195 2011-10-11 10:08:20Z levill_r $
+%%
+%% See
+%%
+%% - http://www.lrde.epita.fr
+%% for more information about the LRDE
+%%
+%% - http://publis.lrde.epita.fr
+%% for more information about these publications
+%%
+%% - http://www.lrde.epita.fr/dload/papers/lrde.bib
+%% for the most recent version of this BibTeX file
+
+@InProceedings{ angelidis.01.wscg,
+ author = {Alexis Angelidis and Geoffroy Fouquier},
+ title = {Visualization issues in virtual environments: from
+ computer graphics techniques to intentional visualization},
+ booktitle = {Proceedings of the 9th International Conference in Central
+ Europe on Computer Graphics, Visualization and Computer
+ Vision (WSCG)},
+ year = 2001,
+ editor = {V. Skala},
+ volume = 3,
+ pages = {90--98},
+ address = {Plzen, Czech Republic},
+ month = feb,
+ isbn = {80-7082-713-0},
+ project = {Urbi},
+ urllrde = {200102-Wscg},
+ abstract = {Rendering efficiently large virtual environment scenes
+ composed of many elements, dynamic objects, and a highly
+ moving viewpoint is a major issue. This paper focuses on
+ the first of the two viewing stage operations: required
+ elements determination, the second being shading/filtering.
+ We propose a classification, extending the existing
+ computer graphic techniques toward display scalability
+ requirements, that distinguishes two key points: keeping
+ only required elements (culling), and keeping only required
+ details (which includes traditional LODs). The mechanisms
+ needed for display scalability are presented.}
+}
+
+@InProceedings{ baillard.05.adass,
+ author = {Anthony Baillard and Emmanuel Bertin and Yannic Mellier
+ and Henry Joy {McCracken} and {\relax Th}ierry G\'eraud and
+ Roser Pell\'o and Jean-Fran{\,c}ois {LeBorgne} and Pascal
+ Fouqu\'e},
+ title = {Project {EFIGI}: Automatic classification of galaxies},
+ year = 2005,
+ booktitle = {Astronomical Data Analysis Software and Systems XV},
+ volume = 351,
+ pages = {236--239},
+ publisher = {Astronomical Society of the Pacific},
+ series = {Conference},
+ url = {http://www.aspbooks.org/custom/publications/paper/index.phtml?paper_id=3398}
+ ,
+ editor = {Carlos Gabriel and {\relax Ch}ristophe Arviset and Daniel
+ Ponz and Enrique Solano},
+ isbn = {1-58381-219-9},
+ project = {Image},
+ urllrde = {200512-ADASS},
+ abstract = {We propose an automatic system to classify images of
+ galaxies with varying resolution. Morphologically typing
+ galaxies is a difficult task in particular for distant
+ galaxies convolved by a point-spread function and suffering
+ from a poor signal-to-noise ratio. In the context of the
+ first phase of the project EFIGI (extraction of the
+ idealized shapes of galaxies in imagery), we present the
+ three steps of our software: cleaning, dimensionality
+ reduction and supervised learning. We present preliminary
+ results derived from a subset of 774 galaxies from the
+ Principal Galaxies Catalog and compare them to human
+ classifications made by astronomers. We use g-band images
+ from the Sloan Digital Sky Survey. Finally, we discuss
+ future improvements which we intend to implement before
+ releasing our tool to the community.}
+}
+
+@InProceedings{ baillard.07.gretsi,
+ author = {Anthony Baillard and {\relax Ch}ristophe Berger and
+ Emmanuel Bertin and {\relax Th}ierry G\'eraud and Roland
+ Levillain and Nicolas Widynski},
+ title = {Algorithme de calcul de l'arbre des composantes avec
+ applications \`a la reconnaissance des formes en imagerie
+ satellitaire},
+ booktitle = {Proceedings of the 21st Symposium on Signal and Image
+ Processing (GRETSI)},
+ category = {national},
+ year = 2007,
+ address = {Troyes, France},
+ month = sep,
+ project = {Image},
+ urllrde = {200705-GRETSI},
+ abstract = {In this paper a new algorithm to compute the component
+ tree is presented. As compared to the state-of-the-art,
+ this algorithm does not use excessive memory and is able to
+ work efficiently on images whose values are highly
+ quantized or even with images having floating values. We
+ also describe how it can be applied to astronomical data to
+ identify relevant objects.}
+}
+
+@InProceedings{ bensalem.11.sumo,
+ author = {Ala Eddine Ben{ S}alem and Alexandre Duret-Lutz and
+ Fabrice Kordon},
+ title = {Generalized {B\"u}chi Automata versus Testing Automata for
+ Model Checking},
+ booktitle = {Proceedings of the second International Workshop on
+ Scalable and Usable Model Checking for Petri Net and other
+ models of Concurrency (SUMO'11)},
+ address = {Newcastle, UK},
+ series = {Workshop Proceedings},
+ year = 2011,
+ month = jun,
+ volume = 626,
+ publisher = {CEUR},
+ urllrde = {201106-SUMO},
+ url = {http://ftp.informatik.rwth-aachen.de/Publications/CEUR-WS/Vol-726/}
+
+}
+
+@InProceedings{ berger.07.icip,
+ author = {{\relax Ch}ristophe Berger and {\relax Th}ierry G\'eraud
+ and Roland Levillain and Nicolas Widynski and Anthony
+ Baillard and Emmanuel Bertin},
+ title = {Effective Component Tree Computation with Application to
+ Pattern Recognition in Astronomical Imaging},
+ booktitle = {Proceedings of the IEEE International Conference on Image
+ Processing (ICIP)},
+ pages = {IV-41--IV-44},
+ volume = 4,
+ year = 2007,
+ address = {San Antonio, TX, USA},
+ month = sep,
+ project = {Image},
+ urllrde = {200705-ICIP},
+ abstract = {In this paper a new algorithm to compute the component
+ tree is presented. As compared to the state of the art,
+ this algorithm does not use excessive memory and is able to
+ work efficiently on images whose values are highly
+ quantized or even with images having floating values. We
+ also describe how it can be applied to astronomical data to
+ identify relevant objects.}
+}
+
+@Article{ bloch.03.ai,
+ author = {Isabelle Bloch and {\relax Th}ierry G\'eraud and Henri
+ Ma\^itre},
+ title = {Representation and fusion of heterogeneous fuzzy
+ information in the {3D} space for model-based structural
+ recognition---application to {3D} brain imaging},
+ journal = {Artificial Intelligence},
+ month = aug,
+ year = 2003,
+ volume = 148,
+ number = {1-2},
+ pages = {141--175},
+ project = {Image},
+ urllrde = {200308-AI},
+ abstract = {We present a novel approach of model-based pattern
+ recognition where structural information and spatial
+ relationships have a most important role. It is illustrated
+ in the domain of 3D brain structure recognition using an
+ anatomical atlas. Our approach performs simultaneously
+ segmentation and recognition of the scene and the solution
+ of the recognition task is progressive, processing
+ successively different objects, using different of
+ knowledge about the object and about relationships between
+ objects. Therefore the core of the approach is the
+ representation part, and constitutes the main contribution
+ of this paper. We make use of a spatial representation of
+ each piece of information, as a spatial set representing a
+ constraint to be satisfied by the searched object, thanks
+ in particular to fuzzy mathematical operations. Fusion of
+ these constraints allows to, segment and recognize the
+ desired object.}
+}
+
+@Article{ bloch.05.prl,
+ author = {Isabelle Bloch and Olivier Colliot and Oscar Camara and
+ {\relax Th}ierry G\'eraud},
+ title = {Fusion of spatial relationships for guiding recognition,
+ example of brain structure recognition in {3D} {MRI}},
+ journal = {Pattern Recognition Letters},
+ year = 2005,
+ volume = 26,
+ number = 4,
+ month = mar,
+ pages = {449--457},
+ project = {Image},
+ urllrde = {200407-PRL},
+ abstract = {Spatial relations play an important role in recognition of
+ structures embedded in a complex environment and for
+ reasoning under imprecision. Several types of relationships
+ can be modeled in a unified way using fuzzy mathematical
+ morphology. Their combination benefits from the powerful
+ framework of fuzzy set theory for fusion tasks and decision
+ making. This paper presents several methods of fusion of
+ information about spatial relationships and illustrates
+ them on the example of model-based recognition of brain
+ structures in 3D magnetic resonance imaging.}
+}
+
+@Article{ borghi.06.crossroads,
+ author = {Alexandre Borghi and Valentin David and Akim Demaille},
+ title = {{C}-{T}ransformers --- {A} Framework to Write {C} Program
+ Transformations},
+ journal = {ACM Crossroads},
+ year = 2006,
+ volume = 12,
+ number = 3,
+ month = {Spring},
+ project = {Transformers},
+ note = {\url{http://www.acm.org/crossroads/xrds12-3/contractc.html}}
+ ,
+ urllrde = {200510-Crossroads},
+ abstract = {Program transformation techniques have reached a maturity
+ level that allows processing high-level language sources in
+ new ways. Not only do they revolutionize the implementation
+ of compilers and interpreters, but with modularity as a
+ design philosophy, they also permit the seamless extension
+ of the syntax and semantics of existing programming
+ languages. The C-Transformers project provides a
+ transformation environment for C, a language that proves to
+ be hard to transform. We demonstrate the effectiveness of
+ C-Transformers by extending C's instructions and control
+ flow to support Design by Contract. C-Transformers is
+ developed by members of the LRDE: EPITA undergraduate
+ students.}
+}
+
+@InProceedings{ burrus.03.mpool,
+ author = {Nicolas Burrus and Alexandre Duret-Lutz and {\relax
+ Th}ierry G\'eraud and David Lesage and Rapha\"el Poss},
+ title = {A static {C++} object-oriented programming ({SCOOP})
+ paradigm mixing benefits of traditional {OOP} and generic
+ programming},
+ booktitle = {Proceedings of the Workshop on Multiple Paradigm with
+ Object-Oriented Languages (MPOOL)},
+ year = 2003,
+ address = {Anaheim, CA, USA},
+ month = oct,
+ project = {Olena},
+ urllrde = {200310-MPOOL},
+ abstract = {Object-oriented and generic programming are both supported
+ in C++. OOP provides high expressiveness whereas GP leads
+ to more efficient programs by avoiding dynamic typing. This
+ paper presents SCOOP, a new paradigm which enables both
+ classical OO design and high performance in C++ by mixing
+ OOP and GP. We show how classical and advanced OO features
+ such as virtual methods, multiple inheritance, argument
+ covariance, virtual types and multimethods can be
+ implemented in a fully statically typed model, hence
+ without run-time overhead.}
+}
+
+@InProceedings{ cadilhac.06.avocs,
+ author = {Micha\"el Cadilhac and {\relax Th}omas H\'erault and
+ Richard Lassaigne and Sylvain Peyronnet and Sebastien
+ Tixeuil},
+ title = {Evaluating complex {MAC} protocols for sensor networks
+ with {APMC}},
+ booktitle = {Proceedings of the 6th International Workshop on Automated
+ Verification of Critical Systems (AVoCS)},
+ year = 2006,
+ series = {Electronic Notes in Theoretical Computer Science Series},
+ pages = {33--46},
+ volume = 185,
+ project = {APMC},
+ urllrde = {200606-Avocs},
+ abstract = {In this paper we present an analysis of a MAC (Medium
+ Access Control) protocol for wireless sensor networks. The
+ purpose of this protocol is to manage wireless media access
+ by constructing a Time Division Media Access (TDMA)
+ schedule. APMC (Approximate Probabilistic Model Checker) is
+ a tool that uses approximation-based verification
+ techniques in order to analyse the behavior of complex
+ probabilistic systems. Using APMC, we approximately
+ computed the probabilities of several properties of the MAC
+ protocol being studied, thus giving some insights about its
+ performance.}
+}
+
+@InProceedings{ carlier.02.itrs,
+ author = {S\'ebastien Carlier},
+ title = {Polar type inference with intersection types and $\omega$},
+ booktitle = {Proceedings of the 2nd Workshop on Intersection Types and
+ Related Systems (ITRS), published in: Electronic Notes in
+ Theoretical Computer Science},
+ volume = 70,
+ issue = 1,
+ publisher = {Elsevier},
+ year = 2002,
+ address = {Copenhagen, Denmark},
+ month = jul,
+ project = {Software},
+ urllrde = {200207-ITRS},
+ abstract = {We present a type system featuring intersection types and
+ omega, a type constant which is assigned to unused terms.
+ We exploit and extend the technology of expansion variables
+ from the recently developed System I, with which we believe
+ our system shares many interesting properties, such as
+ strong normalization, principal typings, and compositional
+ analysis. Our presentation emphasizes a polarity discipline
+ and shows its benefits. We syntactically distinguish
+ positive and negative types, and give them different
+ interpretations. We take the point of view that the
+ interpretation of a type is intrinsic to it, and should not
+ change implicitly when it appears at the opposite polarity.
+ Our system is the result of a process which started with an
+ extension of Trevor Jim's Polar Type System.}
+}
+
+@InProceedings{ chekroun.06.iciar,
+ author = {Mickael Chekroun and J\'er\^ome Darbon and Igor Ciril},
+ title = {On a Polynomial Vector Field Model for Shape
+ Representation},
+ booktitle = {Proceedings of the International Conference on Image
+ Analysis and Recognition (ICIAR)},
+ publisher = {Springer-Verlag},
+ year = 2006,
+ address = {Povoa de Varzim, Portugal},
+ month = sep,
+ project = {Image},
+ urllrde = {200609-ICIAR},
+ abstract = {In this paper we propose an efficient algorithm to perform
+ a polynomial approximation of the vector field derived from
+ the usual distance mapping method. The main ingredients
+ consist of minimizing a quadratic functional and
+ transforming this problem in an appropriate setting for
+ implementation. With this approach, we reduce the problem
+ of obtaining an approximating polynomial vector field to
+ the resolution of a not expansive linear algebraic system.
+ By this procedure, we obtain an analytical shape
+ representation that relies only on some coefficients.
+ Fidelity and numerical efficiency of our approach are
+ presented on illustrative examples.}
+}
+
+@InProceedings{ claveirole.05.ciaa,
+ author = {{\relax Th}omas Claveirole and Sylvain Lombardy and Sarah
+ O'Connor and Louis-No\"el Pouchet and Jacques Sakarovitch},
+ title = {Inside {V}aucanson},
+ booktitle = {Proceedings of Implementation and Application of Automata,
+ 10th International Conference (CIAA)},
+ year = 2005,
+ pages = {117--128},
+ editor = {Springer-Verlag},
+ volume = 3845,
+ series = {Lecture Notes in Computer Science Series},
+ address = {Sophia Antipolis, France},
+ month = jun,
+ urllrde = {200506-Ciaa},
+ project = {Vaucanson},
+ abstract = {This paper presents some features of the Vaucanson
+ platform. We describe some original algorithms on weighted
+ automata and transducers (computation of the quotient,
+ conversion of a regular expression into a weighted
+ automaton, and composition). We explain how complex
+ declarations due to the generic programming are masked from
+ the user and finally we present a proposal for an XML
+ format that allows implicit descriptions for simple types
+ of automata.}
+}
+
+@TechReport{ clouard.99.tr,
+ author = {R\'egis Clouard and Abderrahim Elmoataz and Fran\c{c}ois
+ Angot and Olivier Lezoray and Alexandre Duret-Lutz},
+ title = {Une biblioth\`eque et un environnement de programmation
+ d'op\'erateurs de traitement d'images},
+ institution = {GREYC-ISMRA},
+ year = 1999,
+ number = 99008,
+ address = {Caen, France},
+ month = nov,
+ url = {http://www.greyc.ismra.fr/~regis/Pandore/},
+ project = {Olena},
+ urllrde = {199911-TR}
+}
+
+@InProceedings{ darbon.01.ei,
+ author = {J\'er\^ome Darbon and Bulent Sankur and Henri Ma\^{\i}tre},
+ title = {Error correcting code performance for watermark
+ protection},
+ booktitle = {Proceedings of the 13th Symposium SPIE on Electronic
+ Imaging----Security and Watermarking of Multimedia Contents
+ III (EI27)},
+ year = 2001,
+ address = {San Jose, CA, USA},
+ month = jan,
+ volume = 4314,
+ editors = {P.W. Wong and E.J. Delp III},
+ pages = {663--672},
+ project = {Image},
+ urllrde = {200101-Ei},
+ abstract = {The watermark signals are weakly inserted in images due to
+ imperceptibility constraints which makes them prone to
+ errors in the extraction stage. Although the error
+ correcting codes can potentially improve their performance
+ one must pay attention to the fact that the watermarking
+ channel is in general very noisy. We have considered the
+ trade-off of the BCH codes and repetition codes in various
+ concatenation modes. At the higher rates that can be
+ encountered in watermarking channels such as due to
+ low-quality JPEG compression, codes like the BCH codes
+ cease being useful. Repetition coding seems to be the last
+ resort at these error rates of 25\% and beyond. It has been
+ observed that there is a zone of bit error rate where their
+ concatenation turns out to be more useful. In fact the
+ concatenation of repetition and BCH codes judiciously
+ dimensioned, given the available number of insertion sites
+ and the payload size, achieves a higher reliability level.}
+}
+
+@InProceedings{ darbon.02.ismm,
+ author = {J\'er\^ome Darbon and {\relax Th}ierry G\'eraud and
+ Alexandre Duret-Lutz},
+ title = {Generic implementation of morphological image operators},
+ booktitle = {Mathematical Morphology, Proceedings of the 6th
+ International Symposium (ISMM)},
+ pages = {175--184},
+ year = 2002,
+ address = {Sydney, Australia},
+ month = apr,
+ publisher = {CSIRO Publishing},
+ project = {Olena},
+ urllrde = {200204-Ismm},
+ abstract = {Several libraries dedicated to mathematical morphology
+ exist. But they lack genericity, that is to say, the
+ ability for operators to accept input of different natures
+ ---2D binary images, graphs enclosing floating values, etc.
+ We describe solutions which are integrated in Olena, a
+ library providing morphological operators. We demonstrate
+ with some examples that translating mathematical formulas
+ and algorithms into source code is made easy and safe with
+ Olena. Moreover, experimental results show that no extra
+ costs at run-time are induced.}
+}
+
+@InProceedings{ darbon.04.ecoopphd,
+ author = {J\'er\^ome Darbon and {\relax Th}ierry G\'eraud and
+ Patrick Bellot},
+ title = {Generic algorithmic blocks dedicated to image processing},
+ booktitle = {Proceedings of the ECOOP Workshop for PhD Students},
+ year = 2004,
+ address = {Oslo, Norway},
+ month = jun,
+ project = {Olena},
+ urllrde = {200406-ECOOPPHD},
+ abstract = {This paper deals with the implementation of algorithms in
+ the specific domain of image processing. Although many
+ image processing libraries are available, they generally
+ lack genericity and flexibility. Many image processing
+ algorithms can be expressed as compositions of elementary
+ algorithmic operations referred to as blocks. Implementing
+ these compositions is achieved using generic programming.
+ Our solution is compared to previous ones and we
+ demonstrate it on a class image processing algorithms.}
+}
+
+@InProceedings{ darbon.04.iwcia,
+ author = {J\'er\^ome Darbon and Marc Sigelle},
+ title = {Exact optimization of discrete constrained total variation
+ minimization problems},
+ booktitle = {Proceedings of the 10th International Workshop on
+ Combinatorial Image Analysis (IWCIA)},
+ year = 2004,
+ address = {Auckland, New Zealand},
+ month = dec,
+ pages = {548--557},
+ editors = {R. Klette and J. Zunic},
+ series = {Lecture Notes in Computer Science Series},
+ publisher = {Springer-Verlag},
+ volume = 3322,
+ project = {Image},
+ urllrde = {200412-IWCIA},
+ abstract = {This paper deals with the total variation minimization
+ problem when the fidelity is either the $L^2$-norm or the
+ $L^1$-norm. We propose an algorithm which computes the
+ exact solution of these two problems after discretization.
+ Our method relies on the decomposition of an image into its
+ level sets. It maps the original problems into independent
+ binary Markov Random Field optimization problems associated
+ with each level set. Exact solutions of these binary
+ problems are found thanks to minimum-cut techniques. We
+ prove that these binary solutions are increasing and thus
+ allow to reconstruct the solution of the original
+ problems.}
+}
+
+@TechReport{ darbon.04.tr,
+ author = {J\'er\^ome Darbon and Marc Sigelle},
+ title = {Exact optimization of discrete constrained total variation
+ minimization problems},
+ institution = {ENST},
+ year = 2004,
+ number = {2004C004},
+ address = {Paris, France},
+ month = oct,
+ project = {Image},
+ annote = {This technical report corresponds to the publication
+ darbon.04.iwcia. ; 200412-IWCIA},
+ urllrde = {200410-TR},
+ abstract = {This paper deals with the total variation minimization
+ problem when the fidelity is either the $L^2$-norm or the
+ $L^1$-norm. We propose an algorithm which computes the
+ exact solution of these two problems after discretization.
+ Our method relies on the decomposition of an image into its
+ level sets. It maps the original problems into independent
+ binary Markov Random Field optimization problems associated
+ with each level set. Exact solutions of these binary
+ problems are found thanks to minimum-cut techniques. We
+ prove that these binary solutions are increasing and thus
+ allow to reconstruct the solution of the original
+ problems.}
+}
+
+@InProceedings{ darbon.05.eusipco,
+ author = {J\'er\^ome Darbon and Ceyhun Burak Akg\"ul},
+ title = {An efficient algorithm for attribute openings and
+ closings},
+ booktitle = {Proceedings of the 13th European Signal Processing
+ Conference (EUSIPCO)},
+ year = 2005,
+ address = {Antalya, Turkey},
+ month = sep,
+ project = {Image},
+ urllrde = {200509-Eusipco},
+ abstract = {In this paper, we present fast algorithms for area opening
+ and closing on grayscale images. Salembier's max-tree based
+ algorithm is one of the well known methods to perform area
+ opening. It makes use of a special representation where
+ each node in the tree stands for a flat region and the tree
+ itself is oriented towards the maxima of the grayscale
+ image. Pruning the tree with respect to some attribute,
+ e.g., the area, boils down to attribute opening. Following
+ the same approach, we propose an algorithm for area opening
+ (closing) without building the max-tree (min-tree). Our
+ algorithm exhibit considerable performance compared to the
+ state-of-the art in this domain.}
+}
+
+@InProceedings{ darbon.05.ibpria,
+ author = {J\'er\^ome Darbon and Marc Sigelle},
+ title = {A Fast and Exact Algorithm for Total Variation
+ Minimization},
+ booktitle = {Proceedings of the 2nd Iberian Conference on Pattern
+ Recognition and Image Analysis (IbPRIA)},
+ publisher = {Springer-Verlag},
+ volume = 3522,
+ pages = {351--359},
+ year = 2005,
+ address = {Estoril, Portugal},
+ month = jun,
+ project = {Image},
+ urllrde = {200506-IbPria},
+ abstract = {This paper deals with the minimization of the total
+ variation under a convex data fidelity term. We propose an
+ algorithm which computes an exact minimizer of this
+ problem. The method relies on the decomposition of an image
+ into its level sets. Using these level sets, we map the
+ problem into optimizations of independent binary Markov
+ Random Fields. Binary solutions are found thanks to
+ graph-cut techniques and we show how to derive a fast
+ algorithm. We also study the special case when the fidelity
+ term is the $L^1$-norm. Finally we provide some
+ experiments.}
+}
+
+@InProceedings{ darbon.05.ispa,
+ author = {J\'er\^ome Darbon},
+ title = {Total Variation Minimization with $L^1$ Data Fidelity as a
+ Contrast Invariant Filter},
+ booktitle = {Proceedings of the 4th International Symposium on Image
+ and Signal Processing and Analysis (ISPA 2005)},
+ year = 2005,
+ address = {Zagreb, Croatia},
+ month = sep,
+ pages = {221--226},
+ project = {Image},
+ urllrde = {200509-Ispa},
+ abstract = {This paper sheds new light on minimization of the total
+ variation under the $L^1$-norm as data fidelity term
+ ($L^1+TV$) and its link with mathematical morphology. It is
+ well known that morphological filters enjoy the property of
+ being invariant with respect to any change of contrast.
+ First, we show that minimization of $L^1+TV$ yields a
+ self-dual and contrast invariant filter. Then, we further
+ constrain the minimization process by only optimizing the
+ grey levels of level sets of the image while keeping their
+ boundaries fixed. This new constraint is maintained thanks
+ to the Fast Level Set Transform which yields a complete
+ representation of the image as a tree. We show that this
+ filter can be expressed as a Markov Random Field on this
+ tree. Finally, we present some results which demonstrate
+ that these new filters can be particularly useful as a
+ preprocessing stage before segmentation.}
+}
+
+@InProceedings{ darbon.05.isvc,
+ author = {J\'er\^ome Darbon and Sylvain Peyronnet},
+ title = {A Vectorial Self-Dual Morphological Filter based on Total
+ Variation Minimization},
+ booktitle = {Proceedings of the First International Conference on
+ Visual Computing},
+ year = 2005,
+ address = {Lake Tahoe, Nevada, USA},
+ month = dec,
+ project = {Image},
+ pages = {388--395},
+ series = {Lecture Notes in Computer Science Series},
+ publisher = {Springer-Verlag},
+ volume = 3804,
+ urllrde = {200512-Isvc},
+ abstract = {We present a vectorial self dual morphological filter.
+ Contrary to many methods, our approach does not require the
+ use of an ordering on vectors. It relies on the
+ minimization of the total variation with $L^1$ norm as data
+ fidelity on each channel. We further constraint this
+ minimization in order not to create new values. It is shown
+ that this minimization yields a self-dual and contrast
+ invariant filter. Although the above minimization is not a
+ convex problem, we propose an algorithm which computes a
+ global minimizer. This algorithm relies on minimum cost
+ cut-based optimizations.}
+}
+
+@PhDThesis{ darbon.05.phd,
+ author = {J\'er\^ome Darbon},
+ title = {Composants logiciels et algorithmes de minimisation exacte
+ d'\'energies d\'edid\'ees au traitement d'images},
+ school = {\'Ecole Nationale Sup\'erieure des T\'el\'ecommunications
+ de Paris (ENST)},
+ address = {Paris, France},
+ year = 2005,
+ month = oct,
+ number = {XXX},
+ note = {In French},
+ urllrde = {200510-PhD},
+ abstract = {Dans cette th\`ese nous \'etudions la minimisation
+ d'\'energies markoviennes rencontr\'ees dans les domaines
+ du traitement des images et de la vision par ordinateur.
+ Nous proposons des algorithmes de minimisation exacte pour
+ diff\'erents types d'\'energies. Ces algorithmes ont
+ l'int\'er\^et de fournir un minimum global quand bien
+ m\^eme l'\'energie n'est pas convexe. Enfin, nous mettons
+ en \'evidence quelques liens entre les champs de Markov
+ binaires et la morphologie math\'ematique. La version
+ finale de ce manuscrit suit les recommandations des rapporteurs.}
+}
+
+@TechReport{ darbon.05.tr,
+ author = {J\'er\^ome Darbon and Marc Sigelle},
+ title = {A fast and exact algorithm for total variation
+ minimization},
+ institution = {ENST},
+ year = 2005,
+ number = {2005D002},
+ address = {Paris, France},
+ month = jan,
+ project = {Image},
+ annote = {This technical report corresponds to the publication
+ darbon.05.ibpria.},
+ urllrde = {200501-TR},
+ abstract = {This paper deals with the minimization of the total
+ variation under a convex data fidelity term. We propose an
+ algorithm which computes an exact minimizer of this
+ problem. The method relies on the decomposition of an image
+ into its level sets. Using these level sets, we map the
+ problem into optimizations of independent binary Markov
+ Random Fields. Binary solutions are found thanks to
+ graph-cut techniques and we show how to derive a fast
+ algorithm. We also study the special case when the fidelity
+ term is the $L^1$-norm. Finally we provide some
+ experiments.}
+}
+
+@InProceedings{ darbon.06.iccp,
+ author = {J\'er\^ome Darbon and Richard Lassaigne and Sylvain
+ Peyronnet},
+ title = {Approximate Probabilistic Model Checking for Programs},
+ booktitle = {Proceedings of the {IEEE} 2nd International Conference on
+ Intelligent Computer Communication and Processing
+ ({ICCP'06)}},
+ year = 2006,
+ address = {Technical University of Cluj-Napoca, Romania},
+ month = sep,
+ urllrde = {200606-Iccp2},
+ abstract = {In this paper we deal with the problem of applying model
+ checking to real programs. We verify a program without
+ constructing the whole transition system using a technique
+ based on Monte-Carlo sampling, also called ``approximate
+ model checking''. This technique combines model checking
+ and randomized approximation. Thus, it avoids the so called
+ state space explosion phenomenon. We propose a prototype
+ implementation that works directly on C source code. It
+ means that, contrary to others approaches, we do not need
+ to use a specific language nor specific data structures in
+ order to describe the system we wish to verify. Finally, we
+ present experimental results that show the effectiveness of
+ the approach applied to finding bugs in real programs.}
+}
+
+@Article{ darbon.06.jmiv,
+ author = {J\'er\^ome Darbon and Marc Sigelle},
+ title = {Image restoration with discrete constrained {T}otal
+ {Variation}---Part~{I}: Fast and exact optimization},
+ journal = {Journal of Mathematical Imaging and Vision},
+ year = 2006,
+ volume = 26,
+ number = 3,
+ month = dec,
+ pages = {261--276},
+ project = {Image},
+ urllrde = {2006XXX-JMIVa},
+ abstract = {This paper deals with the total variation minimization
+ problem in image restoration for convex data fidelity
+ functionals. We propose a new and fast algorithm which
+ computes an exact solution in the discrete framework. Our
+ method relies on the decomposition of an image into its
+ level sets. It maps the original problems into independent
+ binary Markov Random Field optimization problems at each
+ level. Exact solutions of these binary problems are found
+ thanks to minimum cost cut techniques in graphs. These
+ binary solutions are proved to be monotone increasing with
+ levels and yield thus an exact solution of the discrete
+ original problem. Furthermore we show that minimization of
+ total variation under $L^1$ data fidelity term yields a
+ self-dual contrast invariant filter. Finally we present
+ some results.}
+}
+
+@Article{ darbon.06.jmivb,
+ author = {J\'er\^ome Darbon and Marc Sigelle},
+ title = {Image restoration with discrete constrained {T}otal
+ {Variation}---Part~{II}: Levelable functions, convex priors
+ and non-convex case},
+ journal = {Journal of Mathematical Imaging and Vision},
+ year = 2006,
+ volume = 26,
+ number = 3,
+ month = dec,
+ pages = {277--291},
+ project = {Image},
+ urllrde = {2006XXX-JMIVb},
+ abstract = {In Part II of this paper we extend the results obtained in
+ Part I for total variation minimization in image
+ restoration towards the following directions: first we
+ investigate the decomposability property of energies on
+ levels, which leads us to introduce the concept of
+ levelable regularization functions (which TV is the
+ paradigm of). We show that convex levelable posterior
+ energies can be minimized exactly using the
+ level-independant cut optimization scheme seen in part I.
+ Next we extend this graph cut scheme optimization scheme to
+ the case of non-convex levelable energies. We present
+ convincing restoration results for images corrupted with
+ impulsive noise. We also provide a minimum-cost based
+ algorithm which computes a global minimizer for Markov
+ Random Field with convex priors. Last we show that
+ non-levelable models with convex local conditional
+ posterior energies such as the class of generalized
+ gaussian models can be exactly minimized with a generalized
+ coupled Simulated Annealing.}
+}
+
+@InProceedings{ darbon.06.siam,
+ author = {J\'er\^ome Darbon and Marc Sigelle},
+ title = {Fast and Exact Discrete Image Restoration Based on Total
+ Variation and on Its Extensions to Levelable Potentials},
+ booktitle = {SIAM Conference on Imaging Sciences},
+ year = 2006,
+ address = {Minneapolis, USA},
+ month = may,
+ project = {Image},
+ urllrde = {200605-SIAM},
+ abstract = {We investigate the decomposition property of posterior
+ restoration energies on level sets in a discrete Markov
+ Random Field framework. This leads us to the concept of
+ 'levelable' potentials (which TV is shown to be the
+ paradigm of). We prove that convex levelable posterior
+ energies can be minimized exactly with level-independant
+ binary graph cuts. We extend this scheme to the case of
+ non-convex levelable energies, and present convincing
+ restoration results for images degraded by impulsive
+ noise.}
+}
+
+@TechReport{ darbon.06.tr,
+ author = {J\'er\^ome Darbon and Marc Sigelle and Florence Tupin},
+ title = {A note on nice-levelable {MRFs} for {SAR} image denoising
+ with contrast preservation},
+ institution = {Signal and Image Processing Group, Ecole Nationale
+ Sup\'erieure des T\'el\'ecommunications},
+ year = 2006,
+ number = {2006D006},
+ address = {Paris, France},
+ month = sep,
+ project = {Image},
+ annote = {On this technical report is based the publication
+ darbon.07.ei ; 200701-SPIE},
+ urllrde = {200701-SPIE}
+}
+
+@InProceedings{ darbon.07.ei,
+ author = {J\'er\^ome Darbon and Marc Sigelle and Florence Tupin},
+ title = {The use of levelable regularization functions for {MRF}
+ restoration of {SAR} images},
+ booktitle = {Proceedings of the 19th Symposium SPIE on Electronic
+ Imaging},
+ year = 2007,
+ address = {San Jose, CA, USA},
+ month = jan,
+ project = {Image},
+ urllrde = {200701-SPIE},
+ abstract = {It is well-known that Total Variation (TV) minimization
+ with L2 data fidelity terms (which corresponds to white
+ Gaussian additive noise) yields a restored image which
+ presents some loss of contrast. The same behavior occurs
+ for TVmodels with non-convex data fidelity terms that
+ represent speckle noise. In this note we propose a new
+ approach to cope with the restoration of Synthetic Aperture
+ Radar images while preserving the contrast.}
+}
+
+@InProceedings{ darbon.07.mirage,
+ author = {J\'er\^ome Darbon},
+ title = {A Note on the Discrete Binary {Mumford-Shah} Model},
+ booktitle = {Proceedings of the international Computer Vision /
+ Computer Graphics Collaboration Techniques and Applications
+ (MIRAGE 2007)},
+ year = 2007,
+ address = {Paris, France},
+ month = mar,
+ project = {Image},
+ urllrde = {200703-MIRAGE},
+ abstract = {This paper is concerned itself with the analysis of the
+ two-phase Mumford-Shah model also known as the active
+ contour without edges model introduced by Chan and Vese. It
+ consists of approximating an observed image by a piecewise
+ constant image which can take only two values. First we
+ show that this model with the $L^1$-norm as data fidelity
+ yields a contrast invariant filter which is a well known
+ property of morphological filters. Then we consider a
+ discrete version of the original problem. We show that an
+ inclusion property holds for the minimizers. The latter is
+ used to design an efficient graph-cut based algorithm which
+ computes an exact minimizer. Some preliminary results are
+ presented.}
+}
+
+@InProceedings{ darbon.08.iwcia,
+ author = {J\'er\^ome Darbon},
+ title = {Global Optimization for First Order {Markov} Random Fields
+ with Submodular Priors},
+ booktitle = {Proceedings of the twelfth International Workshop on
+ Combinatorial Image Analysis (IWCIA'08) },
+ year = 2008,
+ address = {Buffalo, New York, USA},
+ month = apr,
+ project = {Image},
+ urllrde = {200801-IWCIA},
+ abstract = {This paper copes with the optimization of Markov Random
+ Fields with pairwise interactions defined on arbitrary
+ graphs. The set of labels is assumed to be linearly ordered
+ and the priors are supposed to be submodular. Under these
+ assumptions we propose an algorithm which computes an exact
+ minimizer of the Markovian energy. Our approach relies on
+ mapping the original into a combinatorial one which
+ involves only binary variables. The latter is shown to be
+ exactly solvable via computing a maximum flow. The
+ restatement into a binary combinatorial problem is done by
+ considering the level-sets of the labels instead of the
+ label values themselves. The submodularity of the priors is
+ shown to be a necessary and sufficient condition for the
+ applicability of the proposed approach.}
+}
+
+@Misc{ david.05.sud,
+ author = {Valentin David and Akim Demaille and Renaud Durlin and
+ Olivier Gournet},
+ title = {{C}/{C++} Disambiguation Using Attribute Grammars},
+ year = 2005,
+ note = {Communication to Stratego Users Day 2005},
+ address = {Utrecht {U}niversity, {N}etherland},
+ month = may,
+ project = {Transformers},
+ urllrde = {200505-SUD-disamb},
+ abstract = {We propose a novel approach to semantics driven
+ disambiguation based on Attribute Grammars (AGs). AGs share
+ the same modularity model as its host grammar language,
+ here Syntax Definition Formalism (SDF), what makes them
+ particularly attractive for working on unstable grammars,
+ or grammar extensions. The framework we propose is
+ effective, since a full ISO-C99 disambiguation chain
+ already works, and the core of the hardest ambiguities of
+ C++ is solved. This requires specific techniques, and some
+ extensions to the stock AG model.}
+}
+
+@InProceedings{ david.06.iccp,
+ author = {Valentin David and Akim Demaille and Olivier Gournet},
+ title = {Attribute Grammars for Modular Disambiguation},
+ booktitle = {Proceedings of the {IEEE} 2nd International Conference on
+ Intelligent Computer Communication and Processing
+ ({ICCP'06)}},
+ year = 2006,
+ address = {Technical University of Cluj-Napoca, Romania},
+ month = sep,
+ urllrde = {200606-ICCP},
+ abstract = {To face the challenges to tomorrow's software engineering
+ tools, powerful language-generic program-transformation
+ components are needed. We propose the use of attribute
+ grammars (AGs) to generate language specific disambiguation
+ filters. In this paper, a complete implementation of a
+ language-independent AGs system is presented. As a full
+ scale experiment, we present an implementation of a
+ flexible C front-end. Its specifications are concise,
+ modular, and the result is efficient. On top of it,
+ transformations such as software renovation, code metrics,
+ domain specific language embedding can be implemented.},
+ project = {Transformers}
+}
+
+@Article{ dehak.05.pami,
+ author = {R\'eda Dehak and Isabelle Bloch and Henri Ma{\^\i}tre},
+ title = {Spatial reasoning with relative incomplete information on
+ relative positioning},
+ journal = {IEEE Transactions on Pattern Analysis and Machine
+ Intelligence},
+ year = 2005,
+ pages = {1473--1484},
+ volume = 27,
+ month = sep,
+ number = 9,
+ project = {Image},
+ urllrde = {200509-PAMI},
+ abstract = {This paper describes a probabilistic method of inferring
+ the position of a point with respect to a reference point
+ knowing their relative spatial position to a third point.
+ We address this problem in the case of incomplete
+ information where only the angular spatial relationships
+ are known. The use of probabilistic representations allows
+ us to model prior knowledge. We derive exact formulae
+ expressing the conditional probability of the position
+ given the two known angles, in typical cases: uniform or
+ Gaussian random prior distributions within rectangular or
+ circular regions. This result is illustrated with respect
+ to two different simulations: The first is devoted to the
+ localization of a mobile phone using only angular
+ relationships, the second, to geopositioning within a city.
+ This last example uses angular relationships and some
+ additional knowledge about the position.}
+}
+
+@InProceedings{ dehak.06.nist,
+ author = {R\'eda Dehak and Charles-Alban Deledalle and Najim Dehak},
+ title = {{LRDE} System description},
+ booktitle = {NIST SRE'06 Workshop: speaker recognition evaluation
+ campaign},
+ year = 2006,
+ address = {San Juan, Puerto Rico},
+ month = jun,
+ urllrde = {200606-NIST-A}
+}
+
+@InProceedings{ dehak.07.interspeech,
+ author = {R\'eda Dehak and Najim Dehak and Patrick Kenny and Pierre
+ Dumouchel},
+ title = {Linear and Non Linear Kernel {GMM} SuperVector Machines
+ for Speaker Verification},
+ booktitle = {Proceedings of the European Conference on Speech
+ Communication and Technologies (Interspeech'07)},
+ year = 2007,
+ address = {Antwerp, Belgium},
+ month = aug,
+ urllrde = {200708-INTERSPEECH},
+ abstract = {This paper presents a comparison between Support Vector
+ Machines (SVM) speaker verification systems based on linear
+ and non linear kernels defined in GMM supervector space. We
+ describe how these kernel functions are related and we show
+ how the nuisance attribute projection (NAP) technique can
+ be used with both of these kernels to deal with the session
+ variability problem. We demonstrate the importance of GMM
+ model normalization (M-Norm) especially for the non linear
+ kernel. All our experiments were performed on the core
+ condition of NIST 2006 speaker recognition evaluation (all
+ trials). Our best results (an equal error rate of 6.3\%)
+ were obtained using NAP and GMM model normalization with
+ the non linear kernel.}
+}
+
+@InProceedings{ dehak.08.nist,
+ author = {R\'eda Dehak and Najim Dehak and Patrick Kenny},
+ title = {The {LRDE} Systems for the 2008 {NIST} Speaker Recognition
+ Evaluation},
+ booktitle = {NIST-SRE 2008},
+ year = 2008,
+ address = {Montr\'eal, Canada},
+ month = jun
+}
+
+@InProceedings{ dehak.08.odysseya,
+ author = {R\'eda Dehak and Najim Dehak and Patrick Kenny and Pierre
+ Dumouchel},
+ title = {Kernel Combination for {SVM} Speaker Verification},
+ booktitle = {Proceedings of the Speaker and Language Recognition
+ Workshop (IEEE-Odyssey 2008)},
+ year = 2008,
+ address = {Stellenbosch, South Africa},
+ month = jan,
+ urllrde = {200709-ODYSSEY-A},
+ abstract = {We present a new approach for constructing the kernels
+ used to build support vector machines for speaker
+ verification. The idea is to construct new kernels by
+ taking linear combination of many kernels such as the GLDS
+ and GMM supervector kernels. In this new kernel
+ combination, the combination weights are speaker dependent
+ rather than universal weights on score level fusion and
+ there is no need for extra-data to estimate them. An
+ experiment on the NIST 2006 speaker recognition evaluation
+ dataset (all trial) was done using three different kernel
+ functions (GLDS kernel, linear and Gaussian GMM supervector
+ kernels). We compared our kernel combination to the optimal
+ linear score fusion obtained using logistic regression.
+ This optimal score fusion was trained on the same test
+ data. We had an equal error rate of $\simeq 5,9\%$ using
+ the kernel combination technique which is better than the
+ optimal score fusion system ($\simeq 6,0\%$).}
+}
+
+@InProceedings{ dehak.08.odysseyb,
+ author = {Najim Dehak and R\'eda Dehak and Patrick Kenny and Pierre
+ Dumouchel},
+ title = {Comparison Between Factor Analysis and {GMM} Support
+ Vector Machines for Speaker Verification},
+ booktitle = {Proceedings of the Speaker and Language Recognition
+ Workshop (IEEE-Odyssey 2008)},
+ year = 2008,
+ address = {Stellenbosch, South Africa},
+ month = jan,
+ urllrde = {200709-ODYSSEY-B},
+ abstract = {We present a comparison between speaker verification
+ systems based on factor analysis modeling and support
+ vector machines using GMM supervectors as features. All
+ systems used the same acoustic features and they were
+ trained and tested on the same data sets. We test two types
+ of kernel (one linear, the other non-linear) for the GMM
+ support vector machines. The results show that factor
+ analysis using speaker factors gives the best results on
+ the core condition of the NIST 2006 speaker recognition
+ evaluation. The difference is particularly marked on the
+ English language subset. Fusion of all systems gave an
+ equal error rate of 4.2\% (all trials) and 3.2\% (English
+ trials only).}
+}
+
+@InProceedings{ dehak.09.icassp,
+ author = {Najim Dehak and Patrick Kenny and R\'eda Dehak and Ondrej
+ Glember and Pierre Dumouchel and Lukas Burget and
+ Valiantsina Hubeika and Fabio Castaldo},
+ title = {Support Vector Machines and Joint Factor Analysis for
+ Speaker Verification},
+ booktitle = {IEEE-ICASSP},
+ year = 2009,
+ address = {Taipei - Taiwan},
+ month = apr,
+ urllrde = {200904-ICASSP},
+ abstract = {This article presents several techniques to combine
+ between Support vector machines (SVM) and Joint Factor
+ Analysis (JFA) model for speaker verification. In this
+ combination, the SVMs are applied on different sources of
+ information produced by the JFA. These informations are the
+ Gaussian Mixture Model supervectors and speakers and Common
+ factors. We found that the use of JFA factors gave the best
+ results especially when within class covariance
+ normalization method is applied in the speaker factors
+ space, in order to compensate for the channel effect. The
+ new combination results are comparable to other classical
+ JFA scoring techniques.}
+}
+
+@InProceedings{ dehak.09.interspeech,
+ author = {Najim Dehak and R\'eda Dehak and Patrick Kenny and Niko
+ Brummer and Pierre Ouellet and Pierre Dumouchel},
+ title = {Support Vector Machines versus Fast Scoring in the
+ Low-Dimensional Total Variability Space for Speaker
+ Verification},
+ booktitle = {Interspeech},
+ year = 2009,
+ month = sep,
+ urllrde = {200909-INTERSPEECH-B},
+ abstract = {This paper presents a new speaker verification system
+ architecture based on Joint Factor Analysis (JFA) as
+ feature extractor. In this modeling, the JFA is used to
+ define a new low-dimensional space named the total
+ variability factor space, instead of both channel and
+ speaker variability spaces for the classical JFA. The main
+ contribution in this approach, is the use of the cosine
+ kernel in the new total factor space to design two
+ different systems: the first system is Support Vector
+ Machines based, and the second one uses directly this
+ kernel as a decision score. This last scoring method makes
+ the process faster and less computation complex compared to
+ others classical methods. We tested several intersession
+ compensation methods in total factors, and we found that
+ the combination of Linear Discriminate Analysis and Within
+ Class Covariance Normalization achieved the best
+ performance.}
+}
+
+@InProceedings{ dehak.09.interspeechb,
+ author = {Pierre Dumouchel and Najim Dehak and Yazid Attabi and
+ R\'eda Dehak and Narj\`es Boufaden},
+ title = {Cepstral and Long-Term Features for Emotion Recognition},
+ booktitle = {Interspeech},
+ year = 2009,
+ month = sep,
+ note = {Open Performance Sub-Challenge Prize},
+ urllrde = {200909-INTERSPEECH-A},
+ abstract = {In this paper, we describe systems that were developed for
+ the Open Performance Sub-Challenge of the INTERSPEECH 2009
+ Emotion Challenge. We participate to both two-class and
+ five-class emotion detection. For the two-class problem,
+ the best performance is obtained by logistic regression
+ fusion of three systems. Theses systems use short- and
+ long-term speech features. This fusion achieved an absolute
+ improvement of 2,6\% on the unweighted recall value
+ compared with [6]. For the five-class problem, we submitted
+ two individual systems: cepstral GMM vs. long-term GMM-UBM.
+ The best result comes from a cepstral GMM and produced an
+ absolute improvement of 3,5\% compared to [6].}
+}
+
+@InProceedings{ dehak.10.nist,
+ author = {R. Dehak and N.Dehak},
+ title = {LRDE {S}peaker {R}ecognition {S}ystem for {NIST-SRE}
+ 2010},
+ booktitle = {NIST 2010 Speaker Recognition Evaluation},
+ year = 2010,
+ address = {Brno, CZ}
+}
+
+@InProceedings{ dehak.10.odyssey,
+ author = {N. Dehak and R. Dehak and J. Glass and D. Reynolds and P.
+ Kenny},
+ title = {Cosine {S}imilarity {S}coring without {S}core
+ {N}ormalization {T}echniques},
+ booktitle = {Odyssey The Speaker and Language Recognition},
+ year = 2010,
+ address = {Brno, Czech Republic}
+}
+
+@InProceedings{ dehak.10.odyssey2,
+ author = {S. Shum and N. Dehak and R. Dehak and J. Glass},
+ title = {Unsupervised {S}peaker {A}daptation based on the {C}osine
+ {S}imilarity for {T}ext-{I}ndependent {S}peaker
+ {V}erification},
+ booktitle = {Odyssey The Speaker and Language Recognition},
+ year = 2010,
+ address = {Brno, Czech Republic}
+}
+
+@InProceedings{ dehak.11.icassp,
+ author = {N. Dehak and Z. Karam and D. Reynolds and R. Dehak and W.
+ Campbell and J. Glass},
+ title = {A {C}hannel-{B}lind {S}ystem for {S}peaker
+ {V}erification},
+ booktitle = {International Conference on Acoustics, Speech and Signal
+ Processing (ICASSP)},
+ pages = {4536--4539},
+ year = 2011,
+ address = {Prage, Czech Republic},
+ month = may
+}
+
+@InProceedings{ dehak.11.interspeech,
+ author = {Najim Dehak and Pedro A. Torres-Carrasquillo and Douglas
+ Reynolds and Reda Dehak},
+ title = {Language {R}ecognition via {I}-{V}ectors and
+ {D}imensionality {R}eduction},
+ booktitle = {INTERSPEECH 2011},
+ pages = {857--860},
+ year = 2011,
+ address = {Florence, Italy},
+ month = aug
+}
+
+@Article{ dehak.11.taslp,
+ author = {N. Dehak and P. Kenny and R. Dehak and P. Dumouchel and P.
+ Ouellet},
+ title = {Front-{E}nd {F}actor {A}nalysis {F}or {S}peaker
+ {V}erification},
+ year = 2011,
+ journal = {IEEE Transactions on Audio, Speech, and Language
+ Processing},
+ volume = 13,
+ number = 4,
+ pages = {788--798},
+ month = may
+}
+
+@InProceedings{ demaille.05.iticse,
+ author = {Akim Demaille},
+ title = {Making Compiler Construction Projects Relevant to Core
+ Curriculums},
+ booktitle = {Proceedings of the Tenth Annual Conference on Innovation
+ and Technology in Computer Science Education
+ ({ITICSE'05})},
+ year = 2005,
+ address = {Universidade Nova de {L}isboa, {M}onte da {P}acarita,
+ {P}ortugal},
+ month = jun,
+ project = {Tiger},
+ urllrde = {200506-ITICSE},
+ isbn = {1-59593-024-8},
+ pages = {266--270},
+ abstract = {Having 300 students a year implement a compiler is a
+ debatable enterprise, since the industry will certainly
+ \emph{not} recruit them for this competence. Yet we made
+ that decision five years ago, for reasons not related to
+ compiler construction. We detail these motivations, the
+ resulting compiler design, and how we manage the
+ assignment. The project meets its goals, since the majority
+ of former students invariably refer to it as \emph{the}
+ project that taught them the most.}
+}
+
+@InProceedings{ demaille.06.isola,
+ author = {Akim Demaille and Sylvain Peyronnet and Beno\^it Sigoure},
+ title = {Modeling of Sensor Networks Using {XRM}},
+ booktitle = {Proceedings of the 2nd International Symposium on
+ Leveraging Applications of Formal Methods, Verification and
+ Validation ({ISoLA'06})},
+ year = 2006,
+ address = {Coral Beach Resort, {P}aphos, {C}yprus},
+ month = nov,
+ project = {Transformers},
+ abstract = {Sensor networks are composed of small electronic devices
+ that embed processors, sensors, batteries, memory and
+ communication capabilities. One of the main goal in the
+ design of such systems is the handling of the inherent
+ complexity of the nodes, strengthened by the huge number of
+ nodes in the network. For these reasons, it becomes very
+ difficult to model and verify such systems. In this paper,
+ we investigate the main characteristics of sensor nodes,
+ discuss about the use of a language derived from Reactive
+ Modules for their modeling and propose a language (and a
+ tool set) that ease the modeling of this kind of systems.},
+ urllrde = {200609-ISOLA}
+}
+
+@InProceedings{ demaille.06.rivf,
+ author = {Akim Demaille and Sylvain Peyronnet and {\relax Th}omas
+ H\'erault},
+ title = {Probabilistic Verification of Sensor Networks},
+ booktitle = {Proceedings of the Fourth International Conference on
+ Computer Sciences, Research, Innovation and Vision for the
+ Future (RIVF'06)},
+ year = 2006,
+ address = {Ho Chi Minh City, Vietnam},
+ isbn = {1-4244-0316-2},
+ month = feb,
+ project = {APMC},
+ urllrde = {200602-rivf},
+ abstract = {Sensor networks are networks consisting of miniature and
+ low-cost systems with limited computation power and energy.
+ Thanks to the low cost of the devices, one can spread a
+ huge number of sensors into a given area to monitor, for
+ example, physical change of the environment. Typical
+ applications are in defense, environment, and design of
+ ad-hoc networks areas. In this paper, we address the
+ problem of verifying the correctness of such networks
+ through a case study. We modelize a simple sensor network
+ whose aim is to detect the apparition of an event in a
+ bounded area (such as a fire in a forest). The behaviour of
+ the network is probabilistic, so we use APMC, a tool that
+ allows to approximately check the correctness of extremely
+ large probabilistic systems, to verify it.}
+}
+
+@InProceedings{ demaille.08.fsmnlp,
+ author = {Akim Demaille and Alexandre Duret-Lutz and Florian Lesaint
+ and Sylvain Lombardy and Jacques Sakarovitch and Florent
+ Terrones},
+ title = {An {XML} format proposal for the description of weighted
+ automata, transducers, and regular expressions},
+ booktitle = {Proceedings of the seventh international workshop on
+ Finite-State Methods and Natural Language Processing
+ (FSMNLP'08)},
+ year = 2008,
+ address = {Ispra, Italia},
+ month = sep,
+ abstract = {We present an XML format that allows to describe a large
+ class of finite weighted automata and transducers. Our
+ design choices stem from our policy of making the
+ implementation as simple as possible. This format has been
+ tested for the communication between the modules of our
+ automata manipulation platform Vaucanson, but this document
+ is less an experiment report than a position paper intended
+ to open the discussion among the community of automata
+ software writers.},
+ urllrde = {200809-FSMNLP}
+}
+
+@InProceedings{ demaille.08.iticse,
+ author = {Akim Demaille and Roland Levillain and Beno\^it Perrot},
+ title = {A Set of Tools to Teach Compiler Construction},
+ booktitle = {Proceedings of the Thirteenth Annual Conference on
+ Innovation and Technology in Computer Science Education
+ ({ITICSE'08})},
+ pages = {68--72},
+ year = 2008,
+ address = {Universidad Polit\'ecnica de Madrid, Spain},
+ month = jun,
+ project = {Tiger},
+ urllrde = {200806-ITICSE},
+ abstract = {Compiler construction is a widely used software
+ engineering exercise, but because most students will not be
+ compiler writers, care must be taken to make it relevant in
+ a core curriculum. Auxiliary tools, such as generators and
+ interpreters, often hinder the learning: students have to
+ fight tool idiosyncrasies, mysterious errors, and other
+ poorly educative issues. We introduce a set of tools
+ especially designed or improved for compiler construction
+ educative projects in \Cxx. We also provide suggestions
+ about new approaches to compiler construction. We draw
+ guidelines from our experience to make tools suitable for
+ education purposes.}
+}
+
+@Misc{ demaille.08.kex,
+ author = {Akim Demaille and Roland Levillain},
+ title = {Compiler Construction as an Effective Application to Teach
+ Object-Oriented Programming},
+ howpublished = {The seventh ``Killer Examples'' workshop, Worked Examples
+ for Sound OO Pedagogy, at OOPSLA'08.},
+ address = {Nashville, USA},
+ month = oct,
+ year = 2008,
+ note = {Oral presentation},
+ project = {Tiger},
+ urllrde = {200810-KEX},
+ abstract = {Compiler construction, a course feared by most students,
+ and a competence seldom needed in the industry. Yet we
+ claim that compiler construction is wonderful topic that
+ benefits from virtually all the computer-science topics. In
+ this paper we show in particular why compiler construction
+ is a killer example for Object-Oriented Programming,
+ providing a unique opportunity for students to understand
+ what it is, what it can be used for, and how it works.}
+}
+
+@InProceedings{ demaille.08.ldta,
+ oldkeys = {durlin.08.seminar},
+ author = {Akim Demaille and Renaud Durlin and Nicolas Pierron and
+ Beno\^it Sigoure},
+ title = {{Semantics driven disambiguation: A comparison of
+ different approaches}},
+ booktitle = {Proceedings of the 8th workshop on Language Descriptions,
+ Tools and Applications (LDTA'08)},
+ year = 2008,
+ urllrde = {200802-LDTA},
+ abstract = {Context-sensitive languages such as \C or \Cxx can be
+ parsed using a context-free but ambiguous grammar, which
+ requires another stage, disambiguation, in order to select
+ the single parse tree that complies with the language's
+ semantical rules. Naturally, large and complex languages
+ induce large and complex disambiguation stages. If, in
+ addition, the parser should be extensible, for instance to
+ enable the embedding of domain specific languages, the
+ disambiguation techniques should feature traditional
+ software-engineering qualities: modularity, extensibility,
+ scalability and expressiveness. \\ We evaluate three
+ approaches to write disambiguation filters for \acs{sdf}
+ grammars: algebraic equations with \acs{asf}, rewrite-rules
+ with programmable traversals for \stratego, and attribute
+ grammars with \acr{tag}, our system. To this end we
+ introduce \phenix, a highly ambiguous language. Its
+ ``standard'' grammar exhibits ambiguities inspired by those
+ found in the \C and \Cxx standard grammars. To evaluate
+ modularity, the grammar is layered: it starts with a small
+ core language, and several layers add new features, new
+ production rules, and new ambiguities.},
+ project = {Transformers},
+ keywords = {Transformers, context-free grammar, attribute grammar,
+ Stratego, ASF, SDF, disambiguation, parsing, program
+ transformation, term rewriting}
+}
+
+@InProceedings{ demaille.09.sac,
+ author = {Akim Demaille and Roland Levillain and Beno\^it Sigoure},
+ title = {{TWEAST}: A Simple and Effective Technique to Implement
+ Concrete-Syntax {AST} Rewriting Using Partial Parsing},
+ booktitle = {Proceedings of the 24th Annual ACM Symposium on Applied
+ Computing (SAC'09)},
+ pages = {1924--1929},
+ year = 2009,
+ address = {Waikiki Beach, Honolulu, Hawaii, USA},
+ month = mar,
+ project = {Tiger},
+ urllrde = {200903-SAC},
+ abstract = {ASTs are commonly used to represent an input/output
+ program in compilers and language processing tools. Many of
+ the tasks of these tools consist in generating and
+ rewriting ASTs. Such an approach can become tedious and
+ hard to maintain for complex operations, namely program
+ transformation, optimization, instrumentation, etc. On the
+ other hand, \emph{concrete syntax} provides a natural and
+ simpler representation of programs, but it is not usually
+ available as a direct feature of the aforementioned tools.
+ We propose a simple technique to implement AST generation
+ and rewriting in general purpose languages using concrete
+ syntax. Our approach relies on extensions made in the
+ scanner and the parser and the use of objects supporting
+ partial parsing called Text With Embedded Abstract Syntax
+ Trees (TWEASTS). A compiler for a simple language (Tiger)
+ written in \Cxx serves as an example, featuring
+ transformations in concrete syntax: syntactic desugaring,
+ optimization, code instrumentation such as bounds-checking,
+ etc. Extensions of this technique to provide a full-fledged
+ concrete-syntax rewriting framework are presented as well.}
+}
+
+@InProceedings{ denise.06.rt,
+ author = {Alain Denise and Marie-Claude Gaudel and
+ Sandrine-Dominique Gouraud and Richard Lassaigne and
+ Sylvain Peyronnet},
+ title = {Uniform Random Sampling of Traces in Very Large Models},
+ booktitle = {Proceedings of the 1st international workshop on Random
+ Testing 2006 (RT06)},
+ year = 2006,
+ series = {ACM digital library},
+ pages = {10--19},
+ project = {APMC},
+ urllrde = {200606-RT},
+ abstract = {This paper presents some first results on how to perform
+ uniform random walks (where every trace has the same
+ probability to occur) in very large models. The models
+ considered here are described in a succinct way as a set of
+ communicating reactive modules. The method relies upon
+ techniques for counting and drawing uniformly at random
+ words in regular languages. Each module is considered as an
+ automaton defining such a language. It is shown how it is
+ possible to combine local uniform drawings of traces, and
+ to obtain some global uniform random sampling, without
+ construction of the global model.}
+}
+
+@Article{ dolstra.10.jfp,
+ author = {Eelco Dolstra and Andres L\"oh and Nicolas Pierron},
+ title = {{NixOS}: A purely functional {Linux} distribution},
+ journal = {Journal of Functional Programming},
+ year = 2010,
+ note = {Published online by Cambridge University Press 15 Oct
+ 2010},
+ urllrde = {201010-JFP},
+ doi = {10.1017/S0956796810000195}
+}
+
+@InProceedings{ duflot.04.avocs,
+ author = {Marie Duflot and Laurent Fribourg and {\relax Th}omas
+ Herault and Richard Lassaigne and Fr\'ed\'eric Magniette
+ and Stephane Messika and Sylvain Peyronnet and Claudine
+ Picaronny},
+ title = {Probabilistic model checking of the {CSMA/CD}, protocol
+ using {PRISM} and {APMC}},
+ booktitle = {Proceedings of the 4th International Workshop on Automated
+ Verification of Critical Systems (AVoCS)},
+ year = 2004,
+ series = {Electronic Notes in Theoretical Computer Science Series},
+ volume = 128,
+ issue = 6,
+ pages = {195--214},
+ project = {APMC},
+ urllrde = {200409-AVOCS},
+ abstract = {Carrier Sense Multiple Access/Collision Detection
+ (CSMA/CD) is the protocol for carrier transmission access
+ in Ethernet networks (international standard IEEE 802.3).
+ On Ethernet, any Network Interface Card (NIC) can try to
+ send a packet in a channel at any time. If another NIC
+ tries to send a packet at the same time, a collision is
+ said to occur and the packets are discarded. The CSMA/CD
+ protocol was designed to avoid this problem, more precisely
+ to allow a NIC to send its packet without collision. This
+ is done by way of a randomized exponential backoff process.
+ In this paper, we analyse the correctness of the CSMA/CD
+ protocol, using techniques from probabilistic model
+ checking and approximate probabilistic model checking. The
+ tools that we use are PRISM and APMC. Moreover, we provide
+ a quantitative analysis of some CSMA/CD properties.}
+}
+
+@InCollection{ duflot.06.book,
+ author = {Marie Duflot and Marta Kwiatkowska and Gethin Norman and
+ Dave Parker and Sylvain Peyronnet and Claudine Picaronny
+ and Jeremy Sproston},
+ title = {Practical Application of Probabilistic Model Checking to
+ Communication Protocols},
+ booktitle = {FMICS Handbook on Industrial Critical Systems},
+ year = 2006,
+ editor = {Stefania Gnesi and Tiziana Margaria},
+ chapter = 7,
+ note = {To appear},
+ project = {APMC},
+ urllrde = {200600-BOOK}
+}
+
+@InProceedings{ duret.00.gcse,
+ author = {Alexandre Duret-Lutz},
+ title = {Olena: a component-based platform for image processing,
+ mixing generic, generative and {OO} programming},
+ booktitle = {Proceedings of the 2nd International Symposium on
+ Generative and Component-Based Software Engineering
+ (GCSE)---Young Researchers Workshop; published in
+ ``Net.ObjectDays2000''},
+ pages = {653--659},
+ year = 2000,
+ address = {Erfurt, Germany},
+ month = oct,
+ isbn = {3-89683-932-2},
+ project = {Olena},
+ urllrde = {200010-NetObjectDays},
+ abstract = {This paper presents Olena, a toolkit for programming and
+ designing image processing chains in which each processing
+ is a component. But since there exist many image types
+ (different structures such as 2D images, 3D images or
+ graphs, as well as different value types) the platform has
+ been designed with genericity and reusability in mind: each
+ component is written as a generic C++ procedure, \`a la
+ STL. Other libraries, such as Khoros [Kon94] have a
+ different approach where a processing component contains an
+ implementation for each type supported by the library. This
+ makes code maintenance hard and prevents easy addition of
+ new image types. Still, Olena is not only a generic
+ component library [Jaz95], it shall contain additional
+ tools such as a visual programming environment (VPE). Those
+ tools may be programmed in a classical object-oriented
+ fashion (using operation and inclusion polymorphism) which
+ may seems antagonist with the generic programming paradigm
+ used in the library. Section 2 outlines the architecture of
+ Olena and elaborates more on the design problems resulting
+ from the use of generic components. Section 3 presents the
+ solution chosen to address these problems.}
+}
+
+@InProceedings{ duret.01.ae,
+ author = {Alexandre Duret-Lutz},
+ title = {Expression templates in {A}da~95},
+ booktitle = {Proceedings of the 6th International Conference on
+ Reliable Software Technologies (Ada-Europe)},
+ year = 2001,
+ series = {Lecture Notes in Computer Science Series},
+ volume = 2043,
+ address = {Leuven, Belgium},
+ month = may,
+ publisher = {Springer-Verlag},
+ pages = {191--202},
+ note = {Best Paper Award.},
+ project = {Software},
+ urllrde = {200105-Ae},
+ abstract = {High-order matrix or vector expressions tend to be
+ penalized by the use of huge temporary variables.
+ Expression templates is a C++ technique which can be used
+ to avoid these temporaries, in a way that is transparent to
+ the user. We present an Ada adaptation of this technique
+ which - while not transparent - addresses the same
+ efficiency issue as the original. We make intensive use of
+ the signature idiom to combine packages together, and
+ discuss its importance in generic programming. Finally, we
+ express some concerns about generic programming in Ada.}
+}
+
+@InProceedings{ duret.01.coots,
+ author = {Alexandre Duret-Lutz and {\relax Th}ierry G\'eraud and
+ Akim Demaille},
+ title = {Generic design patterns in {C++}},
+ booktitle = {Proceedings of the 6th USENIX Conference on
+ Object-Oriented Technologies and Systems (COOTS)},
+ year = 2001,
+ address = {San Antonio, TX, USA},
+ pages = {189--202},
+ month = {January-February},
+ publisher = {USENIX Association},
+ project = {Software},
+ urllrde = {200102-Coots},
+ abstract = {Generic programming is a paradigm whose wide adoption by
+ the C++ community is quite recent. In this approach most
+ classes and procedures are parameterized, leading to the
+ construction of general and efficient software components.
+ In this paper, we show how some design patterns from Gamma
+ et al. can be adapted to this paradigm. Although these
+ patterns rely highly on dynamic binding. We show that, by
+ making intensive use of parametric polymorphism in the
+ context of generic programming, the method calls in these
+ patterns can be resolved at compile-time. The speed-up
+ achieved using these patterns is significant.}
+}
+
+@InProceedings{ duret.09.atva,
+ author = {Alexandre Duret-Lutz and Denis Poitrenaud and Jean-Michel
+ Couvreur},
+ title = {On-the-fly Emptiness Check of Transition-based {S}treett
+ Automata},
+ booktitle = {Proceedings of the 7th International Symposium on
+ Automated Technology for Verification and Analysis
+ (ATVA'09)},
+ year = 2009,
+ editor = {Zhiming Liu and Anders P. Ravn},
+ series = {Lecture Notes in Computer Science},
+ publisher = {Springer-Verlag},
+ pages = {213--227},
+ volume = 5799,
+ abstract = {In the automata theoretic approach to model checking,
+ checking a state-space $S$ against a linear-time property
+ $\varphi$ can be done in $\RO(|S|\times
+ 2^{\RO(|\varphi|)})$ time. When model checking under $n$
+ strong fairness hypotheses expressed as a Generalized
+ B\"uchi automaton, this complexity becomes $\RO(|S|\times
+ 2^{\RO(|\varphi|+n)})$.\par Here we describe an algorithm
+ to check the emptiness of Streett automata, which allows
+ model checking under $n$ strong fairness hypotheses in
+ $\RO(|S|\times 2^{\RO(|\varphi|)}\times n)$. We focus on
+ transition-based Streett automata, because it allows us to
+ express strong fairness hypotheses by injecting Streett
+ acceptance conditions into the state-space without any blowup.},
+ urllrde = {200910-ATVA}
+}
+
+@TechReport{ duret.11.arxiv,
+ author = {Alexandre Duret-Lutz and Kais Klai and Denis Poitrenaud
+ and Yann Thierry-Mieg},
+ title = {Combining Explicit and Symbolic Approaches for Better
+ On-the-Fly {LTL} Model Checking},
+ institution = {arXiv},
+ year = 2011,
+ number = {1106.5700},
+ month = jun,
+ note = {Extended version of our ATVA'11 paper, presenting two new
+ techniques instead of one.},
+ url = {http://arxiv.org/abs/1106.5700},
+ urllrde = {201106-ARXIV},
+ abstract = {We present two new hybrid techniques that replace the
+ synchronized product used in the automata-theoretic
+ approach for LTL model checking. The proposed products are
+ explicit graphs of aggregates (symbolic sets of states)
+ that can be interpreted as B\"uchi automata. These hybrid
+ approaches allow on the one hand to use classical
+ emptiness-check algorithms and build the graph on-the-fly,
+ and on the other hand, to have a compact encoding of the
+ state space thanks to the symbolic representation of the
+ aggregates. The \emph{Symbolic Observation Product} assumes
+ a globally stuttering property (e.g., LTL$\setminus \X$) to
+ aggregate states. The \emph{Self-Loop Aggregation Product}
+ does not require the property to be globally stuttering
+ (i.e., it can tackle full LTL), but dynamically detects and
+ exploits a form of stuttering where possible. Our
+ experiments show that these two variants, while
+ incomparable with each other, can outperform other existing
+ approaches.}
+}
+
+@InProceedings{ duret.11.atva,
+ author = {Alexandre Duret-Lutz and Kais Klai and Denis Poitrenaud
+ and Yann Thierry-Mieg},
+ title = {Self-Loop Aggregation Product --- A New Hybrid Approach to
+ On-the-Fly {LTL} Model Checking},
+ booktitle = {Proceedings of the 9th International Symposium on
+ Automated Technology for Verification and Analysis
+ (ATVA'11)},
+ year = 2011,
+ series = {Lecture Notes in Computer Science},
+ volume = {6996},
+ pages = {336--350},
+ address = {Taipei, Taiwan},
+ month = oct,
+ publisher = {Springer},
+ urllrde = {201110-ATVA},
+ abstract = {We present the \emph{Self-Loop Aggregation Product}
+ (SLAP), a new hybrid technique that replaces the
+ synchronized product used in the automata-theoretic
+ approach for LTL model checking. The proposed product is an
+ explicit graph of aggregates (symbolic sets of states) that
+ can be interpreted as a B\"uchi automata. The criterion
+ used by SLAP to aggregate states from the Kripke structure
+ is based on the analysis of self-loops that occur in the
+ B\"uchi automaton expressing the property to verify. Our
+ hybrid approach allows on the one hand to use classical
+ emptiness-check algorithms and build the graph on-the-fly,
+ and on the other hand, to have a compact encoding of the
+ state space thanks to the symbolic representation of the
+ aggregates. Our experiments show that this technique often
+ outperforms other existing (hybrid or fully symbolic)
+ approaches.}
+}
+
+@Misc{ duret.11.sumo,
+ author = {Alexandre Duret-Lutz},
+ title = {Building {LTL} Model Checkers using {T}ransition-based
+ {G}eneralized {B\"u}chi {A}utomata},
+ howpublished = {Invited talk to SUMo'11},
+ month = jun,
+ year = 2011
+}
+
+@InProceedings{ duret.11.vecos,
+ author = {Alexandre Duret-Lutz},
+ title = {{LTL} Translation Improvements in {Spot}},
+ booktitle = {Proceedings of the 5th International Workshop on
+ Verification and Evaluation of Computer and Communication
+ Systems (VECoS'11)},
+ year = {2011},
+ series = {Electronic Workshops in Computing},
+ address = {Tunis, Tunisia},
+ month = sep,
+ publisher = {British Computer Society},
+ abstract = {Spot is a library of model-checking algorithms. This paper
+ focuses on the module translating LTL formul{\ae} into
+ automata. We discuss improvements that have been
+ implemented in the last four years, we show how Spot's
+ translation competes on various benchmarks, and we give
+ some insight into its implementation.},
+ url = {http://ewic.bcs.org/category/15853},
+ urllrde = {201109-VECOS}
+}
+
+@InProceedings{ fabre.00.egve,
+ author = {Yoann Fabre and Guillaume Pitel and Laurent Soubrevilla
+ and Emmanuel Marchand and {\relax Th}ierry G\'eraud and
+ Akim Demaille},
+ title = {An asynchronous architecture to manage communication,
+ display, and user interaction in distributed virtual
+ environments},
+ booktitle = {Virtual Environments 2000, Proceedings of the 6th
+ Eurographics Workshop on Virtual Environments (EGVE)},
+ year = 2000,
+ address = {Amsterdam, The Netherlands},
+ month = jun,
+ pages = {105--113},
+ series = {Computer Science / Eurographics Series},
+ editor = {J.D. Mulder and R. van Liere},
+ publisher = {Springer-Verlag WienNewYork},
+ project = {Urbi},
+ urllrde = {200006-Egve},
+ abstract = {In Distributed Virtual Environments, each machine runs the
+ same software, which is in charge of handling the
+ communications over the network, providing the user with a
+ view of the world, and processing his requests. A major
+ issue in the design of such a software is to ensure that
+ network communication does not degrade the interactivity
+ between the machine and the user. In this paper, we present
+ a software designed to achieve this goal, based on tools
+ rarely used in this area.}
+}
+
+@InProceedings{ fabre.00.vsmm,
+ author = {Yoann Fabre and Guillaume Pitel and Didier Verna},
+ title = {Urbi et {O}rbi: unusual design and implementation choices
+ for distributed virtual environments},
+ booktitle = {Proceedings of the 6th International Conference on Virtual
+ Systems and MultiMedia (VSMM)---Intelligent Environments
+ Workshop},
+ pages = {714--724},
+ year = 2000,
+ address = {Gifu, Japan},
+ month = oct,
+ publisher = {IOS Press, USA},
+ isbn = {1-58603-108-2},
+ project = {Urbi},
+ urllrde = {200010-Vsmm},
+ abstract = {This paper describes Urbi et Orbi, a distributed virtual
+ environment (DVE) project that is being conducted in the
+ Research and Development Laboratory at EPITA. Our ultimate
+ goal is to provide support for large scale multi-user
+ virtual worlds on end-user machines. The incremental
+ development of this project led us to take unusual design
+ and implementation decisions that we propose to relate in
+ this paper. Firstly, a general overview of the project is
+ given, along with the initial requirements we wanted to
+ meet. Then, we go on with a description of the system's
+ architecture. Lastly, we describe and justify the unusual
+ choices we have made in the project's internals.}
+}
+
+@InProceedings{ fabre.00.vw,
+ author = {Yoann Fabre and Guillaume Pitel and Laurent Soubrevilla
+ and Emmanuel Marchand and {\relax Th}ierry G\'eraud and
+ Akim Demaille},
+ title = {A framework to dynamically manage distributed virtual
+ environments},
+ booktitle = {Proceedings of the 2nd International Conference on Virtual
+ Worlds (VW)},
+ year = 2000,
+ address = {Paris, France},
+ month = jul,
+ pages = {54--64},
+ editor = {J.-C. Heudin},
+ publisher = {Springer Verlag},
+ series = {Lecture Notes in Computer Science Series},
+ volume = {LNAI 1834},
+ project = {Urbi},
+ urllrde = {200007-VW},
+ abstract = {In this paper, we present the project urbi, a framework to
+ dynamically manage distributed virtual environments (DVEs).
+ This framework relies on a dedicated scripting language,
+ goal, which is typed, object-oriented and dynamically
+ bound. goal is interpreted by the application hosted by
+ each machine and is designed to handle efficiently both
+ network communications and interactivity. Finally, we have
+ made an unusual design decision: our project is based on a
+ functional programming language, ocaml.}
+}
+
+@InProceedings{ fouquier.07.gbr,
+ author = {Geoffroy Fouquier and Jamal Atif and Isabelle Bloch},
+ title = {Local reasoning in fuzzy attribute graphs for optimizing
+ sequential segmentation},
+ booktitle = {Proceedings of the 6th IAPR TC-15 Workshop on Graph-based
+ Representations in Pattern Recognition (GBR)},
+ year = 2007,
+ month = jun,
+ address = {Alicante, Spain},
+ volume = {LNCS 4538},
+ editor = {F. Escolano and M. Vento},
+ publisher = {Springer Verlag},
+ isbn = {978-3-540-72902-0},
+ pages = {138--147},
+ urllrde = {200706-GBR},
+ abstract = {Spatial relations play a crucial role in model-based image
+ recognition and interpretation due to their stability
+ compared to many other image appearance characteristics.
+ Graphs are well adapted to represent such information.
+ Sequential methods for knowledge-based recognition of
+ structures require to define in which order the structures
+ have to be recognized. We propose to address this problem
+ of order definition by developing algorithms that
+ automatically deduce sequential segmentation paths from
+ fuzzy spatial attribute graphs. As an illustration, these
+ algorithms are applied on brain image understanding.}
+}
+
+@InProceedings{ fouquier.07.icassp,
+ author = {Geoffroy Fouquier and Laurence Likforman and J\'er\^ome
+ Darbon and Bulent Sankur},
+ title = {The Biosecure Geometry-based System for Hand Modality},
+ booktitle = {Proceedings of the 32nd IEEE International Conference on
+ Acoustics, Speech, and Signal Processing (ICASSP)},
+ year = 2007,
+ month = apr,
+ address = {Honolulu, Hawaii, USA},
+ volume = {I},
+ pages = {801--804},
+ isbn = {1-4244-0728-1},
+ urllrde = {200704-ICASSP},
+ abstract = {We present an identification and authentification system
+ based on hand modality which is part of a reference system
+ for all modalities developed within the Biosecure
+ consortium. It relies on simple geometric features
+ extracted from hand boundary. The different steps of this
+ system are detailed, namely: pre-processing, feature
+ extraction and hand matching. This system has been tested
+ on the Biosecure hand database which consists of 4500 hand
+ images of 750 individuals. Results are detailed with
+ respect to different enrolment conditions such as
+ population size, enrolment size, and image resolution.}
+}
+
+@InProceedings{ geraud.00.europlop,
+ author = {{\relax Th}ierry G\'eraud and Alexandre Duret-Lutz},
+ title = {Generic programming redesign of patterns},
+ booktitle = {Proceedings of the 5th European Conference on Pattern
+ Languages of Programs (EuroPLoP)},
+ year = 2000,
+ month = jul,
+ address = {Irsee, Germany},
+ pages = {283--294},
+ editors = {M. Devos and A. R\"uping},
+ publisher = {UVK, Univ. Verlag, Konstanz},
+ project = {Software},
+ urllrde = {200007-EuroPlop},
+ abstract = {This pattern faces the problem of improving the
+ performances of design patterns when they are involved in
+ intensive algorithms. Generic programming is a paradigm in
+ which most classes and procedures are parameterized, thus
+ leading to the construction of general and efficient
+ software components. We demonstrate that some design
+ patterns from Gamma et al. can be translated into this
+ paradigm while handling operation polymorphism by
+ parametric polymorphism. We thus preserve their modularity
+ and reusability properties but we avoid the performance
+ penalty due to their dynamic behavior, which is a critical
+ issue in numerical computing.}
+}
+
+@InProceedings{ geraud.00.icpr,
+ author = {{\relax Th}ierry G\'eraud and Yoann Fabre and Alexandre
+ Duret-Lutz and Dimitri Papadopoulos-Orfanos and
+ Jean-Fran\c{c}ois Mangin},
+ title = {Obtaining genericity for image processing and pattern
+ recognition algorithms},
+ booktitle = {Proceedings of the 15th International Conference on
+ Pattern Recognition (ICPR)},
+ year = 2000,
+ month = sep,
+ address = {Barcelona, Spain},
+ volume = 4,
+ pages = {816--819},
+ publisher = {IEEE Computer Society},
+ project = {Olena},
+ urllrde = {200009-Icpr},
+ abstract = {Algorithm libraries dedicated to image processing and
+ pattern recognition are not reusable; to run an algorithm
+ on particular data, one usually has either to rewrite the
+ algorithm or to manually ``copy, paste, and modify''. This
+ is due to the lack of genericity of the programming
+ paradigm used to implement the libraries. In this paper, we
+ present a recent paradigm that allows algorithms to be
+ written once and for all and to accept input of various
+ types. Moreover, this total reusability can be obtained
+ with a very comprehensive writing and without significant
+ cost at execution, compared to a dedicated algorithm. This
+ new paradigm is called ``generic programming'' and is fully
+ supported by the C++ language. We show how this paradigm
+ can be applied to image processing and pattern recognition
+ routines. The perspective of our work is the creation of a
+ generic library.}
+}
+
+@InProceedings{ geraud.00.rfia,
+ author = {{\relax Th}ierry G\'eraud and Isabelle Bloch and Henri
+ Ma{\^\i}tre},
+ title = {Reconnaissance de structures c\'er\'ebrales \`a l'aide
+ d'un atlas et par fusion d'informations structurelles floues},
+ booktitle = {Actes du 12\`eme Congr\`es Francophone AFRIF-AFIA de
+ Reconnaissance des Formes et Intelligence Artificielle
+ (RFIA)},
+ year = 2000,
+ address = {Paris, France},
+ month = feb,
+ volume = 1,
+ pages = {287--295},
+ note = {EPITA as current address.},
+ category = {national},
+ project = {Image},
+ urllrde = {200002-RFIA},
+ abstract = {Nous proposons une proc\'edure automatique de
+ reconnaissance progressive des structures internes du
+ cerveau guid\'ee par un atlas anatomique. L'originalit\'e
+ de notre proc\'edure est multiple. D'une part, elle prend
+ en compte des informations structurelles sous la forme de
+ contraintes spatiales flexibles, en utilisant les
+ formalismes de la th\'eorie des ensembles flous et de la
+ fusion d'informations. D'autre part, le calcul de la
+ correspondance entre volume IRM et atlas que nous proposons
+ permet d'inf\'erer un champ de d\'eformations discret,
+ respectant des contraintes sur la surface des objets.
+ Enfin, le caract\`ere s\'equentiel de la proc\'edure permet
+ de s'appuyer sur la connaissance des objets d\'ej\`a
+ segment\'es pour acc\'eder \`a des objets dont l'obtention
+ est a priori de plus en plus difficile.}
+}
+
+@InProceedings{ geraud.01.ai,
+ author = {{\relax Th}ierry G\'eraud and Yoann Fabre and Alexandre
+ Duret-Lutz},
+ title = {Applying generic programming to image processing},
+ booktitle = {Proceedings of the IASTED International Conference on
+ Applied Informatics (AI)---Symposium on Advances in
+ Computer Applications},
+ year = 2001,
+ publisher = {ACTA Press},
+ editor = {M.H.~Hamsa},
+ address = {Innsbruck, Austria},
+ pages = {577--581},
+ month = feb,
+ project = {Olena},
+ urllrde = {200102-Ai},
+ abstract = {This paper presents the evolution of algorithms
+ implementation in image processing libraries and discusses
+ the limits of these implementations in terms of
+ reusability. In particular, we show that in C++, an
+ algorithm can have a general implementation; said
+ differently, an implementation can be generic, i.e.,
+ independent of both the input aggregate type and the type
+ of the data contained in the input aggregate. A total
+ reusability of algorithms can therefore be obtained;
+ moreover, a generic implementation is more natural and does
+ not introduce a meaningful additional cost in execution
+ time as compared to an implementation dedicated to a
+ particular input type.}
+}
+
+@InProceedings{ geraud.01.icip,
+ author = {{\relax Th}ierry G\'eraud and Pierre-Yves Strub and
+ J\'er\^ome Darbon},
+ title = {Color image segmentation based on automatic morphological
+ clustering},
+ booktitle = {Proceedings of the IEEE International Conference on Image
+ Processing (ICIP)},
+ year = 2001,
+ volume = 3,
+ pages = {70--73},
+ address = {Thessaloniki, Greece},
+ month = oct,
+ project = {Image},
+ urllrde = {200110-Icip},
+ abstract = {We present an original method to segment color images
+ using a classification in the 3-D color space. In the case
+ of ordinary images, clusters that appear in 3-D histograms
+ usually do not fit a well-known statistical model. For that
+ reason, we propose a classifier that relies on mathematical
+ morphology, and more precisely on the watershed algorithm.
+ We show on various images that the expected color clusters
+ are correctly identified by our method. Last, to segment
+ color images into coherent regions, we perform a Markovian
+ labeling that takes advantage of the morphological
+ classification results.}
+}
+
+@InProceedings{ geraud.01.icisp,
+ author = {{\relax Th}ierry G\'eraud and Pierre-Yves Strub and
+ J\'er\^ome Darbon},
+ title = {Segmentation d'images en couleur par classification
+ morphologique non supervis\'ee},
+ booktitle = {Proceedings of the International Conference on Image and
+ Signal Processing (ICISP)},
+ year = 2001,
+ pages = {387--394},
+ address = {Agadir, Morocco},
+ month = may,
+ publisher = {Faculty of Sciences at Ibn Zohr University, Morocco},
+ note = {In French},
+ project = {Image},
+ urllrde = {200105-Icisp},
+ abstract = {In this paper, we present an original method to segment
+ color images using a classification of the image histogram
+ in the 3D color space. As color modes in natural images
+ usually do not fit a well-known statistical model, we
+ propose a classifier that rely on mathematical morphology
+ and, more particularly, on the watershed algorithm. We show
+ on various images that the expected color modes are
+ correctly identified and, in order to obtain coherent
+ region, we extend the method to make the segmentation
+ contextual.}
+}
+
+@InProceedings{ geraud.03.grec,
+ author = {{\relax Th}ierry G\'eraud and Geoffroy Fouquier and Quoc
+ Peyrot and Nicolas Lucas and Franck Signorile},
+ title = {Document type recognition using evidence theory},
+ booktitle = {Proceedings of the 5th IAPR International Workshop on
+ Graphics Recognition (GREC)},
+ year = 2003,
+ pages = {212--221},
+ editors = {Josep Llad\`os},
+ address = {Computer Vision Center, UAB, Barcelona, Spain},
+ month = jul,
+ project = {Image},
+ urllrde = {200307-Grec},
+ abstract = {This paper presents a method to recognize the type of a
+ document when a database of models (document types) is
+ given. For instance, when every documents are forms and
+ when we know every different types of forms, we want to be
+ able to assign to an input document its type of form. To
+ that aim, we define each model by a set of characteristics
+ whose nature can vary from one to another. For instance, a
+ characteristic can be having a flower-shaped logo on
+ top-left as well as having about 12pt fonts. This paper
+ does not intent to explain how to extract such knowledge
+ from documents but it describes how to use such information
+ to decide what the type of a given document is when
+ different document types are described by
+ characteristics.}
+}
+
+@InProceedings{ geraud.03.ibpria,
+ author = {{\relax Th}ierry G\'eraud},
+ title = {Segmentation of curvilinear objects using a
+ watershed-based curve adjacency graph},
+ booktitle = {Proceedings of the 1st Iberian Conference on Pattern
+ Recognition and Image Analysis (IbPRIA)},
+ pages = {279--286},
+ year = 2003,
+ editor = {Springer-Verlag},
+ volume = 2652,
+ series = {Lecture Notes in Computer Science Series},
+ address = {Mallorca, Spain},
+ month = jun,
+ publisher = {Springer-Verlag},
+ project = {Image},
+ urllrde = {200306-Ibpria},
+ abstract = {This paper presents a general framework to segment
+ curvilinear objects in 2D images. A pre-processing step
+ relies on mathematical morphology to obtain a connected
+ line which encloses curvilinear objects. Then, a graph is
+ constructed from this line and a Markovian Random Field is
+ defined to perform objects segmentation. Applications of
+ our framework are numerous: they go from simple surve
+ segmentation to complex road network extraction in
+ satellite images.}
+}
+
+@InProceedings{ geraud.03.icisp,
+ author = {{\relax Th}ierry G\'eraud},
+ title = {Segmentation d'objets curvilignes \`a l'aide des champs de
+ Markov sur un graphe d'adjacence de courbes issu de
+ l'algorithme de la ligne de partage des eaux},
+ booktitle = {Proceedings of the International Conference on Image and
+ Signal Processing (ICISP)},
+ year = 2003,
+ volume = 2,
+ pages = {404--411},
+ address = {Agadir, Morocco},
+ month = jun,
+ publisher = {Faculty of Sciences at Ibn Zohr University, Morocco},
+ note = {In French},
+ project = {Image},
+ urllrde = {200306-Icisp},
+ abstract = {This paper presents a general framework to segment
+ curvilinear objects in 2D images. A pre-processing step
+ relies on mathematical morphology to obtain a connected
+ line which encloses curvilinear objects. Then, a graph is
+ constructed from this line and a Markovian Random Field is
+ defined to perform objects segmentation. Applications of
+ our framework are numerous: they go from simple surve
+ segmentation to complex road network extraction in
+ satellite images.}
+}
+
+@InProceedings{ geraud.03.nsip,
+ author = {{\relax Th}ierry G\'eraud},
+ title = {Fast Road Network Extraction in Satellite Images using
+ Mathematical Morphology and {MRF}},
+ booktitle = {Proceedings of the EURASIP Workshop on Nonlinear Signal
+ and Image Processing (NSIP)},
+ year = 2003,
+ address = {Trieste, Italy},
+ month = jun,
+ project = {Image},
+ urllrde = {200306-Nsip},
+ abstract = {This paper presents a fast method to extract road network
+ in satellite images. A pre-processing stage relies on
+ mathematical morphology to obtain a connected line which
+ encloses road network. Then, a graph is constructed from
+ this line and a Markovian Random Field is defined to
+ perform road extraction.}
+}
+
+@InProceedings{ geraud.04.iccvg,
+ author = {{\relax Th}ierry G\'eraud and Giovanni Palma and Niels
+ {Van Vliet}},
+ title = {Fast color image segmentation based on levellings in
+ feature Space},
+ booktitle = {Computer Vision and Graphics---International Conference on
+ Computer Vision and Graphics (ICCVG), Warsaw, Poland,
+ September 2004},
+ year = 2004,
+ series = {Computational Imaging and Vision},
+ volume = 32,
+ editor = {Kluwer Academic Publishers},
+ pages = {800--807},
+ note = {On CD.},
+ project = {Image},
+ urllrde = {200408-ICCVG},
+ abstract = {This paper presents a morphological classifier with
+ application to color image segmentation. The basic idea of
+ a morphological classifier is to consider that a color
+ histogram is a 3D gray-level image and that morphological
+ operators can be applied to modify this image. The final
+ objective is to extract clusters in color space, that is,
+ identify regions in the 3D image. In this paper, we
+ particularly focus on a powerful class of morphology-based
+ filters called levellings to transform the 3D
+ histogram-image to identify clusters. We also show that our
+ method gives better results than the ones of
+ state-of-the-art methods.}
+}
+
+@Article{ geraud.04.jasp,
+ author = {{\relax Th}ierry G\'eraud and Jean-Baptiste Mouret},
+ title = {Fast road network extraction in satellite images using
+ mathematical morphology and {M}arkov random fields},
+ journal = {EURASIP Journal on Applied Signal Processing},
+ year = 2004,
+ number = 16,
+ volume = 2004,
+ pages = {2503--2514},
+ month = nov,
+ note = {Special issue on Nonlinear Signal and Image Processing -
+ Part II},
+ project = {Image},
+ doi = {http://doi.acm.org/10.1155/S1110865704409093},
+ urllrde = {200409-JASP},
+ abstract = {This paper presents a fast method for road network
+ extraction in satellite images. It can be seen as a
+ transposition of the segmentation scheme "watershed
+ transform + region adjacency graph + Markov random fields"
+ to the extraction of curvilinear objects. Many road
+ extractors can be found in the literature which are
+ composed of two stages. The first one acts like a filter
+ that can decide from a local analysis, at every image
+ point, if there is a road or not. The second stage aims at
+ obtaining the road network structure. In the method we
+ propose, we rely on a "potential" image, that is,
+ unstructured image data that can be derived from any road
+ extractor filter. In such a potential image, the value
+ assigned to a point is a measure of its likelihood to be
+ located in the middle of a road. A filtering step applied
+ on the potential image relies on the area closing operator
+ followed by the watershed transform to obtain a connected
+ line which encloses the road network. Then a graph
+ describing adjacency relationships between watershed lines
+ is built. Defining Markov random fields upon this graph,
+ associated with an energetic model of road networks, leads
+ to the expression of road network extraction as a global
+ energy minimization problem. This method can easily be
+ adapted to other image processing fields where the
+ recognition of curvilinear structures is involved.}
+}
+
+@InProceedings{ geraud.05.ismm,
+ author = {{\relax Th}ierry G\'eraud},
+ title = {Ruminations on {T}arjan's {U}nion-{F}ind algorithm and
+ connected operators},
+ booktitle = ismm05,
+ year = 2005,
+ address = {Paris, France},
+ month = apr,
+ pages = {105--116},
+ publisher = {Springer},
+ series = {Computational Imaging and Vision},
+ volume = 30,
+ project = {Image},
+ urllrde = {200504-ISMM},
+ abstract = {This papers presents a comprehensive and general form of
+ the Tarjan's union-find algorithm dedicated to connected
+ operators. An interesting feature of this form is to
+ introduce the notion of separated domains. The properties
+ of this form and its flexibility are discussed and
+ highlighted with examples. In particular, we give clues to
+ handle correctly the constraint of domain-disjointness
+ preservation and, as a consequence, we show how we can rely
+ on ``union-find'' to obtain algorithms for self-dual
+ filters approaches and levelings with a marker function.}
+}
+
+@InProceedings{ geraud.08.mpool,
+ author = {{\relax Th}ierry G\'eraud and Roland Levillain},
+ title = {Semantics-Driven Genericity: A Sequel to the Static {C++}
+ Object-Oriented Programming Paradigm ({SCOOP 2})},
+ booktitle = {Proceedings of the 6th International Workshop on
+ Multiparadigm Programming with Object-Oriented Languages
+ (MPOOL)},
+ year = 2008,
+ address = {Paphos, Cyprus},
+ month = jul,
+ project = {Olena},
+ urllrde = {200807-MPOOL},
+ abstract = {Classical (unbounded) genericity in \Cxx{}03 defines the
+ interactions between generic data types and algorithms in
+ terms of concepts. Concepts define the requirements over a
+ type (or a parameter) by expressing constraints on its
+ methods and dependent types (typedefs). The upcoming
+ \Cxx{}0x standard will promote concepts from abstract
+ entities (not directly enforced by the tools) to language
+ constructs, enabling compilers and tools to perform
+ additional checks on generic constructs as well as enabling
+ new features (e.g., concept-based overloading). Most modern
+ languages support this notion of signature on generic
+ types. However, generic types built on other types and
+ relying on concepts to both ensure type conformance and
+ drive code specialization, restrain the interface and the
+ implementation of the newly created type: specific methods
+ and associated types not mentioned in the concept will not
+ be part of the new type. The paradigm of concept-based
+ genericity lacks the required semantics to transform types
+ while retaining or adapting their intrinsic capabilities.
+ We present a new form of semantically-enriched genericity
+ allowing static generic type transformations through a
+ simple form of type introspection based on type metadata
+ called properties. This approach relies on a new Static
+ \Cxx Object-Oriented Programming (SCOOP) paradigm, and is
+ adapted to the creation of generic and efficient libraries,
+ especially in the field of scientific computing. Our
+ proposal uses a metaprogramming facility built into a \Cxx
+ library called Static, and doesn't require any language
+ extension nor additional processing (preprocessor,
+ transformation tool).}
+}
+
+@InCollection{ geraud.10.book,
+ author = {{\relax Th}ierry G\'eraud and Hugues Talbot and Marc Van
+ Droogenbroeck},
+ title = {Algorithms for Mathematical Morphology},
+ booktitle = {Mathematical Morphology---From Theory to Applications},
+ pages = {323--353},
+ publisher = {Wiley-ISTE},
+ year = 2010,
+ editor = {Laurent Najman and Hugues Talbot},
+ isbn = {978-1-84821-215-2},
+ month = jul,
+ url = {http://eu.wiley.com/WileyCDA/WileyTitle/productCd-1848212151.html}
+ ,
+ urllrde = {201007-BOOK}
+}
+
+@InCollection{ geraud.10.livre,
+ author = {{\relax Th}ierry G\'eraud and Hugues Talbot and Marc Van
+ Droogenbroeck},
+ title = {Morphologie et algorithmes},
+ booktitle = {Morphologie math\'ematique 2~: estimation, choix et mise
+ en {\oe}uvre},
+ pages = {151--180},
+ publisher = {Herm\`es Science Publications},
+ year = 2010,
+ series = {IC2 signal et image},
+ chapter = 6,
+ editor = {Laurent Najman and Hugues Talbot},
+ month = sep,
+ urllrde = {201009-LIVRE}
+}
+
+@InProceedings{ geraud.99.cimaf,
+ author = {{\relax Th}ierry G\'eraud and Isabelle Bloch and Henri
+ Ma\^tre},
+ title = {Atlas-guided recognition of cerebral structures in {MRI}
+ using fusion of fuzzy structural information},
+ booktitle = {Proceeding of CIMAF Symposium on Artificial Intelligence},
+ pages = {99--106},
+ year = 1999,
+ address = {La Havana, Cuba},
+ note = {EPITA as current address.},
+ project = {Image},
+ urllrde = {199900-CIMAF}
+}
+
+@InProceedings{ geraud.99.gretsi,
+ author = {{\relax Th}ierry G\'eraud and Yoann Fabre and Dimitri
+ Papadopoulos-Orfanos and Jean-Fran\c{c}ois Mangin},
+ title = {Vers une r\'eutilisabilit\'e totale des algorithmes de
+ traitement d'images},
+ booktitle = {Proceedings of the 17th Symposium on Signal and Image
+ Processing (GRETSI)},
+ category = {national},
+ pages = {331--334},
+ volume = 2,
+ year = 1999,
+ address = {Vannes, France},
+ month = sep,
+ note = {In French},
+ project = {Olena},
+ urllrde = {199909-Gretsi},
+ abstract = {Cet article pr\'esente l'\'evolution des techniques de
+ programmation d'algorithmes de traitement d'images et
+ discute des limites de la r\'eutilisabilit\'e de ces
+ algorithmes. En particulier, nous montrons qu'en C++ un
+ algorithme peut s'\'ecrire sous une forme g\'en\'erale,
+ ind\'ependante aussi bien du type des donn\'ees que du type
+ des structures de donn\'ees sur lesquelles il peut
+ s'appliquer. Une r\'eutilisabilit\'e totale des algorithmes
+ peut donc \^etre obtenue ; mieux, leur \'ecriture est plus
+ naturelle et elle n'introduit pas de surco\^ut significatif
+ en temps d'ex\'ecution.}
+}
+
+@Misc{ gournet.05.sud,
+ author = {Alexandre Borghi and Valentin David and Akim Demaille and
+ Olivier Gournet},
+ title = {Implementing attributes in {SDF}},
+ year = 2005,
+ address = {Utrecht {U}niversity, {N}etherland},
+ note = {Communication to Stratego Users Day 2005},
+ month = may,
+ project = {Transformers},
+ urllrde = {200505-SUD-ag},
+ abstract = {Attribute Grammars (AGs) provide a very convenient means
+ to bind semantics to syntax. They enjoy an extensive
+ bibliography and are used in several types of applications.
+ Yet, to our knowledge, their use to disambiguate is novel.
+ We present our implementation of an evaluator of attributes
+ for ambiguous AGs, tailored to ambiguous parse trees
+ disambiguation. This paper focuses on its implementation
+ that heavily relies on Stratego/XT, which is also used as
+ language to express the attribute rules. A companion paper
+ presents the disambiguation process in details
+ 200505-SUD-disamb.}
+}
+
+@InProceedings{ grosicki.04.icc,
+ author = {Emmanuel Grosicki and Karim Abed-Meraim and R\'eda Dehak},
+ title = {A novel method to fight the non line of sight error in
+ {AOA} measurements for mobile location},
+ booktitle = {Proceedings of the IEEE International Conference on
+ Communications (ICC)},
+ year = 2004,
+ volume = 5,
+ pages = {2794--2798},
+ address = {Paris, France},
+ month = jun,
+ project = {Image},
+ urllrde = {200406-ICC},
+ abstract = {In this contribution, a mobile location method is provided
+ using measurements from two different Base-Stations.
+ Although computationally from two different Base-Stations.
+ Although based on a simple trilateration and takes into
+ account error measurements caused by Non-Line-Of-Sight
+ (NLOS) and near-far effect. The new method attributes an
+ index of confidence for each measure, in order to allow the
+ mobile to select the two most reliable measures and not to
+ use all measures, equally.}
+}
+
+@InProceedings{ guirado.05.pdmc,
+ author = {Guillaume Guirado and {\relax Th}omas Herault and Richard
+ Lassaigne and Sylvain Peyronnet},
+ title = {Distribution, approximation and probabilistic model
+ checking},
+ booktitle = {Proceedings of the 4th international workshop on Parallel
+ and Distributed Model Checking (PDMC)},
+ year = 2005,
+ project = {APMC},
+ urllrde = {200507-Pdmc},
+ abstract = {APMC is a model checker dedicated to the quantitative
+ verification of fully probabilistic systems against LTL
+ formulas. Using a Monte-Carlo method in order to
+ efficiently approximate the verification of probabilistic
+ specifications, it could be used naturally in a distributed
+ framework. We present here the tool and his distribution
+ scheme, together with extensive performance evaluation,
+ showing the scalability of the method, even on clusters
+ containing 500+ heterogeneous workstations.}
+}
+
+@InProceedings{ hamez.07.pohll,
+ author = {Alexandre Hamez and Fabrice Kordon and Yann Thierry-Mieg},
+ title = {{libDMC}: a library to Operate Efficient Distributed Model
+ Checking},
+ booktitle = {Workshop on Performance Optimization for High-Level
+ Languages and Libraries --- associated to IPDPS'2007},
+ year = 2007,
+ project = {Verification},
+ urllrde = {200703-POHLL},
+ abstract = {Model checking is a formal verification technique that
+ allows to automatically prove that a system's behavior is
+ correct. However it is often prohibitively expensive in
+ time and memory complexity, due to the so-called state
+ space explosion problem. We present a generic
+ multi-threaded and distributed infrastructure library
+ designed to allow distribution of the model checking
+ procedure over a cluster of machines. This library is
+ generic, and is designed to allow encapsulation of any
+ model checker in order to make it distributed. Performance
+ evaluations are reported and clearly show the advantages of
+ multi-threading to occupy processors while waiting for the
+ network, with linear speedup over the number of
+ processors.}
+}
+
+@InProceedings{ hamez.08.atpn,
+ author = {Alexandre Hamez and Yann Thierry-Mieg and Fabrice Kordon},
+ title = {Hierarchical Set Decision Diagrams and Automatic
+ Saturation},
+ booktitle = {Petri Nets and Other Models of Concurrency --ICATPN 2008},
+ year = 2008,
+ project = {Verification},
+ urllrde = {200806-ATPN},
+ abstract = {Shared decision diagram representations of a state-space
+ have been shown to provide efficient solutions for
+ model-checking of large systems. However, decision diagram
+ manipulation is tricky, as the construction procedure is
+ liable to produce intractable intermediate structures
+ (a.k.a peak effect). The definition of the so-called
+ saturation method has empirically been shown to mostly
+ avoid this peak effect, and allows verification of much
+ larger systems. However, applying this algorithm currently
+ requires deep knowledge of the decision diagram
+ data-structures, of the model or formalism manipulated, and
+ a level of interaction that is not offered by the API of
+ public DD packages.
+
+ Hierarchical Set Decision Diagrams (SDD) are decision
+ diagrams in which arcs of the structure are labeled with
+ sets, themselves stored as SDD. This data structure offers
+ an elegant and very efficient way of encoding structured
+ specifications using decision diagram technology. It also
+ offers, through the concept of inductive homomorphisms,
+ unprecedented freedom to the user when defining the
+ transition relation. Finally, with very limited user input,
+ the SDD library is able to optimize evaluation of a
+ transition relation to produce a saturation effect at
+ runtime. We further show that using recursive folding, SDD
+ are able to offer solutions in logarithmic complexity with
+ respect to other DD. We conclude with some performances on
+ well known examples.}
+}
+
+@Article{ hamez.09.fi,
+ abstract = {Shared decision diagram representations of a state-space
+ provide efficient solutions for model-checking of large
+ systems. However, decision diagram manipulation is tricky,
+ as the construction procedure is liable to produce
+ intractable intermediate structures (a.k.a peak effect).
+ The definition of the so-called saturation method has
+ empirically been shown to mostly avoid this peak effect,
+ and allows verification of much larger systems. However,
+ applying this algorithm currently requires deep knowledge
+ of the decision diagram data-structures.
+
+ Hierarchical Set Decision Diagrams (SDD) are decision
+ diagrams in which arcs of the structure are labeled with
+ sets, themselves stored as SDD. This data structure offers
+ an elegant and very efficient way of encoding structured
+ specifications using decision diagram technology. It also
+ offers, through the concept of inductive homomorphisms,
+ flexibility to a user defining a transition relation. We
+ show in this paper how, with very limited user input, the
+ SDD library is able to optimize evaluation of a transition
+ relation to produce a saturation effect at runtime.
+
+ We build as an example an SDD model-checker for a
+ compositional formalism: Instantiable Petri Nets (IPN). IPN
+ define a \emph{type} as an abstract contract. Labeled P/T
+ nets are used as an elementary type. A composite type is
+ defined to hierarchically contain instances (of elementary
+ or composite type). To compose behaviors, IPN use classic
+ label synchronization semantics from process calculi.
+
+ With a particular recursive folding SDD are able to offer
+ solutions for symmetric systems in logarithmic complexity
+ with respect to other DD. Even in less regular cases, the
+ use of hierarchy in the specification is shown to be well
+ supported by SDD. Experimentations and performances are
+ reported on some well known examples. },
+ author = {Alexandre Hamez and Yann Thierry-Mieg and Fabrice Kordon},
+ date-added = {2009-05-06 16:39:07 +0200},
+ date-modified = {2009-05-06 16:48:10 +0200},
+ journal = {Fundamenta Informaticae},
+ title = {Building Efficient Model checkers using Hierarchical Set
+ Decision Diagrams and automatic Saturation},
+ year = 2009,
+ urllrde = {2009-FI}
+}
+
+@InProceedings{ hemon.08.sagt,
+ author = {S\'ebastien H\'emon and Michel de Rougemont and Miklos
+ Santha},
+ title = {Approximate {N}ash Equilibria for Multi-Player Games},
+ titre = {\'Equilibres de Nash approch\'es dans les jeux
+ multi-joueurs},
+ booktitle = {1st International Symposium on Algorithmic Games Theory},
+ year = 2008,
+ address = {Paderborn, Germany},
+ month = apr,
+ urllrde = {2008-01-18-SAGT},
+ resume = {Les \'equilibres de Nash sont des positions-cl\'es de tout
+ jeu admettant une repr\'esentation finie : en effet, quel
+ que soit le nombre de joueurs et de strat\'egies, une telle
+ position existe toujours. Lorsqu'elle est atteinte, elle
+ dissuade tout joueur de vouloir se d\'etourner de sa
+ strat\'egie actuelle, d'o\`u la notion d'\'equilibre. De
+ nombreux probl\`emes y font appel mais calculer de
+ fa\c{c}on effective l'\'equilibre demeure un probl\`eme
+ difficile. En effet, le meilleur algorithme connu pour,
+ dans le cas g\'en\'eral, calculer un \'equilibre est
+ exponentiel en le nombre de strat\'egies.
+
+ Nous pr\'esenterons ici la notion d'\'equilibres
+ approch\'es, et donnerons des r\'esultats concernant leur
+ calcul. Nous montrerons qu'il ne saurait exister
+ d'algorithmes pouvant calculer un \'equilibre, m\^eme
+ approch\'e, sans utiliser au moins, pour un joueur, un
+ nombre logarithmique de strat\'egies. Nous montrerons
+ comment calculer un \'equilibre approch\'e en temps
+ sub-exponentiel $n^{\mathcal{O}(\frac{\ln
+ n}{\varepsilon^2})}$, ce qui demeure actuellement, pour le
+ cas g\'en\'eral, la meilleure complexit\'e en pire cas.
+
+ Enfin, nous pr\'esenterons une approche inductive de
+ transfert d'approximation d'une position d'un jeu \`a deux
+ joueurs en une approximation pour un jeu \`a $r$ joueurs,
+ ce qui conf\`ere des r\'esultats novateurs dans le domaine.}
+}
+
+@InProceedings{ herault.06.qest,
+ author = {Thomas H\'erault and Richard Lassaigne and Sylvain
+ Peyronnet},
+ title = {{APMC 3.0}: Approximate verification of Discrete and
+ Continuous Time Markov Chains},
+ booktitle = {Proceedings of Qest 2006},
+ year = 2006,
+ pages = {129--130},
+ project = {APMC},
+ urllrde = {200606-Qest},
+ abstract = {In this paper, we give a brief overview of APMC
+ (Approximate Probabilistic Model Checker). APMC is a model
+ checker that implements approximate probabilistic
+ verification of probabilistic systems. It is based on
+ Monte-Carlo method and the theory of randomized
+ approximation schemes and allows to verify extremely large
+ models without explicitly representing the global
+ transition system. To avoid the state-space explosion
+ phenomenon, APMC gives an accurate approximation of the
+ satisfaction probability of the property instead of the
+ exact value, but using only a very small amount of memory.
+ The version of APMC we present in this paper can now handle
+ efficiently both discrete and continuous time probabilistic
+ systems.}
+}
+
+@InProceedings{ kenny.08.odyssey,
+ author = {Patrick Kenny and Najim Dehak and R\'eda Dehak and Vishwa
+ Gupta and Pierre Dumouchel},
+ title = {The Role of Speaker Factors in the {NIST} Extended Data
+ Task},
+ booktitle = {Proceedings of the Speaker and Language Recognition
+ Workshop (IEEE-Odyssey 2008)},
+ year = 2008,
+ address = {Stellenbosch, South Africa},
+ month = jan,
+ urllrde = {200709-ODYSSEY-C},
+ abstract = {We tested factor analysis models having various numbers of
+ speaker factors on the core condition and the extended data
+ condition of the 2006 NIST speaker recognition evaluation.
+ In order to ensure strict disjointness between training and
+ test sets, the factor analysis models were trained without
+ using any of the data made available for the 2005
+ evaluation. The factor analysis training set consisted
+ primarily of Switchboard data and so was to some degree
+ mismatched with the 2006 test data (drawn from the Mixer
+ collection). Consequently, our initial results were not as
+ good as those submitted for the 2006 evaluation. However we
+ found that we could compensate for this by a simple
+ modification to our score normalization strategy, namely by
+ using 1000 z-norm utterances in zt-norm. Our purpose in
+ varying the number of speaker factors was to evaluate the
+ eigenvoiceMAP and classicalMAP components of the
+ inter-speaker variability model in factor analysis. We
+ found that on the core condition (i.e. 2--3 minutes of
+ enrollment data), only the eigenvoice MAP component plays a
+ useful role. On the other hand, on the extended data
+ condition (i.e. 15--20 minutes of enrollment data) both the
+ classical MAP component and the eigenvoice component proved
+ to be useful provided that the number of speaker factors
+ was limited. Our best result on the extended data condition
+ (all trials) was an equal error rate of 2.2\% and a
+ detection cost of 0.011. }
+}
+
+@Article{ laplante.07.tocl,
+ author = {Sophie Laplante and Richard Lassaigne and Fr\'ed\'eric
+ Magniez and Sylvain Peyronnet and Michel de Rougemont},
+ title = {Probabilistic abstraction for model checking: an approach
+ based on property testing},
+ journal = {ACM Transactions on Computational Logic},
+ year = 2007,
+ project = {APMC},
+ month = aug,
+ volume = 8,
+ number = 4,
+ urllrde = {2006XX-TOCL},
+ abstract = {The goal of model checking is to verify the correctness of
+ a given program, on all its inputs. The main obstacle, in
+ many cases, is the intractably large size of the program's
+ transition system. Property testing is a randomized method
+ to verify whether some fixed property holds on individual
+ inputs, by looking at a small random part of that input. We
+ join the strengths of both approaches by introducing a new
+ notion of probabilistic abstraction, and by extending the
+ framework of model checking to include the use of these
+ abstractions. Our abstractions map transition systems
+ associated with large graphs to small transition systems
+ associated with small random subgraphs. This reduces the
+ original transition system to a family of small, even
+ constant-size, transition systems. We prove that with high
+ probability, ``sufficiently'' incorrect programs will be
+ rejected ($\eps$-robustness). We also prove that under a
+ certain condition (exactness), correct programs will never
+ be rejected (soundness). Our work applies to programs for
+ graph properties such as bipartiteness, $k$-colorability,
+ or any $\exists\forall$ first order graph properties. Our
+ main contribution is to show how to apply the ideas of
+ property testing to syntactic programs for such properties.
+ We give a concrete example of an abstraction for a program
+ for bipartiteness. Finally, we show that the relaxation of
+ the test alone does not yield transition systems small
+ enough to use the standard model checking method. More
+ specifically, we prove, using methods from communication
+ complexity, that the OBDD size remains exponential for
+ approximate bipartiteness.}
+}
+
+@InProceedings{ lassaigne.05.wollic,
+ author = {Richard Lassaigne and Sylvain Peyronnet},
+ title = {Probabilistic verification and approximation},
+ booktitle = {Proceedings of 12th Workshop on Logic, Language,
+ Information and Computation (Wollic)},
+ year = 2005,
+ series = {Electronic Notes in Theoretical Computer Science},
+ volume = 143,
+ pages = {101--114},
+ project = {APMC},
+ urllrde = {200507-Wollic},
+ abstract = {Model checking is an algorithmic method allowing to
+ automatically verify if a system which is represented as a
+ Kripke model satisfies a given specification.
+ Specifications are usually expressed by formulas of
+ temporal logic. The first objective of this paper is to
+ give an overview of methods able to verify probabilistic
+ systems. Models of such systems are labelled discrete time
+ Markov chains and specifications are expressed in
+ extensions of temporal logic by probabilistic operators.
+ The second objective is to focus on complexity of these
+ methods and to answer the question: can probabilistic
+ verification be efficiently approximated? In general, the
+ answer is negative. However, in many applications, the
+ specification formulas can be expressed in some positive
+ fragment of linear time temporal logic. In this paper, we
+ show how some simple randomized approximation algorithms
+ can improve the efficiency of the verification of such
+ probabilistic specifications.}
+}
+
+@InProceedings{ lazzara.11.icdar,
+ author = {Guillaume Lazzara and Roland Levillain and {\relax
+ Th}ierry G\'eraud and Yann Jacquelet and Julien Marquegnies
+ and Arthur Cr\'epin-Leblond},
+ title = {The {SCRIBO} Module of the {Olena} Platform: a Free
+ Software Framework for Document Image Analysis},
+ booktitle = {Proceedings of the 11th International Conference on
+ Document Analysis and Recognition (ICDAR)},
+ year = 2011,
+ address = {Beijing, China},
+ month = sep,
+ organization = {International Association for Pattern Recognition (IAPR)},
+ project = {Olena},
+ urllrde = {201109-ICDAR},
+ abstract = {Electronic documents are being more and more usable thanks
+ to better and more affordable network, storage and
+ computational facilities. But in order to benefit from
+ computer-aided document management, paper documents must be
+ digitized and analyzed. This task may be challenging at
+ several levels. Data may be of multiple types thus
+ requiring different adapted processing chains. The tools to
+ be developed should also take into account the needs and
+ knowledge of users, ranging from a simple graphical
+ application to a complete programming framework. Finally,
+ the data sets to process may be large. In this paper, we
+ expose a set of features that a Document Image Analysis
+ framework should provide to handle the previous issues. In
+ particular, a good strategy to address both flexibility and
+ efficiency issues is the Generic Programming (GP) paradigm.
+ These ideas are implemented as an open source module,
+ SCRIBO, built on top of Olena, a generic and efficient
+ image processing platform. Our solution features services
+ such as preprocessing filters, text detection, page
+ segmentation and document reconstruction (as XML, PDF or
+ HTML documents). This framework, composed of reusable
+ software components, can be used to create full-fledged
+ graphical applications, small utilities, or processing
+ chains to be integrated into third-party projects.},
+ keywords = {Document Image Analysis, Software Design, Reusability,
+ Free Software}
+}
+
+@InProceedings{ le-quoc.07.ntms,
+ author = {Cuong Le Quoc and Patrick Bellot and Akim Demaille},
+ title = {On the security of quantum networks: a proposal framework
+ and its capacity},
+ booktitle = {Proceedings of the 2007 International Conference on New
+ Technologies, Mobility and Security (NTMS'07)},
+ year = 2007,
+ address = {Paris, France},
+ month = may,
+ urllrde = {200705-NTMS},
+ abstract = {In large Quantum Key Distribution (QKD)-based networks,
+ intermediate nodes are necessary because of the short
+ length of QKD links. They have tendency to be used more
+ than classical networks. A realistic assumption is that
+ there are eavesdropping operations in these nodes without
+ knowledge of legitimate network participants. We develop a
+ QKD-based network framework. We present a percolation-based
+ approach to discuss about conditions of extremely high
+ secret key transmission. We propose also an adaptive
+ stochastic routing algorithm that helps on protecting keys
+ from reasonable eavesdroppers in a dense QKD network. We
+ show that under some assumptions, one could prevent
+ eavesdroppers from sniffing the secrets with an arbitrarily
+ large probability.}
+}
+
+@InProceedings{ le-quoc.07.rivf,
+ author = {Cuong Le Quoc and Patrick Bellot and Akim Demaille},
+ title = {Stochastic routing in large grid-shaped quantum networks},
+ booktitle = {Proceedings of the Fifth International Conference on
+ Computer Sciences, Research, Innovation and Vision for the
+ Future (RIVF'07)},
+ year = 2007,
+ address = {Hanoi, Vietnam},
+ month = mar,
+ isbn = {1-4244-0695-1},
+ urllrde = {200703-RIVF},
+ abstract = {This paper investigates the problem of secret key
+ transmissions for an arbitrary Alice-Bob pair in Quantum
+ Key Distribution-based networks. We develop a realistic
+ QKD-based network framework and we show that the key
+ transmission problem on such a framework can be considered
+ as a variant of the classical percolation problem. We also
+ present an adaptive stochastic routing algorithm protect
+ from inevitable eavesdroppers. Simulations were carried out
+ not only to validate our approach, but also to compute
+ critical parameters ensuring security. These results show
+ that large quantum networks with eavesdroppers do provide
+ security.},
+ keywords = {Quantum Key Distribution, QKD network, percolation theory,
+ stochastic routing}
+}
+
+@InProceedings{ le-quoc.08.ispec,
+ author = {Cuong Le Quoc and Patrick Bellot and Akim Demaille},
+ title = {Towards the World-Wide Quantum Network},
+ booktitle = {Proceedings of the 4th Information Security Practice and
+ Experience Conference (ISPEC'08)},
+ year = 2008,
+ address = {Sydney, Australia},
+ month = april,
+ urllrde = {200804-ISPEC},
+ abstract = {Quantum Key Distribution (QKD) networks are of much
+ interest due to their capacity of providing extremely high
+ security keys to network participants. Most QKD network
+ studies so far focus on trusted models where all the
+ network nodes are assumed to be perfectly secured. This
+ restricts QKD networks to be small. In this paper, we first
+ develop a novel model dedicated to large-scale QKD
+ networks, some of whose nodes could be eavesdropped
+ secretly. Then, we investigate the key transmission problem
+ in the new model by an approach based on percolation theory
+ and stochastic routing. Analyses show that under computable
+ conditions large-scale QKD networks could protect secret
+ keys with an extremely high probability. Simulations
+ validate our results.},
+ keywords = {Quantum Key Distribution, QKD network, percolation theory,
+ stochastic routing}
+}
+
+@TechReport{ lefebvre.04.tr,
+ author = {Sylvain Lefebvre and J\'er\^ome Darbon and Fabrice Neyret},
+ title = {Unified texture management for arbitrary meshes},
+ institution = {INRIA-Rhone-Alpes},
+ year = 2004,
+ number = {RR-5210},
+ address = {France},
+ month = may,
+ project = {Image},
+ urllrde = {200405-RRinria},
+ abstract = {Video games and simulators commonly use very detailed
+ textures, whose cumulative size is often larger than the
+ GPU memory. Textures may be loaded progressively, but
+ dynamically loading and transferring this large amount of
+ data in GPU memory results in loading delays and poor
+ performance. Therefore, managing texture memory has become
+ an important issue. While this problem has been (partly)
+ addressed early for the specific case of terrain rendering,
+ there is no generic texture management system for arbitrary
+ meshes. We propose such a system, implemented on today's
+ GPUs, which unifies classical solutions aimed at reducing
+ memory transfer: progressive loading, texture compression,
+ and caching strategies. For this, we introduce a new
+ algorithm -- running on GPU -- to solve the major
+ difficulty of detecting which parts of the texture are
+ required for rendering. Our system is based on three
+ components manipulating a tile pool which stores texture
+ data in GPU memory. First, the Texture Load Map determines
+ at every frame the appropriate list of texture tiles (i.e.
+ location and MIP-map level) to render from the current
+ viewpoint. Second, the Texture Cache manages the tile pool.
+ Finally, the Texture Producer loads and decodes required
+ texture tiles asynchronously in the tile pool. Decoding of
+ compressed texture data is implemented on GPU to minimize
+ texture transfer. The Texture Producer can also generate
+ procedural textures. Our system is transparent to the user,
+ and the only parameter that must be supplied at runtime is
+ the current viewpoint. No modifications of the mesh are
+ required. We demonstrate our system on large scenes
+ displayed in real time. We show that it achieves
+ interactive frame rates even in low-memory low-bandwidth
+ situations.}
+}
+
+@InProceedings{ lesage.06.isvc,
+ author = {David Lesage and J\'er\^ome Darbon and Ceyhun Burak Akg\"ul},
+ title = {An Efficient Algorithm for Connected Attribute Thinnings
+ and Thickenings},
+ booktitle = {Proceedings of the second International Conference on
+ Visual Computing},
+ year = 2006,
+ address = {Lake Tahoe, Nevada, USA},
+ month = nov,
+ project = {Image},
+ pages = {393--404},
+ volume = 4292,
+ series = {Lecture Notes in Computer Science Series},
+ publisher = {Springer-Verlag},
+ urllrde = {200611-ISVC},
+ abstract = {Connected attribute filters are anti-extensive
+ morphological operators widely used for their ability of
+ simplifying the image without moving its contours. In this
+ paper, we present a fast, versatile and easy-to-implement
+ algorithm for grayscale connected attribute thinnings and
+ thickennings, a subclass of connected filters for the wide
+ range of non-increasing attributes. We show that our
+ algorithm consumes less memory and is computationally more
+ efficient than other available methods on natural images.}
+}
+
+@Misc{ levillain.05.olenaposter,
+ author = {Roland Levillain},
+ title = {{O}lena {P}roject poster},
+ month = oct,
+ year = 2005,
+ urllrde = {200510-OlenaPoster}
+}
+
+@Misc{ levillain.05.tigerposter,
+ author = {Roland Levillain},
+ title = {{T}iger {P}roject poster},
+ month = oct,
+ year = 2005,
+ urllrde = {200510-TigerPoster}
+}
+
+@InProceedings{ levillain.09.ismm,
+ author = {Roland Levillain and {\relax Th}ierry G\'eraud and Laurent
+ Najman},
+ title = {{Milena}: Write Generic Morphological Algorithms Once, Run
+ on Many Kinds of Images},
+ booktitle = {Mathematical Morphology and Its Application to Signal and
+ Image Processing -- Proceedings of the Ninth International
+ Symposium on Mathematical Morphology (ISMM)},
+ pages = {295--306},
+ year = 2009,
+ editor = {Michael H. F. Wilkinson and Jos B. T. M. Roerdink},
+ series = {Lecture Notes in Computer Science},
+ address = {Groningen, The Netherlands},
+ month = aug,
+ publisher = {Springer Berlin / Heidelberg},
+ volume = 5720,
+ project = {Olena},
+ urllrde = {200908-ISMM},
+ abstract = {We present a programming framework for discrete
+ mathematical morphology centered on the concept of
+ genericity. We show that formal definitions of
+ morphological algorithms can be translated into actual
+ code, usable on virtually any kind of compatible images,
+ provided a general definition of the concept of image is
+ given. This work is implemented in Milena, a generic,
+ efficient, and user-friendly image processing library.},
+ keywords = {mathematical morphology, image processing operator,
+ genericity, programming}
+}
+
+@InProceedings{ levillain.10.icip,
+ author = {Roland Levillain and {\relax Th}ierry G\'eraud and Laurent
+ Najman},
+ title = {Why and How to Design a Generic and Efficient Image
+ Processing Framework: The Case of the {Milena} Library},
+ booktitle = {Proceedings of the IEEE International Conference on Image
+ Processing (ICIP)},
+ pages = {1941--1944},
+ year = 2010,
+ address = {Hong Kong},
+ month = sep,
+ project = {Olena},
+ urllrde = {201009-ICIP},
+ abstract = {Most image processing frameworks are not generic enough to
+ provide true reusability of data structures and algorithms.
+ In fact, genericity allows users to write and experiment
+ virtually any method on any compatible input(s). In this
+ paper, we advocate the use of generic programming in the
+ design of image processing software, while preserving
+ performances close to dedicated code. The implementation of
+ our proposal, Milena, a generic and efficient library,
+ illustrates the benefits of our approach.},
+ keywords = {Genericity, Image Processing, Software Design,
+ Reusability, Efficiency}
+}
+
+@InProceedings{ levillain.10.wadgmm,
+ author = {Roland Levillain and {\relax Th}ierry G\'eraud and Laurent
+ Najman},
+ title = {Writing Reusable Digital Geometry Algorithms in a Generic
+ Image Processing Framework},
+ booktitle = {Proceedings of the Workshop on Applications of Digital
+ Geometry and Mathematical Morphology (WADGMM)},
+ pages = {96--100},
+ year = 2010,
+ address = {Istanbul, Turkey},
+ month = aug,
+ url = {http://mdigest.jrc.ec.europa.eu/wadgmm2010/},
+ project = {Olena},
+ urllrde = {201008-WADGMM},
+ abstract = {Digital Geometry software should reflect the generality of
+ the underlying mathematics: mapping the latter to the
+ former requires genericity. By designing generic solutions,
+ one can effectively reuse digital geometry data structures
+ and algorithms. We propose an image processing framework
+ centered on the Generic Programming paradigm in which an
+ algorithm on the paper can be turn into a single code,
+ written once and usable with various input types. This
+ approach enables users to design and implement new methods
+ at a lower cost, try cross-domain experiments and help
+ generalize results.},
+ keywords = {Generic Programming, Interface, Skeleton, Complex}
+}
+
+@InProceedings{ levillain.11.gretsi,
+ author = {Roland Levillain and {\relax Th}ierry G\'eraud and Laurent
+ Najman},
+ title = {Une approche g\'en\'erique du logiciel pour le traitement
+ d'images pr\'eservant les performances},
+ booktitle = {Proceedings of the 23rd Symposium on Signal and Image
+ Processing (GRETSI)},
+ category = {national},
+ year = 2011,
+ address = {Bordeaux, France},
+ month = sep,
+ note = {In French.},
+ project = {Olena},
+ urllrde = {201109-GRETSI},
+ abstract = {De plus en plus d'outils logiciels modernes pour le
+ traitement d'images sont con\,c{}us en prenant en compte le
+ probl\`eme de la g\'en\'ericit\'e du code, c'est-\`a-dire
+ la possibilit\'e d'\'ecrire des algorithmes
+ r\'eutilisables, compatibles avec de nombreux types
+ d'entr\'ees. Cependant, ce choix de conception se fait
+ souvent au d\'etriment des performances du code
+ ex\'ecut\'e. Du fait de la grande vari\'et\'e des types
+ d'images existants et de la n\'ecessit\'e d'avoir des
+ impl\'ementations rapides, g\'en\'ericit\'e et performance
+ apparaissent comme des qualit\'es essentielles du logiciel
+ en traitement d'images. Cet article pr\'esente une approche
+ pr\'eservant les performances dans un framework logiciel
+ g\'en\'erique tirant parti des caract\'eristiques des types
+ de donn\'ees utilis\'es. Gr\^ace \`a celles-ci, il est
+ possible d'\'ecrire des variantes d'algorithmes
+ g\'en\'eriques offrant un compromis entre g\'en\'ericit\'e
+ et performance. Ces alternatives sont capables de
+ pr\'eserver une partie des aspects g\'en\'eriques d'origine
+ tout en apportant des gains substantiels \`a l'ex\'ecution.
+ D'apr\`es nos essais, ces optimisations g\'en\'eriques
+ fournissent des performances supportant la comparaison avec
+ du code d\'edi\'e, allant parfois m\^eme jusqu'\`a surpasser des routines optimis\'ees manuellement.}
+}
+
+@InProceedings{ linard.10.acsd,
+ author = {Alban Linard and Emmanuel Paviot-Adet and Fabrice Kordon
+ and Didier Buchs and Samuel Charron},
+ title = {{polyDD}: Towards a Framework Generalizing Decision
+ Diagrams},
+ booktitle = {Proceedings of the 10th International Conference on
+ Application of Concurrency to System Design (ACSD)},
+ pages = {124--133},
+ year = 2010,
+ address = {Braga, Portugal},
+ month = jun,
+ project = {Verification},
+ urllrde = {201006-ACSD},
+ publisher = {IEEE Computer Society},
+ abstract = {Decision Diagrams are now widely used in model checking as
+ extremely compact representations of state spaces. Many
+ Decision Diagram categories have been developed over the
+ past twenty years based on the same principles. Each one
+ targets a specific domain with its own characteristics.
+ Moreover, each one provides its own definition. It prevents
+ sharing concepts and techniques between these structures.
+ This paper aims to propose a basis for a common Framework
+ for Decision Diagrams. It should help users of this
+ technology to define new Decision Diagram categories thanks
+ to a simple specification mechanism called Controller. This
+ enables the building of efficient Decision Diagrams
+ dedicated to a given problem.}
+}
+
+@InProceedings{ lombardy.03.ciaa,
+ author = {Sylvain Lombardy and Rapha\"el Poss and Yann
+ R\'egis-Gianas and Jacques Sakarovitch},
+ title = {Introducing {V}aucanson},
+ booktitle = {Proceedings of Implementation and Application of Automata,
+ 8th International Conference (CIAA)},
+ pages = {96--107},
+ year = 2003,
+ editor = {Springer-Verlag},
+ volume = 2759,
+ series = {Lecture Notes in Computer Science Series},
+ address = {Santa Barbara, CA, USA},
+ month = jul,
+ project = {Vaucanson},
+ urllrde = {200307-Ciaa},
+ abstract = {This paper reports on a new software platform dedicated to
+ the computation with automata and transducers, called
+ Vaucanson, the main feature of which is the capacity of
+ dealing with automata whose labels may belong to various
+ algebraic structures. The paper successively shows how
+ Vaucanson allows to program algorithms on automata in a way
+ which is very close to the mathematical expression of the
+ algorithm, describes some features of the Vaucanson
+ platform, including the fact that the very rich data
+ structure used to implement automata does not weight too
+ much on the performance and finally explains the main
+ issues of the programming design that allow to achieve both
+ genericity and efficiency.}
+}
+
+@Article{ lombardy.04.tcs,
+ author = {Sylvain Lombardy and Yann R\'egis-{G}ianas and Jacques
+ Sakarovitch},
+ title = {Introducing {V}aucanson},
+ journal = {Theoretical Computer Science},
+ volume = 328,
+ year = 2004,
+ pages = {77--96},
+ month = nov,
+ project = {Vaucanson},
+ urllrde = {200411-TCS},
+ abstract = {This paper reports on a new software platform called
+ VAUCANSON and dedicated to the computation with automata
+ and transducers. Its main feature is the capacity of
+ dealing with automata whose labels may belong to various
+ algebraic structures. The paper successively describes the
+ main features of the VAUCANSON platform, including the fact
+ that the very rich data structure used to implement
+ automata does not weigh too much on the performance, shows
+ how VAUCANSON allows to program algorithms on automata in a
+ way which is very close to the mathematical expression of
+ the algorithm and finally explains the main choices of the
+ programming design that enable to achieve both genericity
+ and efficiency.}
+}
+
+@InProceedings{ maes.03.dpcool,
+ author = {Francis Maes},
+ title = {Program templates: expression templates applied to program
+ evaluation},
+ booktitle = {Proceedings of the Workshop on Declarative Programming in
+ the Context of Object-Oriented Languages (DP-COOL; in
+ conjunction with PLI)},
+ year = 2003,
+ address = {Uppsala, Sweden},
+ number = {FZJ-ZAM-IB-2003-10},
+ pages = {67--86},
+ editor = {J\"org Striegnitz and Kei Davis},
+ month = aug,
+ series = {John von Neumann Institute for Computing (NIC)},
+ project = {Software},
+ urllrde = {20020619-Seminar-Maes-Report},
+ abstract = {The C++ language provides a two-layer execution model:
+ static execution of meta-programs and dynamic execution of
+ resulting programs. The Expression Templates technique
+ takes advantage of this dual execution model through the
+ construction of C++ types expressing simple arithmetic
+ formulas. Our intent is to extend this technique to a whole
+ programming language. The Tiger language is a small,
+ imperative language with types, variables, arrays, records,
+ ow control structures and nested functions. The rst step is
+ to show how to express a Tiger program as a C++ type. The
+ second step concerns operational analysis which is done
+ through the use of meta-programs. Finally an implementation
+ of our Tiger evaluator is proposed. Our technique goes much
+ deeper than the Expression Templates one. It shows how the
+ generative power of C++ meta-programming can be used in
+ order to compile abstract syntax trees of a fully featured
+ programming language.}
+}
+
+@InProceedings{ maes.04.mpool,
+ author = {Francis Maes},
+ title = {Metagene, a {C++} meta-program generation tool},
+ booktitle = {Proceedings of the Workshop on Multiple Paradigm with OO
+ Languages (MPOOL; in conjunction with ECOOP)},
+ year = 2004,
+ address = {Oslo, Norway},
+ month = jun,
+ project = {Software},
+ urllrde = {200406-MPOOL},
+ abstract = {The C++ language offers a two layer evaluation model.
+ Thus, it is possible to evaluate a program in two steps:
+ the so-called static and dynamic evaluations. Static
+ evaluation is used for reducing the amount of work done at
+ execution-time. Programs executed statically (called
+ metaprograms) are written in C++ through an intensive use
+ of template classes. Due to the complexity of these
+ structures, writing, debugging and maintaining C++
+ meta-programs is a difficult task. Metagene is a program
+ transformation tool which simplifies the development of
+ such programs. Due to the similarities between C++
+ meta-programming and functional programming, the input
+ language of Metagene is an ML language. Given a functional
+ input program, Metagene outputs the corresponding C++
+ meta-program expressed using template classes.}
+}
+
+@InProceedings{ minetto.10.icip,
+ author = {Rodrigo Minetto and Nicolas Thome and Matthieu Cord and
+ Jonathan Fabrizio and Beatriz Marcotegui},
+ title = {SnooperText: A Multiresolution System for Text Detection
+ in Complex Visual Scenes},
+ booktitle = {Proceedings of the IEEE International Conference on Image
+ Processing (ICIP)},
+ pages = {3861--3864},
+ year = 2010,
+ address = {Hong Kong},
+ month = sep,
+ abstract = {Text detection in natural images remains a very
+ challenging task. For instance, in an urban context, the
+ detection is very difficult due to large variations in
+ terms of shape, size, color, orientation, and the image may
+ be blurred or have irregular illumination, etc. In this
+ paper, we describe a robust and accurate multiresolution
+ approach to detect and classify text regions in such
+ scenarios. Based on generation/validation paradigm, we
+ first segment images to detect character regions with a
+ multiresolution algorithm able to manage large character
+ size variations. The segmented regions are then filtered
+ out using shapebased classification, and neighboring
+ characters are merged to generate text hypotheses. A
+ validation step computes a region signature based on
+ texture analysis to reject false positives. We evaluate our
+ algorithm in two challenging databases, achieving very good
+ results},
+ keywords = {Text detection, multiresolution, image segmentation,
+ machine learning}
+}
+
+@InProceedings{ perrot.06.nist,
+ author = {Patrick Perrot and R\'eda Dehak and G\'erard Chollet},
+ title = {{ENST-IRCGN} System Description},
+ booktitle = {NIST SRE'06 Workshop: speaker recognition evaluation
+ campaign},
+ year = 2006,
+ address = {San Juan, Puerto Rico},
+ month = jun,
+ urllrde = {200606-NIST-B}
+}
+
+@Misc{ pouillard.05.sud,
+ author = {Akim Demaille and {\relax Th}omas Largillier and Nicolas
+ Pouillard},
+ title = {{ESDF}: A proposal for a more flexible {SDF} handling},
+ note = {Communication to Stratego Users Day 2005},
+ year = 2005,
+ address = {Utrecht {U}niversity, {N}etherland},
+ month = may,
+ project = {Transformers},
+ urllrde = {200505-SUD-esdf},
+ abstract = {By the means on its annotations, Syntax Definition
+ Formalism (SDF) seems to be extensible: the user is tempted
+ to tailor its grammar syntax by adding new annotation
+ kinds. Unfortunately the standard SDF crunching tools from
+ Stratego/XT do not support the extension of SDF, and the
+ user has to develop the whole set of tools for her home
+ grown extension(s). We present the SDF tool set that
+ provides ``weak'' genericity with respect to the grammar
+ grammar: support for arbitrary SDF annotations. We would
+ like to contribute it to Stratego/XT since its components
+ subsume their stock peers. Finally, we present a set of
+ four extensions we find useful.}
+}
+
+@InProceedings{ regisgianas.03.poosc,
+ author = {Yann R\'egis-Gianas and Rapha\"el Poss},
+ title = {On orthogonal specialization in {C++}: dealing with
+ efficiency and algebraic abstraction in {V}aucanson},
+ booktitle = {Proceedings of the Parallel/High-performance
+ Object-Oriented Scientific Computing (POOSC; in conjunction
+ with ECOOP)},
+ year = 2003,
+ number = {FZJ-ZAM-IB-2003-09},
+ pages = {71--82},
+ editor = {J\"org Striegnitz and Kei Davis},
+ series = {John von Neumann Institute for Computing (NIC)},
+ address = {Darmstadt, Germany},
+ month = jul,
+ project = {Vaucanson},
+ urllrde = {200307-Poosc},
+ abstract = {Vaucanson is a C++ generic library for weighted finite
+ state machine manipulation. For the sake of generality, FSM
+ are defined using algebraic structures such as alphabet
+ (for the letters), free monoid (for the words), semiring
+ (for the weights) and series (mapping from words to
+ weights). As usual, what is at stake is to maintain
+ efficiency while providing a high-level layer for the
+ writing of generic algorithms. Yet, one of the
+ particularities of FSM manipulation is the need of a fine
+ grained specialization power on an object which is both an
+ algebraic concept and an intensive computing machine.}
+}
+
+@InProceedings{ ricou.07.adass,
+ author = {Olivier Ricou and Anthony Baillard and Emmanuel Bertin and
+ Frederic Magnard and Chiara Marmo and Yannick Mellier},
+ title = {Web services at {TERAPIX}},
+ booktitle = {Proceedings of the XVII conference on Astronomical Data
+ Analysis Software \& Systems (ADASS)},
+ month = sep,
+ year = 2007,
+ urllrde = {200709-ADASS},
+ abstract = {We present an implementation of V.O.-compliant web
+ services built around software tools developed at the
+ TERAPIX centre. These services allow to operate from a
+ remote site several pipeline tasks dedicated to
+ astronomical data processing on the TERAPIX cluster,
+ including the latest EFIGI morphological analysis tool.}
+}
+
+@InProceedings{ ricou.07.eceg,
+ author = {Olivier Ricou},
+ title = {10 years of confrontation between {French} {Internet}
+ users and their successive governments},
+ booktitle = {Proceedings of the 7th European Conference on e-Government
+ (ECEG)},
+ month = jun,
+ year = 2007,
+ urllrde = {200706-ECEG},
+ abstract = {This paper is a testimony on the relations between the
+ Internet users and their governments in France during the
+ last decade. It shows the complexity of communication
+ between two worlds that are strangers to each other. Since
+ most of the confrontation occurred over law proposals, it
+ analyses their impact on Internet users and focuses on two
+ examples. These example show the failure of Internet as a
+ political medium. French politicians do not seem to want an
+ active participation of the citizens in decisionmaking
+ processes. In order to end this paper on an optimistic
+ note, the last section enumerates the achievements of
+ egovernment which contributed preparing for a better
+ democracy by increasing transparency, accountability, and
+ education. This might push citizens to ask for more. }
+}
+
+@InProceedings{ ricou.08.eceg,
+ author = {Olivier Ricou},
+ title = {A Survey of {French} Local e-Democracy},
+ booktitle = {Proceedings of the 8th European Conference on e-Government
+ (ECEG)},
+ month = jul,
+ year = 2008,
+ urllrde = {200807-ECEG},
+ abstract = {Since the end of the last century, the Internet has shown
+ that it is a different media, a media of citizen
+ journalists. This paper surveys e-democratic tools used at
+ the local level in France in order to see how the Internet
+ can change our democracy and people's participation. It
+ describes the official tools provided by municipalities and
+ administrations as well as citizens' tools, like blogs,
+ which become more and more important in today's democratic
+ debate. It analyses how they help for more transparency,
+ accountability and participation, which might lead to
+ define new democratic rules.}
+}
+
+@TechReport{ vaucanson.04.techrep,
+ author = {The \textsc{Vaucanson} group},
+ title = {Proposal: an {XML} representation for automata},
+ institution = {EPITA Research and Development Laboratory (LRDE)},
+ year = 2004,
+ number = 0414,
+ address = {France},
+ month = nov,
+ url = {http://www.lrde.epita.fr/cgi-bin/twiki/view/Publications/200414-TR}
+ ,
+ project = {Vaucanson},
+ urllrde = {200414-TR}
+}
+
+@InProceedings{ verna.00.vsmm,
+ author = {Didier Verna},
+ title = {Action recognition: how intelligent virtual environments
+ can ease human-machine interaction},
+ booktitle = {Proceedings of the 6th International Conference on Virtual
+ Systems and MultiMedia (VSMM)---Intelligent Environments
+ Workshop},
+ pages = {703--713},
+ year = 2000,
+ address = {Gifu, Japan},
+ month = oct,
+ publisher = {IOS Press, USA},
+ isbn = {1-58603-108-2},
+ project = {Urbi},
+ urllrde = {200010-Vsmm-2},
+ abstract = {This paper describes a research that has been conducted in
+ the field of cognitive assistance to human-machine
+ interaction in virtual environments. The idea is to design
+ a system which, bearing in mind the actions performed by
+ the operator at present and the current state of the
+ environment, attempts to determine the global operation
+ that the user is in the process of executing, and
+ eventually takes control of the same process in order to
+ complete it automatically. This idea implies the conception
+ of an action recognition mechanism based on a specific
+ knowledge representation model. This mechanism is
+ implemented in a computer demonstrator, known as the TOASt
+ system, which is also presented.}
+}
+
+@InProceedings{ verna.01.sci,
+ author = {Didier Verna},
+ title = {Virtual reality and tele-operation: a common framework},
+ booktitle = {Proceedings of the 5th World Multi-Conference on
+ Systemics, Cybernetics and Informatics (SCI)---Emergent
+ Computing and Virtual Engineering},
+ year = 2001,
+ volume = 3,
+ pages = {499--504},
+ address = {Orlando, Florida, USA},
+ month = jul,
+ editors = {N. Callas and S. Esquivel and J. Burge},
+ project = {Urbi},
+ urllrde = {200107-Sci},
+ abstract = {This paper proposes an overview of a study that
+ conceptually unify the fields of virtual reality and
+ tele-operation, by analyzing the notion of ``assistance''
+ to the operator of a virtual reality or tele-operation
+ system. This analysis demonstrates that cases of assistance
+ that are usually considered to belong to virtual reality
+ are not conceptually different from what has been done in
+ tele-operation since long before virtual reality appeared.
+ With this common framework for virtual reality and
+ tele-operation, we hope to provide a theoretical
+ formalization of many ideas acquired empirically, and hence
+ a basis onto which further discussion could be undertaken
+ in a constructive manner.}
+}
+
+@InProceedings{ verna.06.ecoop,
+ author = {Didier Verna},
+ title = {Beating {C} in Scientific Computing Applications},
+ booktitle = {Third European Lisp Workshop at ECOOP},
+ year = 2006,
+ address = {Nantes, France},
+ month = jul,
+ note = {Best paper award.},
+ project = {Software},
+ urllrde = {200607-ECOOP},
+ abstract = {This paper presents an ongoing research on the behavior
+ and performance of Lisp with respect to C in the context of
+ scientific numerical computing. Several simple image
+ processing algorithms are used to evaluate the performance
+ of pixel access and arithmetic operations in both
+ languages. We demonstrate that the behavior of equivalent
+ Lisp and C code is similar with respect to the choice of
+ data structures and types, and also to external parameters
+ such as hardware optimization. We further demonstrate that
+ properly typed and optimized Lisp code runs as fast as the
+ equivalent C code, or even faster in some cases.}
+}
+
+@Article{ verna.06.ijcs,
+ author = {Didier Verna},
+ title = {How to make Lisp go faster than {C}},
+ journal = {IAENG International Journal of Computer Science},
+ year = 2006,
+ volume = 32,
+ number = 4,
+ month = dec,
+ issn = {1819-656X},
+ project = {Software},
+ urllrde = {200606-IMECS},
+ abstract = {Contrary to popular belief, Lisp code can be very
+ efficient today: it can run as fast as equivalent C code or
+ even faster in some cases. In this paper, we explain how to
+ tune Lisp code for performance by introducing the proper
+ type declarations, using the appropriate data structures
+ and compiler information. We also explain how efficiency is
+ achieved by the compilers. These techniques are applied to
+ simple image processing algorithms in order to demonstrate
+ the announced performance on pixel access and arithmetic
+ operations in both languages.}
+}
+
+@InProceedings{ verna.06.imecs,
+ author = {Didier Verna},
+ title = {How to make Lisp go faster than {C}},
+ booktitle = {Proceedings of the International MultiConference of
+ Engineers and Computer Scientists},
+ year = 2006,
+ address = {Hong Kong},
+ month = jun,
+ organization = {International Association of Engineers},
+ isbn = {988-98671-3-3},
+ project = {Software},
+ urllrde = {200606-IMECS},
+ abstract = {Contrary to popular belief, Lisp code can be very
+ efficient today: it can run as fast as equivalent C code or
+ even faster in some cases. In this paper, we explain how to
+ tune Lisp code for performance by introducing the proper
+ type declarations, using the appropriate data structures
+ and compiler information. We also explain how efficiency is
+ achieved by the compilers. These techniques are applied to
+ simple image processing algorithms in order to demonstrate
+ the announced performance on pixel access and arithmetic
+ operations in both languages.}
+}
+
+@Article{ verna.06.practex,
+ author = {Didier Verna},
+ year = 2006,
+ volume = 2006,
+ number = 3,
+ month = aug,
+ project = {Software},
+ urllrde = {200608-PracTeX},
+ abstract = {This paper presents {\CurVe}, a curriculum vitae class for
+ \LaTeX2e, in a progressive approach going from a first
+ contact with the class, through concrete examples of
+ customization, and some aspects of advanced usage.}
+}
+
+@InProceedings{ verna.07.imecs,
+ author = {Didier Verna},
+ title = {{CLOS} solutions to binary methods},
+ booktitle = {Proceedings of the International MultiConference of
+ Engineers and Computer Scientists},
+ year = 2007,
+ address = {Hong Kong},
+ month = mar,
+ organization = {International Association of Engineers},
+ project = {Software},
+ urllrde = {200703-IMECS},
+ abstract = {Implementing binary methods in traditional object oriented
+ languages is difficult: numerous problems arise, such as
+ typing (covariance vs. contra-variance of the arguments),
+ polymorphism on multiple arguments (lack of multi-methods)
+ etc. The purpose of this paper is to demonstrate how those
+ problems are either solved, or nonexistent in the Common
+ Lisp Object System (CLOS). Several solutions for different
+ levels of binary methods support in CLOS are proposed. They
+ mainly consist in re-programming a binary method specific
+ object system through the CLOS meta-object protocol.}
+}
+
+@InProceedings{ verna.08.els,
+ author = {Didier Verna},
+ title = {Binary Methods Programming: the {CLOS} Perspective},
+ booktitle = {Proceedings of the First European Lisp Symposium},
+ pages = {91--105},
+ year = 2008,
+ address = {Bordeaux, France},
+ month = may,
+ project = {Software},
+ urllrde = {200805-ELS},
+ abstract = {Implementing binary methods in traditional object-oriented
+ languages is difficult: numerous problems arise regarding
+ the relationship between types and classes in the context
+ of inheritance, or the need for privileged access to the
+ internal representation of objects. Most of these problems
+ occur in the context of statically typed languages that
+ lack multi-methods (polymorphism on multiple arguments).
+ The purpose of this paper is twofold: first, we show why
+ some of these problems are either non-issues, or easily
+ solved in Common Lisp. Then, we demonstrate how the Common
+ Lisp Object System (CLOS) allows us not only to implement
+ binary methods in a straightforward way, but also to
+ support the concept directly, and even enforce it at
+ different levels (usage and implementation).}
+}
+
+@Article{ verna.08.jucs,
+ author = {Didier Verna},
+ title = {Binary Methods Programming: the {CLOS} Perspective
+ (extended version)},
+ journal = {Journal of Universal Computer Science},
+ year = 2008,
+ volume = 14,
+ number = 20,
+ pages = {3389--3411},
+ project = {Software},
+ urllrde = {200811-JUCS},
+ abstract = {Implementing binary methods in traditional object-oriented
+ languages is difficult: numerous problems arise regarding
+ the relationship between types and classes in the context
+ of inheritance, or the need for privileged access to the
+ internal representation of objects. Most of these problems
+ occur in the context of statically typed languages that
+ lack multi-methods (polymorphism on multiple arguments).
+ The purpose of this paper is twofold: first, we show why
+ some of these problems are either non-issues, or easily
+ solved in Common Lisp. Then, we demonstrate how the Common
+ Lisp Object System (CLOS) allows us not only to implement
+ binary methods in a straightforward way, but also to
+ support the concept directly, and even enforce it at
+ different levels (usage and implementation).}
+}
+
+@InProceedings{ verna.08.lncs,
+ author = {Didier Verna and Charlotte Herzeel and Christophe Rhodes
+ and Hans H\"ubner},
+ title = {Report on the 5th Workshop {ELW} at {ECOOP 2008}},
+ booktitle = {Object-Oriented Technology. ECOOP 2008 Workshop Reader.},
+ pages = {1--6},
+ year = 2008,
+ editor = {Patrick Eugster},
+ volume = 5475,
+ series = {Lecture Notes in Computer Science},
+ month = jul,
+ publisher = {Springer}
+}
+
+@InProceedings{ verna.09.accu,
+ author = {Didier Verna},
+ title = {Revisiting the Visitor: the Just Do It Pattern},
+ booktitle = {Proceedings of the ACCU Conference 2009},
+ year = 2009,
+ address = {Oxford},
+ project = {Software},
+ urllrde = {200904-ACCU},
+ abstract = { },
+ note = {Accepted}
+}
+
+@InProceedings{ verna.09.ilc,
+ author = {Didier Verna},
+ title = {{CLOS} Efficiency: Instantiation},
+ booktitle = {Proceedings of the International Lisp Conference},
+ year = 2009,
+ month = mar,
+ pages = {76--90},
+ organization = {Association of Lisp Users},
+ urllrde = {200903-ILC},
+ abstract = {This article reports the results of an ongoing
+ experimental research on the behavior and performance of
+ CLOS, the Common Lisp Object System. Our purpose is to
+ evaluate the behavior and performance of the 3 most
+ important characteristics of any dynamic Object Oriented
+ system: class instantiation, slot access and dynamic
+ dispatch. This paper describes the results of our
+ experiments on instantiation. We evaluate the efficiency of
+ the instantiation process in both C++ and Lisp under a
+ combination of parameters such as slot types or classes
+ hierarchy. We show that in a non-optimized configuration
+ where safety is given priority on speed, the behavior of
+ C++ and Lisp instantiation can be quite different, which is
+ also the case amongst different Lisp compilers. On the
+ other hand, we demonstrate that when compilation is tuned
+ for speed, instantiation in Lisp becomes faster than in
+ C++.}
+}
+
+@InProceedings{ verna.10.els,
+ author = {Didier Verna},
+ title = {{CLoX}: {C}ommon {L}isp objects for {XEmacs}},
+ booktitle = {Proceedings of the 3rd European Lisp Symposium},
+ year = 2010,
+ address = {Lisbon, Portugal},
+ month = may,
+ project = {Software},
+ urllrde = {201005-ELS},
+ abstract = {CLoX is an ongoing attempt to provide a full Emacs Lisp
+ implementation of the Common Lisp Object System, including
+ its underlying meta-object protocol, for XEmacs. This paper
+ describes the early development stages of this project.
+ CLoX currently consists in a port of Closette to Emacs
+ Lisp, with some additional features, most notably, a deeper
+ integration between types and classes and a comprehensive
+ test suite. All these aspects are described in the paper,
+ and we also provide a feature comparison with an
+ alternative project called Eieio.}
+}
+
+@Article{ verna.10.jucs,
+ author = {Didier Verna},
+ title = {Revisiting the Visitor: the Just Do It Pattern},
+ journal = {Journal of Universal Computer Science},
+ year = 2010,
+ volume = 16,
+ pages = {246--271},
+ project = {Software},
+ urllrde = {201004-JUCS},
+ abstract = {While software design patterns are a generally useful
+ concept, they are often (and mistakenly) seen as ready-made
+ universal recipes for solving common problems. In a way,
+ the danger is that programmers stop thinking about their
+ actual problem, and start looking for pre-cooked solutions
+ in some design pattern book instead. What people usually
+ forget about design patterns is that the underlying
+ programming language plays a major role in the exact shape
+ such or such pattern will have on the surface. The purpose
+ of this paper is twofold: we show why design pattern
+ expression is intimately linked to the expressiveness of
+ the programming language in use, and we also demonstrate
+ how a blind application of them can in fact lead to very
+ poorly designed code.}
+}
+
+@InProceedings{ verna.10.tug,
+ author = {Didier Verna},
+ title = {Classes, Styles, Conflicts: the Biological Realm of
+ {\LaTeX}},
+ booktitle = {TUGboat},
+ pages = {162--172},
+ year = 2010,
+ editor = {Barbara Beeton and Karl Berry},
+ volume = 31,
+ number = 2,
+ project = {Software},
+ urllrde = {201006-TUG},
+ abstract = {The \LaTeX{} world is composed of thousands of software
+ components, most notably classes and styles. Classes and
+ styles are born, evolve or die, interact with each other,
+ compete or cooperate, very much as living organisms do at
+ the cellular level. This paper attempts to draw an extended
+ analogy between the \LaTeX{} biotope and cellular biology.
+ By considering \LaTeX{} documents as living organisms and
+ styles as viruses that infect them, we are able to exhibit
+ a set of behavioral patterns common to both worlds. We
+ analyze infection methods, types and cures, and we show how
+ \LaTeX{} or cellular organisms are able to survive in a
+ world of perpetual war.}
+}
+
+@InProceedings{ verna.11.onward,
+ author = {Didier Verna},
+ title = {Biological Realms in Computer Science: the Way You Don't
+ (Want To) Think About Them},
+ booktitle = {Onward! 2011},
+ year = {2011},
+ note = {Accepted},
+ abstract = {In biology, evolution is usually seen as a tinkering
+ process, different from what an engineer does when he plans
+ the development of his systems. Recently, studies have
+ shown that even in biology, there is a part of good
+ engineering. As computer scientists, we have much more
+ difficulty to admit that there is also a great deal of
+ tinkering in what we do, and that our software systems
+ behave more and more like biological realms every day. This
+ essay relates my personal experience about this
+ discovery.}
+}
+
+@InProceedings{ verna.11.tug,
+ author = {Didier Verna},
+ title = {Towards {\LaTeX} Coding Standards},
+ booktitle = {TUGboat},
+ OPTpages = {00--00},
+ year = 2011,
+ OPTeditor = {Barbara Beeton and Karl Berry},
+ OPTvolume = 00,
+ OPTnumber = 0,
+ project = {Software},
+ OPTurllrde = {201100-TUG},
+ note = {Accepted},
+ abstract = {Because \LaTeX is only a macro-expansion system, the
+ language does not impose any kind of good software
+ engineering practice, program structure or coding style.
+ Maybe because in the \LaTeX world, collaboration is not so
+ widespread, the idea of some LaTeX Coding Standards is not
+ so pressing as with other programming languages. Over the
+ years, the permanent flow of personal development
+ experiences contributed to shape our own taste in terms of
+ coding style. In this paper, we report on all these
+ experiences and describe what we think are good programming
+ practices.}
+}
+
+@InProceedings{ xue.03.icip,
+ author = {Heru Xue and {\relax Th}ierry G\'eraud and Alexandre
+ Duret-Lutz},
+ title = {Multi-band segmentation using morphological clustering and
+ fusion application to color image segmentation},
+ booktitle = {Proceedings of the IEEE International Conference on Image
+ Processing (ICIP)},
+ year = 2003,
+ pages = {353--356},
+ volume = 1,
+ address = {Barcelona, Spain},
+ month = sep,
+ project = {Image},
+ urllrde = {200309-Icip},
+ abstract = {In this paper we propose a novel approach for color image
+ segmentation. Our approach is based on segmentation of
+ subsets of bands using mathematical morphology followed by
+ the fusion of the resulting segmentation channels. For
+ color images the band subsets are chosen as RG, RB and GB
+ pairs, whose 2D histograms are processed as projections of
+ a 3D histogram. The segmentations in 2D color spaces are
+ obtained using the watershed algorithm. These 2D
+ segmentations are then combined to obtain a final result
+ using a region split-and-merge process. The CIE L a b color
+ space is used to measure the color distance. Our approach
+ results in improved performance and can be generalized for
+ multi-band segmentation of images such as multi-spectral
+ satellite images information.}
+}
+
+@InProceedings{ yoruk.04.eusipco,
+ author = {Erdem Yoruk and Ender Konukoglu and Bulent Sankur and
+ J\'er\^ome Darbon},
+ title = {Person authentication based on hand shape},
+ booktitle = {Proceedings of 12th European Signal Processing Conference
+ (EUSIPCO)},
+ year = 2004,
+ address = {Vienna, Austria},
+ month = sep,
+ project = {Image},
+ urllrde = {200409-EUSIPCO},
+ abstract = {The problem of person identification based on their hand
+ images has been addressed. The system is based on the
+ images of the right hands of the subjects, captured by a
+ flatbed scanner in an unconstrained pose. In a
+ preprocessing stage of the algorithm, the silhouettes of
+ hand images are registered to a fixed pose, which involves
+ both rotation and translation of the hand and, separately,
+ of the individual fingers. Independent component features
+ of the hand silhouette images are used for recognition. The
+ classification performance is found to be very satisfactory
+ and it was shown that, at least for groups of one hundred
+ subjects, hand-based recognition is a viable secure access
+ control scheme.}
+}
+
+@Article{ yoruk.06.itip,
+ author = {Erdem Y\"or\"uk and Ender Konukoglu and B\"ulent Sankur
+ and J\'er\^ome Darbon},
+ title = {Shape-based hand recognition},
+ journal = {IEEE Transactions on Image Processing},
+ year = 2006,
+ volume = 15,
+ number = 7,
+ pages = {1803--1815},
+ month = jul,
+ project = {Image},
+ urllrde = {2006XX-ITIP},
+ abstract = {The problem of person recognition and verification based
+ on their hand images has been addressed. The system is
+ based on the images of the right hands of the subjects,
+ captured by a flatbed scanner in an unconstrained pose at
+ 45 dpi. In a preprocessing stage of the algorithm, the
+ silhouettes of hand images are registered to a fixed pose,
+ which involves both rotation and translation of the hand
+ and, separately, of the individual fingers. Two feature
+ sets have been comparatively assessed, Hausdorff distance
+ of the hand contours and independent component features of
+ the hand silhouette images. Both the classification and the
+ verification performances are found to be very satisfactory
+ as it was shown that, at least for groups of about five
+ hundred subjects, hand-based recognition is a viable secure
+ access control scheme.}
+}
+
+%% Local Variables:
+%% fill-column: 76
+%% ispell-local-dictionary: "american"
+%% End:
diff --git a/doc/mainpage.hh b/doc/mainpage.dox
similarity index 80%
rename from doc/mainpage.hh
rename to doc/mainpage.dox
index 116c69a..8f49ca3 100644
--- a/doc/mainpage.hh
+++ b/doc/mainpage.dox
@@ -13,8 +13,8 @@
<tr>
<td>
\li What is Olena ?
- \li \ref bibliography
- \li Contributors
+ \li <a class="el" href="http://www.lrde.epita.fr/cgi-bin/twiki/view/Olena/Publications">Bibliography</a>
+ \li <a class="el" href="a00028.html">Contributors</a>
</td>
<td>
\li \ref moduleslist
@@ -23,7 +23,7 @@
\li Swilena
</td>
<td>
- \li Online Demos
+ \li <a class="el" href="http://www.lrde.epita.fr/cgi-bin/twiki/view/Olena/Demos">Online Demos</a>
\li Papers Related Programs
\li Olena Powered Programs
</td>
diff --git a/doc/modules_list.hh b/doc/modules_list.dox
similarity index 100%
rename from doc/modules_list.hh
rename to doc/modules_list.dox
diff --git a/doc/olena.qhcp b/doc/olena.qhcp
deleted file mode 100644
index 595d34e..0000000
--- a/doc/olena.qhcp
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<QHelpCollectionProject version="1.0">
- <assistant>
- <startPage>qthelp://fr.epita.lrde.olena/milena-2.0/index.html</startPage>
- </assistant>
- <docFiles>
- <register>
- <file>../milena/doc/user-refman/html/milena.qch</file>
- <file>../scribo/doc/user-refman/html/scribo.qch</file>
- </register>
- </docFiles>
-</QHelpCollectionProject>
\ No newline at end of file
diff --git a/scribo/doc/Doxyfile.in b/scribo/doc/Doxyfile.in
index d279d76..7ad639f 100644
--- a/scribo/doc/Doxyfile.in
+++ b/scribo/doc/Doxyfile.in
@@ -26,7 +26,7 @@ PROJECT_LOGO = @top_srcdir@/doc/logo.jpg
OUTPUT_DIRECTORY = @builddir@/user-refman.tmp
CREATE_SUBDIRS = YES
OUTPUT_LANGUAGE = English
-BRIEF_MEMBER_DESC = YES
+BRIEF_MEMBER_DESC = NO
REPEAT_BRIEF = YES
ABBREVIATE_BRIEF =
ALWAYS_DETAILED_SEC = YES
@@ -47,6 +47,8 @@ BUILTIN_STL_SUPPORT = YES
IDL_PROPERTY_SUPPORT = NO
DISTRIBUTE_GROUP_DOC = NO
SUBGROUPING = YES
+INLINE_GROUPED_CLASSES = NO
+SORT_GROUP_NAMES = YES
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
@@ -95,7 +97,8 @@ INPUT = @top_srcdir@/scribo
FILE_PATTERNS = *.cc \
*.hh \
*.hxx \
- *.hcc
+ *.hcc \
+ *.dox
RECURSIVE = YES
EXCLUDE = @top_srcdir@/scribo/demo \
@top_srcdir@/scribo/sandbox \
@@ -126,8 +129,8 @@ INPUT_ENCODING = ISO-8859-1
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
-REFERENCED_BY_RELATION = YES
-REFERENCES_RELATION = YES
+REFERENCED_BY_RELATION = NO
+REFERENCES_RELATION = NO
REFERENCES_LINK_SOURCE = NO
USE_HTAGS = NO
VERBATIM_HEADERS = YES
@@ -329,7 +332,7 @@ SKIP_FUNCTION_MACROS = YES
TAGFILES = @builddir@/../../milena/doc/milena.tag=../../../../milena/doc/user-refman/html
GENERATE_TAGFILE = scribo.tag
ALLEXTERNALS = NO
-EXTERNAL_GROUPS = YES
+EXTERNAL_GROUPS = NO
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
diff --git a/scribo/doc/groups.dox b/scribo/doc/groups.dox
new file mode 100644
index 0000000..73d842e
--- /dev/null
+++ b/scribo/doc/groups.dox
@@ -0,0 +1,19 @@
+/*! \defgroup grpstruct Data structures
+ *
+ * \brief Scribo high level data structures.
+ *
+ */
+
+
+/*! \defgroup grproutine Routines
+ *
+ * \brief All routines/algorithms provided in Scribo.
+ *
+ */
+
+
+/*! \defgroup grpalgobin Binarization
+ *
+ * \brief Binarization algorithms.
+ *
+ */
diff --git a/scribo/scribo/core/component_set.hh b/scribo/scribo/core/component_set.hh
index ded64ae..8c3e83f 100644
--- a/scribo/scribo/core/component_set.hh
+++ b/scribo/scribo/core/component_set.hh
@@ -119,6 +119,10 @@ namespace scribo
} // end of namespace scribo::internal
+ /// \brief Represents all the components in a document image.
+ ///
+ /// \ingroup grpstruct
+ //
template <typename L>
class component_set : public Serializable<component_set<L> >
{
diff --git a/scribo/scribo/core/document.hh b/scribo/scribo/core/document.hh
index cc885e4..5bbd226 100644
--- a/scribo/scribo/core/document.hh
+++ b/scribo/scribo/core/document.hh
@@ -79,9 +79,12 @@ namespace scribo
} // end of namespace scribo::internal
-
+ /// \brief Represent document data and structure.
+ ///
+ /// \ingroup grpstruct
+ //
template <typename L>
- struct document : public Serializable<document<L> >
+ class document : public Serializable<document<L> >
{
typedef internal::document_data<L> data_t;
diff --git a/scribo/scribo/core/line_links.hh b/scribo/scribo/core/line_links.hh
index b7b438c..4f807e4 100644
--- a/scribo/scribo/core/line_links.hh
+++ b/scribo/scribo/core/line_links.hh
@@ -67,7 +67,9 @@ namespace scribo
- /// \brief Line group representation.
+ /// \brief Line links representation.
+ ///
+ /// \ingroup grpstruct
//
template <typename L>
class line_links : public Serializable<line_links<L> >
diff --git a/scribo/scribo/core/line_set.hh b/scribo/scribo/core/line_set.hh
index db987e6..4880a77 100644
--- a/scribo/scribo/core/line_set.hh
+++ b/scribo/scribo/core/line_set.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -86,6 +86,9 @@ namespace scribo
Line ids start from 1.
+
+ \ingroup grpstruct
+
*/
template <typename L>
class line_set
diff --git a/scribo/scribo/core/object_groups.hh b/scribo/scribo/core/object_groups.hh
index 46447d2..53ba7f9 100644
--- a/scribo/scribo/core/object_groups.hh
+++ b/scribo/scribo/core/object_groups.hh
@@ -88,6 +88,8 @@ namespace scribo
/// \brief Object group representation.
+ ///
+ /// \ingroup grpstruct
//
template <typename L>
class object_groups : public Serializable<object_groups<L> >
diff --git a/scribo/scribo/core/object_links.hh b/scribo/scribo/core/object_links.hh
index 37fd299..a2543a7 100644
--- a/scribo/scribo/core/object_links.hh
+++ b/scribo/scribo/core/object_links.hh
@@ -69,7 +69,9 @@ namespace scribo
- /// \brief Object group representation.
+ /// \brief Object links representation.
+ ///
+ /// \ingroup grpstruct
//
template <typename L>
class object_links : public Serializable<object_links<L> >
diff --git a/scribo/scribo/core/paragraph_set.hh b/scribo/scribo/core/paragraph_set.hh
index c21359d..69194be 100644
--- a/scribo/scribo/core/paragraph_set.hh
+++ b/scribo/scribo/core/paragraph_set.hh
@@ -65,6 +65,7 @@ namespace scribo
Paragraph ids start from 1.
+ \ingroup grpstruct
*/
template <typename L>
class paragraph_set : public Serializable<paragraph_set<L> >
--
1.7.2.5
1
0

29 Nov '11
---
scribo/doc/Doxyfile.in | 10 +-
scribo/doc/groups.dox | 137 +++++++++++++++++++-
scribo/scribo/binarization/global_threshold.hh | 4 +-
.../binarization/internal/niblack_formula.hh | 5 +-
.../binarization/internal/sauvola_formula.hh | 5 +-
scribo/scribo/binarization/local_threshold.hh | 8 +-
scribo/scribo/binarization/niblack.hh | 13 +-
scribo/scribo/binarization/niblack_threshold.hh | 15 ++-
scribo/scribo/binarization/otsu.hh | 2 +
scribo/scribo/binarization/otsu_threshold.hh | 2 +
scribo/scribo/binarization/sauvola.hh | 22 ++-
scribo/scribo/binarization/sauvola_ms.hh | 12 +-
scribo/scribo/binarization/sauvola_ms_split.hh | 7 +-
scribo/scribo/binarization/sauvola_threshold.hh | 13 ++-
scribo/scribo/core/erase_objects.hh | 6 +-
scribo/scribo/debug/alignment_decision_image.hh | 13 +-
scribo/scribo/debug/bboxes_enlarged_image.hh | 8 +-
scribo/scribo/debug/bboxes_image.hh | 17 ++-
scribo/scribo/debug/char_space_image.hh | 5 +-
scribo/scribo/debug/decision_image.hh | 22 ++-
scribo/scribo/debug/highlight_text_area.hh | 12 +-
scribo/scribo/debug/line_info_image.hh | 4 +
scribo/scribo/debug/linked_bboxes_image.hh | 29 +++-
scribo/scribo/debug/links_decision_image.hh | 12 +-
scribo/scribo/debug/links_image.hh | 7 +-
scribo/scribo/debug/logger.hh | 9 +-
.../scribo/debug/looks_like_a_text_line_image.hh | 12 ++-
scribo/scribo/debug/mean_and_base_lines_image.hh | 8 +-
scribo/scribo/debug/save_comp_diff.hh | 31 +++--
scribo/scribo/debug/save_label_image.hh | 9 +-
scribo/scribo/debug/save_table_image.hh | 11 ++-
scribo/scribo/debug/text_areas_image.hh | 4 +-
scribo/scribo/debug/text_color_image.hh | 4 +
scribo/scribo/draw/bounding_box_links.hh | 38 +++---
scribo/scribo/filter/images_in_paragraph.hh | 14 +--
scribo/scribo/filter/line_links_x_height.hh | 9 ++
scribo/scribo/filter/object_groups_mean_width.hh | 1 +
scribo/scribo/filter/object_groups_size_ratio.hh | 16 +++
scribo/scribo/filter/object_groups_small.hh | 9 +-
scribo/scribo/filter/object_groups_with_holes.hh | 13 ++-
scribo/scribo/filter/object_links_aligned.hh | 6 +-
scribo/scribo/filter/object_links_bbox_h_ratio.hh | 8 +-
scribo/scribo/filter/object_links_bbox_overlap.hh | 6 +-
scribo/scribo/filter/object_links_bbox_ratio.hh | 6 +-
scribo/scribo/filter/object_links_bbox_w_ratio.hh | 9 +-
.../scribo/filter/object_links_bottom_aligned.hh | 5 +-
.../scribo/filter/object_links_center_aligned.hh | 11 +-
scribo/scribo/filter/object_links_left_aligned.hh | 10 +-
.../filter/object_links_non_aligned_simple.hh | 4 +-
scribo/scribo/filter/object_links_right_aligned.hh | 5 +-
scribo/scribo/filter/object_links_top_aligned.hh | 8 +-
scribo/scribo/filter/objects_h_thick.hh | 4 +
scribo/scribo/filter/objects_h_thin.hh | 4 +
scribo/scribo/filter/objects_large.hh | 17 ++-
scribo/scribo/filter/objects_on_border.hh | 8 +-
scribo/scribo/filter/objects_size_ratio.hh | 6 +-
scribo/scribo/filter/objects_small.hh | 17 ++-
scribo/scribo/filter/objects_thick.hh | 14 ++-
scribo/scribo/filter/objects_thin.hh | 15 ++-
scribo/scribo/filter/objects_v_thick.hh | 12 ++-
scribo/scribo/filter/objects_v_thin.hh | 21 ++-
scribo/scribo/filter/objects_with_holes.hh | 26 ++++-
scribo/scribo/filter/paragraphs_bbox_overlap.hh | 11 +-
scribo/scribo/filter/paragraphs_in_borders.hh | 8 +-
scribo/scribo/filter/paragraphs_in_image.hh | 11 +-
scribo/scribo/filter/separators_in_borders.hh | 15 ++-
scribo/scribo/filter/separators_in_element.hh | 12 +-
scribo/scribo/filter/separators_in_paragraph.hh | 26 +++--
scribo/scribo/filter/separators_vert_in_borders.hh | 10 +-
scribo/scribo/fun/v2b/objects_on_border_filter.hh | 5 +-
.../postprocessing/images_to_drop_capital.hh | 10 +-
scribo/scribo/preprocessing/denoise.hh | 11 +-
scribo/scribo/preprocessing/denoise_bg.hh | 6 +-
scribo/scribo/preprocessing/denoise_fg.hh | 9 +-
scribo/scribo/preprocessing/deskew_crop.hh | 13 +-
.../scribo/preprocessing/homogeneous_contrast.hh | 4 +-
scribo/scribo/preprocessing/split_bg_fg.hh | 8 +-
scribo/scribo/primitive/extract/alignments.hh | 14 ++-
scribo/scribo/primitive/extract/cells.hh | 14 +-
scribo/scribo/primitive/extract/components.hh | 8 +-
scribo/scribo/primitive/extract/lines_h_single.hh | 22 ++--
.../primitive/extract/lines_h_thick_and_single.hh | 23 ++--
scribo/scribo/primitive/extract/lines_v_pattern.hh | 6 +-
scribo/scribo/primitive/extract/lines_v_single.hh | 22 ++--
.../primitive/extract/lines_v_thick_and_single.hh | 20 ++--
scribo/scribo/primitive/group/from_double_link.hh | 1 -
scribo/scribo/primitive/identify.hh | 2 +-
scribo/scribo/primitive/link/compute.hh | 6 +-
.../scribo/primitive/link/with_single_left_link.hh | 10 +-
.../with_single_left_link_dmax_ratio_aligned.hh | 10 +-
.../primitive/link/with_single_right_link.hh | 8 +-
.../link/with_single_right_link_bottom.hh | 10 +-
.../with_single_right_link_dmax_ratio_aligned.hh | 8 +-
.../primitive/link/with_single_right_link_top.hh | 6 +-
scribo/scribo/table/align_lines_horizontaly.hh | 9 +-
scribo/scribo/table/rebuild.hh | 20 ++--
scribo/scribo/text/extract_lines.hh | 10 +-
scribo/scribo/text/extract_lines_wo_merge.hh | 8 +-
scribo/scribo/text/recognition.hh | 15 ++-
scribo/scribo/toolchain/content_in_doc.hh | 23 +++-
scribo/scribo/toolchain/content_in_hdoc.hh | 21 +++-
.../toolchain/internal/content_in_doc_functor.hh | 6 +
.../toolchain/internal/content_in_hdoc_functor.hh | 9 ++
.../toolchain/internal/text_in_doc_functor.hh | 6 +
.../internal/text_in_doc_preprocess_functor.hh | 5 +
.../toolchain/internal/text_in_picture_functor.hh | 4 +-
.../scribo/toolchain/internal/toolchain_functor.hh | 5 +
scribo/scribo/toolchain/nepomuk/text_extraction.hh | 6 +-
scribo/scribo/toolchain/text_in_doc.hh | 22 +++-
scribo/scribo/toolchain/text_in_doc_preprocess.hh | 14 ++
scribo/scribo/toolchain/text_in_picture.hh | 21 +++-
111 files changed, 971 insertions(+), 382 deletions(-)
diff --git a/scribo/doc/Doxyfile.in b/scribo/doc/Doxyfile.in
index 7ad639f..a6d8c3e 100644
--- a/scribo/doc/Doxyfile.in
+++ b/scribo/doc/Doxyfile.in
@@ -49,6 +49,7 @@ DISTRIBUTE_GROUP_DOC = NO
SUBGROUPING = YES
INLINE_GROUPED_CLASSES = NO
SORT_GROUP_NAMES = YES
+TYPEDEF_HIDES_STRUCT = YES
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
@@ -85,7 +86,7 @@ FILE_VERSION_FILTER =
#---------------------------------------------------------------------------
QUIET = YES
WARNINGS = YES
-WARN_IF_UNDOCUMENTED = YES
+WARN_IF_UNDOCUMENTED = NO
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO
WARN_FORMAT = "$file:$line: $text"
@@ -107,7 +108,7 @@ EXCLUDE = @top_srcdir@/scribo/demo \
@top_srcdir@/scribo/tests/unit_test
EXCLUDE_SYMLINKS = YES
EXCLUDE_PATTERNS = *spe.hh
-EXCLUDE_SYMBOLS = *::internal* *_ mln::trait::*
+EXCLUDE_SYMBOLS = *_ mln::trait::*
EXAMPLE_PATH = @top_srcdir@/scribo/doc/examples \
@top_srcdir@/scribo/doc/outputs \
@top_srcdir@/scribo/doc/examples/split \
@@ -260,7 +261,6 @@ PREDEFINED = "for_all(x)=for(x.start(); x.is_valid(); x.next())" \
"mln_trait_op_plus(L, R)=typename mln::trait::op::plus< L , R >::ret" \
"mln_trait_op_times(L, R)=typename mln::trait::op::times< L , R >::ret" \
"mln_trait_op_uminus(T)=typename mln::trait::op::uminus< T >::ret" \
- "mln_ch_value(I, V)=typename mln::trait::ch_value< I, V >::ret" \
"mlc_unqualif_(T)=mln::metal::unqualif<T>::ret" \
"mln_piter_(T)=T::piter" \
"mln_fwd_piter_(T)=T::fwd_piter" \
@@ -295,8 +295,8 @@ PREDEFINED = "for_all(x)=for(x.start(); x.is_valid(); x.next())" \
"mln_trait_op_div_(L, R)=mln::trait::op::div< L , R >::ret" \
"mln_trait_op_mod_(L, R)=mln::trait::op::mod< L , R >::ret" \
"mln_trait_op_uminus_(T)=mln::trait::op::uminus< T >::ret" \
- "mln_ch_value_(I, V)=typename mln::trait::ch_value< I, V >::ret" \
- "mln_ch_value(I, V)_=mln::trait::ch_value< I, V >::ret" \
+ "mln_ch_value_(I, V)=mln::trait::ch_value< I, V >::ret" \
+ "mln_ch_value(I, V)=typename mln::trait::ch_value< I, V >::ret" \
"mln_morpher_lvalue(I)=typename internal::morpher_lvalue_<I>::ret" \
"mln_concrete(I)=typename mln::trait::concrete< I >::ret" \
"mln_concrete_ch_value(I, V)=typename mln::trait::ch_value< typename mln::trait::concrete< I >::ret, V >::ret" \
diff --git a/scribo/doc/groups.dox b/scribo/doc/groups.dox
index 73d842e..f3db20b 100644
--- a/scribo/doc/groups.dox
+++ b/scribo/doc/groups.dox
@@ -4,7 +4,6 @@
*
*/
-
/*! \defgroup grproutine Routines
*
* \brief All routines/algorithms provided in Scribo.
@@ -12,8 +11,144 @@
*/
+
/*! \defgroup grpalgobin Binarization
*
* \brief Binarization algorithms.
*
+ * \ingroup grproutine
+ */
+
+/*! \defgroup grpalgobinsauvola Sauvola
+ *
+ * \brief Sauvola's Binarization implementations.
+ *
+ * \ingroup grpalgobin
+ */
+
+/*! \defgroup grpalgobinniblack Niblack
+ *
+ * \brief Niblack's Binarization implementations.
+ *
+ * \ingroup grpalgobin
+ */
+
+/*! \defgroup grpalgobinotsu Otsu
+ *
+ * \brief Otsu's Binarization implementations.
+ *
+ * \ingroup grpalgobin
+ */
+
+
+/*! \defgroup grpalgodebug Debug
+ *
+ * \brief Debug routines.
+ *
+ * \ingroup grproutine
+ */
+
+
+
+/*! \defgroup grpalgofilter Element Filtering
+ *
+ * \brief Element filtering routines.
+ *
+ * \ingroup grproutine
+ */
+
+/*! \defgroup grpalgofiltercomp Components
+ *
+ * \brief Component filtering routines.
+ *
+ * \ingroup grpalgofilter
+ */
+
+/*! \defgroup grpalgofiltercomplink Component Links
+ *
+ * \brief Component links filtering routines.
+ *
+ * \ingroup grpalgofilter
+ */
+
+/*! \defgroup grpalgofiltercompgroup Component Groups
+ *
+ * \brief Component groups filtering routines.
+ *
+ * \ingroup grpalgofilter
+ */
+
+/*! \defgroup grpalgofilterlinelink Line Links
+ *
+ * \brief Line links filtering routines.
+ *
+ * \ingroup grpalgofilter
+ */
+
+/*! \defgroup grpalgofilterpar Paragraphs
+ *
+ * \brief Paragraphs filtering routines.
+ *
+ * \ingroup grpalgofilter
+ */
+
+/*! \defgroup grpalgofilterelt Elements
+ *
+ * \brief Elements filtering routines.
+ *
+ * \ingroup grpalgofilter
+ */
+
+
+
+
+/*! \defgroup grptoolchain Toolchains
+ *
+ * \brief Full toolchains performing content analysis and extraction.
+ *
+ * \ingroup grproutine
+ */
+
+/*! \defgroup grptoolchainpic Pictures
+ *
+ * \brief Full toolchains performing content analysis and extraction
+ * in pictures.
+ *
+ * \ingroup grptoolchain
+ */
+
+/*! \defgroup grptoolchaindoc Documents
+ *
+ * \brief Full toolchains performing content analysis and extraction
+ * in document images.
+ *
+ * \ingroup grptoolchain
+ */
+
+/*! \defgroup grptoolchainpicpreproc Preprocessing
+ *
+ * \brief Classical preprocessing toolchains for pictures.
+ *
+ * \ingroup grptoolchainpic
+ */
+
+/*! \defgroup grptoolchaindocpreproc Preprocessing
+ *
+ * \brief Classical preprocessing toolchains for document image.
+ *
+ * \ingroup grptoolchaindoc
+ */
+
+/*! \defgroup grptoolchainpicproc Processing
+ *
+ * \brief Classical processing toolchains for pictures.
+ *
+ * \ingroup grptoolchainpic
+ */
+
+/*! \defgroup grptoolchaindocproc Processing
+ *
+ * \brief Classical processing toolchains for document image.
+ *
+ * \ingroup grptoolchaindoc
*/
diff --git a/scribo/scribo/binarization/global_threshold.hh b/scribo/scribo/binarization/global_threshold.hh
index b90d6df..2633331 100644
--- a/scribo/scribo/binarization/global_threshold.hh
+++ b/scribo/scribo/binarization/global_threshold.hh
@@ -55,8 +55,8 @@ namespace scribo
///
/// output(p) = input(p) >= threshold
///
- /// \input[in] input A grayscale image.
- /// \input[in] threshold A value.
+ /// \param[in] input A grayscale image.
+ /// \param[in] threshold A value.
///
/// \return A boolean image.
//
diff --git a/scribo/scribo/binarization/internal/niblack_formula.hh b/scribo/scribo/binarization/internal/niblack_formula.hh
index 54dbc9b..81432ae 100644
--- a/scribo/scribo/binarization/internal/niblack_formula.hh
+++ b/scribo/scribo/binarization/internal/niblack_formula.hh
@@ -56,7 +56,7 @@ namespace scribo
\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
@@ -68,7 +68,8 @@ namespace scribo
const double K, const double R) const;
/*!
- \overload K = 0.34.
+ \overload
+ K is set to 0.34.
*/
double operator()(const double m_x_y, const double s_x_y) const;
diff --git a/scribo/scribo/binarization/internal/sauvola_formula.hh b/scribo/scribo/binarization/internal/sauvola_formula.hh
index adbef13..6eb49a0 100644
--- a/scribo/scribo/binarization/internal/sauvola_formula.hh
+++ b/scribo/scribo/binarization/internal/sauvola_formula.hh
@@ -62,7 +62,7 @@ namespace scribo
\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 Controls 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
@@ -74,7 +74,8 @@ namespace scribo
const double K, const double R) const;
/*!
- \overload K = 0.34 and R = 128.
+ \overload
+ K is set to 0.34 and R to 128.
*/
double operator()(const double m_x_y, const double s_x_y) const;
diff --git a/scribo/scribo/binarization/local_threshold.hh b/scribo/scribo/binarization/local_threshold.hh
index 9d116ed..8ac3276 100644
--- a/scribo/scribo/binarization/local_threshold.hh
+++ b/scribo/scribo/binarization/local_threshold.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -53,8 +53,8 @@ namespace scribo
///
/// \pre input.domain() == threshold.domain()
///
- /// \input[in] input A grayscale image.
- /// \input[in] threshold A grayscale image.
+ /// \param[in] input A grayscale image.
+ /// \param[in] threshold A grayscale image.
///
/// \return A boolean image.
//
diff --git a/scribo/scribo/binarization/niblack.hh b/scribo/scribo/binarization/niblack.hh
index e66e7b4..cc78808 100644
--- a/scribo/scribo/binarization/niblack.hh
+++ b/scribo/scribo/binarization/niblack.hh
@@ -55,12 +55,13 @@ 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 Niblack's formulae constant.
+ \param[in] input An image.
+ \param[in] window_size The window size.
+ \param[in] K Niblack's formulae constant.
\return A binary image.
+ \ingroup grpalgobinniblack
*/
template <typename I>
mln_ch_value(I, bool)
@@ -72,11 +73,12 @@ namespace scribo
Niblack'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 grpalgobinniblack
*/
template <typename I>
mln_ch_value(I, bool)
@@ -85,6 +87,7 @@ namespace scribo
/// \overload
/// The window size is set to 11.
+ /// \ingroup grpalgobinniblack
//
template <typename I>
mln_ch_value(I, bool)
diff --git a/scribo/scribo/binarization/niblack_threshold.hh b/scribo/scribo/binarization/niblack_threshold.hh
index db4a74e..d9829f4 100644
--- a/scribo/scribo/binarization/niblack_threshold.hh
+++ b/scribo/scribo/binarization/niblack_threshold.hh
@@ -56,14 +56,16 @@ namespace scribo
/*! \brief Compute an image of local threshold using Niblack algorithm.
- \input[in] input A gray level image.
- \input[in] window_size The window size.
- \input[out] simple The sum of all intensities of \p input.
- \input[out] squared The sum of all squared intensities of \p
+ \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.
+ \ingroup grpalgobinniblack
*/
template <typename I, typename J>
mln_ch_value(I, value::int_u8)
@@ -73,6 +75,8 @@ namespace scribo
Image<J>& squared);
/// \overload
+ /// \ingroup grpalgobinniblack
+ //
template <typename I>
mln_ch_value(I, value::int_u8)
niblack_threshold(const Image<I>& input, unsigned window_size,
@@ -80,6 +84,8 @@ namespace scribo
/// \overload
/// K is set to 0.34
+ /// \ingroup grpalgobinniblack
+ //
template <typename I>
mln_ch_value(I, value::int_u8)
niblack_threshold(const Image<I>& input, unsigned window_size);
@@ -87,6 +93,7 @@ namespace scribo
/// \overload
/// The window size is set to 11.
+ /// \ingroup grpalgobinniblack
//
template <typename I>
mln_ch_value(I, value::int_u8)
diff --git a/scribo/scribo/binarization/otsu.hh b/scribo/scribo/binarization/otsu.hh
index 6b9d492..2b8e97a 100644
--- a/scribo/scribo/binarization/otsu.hh
+++ b/scribo/scribo/binarization/otsu.hh
@@ -48,6 +48,8 @@ namespace scribo
\return A binary image. True for foreground, False for
background.
+
+ \ingroup grpalgobinotsu
*/
template <typename I>
mln_ch_value(I,bool)
diff --git a/scribo/scribo/binarization/otsu_threshold.hh b/scribo/scribo/binarization/otsu_threshold.hh
index ab663d0..7ba458f 100644
--- a/scribo/scribo/binarization/otsu_threshold.hh
+++ b/scribo/scribo/binarization/otsu_threshold.hh
@@ -49,6 +49,8 @@ namespace scribo
\param[in] input A gray-scale image.
\return A global threshold value.
+
+ \ingroup grpalgobinotsu
*/
template <typename I>
mln_value(I)
diff --git a/scribo/scribo/binarization/sauvola.hh b/scribo/scribo/binarization/sauvola.hh
index fc3e104..35757d6 100644
--- a/scribo/scribo/binarization/sauvola.hh
+++ b/scribo/scribo/binarization/sauvola.hh
@@ -56,12 +56,13 @@ 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 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 grpalgobinsauvola
*/
template <typename I>
mln_ch_value(I, bool)
@@ -71,22 +72,27 @@ namespace scribo
/*! \brief Convert an image into a binary image.
+ \overload
+
Sauvola'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 grpalgobinsauvola
*/
template <typename I>
mln_ch_value(I, bool)
sauvola(const Image<I>& input, unsigned window_size);
- /// \overload
- /// The window size is set to 11.
- //
+ /*! \overload
+ The window size is set to 11.
+
+ \ingroup grpalgobinsauvola
+ */
template <typename I>
mln_ch_value(I, bool)
sauvola(const Image<I>& input);
diff --git a/scribo/scribo/binarization/sauvola_ms.hh b/scribo/scribo/binarization/sauvola_ms.hh
index 36629f9..c06cea8 100644
--- a/scribo/scribo/binarization/sauvola_ms.hh
+++ b/scribo/scribo/binarization/sauvola_ms.hh
@@ -88,21 +88,23 @@ namespace scribo
\param[in] input_1 A grayscale or a color image.
\param[in] w_1 The window size used to compute stats.
\param[in] s The scale factor used for the first subscaling.
- \param[in] lambda_min_1 Size of the objects kept at scale 1.
\param[in] K Sauvola's formulae parameter.
-
- \p w_1 and \p lambda_min_1 are expressed according to the image
- at scale 0, i.e. the original size.
+ \p w_1 is expressed according to the image at scale 0, i.e. the
+ original size.
\return A Boolean image.
+
+ \ingroup grpalgobinsauvola
*/
template <typename I>
mln_ch_value(I,bool)
- sauvola_ms(const Image<I>& input_1_, unsigned w_1, unsigned s, double K);
+ sauvola_ms(const Image<I>& input_1, unsigned w_1, unsigned s, double K);
/// \overload
/// K is set to 0.34.
+ ///
+ /// \ingroup grpalgobinsauvola
//
template <typename I>
mln_ch_value(I,bool)
diff --git a/scribo/scribo/binarization/sauvola_ms_split.hh b/scribo/scribo/binarization/sauvola_ms_split.hh
index ac06a39..a3ab660 100644
--- a/scribo/scribo/binarization/sauvola_ms_split.hh
+++ b/scribo/scribo/binarization/sauvola_ms_split.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -66,6 +67,8 @@ namespace scribo
original size.
\return A Boolean image.
+
+ \ingroup grpalgobinsauvola
*/
template <typename I>
mln_ch_value(I, bool)
@@ -76,6 +79,8 @@ namespace scribo
/// \overload
/// K is 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/sauvola_threshold.hh b/scribo/scribo/binarization/sauvola_threshold.hh
index df46e95..41d70f7 100644
--- a/scribo/scribo/binarization/sauvola_threshold.hh
+++ b/scribo/scribo/binarization/sauvola_threshold.hh
@@ -56,14 +56,16 @@ namespace scribo
/*! \brief Compute an image of local threshold using Sauvola algorithm.
- \input[in] input A gray level image.
- \input[in] window_size The window size.
- \input[out] simple The sum of all intensities of \p input.
- \input[out] squared The sum of all squared intensities of \p
+ \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.
+ \ingroup grpalgobinsauvola
*/
template <typename I, typename J>
mln_ch_value(I, value::int_u8)
@@ -73,6 +75,7 @@ namespace scribo
Image<J>& squared);
/// \overload
+ /// \ingroup grpalgobinsauvola
template <typename I>
mln_ch_value(I, value::int_u8)
sauvola_threshold(const Image<I>& input, unsigned window_size,
@@ -80,6 +83,7 @@ namespace scribo
/// \overload
/// K is set to 0.34
+ /// \ingroup grpalgobinsauvola
template <typename I>
mln_ch_value(I, value::int_u8)
sauvola_threshold(const Image<I>& input, unsigned window_size);
@@ -87,6 +91,7 @@ namespace scribo
/// \overload
/// The window size is set to 11.
+ /// \ingroup grpalgobinsauvola
//
template <typename I>
mln_ch_value(I, value::int_u8)
diff --git a/scribo/scribo/core/erase_objects.hh b/scribo/scribo/core/erase_objects.hh
index 931024e..78fd293 100644
--- a/scribo/scribo/core/erase_objects.hh
+++ b/scribo/scribo/core/erase_objects.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -47,7 +47,7 @@ namespace scribo
/// Remove labeled components from a binary image.
///
- /// \param[in,out] input_ A binary image.
+ /// \param[in,out] input A binary image.
/// \param[in] comps A set of components to be erased.
///
//
diff --git a/scribo/scribo/debug/alignment_decision_image.hh b/scribo/scribo/debug/alignment_decision_image.hh
index 450091d..cc7937b 100644
--- a/scribo/scribo/debug/alignment_decision_image.hh
+++ b/scribo/scribo/debug/alignment_decision_image.hh
@@ -55,18 +55,21 @@ namespace scribo
/*! \brief Save a color image showing the difference between to
object links.
- \input[in] input An image. It's value type must be convertible
+ \param[in] input An image. It's value type must be convertible
towards rgb8.
- \input[in] links Object links information.
- \input[in] filtered_links A copy of \p links which have been
+ \param[in] links Object links information.
+ \param[in] filtered_links A copy of \p links which have been
filtered.
+ \param[in] anchor Anchor from where the links are drawn.
\return A color image. Non filtered links are drawn in
green. Others are drawn in red.
- */
+
+ \ingroup grpalgodebug
+ */
template <typename I, typename L>
mln_ch_value(I,value::rgb8)
- alignment_decision_image(const Image<I>& input_,
+ alignment_decision_image(const Image<I>& input,
const object_links<L>& links,
const object_links<L>& filtered_links,
const anchor::Type& anchor);
diff --git a/scribo/scribo/debug/bboxes_enlarged_image.hh b/scribo/scribo/debug/bboxes_enlarged_image.hh
index 24fea2f..01afd2c 100644
--- a/scribo/scribo/debug/bboxes_enlarged_image.hh
+++ b/scribo/scribo/debug/bboxes_enlarged_image.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -70,6 +71,8 @@ namespace scribo
/// a text line.
///
/// \return A color image.
+ ///
+ /// \ingroup grpalgodebug
//
template <typename I, typename L>
mln_ch_value(I,value::rgb8)
@@ -81,6 +84,9 @@ namespace scribo
/// \overload
/// text_value is set to literal::green.
/// non_text_value is set to literal::red.
+ ///
+ /// \ingroup grpalgodebug
+ //
template <typename I, typename L>
mln_ch_value(I,value::rgb8)
bboxes_enlarged_image(const Image<I>& input,
diff --git a/scribo/scribo/debug/bboxes_image.hh b/scribo/scribo/debug/bboxes_image.hh
index d3dc64b..1b2ee4f 100644
--- a/scribo/scribo/debug/bboxes_image.hh
+++ b/scribo/scribo/debug/bboxes_image.hh
@@ -51,14 +51,20 @@ namespace scribo
using namespace mln;
- /// Draw a list of bounding boxes
+ /// \brief Draw a list of bounding boxes
+ ///
+ /// \ingroup grpalgodebug
+ //
template <typename I>
mln_ch_value(I, value::rgb8)
bboxes_image(const Image<I>& input,
const mln::util::array< box<mln_site(I)> >& bboxes,
const value::rgb8& value);
-
+ /// \overload
+ ///
+ /// \ingroup grpalgodebug
+ //
template <typename I, typename L>
mln_ch_value(I, value::rgb8)
bboxes_image(const Image<I>& input,
@@ -67,6 +73,8 @@ namespace scribo
/// \overload
/// value is set to literal::red.
+ ///
+ /// \ingroup grpalgodebug
//
template <typename I, typename L>
inline
@@ -74,7 +82,10 @@ namespace scribo
bboxes_image(const Image<I>& input,
const line_set<L>& lines);
- /// \overload.
+ /// \overload
+ ///
+ /// \ingroup grpalgodebug
+ //
template <typename I, typename L>
inline
mln_ch_value(I, value::rgb8)
diff --git a/scribo/scribo/debug/char_space_image.hh b/scribo/scribo/debug/char_space_image.hh
index 53fc303..ffb2e82 100644
--- a/scribo/scribo/debug/char_space_image.hh
+++ b/scribo/scribo/debug/char_space_image.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -53,6 +54,8 @@ namespace scribo
/// \brief Draw inter character space.
+ ///
+ /// \ingroup grpalgodebug
//
template <typename I, typename L>
mln_ch_value(I,value::rgb8)
diff --git a/scribo/scribo/debug/decision_image.hh b/scribo/scribo/debug/decision_image.hh
index ff298e6..9857c66 100644
--- a/scribo/scribo/debug/decision_image.hh
+++ b/scribo/scribo/debug/decision_image.hh
@@ -56,19 +56,22 @@ namespace scribo
/*! \brief Save a color image showing the difference between to
object groups.
- \input[in] input An image. It's value type must be convertible
+ \param[in] input An image. It's value type must be convertible
towards rgb8.
- \input[in] groups Object groups information.
- \input[in] filtered_groups A copy of \p groups which have been
+ \param[in] groups Object groups information.
+ \param[in] filtered_groups A copy of \p groups which have been
filtered.
+ \param[in] anchor Anchor from where the links are drawn.
\return A color image. Components part of a validated group are
drawn in green with their bounding box. Otherwise,
they are drawn in red.
+
+ \ingroup grpalgodebug
*/
template <typename I, typename L>
mln_ch_value(I,value::rgb8)
- decision_image(const Image<I>& input_,
+ decision_image(const Image<I>& input,
const object_groups<L>& groups,
const object_groups<L>& filtered_groups,
anchor::Type anchor);
@@ -76,18 +79,21 @@ namespace scribo
/*! \brief Save a color image showing the difference between to
object links.
- \input[in] input An image. It's value type must be convertible
+ \param[in] input An image. It's value type must be convertible
towards rgb8.
- \input[in] links Object links information.
- \input[in] filtered_links A copy of \p links which have been
+ \param[in] links Object links information.
+ \param[in] filtered_links A copy of \p links which have been
filtered.
+ \param[in] anchor Anchor from where the links are drawn.
\return A color image. Non filtered links are drawn in
green. Others are drawn in red.
+
+ \ingroup grpalgodebug
*/
template <typename I, typename L>
mln_ch_value(I,value::rgb8)
- decision_image(const Image<I>& input_,
+ decision_image(const Image<I>& input,
const object_links<L>& links,
const object_links<L>& filtered_links,
anchor::Type anchor);
diff --git a/scribo/scribo/debug/highlight_text_area.hh b/scribo/scribo/debug/highlight_text_area.hh
index 5fc9329..2a7ed8a 100644
--- a/scribo/scribo/debug/highlight_text_area.hh
+++ b/scribo/scribo/debug/highlight_text_area.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -62,10 +63,11 @@ namespace scribo
\return a color image with highlighted text areas.
+ \ingroup grpalgodebug
*/
template <typename I>
mln_ch_value(I, value::rgb8)
- highlight_text_area(const Image<I>& input_,
+ highlight_text_area(const Image<I>& input,
const mln::util::array<box<mln_site(I)> >& bbox);
@@ -76,10 +78,11 @@ namespace scribo
\return a color image with highlighted text areas.
+ \ingroup grpalgodebug
*/
template <typename I, typename L>
mln_ch_value(I, value::rgb8)
- highlight_text_area(const Image<I>& input_,
+ highlight_text_area(const Image<I>& input,
const line_set<L>& lines);
/*! \brief Darken an image and highlight valid lines.
@@ -92,10 +95,11 @@ namespace scribo
\return a color image with highlighted text areas.
+ \ingroup grpalgodebug
*/
template <typename I, typename L>
mln_ch_value(I, value::rgb8)
- highlight_text_area(const Image<I>& input_,
+ highlight_text_area(const Image<I>& input,
const scribo::component_set<L>& components);
diff --git a/scribo/scribo/debug/line_info_image.hh b/scribo/scribo/debug/line_info_image.hh
index f3d7ddf..ff277ef 100644
--- a/scribo/scribo/debug/line_info_image.hh
+++ b/scribo/scribo/debug/line_info_image.hh
@@ -53,6 +53,10 @@ namespace scribo
using namespace mln;
+ /*! \brief Draw typographic information from lines.
+
+ \ingroup grpalgodebug
+ */
template <typename I, typename L>
mln_ch_value(I,value::rgb8)
line_info_image(const Image<I>& input, const line_set<L>& line);
diff --git a/scribo/scribo/debug/linked_bboxes_image.hh b/scribo/scribo/debug/linked_bboxes_image.hh
index 2373405..1b502b0 100644
--- a/scribo/scribo/debug/linked_bboxes_image.hh
+++ b/scribo/scribo/debug/linked_bboxes_image.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,7 @@
/// \file
///
-/// Compute the bounding box links image.
+/// \brief Compute the bounding box links image.
# include <mln/core/concept/image.hh>
# include <mln/core/concept/graph.hh>
@@ -59,10 +59,12 @@ namespace scribo
/// Compute the line of components links image.
///
/// \param[in,out] input The binary from where the components are extracted.
- /// \param[in] link_array Lines of components links.
+ /// \param[in] array Components links.
/// \param[in] box_value Value used to draw line bounding boxes.
/// \param[in] link_value Value used to draw line links.
/// \param[in] anchor Anchor from where the links are drawn.
+ ///
+ /// \ingroup grpalgodebug
//
template <typename I, typename L>
mln_ch_value(I,value::rgb8)
@@ -74,6 +76,8 @@ namespace scribo
/// \overload
/// The default anchor type is set to anchor::Center.
+ ///
+ /// \ingroup grpalgodebug
//
template <typename I, typename L>
mln_ch_value(I,value::rgb8)
@@ -85,10 +89,13 @@ namespace scribo
/// Compute the line of components left and right links image.
///
/// \param[in,out] input The binary from where the components are extracted.
- /// \param[in] left_link Lines of components left links.
- /// \param[in] right_link Lines of components right links.
+ /// \param[in] left_link Components left links.
+ /// \param[in] right_link Components right links.
/// \param[in] box_value Value used to draw line bounding boxes.
/// \param[in] link_value Value used to draw line links.
+ /// \param[in] anchor Anchor from where the links are drawn.
+ ///
+ /// \ingroup grpalgodebug
//
template <typename I, typename L>
mln_ch_value(I,value::rgb8)
@@ -103,12 +110,15 @@ namespace scribo
/// Draw also validated links.
///
/// \param[in,out] input The binary from where the components are extracted.
- /// \param[in] left_link Lines of components left links.
- /// \param[in] right_link Lines of components right links.
+ /// \param[in] left_link Components left links.
+ /// \param[in] right_link Components right links.
/// \param[in] box_value Value used to draw line bounding boxes.
/// \param[in] left_link_value Value used to draw line left links.
/// \param[in] right_link_value Value used to draw line left links.
/// \param[in] validated_link_value Value used to draw line validated links.
+ /// \param[in] anchor Anchor from where the links are drawn.
+ ///
+ /// \ingroup grpalgodebug
//
template <typename I, typename L>
inline
@@ -129,6 +139,9 @@ namespace scribo
/// \param[in] g The link graph.
/// \param[in] box_value Value used to draw line bounding boxes.
/// \param[in] link_value Value used to draw line links.
+ /// \param[in] anchor Anchor from where the links are drawn.
+ ///
+ /// \ingroup grpalgodebug
//
template <typename I, typename L, typename G>
mln_ch_value(I,value::rgb8)
diff --git a/scribo/scribo/debug/links_decision_image.hh b/scribo/scribo/debug/links_decision_image.hh
index 387cd7f..f62eca4 100644
--- a/scribo/scribo/debug/links_decision_image.hh
+++ b/scribo/scribo/debug/links_decision_image.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,7 @@
/// \file
///
-/// Save a color image showing the difference between to object groups.
+/// \brief Save a color image showing the difference between to object groups.
# include <mln/core/concept/image.hh>
# include <mln/data/convert.hh>
@@ -49,7 +49,11 @@ namespace scribo
using namespace mln;
- /// FIXME: DOC!
+ /*! \brief Save a color image showing the difference between to
+ object groups.
+
+ \ingroup grpalgodebug
+ */
template <typename I, typename L>
mln_ch_value(I,value::rgb8)
links_decision_image(const Image<I>& input_,
diff --git a/scribo/scribo/debug/links_image.hh b/scribo/scribo/debug/links_image.hh
index 47394be..ec747f6 100644
--- a/scribo/scribo/debug/links_image.hh
+++ b/scribo/scribo/debug/links_image.hh
@@ -28,7 +28,7 @@
/// \file
///
-/// Save a color image showing components links.
+/// \brief Save a color image showing components links.
# include <mln/core/concept/image.hh>
# include <mln/accu/center.hh>
@@ -50,7 +50,10 @@ namespace scribo
using namespace mln;
- /// FIXME: DOC!
+ /*! \brief Save a color image showing components links.
+
+ \ingroup grpalgodebug
+ */
template <typename I, typename L>
mln_ch_value(I,value::rgb8)
links_image(const Image<I>& input_,
diff --git a/scribo/scribo/debug/logger.hh b/scribo/scribo/debug/logger.hh
index f16dd89..ef5fd74 100644
--- a/scribo/scribo/debug/logger.hh
+++ b/scribo/scribo/debug/logger.hh
@@ -27,6 +27,10 @@
#ifndef SCRIBO_CORE_LOGGER_HH
# define SCRIBO_CORE_LOGGER_HH
+/// \file
+///
+/// \brief Logger class used to save debug images.
+
# include <mln/core/concept/image.hh>
# include <mln/data/wrap.hh>
# include <mln/value/int_u8.hh>
@@ -115,7 +119,10 @@ namespace scribo
} // end of namespace scribo::debug::internal
- // Return a reference to the logger.
+ /*! \brief Return a reference to the logger.
+
+ \ingroup grpalgodebug
+ */
scribo::debug::internal::logger_& logger();
diff --git a/scribo/scribo/debug/looks_like_a_text_line_image.hh b/scribo/scribo/debug/looks_like_a_text_line_image.hh
index 376baae..5bfe61e 100644
--- a/scribo/scribo/debug/looks_like_a_text_line_image.hh
+++ b/scribo/scribo/debug/looks_like_a_text_line_image.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -28,8 +29,8 @@
/// \file
///
-/// Compute an image where components are drawn differently whether
-/// they look like a line or not.
+/// \brief Compute an image where components are drawn differently
+/// whether they look like a line or not.
# include <mln/core/concept/image.hh>
@@ -64,6 +65,8 @@ namespace scribo
/// a text line.
///
/// \return A color image.
+ ///
+ /// \ingroup grpalgodebug
//
template <typename I, typename L>
mln_ch_value(I,value::rgb8)
@@ -75,6 +78,9 @@ namespace scribo
/// \overload
/// text_value is set to literal::green.
/// non_text_value is set to literal::red.
+ ///
+ /// \ingroup grpalgodebug
+ //
template <typename I, typename L>
mln_ch_value(I,value::rgb8)
looks_like_a_text_line_image(const Image<I>& input,
diff --git a/scribo/scribo/debug/mean_and_base_lines_image.hh b/scribo/scribo/debug/mean_and_base_lines_image.hh
index 56055c9..89ee198 100644
--- a/scribo/scribo/debug/mean_and_base_lines_image.hh
+++ b/scribo/scribo/debug/mean_and_base_lines_image.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -65,6 +66,8 @@ namespace scribo
/// \param[in] baseline_value Value used to draw base lines.
///
/// \return A color image.
+ ///
+ /// \ingroup grpalgodebug
//
template <typename I, typename L>
mln_ch_value(I,value::rgb8)
@@ -77,6 +80,9 @@ namespace scribo
/// \overload
/// text_value is set to literal::green.
/// non_text_value is set to literal::red.
+ ///
+ /// \ingroup grpalgodebug
+ //
template <typename I, typename L>
mln_ch_value(I,value::rgb8)
mean_and_base_lines_image(const Image<I>& input,
diff --git a/scribo/scribo/debug/save_comp_diff.hh b/scribo/scribo/debug/save_comp_diff.hh
index f1f93f0..6b2bc3b 100644
--- a/scribo/scribo/debug/save_comp_diff.hh
+++ b/scribo/scribo/debug/save_comp_diff.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -55,15 +55,16 @@ namespace scribo
/*! \brief Show the difference between two object images.
- \param[in] lbl A component set.
- \param[in] lbl_2 Another component set.
+ \param[in] comps_ref A component set.
+ \param[in] comps_new Another component set.
\param[in] filename The output filename.
+ \ingroup grpalgodebug
*/
template <typename L, typename L2>
void
- save_comp_diff(const component_set<L>& cset_1,
- const component_set<L2>& cset_2,
+ save_comp_diff(const component_set<L>& comps_ref,
+ const component_set<L2>& comps_new,
const std::string& filename);
@@ -72,22 +73,26 @@ namespace scribo
template <typename L, typename L2>
void
- save_comp_diff(const component_set<L>& cset_1,
- const component_set<L2>& cset_2,
+ save_comp_diff(const component_set<L>& comps_ref,
+ const component_set<L2>& comps_new,
const std::string& filename)
{
trace::entering("scribo::debug::save_comp_diff");
image2d<value::rgb8> output;
- initialize(output, cset_1.labeled_image());
+ initialize(output, comps_ref.labeled_image());
data::fill(output, literal::black);
- for_all_comps(i, cset_1)
- data::fill(((output | cset_1(i).bbox()).rw() | (pw::value(cset_1.labeled_image()) == i)).rw(), literal::red);
+ for_all_comps(i, comps_ref)
+ data::fill(((output | comps_ref(i).bbox()).rw()
+ | (pw::value(comps_ref.labeled_image()) == i)).rw(),
+ literal::red);
- for_all_comps(i, cset_2)
- data::fill(((output | cset_2(i).bbox()).rw() | (pw::value(cset_2.labeled_image()) == i)).rw(), literal::green);
+ for_all_comps(i, comps_new)
+ data::fill(((output | comps_new(i).bbox()).rw()
+ | (pw::value(comps_new.labeled_image()) == i)).rw(),
+ literal::green);
io::ppm::save(output, filename);
diff --git a/scribo/scribo/debug/save_label_image.hh b/scribo/scribo/debug/save_label_image.hh
index b41325e..af138d9 100644
--- a/scribo/scribo/debug/save_label_image.hh
+++ b/scribo/scribo/debug/save_label_image.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2009, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -28,7 +29,7 @@
/// \file
///
-/// Save a labeled image in a color image.
+/// \brief Save a labeled image in a color image.
# include <mln/core/concept/image.hh>
# include <mln/labeling/colorize.hh>
@@ -43,11 +44,13 @@ namespace scribo
using namespace mln;
- /// Save a labeled image in a color image.
+ /// \brief Save a labeled image in a color image.
///
/// \param[in] lbl A label image.
/// \param[in] nlabels The number of labels.
/// \param[in] filename The output file name.
+ ///
+ /// \ingroup grpalgodebug
//
template <typename I>
void
diff --git a/scribo/scribo/debug/save_table_image.hh b/scribo/scribo/debug/save_table_image.hh
index 746d162..8a5c01f 100644
--- a/scribo/scribo/debug/save_table_image.hh
+++ b/scribo/scribo/debug/save_table_image.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2009, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -28,7 +29,7 @@
/// \file
///
-/// Save table line bounding boxes in an image.
+/// \brief Save table line bounding boxes in an image.
# include <string>
@@ -53,6 +54,9 @@ namespace scribo
/// Save lines bounding boxes in a copy of \p input_.
/// Bounding boxes are displayed with \p bbox_color.
+ ///
+ /// \ingroup grpalgodebug
+ //
template <typename I>
void
save_table_image(const Image<I>& input_,
@@ -64,6 +68,9 @@ namespace scribo
/// Save lines bounding boxes in an image defined on \p input_domain
/// filled with \p bg_color.
/// Bounding boxes are displayed with \p bbox_color.
+ ///
+ /// \ingroup grpalgodebug
+ //
template <typename S>
void
save_table_image(const Site_Set<S>& input_domain,
diff --git a/scribo/scribo/debug/text_areas_image.hh b/scribo/scribo/debug/text_areas_image.hh
index 5b9f086..6aaa64f 100644
--- a/scribo/scribo/debug/text_areas_image.hh
+++ b/scribo/scribo/debug/text_areas_image.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -59,6 +60,7 @@ namespace scribo
/*! \brief Compute an image including detected text areas only.
+ \ingroup grpalgodebug
*/
template <typename I, typename L>
mln_concrete(I)
diff --git a/scribo/scribo/debug/text_color_image.hh b/scribo/scribo/debug/text_color_image.hh
index f8d76c8..182b71b 100644
--- a/scribo/scribo/debug/text_color_image.hh
+++ b/scribo/scribo/debug/text_color_image.hh
@@ -49,6 +49,10 @@ namespace scribo
{
using namespace mln;
+ /*! \brief Draw text components with their respective colors.
+
+ \ingroup grpalgodebug
+ */
template <typename L>
image2d<value::rgb8>
text_color_image(const document<L>& doc);
diff --git a/scribo/scribo/draw/bounding_box_links.hh b/scribo/scribo/draw/bounding_box_links.hh
index 830da25..2816d4e 100644
--- a/scribo/scribo/draw/bounding_box_links.hh
+++ b/scribo/scribo/draw/bounding_box_links.hh
@@ -50,18 +50,16 @@ namespace scribo
using namespace mln;
- /// Draw a list of bounding box links. Draw links from the bounding
- /// box centers.
+ /// \brief Draw a list of bounding box links.
///
- /// \param[in,out] input_ An image where to draw.
- /// \param[in] bboxes Bounding boxes.
- /// \param[in] links Bounding box links.
+ /// \param[in,out] input An image where to draw.
+ /// \param[in] link component links.
/// \param[in] value Value used to draw links.
/// \param[in] anchor Anchor from where the links are drawn.
//
template <typename I, typename L>
void
- bounding_box_links(Image<I>& input_,
+ bounding_box_links(Image<I>& input,
const object_links<L>& link,
const mln_value(I)& value,
anchor::Type anchor);
@@ -72,24 +70,26 @@ namespace scribo
//
template <typename I, typename L>
void
- bounding_box_links(Image<I>& input_,
+ bounding_box_links(Image<I>& input,
const object_links<L>& link,
const mln_value(I)& value);
- /// Draw left, right and validated lists of bounding box links.
- /// Draw from anchors.
+ /// \brief Draw left, right and validated lists of bounding box
+ /// links.
///
- /// \param[in,out] input_ An image where to draw.
- /// \param[in] left_link Bounding box left links.
- /// \param[in] right_link Bounding box right links.
+ /// \param[in,out] input An image where to draw.
+ /// \param[in] left_link Component's left links.
+ /// \param[in] right_link Component's right links.
/// \param[in] left_link_value Value used to draw left links.
/// \param[in] right_link_value Value used to draw right links.
/// \param[in] validated_link_value Value used to draw validated links.
+ /// \param[in] anchor Anchor from where the links are drawn.
+ //
template <typename I, typename L>
inline
void
- bounding_box_links(Image<I>& input_,
+ bounding_box_links(Image<I>& input,
const object_links<L>& left_link,
const object_links<L>& right_link,
const mln_value(I)& left_link_value,
@@ -98,18 +98,18 @@ namespace scribo
anchor::Type anchor);
- /// Draw a graph of bounding box links.
+ /// \brief Draw a graph of bounding box links.
/// Draw from bounding box centers.
///
- /// \param[in,out] input_ An image where to draw.
- /// \param[in] bboxes Bounding boxes.
- /// \param[in] g_ The link graph.
+ /// \param[in,out] input An image where to draw.
+ /// \param[in] g The link graph.
/// \param[in] link_value The value used to draw the links.
+ //
template <typename I, typename G>
inline
void
- bounding_box_links(Image<I>& input_,
- const Graph<G>& g_,
+ bounding_box_links(Image<I>& input,
+ const Graph<G>& g,
const mln_value(I)& link_value);
diff --git a/scribo/scribo/filter/images_in_paragraph.hh b/scribo/scribo/filter/images_in_paragraph.hh
index cf77892..9a88c51 100644
--- a/scribo/scribo/filter/images_in_paragraph.hh
+++ b/scribo/scribo/filter/images_in_paragraph.hh
@@ -28,7 +28,7 @@
/// \file
///
-/// Invalidate false positive separators.
+/// Invalidate false positive images.
/// \fixme Share same test canvas as text::merging.
@@ -47,16 +47,12 @@ namespace scribo
using namespace mln;
- /// Invalidate false positive separators.
+ /// Invalidate false positive images.
///
- /// \param[in] separators A paragraph set.
- ///
- /// \return A doc with invalidated separators.
- ///
- /// Warning: it does not remove separators from separator
- /// image. It only invalidate separator components in their
- /// respective component_set.
+ /// \param[in,out] doc A document structure.
///
+ /// \ingroup grpalgofilterelt
+ //
template <typename L>
void
images_in_paragraph(document<L>& doc);
diff --git a/scribo/scribo/filter/line_links_x_height.hh b/scribo/scribo/filter/line_links_x_height.hh
index 0fcc341..c3b2909 100644
--- a/scribo/scribo/filter/line_links_x_height.hh
+++ b/scribo/scribo/filter/line_links_x_height.hh
@@ -41,6 +41,15 @@ namespace scribo
namespace filter
{
+ /*! \brief Filter line links according to character x height.
+
+ \param[in] links Line links information.
+
+ \return A new line_links structure where some links may have
+ been invalidated.
+
+ \ingroup grpalgofilterlinelink
+ */
template <typename L>
line_links<L>
line_links_x_height(const line_links<L>& links);
diff --git a/scribo/scribo/filter/object_groups_mean_width.hh b/scribo/scribo/filter/object_groups_mean_width.hh
index b9c7b8a..2386517 100644
--- a/scribo/scribo/filter/object_groups_mean_width.hh
+++ b/scribo/scribo/filter/object_groups_mean_width.hh
@@ -55,6 +55,7 @@ namespace scribo
\return Filtered object group information.
+ \ingroup grpalgofiltercompgroup
*/
template <typename L>
object_groups<L>
diff --git a/scribo/scribo/filter/object_groups_size_ratio.hh b/scribo/scribo/filter/object_groups_size_ratio.hh
index 6f2e33e..2607c86 100644
--- a/scribo/scribo/filter/object_groups_size_ratio.hh
+++ b/scribo/scribo/filter/object_groups_size_ratio.hh
@@ -29,6 +29,7 @@
/// \file
///
+/// \brief Invalidates groups with too much thin and high components.
# include <mln/util/array.hh>
@@ -44,6 +45,21 @@ namespace scribo
using namespace mln;
+ /*! \brief Invalidates groups with too much thin and high
+ components.
+
+ For each components in the group, it computes the height/width
+ ratio. If it is higher or equal to \p max_size_ratio, the
+ component is counted as invalid.
+
+ If there are \p max_invalid_ratio_per_group invalid
+ components, the group is invalidated.
+
+ \return An object_group structure potentially with invalided
+ groups.
+
+ \ingroup grpalgofiltercompgroup
+ */
template <typename L>
object_groups<L>
object_groups_size_ratio(const object_groups<L>& groups,
diff --git a/scribo/scribo/filter/object_groups_small.hh b/scribo/scribo/filter/object_groups_small.hh
index dd92852..5a698cb 100644
--- a/scribo/scribo/filter/object_groups_small.hh
+++ b/scribo/scribo/filter/object_groups_small.hh
@@ -29,7 +29,7 @@
/// \file
///
-/// Remove small objects groups.
+/// \brief Invalidate groups with few components.
# include <mln/util/array.hh>
@@ -45,14 +45,15 @@ namespace scribo
using namespace mln;
- /*! \brief Remove objects within a group with less than \p n
- links.
+ /*! \brief Invalidate groups with few components.
\param[in] groups Information about object groups.
\param[in] n_links The minimum number of links per group.
\return A copy of object group in which small groups have been
- removed.
+ invalidated.
+
+ \ingroup grpalgofiltercompgroup
*/
template <typename L>
object_groups<L>
diff --git a/scribo/scribo/filter/object_groups_with_holes.hh b/scribo/scribo/filter/object_groups_with_holes.hh
index a59beec..ca55980 100644
--- a/scribo/scribo/filter/object_groups_with_holes.hh
+++ b/scribo/scribo/filter/object_groups_with_holes.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -69,8 +70,16 @@ namespace scribo
using namespace mln;
/*! \brief Remove groups not having at least two background
- * components of \p min_size pixels.
+ components of \p min_size pixels.
+ In order to verify the property of "having two background
+ components", a component group must have at least one
+ component with a hole.
+
+ Example: the letter 'o' has two background components: outside
+ and inside the letter.
+
+ \ingroup grpalgofiltercompgroup
*/
template <typename L>
inline
diff --git a/scribo/scribo/filter/object_links_aligned.hh b/scribo/scribo/filter/object_links_aligned.hh
index e37bcb6..6d76d95 100644
--- a/scribo/scribo/filter/object_links_aligned.hh
+++ b/scribo/scribo/filter/object_links_aligned.hh
@@ -28,7 +28,7 @@
/// \file
///
-/// Invalidate links between two components if their not aligned
+/// \brief Invalidate links between two components if their not aligned
/// according to an anchor.
# include <scribo/core/macros.hh>
@@ -44,7 +44,8 @@ namespace scribo
using namespace mln;
- /*! \brief Invalidate links between two components according to a specific anchor.
+ /*! \brief Invalidate links between two components according to a
+ specific anchor.
\param[in] links Object links information.
\param[in] max_alpha Maximum angle value (degrees).
@@ -74,6 +75,7 @@ namespace scribo
Example with an anchor set to the bottom right :
The angle between the two bottoms must be lower than \p max_alpha.
+ \ingroup grpalgofiltercomplink
*/
template <typename L>
object_links<L>
diff --git a/scribo/scribo/filter/object_links_bbox_h_ratio.hh b/scribo/scribo/filter/object_links_bbox_h_ratio.hh
index 5573f16..2c3256a 100644
--- a/scribo/scribo/filter/object_links_bbox_h_ratio.hh
+++ b/scribo/scribo/filter/object_links_bbox_h_ratio.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2009, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -28,7 +29,8 @@
/// \file
///
-/// Invalidate links between two objects with too different height.
+/// \brief Invalidate links between two objects with too different
+/// height.
///
/// \todo rename to object_links_bbox_v_ratio (v for vertical) to be
/// consistent with other routine names.
@@ -57,6 +59,8 @@ namespace scribo
bounding boxes.
\result A filtered object link information.
+
+ \ingroup grpalgofiltercomplink
*/
template <typename L>
object_links<L>
diff --git a/scribo/scribo/filter/object_links_bbox_overlap.hh b/scribo/scribo/filter/object_links_bbox_overlap.hh
index 29b71ba..d09839a 100644
--- a/scribo/scribo/filter/object_links_bbox_overlap.hh
+++ b/scribo/scribo/filter/object_links_bbox_overlap.hh
@@ -29,8 +29,8 @@
/// \file
///
-/// Invalidate links between two components having their bounding box
-/// overlapping too much.
+/// \brief Invalidate links between two components having their
+/// bounding box overlapping too much.
# include <mln/math/min.hh>
@@ -59,6 +59,8 @@ namespace scribo
areas.
\result A filtered object link information.
+
+ \ingroup grpalgofiltercomplink
*/
template <typename L>
object_links<L>
diff --git a/scribo/scribo/filter/object_links_bbox_ratio.hh b/scribo/scribo/filter/object_links_bbox_ratio.hh
index d6c9286..2a2afa1 100644
--- a/scribo/scribo/filter/object_links_bbox_ratio.hh
+++ b/scribo/scribo/filter/object_links_bbox_ratio.hh
@@ -29,8 +29,8 @@
/// \file
///
-/// Invalidate links between two objects with too different height or
-/// width.
+/// \brief Invalidate links between two objects with too different
+/// height or width.
# include <mln/util/array.hh>
@@ -56,6 +56,8 @@ namespace scribo
bounding boxes.
\result A filtered object link information.
+
+ \ingroup grpalgofiltercomplink
*/
template <typename L>
object_links<L>
diff --git a/scribo/scribo/filter/object_links_bbox_w_ratio.hh b/scribo/scribo/filter/object_links_bbox_w_ratio.hh
index 07adcee..7bcb3d3 100644
--- a/scribo/scribo/filter/object_links_bbox_w_ratio.hh
+++ b/scribo/scribo/filter/object_links_bbox_w_ratio.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,8 @@
/// \file
///
-/// Invalidate links between two objects with too different width.
+/// \brief Invalidate links between two objects with too different
+/// width.
///
/// \todo rename to object_links_bbox_h_ratio (h for horizontal) to be
/// consistent with other routine names.
@@ -57,6 +58,8 @@ namespace scribo
bounding boxes.
\result A filtered object link information.
+
+ \ingroup grpalgofiltercomplink
*/
template <typename L>
object_links<L>
diff --git a/scribo/scribo/filter/object_links_bottom_aligned.hh b/scribo/scribo/filter/object_links_bottom_aligned.hh
index 2329f37..353c2f6 100644
--- a/scribo/scribo/filter/object_links_bottom_aligned.hh
+++ b/scribo/scribo/filter/object_links_bottom_aligned.hh
@@ -29,8 +29,8 @@
/// \file
///
-/// Invalidate links between two components if their bottom are not
-/// aligned.
+/// \brief Invalidate links between two components if their bottom are
+/// not aligned.
# include <mln/util/array.hh>
@@ -77,6 +77,7 @@ namespace scribo
The angle between the two bottoms must be lower than \p max_alpha.
+ \ingroup grpalgofiltercomplink
*/
template <typename L>
object_links<L>
diff --git a/scribo/scribo/filter/object_links_center_aligned.hh b/scribo/scribo/filter/object_links_center_aligned.hh
index da18b00..adbfad8 100644
--- a/scribo/scribo/filter/object_links_center_aligned.hh
+++ b/scribo/scribo/filter/object_links_center_aligned.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2009, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -28,8 +29,8 @@
/// \file
///
-/// Invalidate links between two objects if their center are not
-/// aligned.
+/// \brief Invalidate links between two objects if their center are
+/// not aligned.
# include <mln/util/array.hh>
@@ -50,10 +51,11 @@ namespace scribo
/*! \brief Invalidate links between two objects if their center are not
aligned.
- \param[in] objects An object image.
\param[in] links Object links information.
\param[in] max_alpha Maximum angle value (degrees).
+ \return New link data.
+
\verbatim
------ ------
@@ -70,6 +72,7 @@ namespace scribo
The angle between the two bottoms must be lower than \p max_alpha.
+ \ingroup grpalgofiltercomplink
*/
template <typename L>
object_links<L>
diff --git a/scribo/scribo/filter/object_links_left_aligned.hh b/scribo/scribo/filter/object_links_left_aligned.hh
index 830678a..9a50a20 100644
--- a/scribo/scribo/filter/object_links_left_aligned.hh
+++ b/scribo/scribo/filter/object_links_left_aligned.hh
@@ -29,10 +29,10 @@
/// \file
///
-/// Invalidate links between two objects if their left are not
+/// \brief Invalidate links between two objects if their left are not
/// aligned.
///
-/// \fixme UPDATE DOC!
+/// \todo UPDATE DOC!
# include <mln/util/array.hh>
@@ -49,8 +49,8 @@ namespace scribo
using namespace mln;
- /*! \brief Invalidate links between two objects if their left are not
- aligned.
+ /*! \brief Invalidate links between two objects if their left are
+ not aligned.
\param[in] links Object links information.
\param[in] max_alpha Maximum angle value (degrees).
@@ -77,6 +77,8 @@ namespace scribo
\endverbatim
The angle between the two lefts must be lower than \p max_alpha.
+
+ \ingroup grpalgofiltercomplink
*/
template <typename L>
object_links<L>
diff --git a/scribo/scribo/filter/object_links_non_aligned_simple.hh b/scribo/scribo/filter/object_links_non_aligned_simple.hh
index f8db5cf..77c5b1c 100644
--- a/scribo/scribo/filter/object_links_non_aligned_simple.hh
+++ b/scribo/scribo/filter/object_links_non_aligned_simple.hh
@@ -29,7 +29,7 @@
/// \file
///
-/// Invalidate links between two non aligned components.
+/// \brief Invalidate links between two non aligned components.
# include <mln/util/array.hh>
@@ -52,6 +52,7 @@ namespace scribo
Alignment is based on a given anchor of object bounding boxes.
\param[in] links Object links information.
+ \param[in] anchor Anchor from where the links are made.
\param[in] max_alpha Maximum angle value (degrees).
@@ -79,6 +80,7 @@ namespace scribo
The angle between the two bottoms must be lower than \p alpha.
+ \ingroup grpalgofiltercomplink
*/
template <typename L>
object_links<L>
diff --git a/scribo/scribo/filter/object_links_right_aligned.hh b/scribo/scribo/filter/object_links_right_aligned.hh
index 4f854e2..018cf97 100644
--- a/scribo/scribo/filter/object_links_right_aligned.hh
+++ b/scribo/scribo/filter/object_links_right_aligned.hh
@@ -29,7 +29,7 @@
/// \file
///
-/// Invalidate links between two objects if their right are not
+/// \brief Invalidate links between two objects if their right are not
/// aligned.
@@ -51,7 +51,6 @@ namespace scribo
/*! \brief Invalidate links between two objects if their right are not
aligned.
- \param[in] objects An object image.
\param[in] links Object links information.
\param[in] max_alpha Maximum angle value (degrees).
@@ -77,6 +76,8 @@ namespace scribo
\endverbatim
The angle between the two rights must be lower than \p max_alpha.
+
+ \ingroup grpalgofiltercomplink
*/
template <typename L>
object_links<L>
diff --git a/scribo/scribo/filter/object_links_top_aligned.hh b/scribo/scribo/filter/object_links_top_aligned.hh
index 48598c6..6489ea4 100644
--- a/scribo/scribo/filter/object_links_top_aligned.hh
+++ b/scribo/scribo/filter/object_links_top_aligned.hh
@@ -29,7 +29,7 @@
/// \file
///
-/// Invalidate links between two objects if their top are not
+/// \brief Invalidate links between two objects if their top are not
/// aligned.
@@ -48,8 +48,8 @@ namespace scribo
using namespace mln;
- /*! \brief Invalidate links between two objects if their top are not
- aligned.
+ /*! \brief Invalidate links between two objects if their top are
+ not aligned.
\param[in] links Object links information.
\param[in] max_alpha Maximum angle value (degrees).
@@ -77,6 +77,8 @@ namespace scribo
\endverbatim
The angle between the two tops must be lower than \p max_alpha.
+
+ \ingroup grpalgofiltercomplink
*/
template <typename L>
object_links<L>
diff --git a/scribo/scribo/filter/objects_h_thick.hh b/scribo/scribo/filter/objects_h_thick.hh
index 06b75dc..7dc7fa5 100644
--- a/scribo/scribo/filter/objects_h_thick.hh
+++ b/scribo/scribo/filter/objects_h_thick.hh
@@ -54,6 +54,8 @@ namespace scribo
/// \param[in] max_thickness The maximum thickness value.
///
/// \result A binary image without thick objects.
+ ///
+ /// \ingroup grpalgofiltercomp
//
template <typename I, typename N, typename V>
inline
@@ -70,6 +72,8 @@ namespace scribo
/// \param[in] max_thickness The minimum thickness value.
///
/// \result A component data set without too thick components.
+ ///
+ /// \ingroup grpalgofiltercomp
//
template <typename L>
inline
diff --git a/scribo/scribo/filter/objects_h_thin.hh b/scribo/scribo/filter/objects_h_thin.hh
index 8caa2cc..7b1d18a 100644
--- a/scribo/scribo/filter/objects_h_thin.hh
+++ b/scribo/scribo/filter/objects_h_thin.hh
@@ -53,6 +53,8 @@ namespace scribo
/// \param[in] min_thinness the minimum thinness value.
///
/// \result A binary image without h_thin components.
+ ///
+ /// \ingroup grpalgofiltercomp
//
template <typename I, typename N, typename V>
inline
@@ -68,6 +70,8 @@ namespace scribo
/// \param[in] min_thinness the minimum thinness value.
///
/// \result An object image without too thin vertical components.
+ ///
+ /// \ingroup grpalgofiltercomp
//
template <typename L>
inline
diff --git a/scribo/scribo/filter/objects_large.hh b/scribo/scribo/filter/objects_large.hh
index 8dfec9d..96d1817 100644
--- a/scribo/scribo/filter/objects_large.hh
+++ b/scribo/scribo/filter/objects_large.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,7 @@
/// \file
///
-/// Remove large objects in a binary image.
+/// \brief Remove large objects in a binary image.
# include <mln/core/concept/image.hh>
@@ -56,7 +56,8 @@ namespace scribo
using namespace mln;
- /// Remove large objects in a binary image.
+ /// \brief Remove large objects in a binary image.
+ ///
/// Set to 'false' all the removed objects.
///
/// \param[in] input_ A binary image.
@@ -65,6 +66,9 @@ namespace scribo
/// \param[in] max_size The minimum cardinality of an object.
///
/// \return A binary image without large objects.
+ ///
+ /// \ingroup grpalgofiltercomp
+ //
template <typename I, typename N, typename V>
mln_concrete(I)
components_large(const Image<I>& input_,
@@ -72,13 +76,16 @@ namespace scribo
const V& label_type,
unsigned max_size);
- /// Remove too large components.
+ /// \brief Remove too large components.
///
/// \param[in] components An object image.
/// \param[in] max_size The maximum cardinality of an object.
///
/// \return A component set with large components set to
/// component::Ignored.
+ ///
+ /// \ingroup grpalgofiltercomp
+ //
template <typename L>
inline
component_set<L>
diff --git a/scribo/scribo/filter/objects_on_border.hh b/scribo/scribo/filter/objects_on_border.hh
index d6c4cf5..55578a4 100644
--- a/scribo/scribo/filter/objects_on_border.hh
+++ b/scribo/scribo/filter/objects_on_border.hh
@@ -28,7 +28,7 @@
/// \file
///
-/// Remove large objects in a binary image.
+/// \brief Remove components located on image borders.
# include <mln/core/concept/image.hh>
@@ -55,13 +55,15 @@ namespace scribo
using namespace mln;
- /// Remove too large components.
+ /// \brief Remove components located on image borders.
///
/// \param[in] components An object image.
- /// \param[in] max_size The maximum cardinality of an object.
///
/// \return A component set with large components set to
/// component::Ignored.
+ ///
+ /// \ingroup grpalgofiltercomp
+ //
template <typename L>
inline
component_set<L>
diff --git a/scribo/scribo/filter/objects_size_ratio.hh b/scribo/scribo/filter/objects_size_ratio.hh
index 6edb35f..9efa8bf 100644
--- a/scribo/scribo/filter/objects_size_ratio.hh
+++ b/scribo/scribo/filter/objects_size_ratio.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -50,6 +50,8 @@ namespace scribo
///
/// If the height/width ratio is lower than min_size_ratio then
/// the component is invalidated.
+ ///
+ /// \ingroup grpalgofiltercomp
//
template <typename L>
component_set<L>
diff --git a/scribo/scribo/filter/objects_small.hh b/scribo/scribo/filter/objects_small.hh
index c18c86f..921aea2 100644
--- a/scribo/scribo/filter/objects_small.hh
+++ b/scribo/scribo/filter/objects_small.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,7 @@
/// \file
///
-/// Remove small components in a binary image.
+/// \brief Remove small components in a binary image.
# include <mln/core/concept/image.hh>
@@ -57,7 +57,8 @@ namespace scribo
using namespace mln;
- /// Remove small components in a binary image.
+ /// \brief Remove small components in a binary image.
+ ///
/// Set to 'false' all the removed components.
///
/// \param[in] input_ A binary image.
@@ -66,6 +67,9 @@ namespace scribo
/// \param[in] min_size The minimum cardinality of an object.
///
/// \return A binary image without small components.
+ ///
+ /// \ingroup grpalgofiltercomp
+ //
template <typename I, typename N, typename V>
mln_concrete(I)
components_small(const Image<I>& input_,
@@ -74,13 +78,16 @@ namespace scribo
unsigned min_size);
- /// Remove too small components.
+ /// \brief Remove too small components.
///
/// \param[in] components An object image.
/// \param[in] min_size The minimum cardinality of an object.
///
/// \return A component set with small components set to
/// component::Ignored.
+ ///
+ /// \ingroup grpalgofiltercomp
+ //
template <typename L>
component_set<L>
components_small(const component_set<L>& components,
diff --git a/scribo/scribo/filter/objects_thick.hh b/scribo/scribo/filter/objects_thick.hh
index faf13e7..8c3a03b 100644
--- a/scribo/scribo/filter/objects_thick.hh
+++ b/scribo/scribo/filter/objects_thick.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,7 @@
/// \file
///
-/// Remove too thick components.
+/// \brief Remove too thick components.
# include <mln/core/concept/image.hh>
# include <mln/core/concept/neighborhood.hh>
@@ -49,7 +49,7 @@ namespace scribo
using namespace mln;
- /// Remove components thicker or equal to \p max_thickness.
+ /// \brief Remove components thicker or equal to \p max_thickness.
///
/// \param[in] input_ A binary image.
/// \param[in] nbh_ A neighborhood used in labeling algorithms.
@@ -57,6 +57,8 @@ namespace scribo
/// \param[in] max_thickness The maximum thickness value.
///
/// \result A binary image without thick components.
+ ///
+ /// \ingroup grpalgofiltercomp
//
template <typename I, typename N, typename V>
inline
@@ -67,12 +69,14 @@ namespace scribo
unsigned max_thickness);
- /// Remove components thicker or equal to \p max_thickness.
+ /// \brief Remove components thicker or equal to \p max_thickness.
///
/// \param[in] components An object image.
/// \param[in] max_thickness The maximum thickness value.
///
/// \result An object image without too thick components.
+ ///
+ /// \ingroup grpalgofiltercomp
//
template <typename L>
inline
diff --git a/scribo/scribo/filter/objects_thin.hh b/scribo/scribo/filter/objects_thin.hh
index f58d0db..d376856 100644
--- a/scribo/scribo/filter/objects_thin.hh
+++ b/scribo/scribo/filter/objects_thin.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,7 @@
/// \file
///
-/// Remove too thin components.
+/// \brief Remove too thin components.
# include <mln/core/concept/image.hh>
# include <mln/core/concept/neighborhood.hh>
@@ -52,7 +52,7 @@ namespace scribo
using namespace mln;
- /// Remove components thinner or equal to \p min_thickness.
+ /// \brief Remove components thinner or equal to \p min_thickness.
///
/// \param[in] input_ a binary image.
/// \param[in] nbh_ a neighborhood used in labeling algorithms.
@@ -60,6 +60,8 @@ namespace scribo
/// \param[in] min_thickness the minimum thickness value.
///
/// \result A binary image without thin components.
+ ///
+ /// \ingroup grpalgofiltercomp
//
template <typename I, typename N, typename V>
inline
@@ -69,12 +71,15 @@ namespace scribo
const V& label_type,
unsigned min_thickness);
- /// Remove lines of text thinner or equal to \p min_thickness.
+ /// \brief Remove lines of text thinner or equal to \p
+ /// min_thickness.
///
/// \param[in] components An object image.
/// \param[in] min_thickness the minimum thickness value.
///
/// \result An object image without too thin components.
+ ///
+ /// \ingroup grpalgofiltercomp
//
template <typename L>
inline
diff --git a/scribo/scribo/filter/objects_v_thick.hh b/scribo/scribo/filter/objects_v_thick.hh
index ad1a4df..e9e85a1 100644
--- a/scribo/scribo/filter/objects_v_thick.hh
+++ b/scribo/scribo/filter/objects_v_thick.hh
@@ -29,7 +29,7 @@
/// \file
///
-/// Remove too verticaly thick components.
+/// \brief Remove too verticaly thick components.
# include <mln/core/concept/image.hh>
# include <mln/core/concept/neighborhood.hh>
@@ -46,7 +46,8 @@ namespace scribo
using namespace mln;
- /// Remove components verticaly thicker or equal to \p max_thickness.
+ /// \brief Remove components verticaly thicker or equal to \p
+ /// max_thickness.
///
/// \param[in] input_ A binary image.
/// \param[in] nbh_ A neighborhood used in labeling algorithms.
@@ -54,6 +55,8 @@ namespace scribo
/// \param[in] max_thickness The maximum thickness value.
///
/// \result A binary image without thick components.
+ ///
+ /// \ingroup grpalgofiltercomp
//
template <typename I, typename N, typename V>
inline
@@ -64,12 +67,15 @@ namespace scribo
unsigned max_thickness);
- /// Remove components verticaly thicker or equal to \p max_thickness.
+ /// \brief Remove components verticaly thicker or equal to \p
+ /// max_thickness.
///
/// \param[in] comps A component set.
/// \param[in] max_thickness The maximum thickness value.
///
/// \result An object image without too thick components.
+ ///
+ /// \ingroup grpalgofiltercomp
//
template <typename L>
inline
diff --git a/scribo/scribo/filter/objects_v_thin.hh b/scribo/scribo/filter/objects_v_thin.hh
index f2280eb..c5364b3 100644
--- a/scribo/scribo/filter/objects_v_thin.hh
+++ b/scribo/scribo/filter/objects_v_thin.hh
@@ -29,7 +29,7 @@
/// \file
///
-/// Remove too thin components.
+/// \brief Remove too thin components.
# include <mln/core/concept/image.hh>
# include <mln/core/concept/neighborhood.hh>
@@ -46,34 +46,39 @@ namespace scribo
using namespace mln;
- /// Remove components thinner or equal to \p min_thinness.
+ /// \brief Remove components thinner or equal to \p min_thinness.
///
- /// \param[in] input_ a binary image.
- /// \param[in] nbh_ a neighborhood used in labeling algorithms.
+ /// \param[in] input a binary image.
+ /// \param[in] nbh a neighborhood used in labeling algorithms.
/// \param[in] label_type the label type used for labeling.
/// \param[in] min_thinness the minimum thinness value.
///
/// \result A binary image without v_thin components.
+ ///
+ /// \ingroup grpalgofiltercomp
//
template <typename I, typename N, typename V>
inline
mln_concrete(I)
- objects_v_thin(const Image<I>& input_,
- const Neighborhood<N>& nbh_,
+ objects_v_thin(const Image<I>& input,
+ const Neighborhood<N>& nbh,
const V& label_type,
unsigned min_thinness);
- /// Remove lines of text thinner or equal to \p min_thinness.
+ /// \brief Remove lines of text thinner or equal to \p
+ /// min_thinness.
///
/// \param[in] comps A component set.
/// \param[in] min_thinness the minimum thinness value.
///
/// \result An object image without too thin vertical components.
+ ///
+ /// \ingroup grpalgofiltercomp
//
template <typename L>
inline
component_set<L>
- components_v_thin(const component_set<L>& text,
+ components_v_thin(const component_set<L>& comps,
unsigned min_thinness);
diff --git a/scribo/scribo/filter/objects_with_holes.hh b/scribo/scribo/filter/objects_with_holes.hh
index 09eaad5..83b9755 100644
--- a/scribo/scribo/filter/objects_with_holes.hh
+++ b/scribo/scribo/filter/objects_with_holes.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -81,8 +81,17 @@ namespace scribo
/*! \brief Remove components having a minimum number of holes.
+ \param[in] components A component set.
+ \param[in] min_holes_count If a component have at least \p
+ min_holes_count holes it is
+ invalidated.
+ \param[in] min_size The minimum hole area to take a hole into
+ account.
+ \return A component where the component having too much holes
+ are invalidated.
+ \ingroup grpalgofiltercomp
*/
template <typename L>
component_set<L>
@@ -90,7 +99,20 @@ namespace scribo
unsigned min_holes_count,
unsigned min_size);
+ /*! \brief Remove components having at least two holes.
+ This is a fastest version since it is optimized for 2 holes
+ detection.
+
+ \param[in] components A component set.
+ \param[in] min_size The minimum hole area to take a hole into
+ account.
+
+ \return A component where the component having at least two
+ holes are invalidated.
+
+ \ingroup grpalgofiltercomp
+ */
template <typename L>
inline
component_set<L>
diff --git a/scribo/scribo/filter/paragraphs_bbox_overlap.hh b/scribo/scribo/filter/paragraphs_bbox_overlap.hh
index 1cf9793..744b1ee 100644
--- a/scribo/scribo/filter/paragraphs_bbox_overlap.hh
+++ b/scribo/scribo/filter/paragraphs_bbox_overlap.hh
@@ -28,8 +28,8 @@
/// \file
///
-/// Remove invalid paragraphs.
-/// \fixme Share same test canvas as text::merging.
+/// \brief Remove invalid paragraphs.
+/// \todo Share same test canvas as text::merging.
# include <mln/core/concept/image.hh>
@@ -52,12 +52,15 @@ namespace scribo
using namespace mln;
- /// Remove invalid paragraphs.
+ /// \brief Remove invalid paragraphs.
///
- /// \param[in] paragraphs A paragraph set.
+ /// \param[in] parset A paragraph set.
///
/// \return A paragraph set with invalid paragraphs tag set to
/// Paragraph::Ignored.
+ ///
+ /// \ingroup grpalgofilterpar
+ //
template <typename L>
paragraph_set<L>
paragraphs_bbox_overlap(const paragraph_set<L>& parset);
diff --git a/scribo/scribo/filter/paragraphs_in_borders.hh b/scribo/scribo/filter/paragraphs_in_borders.hh
index 8953282..c3b9623 100644
--- a/scribo/scribo/filter/paragraphs_in_borders.hh
+++ b/scribo/scribo/filter/paragraphs_in_borders.hh
@@ -28,8 +28,8 @@
/// \file
///
-/// Invalidate false positive paragraphs.
-/// \fixme Share same test canvas as text::merging.
+/// \brief Invalidate false positive paragraphs.
+/// \todo Share same test canvas as text::merging.
# include <mln/core/concept/image.hh>
@@ -46,7 +46,7 @@ namespace scribo
using namespace mln;
- /// Invalidate paragraphs located close to the image borders.
+ /// \brief Invalidate paragraphs located close to the image borders.
///
/// \param[in,out] doc A document structure.
///
@@ -66,6 +66,8 @@ namespace scribo
/// -----------
///
/// \endverbatim
+ ///
+ /// \ingroup grpalgofilterpar
//
template <typename L>
void
diff --git a/scribo/scribo/filter/paragraphs_in_image.hh b/scribo/scribo/filter/paragraphs_in_image.hh
index be15b06..d95864d 100644
--- a/scribo/scribo/filter/paragraphs_in_image.hh
+++ b/scribo/scribo/filter/paragraphs_in_image.hh
@@ -28,8 +28,8 @@
/// \file
///
-/// Remove invalid paragraphs.
-/// \fixme Share same test canvas as text::merging.
+/// \brief Remove invalid paragraphs.
+/// \todo Share same test canvas as text::merging.
# include <mln/core/concept/image.hh>
@@ -59,12 +59,15 @@ namespace scribo
using namespace mln;
- /// Remove invalid paragraphs.
+ /// \brief Remove invalid paragraphs.
///
- /// \param[in] paragraphs A paragraph set.
+ /// \param[in,out] doc A document structure.
///
/// \return A paragraph set with invalid paragraphs tag set to
/// Paragraph::Ignored.
+ ///
+ /// \ingroup grpalgofilterpar
+ //
template <typename L>
void
paragraphs_in_image(document<L>& doc);
diff --git a/scribo/scribo/filter/separators_in_borders.hh b/scribo/scribo/filter/separators_in_borders.hh
index 8ccb6b1..f5048d2 100644
--- a/scribo/scribo/filter/separators_in_borders.hh
+++ b/scribo/scribo/filter/separators_in_borders.hh
@@ -28,8 +28,8 @@
/// \file
///
-/// Invalidate false positive separators.
-/// \fixme Share same test canvas as text::merging.
+/// \brief Invalidate false positive separators.
+/// \todo Share same test canvas as text::merging.
# include <mln/core/concept/image.hh>
@@ -46,9 +46,16 @@ namespace scribo
using namespace mln;
- /// Invalidate separators located close to the image borders.
+ /// \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
@@ -66,6 +73,8 @@ namespace scribo
/// -----------
///
/// \endverbatim
+ ///
+ /// \ingroup grpalgofilterelt
//
template <typename L>
void
diff --git a/scribo/scribo/filter/separators_in_element.hh b/scribo/scribo/filter/separators_in_element.hh
index 7e8a437..d4f587b 100644
--- a/scribo/scribo/filter/separators_in_element.hh
+++ b/scribo/scribo/filter/separators_in_element.hh
@@ -28,8 +28,8 @@
/// \file
///
-/// Invalidate false positive separators.
-/// \fixme Share same test canvas as text::merging.
+/// \brief Invalidate false positive separators.
+/// \todo Share same test canvas as text::merging.
# include <mln/core/concept/image.hh>
@@ -47,16 +47,16 @@ namespace scribo
using namespace mln;
- /// Invalidate false positive separators.
+ /// \brief Invalidate false positive separators.
///
- /// \param[in] separators A paragraph set.
- ///
- /// \return A doc with invalidated separators.
+ /// \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.
///
+ /// \ingroup grpalgofilterelt
+ //
template <typename L>
void
separators_in_element(document<L>& doc);
diff --git a/scribo/scribo/filter/separators_in_paragraph.hh b/scribo/scribo/filter/separators_in_paragraph.hh
index ac399c3..eae12e9 100644
--- a/scribo/scribo/filter/separators_in_paragraph.hh
+++ b/scribo/scribo/filter/separators_in_paragraph.hh
@@ -28,8 +28,8 @@
/// \file
///
-/// Invalidate false positive separators.
-/// \fixme Share same test canvas as text::merging.
+/// \brief Invalidate false positive separators.
+/// \todo Share same test canvas as text::merging.
# include <mln/core/concept/image.hh>
@@ -47,26 +47,32 @@ namespace scribo
using namespace mln;
- /// Invalidate false positive separators.
+ /// \brief Invalidate false positive separators.
///
- /// \param[in] separators A paragraph set.
- ///
- /// \return A doc with invalidated separators.
+ /// \param[in,out] doc A document structure.
+ /// \param[in] hmin_size Minimum width of a line to be considered
+ /// as separators.
+ /// \param[in] vmin_size Minimum height of a line to be considered
+ /// as separators.
///
/// Warning: it does not remove separators from separator
/// image. It only invalidate separator components in their
/// respective component_set.
///
+ /// \ingroup grpalgofilterelt
+ //
template <typename L>
void
- separators_in_paragraph(document<L>& doc, unsigned hmax_size, unsigned vmax_size);
+ separators_in_paragraph(document<L>& doc,
+ unsigned hmin_size, unsigned vmin_size);
# ifndef MLN_INCLUDE_ONLY
template <typename L>
void
- separators_in_paragraph(document<L>& doc, unsigned hmax_size, unsigned vmax_size)
+ separators_in_paragraph(document<L>& doc,
+ unsigned hmin_size, unsigned vmin_size)
{
trace::entering("scribo::filter::separators_in_paragraph");
@@ -106,7 +112,7 @@ namespace scribo
// This separator is included in an element (picture, drawing...)
// => Ignore it.
if (tl && tr && ml && mc && mr && bl && br
- && hline(c).bbox().width() < hmax_size)
+ && hline(c).bbox().width() < hmin_size)
hline(c).update_tag(component::Ignored);
}
@@ -135,7 +141,7 @@ namespace scribo
// This separator is included in an element (picture, drawing...)
// => Ignore it.
if (tl && tr && ml && mc && mr && bl && br
- && vline(c).bbox().height() < vmax_size)
+ && vline(c).bbox().height() < vmin_size)
vline(c).update_tag(component::Ignored);
}
diff --git a/scribo/scribo/filter/separators_vert_in_borders.hh b/scribo/scribo/filter/separators_vert_in_borders.hh
index 4a9e806..4f7c070 100644
--- a/scribo/scribo/filter/separators_vert_in_borders.hh
+++ b/scribo/scribo/filter/separators_vert_in_borders.hh
@@ -28,8 +28,9 @@
/// \file
///
-/// Invalidate false positive separators.
-/// \fixme Share same test canvas as text::merging.
+/// \brief Invalidate vertical separators located close to the image
+/// borders.
+/// \todo Share same test canvas as text::merging.
# include <mln/core/concept/image.hh>
@@ -47,7 +48,8 @@ namespace scribo
using namespace mln;
- /// Invalidate separators located close to the image borders.
+ /// \brief Invalidate vertical separators located close to the image
+ /// borders.
///
/// \param[in,out] doc A document structure.
///
@@ -67,6 +69,8 @@ namespace scribo
/// -----------
///
/// \endverbatim
+ ///
+ /// \ingroup grpalgofilterelt
//
template <typename L>
void
diff --git a/scribo/scribo/fun/v2b/objects_on_border_filter.hh b/scribo/scribo/fun/v2b/objects_on_border_filter.hh
index e6f1738..60655ae 100644
--- a/scribo/scribo/fun/v2b/objects_on_border_filter.hh
+++ b/scribo/scribo/fun/v2b/objects_on_border_filter.hh
@@ -28,7 +28,7 @@
/// \file
///
-/// Remove large components in a binary image.
+/// \brief Remove components in image inner border.
@@ -66,14 +66,13 @@ namespace scribo
/// Constructor
///
/// \param[in] components Component bounding boxes.
- /// \param[in] max_size Maximum component size.
//
components_on_border_filter(const component_set<L>& components);
/// Check if the component is large enough.
///
- /// \param l A label.
+ /// \param[in] l A label.
///
/// \return false if the component area is strictly inferion to
/// \p max_size_.
diff --git a/scribo/scribo/postprocessing/images_to_drop_capital.hh b/scribo/scribo/postprocessing/images_to_drop_capital.hh
index f7d18a6..727f23c 100644
--- a/scribo/scribo/postprocessing/images_to_drop_capital.hh
+++ b/scribo/scribo/postprocessing/images_to_drop_capital.hh
@@ -28,8 +28,8 @@
/// \file
///
-/// Set type for specific images to Drop Capital component.
-/// \fixme Share same test canvas as text::merging.
+/// \brief Set type for specific images to Drop Capital component.
+/// \todo Share same test canvas as text::merging.
# include <mln/core/concept/image.hh>
@@ -47,12 +47,10 @@ namespace scribo
using namespace mln;
- /// Set type for specific images to Drop Capital component.
+ /// \brief Set type for specific images to Drop Capital component.
///
- /// \param[in] separators A paragraph set.
+ /// \param[in] doc A document structure.
///
- /// \return A doc with images tagged as dropped capital is such
- /// images have been found.
//
template <typename L>
void
diff --git a/scribo/scribo/preprocessing/denoise.hh b/scribo/scribo/preprocessing/denoise.hh
index 1877c06..115ac1d 100644
--- a/scribo/scribo/preprocessing/denoise.hh
+++ b/scribo/scribo/preprocessing/denoise.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -48,10 +49,12 @@ namespace scribo
/// \param[in] input A binary image. True for objects, False for
/// background.
/// \param[in] nbh Neighborhood to use for denoising.
- /// \param[in] min_card Minimum component cardinality to not be
- /// considered as noise.
+ /// \param[in] fg_min_card Minimum component cardinality to not be
+ /// considered as noise in the foreground.
+ /// \param[in] bg_min_card Minimum component cardinality to not be
+ /// considered as noise in the foreground.
///
- /// \output A binary image with the same domain as \p input. All
+ /// \return A binary image with the same domain as \p input. All
/// small components have been removed.
//
template <typename I, typename N>
diff --git a/scribo/scribo/preprocessing/denoise_bg.hh b/scribo/scribo/preprocessing/denoise_bg.hh
index eda3803..1c02f8e 100644
--- a/scribo/scribo/preprocessing/denoise_bg.hh
+++ b/scribo/scribo/preprocessing/denoise_bg.hh
@@ -29,7 +29,7 @@
/// \file
///
-/// Denoise image background.
+/// \brief Denoise image background.
# include <mln/core/image/image2d.hh>
# include <mln/core/concept/neighborhood.hh>
@@ -57,7 +57,7 @@ namespace scribo
using namespace mln;
- /// Denoise image background.
+ /// \brief Denoise image background.
///
/// \param[in] input A binary image. True for objects, False for
/// background.
@@ -65,7 +65,7 @@ namespace scribo
/// \param[in] min_card Minimum component cardinality to not be
/// considered as noise.
///
- /// \output A binary image with the same domain as \p input. All
+ /// \return A binary image with the same domain as \p input. All
/// small components have been removed and merged with the
/// background.
//
diff --git a/scribo/scribo/preprocessing/denoise_fg.hh b/scribo/scribo/preprocessing/denoise_fg.hh
index 9701d06..23b838e 100644
--- a/scribo/scribo/preprocessing/denoise_fg.hh
+++ b/scribo/scribo/preprocessing/denoise_fg.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -28,7 +29,7 @@
/// \file
///
-/// Denoise image foreground.
+/// \brief Denoise image foreground.
# include <mln/core/image/image2d.hh>
# include <mln/core/concept/neighborhood.hh>
@@ -56,7 +57,7 @@ namespace scribo
using namespace mln;
- /// Denoise image foreground.
+ /// \brief Denoise image foreground.
///
/// \param[in] input A binary image. True for objects, False for
/// background.
@@ -64,7 +65,7 @@ namespace scribo
/// \param[in] min_card Minimum component cardinality to not be
/// considered as noise.
///
- /// \output A binary image with the same domain as \p input. All
+ /// \return A binary image with the same domain as \p input. All
/// small components have been removed and merged with the
/// background.
//
diff --git a/scribo/scribo/preprocessing/deskew_crop.hh b/scribo/scribo/preprocessing/deskew_crop.hh
index 988e803..2f35932 100644
--- a/scribo/scribo/preprocessing/deskew_crop.hh
+++ b/scribo/scribo/preprocessing/deskew_crop.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -40,16 +41,14 @@ namespace scribo
/*! \brief Deskew a region of interest.
- \param[in] input_bin A binary image.
- \param[in] input_gray A gray-level image.
+ \param[in] crop_gl A gray-level image.
+ \param[in] input_gl A gray-level image.
\return A deskewed binary image.
-
-
Handles skew angles from -25 to +25 degrees.
- \p input_bin and \p input_gray must be 2D images and must be
+ \p crop_gl and \p input_gl must be 2D images and must be
identical (e.g. only the value differs).
This algorithm is designed for images created from a region of
@@ -58,7 +57,7 @@ namespace scribo
*/
template <typename I, typename J>
mln_concrete(I)
- deskew(const Image<I>& crop_gl_, const Image<I>& input_gl_);
+ deskew(const Image<I>& crop_gl, const Image<I>& input_gl);
# ifndef MLN_INCLUDE_ONLY
diff --git a/scribo/scribo/preprocessing/homogeneous_contrast.hh b/scribo/scribo/preprocessing/homogeneous_contrast.hh
index 82b2ac6..b510ecd 100644
--- a/scribo/scribo/preprocessing/homogeneous_contrast.hh
+++ b/scribo/scribo/preprocessing/homogeneous_contrast.hh
@@ -52,14 +52,14 @@ namespace scribo
/// \param[in] input A gray-level image.
/// \param[in] h Height attribute value for leveling closing.
///
- /// \output A gray-level image with better contrast homogeneity.
+ /// \return A gray-level image with better contrast homogeneity.
//
template <typename I>
mln_concrete(I)
homogeneous_contrast(const Image<I>& input, unsigned h);
- /// \overload.
+ /// \overload
/// Default height attribute value is set to 75.
//
template <typename I>
diff --git a/scribo/scribo/preprocessing/split_bg_fg.hh b/scribo/scribo/preprocessing/split_bg_fg.hh
index e1fae7d..b35d04c 100644
--- a/scribo/scribo/preprocessing/split_bg_fg.hh
+++ b/scribo/scribo/preprocessing/split_bg_fg.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -30,7 +30,7 @@
/// \file
///
-/// Split the background and the foreground.
+/// \brief Split the background and the foreground.
# include <mln/core/macros.hh>
# include <mln/core/image/image2d.hh>
@@ -89,7 +89,7 @@ namespace scribo
*/
template <typename I>
mln::util::couple<mln_concrete(I), mln_concrete(I)>
- split_bg_fg(const Image<I>& input_, unsigned lambda, unsigned delta);
+ split_bg_fg(const Image<I>& input, unsigned lambda, unsigned delta);
diff --git a/scribo/scribo/primitive/extract/alignments.hh b/scribo/scribo/primitive/extract/alignments.hh
index b2c7c0c..32285ea 100644
--- a/scribo/scribo/primitive/extract/alignments.hh
+++ b/scribo/scribo/primitive/extract/alignments.hh
@@ -26,6 +26,10 @@
#ifndef SCRIBO_PRIMITIVE_EXTRACT_ALIGNMENTS_HH
# define SCRIBO_PRIMITIVE_EXTRACT_ALIGNMENTS_HH
+/// \file
+///
+///
+
# include <iostream>
# include <mln/core/image/image2d.hh>
@@ -112,21 +116,24 @@ namespace scribo
This method handles skewed alignments and draw skew lines if
possible. Examples :
+ \verbatim
|x |x
| x \x
| x -> \x
| x \x
+ \endverbatim
-
- \fixme Because the first link step at step 2.a check aligment
+ \todo Because the first link step at step 2.a check aligment
between only 2 components and not the whole group, we may
retrieve alignment patterns such this one :
+ \verbatim
|x
| x
| x
| x
|x
+ \endverbatim
Here, the 'x' are aligned pair by pair but globally they are
not. Here we cannot draw skewed lines without processing every
@@ -137,12 +144,13 @@ namespace scribo
with that line. Here, we would like to split links/alignement
in two groups in order to get something like that :
+ \verbatim
\x
\x
\x
/x
/x
-
+ \endverbatim
\param[in] doc A document information with text lines.
diff --git a/scribo/scribo/primitive/extract/cells.hh b/scribo/scribo/primitive/extract/cells.hh
index 08b3fd6..4ae3e49 100644
--- a/scribo/scribo/primitive/extract/cells.hh
+++ b/scribo/scribo/primitive/extract/cells.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2009 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2009, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -60,19 +61,20 @@ namespace scribo
using namespace mln;
- /// Extract canvas cells from a binary image.
+ /// \brief Extract canvas cells from a binary image.
/// Use arbitrary criterions.
///
- /// \param[in] input_ A binary image.
- /// \param[in,out] ncells Will store the number of cells found.
+ /// \param[in] input A binary image.
+ /// \param[in] nbh A neighborhood.
+ /// \param[in,out] label_type Type of the labeled image.
///
/// \return A list of cell bounding boxes.
//
template <typename I, typename N, typename V>
mln::util::couple<mln::util::array<box<mln_site(I)> >,
mln::util::array<box<mln_site(I)> > >
- cells(const Image<I>& input_,
- const Neighborhood<N>& nbh_, const V& label_type);
+ cells(const Image<I>& input,
+ const Neighborhood<N>& nbh, const V& label_type);
# ifndef MLN_INCLUDE_ONLY
diff --git a/scribo/scribo/primitive/extract/components.hh b/scribo/scribo/primitive/extract/components.hh
index fe2b523..851193e 100644
--- a/scribo/scribo/primitive/extract/components.hh
+++ b/scribo/scribo/primitive/extract/components.hh
@@ -29,7 +29,7 @@
/// \file
///
-/// Extract components in a binary image.
+/// \brief Extract components in a binary image.
# include <mln/core/concept/neighborhood.hh>
@@ -63,10 +63,10 @@ namespace scribo
using namespace mln;
- /// Extract components in a binary image.
+ /// \brief Extract components in a binary image.
///
- /// \param[in] input A binary image. Components are must be set
- /// to 'true'
+ /// \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.
diff --git a/scribo/scribo/primitive/extract/lines_h_single.hh b/scribo/scribo/primitive/extract/lines_h_single.hh
index 1bff2f4..7c9e556 100644
--- a/scribo/scribo/primitive/extract/lines_h_single.hh
+++ b/scribo/scribo/primitive/extract/lines_h_single.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,7 @@
/// \file
///
-/// Fast Extraction of single horizontal thick lines.
+/// \brief Fast Extraction of single horizontal thick lines.
# include <mln/core/concept/image.hh>
# include <mln/core/concept/neighborhood.hh>
@@ -50,16 +50,16 @@ namespace scribo
using namespace mln;
- /// Fast Extraction of single horizontal thick lines.
- /*!
+ /*! \brief Fast Extraction of single horizontal thick lines.
+ *
* Only single non discontinued lines are correctly extracted
* with this routine.
*
- * \param[in] input_ A binary image.
- * \param[in] nbh_ The neighborhood used for labeling image
+ * \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] line_length The minimum line length.
+ * \param[in] min_line_length The minimum line length.
* \param[in] w_h_ratio The minimum ratio width/height object
* bounding boxes to consider an
* object as a single line.
@@ -75,13 +75,13 @@ namespace scribo
float w_h_ratio);
- /// Fast Extraction of single horizontal thick lines.
- /*!
+ /*! \brief Fast Extraction of single horizontal thick lines.
+ *
* Only single non discontinued lines are correctly extracted
* with this routine.
*
* \param[in] components A labeled image.
- * \param[in] line_length The minimum line length.
+ * \param[in] min_line_length The minimum line length.
* \param[in] w_h_ratio The minimum ratio width/height object
* bounding boxes to consider an
* object as a single line.
diff --git a/scribo/scribo/primitive/extract/lines_h_thick_and_single.hh b/scribo/scribo/primitive/extract/lines_h_thick_and_single.hh
index dd495a4..d0db15d 100644
--- a/scribo/scribo/primitive/extract/lines_h_thick_and_single.hh
+++ b/scribo/scribo/primitive/extract/lines_h_thick_and_single.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,7 @@
/// \file
///
-/// Extract horizontal thick lines in a binary image.
+/// \brief Extract horizontal thick lines in a binary image.
# include <mln/core/concept/image.hh>
@@ -56,18 +56,19 @@ namespace scribo
using namespace mln;
- /// Extract horizontal thick lines in a binary image.
- /*!
+
+ /*! \brief Extract horizontal thick lines in a binary image.
+ *
* Only non discontinued lines are correctly extracted with this
* routine. Only lines matching the given criterions are kept
* in the result.
*
- * \param[in] input_ A binary image.
- * \param[in] nbh_ The neighborhood used for labeling image
+ * \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] line_length The minimum line length.
- * \param[in] w_h_ratio The minimum ratio width/height object
+ * \param[in] min_line_length The minimum line length.
+ * \param[in] h_w_ratio The minimum ratio width/height object
* bounding boxes to consider an
* object as a single line.
*
@@ -75,8 +76,8 @@ namespace scribo
*/
template <typename I, typename N, typename V>
component_set<mln_ch_value(I,V)>
- lines_h_thick_and_single(const Image<I>& input_,
- const Neighborhood<N>& nbh_,
+ lines_h_thick_and_single(const Image<I>& input,
+ const Neighborhood<N>& nbh,
V& nlines,
unsigned min_line_length,
float h_w_ratio);
diff --git a/scribo/scribo/primitive/extract/lines_v_pattern.hh b/scribo/scribo/primitive/extract/lines_v_pattern.hh
index 2908c8b..bf0b1c0 100644
--- a/scribo/scribo/primitive/extract/lines_v_pattern.hh
+++ b/scribo/scribo/primitive/extract/lines_v_pattern.hh
@@ -29,7 +29,7 @@
/// \file
///
-/// Extract vertical lines matching a specific pattern.
+/// \brief Extract vertical lines matching a specific pattern.
# include <cmath>
@@ -56,10 +56,12 @@ namespace scribo
using namespace mln;
- /// Extract vertical lines matching a specific pattern.
+ /// \brief Extract vertical lines matching a specific pattern.
///
/// \param[in] input A binary image.
/// \param[in] length The minimum line length.
+ /// \param[in] delta space between the first background pixels
+ /// and the line pixels (usually 2 or 3).
///
/// \result An image of vertical lines.
//
diff --git a/scribo/scribo/primitive/extract/lines_v_single.hh b/scribo/scribo/primitive/extract/lines_v_single.hh
index 67b9f9d..317bf22 100644
--- a/scribo/scribo/primitive/extract/lines_v_single.hh
+++ b/scribo/scribo/primitive/extract/lines_v_single.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,7 @@
/// \file
///
-/// Fast Extraction of single vertical thick lines.
+/// \brief Fast Extraction of single vertical thick lines.
# include <mln/core/concept/image.hh>
# include <mln/core/concept/neighborhood.hh>
@@ -49,16 +49,16 @@ namespace scribo
using namespace mln;
- /// Fast Extraction of single vertical thick lines.
- /*!
+ /*! \brief Fast Extraction of single vertical thick lines.
+ *
* Only single non discontinued lines are correctly extracted
* with this routine.
*
- * \param[in] input_ A binary image.
- * \param[in] nbh_ The neighborhood used for labeling image
+ * \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] line_length The minimum line length.
+ * \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
* object as a single line.
@@ -74,13 +74,13 @@ namespace scribo
float h_w_ratio);
- /// Fast Extraction of single vertical thick lines.
- /*!
+ /*! \brief Fast Extraction of single vertical thick lines.
+ *
* Only single non discontinued lines are correctly extracted
* with this routine.
*
* \param[in] components A labeled image.
- * \param[in] line_length The minimum line length.
+ * \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
* object as a single line.
diff --git a/scribo/scribo/primitive/extract/lines_v_thick_and_single.hh b/scribo/scribo/primitive/extract/lines_v_thick_and_single.hh
index 44f7a9e..c3719cf 100644
--- a/scribo/scribo/primitive/extract/lines_v_thick_and_single.hh
+++ b/scribo/scribo/primitive/extract/lines_v_thick_and_single.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,7 @@
/// \file
///
-/// Extract vertical thick lines in a binary image.
+/// \brief Extract vertical thick lines in a binary image.
# include <mln/core/concept/image.hh>
@@ -55,17 +55,17 @@ namespace scribo
using namespace mln;
- /// Extract vertical thick lines in a binary image.
- /*!
+ /*! \brief Extract vertical thick lines in a binary image.
+ *
* Only non discontinued lines are correctly extracted with this
* routine. Only lines matching the given criterions are kept
* in the result.
*
- * \param[in] input_ A binary image.
- * \param[in] nbh_ The neighborhood used for labeling image
+ * \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] line_length The minimum line length.
+ * \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
* object as a single line.
@@ -74,8 +74,8 @@ namespace scribo
*/
template <typename I, typename N, typename V>
component_set<mln_ch_value(I,V)>
- lines_v_thick_and_single(const Image<I>& input_,
- const Neighborhood<N>& nbh_,
+ lines_v_thick_and_single(const Image<I>& input,
+ const Neighborhood<N>& nbh,
V& nlines,
unsigned min_line_length,
float h_w_ratio);
diff --git a/scribo/scribo/primitive/group/from_double_link.hh b/scribo/scribo/primitive/group/from_double_link.hh
index 260bfea..a4d97de 100644
--- a/scribo/scribo/primitive/group/from_double_link.hh
+++ b/scribo/scribo/primitive/group/from_double_link.hh
@@ -62,7 +62,6 @@ namespace scribo
validate These links. A link must exist in both ways to be
validated.
- \param[in] components A component set.
\param[in] left_link The left neighbor of each line of text.
\param[in] right_link The right neighbor of each line of text.
diff --git a/scribo/scribo/primitive/identify.hh b/scribo/scribo/primitive/identify.hh
index 6aa6ad3..f4e115b 100644
--- a/scribo/scribo/primitive/identify.hh
+++ b/scribo/scribo/primitive/identify.hh
@@ -28,7 +28,7 @@
/*! \brief try to determine the type of a component.
-\fixme Write it and add support for component type (graphic, images,
+\todo Write it and add support for component type (graphic, images,
...)
*/
diff --git a/scribo/scribo/primitive/link/compute.hh b/scribo/scribo/primitive/link/compute.hh
index 114971f..8c64171 100644
--- a/scribo/scribo/primitive/link/compute.hh
+++ b/scribo/scribo/primitive/link/compute.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -50,6 +50,8 @@ namespace scribo
/*! \brief Compute links between objects according a given functor.
\param[in,out] functor Linking policy.
+ \param[in] anchor Lookup anchor. Starts looking for
+ neighbors from there.
\return Object links.
diff --git a/scribo/scribo/primitive/link/with_single_left_link.hh b/scribo/scribo/primitive/link/with_single_left_link.hh
index cc94f93..c4b080f 100644
--- a/scribo/scribo/primitive/link/with_single_left_link.hh
+++ b/scribo/scribo/primitive/link/with_single_left_link.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,7 @@
/// \file
///
-/// Link text components with their left neighbor.
+/// \brief Link text components with their left neighbor.
# include <mln/core/concept/image.hh>
# include <mln/core/concept/neighborhood.hh>
@@ -65,7 +65,8 @@ namespace scribo
/// \brief Link components with their left neighbor if exists.
///
/// \param[in] components A component set.
- /// \param[in] The maximum distance allowed to seach a neighbor object.
+ /// \param[in] neighb_max_distance The maximum distance allowed
+ /// to seach a neighbor object.
///
/// \return Object links data.
//
@@ -78,6 +79,7 @@ namespace scribo
/// \overload
/// Max distance is set to mln_max(unsigned).
+ //
template <typename L>
inline
object_links<L>
diff --git a/scribo/scribo/primitive/link/with_single_left_link_dmax_ratio_aligned.hh b/scribo/scribo/primitive/link/with_single_left_link_dmax_ratio_aligned.hh
index 146ae17..9fdae67 100644
--- a/scribo/scribo/primitive/link/with_single_left_link_dmax_ratio_aligned.hh
+++ b/scribo/scribo/primitive/link/with_single_left_link_dmax_ratio_aligned.hh
@@ -29,8 +29,8 @@
/// \file
///
-/// Link text objects with their left neighbor according to a maximum
-/// distance.
+/// \brief Link text objects with their left neighbor according to a
+/// maximum distance.
# include <mln/core/concept/image.hh>
# include <mln/core/concept/neighborhood.hh>
@@ -67,6 +67,10 @@ namespace scribo
\param[in] components A component set.
\param[in] dmax_ratio Size ratio defining the maximum lookup
distance.
+ \param[in] min_angle Minimum difference allowed for
+ alignement angle.
+ \param[in] max_angle Maximum difference allowed for
+ alignement angle.
\param[in] anchor Starting point for the neighbor lookup.
\return Object links data.
@@ -90,6 +94,7 @@ namespace scribo
/// \overload
/// anchor is set to MassCenter.
+ //
template <typename L>
inline
object_links<L>
@@ -102,6 +107,7 @@ namespace scribo
/// \overload
/// dmax_ratio is set to 3.
/// anchor is set to MassCenter.
+ //
template <typename L>
inline
object_links<L>
diff --git a/scribo/scribo/primitive/link/with_single_right_link.hh b/scribo/scribo/primitive/link/with_single_right_link.hh
index bc7942b..60bb4d1 100644
--- a/scribo/scribo/primitive/link/with_single_right_link.hh
+++ b/scribo/scribo/primitive/link/with_single_right_link.hh
@@ -29,7 +29,7 @@
/// \file
///
-/// Link components with their right neighbor.
+/// \brief Link components with their right neighbor.
# include <mln/core/concept/image.hh>
@@ -64,7 +64,10 @@ namespace scribo
/// Lookup startup point is the object mass center.
///
/// \param[in] components An object image.
- /// \param[in] The maximum distance allowed to seach a neighbor object.
+ /// \param[in] neighb_max_distance The maximum distance allowed
+ /// to seach a neighbor object.
+ /// \param[in] anchor Anchor from where the neighbor lookup is
+ /// performed.
///
/// \return Object links data.
//
@@ -78,6 +81,7 @@ namespace scribo
/// \overload
/// Max distance is set to mln_max(unsigned).
+ //
template <typename L>
inline
object_links<L>
diff --git a/scribo/scribo/primitive/link/with_single_right_link_bottom.hh b/scribo/scribo/primitive/link/with_single_right_link_bottom.hh
index 85f6b50..9b76919 100644
--- a/scribo/scribo/primitive/link/with_single_right_link_bottom.hh
+++ b/scribo/scribo/primitive/link/with_single_right_link_bottom.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,7 @@
/// \file
///
-/// Link text components with their right neighbor.
+/// \brief Link text components with their right neighbor.
# include <mln/core/concept/image.hh>
@@ -63,7 +63,8 @@ namespace scribo
/// Lookup startup point is the object bottom center.
///
/// \param[in] components A component set.
- /// \param[in] The maximum distance allowed to seach a neighbor object.
+ /// \param[in] neighb_max_distance The maximum distance allowed
+ /// to seach a neighbor object.
///
/// \return Object links data.
//
@@ -76,6 +77,7 @@ namespace scribo
/// \overload
/// Max distance is set to mln_max(unsigned).
+ //
template <typename L>
inline
object_links<L>
diff --git a/scribo/scribo/primitive/link/with_single_right_link_dmax_ratio_aligned.hh b/scribo/scribo/primitive/link/with_single_right_link_dmax_ratio_aligned.hh
index dcf804e..f7ed41e 100644
--- a/scribo/scribo/primitive/link/with_single_right_link_dmax_ratio_aligned.hh
+++ b/scribo/scribo/primitive/link/with_single_right_link_dmax_ratio_aligned.hh
@@ -29,8 +29,8 @@
/// \file
///
-/// Link text objects with their right neighbor according to a maximum
-/// distance.
+/// \brief Link text objects with their right neighbor according to a
+/// maximum distance.
# include <mln/core/concept/image.hh>
# include <mln/core/concept/neighborhood.hh>
@@ -67,6 +67,10 @@ namespace scribo
\param[in] components A component set.
\param[in] dmax_ratio Size ratio defining the maximum lookup
distance.
+ \param[in] min_angle Minimum difference allowed for
+ alignement angle.
+ \param[in] max_angle Maximum difference allowed for
+ alignement angle.
\param[in] anchor Starting point for the neighbor lookup.
\return Object links data.
diff --git a/scribo/scribo/primitive/link/with_single_right_link_top.hh b/scribo/scribo/primitive/link/with_single_right_link_top.hh
index ada6650..c8008fc 100644
--- a/scribo/scribo/primitive/link/with_single_right_link_top.hh
+++ b/scribo/scribo/primitive/link/with_single_right_link_top.hh
@@ -29,7 +29,7 @@
/// \file
///
-/// Link components with their right neighbor.
+/// \brief Link components with their right neighbor.
# include <mln/core/concept/image.hh>
@@ -64,7 +64,8 @@ namespace scribo
/// Lookup startup point is the object top center.
///
/// \param[in] components A component set.
- /// \param[in] The maximum distance allowed to seach a neighbor object.
+ /// \param[in] neighb_max_distance The maximum distance allowed
+ /// to seach a neighbor object.
///
/// \return Object links data.
//
@@ -77,6 +78,7 @@ namespace scribo
/// \overload
/// Max distance is set to mln_max(unsigned).
+ //
template <typename L>
inline
object_links<L>
diff --git a/scribo/scribo/table/align_lines_horizontaly.hh b/scribo/scribo/table/align_lines_horizontaly.hh
index 25e4036..38d14ec 100644
--- a/scribo/scribo/table/align_lines_horizontaly.hh
+++ b/scribo/scribo/table/align_lines_horizontaly.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -55,13 +55,16 @@ namespace scribo
///
/// \param[in] input Image from which the line bboxes are
/// extracted from.
- /// \param[in, out] line_bboxes horizontal lines bounding boxes.
+ /// \param[in] lines Component set corresponding to table lines.
+ /// \param[in,out] aligned_lines Component set where aligned table
+ /// lines are stored.
/// \param[in] max_alignment_diff max space between two lines to
/// consider they are potentialy on the
/// same line.
///
/// \return A list of the resulting aligned rows. Each integer is actually
/// a row number.
+ //
template <typename I, typename L>
mln::util::array<int>
align_lines_horizontaly(const Image<I>& input,
diff --git a/scribo/scribo/table/rebuild.hh b/scribo/scribo/table/rebuild.hh
index f593153..e433390 100644
--- a/scribo/scribo/table/rebuild.hh
+++ b/scribo/scribo/table/rebuild.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,7 @@
/// \file
///
-/// Rebuild a table from its line bounding boxes.
+/// \brief Rebuild a table from its line bounding boxes.
# include <mln/core/concept/image.hh>
# include <mln/core/alias/neighb2d.hh>
@@ -57,11 +57,13 @@ namespace scribo
{
- /// Rebuild a table from its line bounding boxes.
- /*!
- ** \param[in] input_ A binary image.
- ** \param[in] linebboxes_ A couple of vertical and horizontal
- ** line bounding boxes.
+ /*! \brief Rebuild a table from its line bounding boxes.
+ **
+ ** \param[in] input A binary image.
+ ** \param[in] vlines Component set corresponding to vertical
+ ** lines.
+ ** \param[in] hlines Component set corresponding to horizontal
+ ** lines.
** \param[in] max_dist_lines The maximum distance allowed between
** vertical and horizontal lines to connect
** them eachother.
@@ -76,7 +78,7 @@ namespace scribo
mln::util::couple<L,
mln::util::couple<component_set<L>,
component_set<L> > >
- rebuild(const Image<I>& input_,
+ rebuild(const Image<I>& input,
const component_set<L>& vlines,
const component_set<L>& hlines,
unsigned max_dist_lines,
diff --git a/scribo/scribo/text/extract_lines.hh b/scribo/scribo/text/extract_lines.hh
index 3e9254a..685079c 100644
--- a/scribo/scribo/text/extract_lines.hh
+++ b/scribo/scribo/text/extract_lines.hh
@@ -29,7 +29,7 @@
/// \file
///
-/// Extract line of text bounding boxes.
+/// \brief Extract line of text bounding boxes.
# include <mln/core/concept/image.hh>
@@ -62,17 +62,17 @@ namespace scribo
using namespace mln;
- /// Extract lines of text in a binary image.
- /*!
+ /*! \brief Extract lines of text in a binary image.
+ **
** \param[in] input A binary image.
** \param[in] nbh A neighborhood used for labeling.
- ** \param[in] seps A binary image with separator information.
+ ** \param[in] separators A binary image with separator information.
**
** \return A set of lines.
*/
template <typename I, typename N>
line_set<mln_ch_value(I,scribo::def::lbl_type)>
- extract_lines(const Image<I>& input_, const Neighborhood<N>& nbh_,
+ extract_lines(const Image<I>& input, const Neighborhood<N>& nbh,
const mln_ch_value(I,bool)& separators);
/// \overload
diff --git a/scribo/scribo/text/extract_lines_wo_merge.hh b/scribo/scribo/text/extract_lines_wo_merge.hh
index 0d90600..ea9e6cf 100644
--- a/scribo/scribo/text/extract_lines_wo_merge.hh
+++ b/scribo/scribo/text/extract_lines_wo_merge.hh
@@ -28,7 +28,7 @@
/// \file
///
-/// Extract line of text bounding boxes.
+/// \brief Extract line of text bounding boxes.
# include <mln/core/concept/image.hh>
@@ -62,17 +62,17 @@ namespace scribo
using namespace mln;
- /// Extract lines of text in a binary image.
+ /// \brief Extract lines of text in a binary image.
/*!
** \param[in] input A binary image.
** \param[in] nbh A neighborhood used for labeling.
- ** \param[in] seps A binary image with separator information.
+ ** \param[in] separators A binary image with separator information.
**
** \return A set of lines.
*/
template <typename I, typename N>
line_set<mln_ch_value(I,scribo::def::lbl_type)>
- extract_lines_wo_merge(const Image<I>& input_, const Neighborhood<N>& nbh_,
+ extract_lines_wo_merge(const Image<I>& input, const Neighborhood<N>& nbh,
const mln_ch_value(I,bool)& separators);
/// \overload
diff --git a/scribo/scribo/text/recognition.hh b/scribo/scribo/text/recognition.hh
index 1e11a3e..5e0e7ab 100644
--- a/scribo/scribo/text/recognition.hh
+++ b/scribo/scribo/text/recognition.hh
@@ -29,7 +29,7 @@
/// \file
///
-/// Passes the text bounding boxes to an OCR (Tesseract).
+/// \brief Recognize text using an OCR (Tesseract).
///
/// \todo For each text bbox, we create a new image. We may like to avoid that.
/// \todo Do not store the result in an image?
@@ -75,20 +75,25 @@ namespace scribo
using namespace mln;
- /// Passes the text bboxes to Tesseract (OCR).
+ /// \brief Passes the text bboxes to Tesseract (OCR).
///
/// \param[in] lines The lines of text.
/// \param[in] language The language which should be recognized by
/// Tesseract. (fra, en, ...)
- /// \param[in] output_file If set, store the recognized text in
- /// this file.
//
template <typename L>
void
recognition(line_set<L>& lines, const char *language);
- /// Recognize text from an image.
+ /// \brief Recognize text from an image.
+ ///
+ /// \param[in] line Image of text line.
+ /// \param[in] language The language which should be recognized by
+ /// Tesseract. (fra, en, ...)
+ /// \param[in] output_file If set, store the recognized text in
+ /// this file.
+ //
template <typename I>
void
recognition(const Image<I>& line,
diff --git a/scribo/scribo/toolchain/content_in_doc.hh b/scribo/scribo/toolchain/content_in_doc.hh
index 0d3430e..5ef6aa8 100644
--- a/scribo/scribo/toolchain/content_in_doc.hh
+++ b/scribo/scribo/toolchain/content_in_doc.hh
@@ -28,7 +28,7 @@
/// \file
///
-/// Analyse a document.
+/// \brief Analyse and extract document image content.
# include <scribo/toolchain/internal/content_in_doc_functor.hh>
@@ -41,6 +41,27 @@ namespace scribo
using namespace mln;
+ /*! \brief Analyse and extract document image content.
+
+ \input[in] input A RGB image.
+ \input[in] input_preproc A Binary image.
+ \param[in] denoise Remove too small components (<= 2 pixels).
+ \param[in] find_line_seps Enable/Disable lookup for
+ vertical/horizontal separators.
+ \param[in] find_whitespace_seps Enable/Disable lookup for
+ vertical alignments and
+ whitespaces. Helps finding text
+ layout.
+ \param[in] enable_ocr Enable/Disable text recognition.
+ \param[in] language Main language used in the input
+ document. (OCR settings)
+ \param[in] verbose Enable/Disable debug information printed on
+ std::cout.
+
+ \return A document structure.
+
+ \ingroup grptoolchaindocproc
+ */
template <typename I, typename J>
document<mln_ch_value(I, def::lbl_type)>
content_in_doc(const Image<I>& input, const Image<J>& input_preproc,
diff --git a/scribo/scribo/toolchain/content_in_hdoc.hh b/scribo/scribo/toolchain/content_in_hdoc.hh
index 97233d5..1ffff09 100644
--- a/scribo/scribo/toolchain/content_in_hdoc.hh
+++ b/scribo/scribo/toolchain/content_in_hdoc.hh
@@ -28,7 +28,7 @@
/// \file
///
-/// Analyse a document.
+/// \brief Analyse a historical/degraded document.
# include <scribo/toolchain/internal/content_in_hdoc_functor.hh>
@@ -40,7 +40,26 @@ namespace scribo
using namespace mln;
-
+ /*! \brief Analyse and extract content in a historical/degraded
+ document.
+
+ \input[in] input A RGB image.
+ \input[in] input_preproc A Binary image.
+ \param[in] denoise Remove too small components (<= 2 pixels).
+ \param[in] find_line_seps Enable/Disable lookup for
+ vertical/horizontal separators.
+ \param[in] find_whitespace_seps Enable/Disable lookup for
+ vertical alignments and
+ whitespaces. Helps finding text
+ layout.
+ \param[in] enable_ocr Enable/Disable text recognition.
+ \param[in] language Main language used in the input
+ document. (OCR settings)
+
+ \return A document structure.
+
+ \ingroup grptoolchaindocproc
+ */
template <typename I, typename J>
document<mln_ch_value(I, def::lbl_type)>
content_in_hdoc(const Image<I>& input, const Image<J>& input_preproc,
diff --git a/scribo/scribo/toolchain/internal/content_in_doc_functor.hh b/scribo/scribo/toolchain/internal/content_in_doc_functor.hh
index 448ec24..066168a 100644
--- a/scribo/scribo/toolchain/internal/content_in_doc_functor.hh
+++ b/scribo/scribo/toolchain/internal/content_in_doc_functor.hh
@@ -27,6 +27,10 @@
#ifndef SCRIBO_TOOLCHAIN_INTERNAL_CONTENT_IN_DOC_FUNCTOR_HH
# define SCRIBO_TOOLCHAIN_INTERNAL_CONTENT_IN_DOC_FUNCTOR_HH
+/// \file
+///
+/// \brief Functor analysing and extracting document image content.
+
# ifndef SCRIBO_NDEBUG
# include <mln/util/timer.hh>
# endif // ! SCRIBO_NDEBUG
@@ -92,7 +96,9 @@ namespace scribo
namespace internal
{
+ /*! \brief Functor analysing and extracting document image content.
+ */
template <typename I>
struct content_in_doc_functor
: public Toolchain_Functor
diff --git a/scribo/scribo/toolchain/internal/content_in_hdoc_functor.hh b/scribo/scribo/toolchain/internal/content_in_hdoc_functor.hh
index bda31b3..4ffc9a7 100644
--- a/scribo/scribo/toolchain/internal/content_in_hdoc_functor.hh
+++ b/scribo/scribo/toolchain/internal/content_in_hdoc_functor.hh
@@ -27,6 +27,12 @@
#ifndef SCRIBO_TOOLCHAIN_INTERNAL_CONTENT_IN_HDOC_FUNCTOR_HH
# define SCRIBO_TOOLCHAIN_INTERNAL_CONTENT_IN_HDOC_FUNCTOR_HH
+/// \file
+///
+/// \brief Functor analysing and extracting content in
+/// degraded/historical documents.
+
+
# ifndef SCRIBO_NDEBUG
# include <mln/util/timer.hh>
# endif // ! SCRIBO_NDEBUG
@@ -103,6 +109,9 @@ namespace scribo
{
+ /*! \brief Functor analysing and extracting content in
+ degraded/historical documents.
+ */
template <typename I>
struct content_in_hdoc_functor
: public Toolchain_Functor
diff --git a/scribo/scribo/toolchain/internal/text_in_doc_functor.hh b/scribo/scribo/toolchain/internal/text_in_doc_functor.hh
index edb170d..eeac1ea 100644
--- a/scribo/scribo/toolchain/internal/text_in_doc_functor.hh
+++ b/scribo/scribo/toolchain/internal/text_in_doc_functor.hh
@@ -27,6 +27,10 @@
#ifndef SCRIBO_TOOLCHAIN_INTERNAL_TEXT_IN_DOC_FUNCTOR_HH
# define SCRIBO_TOOLCHAIN_INTERNAL_TEXT_IN_DOC_FUNCTOR_HH
+/// \file
+///
+/// \brief Functor extracting text lines from a document image.
+
# ifndef SCRIBO_NDEBUG
# include <mln/util/timer.hh>
# endif // ! SCRIBO_NDEBUG
@@ -76,7 +80,9 @@ namespace scribo
namespace internal
{
+ /*! \brief Functor extracting text lines from a document image.
+ */
template <typename I>
struct text_in_doc_functor
: public Toolchain_Functor
diff --git a/scribo/scribo/toolchain/internal/text_in_doc_preprocess_functor.hh b/scribo/scribo/toolchain/internal/text_in_doc_preprocess_functor.hh
index d58b4b2..12dc834 100644
--- a/scribo/scribo/toolchain/internal/text_in_doc_preprocess_functor.hh
+++ b/scribo/scribo/toolchain/internal/text_in_doc_preprocess_functor.hh
@@ -27,6 +27,11 @@
#ifndef SCRIBO_TOOLCHAIN_INTERNAL_TEXT_IN_DOC_PREPROCESS_FUNCTOR_HH
# define SCRIBO_TOOLCHAIN_INTERNAL_TEXT_IN_DOC_PREPROCESS_FUNCTOR_HH
+/// \file
+///
+/// \brief Functor performing custom preprocessing algorithms on
+/// documents.
+
#include <mln/core/concept/image.hh>
#include <mln/data/transform.hh>
#include <mln/data/convert.hh>
diff --git a/scribo/scribo/toolchain/internal/text_in_picture_functor.hh b/scribo/scribo/toolchain/internal/text_in_picture_functor.hh
index 5178a82..8d12612 100644
--- a/scribo/scribo/toolchain/internal/text_in_picture_functor.hh
+++ b/scribo/scribo/toolchain/internal/text_in_picture_functor.hh
@@ -29,7 +29,7 @@
/// \file
///
-/// Localize text in a picture.
+/// \brief Localize text in a picture.
# include <libgen.h>
@@ -107,7 +107,7 @@ namespace scribo
using namespace mln;
-
+ /// \brief Localize text in a picture.
template <typename I>
struct text_in_picture_functor
: public Toolchain_Functor
diff --git a/scribo/scribo/toolchain/internal/toolchain_functor.hh b/scribo/scribo/toolchain/internal/toolchain_functor.hh
index fbf1702..835cbbd 100644
--- a/scribo/scribo/toolchain/internal/toolchain_functor.hh
+++ b/scribo/scribo/toolchain/internal/toolchain_functor.hh
@@ -27,6 +27,10 @@
#ifndef SCRIBO_TOOLCHAIN_INTERNAL_TOOLCHAIN_FUNCTOR_HH
# define SCRIBO_TOOLCHAIN_INTERNAL_TOOLCHAIN_FUNCTOR_HH
+/// \file
+///
+/// \brief Base class for toolchain functors.
+
# include <unistd.h>
# include <iostream>
@@ -39,6 +43,7 @@ namespace scribo
namespace internal
{
+ /// \brief Base class for toolchain functors.
class Toolchain_Functor
{
public:
diff --git a/scribo/scribo/toolchain/nepomuk/text_extraction.hh b/scribo/scribo/toolchain/nepomuk/text_extraction.hh
index 2534ce8..705787a 100644
--- a/scribo/scribo/toolchain/nepomuk/text_extraction.hh
+++ b/scribo/scribo/toolchain/nepomuk/text_extraction.hh
@@ -65,7 +65,10 @@ namespace scribo
This is a convenient routine to be used in Nepomuk.
- \param[in] ima A document image. The
+ \param[in] input A document image.
+ \param[in] language The main language used in the input
+ document image. Improve text recognition
+ quality if accurate.
\return A set of recognized words.
@@ -76,6 +79,7 @@ namespace scribo
Depending on your version of Tesseract (OCR) you may define
HAVE_TESSERACT_2 or HAVE_TESSERACT_3 .
+ \ingroup grptoolchain
*/
QSet<QString>
text_extraction(const QImage& input, const QString& language);
diff --git a/scribo/scribo/toolchain/text_in_doc.hh b/scribo/scribo/toolchain/text_in_doc.hh
index 960a22a..b1fb511 100644
--- a/scribo/scribo/toolchain/text_in_doc.hh
+++ b/scribo/scribo/toolchain/text_in_doc.hh
@@ -29,7 +29,7 @@
/// \file
///
-/// Extract text from a document.
+/// \brief Extract text from a document.
# include <scribo/toolchain/internal/text_in_doc_functor.hh>
@@ -42,6 +42,26 @@ namespace scribo
using namespace mln;
+ /*! \brief Extract text lines from a document image.
+
+ \param[in] input A RGB image.
+ \param[in] denoise Remove too small components (<= 2 pixels).
+ \param[in] language Main language used in the input
+ document. (OCR settings)
+ \param[in] find_line_seps Enable/Disable lookup for
+ vertical/horizontal separators.
+ \param[in] find_whitespace_seps Enable/Disable lookup for
+ vertical alignments and
+ whitespaces. Helps finding text
+ layout.
+ \param[in] verbose Enable/Disable debug information printed on
+ std::cout.
+
+ \return A line set including text information and recognized
+ text.
+
+ \ingroup grptoolchaindocproc
+ */
template <typename I>
line_set<mln_ch_value(I, def::lbl_type)>
text_in_doc(const Image<I>& input, bool denoise,
diff --git a/scribo/scribo/toolchain/text_in_doc_preprocess.hh b/scribo/scribo/toolchain/text_in_doc_preprocess.hh
index 0a99487..e94af6f 100644
--- a/scribo/scribo/toolchain/text_in_doc_preprocess.hh
+++ b/scribo/scribo/toolchain/text_in_doc_preprocess.hh
@@ -55,12 +55,16 @@ namespace scribo
\param[in] input An image.
\param[in] enable_fg_bg Enable/Disable background removal.
+ \param[in] lambda Parameter to the background removal. Maximum
+ area of foreground objects.
\param[in] K Binarization threshold parameter. (Default 0.34)
+ \param[in] verbose Enable/Disable debug output on std::cout.
If \p enable_fg_bg is set to 'True' then a background removal is
performed. Its parameter lambda is automatically set according
to the input image size.
+ \ingroup grptoolchaindocpreproc
*/
template <typename I>
mln_ch_value(I,bool)
@@ -70,6 +74,8 @@ namespace scribo
/*! \overload
K is set to 0.34.
+
+ \ingroup grptoolchaindocpreproc
*/
template <typename I>
mln_ch_value(I,bool)
@@ -81,11 +87,14 @@ namespace scribo
\param[in] input An image.
\param[in] lambda Parameter to the background removal.
+ \param[in] verbose Enable/Disable debug information printed on
+ std::cout.
If lambda is set to '0' no background removal is
performed. Otherwise, a background removal is performed with the
given \p lambda value.
+ \ingroup grptoolchaindocpreproc
*/
template <typename I>
mln_ch_value(I,bool)
@@ -97,12 +106,17 @@ namespace scribo
\param[in] input An image.
\param[in] lambda Parameter to the background removal.
\param[in] K Binarization threshold parameter. (Default 0.34)
+ \param[in] enable_fg_bg If set to True tries to identify
+ background components and remove them.
\param[in,out] fg The foreground layer of \p input.
+ \param[in] verbose Enable/Disable debug information printed on
+ std::cout.
If lambda is set to '0' no background removal is
performed. Otherwise, a background removal is performed with the
given \p lambda value.
+ \ingroup grptoolchaindocpreproc
*/
template <typename I>
mln_ch_value(I,bool)
diff --git a/scribo/scribo/toolchain/text_in_picture.hh b/scribo/scribo/toolchain/text_in_picture.hh
index 8d05158..0580ec6 100644
--- a/scribo/scribo/toolchain/text_in_picture.hh
+++ b/scribo/scribo/toolchain/text_in_picture.hh
@@ -30,7 +30,7 @@
/// \file
///
-/// Localize text in a picture.
+/// \brief Localize text in a picture.
# include <scribo/toolchain/internal/text_in_picture_functor.hh>
@@ -42,7 +42,26 @@ namespace scribo
using namespace mln;
-
+ /*! \brief Localize text in pictures.
+
+ \param[in] input_rgb_orig A RGB image.
+ \param[in] bg_removal If set to True tries to identify
+ background components and remove them.
+ \param[in] multi_scale_bin Sauvola's binarization is used. Tells
+ whether to use a multi-scale version
+ or not.
+ \param[in] max_dim_size The maximum height or width allowed for
+ the input image. If larger, it is
+ resized.
+ \param[in] lambda Maximum area of components considered as
+ foreground objects. If set to '0' (default),
+ it is fixed automatically.
+ \param[in] verbose Enable/Disable debug output on std::cout.
+
+ \return A component set corresponding to the text components.
+
+ \ingroup grptoolchainpicproc
+ */
template <typename I>
component_set<mln_ch_value(I, def::lbl_type)>
text_in_picture(const Image<I>& input_rgb_orig,
--
1.7.2.5
1
0

olena-2.0-18-gef717c9 doc/Doxyfile.in: Do not warn about undocumented code.
by Guillaume Lazzara 29 Nov '11
by Guillaume Lazzara 29 Nov '11
29 Nov '11
---
doc/Doxyfile.in | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
index 86377ef..8474dc6 100644
--- a/doc/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -83,7 +83,7 @@ FILE_VERSION_FILTER =
#---------------------------------------------------------------------------
QUIET = YES
WARNINGS = YES
-WARN_IF_UNDOCUMENTED = YES
+WARN_IF_UNDOCUMENTED = NO
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO
WARN_FORMAT = "$file:$line: $text"
--
1.7.2.5
1
0
---
doc/Doxyfile.in | 3 ++-
doc/Makefile.am | 2 ++
doc/license.dox | 15 +++++++++++++++
doc/license_commercial.dox | 6 ++++++
doc/mainpage.dox | 4 ++--
5 files changed, 27 insertions(+), 3 deletions(-)
create mode 100644 doc/license.dox
create mode 100644 doc/license_commercial.dox
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
index 8474dc6..b53bbe8 100644
--- a/doc/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -100,7 +100,8 @@ EXCLUDE_SYMLINKS = YES
EXCLUDE_PATTERNS = *spe.hh
EXCLUDE_SYMBOLS = *::internal* *_ mln::trait::*
EXAMPLE_PATH = @top_srcdir@/doc/ \
- @builddir@
+ @builddir@ \
+ @top_srcdir@
EXAMPLE_PATTERNS = *.cc \
*.cc.raw \
*.txt
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 1bf95d5..410316b 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -62,6 +62,8 @@ REFMAN_deps = $(srcdir)/footer.html \
$(srcdir)/olena.bib \
$(srcdir)/contributors.dox \
$(srcdir)/bibliography.dox \
+ $(srcdir)/license.dox \
+ $(srcdir)/license_commercial.dox \
contributors.html \
lrde_olena.html
diff --git a/doc/license.dox b/doc/license.dox
new file mode 100644
index 0000000..eb9a8e4
--- /dev/null
+++ b/doc/license.dox
@@ -0,0 +1,15 @@
+/*! \page gplv2 "GNU General Public License (GPL)"
+
+Olena and its modules are Copyright (C) 2011 EPITA Research and
+Development Laboratory (LRDE).
+<br>Olena and its modules are released under GNU GPL v2.
+
+
+\section gplv2sec "The GNU General Public License (Version 2)"
+
+Reference : <a href="http://www.gnu.org/licenses/gpl.html">GNU General
+Public License</a>
+
+\verbinclude COPYING
+
+*/
\ No newline at end of file
diff --git a/doc/license_commercial.dox b/doc/license_commercial.dox
new file mode 100644
index 0000000..0ece2b5
--- /dev/null
+++ b/doc/license_commercial.dox
@@ -0,0 +1,6 @@
+/*! \page commercial "Commercial Use"
+
+ < Under construction >
+
+ Please contact us : olena(a)lrde.epita.fr
+*/
\ No newline at end of file
diff --git a/doc/mainpage.dox b/doc/mainpage.dox
index 8f49ca3..ea15c32 100644
--- a/doc/mainpage.dox
+++ b/doc/mainpage.dox
@@ -42,8 +42,8 @@
\li Online Resources
</td>
<td>
- \li GNU GPL
- \li Commercial Use
+ \li \ref gplv2 "GNU GPL"
+ \li \ref commercial "Commercial Use"
</td>
<td> </td>
</tr>
--
1.7.2.5
1
0

29 Nov '11
* doc/Makefile.am: New dependencies.
* doc/license_commercial.dox,
* doc/mainpage.dox,
* doc/modules_list.dox: More content.
* doc/get_sources.dox,
* doc/online_resources.dox: New.
---
ChangeLog | 13 +++++++++++++
doc/Makefile.am | 2 ++
doc/get_sources.dox | 37 +++++++++++++++++++++++++++++++++++++
doc/license_commercial.dox | 5 +++--
doc/mainpage.dox | 4 ++--
doc/modules_list.dox | 2 +-
doc/online_resources.dox | 34 ++++++++++++++++++++++++++++++++++
7 files changed, 92 insertions(+), 5 deletions(-)
create mode 100644 doc/get_sources.dox
create mode 100644 doc/online_resources.dox
diff --git a/ChangeLog b/ChangeLog
index b385e9c..679dfa0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2011-10-28 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Add more content in general documentation.
+
+ * doc/Makefile.am: New dependencies.
+
+ * doc/license_commercial.dox,
+ * doc/mainpage.dox,
+ * doc/modules_list.dox: More content.
+
+ * doc/get_sources.dox,
+ * doc/online_resources.dox: New.
+
2011-09-16 Roland Levillain <roland(a)lrde.epita.fr>
* configure.ac, NEWS: Version 2.0a.
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 410316b..81c34b1 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -64,6 +64,8 @@ REFMAN_deps = $(srcdir)/footer.html \
$(srcdir)/bibliography.dox \
$(srcdir)/license.dox \
$(srcdir)/license_commercial.dox \
+ $(srcdir)/online_resources.dox \
+ $(srcdir)/get_sources.dox \
contributors.html \
lrde_olena.html
diff --git a/doc/get_sources.dox b/doc/get_sources.dox
new file mode 100644
index 0000000..23f1446
--- /dev/null
+++ b/doc/get_sources.dox
@@ -0,0 +1,37 @@
+/*! \page getsources Get the Sources
+
+If you are interested in developping for Olena, you are definitely
+interested in using the development version from our Git Repository.
+
+To successfuly compile and use the development version, you will need the following additional tools:
+
+\li Git 1.5 or higher
+\li Autoconf 2.61 or higher
+\li Automake 1.10 or higher
+\li Libtool 1.5.22 or higher
+\li Doxygen 1.5.6 or higher
+\li ImageMagick 6.3.7 or higher
+\li HeVeA 1.10
+\li LaTeX2HTML (or at minimum, its html.sty style file)
+
+The Git repository is located at git://git.lrde.epita.fr/olena.
+
+For those who are not used to Git, here are the required commands to get and build a fresh source tree:
+\verbatim
+ git clone git://git.lrde.epita.fr/olena
+ cd olena
+ ./bootstrap
+ mkdir _build
+ cd _build
+ ../configure
+ make
+\endverbatim
+
+The last command may take some time.
+
+If you want to install Olena, type thereafter (as root):
+\verbatim
+ make install
+\endverbatim
+
+*/
\ No newline at end of file
diff --git a/doc/license_commercial.dox b/doc/license_commercial.dox
index 0ece2b5..af2f094 100644
--- a/doc/license_commercial.dox
+++ b/doc/license_commercial.dox
@@ -1,6 +1,7 @@
/*! \page commercial "Commercial Use"
- < Under construction >
+ Even though Olena is released under GPL v2, using Olena in a close
+ source commercial products may be possible.
- Please contact us : olena(a)lrde.epita.fr
+ If you are interested, please contact us at olena(a)lrde.epita.fr
*/
\ No newline at end of file
diff --git a/doc/mainpage.dox b/doc/mainpage.dox
index ea15c32..9ebda3b 100644
--- a/doc/mainpage.dox
+++ b/doc/mainpage.dox
@@ -38,8 +38,8 @@
<tr>
<td>
\li Report Bugs and Make Suggestions
- \li Get the Sources
- \li Online Resources
+ \li \ref getsources
+ \li \ref onlineres
</td>
<td>
\li \ref gplv2 "GNU GPL"
diff --git a/doc/modules_list.dox b/doc/modules_list.dox
index e3f2b8d..6b872ef 100644
--- a/doc/modules_list.dox
+++ b/doc/modules_list.dox
@@ -1,4 +1,4 @@
-/** \page moduleslist List of available modules
+/** \page moduleslist List of Available Modules
As a platform, Olena is divided in several modules:
diff --git a/doc/online_resources.dox b/doc/online_resources.dox
new file mode 100644
index 0000000..32cd18d
--- /dev/null
+++ b/doc/online_resources.dox
@@ -0,0 +1,34 @@
+/*! \page onlineres Online Resources
+
+\section Trac
+
+In order to keep traces of bugs and feature requests, we provide a
+Trac at <a
+href="https://trac.lrde.org/olena">https://trac.lrde.org/olena</a>.
+
+\section Gitweb
+
+Source code is freely browseable through a web interface at this
+address : <a
+href="http://git.lrde.epita.fr/?p=olena.git">http://git.lrde.epita.fr/?p=olena.git</a>
+
+It is also a way to keep an eye on current develop.
+
+\section BuildBot
+
+During the development process, we need to be sure that changes don't
+break the whole code. To do so, we have a buildfarm running several
+architectures and compilers. A monitoring interface is available here
+: <a href="https://buildfarm.lrde.org/buildfarm/oln/">https://buildfarm.lrde.org/buildfarm/oln/</a>
+
+\section Mailing-list
+
+A general mailing-list is available and open for any questions related
+to Olena. You can :
+
+\li <a href="https://www.lrde.epita.fr/mailman/listinfo/olena">subscribe to our mailing-list</a>
+\li <a href="https://www.lrde.epita.fr/pipermail/olena/">fetch the archives of the list</a>
+\li send any questions to: <a href="mailto::olena@lrde.epita.fr">olena(a)lrde.epita.fr</a>
+
+
+*/
\ No newline at end of file
--
1.7.2.5
1
0
---
doc/Doxyfile.in | 2 +-
doc/Makefile.am | 11 +-
doc/about.dox | 13 ++
doc/doc.bib | 28 +++-
doc/images/olena_layers.png | Bin 0 -> 25711 bytes
doc/images/olena_layers.svg | 368 +++++++++++++++++++++++++++++++++++++++++++
doc/mainpage.dox | 2 +-
7 files changed, 419 insertions(+), 5 deletions(-)
create mode 100644 doc/about.dox
create mode 100644 doc/images/olena_layers.png
create mode 100644 doc/images/olena_layers.svg
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
index b53bbe8..777a6ac 100644
--- a/doc/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -106,7 +106,7 @@ EXAMPLE_PATTERNS = *.cc \
*.cc.raw \
*.txt
EXAMPLE_RECURSIVE = NO
-IMAGE_PATH =
+IMAGE_PATH = @top_srcdir@/doc/images
INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 81c34b1..099b497 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -53,6 +53,12 @@ regen-doc:
DOXYFILE_USER = Doxyfile_user
+
+# Images
+REFMAN_IMAGES = $(srcdir)/images/olena_layers.png
+EXTRA_DIST = $(REFMAN_IMAGES)
+
+# Documentation content
REFMAN_deps = $(srcdir)/footer.html \
$(srcdir)/header.html \
$(srcdir)/doxygen.css \
@@ -67,7 +73,8 @@ REFMAN_deps = $(srcdir)/footer.html \
$(srcdir)/online_resources.dox \
$(srcdir)/get_sources.dox \
contributors.html \
- lrde_olena.html
+ lrde_olena.html \
+ $(REFMAN_IMAGES)
# Sed is used to generate Doxyfile from Doxyfile.in instead of
# configure, because the former is way faster than the latter.
@@ -93,7 +100,7 @@ USER_REFMAN = user-refman
# HTML.
-EXTRA_DIST = $(srcdir)/user-refman.stamp
+EXTRA_DIST += $(srcdir)/user-refman.stamp
MAINTAINERCLEANFILES += $(srcdir)/user-refman.stamp
$(srcdir)/user-refman.stamp: $(srcdir)/$(DOXYFILE).in $(REFMAN_deps)
@rm -f $@.tmp
diff --git a/doc/about.dox b/doc/about.dox
new file mode 100644
index 0000000..d2e10bb
--- /dev/null
+++ b/doc/about.dox
@@ -0,0 +1,13 @@
+/*! \page about What is Olena ?
+
+ Olena is a Free Software platform dedicated to efficient and generic image processing.
+
+ It tends to provide :
+ \li an image processing library (<a href="/milena/doc/user-refman/html/index.html">Milena</a>),
+ \li various modules for dedicated types of image processing,
+ \li a set of applications,
+ \li language bindings (e.g. Python),
+
+ \image html olena_layers.png "The Olena Platform Architecture."
+ \image latex olena_layers.png "The Olena platform" width=5cm
+*/
\ No newline at end of file
diff --git a/doc/doc.bib b/doc/doc.bib
index b116a98..46208e5 100644
--- a/doc/doc.bib
+++ b/doc/doc.bib
@@ -1,4 +1,13 @@
-(a)Article{besl.92.pami,
+@article{sauvola00pr,
+ author = {J. Sauvola and M. Pietikäinen},
+ title = {Adaptive document image binarization},
+ journal = {PATTERN RECOGNITION},
+ year = {2000},
+ volume = {33},
+ pages = {225--236}
+}
+
+(a)Article{besl.1992.pami,
author = "P.J. Besl and N.D. McKay",
title = "A Method for Registration of 3-D Shapes",
journal = "IEEE Transactions on Pattern Analysis and Machine Intelligence",
@@ -9,4 +18,21 @@
doi = "http://doi.ieeecomputersociety.org/10.1109/34.121791",
publisher = "IEEE Computer Society",
address = "Los Alamitos, CA, USA"
+}
+
+@article{badekas2005ppriaa,
+ booktitle = {Progress in Pattern Recognition, Image Analysis and Applications},
+ title = {Automatic Evaluation of Document Binarization Results},
+ pages = {1005--1014},
+ year = {2005},
+ author = {E. Badekas and N. Papamarkos}
+}
+
+@article{shafait2008drr,
+ author = {Faisal Shafait and Daniel Keysers and Thomas M. Breuel},
+ title = {Efficient Implementation of Local Adaptive Thresholding Techniques Using Integral Images},
+ journal = {Document Recognition and Retrieval XV},
+ year = {2008},
+ address = {San Jose, CA},
+ month = {Jan}
}
\ No newline at end of file
diff --git a/doc/images/olena_layers.png b/doc/images/olena_layers.png
new file mode 100644
index 0000000000000000000000000000000000000000..56edabd7f501be12197869358eb7f678af5f4334
GIT binary patch
literal 25711
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%0Ac6d>gJkLcq
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
OP?Y3UWox9(L;nXf09F_P
literal 0
HcmV?d00001
diff --git a/doc/images/olena_layers.svg b/doc/images/olena_layers.svg
new file mode 100644
index 0000000..8ced02b
--- /dev/null
+++ b/doc/images/olena_layers.svg
@@ -0,0 +1,368 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="783.75262"
+ height="786.33826"
+ id="svg5663"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="olena_layers.png">
+ <defs
+ id="defs5665">
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible">
+ <path
+ id="path11891"
+ d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+ transform="matrix(0.8,0,0,0.8,10,0)" />
+ </marker>
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="191.42857 : -725.24748 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="921.23734 : -648.10462 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective5671" />
+ <inkscape:perspective
+ id="perspective5620"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient5430"
+ id="linearGradient5446"
+ gradientUnits="userSpaceOnUse"
+ x1="1765.6388"
+ y1="84.601952"
+ x2="2334.2168"
+ y2="84.601952" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient5430">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop5432" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop5434" />
+ </linearGradient>
+ <inkscape:perspective
+ id="perspective10885"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective11022"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective11679"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective11679-9"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective11708"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective11729"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective12619"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35"
+ inkscape:cx="379.83489"
+ inkscape:cy="193.79466"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="968"
+ inkscape:window-height="805"
+ inkscape:window-x="302"
+ inkscape:window-y="265"
+ inkscape:window-maximized="0"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:snap-bbox="true" />
+ <metadata
+ id="metadata5668">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Calque 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(23.332153,-163.39523)">
+ <text
+ id="text5361"
+ y="279.38019"
+ x="669.5874"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ y="279.38019"
+ x="669.5874"
+ id="tspan5363"
+ sodipodi:role="line"
+ style="fill:#000000;fill-opacity:1">`</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot11041"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ transform="translate(-29.759501,70.733897)"><flowRegion
+ id="flowRegion11043"><rect
+ id="rect11045"
+ width="354.28571"
+ height="14.285714"
+ x="174.28572"
+ y="831.828" /></flowRegion><flowPara
+ id="flowPara11047" /></flowRoot> <g
+ id="g12633">
+ <rect
+ style="opacity:0.67790264;color:#000000;fill:#effcea;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:4.09148645;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect5292"
+ width="779.66113"
+ height="270.79654"
+ x="-21.286409"
+ y="676.89117" />
+ <text
+ id="text10963"
+ y="759.70477"
+ x="368.92697"
+ style="font-size:12px;font-style:normal;font-weight:normal;text-align:end;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:56px;font-style:italic;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold Oblique"
+ y="759.70477"
+ x="368.92697"
+ id="tspan10965"
+ sodipodi:role="line">Image Processing</tspan><tspan
+ id="tspan11039"
+ style="font-size:56px;font-style:italic;font-weight:bold;text-align:center;text-anchor:middle;-inkscape-font-specification:Bitstream Vera Sans Bold Oblique"
+ y="829.70477"
+ x="368.92697"
+ sodipodi:role="line"> C++ Library</tspan></text>
+ <text
+ id="text11051"
+ y="913.99048"
+ x="256.60666"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:48px;font-style:normal;font-weight:bold;-inkscape-font-specification:Bitstream Vera Sans Bold"
+ y="913.99048"
+ x="256.60666"
+ id="tspan11053"
+ sodipodi:role="line">(Milena)</tspan></text>
+ </g>
+ <g
+ id="g3086">
+ <g
+ transform="translate(-1.3471178,19.316265)"
+ id="g12641">
+ <rect
+ style="opacity:0.67790264;color:#000000;fill:#f7efe8;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3.14199305;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect5294"
+ width="550.55963"
+ height="226.127"
+ x="-16.004351"
+ y="399.29413" />
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="136.32234"
+ y="579.04132"
+ id="text5341"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5343"
+ x="136.32234"
+ y="579.04132"
+ style="font-size:48px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans Bold">(SCRIBO)</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="21.480543"
+ y="484.03006"
+ id="text10991"><tspan
+ sodipodi:role="line"
+ id="tspan10993"
+ x="21.480543"
+ y="484.03006"
+ style="font-size:56px;font-style:italic;font-weight:bold;-inkscape-font-specification:Bitstream Vera Sans Bold Oblique">DIA framework</tspan></text>
+ </g>
+ <g
+ transform="translate(10.327175,22.857142)"
+ id="g12669">
+ <rect
+ y="395.1326"
+ x="548.69751"
+ height="227.3683"
+ width="200.37236"
+ id="rect12650"
+ style="opacity:0.67790264;color:#000000;fill:#f7efe8;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.90068746;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="631.42859"
+ y="447.61859"
+ id="text12665"
+ transform="translate(-33.978474,66.489174)"><tspan
+ sodipodi:role="line"
+ id="tspan12667"
+ x="631.42859"
+ y="447.61859"
+ style="font-size:56px;font-weight:bold;-inkscape-font-specification:Bitstream Vera Sans Bold">. . .</tspan></text>
+ </g>
+ </g>
+ <g
+ id="g3056">
+ <g
+ id="g3041">
+ <g
+ id="g3025">
+ <rect
+ y="164.45264"
+ x="254.95554"
+ height="224.35983"
+ width="251.51389"
+ id="rect5300"
+ style="opacity:0.67790264;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.11477399;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;fill:#000080;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ x="347.98691"
+ y="347.86737"
+ id="text5357"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan5359"
+ x="347.98691"
+ y="347.86737"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000080;fill-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans">GUI</tspan></text>
+ </g>
+ <g
+ id="g3036">
+ <rect
+ style="opacity:0.67790264;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.02970839;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect12725"
+ width="231.59895"
+ height="224.44492"
+ x="527.73358"
+ y="164.41008" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text5388"
+ y="347.86734"
+ x="604.16968"
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;fill:#000080;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000080;fill-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+ y="347.86734"
+ x="604.16968"
+ id="tspan5390"
+ sodipodi:role="line">CLI</tspan></text>
+ </g>
+ <g
+ id="g3030">
+ <rect
+ style="opacity:0.67790264;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.11477399;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect12723"
+ width="251.51389"
+ height="224.35983"
+ x="-17.865078"
+ y="164.45264" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text5392"
+ y="306.07605"
+ x="102.67558"
+ style="font-size:12px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;text-anchor:middle;fill:#000080;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ xml:space="preserve"><tspan
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000080;fill-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+ y="306.07605"
+ x="102.67558"
+ id="tspan5394"
+ sodipodi:role="line">Web</tspan><tspan
+ id="tspan12708"
+ style="font-size:40px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;fill:#000080;fill-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+ y="356.07605"
+ x="102.67558"
+ sodipodi:role="line">services</tspan></text>
+ </g>
+ </g>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot5349"
+ style="font-size:12px;font-style:normal;font-weight:normal;fill:#241c1c;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+ transform="translate(-1579.3038,-1749.8142)"><flowRegion
+ style="fill:url(#linearGradient5446);fill-opacity:1"
+ id="flowRegion5351"><rect
+ style="fill:#241c1c;fill-opacity:1"
+ id="rect5353"
+ width="560.05524"
+ height="110.27995"
+ x="1765.7467"
+ y="1933.4031" /></flowRegion><flowPara
+ id="flowPara5355"
+ style="font-size:56px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#241c1c;fill-opacity:1;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans Bold">Applications</flowPara></flowRoot> </g>
+ </g>
+</svg>
diff --git a/doc/mainpage.dox b/doc/mainpage.dox
index 9ebda3b..4d72915 100644
--- a/doc/mainpage.dox
+++ b/doc/mainpage.dox
@@ -12,7 +12,7 @@
</tr>
<tr>
<td>
- \li What is Olena ?
+ \li \ref about
\li <a class="el" href="http://www.lrde.epita.fr/cgi-bin/twiki/view/Olena/Publications">Bibliography</a>
\li <a class="el" href="a00028.html">Contributors</a>
</td>
--
1.7.2.5
1
0

29 Nov '11
---
milena/doc/Doxyfile.in | 5 +-
milena/doc/Makefile.am | 19 ++--
milena/doc/groups/{accu.hh => accu.dox} | 0
milena/doc/groups/{graph.hh => graph.dox} | 0
milena/doc/groups/{images.hh => images.dox} | 0
milena/doc/groups/{main.hh => main.dox} | 0
milena/doc/groups/{neighb.hh => neighb.dox} | 0
milena/doc/groups/{site_set.hh => site_set.dox} | 0
milena/doc/groups/{util.hh => util.dox} | 0
milena/doc/groups/{win.hh => win.dox} | 0
milena/doc/mainpage.dox | 121 +++++++++++++++++++++++
milena/mln/core/concept/object.hh | 73 --------------
12 files changed, 134 insertions(+), 84 deletions(-)
rename milena/doc/groups/{accu.hh => accu.dox} (100%)
rename milena/doc/groups/{graph.hh => graph.dox} (100%)
rename milena/doc/groups/{images.hh => images.dox} (100%)
rename milena/doc/groups/{main.hh => main.dox} (100%)
rename milena/doc/groups/{neighb.hh => neighb.dox} (100%)
rename milena/doc/groups/{site_set.hh => site_set.dox} (100%)
rename milena/doc/groups/{util.hh => util.dox} (100%)
rename milena/doc/groups/{win.hh => win.dox} (100%)
create mode 100644 milena/doc/mainpage.dox
diff --git a/milena/doc/Doxyfile.in b/milena/doc/Doxyfile.in
index 7790ce6..5cbaaef 100644
--- a/milena/doc/Doxyfile.in
+++ b/milena/doc/Doxyfile.in
@@ -84,7 +84,7 @@ FILE_VERSION_FILTER =
#---------------------------------------------------------------------------
QUIET = YES
WARNINGS = YES
-WARN_IF_UNDOCUMENTED = YES
+WARN_IF_UNDOCUMENTED = NO
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO
WARN_FORMAT = "$file:$line: $text"
@@ -96,7 +96,8 @@ INPUT = @top_srcdir@/milena
FILE_PATTERNS = *.cc \
*.hh \
*.hxx \
- *.hcc
+ *.hcc \
+ *.dox
RECURSIVE = YES
EXCLUDE = @top_srcdir@/milena/sandbox \
@top_srcdir@/milena/trash \
diff --git a/milena/doc/Makefile.am b/milena/doc/Makefile.am
index 99dd4c6..3437f58 100644
--- a/milena/doc/Makefile.am
+++ b/milena/doc/Makefile.am
@@ -693,14 +693,14 @@ regen-am:
EXTRA_DIST += \
$(DATA_html_dirs) \
$(DOXYFILE).in \
- groups/accu.hh \
- groups/graph.hh \
- groups/images.hh \
- groups/main.hh \
- groups/neighb.hh \
- groups/site_set.hh \
- groups/util.hh \
- groups/win.hh \
+ groups/accu.dox \
+ groups/graph.dox \
+ groups/images.dox \
+ groups/main.dox \
+ groups/neighb.dox \
+ groups/site_set.dox \
+ groups/util.dox \
+ groups/win.dox \
img/small-enlarged.png \
img/small.png \
doxyfuns.sty \
@@ -708,7 +708,8 @@ EXTRA_DIST += \
tools/clearbanner.sh \
tools/sample_utils.hh \
tools/split_sample.sh \
- tools/todoxygen.sh
+ tools/todoxygen.sh \
+ mainpage.dox
## ---------- ##
diff --git a/milena/doc/groups/accu.hh b/milena/doc/groups/accu.dox
similarity index 100%
rename from milena/doc/groups/accu.hh
rename to milena/doc/groups/accu.dox
diff --git a/milena/doc/groups/graph.hh b/milena/doc/groups/graph.dox
similarity index 100%
rename from milena/doc/groups/graph.hh
rename to milena/doc/groups/graph.dox
diff --git a/milena/doc/groups/images.hh b/milena/doc/groups/images.dox
similarity index 100%
rename from milena/doc/groups/images.hh
rename to milena/doc/groups/images.dox
diff --git a/milena/doc/groups/main.hh b/milena/doc/groups/main.dox
similarity index 100%
rename from milena/doc/groups/main.hh
rename to milena/doc/groups/main.dox
diff --git a/milena/doc/groups/neighb.hh b/milena/doc/groups/neighb.dox
similarity index 100%
rename from milena/doc/groups/neighb.hh
rename to milena/doc/groups/neighb.dox
diff --git a/milena/doc/groups/site_set.hh b/milena/doc/groups/site_set.dox
similarity index 100%
rename from milena/doc/groups/site_set.hh
rename to milena/doc/groups/site_set.dox
diff --git a/milena/doc/groups/util.hh b/milena/doc/groups/util.dox
similarity index 100%
rename from milena/doc/groups/util.hh
rename to milena/doc/groups/util.dox
diff --git a/milena/doc/groups/win.hh b/milena/doc/groups/win.dox
similarity index 100%
rename from milena/doc/groups/win.hh
rename to milena/doc/groups/win.dox
diff --git a/milena/doc/mainpage.dox b/milena/doc/mainpage.dox
new file mode 100644
index 0000000..df9eac0
--- /dev/null
+++ b/milena/doc/mainpage.dox
@@ -0,0 +1,121 @@
+/** \mainpage Documentation of milena
+
+ \section intro_sec Introduction
+
+Milena is a generic C++ library, providing many data structures for
+image processing as well as algorithms, in particular in the field of
+mathematical morphology. It is used as the base image processing
+library in all Olena modules.
+
+\subsection mlnimagestruct Images and Structures
+
+Milena can be used on:
+
+\li images based on regular grids (1D, 2D, 3D, ...),
+\li images based on (undirected) graphs,
+\li images based on complexes (http://en.wikipedia.org/wiki/Simplicial_complex)
+\li any subset of the previous image types,
+\li any of the previous images modified by a geometrical/topological transformation.
+
+Core concepts of morphology and topology like adjacency and (resp.)
+structuring elements are represented by neighborhood and window
+(resp.) objects. Milena provides classical neighborhoods and windows
+(e.g., for 4- and 8-connexity on regular 2D grids, adjacent vertices
+on graphs, etc.), but users can define their own objects, and use them
+seamlessly with existing or new algorithms.
+
+\subsection mlnvalues Values
+
+Milena supports many different value types and may therefore be used
+with virtually any real-world image inputs and outputs, as well as new
+and original image types.
+
+Currently handled values types are:
+
+\li Boolean (binary) values,
+\li n-bit integers (with fixed n),
+\li n-bit floating-point values (with fixed n),
+\li n-bit gray-level values (with fixed n),
+\li RGB, HSI, HSL color values,
+\li labels (with no arithmetic),
+\li fixed-size tuples and vectors of the previous value types.
+
+These value types can be freely used with any image type and any
+algorithm, provided the combination is valid. Users can provide
+missing definitions when they want to handle non-covered cases. For
+instance, they can write a definition of the supremum on the set of
+RGB values to compute the morphological dilation of an RGB color
+image.
+
+
+ \section quickstart Quick Start
+
+ If you are new at using Milena, take a look at the following pages :
+
+ \li \ref quickref
+ \li \ref tutorial
+
+ \section mln_sec Overview of Milena.
+
+ <UL>
+ <LI> \ref mln
+ <LI> \ref mln::accu
+ <LI> \ref mln::algebra
+ <LI> \ref mln::arith
+ <LI> \ref mln::binarization
+ <LI> \ref mln::border
+ <LI> \ref mln::canvas
+ <LI> \ref mln::convert
+ <LI> \ref mln::data
+ <LI> \ref mln::debug
+ <LI> \ref mln::display
+ <LI> \ref mln::draw
+ <LI> \ref mln::estim
+ <LI> \ref mln::extension
+ <LI> \ref mln::fun
+ <LI> \ref mln::geom
+ <LI> \ref mln::graph
+ <LI> \ref mln::histo
+ <LI> \ref mln::io
+ <LI> \ref mln::labeling
+ <LI> \ref mln::data
+ <LI> \ref mln::linear
+ <LI> \ref mln::literal
+ <LI> \ref mln::logical
+ <LI> \ref mln::make
+ <LI> \ref mln::math
+ <LI> \ref mln::metal
+ <LI> \ref mln::morpho
+ <LI> \ref mln::norm
+ <LI> \ref mln::opt
+ <LI> \ref mln::pw
+ <LI> \ref mln::registration
+ <LI> \ref mln::set
+ <LI> \ref mln::tag
+ <LI> \ref mln::test
+ <LI> \ref mln::topo
+ <LI> \ref mln::trace
+ <LI> \ref mln::trait
+ <LI> \ref mln::transform
+ <LI> \ref mln::util
+ <LI> \ref mln::value
+ <LI> \ref mln::win
+
+ \section copyright Copyright and License.
+ Copyright (C) 2007, 2008, 2009, 2010, 2011 EPITA Research and
+ Development (LRDE)
+
+ This documentation is part of Olena.
+
+ Olena is free software: you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation, version 2 of the License.
+
+ Olena is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Olena. If not, see <http://www.gnu.org/licenses/>.
+ */
diff --git a/milena/mln/core/concept/object.hh b/milena/mln/core/concept/object.hh
index 4d58fbf..6fefeba 100644
--- a/milena/mln/core/concept/object.hh
+++ b/milena/mln/core/concept/object.hh
@@ -54,79 +54,6 @@
# include <mln/metal/math/all.hh>
-/** \mainpage Documentation of milena
-
- \section intro_sec Introduction
-
- This is the documentation of Milena.
-
- \section mln_sec Overview of Milena.
-
- <UL>
- <LI> \ref mln
- <LI> \ref mln::accu
- <LI> \ref mln::algebra
- <LI> \ref mln::arith
- <LI> \ref mln::binarization
- <LI> \ref mln::border
- <LI> \ref mln::canvas
- <LI> \ref mln::convert
- <LI> \ref mln::data
- <LI> \ref mln::debug
- <LI> \ref mln::display
- <LI> \ref mln::draw
- <LI> \ref mln::estim
- <LI> \ref mln::extension
- <LI> \ref mln::fun
- <LI> \ref mln::geom
- <LI> \ref mln::graph
- <LI> \ref mln::histo
- <LI> \ref mln::io
- <LI> \ref mln::labeling
- <LI> \ref mln::data
- <LI> \ref mln::linear
- <LI> \ref mln::literal
- <LI> \ref mln::logical
- <LI> \ref mln::make
- <LI> \ref mln::math
- <LI> \ref mln::metal
- <LI> \ref mln::morpho
- <LI> \ref mln::norm
- <LI> \ref mln::opt
- <LI> \ref mln::pw
- <LI> \ref mln::registration
- <LI> \ref mln::set
- <LI> \ref mln::tag
- <LI> \ref mln::test
- <LI> \ref mln::topo
- <LI> \ref mln::trace
- <LI> \ref mln::trait
- <LI> \ref mln::transform
- <LI> \ref mln::util
- <LI> \ref mln::value
- <LI> \ref mln::win
-
- \section copyright Copyright and License.
- Copyright (C) 2007, 2008, 2009, 2010, 2011 EPITA Research and
- Development (LRDE)
-
- This documentation is part of Olena.
-
- Olena is free software: you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation, version 2 of the License.
-
- Olena is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Olena. If not, see <http://www.gnu.org/licenses/>.
- */
-
-
-
/** \namespace mln
\brief The namespace mln corresponds to the Milena (mini-Olena) project.
--
1.7.2.5
1
0
---
doc/contributors.dox | 2 +-
doc/license.dox | 2 +-
doc/license_commercial.dox | 2 +-
doc/mainpage.dox | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/doc/contributors.dox b/doc/contributors.dox
index 82b35c6..93d761e 100644
--- a/doc/contributors.dox
+++ b/doc/contributors.dox
@@ -1,4 +1,4 @@
-/** \page Contributors List of contributors
+/** \page contributors Contributors
\htmlinclude contributors.html
diff --git a/doc/license.dox b/doc/license.dox
index eb9a8e4..55bb41d 100644
--- a/doc/license.dox
+++ b/doc/license.dox
@@ -1,4 +1,4 @@
-/*! \page gplv2 "GNU General Public License (GPL)"
+/*! \page gplv2 GNU General Public License (GPL)
Olena and its modules are Copyright (C) 2011 EPITA Research and
Development Laboratory (LRDE).
diff --git a/doc/license_commercial.dox b/doc/license_commercial.dox
index af2f094..05603fa 100644
--- a/doc/license_commercial.dox
+++ b/doc/license_commercial.dox
@@ -1,4 +1,4 @@
-/*! \page commercial "Commercial Use"
+/*! \page commercial Commercial Use
Even though Olena is released under GPL v2, using Olena in a close
source commercial products may be possible.
diff --git a/doc/mainpage.dox b/doc/mainpage.dox
index 4d72915..17b72cc 100644
--- a/doc/mainpage.dox
+++ b/doc/mainpage.dox
@@ -14,7 +14,7 @@
<td>
\li \ref about
\li <a class="el" href="http://www.lrde.epita.fr/cgi-bin/twiki/view/Olena/Publications">Bibliography</a>
- \li <a class="el" href="a00028.html">Contributors</a>
+ \li \ref contributors
</td>
<td>
\li \ref moduleslist
--
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 exp/newdoc has been created
at 77f1a73c35522b7ca5f244cd22875407a369ae33 (commit)
- Log -----------------------------------------------------------------
77f1a73 Fix copyright section name
5f8d131 Regen auto-generated makefiles
69c3a36 Cleanup Makefiles
d821327 Move logo
695a1f2 Add more information in binarization algorithms documentation.
81cd3b6 Add an image for illustrating Milena's possibilities.
cb12f69 Improve General documentation menu
967af63 Improve binarization related documentation.
e0093d8 Improve Milena doc directory structure.
a09c009 Improve Olena presentation.
0949555 Add more content in general documentation.
899e2b8 Update general documentation.
ef717c9 doc/Doxyfile.in: Do not warn about undocumented code.
20ec3f3 Fix and improve documentation in Scribo.
c3282fa Add support for bibliography generation and Improve scribo doc rendering.
dc00c29 Introduce bib files.
81ff577 Add support for bib files in Milena's doc.
d88afde First draft of unified doc.
769726b Move Otsu's threshold computation in a separate routine.
e300aac Add Niblack's binarization algorithm.
-----------------------------------------------------------------------
hooks/post-receive
--
Olena, a generic and efficient image processing platform
1
0

Re: [Olena-patches] [Olena] #43: Fix the initialization of all global constants.
by Olena Trac 29 Nov '11
by Olena Trac 29 Nov '11
29 Nov '11
#43: Fix the initialization of all global constants.
------------------------+---------------------------------------------------
Reporter: garrigues | Owner: Olena Team
Type: defect | Status: closed
Priority: major | Milestone: Olena 2.1
Component: Milena | Version: 1.0
Resolution: fixed | Keywords:
------------------------+---------------------------------------------------
Changes (by lazzara):
* status: reopened => closed
* resolution: => fixed
Comment:
Several patches included in Olena 2.0 improved the initialization of
global constants and fixed compilation issues with multiple files.
MLN_WO_GLOBAL_VARS macro solved most of the compilation issues.
Ticket #243 is also related to global constant initialization and refers
to changes made about that.
Patch 1f0b6046717272eac676f1f9212ce1f6ab00eba0 adds missing 'inline'
keywords and re-enables the test checking compilation with multiple files.
The test is now valid and passes.
This ticket is considered as resolved.
--
Ticket URL: <https://trac.lrde.org/olena/ticket/43#comment:7>
Olena <http://olena.lrde.epita.fr>
Olena, a software platform dedicated to image processing.
1
0