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 updated
via 84a382e74cae76fd681bde2d6473a1975b62ec98 (commit)
via 2e932719df7f8d3db303fd17cd6b75e1de75c7b3 (commit)
via 309be63b08b612bbfb16d95723476fdcdb9adf8c (commit)
via c70b3a64688d3df3a20594b25f2b881bb5949535 (commit)
via 1df707ba5800782c898057332448cb5d92acc995 (commit)
via 0aa95fef8db6db963f10674225031013a010a77c (commit)
from 1683d096635a12b58d3df18294f50f84662babb1 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
84a382e Add a module related to literals.
2e93271 Small fixes in existing documentation.
309be63 mln/core/concept/iterator.hh: Document iterator macros.
c70b3a6 Move concepts in their related type module.
1df707b doc/Doxyfile.in: Hide 'It' symbol.
0aa95fe doc/mln/core/image/images.dox: Document generic image interface.
-----------------------------------------------------------------------
Summary of changes:
milena/ChangeLog | 48 ++++++
milena/doc/Doxyfile.in | 3 +-
milena/doc/mln/core/image/images.dox | 272 ++++++++++++++++++++++++++++++-
milena/doc/mln/literal/literal.dox | 14 ++
milena/mln/core/concept/image.hh | 2 +-
milena/mln/core/concept/iterator.hh | 30 +++-
milena/mln/core/concept/neighborhood.hh | 2 +-
milena/mln/core/concept/site_set.hh | 2 +-
milena/mln/core/concept/value.hh | 2 +-
milena/mln/core/concept/window.hh | 2 +-
milena/mln/core/macros.hh | 16 +-
milena/mln/data/convert.hh | 1 -
milena/mln/literal/black.hh | 10 +-
milena/mln/literal/colors.hh | 89 ++++++++--
milena/mln/literal/identity.hh | 10 +-
milena/mln/literal/max.hh | 10 +-
milena/mln/literal/min.hh | 9 +-
milena/mln/literal/one.hh | 10 +-
milena/mln/literal/origin.hh | 10 +-
milena/mln/literal/white.hh | 8 +-
milena/mln/literal/zero.hh | 11 +-
milena/mln/value/qt/rgb32.hh | 2 +-
22 files changed, 497 insertions(+), 66 deletions(-)
create mode 100644 milena/doc/mln/literal/literal.dox
hooks/post-receive
--
Olena, a generic and efficient image processing platform
* mln/data/convert.hh: Remove a duplicate \overload.
* mln/core/macros.hh: Fix definitions.
* mln/value/qt/rgb32.hh: Fix invalid cross reference.
---
milena/ChangeLog | 10 ++++++++++
milena/mln/core/macros.hh | 16 ++++++++--------
milena/mln/data/convert.hh | 1 -
milena/mln/value/qt/rgb32.hh | 2 +-
4 files changed, 19 insertions(+), 10 deletions(-)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index 35d0b5d..31a5976 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,5 +1,15 @@
2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+ Small fixes in existing documentation.
+
+ * mln/data/convert.hh: Remove a duplicate \overload.
+
+ * mln/core/macros.hh: Fix definitions.
+
+ * mln/value/qt/rgb32.hh: Fix invalid cross reference.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
* mln/core/concept/iterator.hh: Document iterator macros.
2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
diff --git a/milena/mln/core/macros.hh b/milena/mln/core/macros.hh
index 25bfcc1..681abfe 100644
--- a/milena/mln/core/macros.hh
+++ b/milena/mln/core/macros.hh
@@ -553,7 +553,7 @@
// g
/*!
- \def mln_fwd_geom(T)
+ \def mln_geom(T)
\brief Shortcuts to access the geometry type associated to T.
To be used in templated functions only.
@@ -561,7 +561,7 @@
\relates mln::Image
*/
/*!
- \def mln_fwd_geom_(T)
+ \def mln_geom_(T)
\brief Shortcuts to access the geometry type associated to T.
To be used in non-templated functions only.
@@ -575,7 +575,7 @@
/// \}
/*!
- \def mln_fwd_grid(T)
+ \def mln_grid(T)
\brief Shortcuts to access the grid type associated to T.
To be used in templated functions only.
@@ -583,7 +583,7 @@
\relates mln::Image
*/
/*!
- \def mln_fwd_grid_(T)
+ \def mln_grid_(T)
\brief Shortcuts to access the grid type associated to T.
To be used in non-templated functions only.
@@ -867,7 +867,7 @@
// q
/*!
- \def mln_qlt_value(T)
+ \def mln_qlf_value(T)
\brief Shortcuts to access the qualified (const or mutable) value
type associated to T.
@@ -876,7 +876,7 @@
\relates mln::Image
*/
/*!
- \def mln_qlt_value_(T)
+ \def mln_qlf_value_(T)
\brief Shortcuts to access the qualified (const or mutable) value
type associated to T.
@@ -1050,7 +1050,7 @@
/// \}
/*!
- \def mln_value(T)
+ \def mln_rvalue(T)
\brief Shortcuts to access the value type associated to T.
To be used in templated functions only.
@@ -1058,7 +1058,7 @@
\relates mln::Function
*/
/*!
- \def mln_value_(T)
+ \def mln_rvalue_(T)
\brief Shortcuts to access the value type associated to T.
To be used in non-templated functions only.
diff --git a/milena/mln/data/convert.hh b/milena/mln/data/convert.hh
index e186423..749458a 100644
--- a/milena/mln/data/convert.hh
+++ b/milena/mln/data/convert.hh
@@ -72,7 +72,6 @@ namespace mln
/*! \overload
\brief Convert the image \p input by changing the value type.
- \overload
This overload allows to specify a specific conversion function
thanks to parameter \p convert_function.
diff --git a/milena/mln/value/qt/rgb32.hh b/milena/mln/value/qt/rgb32.hh
index 0638180..02c53a9 100644
--- a/milena/mln/value/qt/rgb32.hh
+++ b/milena/mln/value/qt/rgb32.hh
@@ -172,7 +172,7 @@ namespace mln
QImage::Format_RGB32 or QImage::Format_ARGB32.
\ingroup valuergb
- \sa to_qimage_nocopy_qt_rgb32
+ \sa to_qimage_nocopy to_qimage
*/
struct rgb32
:
--
1.7.2.5
---
milena/ChangeLog | 4 ++++
milena/mln/core/concept/iterator.hh | 30 ++++++++++++++++++++++--------
2 files changed, 26 insertions(+), 8 deletions(-)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index ef80cbb..35d0b5d 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,5 +1,9 @@
2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+ * mln/core/concept/iterator.hh: Document iterator macros.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
Move concepts in their related type module.
* mln/core/concept/image.hh,
diff --git a/milena/mln/core/concept/iterator.hh b/milena/mln/core/concept/iterator.hh
index 9de2034..a8f74ec 100644
--- a/milena/mln/core/concept/iterator.hh
+++ b/milena/mln/core/concept/iterator.hh
@@ -33,14 +33,20 @@
# include <mln/core/concept/object.hh>
-/*! \brief Loop to browse all the elements targetted by the iterator
- * \p x.
+/*!
+ \def for_all(x)
+ \brief Loop to browse all the elements targetted by the iterator
+ \p x.
+ \ingroup mlnmacros
*/
# define for_all(x) for(x.start(); x.is_valid(); x.next())
-/*! \brief Loop to browse all the elements targetted by the couples of
- * iterators \p x1 and \p x2.
+/*!
+ \def for_all_2(x1, x2)
+ \brief Loop to browse all the elements targetted by the couples of
+ iterators \p x1 and \p x2.
+ \ingroup mlnmacros
*/
# define for_all_2(x1, x2) \
for(x1.start(), x2.start(); \
@@ -48,8 +54,11 @@
x1.next(), x2.next())
-/*! \brief Loop to browse all the elements targetted by the triplet of
- * iterators \p x1, \p x2, and \p x3.
+/*!
+ \def for_all_3(x1, x2, x3)
+ \brief Loop to browse all the elements targetted by the triplet of
+ iterators \p x1, \p x2, and \p x3.
+ \ingroup mlnmacros
*/
# define for_all_3(x1, x2, x3) \
for(x1.start(), x2.start(), x3.start(); \
@@ -57,8 +66,13 @@
x1.next(), x2.next(), x3.next())
-/*! \brief Loop to browse all the remaining elements targetted by the
- * iterator \p x.
+/*
+ \def for_all_remaining(x)
+
+ \brief Loop to browse all the remaining elements targetted by the
+ iterator \p x.
+
+ \ingroup mlnmacros
*/
# define for_all_remaining(x) \
if (! x.is_valid()) {} else while (x.next(), x.is_valid())
--
1.7.2.5
---
milena/ChangeLog | 4 +
milena/doc/mln/core/image/images.dox | 272 +++++++++++++++++++++++++++++++++-
2 files changed, 272 insertions(+), 4 deletions(-)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index ec9f02d..21e91cb 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,5 +1,9 @@
2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+ * doc/mln/core/image/images.dox: Document generic image interface.
+
+2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
+
* doc/mln/main.dox: Set macro module as top level entry.
2013-04-30 Guillaume Lazzara <z(a)lrde.epita.fr>
diff --git a/milena/doc/mln/core/image/images.dox b/milena/doc/mln/core/image/images.dox
index ac8508e..d559794 100644
--- a/milena/doc/mln/core/image/images.dox
+++ b/milena/doc/mln/core/image/images.dox
@@ -1,8 +1,272 @@
/*! \defgroup modimage Images
- *
- * \brief All the generic image types provided in Olena.
- *
- * \ingroup modtypes
+
+ \brief All the generic image types provided in Olena.
+
+ In the following sections, the common interface of Milena image
+ types is detailed. Methods and routines detailed hereinafter are
+ considered as generic and work for any dimension, value type and
+ image type.
+
+
+ \section docaccval Access Values
+
+ Every image has a member operator() taking a site as argument and
+ returning its corresponding value.
+
+ \code
+ image2d<int> ima(2,2);
+ std::cout << ima(point2d(1,1)) << std::endl; // Displays value at (1,1)
+ \endcode
+
+ Here, a 2D image is used and its equivalent site is a
+ mln::point2d. This example displays the value at site (1,1).
+
+ operator() exists both in const and non-const version which means
+ that it is also possible to change the value at a given site:
+
+ \code
+ image2d<int> ima(2,2);
+ ima(point2d(1,1)) = 6; // Assigns value at (1,1)
+ std::cout << ima(point2d(1,1)) << std::endl; // Displays '6'
+ \endcode
+
+
+ \section dociterdomval Iterate over the domain and values
+
+ \subsection docaccvalpiter Site-Based Iterators
+
+ A generic way of iterating over the values of an image is to use
+ mln_piter() macro to declare an iterator.
+
+ \code
+ typedef image2d<bool> I;
+ I ima(2, 2);
+
+ mln_piter(I) p(ima.domain());
+ for_all(p)
+ ima(p) = true;
+ \endcode
+
+ Note that iterator \c p must be first declared over the domain of
+ the target image \c ima. Then iterator \c p is moved over the image
+ thanks to the for_all() macro. An iterator declared with
+ mln_piter() can be considered as having the same interface as a site
+ of the target image. Here, \c p can be considered as a mln::point2d
+ and thus can be passed to image2d::operator() to access the value of
+ the current point.
+
+ The for_all() is in charge of initializing the iterator and move it
+ forward. It is safe to have two for_all() loops successively with
+ the same iterator:
+
+ \code
+ typedef image2d<bool> I;
+ I ima(2, 2);
+
+ mln_piter(I) p(ima.domain());
+ for_all(p)
+ ima(p) = true;
+
+ for_all(p) // It is safe: p is initialized again.
+ ima(p) = false;
+ \endcode
+
+ mln_piter() iterates with respect to the default browsing direction
+ defined by the image it is defined on. In most cases, forward
+ direction is used: from the top left to the bottom right of the
+ image, line by line. It is possible to force browsing direction
+ using mln_bkd_piter() (backward iteration) and mln_fwd_piter()
+ (forward iteration).
+
+ It is possible to browse several images at the same time using
+ specific for_all() macro.
+
+ \code
+ typedef image2d<bool> I;
+ I ima1(2, 2);
+ I ima2(2, 2);
+
+ mln_piter(I) p1(ima1.domain());
+ mln_piter(I) p2(ima2.domain());
+ for_all_2(p1, p2) // Browse two images at the same time
+ {
+ ima1(p1) = true;
+ ima2(p2) = true;
+ }
+
+ I ima3(2, 2);
+ mln_piter(I) p3(ima3.domain());
+ for_all_3(p1, p2, p3) // Browse three images at the same time
+ {
+ ima1(p1) = true;
+ ima2(p2) = true;
+ ima3(p3) = true;
+ }
+ \endcode
+
+ Site-based iterators are generic enough to be passed to another
+ image than the one it is defined on. Images must be defined with the
+ same topology (grid, cube, etc.) and, therefore, with the same
+ dimension.
+
+ \code
+ typedef image2d<bool> I;
+ I ima1(2, 2);
+ I ima2(2, 2);
+
+ mln_piter(I) p(ima1.domain());
+ for_all(p) // Browse image ima1
+ {
+ ima1(p) = true;
+ ima2(p) = true; // Valid, ima2.domain().has(p) == true
+ }
+ \endcode
+
+ Note that \c p can be used to access \c ima2 values since \c p is
+ part of the domain of \c ima2 and a corresponding value exists. If
+ it is not the case, it is possible to check if a site belongs to an
+ image domain thanks to the \c has() method of the domain. This
+ method always exists.
+
+
+ \subsection docaccvalpixter Pointer-Based Iterators
+
+ Site-based iterators are handy because they can be exchanged between
+ images and they are generic enough to be supported by all
+ images. However, they imply a cost at computation time which can
+ sometimes be avoided.
+
+ Most of the concrete image types define pointer-based iterator: \c
+ pixter. These iterators relies on memory pointers and access data
+ in a more efficient way. They cannot be used directly with another
+ image than the one they are defined on, and their interface slightly
+ differs from site-based iterators.
+
+ \code
+ typedef image2d<bool> I;
+ I ima(2, 2);
+
+ mln_pixter(I) p(ima);
+ for_all(p)
+ p.val() = true;
+
+ typedef image2d<bool> I;
+ I ima2(2, 2);
+
+ mln_pixter(I) p2(ima2);
+ for_all_2(p, p2)
+ {
+ p.val() = true;
+ p2.val() = true;
+ }
+ \endcode
+
+
+
+ \section docimaext Extend Image Domain
+
+ Sometimes, it is useful have values outside of the image
+ domain. This concept is useful in many algorithms and can avoid
+ costly tests while working with sites located on image edges.
+
+ Milena provides infinite extensions of which values are set using a
+ value, a function or, an image. It can be performed using
+ mln::extend().
+
+ mln::extended_to() is also a useful routine while debugging image
+ extensions. It allows to extend the image domain. It is used in the
+ following examples to make debug images more explicit regarding
+ extension values.
+
+ In the following explanations, we will consider image \c ima_roi as
+ input image. It is a mln::sub_image from \c lena image. Its domain
+ is defined only on the square parts with values different from
+ black.
+
+ <table border=0>
+ <tr>
+ <td> \image html small-enlarged.png "Lena"</td>
+ <td> \f$\rightarrow\f$ </td>
+ <td> \image html extend-1.png "ima_roi (black color means the sites are not included in the domain)" </td>
+ </tr>
+ </table>
+
+ \subsection docimaextval Extension of Value
+
+ Let's use the following code:
+
+ \include extend-3.cc.raw
+ \image html extend-2.png "ima_roi with its extension set to literal::blue."
+
+ Note the use of the extended_to() routine which uses a larger bbox
+ to extend the image domain. That is the reason why the image is
+ surrounded by the extension value, blue.
+
+
+ \subsection docimaextfun Extension with a Function
+
+ Let's use the following function:
+
+ \include extend-1.cc.raw
+ \include extend-4.cc.raw
+
+ \image html extend-3.png "ima_roi with its extension set by my_ext() functor."
+
+
+ \subsection docimaextima Extension with an Image
+
+ Let's extend with the original image, \c Lena.
+ \include extend-5.cc.raw
+
+ <table border=0>
+ <tr>
+ <td> \image html extend-4.png "ext_with_ima, the extended image."</td>
+ <td> \image html extend-5.png "The actual data in the domain (light) with its extension (dark)" </td>
+ </tr>
+ </table>
+
+
+ \section docimainit Image Initialization
+
+ In Milena, no memory management is needed. Image data is shared
+ between different image instances. In the following example, no copy
+ is made: \c ima1 and \c ima2 point to the same data.
+
+ \code
+ image2d<bool> ima1(3,3);
+ image2d<bool> ima2 = ima1;
+ // ima2 and ima1 point to the same data.
+ \endcode
+
+ For making a deep copy of an image use mln::duplicate().
+
+ \code
+ image2d<bool> ima1(3,3);
+ image2d<bool> ima2 = duplicate(ima1);
+ // ima2 is a deep copy of ima1, they do not point to the same data.
+ \endcode
+
+ Sometimes, one wants to duplicate image geometry but not its data. mln::initialize()
+
+ \code
+ image2d<bool> ima1(3,3);
+ initialize(ima2, ima1);
+ // ima2 has the same border and domain as ima1. Its data is not initialized.
+ \endcode
+
+ Image data is destroyed automatically when no image instance points
+ to that data.
+
+ On concrete images, it is possible to explicitly release the data
+ thanks to destroy().
+
+ \code
+ image2d<bool> ima1(3,3);
+ ima1.destroy(); // Free underlying data if no other image holds it.
+ \endcode
+
+
+ \ingroup modtypes
*/
--
1.7.2.5
------------------ Début de Rapport SpamAssassin ---------------------
Ce message est probablement du SPAM (message non sollicité envoyé en
masse, publicité, escroquerie...).
Cette notice a été ajoutée par le système d'analyse "SpamAssassin" sur
votre serveur de courrier "goa.lrde.epita.fr", pour vous
aider à identifier ce type de messages.
Le système SpamAssassin ajoute un en-tête "X-Spam-Flag: YES" aux
messages qu'il considère comme étant probablement du Spam.
Vous pouvez si vous le souhaitez utiliser cette caractéristique
pour régler un filtre dans votre logiciel de lecture de courrier,
afin de détruire ou de classer à part ce type de message.
Si ce robot a classifié incorrectement un message qui vous était
destiné, ou pour toute question, veuillez contacter l'administrateur
du système par e-mail à @@CONTACT_ADDRESS@@ .
Voir http://spamassassin.apache.org/tag/ pour plus de détails (en anglais).
Détails de l'analyse du message: (13.3 points, 5.0 requis)
2.9 HELO_DYNAMIC_SPLIT_IP Relay HELO'd using suspicious hostname (Split
IP)
0.0 RCVD_IN_SORBS_DUL RBL: Envoyé directement depuis une adresse IP
dynamique
[85.52.40.116 listed in dnsbl.sorbs.net]
1.7 URIBL_WS_SURBL Contains an URL listed in the WS SURBL blocklist
[URIs: googlejob-france.com]
0.3 URIBL_RHS_DOB Contains an URI of a new domain (Day Old Bread)
[URIs: googlejob-france.com]
1.8 URIBL_BLACK Contains an URL listed in the URIBL blacklist
[URIs: googlejob-france.com]
0.0 HTML_MESSAGE BODY: HTML inclus dans le message
1.1 MIME_HTML_ONLY BODY: Le message possède uniquement des parties MIME
text/html
1.7 URIBL_DBL_SPAM Contains an URL listed in the DBL blocklist
[URIs: googlejob-france.com]
3.6 RCVD_IN_PBL RBL: Received via a relay in Spamhaus PBL
[85.52.40.116 listed in zen.spamhaus.org]
0.4 RDNS_DYNAMIC Delivered to internal network by host with
dynamic-looking rDNS
-------------------- Fin de Rapport SpamAssassin ---------------------
Le message original n'étant pas au format text brut, il est peut-être
dangereux de l'ouvrir avec votre logiciel e-mail ; en particulier il
pourrait contenir un virus, ou confirmer à l'expéditeur que votre
adresse e-mail est active, et peut recevoir du spam. Si vous voulez
lire ce message, et n'êtes pas certain de la sécurité de votre logiciel
e-mail, il est plus prudent d'enregistrer ce message sur votre disque
dur, et de l'afficher ensuite avec un éditeur de texte.
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 updated
discards f6350262c7c3da55dbbbc7093f396837308e8a5e (commit)
discards be2c37d176bae11f4bbaaaa8b83b9abab7fc4c6e (commit)
discards 2072dc281d75e057b0673649f6d2ecde34552256 (commit)
discards e9a8db214da0520749aab56910d856cb817c7b2d (commit)
discards 2c6bbd3c7ac77360750bab1e62de967793474043 (commit)
discards 5cb0e43a8c37545f7e04d1f07f6ae13159ffb277 (commit)
via 1683d096635a12b58d3df18294f50f84662babb1 (commit)
via b5e43857359de8024e8ac0d9d851543bfd8e80e9 (commit)
via 03eb6db89b595d2ad404cf894ecfd1a5a7aa7f16 (commit)
via ceb847dc3fed22960515c81ae86ed575a7e03d6c (commit)
via cbb253decdcf96a51d71c10a781101b391bf461b (commit)
This update added new revisions after undoing existing revisions. That is
to say, the old revision is not a strict subset of the new revision. This
situation occurs when you --force push a change and generate a repository
containing something like this:
* -- * -- B -- O -- O -- O (f6350262c7c3da55dbbbc7093f396837308e8a5e)
\
N -- N -- N (1683d096635a12b58d3df18294f50f84662babb1)
When this happens we assume that you've already had alert emails for all
of the O revisions, and so we here report only the revisions in the N
branch from the common base, B.
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
1683d09 doc/mln/main.dox: Set macro module as top level entry.
b5e4385 mln/core/concept/image.hh: Document Image concept.
03eb6db doc/mln/value/value/dox: Specify that built-in types can be used.
ceb847d Introduce a new module for useful macros.
cbb253d Improve documentation in fun::p2b, fun::p2p, fun::p2v and fun::x2v.
-----------------------------------------------------------------------
Summary of changes:
milena/ChangeLog | 4 ----
milena/mln/fun/p2v/elifs.hh | 4 ++--
2 files changed, 2 insertions(+), 6 deletions(-)
hooks/post-receive
--
Olena, a generic and efficient image processing platform
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 updated
via f6350262c7c3da55dbbbc7093f396837308e8a5e (commit)
from be2c37d176bae11f4bbaaaa8b83b9abab7fc4c6e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
f635026 doc/mln/main.dox: Set macro module as top level entry.
-----------------------------------------------------------------------
Summary of changes:
milena/ChangeLog | 4 ++++
milena/doc/mln/main.dox | 13 ++++++-------
2 files changed, 10 insertions(+), 7 deletions(-)
hooks/post-receive
--
Olena, a generic and efficient image processing platform