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

last-svn-commit-201-gd0945cb Introduce an extension-by-mutable-image morpher.
by Roland Levillain 09 Sep '10
by Roland Levillain 09 Sep '10
09 Sep '10
* mln/core/image/dmorph/mutable_extension_ima.hh: New.
* headers.mk: Regen.
---
milena/ChangeLog | 7 ++
milena/headers.mk | 1 +
.../{extension_ima.hh => mutable_extension_ima.hh} | 92 +++++++++-----------
3 files changed, 51 insertions(+), 49 deletions(-)
copy milena/mln/core/image/dmorph/{extension_ima.hh => mutable_extension_ima.hh} (68%)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index 18e4ada..eb4f2da 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,5 +1,12 @@
2010-09-09 Roland Levillain <roland(a)lrde.epita.fr>
+ Introduce an extension-by-mutable-image morpher.
+
+ * mln/core/image/dmorph/mutable_extension_ima.hh: New.
+ * headers.mk: Regen.
+
+2010-09-09 Roland Levillain <roland(a)lrde.epita.fr>
+
Make the 5th argument of breadth_first_thinning truly optional.
* mln/topo/skeleton/breadth_first_thinning.hh
diff --git a/milena/headers.mk b/milena/headers.mk
index 110caa6..7929341 100644
--- a/milena/headers.mk
+++ b/milena/headers.mk
@@ -277,6 +277,7 @@ mln/core/image/dmorph/hexa.hh \
mln/core/image/dmorph/hexa_piter.hh \
mln/core/image/dmorph/image2d_h.hh \
mln/core/image/dmorph/image_if.hh \
+mln/core/image/dmorph/mutable_extension_ima.hh \
mln/core/image/dmorph/p2p_image.hh \
mln/core/image/dmorph/slice_image.hh \
mln/core/image/dmorph/sub_image.hh \
diff --git a/milena/mln/core/image/dmorph/extension_ima.hh b/milena/mln/core/image/dmorph/mutable_extension_ima.hh
similarity index 68%
copy from milena/mln/core/image/dmorph/extension_ima.hh
copy to milena/mln/core/image/dmorph/mutable_extension_ima.hh
index a0bc9ca..f208581 100644
--- a/milena/mln/core/image/dmorph/extension_ima.hh
+++ b/milena/mln/core/image/dmorph/mutable_extension_ima.hh
@@ -1,4 +1,4 @@
-// Copyright (C) 2008, 2009 EPITA Research and Development Laboratory
+// Copyright (C) 2008, 2009, 2010 EPITA Research and Development Laboratory
// (LRDE)
//
// This file is part of Olena.
@@ -24,13 +24,13 @@
// exception does not however invalidate any other reasons why the
// executable file might be covered by the GNU General Public License.
-#ifndef MLN_CORE_IMAGE_DMORPH_EXTENSION_IMA_HH
-# define MLN_CORE_IMAGE_DMORPH_EXTENSION_IMA_HH
+#ifndef MLN_CORE_IMAGE_DMORPH_MUTABLE_EXTENSION_IMA_HH
+# define MLN_CORE_IMAGE_DMORPH_MUTABLE_EXTENSION_IMA_HH
/// \file
///
/// Definition of a morpher that extends the domain of an image
-/// with an image.
+/// with a readable and writable (rw) image.
# include <mln/core/internal/image_identity.hh>
@@ -40,17 +40,17 @@ namespace mln
{
// Forward declaration.
- template <typename I, typename J> struct extension_ima;
+ template <typename I, typename J> struct mutable_extension_ima;
namespace internal
{
- /// Data structure for \c mln::extension_ima<I, J>.
+ /// Data structure for \c mln::mutable_extension_ima<I, J>.
template <typename I, typename J>
- struct data< extension_ima<I, J> >
+ struct data< mutable_extension_ima<I, J> >
{
- data(I& ima, const J& ext);
+ data(I& ima, J& ext);
I ima_;
J ext_;
@@ -63,7 +63,7 @@ namespace mln
{
template <typename I, typename J>
- struct image_< extension_ima<I, J> > : image_< I > // Same as I except...
+ struct image_< mutable_extension_ima<I, J> > : image_< I > // Same as I except...
{
// ...these changes.
typedef trait::image::category::identity_morpher category;
@@ -77,11 +77,11 @@ namespace mln
};
template <typename I, typename J, typename V>
- struct ch_value< extension_ima<I, J>, V >
+ struct ch_value< mutable_extension_ima<I, J>, V >
{
typedef mlc_converts_to(mln_value(J), V) keep_ext;
typedef mln_ch_value(I, V) Iv;
- typedef extension_ima<Iv, J> Iv_ext;
+ typedef mutable_extension_ima<Iv, J> Iv_ext;
typedef mlc_if(keep_ext, Iv_ext, Iv) ret;
};
@@ -94,15 +94,15 @@ namespace mln
/// \ingroup modimagedomainmorpher
//
template <typename I, typename J>
- class extension_ima
+ class mutable_extension_ima
- : public internal::image_identity< I, mln_domain(I), extension_ima<I, J> >,
+ : public internal::image_identity< I, mln_domain(I), mutable_extension_ima<I, J> >,
private mlc_converts_to(mln_value(J), mln_value(I))::check_t
{
public:
/// Skeleton.
- typedef extension_ima< tag::image_<I>, tag::ext_<J> > skeleton;
+ typedef mutable_extension_ima< tag::image_<I>, tag::ext_<J> > skeleton;
/// Image value type.
typedef mln_value(I) value;
@@ -111,14 +111,14 @@ namespace mln
typedef mln_value(I) rvalue;
/// Constructor without argument.
- extension_ima();
+ mutable_extension_ima();
/// Constructor from an image \p ima and a function \p ext.
- extension_ima(I& ima, const J& ext);
+ mutable_extension_ima(I& ima, J& ext);
/// Deferred initialization from an image \p ima and a function \p
/// ext.
- void init_(I& ima, const J& ext);
+ void init_(I& ima, J& ext);
/// Test if \p p is valid.
@@ -131,52 +131,52 @@ namespace mln
mln_value(I) operator()(const mln_psite(I)& p) const;
/// Read-write access to the image value located at site \p p.
- mln_morpher_lvalue(I) operator()(const mln_psite(I)& p);
+ mln_lvalue(I) operator()(const mln_psite(I)& p);
- /// Read-only access to the extension domain (image).
- const J& extension() const;
+ /// Access to the extension domain (image).
+ J& extension() ;
};
// init_
template <typename I, typename J, typename M>
- void init_(tag::image_t, extension_ima<I,J>& target, const M& model);
+ void init_(tag::image_t, mutable_extension_ima<I,J>& target, const M& model);
template <typename J, typename I>
- void init_(tag::extension_t, J& target, const extension_ima<I,J>& model);
+ void init_(tag::extension_t, J& target, const mutable_extension_ima<I,J>& model);
# ifndef MLN_INCLUDE_ONLY
- // internal::data< extension_ima<I,S> >
+ // internal::data< mutable_extension_ima<I,S> >
namespace internal
{
template <typename I, typename J>
inline
- data< extension_ima<I, J> >::data(I& ima, const J& ext)
+ data< mutable_extension_ima<I, J> >::data(I& ima, J& ext)
: ima_(ima),
- ext_(const_cast<J&>(ext))
+ ext_(ext)
{
}
} // end of namespace mln::internal
- // extension_ima<I, J>
+ // mutable_extension_ima<I, J>
template <typename I, typename J>
inline
- extension_ima<I, J>::extension_ima()
+ mutable_extension_ima<I, J>::mutable_extension_ima()
{
}
template <typename I, typename J>
inline
- extension_ima<I, J>::extension_ima(I& ima, const J& ext)
+ mutable_extension_ima<I, J>::mutable_extension_ima(I& ima, J& ext)
{
init_(ima, ext);
}
@@ -184,16 +184,16 @@ namespace mln
template <typename I, typename J>
inline
void
- extension_ima<I, J>::init_(I& ima, const J& ext)
+ mutable_extension_ima<I, J>::init_(I& ima, J& ext)
{
- this->data_ = new internal::data< extension_ima<I, J> >(ima, ext);
+ this->data_ = new internal::data< mutable_extension_ima<I, J> >(ima, ext);
}
template <typename I, typename J>
template <typename P>
inline
bool
- extension_ima<I, J>::has(const P& p) const
+ mutable_extension_ima<I, J>::has(const P& p) const
{
mln_precondition(this->is_valid());
mln_precondition(this->data_->ext_.is_valid());
@@ -205,7 +205,7 @@ namespace mln
template <typename I, typename J>
inline
mln_value(I)
- extension_ima<I, J>::operator()(const mln_psite(I)& p) const
+ mutable_extension_ima<I, J>::operator()(const mln_psite(I)& p) const
{
mln_precondition(this->is_valid());
mln_precondition(has(p));
@@ -219,29 +219,23 @@ namespace mln
template <typename I, typename J>
inline
- mln_morpher_lvalue(I)
- extension_ima<I, J>::operator()(const mln_psite(I)& p)
+ mln_lvalue(I)
+ mutable_extension_ima<I, J>::operator()(const mln_psite(I)& p)
{
- static mln_value(I) cpy;
mln_precondition(this->is_valid());
mln_precondition(has(p));
- // See the above comment about if-else v. ternary.
+ // if-else is preferred to the ternary op to allow for the
+ // function result to convert towards the expected return type.
if (this->data_->ima_.domain().has(p))
return this->data_->ima_(p);
else
- {
- // This hack makes this signature valid both in the image
- // domain and in its extension. It works even if
- // mln_morpher_lvalue(I) is a mutable reference.
- cpy = this->data_->ext_(p);
- return cpy;
- }
+ return this->data_->ext_(p);
}
template <typename I, typename J>
inline
- const J&
- extension_ima<I, J>::extension() const
+ J&
+ mutable_extension_ima<I, J>::extension()
{
mln_precondition(this->is_valid());
return this->data_->ext_;
@@ -251,7 +245,7 @@ namespace mln
template <typename I, typename J, typename M>
inline
- void init_(tag::image_t, extension_ima<I,J>& target, const M& model)
+ void init_(tag::image_t, mutable_extension_ima<I,J>& target, const M& model)
{
I ima;
init_(tag::image, ima, model);
@@ -262,10 +256,10 @@ namespace mln
template <typename J, typename I>
inline
- void init_(tag::extension_t, J& target, const extension_ima<I,J>& model)
+ void init_(tag::extension_t, J& target, const mutable_extension_ima<I,J>& model)
{
typedef mlc_unconst(J) J_;
- J_& ext_ = const_cast<J_&>(model.extension());
+ J_& ext_ = const_cast< mutable_extension_ima<I,J>& >(model).extension();
J_& target_ = const_cast<J_&>(target);
target_ = ext_;
}
@@ -275,4 +269,4 @@ namespace mln
} // end of namespace mln
-#endif // ! MLN_CORE_IMAGE_DMORPH_EXTENSION_IMA_HH
+#endif // ! MLN_CORE_IMAGE_DMORPH_MUTABLE_EXTENSION_IMA_HH
--
1.5.6.5
1
0

last-svn-commit-208-g0a6d80b Introduce an extension-by-mutable-image morpher.
by Roland Levillain 09 Sep '10
by Roland Levillain 09 Sep '10
09 Sep '10
* mln/core/image/dmorph/mutable_extension_ima.hh: New.
* headers.mk: Regen.
---
milena/ChangeLog | 7 ++
milena/headers.mk | 1 +
.../{extension_ima.hh => mutable_extension_ima.hh} | 92 +++++++++-----------
3 files changed, 51 insertions(+), 49 deletions(-)
copy milena/mln/core/image/dmorph/{extension_ima.hh => mutable_extension_ima.hh} (68%)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index da73aef..4711d11 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,3 +1,10 @@
+2010-09-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Introduce an extension-by-mutable-image morpher.
+
+ * mln/core/image/dmorph/mutable_extension_ima.hh: New.
+ * headers.mk: Regen.
+
2010-09-15 Roland Levillain <roland(a)lrde.epita.fr>
Catch up with the renaming to detach_cell.
diff --git a/milena/headers.mk b/milena/headers.mk
index 90dd918..a08fbfa 100644
--- a/milena/headers.mk
+++ b/milena/headers.mk
@@ -277,6 +277,7 @@ mln/core/image/dmorph/hexa.hh \
mln/core/image/dmorph/hexa_piter.hh \
mln/core/image/dmorph/image2d_h.hh \
mln/core/image/dmorph/image_if.hh \
+mln/core/image/dmorph/mutable_extension_ima.hh \
mln/core/image/dmorph/p2p_image.hh \
mln/core/image/dmorph/slice_image.hh \
mln/core/image/dmorph/sub_image.hh \
diff --git a/milena/mln/core/image/dmorph/extension_ima.hh b/milena/mln/core/image/dmorph/mutable_extension_ima.hh
similarity index 68%
copy from milena/mln/core/image/dmorph/extension_ima.hh
copy to milena/mln/core/image/dmorph/mutable_extension_ima.hh
index a0bc9ca..f208581 100644
--- a/milena/mln/core/image/dmorph/extension_ima.hh
+++ b/milena/mln/core/image/dmorph/mutable_extension_ima.hh
@@ -1,4 +1,4 @@
-// Copyright (C) 2008, 2009 EPITA Research and Development Laboratory
+// Copyright (C) 2008, 2009, 2010 EPITA Research and Development Laboratory
// (LRDE)
//
// This file is part of Olena.
@@ -24,13 +24,13 @@
// exception does not however invalidate any other reasons why the
// executable file might be covered by the GNU General Public License.
-#ifndef MLN_CORE_IMAGE_DMORPH_EXTENSION_IMA_HH
-# define MLN_CORE_IMAGE_DMORPH_EXTENSION_IMA_HH
+#ifndef MLN_CORE_IMAGE_DMORPH_MUTABLE_EXTENSION_IMA_HH
+# define MLN_CORE_IMAGE_DMORPH_MUTABLE_EXTENSION_IMA_HH
/// \file
///
/// Definition of a morpher that extends the domain of an image
-/// with an image.
+/// with a readable and writable (rw) image.
# include <mln/core/internal/image_identity.hh>
@@ -40,17 +40,17 @@ namespace mln
{
// Forward declaration.
- template <typename I, typename J> struct extension_ima;
+ template <typename I, typename J> struct mutable_extension_ima;
namespace internal
{
- /// Data structure for \c mln::extension_ima<I, J>.
+ /// Data structure for \c mln::mutable_extension_ima<I, J>.
template <typename I, typename J>
- struct data< extension_ima<I, J> >
+ struct data< mutable_extension_ima<I, J> >
{
- data(I& ima, const J& ext);
+ data(I& ima, J& ext);
I ima_;
J ext_;
@@ -63,7 +63,7 @@ namespace mln
{
template <typename I, typename J>
- struct image_< extension_ima<I, J> > : image_< I > // Same as I except...
+ struct image_< mutable_extension_ima<I, J> > : image_< I > // Same as I except...
{
// ...these changes.
typedef trait::image::category::identity_morpher category;
@@ -77,11 +77,11 @@ namespace mln
};
template <typename I, typename J, typename V>
- struct ch_value< extension_ima<I, J>, V >
+ struct ch_value< mutable_extension_ima<I, J>, V >
{
typedef mlc_converts_to(mln_value(J), V) keep_ext;
typedef mln_ch_value(I, V) Iv;
- typedef extension_ima<Iv, J> Iv_ext;
+ typedef mutable_extension_ima<Iv, J> Iv_ext;
typedef mlc_if(keep_ext, Iv_ext, Iv) ret;
};
@@ -94,15 +94,15 @@ namespace mln
/// \ingroup modimagedomainmorpher
//
template <typename I, typename J>
- class extension_ima
+ class mutable_extension_ima
- : public internal::image_identity< I, mln_domain(I), extension_ima<I, J> >,
+ : public internal::image_identity< I, mln_domain(I), mutable_extension_ima<I, J> >,
private mlc_converts_to(mln_value(J), mln_value(I))::check_t
{
public:
/// Skeleton.
- typedef extension_ima< tag::image_<I>, tag::ext_<J> > skeleton;
+ typedef mutable_extension_ima< tag::image_<I>, tag::ext_<J> > skeleton;
/// Image value type.
typedef mln_value(I) value;
@@ -111,14 +111,14 @@ namespace mln
typedef mln_value(I) rvalue;
/// Constructor without argument.
- extension_ima();
+ mutable_extension_ima();
/// Constructor from an image \p ima and a function \p ext.
- extension_ima(I& ima, const J& ext);
+ mutable_extension_ima(I& ima, J& ext);
/// Deferred initialization from an image \p ima and a function \p
/// ext.
- void init_(I& ima, const J& ext);
+ void init_(I& ima, J& ext);
/// Test if \p p is valid.
@@ -131,52 +131,52 @@ namespace mln
mln_value(I) operator()(const mln_psite(I)& p) const;
/// Read-write access to the image value located at site \p p.
- mln_morpher_lvalue(I) operator()(const mln_psite(I)& p);
+ mln_lvalue(I) operator()(const mln_psite(I)& p);
- /// Read-only access to the extension domain (image).
- const J& extension() const;
+ /// Access to the extension domain (image).
+ J& extension() ;
};
// init_
template <typename I, typename J, typename M>
- void init_(tag::image_t, extension_ima<I,J>& target, const M& model);
+ void init_(tag::image_t, mutable_extension_ima<I,J>& target, const M& model);
template <typename J, typename I>
- void init_(tag::extension_t, J& target, const extension_ima<I,J>& model);
+ void init_(tag::extension_t, J& target, const mutable_extension_ima<I,J>& model);
# ifndef MLN_INCLUDE_ONLY
- // internal::data< extension_ima<I,S> >
+ // internal::data< mutable_extension_ima<I,S> >
namespace internal
{
template <typename I, typename J>
inline
- data< extension_ima<I, J> >::data(I& ima, const J& ext)
+ data< mutable_extension_ima<I, J> >::data(I& ima, J& ext)
: ima_(ima),
- ext_(const_cast<J&>(ext))
+ ext_(ext)
{
}
} // end of namespace mln::internal
- // extension_ima<I, J>
+ // mutable_extension_ima<I, J>
template <typename I, typename J>
inline
- extension_ima<I, J>::extension_ima()
+ mutable_extension_ima<I, J>::mutable_extension_ima()
{
}
template <typename I, typename J>
inline
- extension_ima<I, J>::extension_ima(I& ima, const J& ext)
+ mutable_extension_ima<I, J>::mutable_extension_ima(I& ima, J& ext)
{
init_(ima, ext);
}
@@ -184,16 +184,16 @@ namespace mln
template <typename I, typename J>
inline
void
- extension_ima<I, J>::init_(I& ima, const J& ext)
+ mutable_extension_ima<I, J>::init_(I& ima, J& ext)
{
- this->data_ = new internal::data< extension_ima<I, J> >(ima, ext);
+ this->data_ = new internal::data< mutable_extension_ima<I, J> >(ima, ext);
}
template <typename I, typename J>
template <typename P>
inline
bool
- extension_ima<I, J>::has(const P& p) const
+ mutable_extension_ima<I, J>::has(const P& p) const
{
mln_precondition(this->is_valid());
mln_precondition(this->data_->ext_.is_valid());
@@ -205,7 +205,7 @@ namespace mln
template <typename I, typename J>
inline
mln_value(I)
- extension_ima<I, J>::operator()(const mln_psite(I)& p) const
+ mutable_extension_ima<I, J>::operator()(const mln_psite(I)& p) const
{
mln_precondition(this->is_valid());
mln_precondition(has(p));
@@ -219,29 +219,23 @@ namespace mln
template <typename I, typename J>
inline
- mln_morpher_lvalue(I)
- extension_ima<I, J>::operator()(const mln_psite(I)& p)
+ mln_lvalue(I)
+ mutable_extension_ima<I, J>::operator()(const mln_psite(I)& p)
{
- static mln_value(I) cpy;
mln_precondition(this->is_valid());
mln_precondition(has(p));
- // See the above comment about if-else v. ternary.
+ // if-else is preferred to the ternary op to allow for the
+ // function result to convert towards the expected return type.
if (this->data_->ima_.domain().has(p))
return this->data_->ima_(p);
else
- {
- // This hack makes this signature valid both in the image
- // domain and in its extension. It works even if
- // mln_morpher_lvalue(I) is a mutable reference.
- cpy = this->data_->ext_(p);
- return cpy;
- }
+ return this->data_->ext_(p);
}
template <typename I, typename J>
inline
- const J&
- extension_ima<I, J>::extension() const
+ J&
+ mutable_extension_ima<I, J>::extension()
{
mln_precondition(this->is_valid());
return this->data_->ext_;
@@ -251,7 +245,7 @@ namespace mln
template <typename I, typename J, typename M>
inline
- void init_(tag::image_t, extension_ima<I,J>& target, const M& model)
+ void init_(tag::image_t, mutable_extension_ima<I,J>& target, const M& model)
{
I ima;
init_(tag::image, ima, model);
@@ -262,10 +256,10 @@ namespace mln
template <typename J, typename I>
inline
- void init_(tag::extension_t, J& target, const extension_ima<I,J>& model)
+ void init_(tag::extension_t, J& target, const mutable_extension_ima<I,J>& model)
{
typedef mlc_unconst(J) J_;
- J_& ext_ = const_cast<J_&>(model.extension());
+ J_& ext_ = const_cast< mutable_extension_ima<I,J>& >(model).extension();
J_& target_ = const_cast<J_&>(target);
target_ = ext_;
}
@@ -275,4 +269,4 @@ namespace mln
} // end of namespace mln
-#endif // ! MLN_CORE_IMAGE_DMORPH_EXTENSION_IMA_HH
+#endif // ! MLN_CORE_IMAGE_DMORPH_MUTABLE_EXTENSION_IMA_HH
--
1.5.6.5
1
0

last-svn-commit-200-gad49d7e Make the 5th argument of breadth_first_thinning truly optional.
by Roland Levillain 09 Sep '10
by Roland Levillain 09 Sep '10
09 Sep '10
* mln/topo/skeleton/breadth_first_thinning.hh
(mln::topo::skeleton::breadth_first_thinning):
Disable the default value of the 5th argument, which cannot be
used in practice, since it depends on the parameter H.
Add a 4-argument overloading to make the `constraint' argument
optional.
---
milena/ChangeLog | 11 ++++++
milena/mln/topo/skeleton/breadth_first_thinning.hh | 36 ++++++++++++++++++-
2 files changed, 45 insertions(+), 2 deletions(-)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index ebcec24..18e4ada 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,3 +1,14 @@
+2010-09-09 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Make the 5th argument of breadth_first_thinning truly optional.
+
+ * mln/topo/skeleton/breadth_first_thinning.hh
+ (mln::topo::skeleton::breadth_first_thinning):
+ Disable the default value of the 5th argument, which cannot be
+ used in practice, since it depends on the parameter H.
+ Add a 4-argument overloading to make the `constraint' argument
+ optional.
+
2010-09-01 Roland Levillain <roland(a)lrde.epita.fr>
Add more documentation on the detach procedure.
diff --git a/milena/mln/topo/skeleton/breadth_first_thinning.hh b/milena/mln/topo/skeleton/breadth_first_thinning.hh
index f9356f9..f405166 100644
--- a/milena/mln/topo/skeleton/breadth_first_thinning.hh
+++ b/milena/mln/topo/skeleton/breadth_first_thinning.hh
@@ -70,8 +70,27 @@ namespace mln
const Neighborhood<N>& nbh,
Function_v2b<F>& is_simple,
G detach,
- const Function_v2b<H>& constraint =
- fun::p2b::tautology());
+ const Function_v2b<H>& constraint);
+
+
+ /** \brief Skeleton by Breadth-First Thinning with no constraint.
+
+ A generic implementation of the computation of a skeleton
+ using a breadth-first thinning on a binary.
+
+ \param input The input image.
+ \param nbh The adjacency relation between triangles.
+ \param is_simple The predicate on the simplicity of points
+ (sites). This functor must provide a method
+ <tt>void set_image(const Image<I>&)</tt>.
+ \param detach A function used to detach a cell from
+ \a input. */
+ template <typename I, typename N, typename F, typename G>
+ mln_concrete(I)
+ breadth_first_thinning(const Image<I>& input,
+ const Neighborhood<N>& nbh,
+ Function_v2b<F>& is_simple,
+ G detach);
# ifndef MLN_INCLUDE_ONLY
@@ -149,6 +168,19 @@ namespace mln
return output;
}
+
+ template <typename I, typename N, typename F, typename G>
+ inline
+ mln_concrete(I)
+ breadth_first_thinning(const Image<I>& input,
+ const Neighborhood<N>& nbh,
+ Function_v2b<F>& is_simple,
+ G detach)
+ {
+ return breadth_first_thinning(input, nbh, is_simple, detach,
+ fun::p2b::tautology());
+ }
+
# endif // MLN_INCLUDE_ONLY
} // end of namespace mln::topo::skeleton
--
1.5.6.5
1
0

08 Sep '10
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/scribo-z has been updated
via 6c094d01081e780f2f665042bb2b0786f926a117 (commit)
via 471d53801c136f8930b6160500c68fc2010db0e0 (commit)
from 4a2bb958c2a6159916a7e943a655f3b65184d3d3 (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 -----------------------------------------------------------------
6c094d0 Import annotating sources from milena green's sandbox.
471d538 Import regional maxima sources from milena green's sandbox.
-----------------------------------------------------------------------
Summary of changes:
scribo/sandbox/green/ChangeLog | 1147 ++++++++++++++++
scribo/sandbox/green/README.green | 851 +++++++++++-
.../kmean1d => annotating/bic}/Makefile.am | 0
scribo/sandbox/green/demo/annotating/bic/bic.cc | 122 ++
.../kmean1d => annotating/hsv}/Makefile.am | 0
scribo/sandbox/green/demo/annotating/hsv/hsv.cc | 721 ++++++++++
.../kmean1d => annotating/lep}/Makefile.am | 0
scribo/sandbox/green/demo/annotating/lep/lep.cc | 127 ++
.../kmean1d => annotating/nb_color}/Makefile.am | 0
.../green/demo/annotating/nb_color/nb_color.cc | 143 ++
.../kmean1d => annotating/project}/Makefile.am | 0
.../green/demo/annotating/project/project.cc | 275 ++++
.../kmean1d => annotating/rgb_64}/Makefile.am | 0
.../sandbox/green/demo/annotating/rgb_64/rgb_64.cc | 80 ++
.../kmean1d => annotating/rgb_64_9}/Makefile.am | 0
.../green/demo/annotating/rgb_64_9/rgb_64_9.cc | 132 ++
.../stddev_color}/Makefile.am | 0
.../demo/annotating/stddev_color/stddev_color.cc | 191 +++
.../stddev_color_16}/Makefile.am | 0
.../annotating/stddev_color_16/stddev_color_16.cc | 261 ++++
.../regional_maxima}/Makefile.am | 0
.../labeling/regional_maxima/regional_maxima.cc | 198 +++
.../demo/labeling/regional_maxima/thresholds.txt | 0
.../kmean1d => labeling/watershed}/Makefile.am | 0
.../green/demo/labeling/watershed}/gaussian.sh | 0
.../green/demo/labeling/watershed/watershed.cc | 360 +++++
.../sandbox/green/doc/annotating/class.txt | 0
.../green/doc/annotating/syntheseMillet2008.txt | 0
.../sandbox/green/doc/annotating/testMillet2008 | 0
.../green/doc/examples/accu_color/accu_color.cc | 0
.../sandbox/green/doc/examples/frac/Makefile.am | 0
.../sandbox/green/doc/examples/frac/frac.cc | 0
.../sandbox/green/doc/examples/frac/frac.hh | 0
.../sandbox/green/doc/examples/frac/gcd.hh | 0
.../sandbox/green/doc/examples/frac/sign_prod.hh | 0
.../green/doc/examples/hello_milena/Makefile.am | 0
.../doc/examples/hello_milena/hello_milena.cc | 0
.../green/doc/examples/hello_world}/Makefile.am | 0
.../green/doc/examples/hello_world/hello_world.cc | 0
.../green/doc/examples/hello_world/print.cc | 0
.../sandbox/green/doc/examples/io/Makefile.am | 0
.../sandbox/green/doc/examples/io/io.cc | 0
.../green/doc/examples/learn_milena}/Makefile.am | 0
.../doc/examples/learn_milena/learn_milena.cc | 0
.../sandbox/green/doc/examples/otsu}/Makefile.am | 0
.../sandbox/green/doc/examples/otsu/otsu.cc | 0
.../sandbox/green/doc/examples/stats}/Makefile.am | 0
.../sandbox/green/doc/examples/stats/stats.cc | 0
.../sandbox/green/doc/formulae/formulae.tex | 0
.../green/doc/labeling}/cmp_method/h0_input.pgm.gz | Bin 18078 -> 18078 bytes
.../green/doc/labeling}/cmp_method/h2_mean.pgm.gz | Bin 374 -> 374 bytes
.../green/doc/labeling}/cmp_method/h2_merge.pgm.gz | Bin 4491 -> 4491 bytes
.../green/doc/labeling}/cmp_method/h3_mean.pgm.gz | Bin 391 -> 391 bytes
.../green/doc/labeling}/cmp_method/h3_merge.pgm.gz | Bin 10188 -> 10188 bytes
.../green/doc/labeling}/cmp_method/h4_mean.pgm.gz | Bin 367 -> 367 bytes
.../green/doc/labeling}/cmp_method/h4_merge.pgm.gz | Bin 18078 -> 18078 bytes
.../green/doc/labeling}/cmp_method/h5_mean.pgm.gz | Bin 372 -> 372 bytes
.../green/doc/labeling}/cmp_method/h5_merge.pgm.gz | Bin 12777 -> 12777 bytes
.../green/doc/labeling}/cmp_method/i2_mean.ppm.gz | Bin 566650 -> 566650 bytes
.../green/doc/labeling}/cmp_method/i2_merge.ppm.gz | Bin 1586150 -> 1586150 bytes
.../green/doc/labeling}/cmp_method/i3_mean.ppm.gz | Bin 573407 -> 573407 bytes
.../green/doc/labeling}/cmp_method/i3_merge.ppm.gz | Bin 3050979 -> 3050979 bytes
.../green/doc/labeling}/cmp_method/i4_mean.ppm.gz | Bin 663621 -> 663621 bytes
.../green/doc/labeling}/cmp_method/i4_merge.ppm.gz | Bin 3387044 -> 3387044 bytes
.../green/doc/labeling}/cmp_method/i5_mean.ppm.gz | Bin 653140 -> 653140 bytes
.../green/doc/labeling}/cmp_method/i5_merge.ppm.gz | Bin 3217839 -> 3217839 bytes
.../green/doc/labeling}/cmp_method/l2_input.pgm.gz | Bin 423612 -> 423612 bytes
.../green/doc/labeling}/cmp_method/l3_input.pgm.gz | Bin 420801 -> 420801 bytes
.../green/doc/labeling}/cmp_method/l4_input.pgm.gz | Bin 486206 -> 486206 bytes
.../green/doc/labeling}/cmp_method/l5_input.pgm.gz | Bin 479055 -> 479055 bytes
.../doc/labeling/cmp_method/reponse_theo.eml.gz | Bin 0 -> 1617 bytes
.../green/doc/labeling/cmp_method/s2_histo.txt.gz | Bin 0 -> 789 bytes
.../green/doc/labeling/cmp_method/s3_histo.txt.gz | Bin 0 -> 832 bytes
.../green/doc/labeling/cmp_method/s4_histo.txt.gz | Bin 0 -> 803 bytes
.../green/doc/labeling/cmp_method/s5_histo.txt.gz | Bin 0 -> 811 bytes
.../green/doc/labeling/cmp_method/synthese.txt.gz | Bin 0 -> 4501 bytes
.../green/doc/labeling}/cmp_quant/h0_input.pgm.gz | Bin 18078 -> 18078 bytes
.../doc/labeling}/cmp_quant/h5_mean_q2.pgm.gz | Bin 247 -> 247 bytes
.../doc/labeling}/cmp_quant/h5_mean_q3.pgm.gz | Bin 280 -> 280 bytes
.../doc/labeling}/cmp_quant/h5_mean_q4.pgm.gz | Bin 319 -> 319 bytes
.../doc/labeling}/cmp_quant/h5_mean_q5.pgm.gz | Bin 375 -> 375 bytes
.../doc/labeling}/cmp_quant/h5_mean_q6.pgm.gz | Bin 392 -> 392 bytes
.../doc/labeling}/cmp_quant/h5_mean_q7.pgm.gz | Bin 383 -> 383 bytes
.../doc/labeling}/cmp_quant/h5_mean_q8.pgm.gz | Bin 470 -> 470 bytes
.../doc/labeling}/cmp_quant/h5_merge_q2.pgm.gz | Bin 18081 -> 18081 bytes
.../doc/labeling}/cmp_quant/h5_merge_q3.pgm.gz | Bin 18081 -> 18081 bytes
.../doc/labeling}/cmp_quant/h5_merge_q4.pgm.gz | Bin 16358 -> 16358 bytes
.../doc/labeling}/cmp_quant/h5_merge_q5.pgm.gz | Bin 12780 -> 12780 bytes
.../doc/labeling}/cmp_quant/h5_merge_q6.pgm.gz | Bin 9694 -> 9694 bytes
.../doc/labeling}/cmp_quant/h5_merge_q7.pgm.gz | Bin 6211 -> 6211 bytes
.../doc/labeling}/cmp_quant/h5_merge_q8.pgm.gz | Bin 1564 -> 1564 bytes
.../doc/labeling}/cmp_quant/i5_mean_q2.ppm.gz | Bin 112779 -> 112779 bytes
.../doc/labeling}/cmp_quant/i5_mean_q3.ppm.gz | Bin 191264 -> 191264 bytes
.../doc/labeling}/cmp_quant/i5_mean_q4.ppm.gz | Bin 298062 -> 298062 bytes
.../doc/labeling}/cmp_quant/i5_mean_q5.ppm.gz | Bin 653143 -> 653143 bytes
.../doc/labeling}/cmp_quant/i5_mean_q6.ppm.gz | Bin 807617 -> 807617 bytes
.../doc/labeling}/cmp_quant/i5_mean_q7.ppm.gz | Bin 813222 -> 813222 bytes
.../doc/labeling}/cmp_quant/i5_mean_q8.ppm.gz | Bin 861711 -> 861711 bytes
.../doc/labeling}/cmp_quant/i5_merge_q2.ppm.gz | Bin 3387047 -> 3387047 bytes
.../doc/labeling}/cmp_quant/i5_merge_q3.ppm.gz | Bin 3387047 -> 3387047 bytes
.../doc/labeling}/cmp_quant/i5_merge_q4.ppm.gz | Bin 3355365 -> 3355365 bytes
.../doc/labeling}/cmp_quant/i5_merge_q5.ppm.gz | Bin 3217842 -> 3217842 bytes
.../doc/labeling}/cmp_quant/i5_merge_q6.ppm.gz | Bin 3033730 -> 3033730 bytes
.../doc/labeling}/cmp_quant/i5_merge_q7.ppm.gz | Bin 2295150 -> 2295150 bytes
.../doc/labeling}/cmp_quant/i5_merge_q8.ppm.gz | Bin 1319396 -> 1319396 bytes
.../doc/labeling}/cmp_quant/l5_input_q2.pgm.gz | Bin 83951 -> 83951 bytes
.../doc/labeling}/cmp_quant/l5_input_q3.pgm.gz | Bin 143817 -> 143817 bytes
.../doc/labeling}/cmp_quant/l5_input_q4.pgm.gz | Bin 220346 -> 220346 bytes
.../doc/labeling}/cmp_quant/l5_input_q5.pgm.gz | Bin 479058 -> 479058 bytes
.../doc/labeling}/cmp_quant/l5_input_q6.pgm.gz | Bin 593359 -> 593359 bytes
.../doc/labeling}/cmp_quant/l5_input_q7.pgm.gz | Bin 600121 -> 600121 bytes
.../doc/labeling}/cmp_quant/l5_input_q8.pgm.gz | Bin 630760 -> 630760 bytes
.../doc/labeling/cmp_quant/s5_histo_q2.txt.gz | Bin 0 -> 152 bytes
.../doc/labeling/cmp_quant/s5_histo_q3.txt.gz | Bin 0 -> 274 bytes
.../doc/labeling/cmp_quant/s5_histo_q4.txt.gz | Bin 0 -> 470 bytes
.../doc/labeling/cmp_quant/s5_histo_q5.txt.gz | Bin 0 -> 815 bytes
.../doc/labeling/cmp_quant/s5_histo_q6.txt.gz | Bin 0 -> 842 bytes
.../doc/labeling/cmp_quant/s5_histo_q7.txt.gz | Bin 0 -> 811 bytes
.../doc/labeling/cmp_quant/s5_histo_q8.txt.gz | Bin 0 -> 1632 bytes
.../green/doc/labeling/cmp_quant/synthese.txt.gz | Bin 0 -> 4196 bytes
.../green/doc/labeling/mp00042c/histo_all.dump.gz | Bin 0 -> 3824 bytes
.../doc/labeling/mp00042c/histo_thick.dump.gz | Bin 0 -> 3369 bytes
.../green/doc/labeling/mp00042c/histo_thin.dump.gz | Bin 0 -> 3131 bytes
.../doc/labeling/mp00042c/labeled_all.dump.gz | Bin 0 -> 177 bytes
.../doc/labeling/mp00042c/labeled_thick.dump.gz | Bin 0 -> 148 bytes
.../doc/labeling/mp00042c/labeled_thin.dump.gz | Bin 0 -> 146 bytes
.../green/doc/labeling/mp00042c/mean_all.ppm.gz | Bin 0 -> 798766 bytes
.../green/doc/labeling/mp00042c/mean_thick.ppm.gz | Bin 0 -> 556265 bytes
.../green/doc/labeling/mp00042c/mean_thin.ppm.gz | Bin 0 -> 529846 bytes
.../green/doc/labeling/mp00042c/mp00042c.ppm.gz | Bin 0 -> 11277012 bytes
.../green/doc/labeling/mp00042c/mp00042c.sh.gz | Bin 0 -> 262 bytes
.../doc/labeling/mp00042c/mp00042c_thick.pbm.gz | Bin 0 -> 177849 bytes
.../doc/labeling/mp00042c/mp00042c_thin.pbm.gz | Bin 0 -> 263200 bytes
.../green/doc/labeling/mp00042c/opened_all.dump.gz | Bin 0 -> 3708 bytes
.../doc/labeling/mp00042c/opened_thick.dump.gz | Bin 0 -> 3275 bytes
.../doc/labeling/mp00042c/opened_thin.dump.gz | Bin 0 -> 3020 bytes
.../green/doc/labeling/mp00042c/pal_all.txt.gz | Bin 0 -> 247 bytes
.../green/doc/labeling/mp00042c/pal_thick.txt.gz | Bin 0 -> 161 bytes
.../green/doc/labeling/mp00042c/pal_thin.txt.gz | Bin 0 -> 163 bytes
.../green/doc/labeling/mp00042c/proj1.pgm.gz | Bin 0 -> 352 bytes
.../green/doc/labeling/mp00042c/proj2.pgm.gz | Bin 0 -> 249 bytes
.../green/doc/labeling/mp00042c/proj2_all.pgm.gz | Bin 0 -> 378 bytes
.../green/doc/labeling/mp00042c/proj2_thick.pgm.gz | Bin 0 -> 363 bytes
.../green/doc/labeling/mp00042c/proj2_thin.pgm.gz | Bin 0 -> 358 bytes
.../green/doc/labeling/mp00042c/proj3.ppm.gz | Bin 0 -> 497 bytes
.../green/doc/labeling/mp00042c/proj3_all.ppm.gz | Bin 0 -> 253 bytes
.../green/doc/labeling/mp00042c/proj3_thick.ppm.gz | Bin 0 -> 217 bytes
.../green/doc/labeling/mp00042c/proj3_thin.ppm.gz | Bin 0 -> 222 bytes
.../green/doc/labeling/mp00042c/proj_all.pgm.gz | Bin 0 -> 373 bytes
.../green/doc/labeling/mp00042c/proj_thick.pgm.gz | Bin 0 -> 357 bytes
.../green/doc/labeling/mp00042c/proj_thin.pgm.gz | Bin 0 -> 352 bytes
.../green/doc/labeling/mp00042c/quant.ppm.gz | Bin 0 -> 2249866 bytes
.../green/doc/labeling/mp00215c/mp00215c.ppm.gz | Bin 0 -> 7036281 bytes
.../doc/labeling/mp00215c/mp00215c_thick.pbm.gz | Bin 0 -> 242015 bytes
.../doc/labeling/mp00215c/mp00215c_thin.pbm.gz | Bin 0 -> 324559 bytes
.../green/doc/labeling/mp00234c/mp00234c.ppm.gz | Bin 0 -> 6948755 bytes
.../doc/labeling/mp00234c/mp00234c_thick.pbm.gz | Bin 0 -> 269877 bytes
.../doc/labeling/mp00234c/mp00234c_thin.pbm.gz | Bin 0 -> 351051 bytes
.../green/doc/labeling/mp00248c/mp00248c.ppm.gz | Bin 0 -> 6135619 bytes
.../doc/labeling/mp00248c/mp00248c_thick.pbm.gz | Bin 0 -> 201420 bytes
.../doc/labeling/mp00248c/mp00248c_thin.pbm.gz | Bin 0 -> 270025 bytes
.../doc/labeling/mp00307c/colormap_all.txt.gz | Bin 0 -> 317 bytes
.../doc/labeling/mp00307c/colormap_thick.txt.gz | Bin 0 -> 289 bytes
.../doc/labeling/mp00307c/colormap_thin.txt.gz | Bin 0 -> 290 bytes
.../green/doc/labeling/mp00307c/histo_all.dump.gz | Bin 0 -> 1858 bytes
.../doc/labeling/mp00307c/histo_thick.dump.gz | Bin 0 -> 1615 bytes
.../green/doc/labeling/mp00307c/histo_thin.dump.gz | Bin 0 -> 1585 bytes
.../green/doc/labeling/mp00307c/iz_all.dump.gz | Bin 0 -> 1032196 bytes
.../green/doc/labeling/mp00307c/iz_thick.dump.gz | Bin 0 -> 919114 bytes
.../green/doc/labeling/mp00307c/iz_thin.dump.gz | Bin 0 -> 933750 bytes
.../doc/labeling/mp00307c/labeled_all.dump.gz | Bin 0 -> 215 bytes
.../doc/labeling/mp00307c/labeled_thick.dump.gz | Bin 0 -> 206 bytes
.../doc/labeling/mp00307c/labeled_thin.dump.gz | Bin 0 -> 205 bytes
.../green/doc/labeling/mp00307c/mean3_all.ppm.gz | Bin 0 -> 1306369 bytes
.../green/doc/labeling/mp00307c/mean3_thick.ppm.gz | Bin 0 -> 1167838 bytes
.../green/doc/labeling/mp00307c/mean3_thin.ppm.gz | Bin 0 -> 1193530 bytes
.../green/doc/labeling/mp00307c/mean4_all.ppm.gz | Bin 0 -> 1212810 bytes
.../green/doc/labeling/mp00307c/mean4_thick.ppm.gz | Bin 0 -> 1066656 bytes
.../green/doc/labeling/mp00307c/mean4_thin.ppm.gz | Bin 0 -> 1086137 bytes
.../green/doc/labeling/mp00307c/mp00307c.ppm.gz | Bin 0 -> 4951735 bytes
.../green/doc/labeling/mp00307c/mp00307c.sh.gz | Bin 0 -> 439 bytes
.../doc/labeling/mp00307c/mp00307c_thick.pbm.gz | Bin 0 -> 196172 bytes
.../doc/labeling/mp00307c/mp00307c_thin.pbm.gz | Bin 0 -> 244492 bytes
.../green/doc/labeling/mp00307c/opened_all.dump.gz | Bin 0 -> 1783 bytes
.../doc/labeling/mp00307c/opened_thick.dump.gz | Bin 0 -> 1557 bytes
.../doc/labeling/mp00307c/opened_thin.dump.gz | Bin 0 -> 1512 bytes
.../green/doc/labeling/mp00307c/proj1_all.pgm.gz | Bin 0 -> 310 bytes
.../green/doc/labeling/mp00307c/proj1_all.ppm.gz | Bin 0 -> 419 bytes
.../green/doc/labeling/mp00307c/proj1_thick.pgm.gz | Bin 0 -> 306 bytes
.../green/doc/labeling/mp00307c/proj1_thick.ppm.gz | Bin 0 -> 409 bytes
.../green/doc/labeling/mp00307c/proj1_thin.pgm.gz | Bin 0 -> 304 bytes
.../green/doc/labeling/mp00307c/proj1_thin.ppm.gz | Bin 0 -> 408 bytes
.../green/doc/labeling/mp00307c/proj2_all.pgm.gz | Bin 0 -> 313 bytes
.../green/doc/labeling/mp00307c/proj2_all.ppm.gz | Bin 0 -> 422 bytes
.../green/doc/labeling/mp00307c/proj2_thick.pgm.gz | Bin 0 -> 308 bytes
.../green/doc/labeling/mp00307c/proj2_thick.ppm.gz | Bin 0 -> 412 bytes
.../green/doc/labeling/mp00307c/proj2_thin.pgm.gz | Bin 0 -> 306 bytes
.../green/doc/labeling/mp00307c/proj2_thin.ppm.gz | Bin 0 -> 412 bytes
.../green/doc/labeling/mp00307c/proj3_all.ppm.gz | Bin 0 -> 287 bytes
.../green/doc/labeling/mp00307c/proj3_thick.ppm.gz | Bin 0 -> 284 bytes
.../green/doc/labeling/mp00307c/proj3_thin.ppm.gz | Bin 0 -> 284 bytes
.../green/doc/labeling/mp00307c/proj4_all.ppm.gz | Bin 0 -> 323 bytes
.../green/doc/labeling/mp00307c/proj4_thick.ppm.gz | Bin 0 -> 311 bytes
.../green/doc/labeling/mp00307c/proj4_thin.ppm.gz | Bin 0 -> 307 bytes
.../green/doc/labeling/mp00307c/quant.ppm.gz | Bin 0 -> 1890531 bytes
.../green/doc/labeling/mp00307c/stats3_all.txt.gz | Bin 0 -> 527 bytes
.../doc/labeling/mp00307c/stats3_thick.txt.gz | Bin 0 -> 473 bytes
.../green/doc/labeling/mp00307c/stats3_thin.txt.gz | Bin 0 -> 475 bytes
.../green/doc/labeling/mp00307c/stats4_all.txt.gz | Bin 0 -> 521 bytes
.../doc/labeling/mp00307c/stats4_thick.txt.gz | Bin 0 -> 469 bytes
.../green/doc/labeling/mp00307c/stats4_thin.txt.gz | Bin 0 -> 470 bytes
.../green/doc/labeling/mp00307c/synthese.txt.gz | Bin 0 -> 3330 bytes
.../mp00307c_bis/colormap_all_q4_r06f.txt.gz | Bin 0 -> 325 bytes
.../mp00307c_bis/colormap_all_q4_r06h.txt.gz | Bin 0 -> 528 bytes
.../mp00307c_bis/colormap_all_q4_r18f.txt.gz | Bin 0 -> 158 bytes
.../mp00307c_bis/colormap_all_q4_r18h.txt.gz | Bin 0 -> 371 bytes
.../mp00307c_bis/colormap_all_q4_r26f.txt.gz | Bin 0 -> 158 bytes
.../mp00307c_bis/colormap_all_q4_r26h.txt.gz | Bin 0 -> 187 bytes
.../mp00307c_bis/colormap_all_q5_r06f.txt.gz | Bin 0 -> 521 bytes
.../mp00307c_bis/colormap_all_q5_r06h.txt.gz | Bin 0 -> 3230 bytes
.../mp00307c_bis/colormap_all_q5_r18f.txt.gz | Bin 0 -> 217 bytes
.../mp00307c_bis/colormap_all_q5_r18h.txt.gz | Bin 0 -> 948 bytes
.../mp00307c_bis/colormap_all_q5_r26f.txt.gz | Bin 0 -> 217 bytes
.../mp00307c_bis/colormap_all_q5_r26h.txt.gz | Bin 0 -> 382 bytes
.../mp00307c_bis/colormap_thick_q4_r06f.txt.gz | Bin 0 -> 297 bytes
.../mp00307c_bis/colormap_thick_q4_r06h.txt.gz | Bin 0 -> 541 bytes
.../mp00307c_bis/colormap_thick_q4_r18f.txt.gz | Bin 0 -> 161 bytes
.../mp00307c_bis/colormap_thick_q4_r18h.txt.gz | Bin 0 -> 372 bytes
.../mp00307c_bis/colormap_thick_q4_r26f.txt.gz | Bin 0 -> 161 bytes
.../mp00307c_bis/colormap_thick_q4_r26h.txt.gz | Bin 0 -> 204 bytes
.../mp00307c_bis/colormap_thick_q5_r06f.txt.gz | Bin 0 -> 446 bytes
.../mp00307c_bis/colormap_thick_q5_r06h.txt.gz | Bin 0 -> 3015 bytes
.../mp00307c_bis/colormap_thick_q5_r18f.txt.gz | Bin 0 -> 248 bytes
.../mp00307c_bis/colormap_thick_q5_r18h.txt.gz | Bin 0 -> 1014 bytes
.../mp00307c_bis/colormap_thick_q5_r26f.txt.gz | Bin 0 -> 234 bytes
.../mp00307c_bis/colormap_thick_q5_r26h.txt.gz | Bin 0 -> 432 bytes
.../mp00307c_bis/colormap_thin_q4_r06f.txt.gz | Bin 0 -> 298 bytes
.../mp00307c_bis/colormap_thin_q4_r06h.txt.gz | Bin 0 -> 519 bytes
.../mp00307c_bis/colormap_thin_q4_r18f.txt.gz | Bin 0 -> 161 bytes
.../mp00307c_bis/colormap_thin_q4_r18h.txt.gz | Bin 0 -> 374 bytes
.../mp00307c_bis/colormap_thin_q4_r26f.txt.gz | Bin 0 -> 161 bytes
.../mp00307c_bis/colormap_thin_q4_r26h.txt.gz | Bin 0 -> 202 bytes
.../mp00307c_bis/colormap_thin_q5_r06f.txt.gz | Bin 0 -> 523 bytes
.../mp00307c_bis/colormap_thin_q5_r06h.txt.gz | Bin 0 -> 2832 bytes
.../mp00307c_bis/colormap_thin_q5_r18f.txt.gz | Bin 0 -> 233 bytes
.../mp00307c_bis/colormap_thin_q5_r18h.txt.gz | Bin 0 -> 949 bytes
.../mp00307c_bis/colormap_thin_q5_r26f.txt.gz | Bin 0 -> 216 bytes
.../mp00307c_bis/colormap_thin_q5_r26h.txt.gz | Bin 0 -> 434 bytes
.../doc/labeling/mp00307c_bis/histo_all_q4.dump.gz | Bin 0 -> 1861 bytes
.../doc/labeling/mp00307c_bis/histo_all_q5.dump.gz | Bin 0 -> 7682 bytes
.../doc/labeling/mp00307c_bis/histo_all_q8.dump.gz | Bin 0 -> 92423 bytes
.../labeling/mp00307c_bis/histo_thick_q4.dump.gz | Bin 0 -> 1618 bytes
.../labeling/mp00307c_bis/histo_thick_q5.dump.gz | Bin 0 -> 6222 bytes
.../labeling/mp00307c_bis/histo_thick_q8.dump.gz | Bin 0 -> 86275 bytes
.../labeling/mp00307c_bis/histo_thin_q4.dump.gz | Bin 0 -> 1588 bytes
.../labeling/mp00307c_bis/histo_thin_q5.dump.gz | Bin 0 -> 6016 bytes
.../labeling/mp00307c_bis/histo_thin_q8.dump.gz | Bin 0 -> 85572 bytes
.../mp00307c_bis/iz_all_q4_r06f_i06.dump.gz | Bin 0 -> 1024320 bytes
.../mp00307c_bis/iz_all_q4_r06f_i18.dump.gz | Bin 0 -> 987528 bytes
.../mp00307c_bis/iz_all_q4_r06f_i26.dump.gz | Bin 0 -> 1021696 bytes
.../mp00307c_bis/iz_all_q4_r06h_i06.dump.gz | Bin 0 -> 1132389 bytes
.../mp00307c_bis/iz_all_q4_r06h_i18.dump.gz | Bin 0 -> 1163188 bytes
.../mp00307c_bis/iz_all_q4_r06h_i26.dump.gz | Bin 0 -> 1167408 bytes
.../mp00307c_bis/iz_all_q4_r18f_i06.dump.gz | Bin 0 -> 667996 bytes
.../mp00307c_bis/iz_all_q4_r18f_i18.dump.gz | Bin 0 -> 649237 bytes
.../mp00307c_bis/iz_all_q4_r18f_i26.dump.gz | Bin 0 -> 450172 bytes
.../mp00307c_bis/iz_all_q4_r18h_i06.dump.gz | Bin 0 -> 1068732 bytes
.../mp00307c_bis/iz_all_q4_r18h_i18.dump.gz | Bin 0 -> 1039089 bytes
.../mp00307c_bis/iz_all_q4_r18h_i26.dump.gz | Bin 0 -> 1000347 bytes
.../mp00307c_bis/iz_all_q4_r26f_i06.dump.gz | Bin 0 -> 667996 bytes
.../mp00307c_bis/iz_all_q4_r26f_i18.dump.gz | Bin 0 -> 649237 bytes
.../mp00307c_bis/iz_all_q4_r26f_i26.dump.gz | Bin 0 -> 450172 bytes
.../mp00307c_bis/iz_all_q4_r26h_i06.dump.gz | Bin 0 -> 663031 bytes
.../mp00307c_bis/iz_all_q4_r26h_i18.dump.gz | Bin 0 -> 695436 bytes
.../mp00307c_bis/iz_all_q4_r26h_i26.dump.gz | Bin 0 -> 554087 bytes
.../mp00307c_bis/iz_all_q5_r06f_i06.dump.gz | Bin 0 -> 1718006 bytes
.../mp00307c_bis/iz_all_q5_r06f_i18.dump.gz | Bin 0 -> 1618420 bytes
.../mp00307c_bis/iz_all_q5_r06f_i26.dump.gz | Bin 0 -> 1626869 bytes
.../mp00307c_bis/iz_all_q5_r06h_i06.dump.gz | Bin 0 -> 878392 bytes
.../mp00307c_bis/iz_all_q5_r06h_i18.dump.gz | Bin 0 -> 878392 bytes
.../mp00307c_bis/iz_all_q5_r06h_i26.dump.gz | Bin 0 -> 878392 bytes
.../mp00307c_bis/iz_all_q5_r18f_i06.dump.gz | Bin 0 -> 602061 bytes
.../mp00307c_bis/iz_all_q5_r18f_i18.dump.gz | Bin 0 -> 567901 bytes
.../mp00307c_bis/iz_all_q5_r18f_i26.dump.gz | Bin 0 -> 848955 bytes
.../mp00307c_bis/iz_all_q5_r18h_i06.dump.gz | Bin 0 -> 1585856 bytes
.../mp00307c_bis/iz_all_q5_r18h_i18.dump.gz | Bin 0 -> 1580541 bytes
.../mp00307c_bis/iz_all_q5_r18h_i26.dump.gz | Bin 0 -> 1524533 bytes
.../mp00307c_bis/iz_all_q5_r26f_i06.dump.gz | Bin 0 -> 602061 bytes
.../mp00307c_bis/iz_all_q5_r26f_i18.dump.gz | Bin 0 -> 567901 bytes
.../mp00307c_bis/iz_all_q5_r26f_i26.dump.gz | Bin 0 -> 848955 bytes
.../mp00307c_bis/iz_all_q5_r26h_i06.dump.gz | Bin 0 -> 1089436 bytes
.../mp00307c_bis/iz_all_q5_r26h_i18.dump.gz | Bin 0 -> 1152528 bytes
.../mp00307c_bis/iz_all_q5_r26h_i26.dump.gz | Bin 0 -> 734492 bytes
.../mp00307c_bis/iz_thick_q4_r06f_i06.dump.gz | Bin 0 -> 935810 bytes
.../mp00307c_bis/iz_thick_q4_r06f_i18.dump.gz | Bin 0 -> 958111 bytes
.../mp00307c_bis/iz_thick_q4_r06f_i26.dump.gz | Bin 0 -> 969793 bytes
.../mp00307c_bis/iz_thick_q4_r06h_i06.dump.gz | Bin 0 -> 1139886 bytes
.../mp00307c_bis/iz_thick_q4_r06h_i18.dump.gz | Bin 0 -> 1163741 bytes
.../mp00307c_bis/iz_thick_q4_r06h_i26.dump.gz | Bin 0 -> 1136143 bytes
.../mp00307c_bis/iz_thick_q4_r18f_i06.dump.gz | Bin 0 -> 620527 bytes
.../mp00307c_bis/iz_thick_q4_r18f_i18.dump.gz | Bin 0 -> 609204 bytes
.../mp00307c_bis/iz_thick_q4_r18f_i26.dump.gz | Bin 0 -> 407383 bytes
.../mp00307c_bis/iz_thick_q4_r18h_i06.dump.gz | Bin 0 -> 1055151 bytes
.../mp00307c_bis/iz_thick_q4_r18h_i18.dump.gz | Bin 0 -> 1000578 bytes
.../mp00307c_bis/iz_thick_q4_r18h_i26.dump.gz | Bin 0 -> 972987 bytes
.../mp00307c_bis/iz_thick_q4_r26f_i06.dump.gz | Bin 0 -> 620527 bytes
.../mp00307c_bis/iz_thick_q4_r26f_i18.dump.gz | Bin 0 -> 609204 bytes
.../mp00307c_bis/iz_thick_q4_r26f_i26.dump.gz | Bin 0 -> 407383 bytes
.../mp00307c_bis/iz_thick_q4_r26h_i06.dump.gz | Bin 0 -> 601790 bytes
.../mp00307c_bis/iz_thick_q4_r26h_i18.dump.gz | Bin 0 -> 634200 bytes
.../mp00307c_bis/iz_thick_q4_r26h_i26.dump.gz | Bin 0 -> 544735 bytes
.../mp00307c_bis/iz_thick_q5_r06f_i06.dump.gz | Bin 0 -> 1588485 bytes
.../mp00307c_bis/iz_thick_q5_r06f_i18.dump.gz | Bin 0 -> 1496840 bytes
.../mp00307c_bis/iz_thick_q5_r06f_i26.dump.gz | Bin 0 -> 1493765 bytes
.../mp00307c_bis/iz_thick_q5_r06h_i06.dump.gz | Bin 0 -> 1904574 bytes
.../mp00307c_bis/iz_thick_q5_r06h_i18.dump.gz | Bin 0 -> 1904339 bytes
.../mp00307c_bis/iz_thick_q5_r06h_i26.dump.gz | Bin 0 -> 1951532 bytes
.../mp00307c_bis/iz_thick_q5_r18f_i06.dump.gz | Bin 0 -> 664871 bytes
.../mp00307c_bis/iz_thick_q5_r18f_i18.dump.gz | Bin 0 -> 639733 bytes
.../mp00307c_bis/iz_thick_q5_r18f_i26.dump.gz | Bin 0 -> 894758 bytes
.../mp00307c_bis/iz_thick_q5_r18h_i06.dump.gz | Bin 0 -> 1572494 bytes
.../mp00307c_bis/iz_thick_q5_r18h_i18.dump.gz | Bin 0 -> 1568504 bytes
.../mp00307c_bis/iz_thick_q5_r18h_i26.dump.gz | Bin 0 -> 1527415 bytes
.../mp00307c_bis/iz_thick_q5_r26f_i06.dump.gz | Bin 0 -> 590817 bytes
.../mp00307c_bis/iz_thick_q5_r26f_i18.dump.gz | Bin 0 -> 550819 bytes
.../mp00307c_bis/iz_thick_q5_r26f_i26.dump.gz | Bin 0 -> 823220 bytes
.../mp00307c_bis/iz_thick_q5_r26h_i06.dump.gz | Bin 0 -> 1075375 bytes
.../mp00307c_bis/iz_thick_q5_r26h_i18.dump.gz | Bin 0 -> 1143134 bytes
.../mp00307c_bis/iz_thick_q5_r26h_i26.dump.gz | Bin 0 -> 735410 bytes
.../mp00307c_bis/iz_thin_q4_r06f_i06.dump.gz | Bin 0 -> 962776 bytes
.../mp00307c_bis/iz_thin_q4_r06f_i18.dump.gz | Bin 0 -> 954748 bytes
.../mp00307c_bis/iz_thin_q4_r06f_i26.dump.gz | Bin 0 -> 962713 bytes
.../mp00307c_bis/iz_thin_q4_r06h_i06.dump.gz | Bin 0 -> 1135791 bytes
.../mp00307c_bis/iz_thin_q4_r06h_i18.dump.gz | Bin 0 -> 1160192 bytes
.../mp00307c_bis/iz_thin_q4_r06h_i26.dump.gz | Bin 0 -> 1132680 bytes
.../mp00307c_bis/iz_thin_q4_r18f_i06.dump.gz | Bin 0 -> 684779 bytes
.../mp00307c_bis/iz_thin_q4_r18f_i18.dump.gz | Bin 0 -> 629247 bytes
.../mp00307c_bis/iz_thin_q4_r18f_i26.dump.gz | Bin 0 -> 422005 bytes
.../mp00307c_bis/iz_thin_q4_r18h_i06.dump.gz | Bin 0 -> 1083535 bytes
.../mp00307c_bis/iz_thin_q4_r18h_i18.dump.gz | Bin 0 -> 1006366 bytes
.../mp00307c_bis/iz_thin_q4_r18h_i26.dump.gz | Bin 0 -> 991070 bytes
.../mp00307c_bis/iz_thin_q4_r26f_i06.dump.gz | Bin 0 -> 684779 bytes
.../mp00307c_bis/iz_thin_q4_r26f_i18.dump.gz | Bin 0 -> 629247 bytes
.../mp00307c_bis/iz_thin_q4_r26f_i26.dump.gz | Bin 0 -> 422005 bytes
.../mp00307c_bis/iz_thin_q4_r26h_i06.dump.gz | Bin 0 -> 666343 bytes
.../mp00307c_bis/iz_thin_q4_r26h_i18.dump.gz | Bin 0 -> 701484 bytes
.../mp00307c_bis/iz_thin_q4_r26h_i26.dump.gz | Bin 0 -> 561507 bytes
.../mp00307c_bis/iz_thin_q5_r06f_i06.dump.gz | Bin 0 -> 1612222 bytes
.../mp00307c_bis/iz_thin_q5_r06f_i18.dump.gz | Bin 0 -> 1487062 bytes
.../mp00307c_bis/iz_thin_q5_r06f_i26.dump.gz | Bin 0 -> 1485725 bytes
.../mp00307c_bis/iz_thin_q5_r06h_i06.dump.gz | Bin 0 -> 1878561 bytes
.../mp00307c_bis/iz_thin_q5_r06h_i18.dump.gz | Bin 0 -> 1891209 bytes
.../mp00307c_bis/iz_thin_q5_r06h_i26.dump.gz | Bin 0 -> 1941281 bytes
.../mp00307c_bis/iz_thin_q5_r18f_i06.dump.gz | Bin 0 -> 614381 bytes
.../mp00307c_bis/iz_thin_q5_r18f_i18.dump.gz | Bin 0 -> 703060 bytes
.../mp00307c_bis/iz_thin_q5_r18f_i26.dump.gz | Bin 0 -> 630278 bytes
.../mp00307c_bis/iz_thin_q5_r18h_i06.dump.gz | Bin 0 -> 1573269 bytes
.../mp00307c_bis/iz_thin_q5_r18h_i18.dump.gz | Bin 0 -> 1587858 bytes
.../mp00307c_bis/iz_thin_q5_r18h_i26.dump.gz | Bin 0 -> 1517497 bytes
.../mp00307c_bis/iz_thin_q5_r26f_i06.dump.gz | Bin 0 -> 539920 bytes
.../mp00307c_bis/iz_thin_q5_r26f_i18.dump.gz | Bin 0 -> 620113 bytes
.../mp00307c_bis/iz_thin_q5_r26f_i26.dump.gz | Bin 0 -> 551315 bytes
.../mp00307c_bis/iz_thin_q5_r26h_i06.dump.gz | Bin 0 -> 1131441 bytes
.../mp00307c_bis/iz_thin_q5_r26h_i18.dump.gz | Bin 0 -> 1204687 bytes
.../mp00307c_bis/iz_thin_q5_r26h_i26.dump.gz | Bin 0 -> 797028 bytes
.../mp00307c_bis/labeled_all_q4_r06f.dump.gz | Bin 0 -> 223 bytes
.../mp00307c_bis/labeled_all_q4_r06h.dump.gz | Bin 0 -> 236 bytes
.../mp00307c_bis/labeled_all_q4_r18f.dump.gz | Bin 0 -> 148 bytes
.../mp00307c_bis/labeled_all_q4_r18h.dump.gz | Bin 0 -> 197 bytes
.../mp00307c_bis/labeled_all_q4_r26f.dump.gz | Bin 0 -> 148 bytes
.../mp00307c_bis/labeled_all_q4_r26h.dump.gz | Bin 0 -> 145 bytes
.../mp00307c_bis/labeled_all_q5_r06f.dump.gz | Bin 0 -> 416 bytes
.../mp00307c_bis/labeled_all_q5_r06h.dump.gz | Bin 0 -> 1146 bytes
.../mp00307c_bis/labeled_all_q5_r18f.dump.gz | Bin 0 -> 265 bytes
.../mp00307c_bis/labeled_all_q5_r18h.dump.gz | Bin 0 -> 436 bytes
.../mp00307c_bis/labeled_all_q5_r26f.dump.gz | Bin 0 -> 265 bytes
.../mp00307c_bis/labeled_all_q5_r26h.dump.gz | Bin 0 -> 262 bytes
.../mp00307c_bis/labeled_thick_q4_r06f.dump.gz | Bin 0 -> 214 bytes
.../mp00307c_bis/labeled_thick_q4_r06h.dump.gz | Bin 0 -> 245 bytes
.../mp00307c_bis/labeled_thick_q4_r18f.dump.gz | Bin 0 -> 150 bytes
.../mp00307c_bis/labeled_thick_q4_r18h.dump.gz | Bin 0 -> 196 bytes
.../mp00307c_bis/labeled_thick_q4_r26f.dump.gz | Bin 0 -> 150 bytes
.../mp00307c_bis/labeled_thick_q4_r26h.dump.gz | Bin 0 -> 150 bytes
.../mp00307c_bis/labeled_thick_q5_r06f.dump.gz | Bin 0 -> 390 bytes
.../mp00307c_bis/labeled_thick_q5_r06h.dump.gz | Bin 0 -> 1092 bytes
.../mp00307c_bis/labeled_thick_q5_r18f.dump.gz | Bin 0 -> 285 bytes
.../mp00307c_bis/labeled_thick_q5_r18h.dump.gz | Bin 0 -> 463 bytes
.../mp00307c_bis/labeled_thick_q5_r26f.dump.gz | Bin 0 -> 279 bytes
.../mp00307c_bis/labeled_thick_q5_r26h.dump.gz | Bin 0 -> 278 bytes
.../mp00307c_bis/labeled_thin_q4_r06f.dump.gz | Bin 0 -> 213 bytes
.../mp00307c_bis/labeled_thin_q4_r06h.dump.gz | Bin 0 -> 236 bytes
.../mp00307c_bis/labeled_thin_q4_r18f.dump.gz | Bin 0 -> 151 bytes
.../mp00307c_bis/labeled_thin_q4_r18h.dump.gz | Bin 0 -> 197 bytes
.../mp00307c_bis/labeled_thin_q4_r26f.dump.gz | Bin 0 -> 151 bytes
.../mp00307c_bis/labeled_thin_q4_r26h.dump.gz | Bin 0 -> 149 bytes
.../mp00307c_bis/labeled_thin_q5_r06f.dump.gz | Bin 0 -> 427 bytes
.../mp00307c_bis/labeled_thin_q5_r06h.dump.gz | Bin 0 -> 1043 bytes
.../mp00307c_bis/labeled_thin_q5_r18f.dump.gz | Bin 0 -> 276 bytes
.../mp00307c_bis/labeled_thin_q5_r18h.dump.gz | Bin 0 -> 444 bytes
.../mp00307c_bis/labeled_thin_q5_r26f.dump.gz | Bin 0 -> 267 bytes
.../mp00307c_bis/labeled_thin_q5_r26h.dump.gz | Bin 0 -> 282 bytes
.../labeling/mp00307c_bis/mean3_all_q4_r06f.ppm.gz | Bin 0 -> 1306377 bytes
.../labeling/mp00307c_bis/mean3_all_q4_r06h.ppm.gz | Bin 0 -> 1467102 bytes
.../labeling/mp00307c_bis/mean3_all_q4_r18f.ppm.gz | Bin 0 -> 668707 bytes
.../labeling/mp00307c_bis/mean3_all_q4_r18h.ppm.gz | Bin 0 -> 1277353 bytes
.../labeling/mp00307c_bis/mean3_all_q4_r26f.ppm.gz | Bin 0 -> 668707 bytes
.../labeling/mp00307c_bis/mean3_all_q4_r26h.ppm.gz | Bin 0 -> 602143 bytes
.../labeling/mp00307c_bis/mean3_all_q5_r06f.ppm.gz | Bin 0 -> 1970048 bytes
.../labeling/mp00307c_bis/mean3_all_q5_r06h.ppm.gz | Bin 0 -> 876877 bytes
.../labeling/mp00307c_bis/mean3_all_q5_r18f.ppm.gz | Bin 0 -> 579352 bytes
.../labeling/mp00307c_bis/mean3_all_q5_r18h.ppm.gz | Bin 0 -> 1674000 bytes
.../labeling/mp00307c_bis/mean3_all_q5_r26f.ppm.gz | Bin 0 -> 579352 bytes
.../labeling/mp00307c_bis/mean3_all_q5_r26h.ppm.gz | Bin 0 -> 1000647 bytes
.../mp00307c_bis/mean3_thick_q4_r06f.ppm.gz | Bin 0 -> 1167846 bytes
.../mp00307c_bis/mean3_thick_q4_r06h.ppm.gz | Bin 0 -> 1456800 bytes
.../mp00307c_bis/mean3_thick_q4_r18f.ppm.gz | Bin 0 -> 596167 bytes
.../mp00307c_bis/mean3_thick_q4_r18h.ppm.gz | Bin 0 -> 1222433 bytes
.../mp00307c_bis/mean3_thick_q4_r26f.ppm.gz | Bin 0 -> 596167 bytes
.../mp00307c_bis/mean3_thick_q4_r26h.ppm.gz | Bin 0 -> 498504 bytes
.../mp00307c_bis/mean3_thick_q5_r06f.ppm.gz | Bin 0 -> 1839948 bytes
.../mp00307c_bis/mean3_thick_q5_r06h.ppm.gz | Bin 0 -> 2180622 bytes
.../mp00307c_bis/mean3_thick_q5_r18f.ppm.gz | Bin 0 -> 690328 bytes
.../mp00307c_bis/mean3_thick_q5_r18h.ppm.gz | Bin 0 -> 1630724 bytes
.../mp00307c_bis/mean3_thick_q5_r26f.ppm.gz | Bin 0 -> 651392 bytes
.../mp00307c_bis/mean3_thick_q5_r26h.ppm.gz | Bin 0 -> 950599 bytes
.../mp00307c_bis/mean3_thin_q4_r06f.ppm.gz | Bin 0 -> 1193538 bytes
.../mp00307c_bis/mean3_thin_q4_r06h.ppm.gz | Bin 0 -> 1454794 bytes
.../mp00307c_bis/mean3_thin_q4_r18f.ppm.gz | Bin 0 -> 699989 bytes
.../mp00307c_bis/mean3_thin_q4_r18h.ppm.gz | Bin 0 -> 1266243 bytes
.../mp00307c_bis/mean3_thin_q4_r26f.ppm.gz | Bin 0 -> 699989 bytes
.../mp00307c_bis/mean3_thin_q4_r26h.ppm.gz | Bin 0 -> 603860 bytes
.../mp00307c_bis/mean3_thin_q5_r06f.ppm.gz | Bin 0 -> 1857739 bytes
.../mp00307c_bis/mean3_thin_q5_r06h.ppm.gz | Bin 0 -> 2141277 bytes
.../mp00307c_bis/mean3_thin_q5_r18f.ppm.gz | Bin 0 -> 435524 bytes
.../mp00307c_bis/mean3_thin_q5_r18h.ppm.gz | Bin 0 -> 1625982 bytes
.../mp00307c_bis/mean3_thin_q5_r26f.ppm.gz | Bin 0 -> 396958 bytes
.../mp00307c_bis/mean3_thin_q5_r26h.ppm.gz | Bin 0 -> 1023329 bytes
.../mp00307c_bis/mean4_all_q4_r06f_i06.ppm.gz | Bin 0 -> 1205539 bytes
.../mp00307c_bis/mean4_all_q4_r06f_i18.ppm.gz | Bin 0 -> 1157791 bytes
.../mp00307c_bis/mean4_all_q4_r06f_i26.ppm.gz | Bin 0 -> 1201438 bytes
.../mp00307c_bis/mean4_all_q4_r06h_i06.ppm.gz | Bin 0 -> 1358023 bytes
.../mp00307c_bis/mean4_all_q4_r06h_i18.ppm.gz | Bin 0 -> 1395466 bytes
.../mp00307c_bis/mean4_all_q4_r06h_i26.ppm.gz | Bin 0 -> 1403498 bytes
.../mp00307c_bis/mean4_all_q4_r18f_i06.ppm.gz | Bin 0 -> 698282 bytes
.../mp00307c_bis/mean4_all_q4_r18f_i18.ppm.gz | Bin 0 -> 718930 bytes
.../mp00307c_bis/mean4_all_q4_r18f_i26.ppm.gz | Bin 0 -> 515546 bytes
.../mp00307c_bis/mean4_all_q4_r18h_i06.ppm.gz | Bin 0 -> 1282443 bytes
.../mp00307c_bis/mean4_all_q4_r18h_i18.ppm.gz | Bin 0 -> 1227286 bytes
.../mp00307c_bis/mean4_all_q4_r18h_i26.ppm.gz | Bin 0 -> 1173155 bytes
.../mp00307c_bis/mean4_all_q4_r26f_i06.ppm.gz | Bin 0 -> 698282 bytes
.../mp00307c_bis/mean4_all_q4_r26f_i18.ppm.gz | Bin 0 -> 718930 bytes
.../mp00307c_bis/mean4_all_q4_r26f_i26.ppm.gz | Bin 0 -> 515546 bytes
.../mp00307c_bis/mean4_all_q4_r26h_i06.ppm.gz | Bin 0 -> 703216 bytes
.../mp00307c_bis/mean4_all_q4_r26h_i18.ppm.gz | Bin 0 -> 743441 bytes
.../mp00307c_bis/mean4_all_q4_r26h_i26.ppm.gz | Bin 0 -> 643417 bytes
.../mp00307c_bis/mean4_all_q5_r06f_i06.ppm.gz | Bin 0 -> 2093582 bytes
.../mp00307c_bis/mean4_all_q5_r06f_i18.ppm.gz | Bin 0 -> 1954065 bytes
.../mp00307c_bis/mean4_all_q5_r06f_i26.ppm.gz | Bin 0 -> 1983641 bytes
.../mp00307c_bis/mean4_all_q5_r06h_i06.ppm.gz | Bin 0 -> 1111868 bytes
.../mp00307c_bis/mean4_all_q5_r06h_i18.ppm.gz | Bin 0 -> 1111868 bytes
.../mp00307c_bis/mean4_all_q5_r06h_i26.ppm.gz | Bin 0 -> 1111868 bytes
.../mp00307c_bis/mean4_all_q5_r18f_i06.ppm.gz | Bin 0 -> 680211 bytes
.../mp00307c_bis/mean4_all_q5_r18f_i18.ppm.gz | Bin 0 -> 633735 bytes
.../mp00307c_bis/mean4_all_q5_r18f_i26.ppm.gz | Bin 0 -> 931952 bytes
.../mp00307c_bis/mean4_all_q5_r18h_i06.ppm.gz | Bin 0 -> 1923195 bytes
.../mp00307c_bis/mean4_all_q5_r18h_i18.ppm.gz | Bin 0 -> 1910194 bytes
.../mp00307c_bis/mean4_all_q5_r18h_i26.ppm.gz | Bin 0 -> 1835260 bytes
.../mp00307c_bis/mean4_all_q5_r26f_i06.ppm.gz | Bin 0 -> 680211 bytes
.../mp00307c_bis/mean4_all_q5_r26f_i18.ppm.gz | Bin 0 -> 633735 bytes
.../mp00307c_bis/mean4_all_q5_r26f_i26.ppm.gz | Bin 0 -> 931952 bytes
.../mp00307c_bis/mean4_all_q5_r26h_i06.ppm.gz | Bin 0 -> 1220579 bytes
.../mp00307c_bis/mean4_all_q5_r26h_i18.ppm.gz | Bin 0 -> 1302559 bytes
.../mp00307c_bis/mean4_all_q5_r26h_i26.ppm.gz | Bin 0 -> 864603 bytes
.../mp00307c_bis/mean4_thick_q4_r06f_i06.ppm.gz | Bin 0 -> 1090370 bytes
.../mp00307c_bis/mean4_thick_q4_r06f_i18.ppm.gz | Bin 0 -> 1119679 bytes
.../mp00307c_bis/mean4_thick_q4_r06f_i26.ppm.gz | Bin 0 -> 1134801 bytes
.../mp00307c_bis/mean4_thick_q4_r06h_i06.ppm.gz | Bin 0 -> 1370239 bytes
.../mp00307c_bis/mean4_thick_q4_r06h_i18.ppm.gz | Bin 0 -> 1397990 bytes
.../mp00307c_bis/mean4_thick_q4_r06h_i26.ppm.gz | Bin 0 -> 1357462 bytes
.../mp00307c_bis/mean4_thick_q4_r18f_i06.ppm.gz | Bin 0 -> 619992 bytes
.../mp00307c_bis/mean4_thick_q4_r18f_i18.ppm.gz | Bin 0 -> 644303 bytes
.../mp00307c_bis/mean4_thick_q4_r18f_i26.ppm.gz | Bin 0 -> 432688 bytes
.../mp00307c_bis/mean4_thick_q4_r18h_i06.ppm.gz | Bin 0 -> 1265996 bytes
.../mp00307c_bis/mean4_thick_q4_r18h_i18.ppm.gz | Bin 0 -> 1177530 bytes
.../mp00307c_bis/mean4_thick_q4_r18h_i26.ppm.gz | Bin 0 -> 1139263 bytes
.../mp00307c_bis/mean4_thick_q4_r26f_i06.ppm.gz | Bin 0 -> 619992 bytes
.../mp00307c_bis/mean4_thick_q4_r26f_i18.ppm.gz | Bin 0 -> 644303 bytes
.../mp00307c_bis/mean4_thick_q4_r26f_i26.ppm.gz | Bin 0 -> 432688 bytes
.../mp00307c_bis/mean4_thick_q4_r26h_i06.ppm.gz | Bin 0 -> 601868 bytes
.../mp00307c_bis/mean4_thick_q4_r26h_i18.ppm.gz | Bin 0 -> 640946 bytes
.../mp00307c_bis/mean4_thick_q4_r26h_i26.ppm.gz | Bin 0 -> 605278 bytes
.../mp00307c_bis/mean4_thick_q5_r06f_i06.ppm.gz | Bin 0 -> 1904710 bytes
.../mp00307c_bis/mean4_thick_q5_r06f_i18.ppm.gz | Bin 0 -> 1789692 bytes
.../mp00307c_bis/mean4_thick_q5_r06f_i26.ppm.gz | Bin 0 -> 1791506 bytes
.../mp00307c_bis/mean4_thick_q5_r06h_i06.ppm.gz | Bin 0 -> 2368970 bytes
.../mp00307c_bis/mean4_thick_q5_r06h_i18.ppm.gz | Bin 0 -> 2380072 bytes
.../mp00307c_bis/mean4_thick_q5_r06h_i26.ppm.gz | Bin 0 -> 2444867 bytes
.../mp00307c_bis/mean4_thick_q5_r18f_i06.ppm.gz | Bin 0 -> 767713 bytes
.../mp00307c_bis/mean4_thick_q5_r18f_i18.ppm.gz | Bin 0 -> 736526 bytes
.../mp00307c_bis/mean4_thick_q5_r18f_i26.ppm.gz | Bin 0 -> 1014507 bytes
.../mp00307c_bis/mean4_thick_q5_r18h_i06.ppm.gz | Bin 0 -> 1907841 bytes
.../mp00307c_bis/mean4_thick_q5_r18h_i18.ppm.gz | Bin 0 -> 1904778 bytes
.../mp00307c_bis/mean4_thick_q5_r18h_i26.ppm.gz | Bin 0 -> 1851869 bytes
.../mp00307c_bis/mean4_thick_q5_r26f_i06.ppm.gz | Bin 0 -> 667547 bytes
.../mp00307c_bis/mean4_thick_q5_r26f_i18.ppm.gz | Bin 0 -> 611670 bytes
.../mp00307c_bis/mean4_thick_q5_r26f_i26.ppm.gz | Bin 0 -> 903927 bytes
.../mp00307c_bis/mean4_thick_q5_r26h_i06.ppm.gz | Bin 0 -> 1199684 bytes
.../mp00307c_bis/mean4_thick_q5_r26h_i18.ppm.gz | Bin 0 -> 1287816 bytes
.../mp00307c_bis/mean4_thick_q5_r26h_i26.ppm.gz | Bin 0 -> 864979 bytes
.../mp00307c_bis/mean4_thin_q4_r06f_i06.ppm.gz | Bin 0 -> 1127048 bytes
.../mp00307c_bis/mean4_thin_q4_r06f_i18.ppm.gz | Bin 0 -> 1115306 bytes
.../mp00307c_bis/mean4_thin_q4_r06f_i26.ppm.gz | Bin 0 -> 1125211 bytes
.../mp00307c_bis/mean4_thin_q4_r06h_i06.ppm.gz | Bin 0 -> 1365868 bytes
.../mp00307c_bis/mean4_thin_q4_r06h_i18.ppm.gz | Bin 0 -> 1390980 bytes
.../mp00307c_bis/mean4_thin_q4_r06h_i26.ppm.gz | Bin 0 -> 1351373 bytes
.../mp00307c_bis/mean4_thin_q4_r18f_i06.ppm.gz | Bin 0 -> 727709 bytes
.../mp00307c_bis/mean4_thin_q4_r18f_i18.ppm.gz | Bin 0 -> 693489 bytes
.../mp00307c_bis/mean4_thin_q4_r18f_i26.ppm.gz | Bin 0 -> 484106 bytes
.../mp00307c_bis/mean4_thin_q4_r18h_i06.ppm.gz | Bin 0 -> 1302627 bytes
.../mp00307c_bis/mean4_thin_q4_r18h_i18.ppm.gz | Bin 0 -> 1183068 bytes
.../mp00307c_bis/mean4_thin_q4_r18h_i26.ppm.gz | Bin 0 -> 1160881 bytes
.../mp00307c_bis/mean4_thin_q4_r26f_i06.ppm.gz | Bin 0 -> 727709 bytes
.../mp00307c_bis/mean4_thin_q4_r26f_i18.ppm.gz | Bin 0 -> 693489 bytes
.../mp00307c_bis/mean4_thin_q4_r26f_i26.ppm.gz | Bin 0 -> 484106 bytes
.../mp00307c_bis/mean4_thin_q4_r26h_i06.ppm.gz | Bin 0 -> 708109 bytes
.../mp00307c_bis/mean4_thin_q4_r26h_i18.ppm.gz | Bin 0 -> 752658 bytes
.../mp00307c_bis/mean4_thin_q4_r26h_i26.ppm.gz | Bin 0 -> 654845 bytes
.../mp00307c_bis/mean4_thin_q5_r06f_i06.ppm.gz | Bin 0 -> 1950212 bytes
.../mp00307c_bis/mean4_thin_q5_r06f_i18.ppm.gz | Bin 0 -> 1777651 bytes
.../mp00307c_bis/mean4_thin_q5_r06f_i26.ppm.gz | Bin 0 -> 1775219 bytes
.../mp00307c_bis/mean4_thin_q5_r06h_i06.ppm.gz | Bin 0 -> 2326251 bytes
.../mp00307c_bis/mean4_thin_q5_r06h_i18.ppm.gz | Bin 0 -> 2349671 bytes
.../mp00307c_bis/mean4_thin_q5_r06h_i26.ppm.gz | Bin 0 -> 2423756 bytes
.../mp00307c_bis/mean4_thin_q5_r18f_i06.ppm.gz | Bin 0 -> 699039 bytes
.../mp00307c_bis/mean4_thin_q5_r18f_i18.ppm.gz | Bin 0 -> 823493 bytes
.../mp00307c_bis/mean4_thin_q5_r18f_i26.ppm.gz | Bin 0 -> 738297 bytes
.../mp00307c_bis/mean4_thin_q5_r18h_i06.ppm.gz | Bin 0 -> 1887981 bytes
.../mp00307c_bis/mean4_thin_q5_r18h_i18.ppm.gz | Bin 0 -> 1881624 bytes
.../mp00307c_bis/mean4_thin_q5_r18h_i26.ppm.gz | Bin 0 -> 1825698 bytes
.../mp00307c_bis/mean4_thin_q5_r26f_i06.ppm.gz | Bin 0 -> 598568 bytes
.../mp00307c_bis/mean4_thin_q5_r26f_i18.ppm.gz | Bin 0 -> 708405 bytes
.../mp00307c_bis/mean4_thin_q5_r26f_i26.ppm.gz | Bin 0 -> 629821 bytes
.../mp00307c_bis/mean4_thin_q5_r26h_i06.ppm.gz | Bin 0 -> 1275641 bytes
.../mp00307c_bis/mean4_thin_q5_r26h_i18.ppm.gz | Bin 0 -> 1371205 bytes
.../mp00307c_bis/mean4_thin_q5_r26h_i26.ppm.gz | Bin 0 -> 951356 bytes
.../doc/labeling/mp00307c_bis/mp00307c.ppm.gz | Bin 0 -> 4951735 bytes
.../green/doc/labeling/mp00307c_bis/mp00307c.sh.gz | Bin 0 -> 3781 bytes
.../labeling/mp00307c_bis/mp00307c_thick.pbm.gz | Bin 0 -> 196172 bytes
.../doc/labeling/mp00307c_bis/mp00307c_thin.pbm.gz | Bin 0 -> 244492 bytes
.../labeling/mp00307c_bis/opened_all_q4.dump.gz | Bin 0 -> 1786 bytes
.../labeling/mp00307c_bis/opened_all_q5.dump.gz | Bin 0 -> 7290 bytes
.../labeling/mp00307c_bis/opened_all_q8.dump.gz | Bin 0 -> 65211 bytes
.../labeling/mp00307c_bis/opened_thick_q4.dump.gz | Bin 0 -> 1560 bytes
.../labeling/mp00307c_bis/opened_thick_q5.dump.gz | Bin 0 -> 5813 bytes
.../labeling/mp00307c_bis/opened_thick_q8.dump.gz | Bin 0 -> 65213 bytes
.../labeling/mp00307c_bis/opened_thin_q4.dump.gz | Bin 0 -> 1515 bytes
.../labeling/mp00307c_bis/opened_thin_q5.dump.gz | Bin 0 -> 5638 bytes
.../labeling/mp00307c_bis/opened_thin_q8.dump.gz | Bin 0 -> 65212 bytes
.../doc/labeling/mp00307c_bis/proj1_all_q4.pgm.gz | Bin 0 -> 313 bytes
.../doc/labeling/mp00307c_bis/proj1_all_q4.ppm.gz | Bin 0 -> 422 bytes
.../doc/labeling/mp00307c_bis/proj1_all_q5.pgm.gz | Bin 0 -> 663 bytes
.../doc/labeling/mp00307c_bis/proj1_all_q5.ppm.gz | Bin 0 -> 1093 bytes
.../doc/labeling/mp00307c_bis/proj1_all_q8.pgm.gz | Bin 0 -> 8180 bytes
.../doc/labeling/mp00307c_bis/proj1_all_q8.ppm.gz | Bin 0 -> 22924 bytes
.../labeling/mp00307c_bis/proj1_thick_q4.pgm.gz | Bin 0 -> 309 bytes
.../labeling/mp00307c_bis/proj1_thick_q4.ppm.gz | Bin 0 -> 412 bytes
.../labeling/mp00307c_bis/proj1_thick_q5.pgm.gz | Bin 0 -> 646 bytes
.../labeling/mp00307c_bis/proj1_thick_q5.ppm.gz | Bin 0 -> 1062 bytes
.../labeling/mp00307c_bis/proj1_thick_q8.pgm.gz | Bin 0 -> 6790 bytes
.../labeling/mp00307c_bis/proj1_thick_q8.ppm.gz | Bin 0 -> 18924 bytes
.../doc/labeling/mp00307c_bis/proj1_thin_q4.pgm.gz | Bin 0 -> 307 bytes
.../doc/labeling/mp00307c_bis/proj1_thin_q4.ppm.gz | Bin 0 -> 411 bytes
.../doc/labeling/mp00307c_bis/proj1_thin_q5.pgm.gz | Bin 0 -> 641 bytes
.../doc/labeling/mp00307c_bis/proj1_thin_q5.ppm.gz | Bin 0 -> 1051 bytes
.../doc/labeling/mp00307c_bis/proj1_thin_q8.pgm.gz | Bin 0 -> 6680 bytes
.../doc/labeling/mp00307c_bis/proj1_thin_q8.ppm.gz | Bin 0 -> 18395 bytes
.../doc/labeling/mp00307c_bis/proj2_all_q4.pgm.gz | Bin 0 -> 316 bytes
.../doc/labeling/mp00307c_bis/proj2_all_q4.ppm.gz | Bin 0 -> 425 bytes
.../doc/labeling/mp00307c_bis/proj2_all_q5.pgm.gz | Bin 0 -> 659 bytes
.../doc/labeling/mp00307c_bis/proj2_all_q5.ppm.gz | Bin 0 -> 1076 bytes
.../doc/labeling/mp00307c_bis/proj2_all_q8.pgm.gz | Bin 0 -> 233 bytes
.../doc/labeling/mp00307c_bis/proj2_all_q8.ppm.gz | Bin 0 -> 364 bytes
.../labeling/mp00307c_bis/proj2_thick_q4.pgm.gz | Bin 0 -> 311 bytes
.../labeling/mp00307c_bis/proj2_thick_q4.ppm.gz | Bin 0 -> 415 bytes
.../labeling/mp00307c_bis/proj2_thick_q5.pgm.gz | Bin 0 -> 635 bytes
.../labeling/mp00307c_bis/proj2_thick_q5.ppm.gz | Bin 0 -> 1048 bytes
.../labeling/mp00307c_bis/proj2_thick_q8.pgm.gz | Bin 0 -> 235 bytes
.../labeling/mp00307c_bis/proj2_thick_q8.ppm.gz | Bin 0 -> 366 bytes
.../doc/labeling/mp00307c_bis/proj2_thin_q4.pgm.gz | Bin 0 -> 309 bytes
.../doc/labeling/mp00307c_bis/proj2_thin_q4.ppm.gz | Bin 0 -> 415 bytes
.../doc/labeling/mp00307c_bis/proj2_thin_q5.pgm.gz | Bin 0 -> 630 bytes
.../doc/labeling/mp00307c_bis/proj2_thin_q5.ppm.gz | Bin 0 -> 1036 bytes
.../doc/labeling/mp00307c_bis/proj2_thin_q8.pgm.gz | Bin 0 -> 234 bytes
.../doc/labeling/mp00307c_bis/proj2_thin_q8.ppm.gz | Bin 0 -> 365 bytes
.../labeling/mp00307c_bis/proj3_all_q4_r06f.ppm.gz | Bin 0 -> 295 bytes
.../labeling/mp00307c_bis/proj3_all_q4_r06h.ppm.gz | Bin 0 -> 338 bytes
.../labeling/mp00307c_bis/proj3_all_q4_r18f.ppm.gz | Bin 0 -> 227 bytes
.../labeling/mp00307c_bis/proj3_all_q4_r18h.ppm.gz | Bin 0 -> 294 bytes
.../labeling/mp00307c_bis/proj3_all_q4_r26f.ppm.gz | Bin 0 -> 227 bytes
.../labeling/mp00307c_bis/proj3_all_q4_r26h.ppm.gz | Bin 0 -> 232 bytes
.../labeling/mp00307c_bis/proj3_all_q5_r06f.ppm.gz | Bin 0 -> 444 bytes
.../labeling/mp00307c_bis/proj3_all_q5_r06h.ppm.gz | Bin 0 -> 818 bytes
.../labeling/mp00307c_bis/proj3_all_q5_r18f.ppm.gz | Bin 0 -> 332 bytes
.../labeling/mp00307c_bis/proj3_all_q5_r18h.ppm.gz | Bin 0 -> 510 bytes
.../labeling/mp00307c_bis/proj3_all_q5_r26f.ppm.gz | Bin 0 -> 332 bytes
.../labeling/mp00307c_bis/proj3_all_q5_r26h.ppm.gz | Bin 0 -> 348 bytes
.../mp00307c_bis/proj3_thick_q4_r06f.ppm.gz | Bin 0 -> 292 bytes
.../mp00307c_bis/proj3_thick_q4_r06h.ppm.gz | Bin 0 -> 327 bytes
.../mp00307c_bis/proj3_thick_q4_r18f.ppm.gz | Bin 0 -> 232 bytes
.../mp00307c_bis/proj3_thick_q4_r18h.ppm.gz | Bin 0 -> 289 bytes
.../mp00307c_bis/proj3_thick_q4_r26f.ppm.gz | Bin 0 -> 232 bytes
.../mp00307c_bis/proj3_thick_q4_r26h.ppm.gz | Bin 0 -> 240 bytes
.../mp00307c_bis/proj3_thick_q5_r06f.ppm.gz | Bin 0 -> 434 bytes
.../mp00307c_bis/proj3_thick_q5_r06h.ppm.gz | Bin 0 -> 836 bytes
.../mp00307c_bis/proj3_thick_q5_r18f.ppm.gz | Bin 0 -> 356 bytes
.../mp00307c_bis/proj3_thick_q5_r18h.ppm.gz | Bin 0 -> 527 bytes
.../mp00307c_bis/proj3_thick_q5_r26f.ppm.gz | Bin 0 -> 350 bytes
.../mp00307c_bis/proj3_thick_q5_r26h.ppm.gz | Bin 0 -> 375 bytes
.../mp00307c_bis/proj3_thin_q4_r06f.ppm.gz | Bin 0 -> 292 bytes
.../mp00307c_bis/proj3_thin_q4_r06h.ppm.gz | Bin 0 -> 327 bytes
.../mp00307c_bis/proj3_thin_q4_r18f.ppm.gz | Bin 0 -> 231 bytes
.../mp00307c_bis/proj3_thin_q4_r18h.ppm.gz | Bin 0 -> 295 bytes
.../mp00307c_bis/proj3_thin_q4_r26f.ppm.gz | Bin 0 -> 231 bytes
.../mp00307c_bis/proj3_thin_q4_r26h.ppm.gz | Bin 0 -> 241 bytes
.../mp00307c_bis/proj3_thin_q5_r06f.ppm.gz | Bin 0 -> 459 bytes
.../mp00307c_bis/proj3_thin_q5_r06h.ppm.gz | Bin 0 -> 788 bytes
.../mp00307c_bis/proj3_thin_q5_r18f.ppm.gz | Bin 0 -> 356 bytes
.../mp00307c_bis/proj3_thin_q5_r18h.ppm.gz | Bin 0 -> 510 bytes
.../mp00307c_bis/proj3_thin_q5_r26f.ppm.gz | Bin 0 -> 353 bytes
.../mp00307c_bis/proj3_thin_q5_r26h.ppm.gz | Bin 0 -> 379 bytes
.../mp00307c_bis/proj4_all_q4_r06f_i06.ppm.gz | Bin 0 -> 332 bytes
.../mp00307c_bis/proj4_all_q4_r06f_i18.ppm.gz | Bin 0 -> 329 bytes
.../mp00307c_bis/proj4_all_q4_r06f_i26.ppm.gz | Bin 0 -> 332 bytes
.../mp00307c_bis/proj4_all_q4_r06h_i06.ppm.gz | Bin 0 -> 376 bytes
.../mp00307c_bis/proj4_all_q4_r06h_i18.ppm.gz | Bin 0 -> 395 bytes
.../mp00307c_bis/proj4_all_q4_r06h_i26.ppm.gz | Bin 0 -> 395 bytes
.../mp00307c_bis/proj4_all_q4_r18f_i06.ppm.gz | Bin 0 -> 253 bytes
.../mp00307c_bis/proj4_all_q4_r18f_i18.ppm.gz | Bin 0 -> 256 bytes
.../mp00307c_bis/proj4_all_q4_r18f_i26.ppm.gz | Bin 0 -> 255 bytes
.../mp00307c_bis/proj4_all_q4_r18h_i06.ppm.gz | Bin 0 -> 325 bytes
.../mp00307c_bis/proj4_all_q4_r18h_i18.ppm.gz | Bin 0 -> 351 bytes
.../mp00307c_bis/proj4_all_q4_r18h_i26.ppm.gz | Bin 0 -> 349 bytes
.../mp00307c_bis/proj4_all_q4_r26f_i06.ppm.gz | Bin 0 -> 253 bytes
.../mp00307c_bis/proj4_all_q4_r26f_i18.ppm.gz | Bin 0 -> 256 bytes
.../mp00307c_bis/proj4_all_q4_r26f_i26.ppm.gz | Bin 0 -> 255 bytes
.../mp00307c_bis/proj4_all_q4_r26h_i06.ppm.gz | Bin 0 -> 256 bytes
.../mp00307c_bis/proj4_all_q4_r26h_i18.ppm.gz | Bin 0 -> 274 bytes
.../mp00307c_bis/proj4_all_q4_r26h_i26.ppm.gz | Bin 0 -> 275 bytes
.../mp00307c_bis/proj4_all_q5_r06f_i06.ppm.gz | Bin 0 -> 511 bytes
.../mp00307c_bis/proj4_all_q5_r06f_i18.ppm.gz | Bin 0 -> 525 bytes
.../mp00307c_bis/proj4_all_q5_r06f_i26.ppm.gz | Bin 0 -> 530 bytes
.../mp00307c_bis/proj4_all_q5_r06h_i06.ppm.gz | Bin 0 -> 896 bytes
.../mp00307c_bis/proj4_all_q5_r06h_i18.ppm.gz | Bin 0 -> 896 bytes
.../mp00307c_bis/proj4_all_q5_r06h_i26.ppm.gz | Bin 0 -> 896 bytes
.../mp00307c_bis/proj4_all_q5_r18f_i06.ppm.gz | Bin 0 -> 356 bytes
.../mp00307c_bis/proj4_all_q5_r18f_i18.ppm.gz | Bin 0 -> 383 bytes
.../mp00307c_bis/proj4_all_q5_r18f_i26.ppm.gz | Bin 0 -> 389 bytes
.../mp00307c_bis/proj4_all_q5_r18h_i06.ppm.gz | Bin 0 -> 597 bytes
.../mp00307c_bis/proj4_all_q5_r18h_i18.ppm.gz | Bin 0 -> 673 bytes
.../mp00307c_bis/proj4_all_q5_r18h_i26.ppm.gz | Bin 0 -> 685 bytes
.../mp00307c_bis/proj4_all_q5_r26f_i06.ppm.gz | Bin 0 -> 356 bytes
.../mp00307c_bis/proj4_all_q5_r26f_i18.ppm.gz | Bin 0 -> 383 bytes
.../mp00307c_bis/proj4_all_q5_r26f_i26.ppm.gz | Bin 0 -> 389 bytes
.../mp00307c_bis/proj4_all_q5_r26h_i06.ppm.gz | Bin 0 -> 379 bytes
.../mp00307c_bis/proj4_all_q5_r26h_i18.ppm.gz | Bin 0 -> 439 bytes
.../mp00307c_bis/proj4_all_q5_r26h_i26.ppm.gz | Bin 0 -> 455 bytes
.../mp00307c_bis/proj4_thick_q4_r06f_i06.ppm.gz | Bin 0 -> 326 bytes
.../mp00307c_bis/proj4_thick_q4_r06f_i18.ppm.gz | Bin 0 -> 327 bytes
.../mp00307c_bis/proj4_thick_q4_r06f_i26.ppm.gz | Bin 0 -> 325 bytes
.../mp00307c_bis/proj4_thick_q4_r06h_i06.ppm.gz | Bin 0 -> 377 bytes
.../mp00307c_bis/proj4_thick_q4_r06h_i18.ppm.gz | Bin 0 -> 399 bytes
.../mp00307c_bis/proj4_thick_q4_r06h_i26.ppm.gz | Bin 0 -> 391 bytes
.../mp00307c_bis/proj4_thick_q4_r18f_i06.ppm.gz | Bin 0 -> 262 bytes
.../mp00307c_bis/proj4_thick_q4_r18f_i18.ppm.gz | Bin 0 -> 258 bytes
.../mp00307c_bis/proj4_thick_q4_r18f_i26.ppm.gz | Bin 0 -> 262 bytes
.../mp00307c_bis/proj4_thick_q4_r18h_i06.ppm.gz | Bin 0 -> 328 bytes
.../mp00307c_bis/proj4_thick_q4_r18h_i18.ppm.gz | Bin 0 -> 344 bytes
.../mp00307c_bis/proj4_thick_q4_r18h_i26.ppm.gz | Bin 0 -> 344 bytes
.../mp00307c_bis/proj4_thick_q4_r26f_i06.ppm.gz | Bin 0 -> 262 bytes
.../mp00307c_bis/proj4_thick_q4_r26f_i18.ppm.gz | Bin 0 -> 258 bytes
.../mp00307c_bis/proj4_thick_q4_r26f_i26.ppm.gz | Bin 0 -> 262 bytes
.../mp00307c_bis/proj4_thick_q4_r26h_i06.ppm.gz | Bin 0 -> 260 bytes
.../mp00307c_bis/proj4_thick_q4_r26h_i18.ppm.gz | Bin 0 -> 283 bytes
.../mp00307c_bis/proj4_thick_q4_r26h_i26.ppm.gz | Bin 0 -> 286 bytes
.../mp00307c_bis/proj4_thick_q5_r06f_i06.ppm.gz | Bin 0 -> 479 bytes
.../mp00307c_bis/proj4_thick_q5_r06f_i18.ppm.gz | Bin 0 -> 498 bytes
.../mp00307c_bis/proj4_thick_q5_r06f_i26.ppm.gz | Bin 0 -> 507 bytes
.../mp00307c_bis/proj4_thick_q5_r06h_i06.ppm.gz | Bin 0 -> 914 bytes
.../mp00307c_bis/proj4_thick_q5_r06h_i18.ppm.gz | Bin 0 -> 962 bytes
.../mp00307c_bis/proj4_thick_q5_r06h_i26.ppm.gz | Bin 0 -> 975 bytes
.../mp00307c_bis/proj4_thick_q5_r18f_i06.ppm.gz | Bin 0 -> 393 bytes
.../mp00307c_bis/proj4_thick_q5_r18f_i18.ppm.gz | Bin 0 -> 413 bytes
.../mp00307c_bis/proj4_thick_q5_r18f_i26.ppm.gz | Bin 0 -> 420 bytes
.../mp00307c_bis/proj4_thick_q5_r18h_i06.ppm.gz | Bin 0 -> 589 bytes
.../mp00307c_bis/proj4_thick_q5_r18h_i18.ppm.gz | Bin 0 -> 652 bytes
.../mp00307c_bis/proj4_thick_q5_r18h_i26.ppm.gz | Bin 0 -> 672 bytes
.../mp00307c_bis/proj4_thick_q5_r26f_i06.ppm.gz | Bin 0 -> 388 bytes
.../mp00307c_bis/proj4_thick_q5_r26f_i18.ppm.gz | Bin 0 -> 407 bytes
.../mp00307c_bis/proj4_thick_q5_r26f_i26.ppm.gz | Bin 0 -> 409 bytes
.../mp00307c_bis/proj4_thick_q5_r26h_i06.ppm.gz | Bin 0 -> 413 bytes
.../mp00307c_bis/proj4_thick_q5_r26h_i18.ppm.gz | Bin 0 -> 471 bytes
.../mp00307c_bis/proj4_thick_q5_r26h_i26.ppm.gz | Bin 0 -> 467 bytes
.../mp00307c_bis/proj4_thin_q4_r06f_i06.ppm.gz | Bin 0 -> 323 bytes
.../mp00307c_bis/proj4_thin_q4_r06f_i18.ppm.gz | Bin 0 -> 328 bytes
.../mp00307c_bis/proj4_thin_q4_r06f_i26.ppm.gz | Bin 0 -> 319 bytes
.../mp00307c_bis/proj4_thin_q4_r06h_i06.ppm.gz | Bin 0 -> 371 bytes
.../mp00307c_bis/proj4_thin_q4_r06h_i18.ppm.gz | Bin 0 -> 390 bytes
.../mp00307c_bis/proj4_thin_q4_r06h_i26.ppm.gz | Bin 0 -> 387 bytes
.../mp00307c_bis/proj4_thin_q4_r18f_i06.ppm.gz | Bin 0 -> 257 bytes
.../mp00307c_bis/proj4_thin_q4_r18f_i18.ppm.gz | Bin 0 -> 259 bytes
.../mp00307c_bis/proj4_thin_q4_r18f_i26.ppm.gz | Bin 0 -> 256 bytes
.../mp00307c_bis/proj4_thin_q4_r18h_i06.ppm.gz | Bin 0 -> 324 bytes
.../mp00307c_bis/proj4_thin_q4_r18h_i18.ppm.gz | Bin 0 -> 342 bytes
.../mp00307c_bis/proj4_thin_q4_r18h_i26.ppm.gz | Bin 0 -> 343 bytes
.../mp00307c_bis/proj4_thin_q4_r26f_i06.ppm.gz | Bin 0 -> 257 bytes
.../mp00307c_bis/proj4_thin_q4_r26f_i18.ppm.gz | Bin 0 -> 259 bytes
.../mp00307c_bis/proj4_thin_q4_r26f_i26.ppm.gz | Bin 0 -> 256 bytes
.../mp00307c_bis/proj4_thin_q4_r26h_i06.ppm.gz | Bin 0 -> 259 bytes
.../mp00307c_bis/proj4_thin_q4_r26h_i18.ppm.gz | Bin 0 -> 280 bytes
.../mp00307c_bis/proj4_thin_q4_r26h_i26.ppm.gz | Bin 0 -> 284 bytes
.../mp00307c_bis/proj4_thin_q5_r06f_i06.ppm.gz | Bin 0 -> 526 bytes
.../mp00307c_bis/proj4_thin_q5_r06f_i18.ppm.gz | Bin 0 -> 526 bytes
.../mp00307c_bis/proj4_thin_q5_r06f_i26.ppm.gz | Bin 0 -> 543 bytes
.../mp00307c_bis/proj4_thin_q5_r06h_i06.ppm.gz | Bin 0 -> 882 bytes
.../mp00307c_bis/proj4_thin_q5_r06h_i18.ppm.gz | Bin 0 -> 940 bytes
.../mp00307c_bis/proj4_thin_q5_r06h_i26.ppm.gz | Bin 0 -> 962 bytes
.../mp00307c_bis/proj4_thin_q5_r18f_i06.ppm.gz | Bin 0 -> 390 bytes
.../mp00307c_bis/proj4_thin_q5_r18f_i18.ppm.gz | Bin 0 -> 407 bytes
.../mp00307c_bis/proj4_thin_q5_r18f_i26.ppm.gz | Bin 0 -> 418 bytes
.../mp00307c_bis/proj4_thin_q5_r18h_i06.ppm.gz | Bin 0 -> 589 bytes
.../mp00307c_bis/proj4_thin_q5_r18h_i18.ppm.gz | Bin 0 -> 650 bytes
.../mp00307c_bis/proj4_thin_q5_r18h_i26.ppm.gz | Bin 0 -> 664 bytes
.../mp00307c_bis/proj4_thin_q5_r26f_i06.ppm.gz | Bin 0 -> 385 bytes
.../mp00307c_bis/proj4_thin_q5_r26f_i18.ppm.gz | Bin 0 -> 400 bytes
.../mp00307c_bis/proj4_thin_q5_r26f_i26.ppm.gz | Bin 0 -> 411 bytes
.../mp00307c_bis/proj4_thin_q5_r26h_i06.ppm.gz | Bin 0 -> 422 bytes
.../mp00307c_bis/proj4_thin_q5_r26h_i18.ppm.gz | Bin 0 -> 477 bytes
.../mp00307c_bis/proj4_thin_q5_r26h_i26.ppm.gz | Bin 0 -> 479 bytes
.../doc/labeling/mp00307c_bis/quant_q4.ppm.gz | Bin 0 -> 1890534 bytes
.../doc/labeling/mp00307c_bis/quant_q5.ppm.gz | Bin 0 -> 2929797 bytes
.../doc/labeling/mp00307c_bis/quant_q8.ppm.gz | Bin 0 -> 4951954 bytes
.../mp00307c_bis/stats3_all_q4_r06f.txt.gz | Bin 0 -> 535 bytes
.../mp00307c_bis/stats3_all_q4_r06h.txt.gz | Bin 0 -> 835 bytes
.../mp00307c_bis/stats3_all_q4_r18f.txt.gz | Bin 0 -> 234 bytes
.../mp00307c_bis/stats3_all_q4_r18h.txt.gz | Bin 0 -> 597 bytes
.../mp00307c_bis/stats3_all_q4_r26f.txt.gz | Bin 0 -> 234 bytes
.../mp00307c_bis/stats3_all_q4_r26h.txt.gz | Bin 0 -> 284 bytes
.../mp00307c_bis/stats3_all_q5_r06f.txt.gz | Bin 0 -> 855 bytes
.../mp00307c_bis/stats3_all_q5_r06h.txt.gz | Bin 0 -> 4374 bytes
.../mp00307c_bis/stats3_all_q5_r18f.txt.gz | Bin 0 -> 333 bytes
.../mp00307c_bis/stats3_all_q5_r18h.txt.gz | Bin 0 -> 1416 bytes
.../mp00307c_bis/stats3_all_q5_r26f.txt.gz | Bin 0 -> 333 bytes
.../mp00307c_bis/stats3_all_q5_r26h.txt.gz | Bin 0 -> 577 bytes
.../mp00307c_bis/stats3_thick_q4_r06f.txt.gz | Bin 0 -> 481 bytes
.../mp00307c_bis/stats3_thick_q4_r06h.txt.gz | Bin 0 -> 836 bytes
.../mp00307c_bis/stats3_thick_q4_r18f.txt.gz | Bin 0 -> 240 bytes
.../mp00307c_bis/stats3_thick_q4_r18h.txt.gz | Bin 0 -> 585 bytes
.../mp00307c_bis/stats3_thick_q4_r26f.txt.gz | Bin 0 -> 240 bytes
.../mp00307c_bis/stats3_thick_q4_r26h.txt.gz | Bin 0 -> 311 bytes
.../mp00307c_bis/stats3_thick_q5_r06f.txt.gz | Bin 0 -> 713 bytes
.../mp00307c_bis/stats3_thick_q5_r06h.txt.gz | Bin 0 -> 4004 bytes
.../mp00307c_bis/stats3_thick_q5_r18f.txt.gz | Bin 0 -> 381 bytes
.../mp00307c_bis/stats3_thick_q5_r18h.txt.gz | Bin 0 -> 1462 bytes
.../mp00307c_bis/stats3_thick_q5_r26f.txt.gz | Bin 0 -> 359 bytes
.../mp00307c_bis/stats3_thick_q5_r26h.txt.gz | Bin 0 -> 633 bytes
.../mp00307c_bis/stats3_thin_q4_r06f.txt.gz | Bin 0 -> 483 bytes
.../mp00307c_bis/stats3_thin_q4_r06h.txt.gz | Bin 0 -> 818 bytes
.../mp00307c_bis/stats3_thin_q4_r18f.txt.gz | Bin 0 -> 239 bytes
.../mp00307c_bis/stats3_thin_q4_r18h.txt.gz | Bin 0 -> 599 bytes
.../mp00307c_bis/stats3_thin_q4_r26f.txt.gz | Bin 0 -> 239 bytes
.../mp00307c_bis/stats3_thin_q4_r26h.txt.gz | Bin 0 -> 304 bytes
.../mp00307c_bis/stats3_thin_q5_r06f.txt.gz | Bin 0 -> 841 bytes
.../mp00307c_bis/stats3_thin_q5_r06h.txt.gz | Bin 0 -> 3791 bytes
.../mp00307c_bis/stats3_thin_q5_r18f.txt.gz | Bin 0 -> 359 bytes
.../mp00307c_bis/stats3_thin_q5_r18h.txt.gz | Bin 0 -> 1389 bytes
.../mp00307c_bis/stats3_thin_q5_r26f.txt.gz | Bin 0 -> 334 bytes
.../mp00307c_bis/stats3_thin_q5_r26h.txt.gz | Bin 0 -> 646 bytes
.../mp00307c_bis/stats4_all_q4_r06f_i06.txt.gz | Bin 0 -> 547 bytes
.../mp00307c_bis/stats4_all_q4_r06f_i18.txt.gz | Bin 0 -> 535 bytes
.../mp00307c_bis/stats4_all_q4_r06f_i26.txt.gz | Bin 0 -> 533 bytes
.../mp00307c_bis/stats4_all_q4_r06h_i06.txt.gz | Bin 0 -> 856 bytes
.../mp00307c_bis/stats4_all_q4_r06h_i18.txt.gz | Bin 0 -> 871 bytes
.../mp00307c_bis/stats4_all_q4_r06h_i26.txt.gz | Bin 0 -> 873 bytes
.../mp00307c_bis/stats4_all_q4_r18f_i06.txt.gz | Bin 0 -> 244 bytes
.../mp00307c_bis/stats4_all_q4_r18f_i18.txt.gz | Bin 0 -> 242 bytes
.../mp00307c_bis/stats4_all_q4_r18f_i26.txt.gz | Bin 0 -> 245 bytes
.../mp00307c_bis/stats4_all_q4_r18h_i06.txt.gz | Bin 0 -> 596 bytes
.../mp00307c_bis/stats4_all_q4_r18h_i18.txt.gz | Bin 0 -> 604 bytes
.../mp00307c_bis/stats4_all_q4_r18h_i26.txt.gz | Bin 0 -> 602 bytes
.../mp00307c_bis/stats4_all_q4_r26f_i06.txt.gz | Bin 0 -> 244 bytes
.../mp00307c_bis/stats4_all_q4_r26f_i18.txt.gz | Bin 0 -> 242 bytes
.../mp00307c_bis/stats4_all_q4_r26f_i26.txt.gz | Bin 0 -> 245 bytes
.../mp00307c_bis/stats4_all_q4_r26h_i06.txt.gz | Bin 0 -> 287 bytes
.../mp00307c_bis/stats4_all_q4_r26h_i18.txt.gz | Bin 0 -> 291 bytes
.../mp00307c_bis/stats4_all_q4_r26h_i26.txt.gz | Bin 0 -> 288 bytes
.../mp00307c_bis/stats4_all_q5_r06f_i06.txt.gz | Bin 0 -> 849 bytes
.../mp00307c_bis/stats4_all_q5_r06f_i18.txt.gz | Bin 0 -> 860 bytes
.../mp00307c_bis/stats4_all_q5_r06f_i26.txt.gz | Bin 0 -> 871 bytes
.../mp00307c_bis/stats4_all_q5_r06h_i06.txt.gz | Bin 0 -> 4673 bytes
.../mp00307c_bis/stats4_all_q5_r06h_i18.txt.gz | Bin 0 -> 4673 bytes
.../mp00307c_bis/stats4_all_q5_r06h_i26.txt.gz | Bin 0 -> 4673 bytes
.../mp00307c_bis/stats4_all_q5_r18f_i06.txt.gz | Bin 0 -> 341 bytes
.../mp00307c_bis/stats4_all_q5_r18f_i18.txt.gz | Bin 0 -> 339 bytes
.../mp00307c_bis/stats4_all_q5_r18f_i26.txt.gz | Bin 0 -> 340 bytes
.../mp00307c_bis/stats4_all_q5_r18h_i06.txt.gz | Bin 0 -> 1442 bytes
.../mp00307c_bis/stats4_all_q5_r18h_i18.txt.gz | Bin 0 -> 1473 bytes
.../mp00307c_bis/stats4_all_q5_r18h_i26.txt.gz | Bin 0 -> 1487 bytes
.../mp00307c_bis/stats4_all_q5_r26f_i06.txt.gz | Bin 0 -> 341 bytes
.../mp00307c_bis/stats4_all_q5_r26f_i18.txt.gz | Bin 0 -> 339 bytes
.../mp00307c_bis/stats4_all_q5_r26f_i26.txt.gz | Bin 0 -> 340 bytes
.../mp00307c_bis/stats4_all_q5_r26h_i06.txt.gz | Bin 0 -> 592 bytes
.../mp00307c_bis/stats4_all_q5_r26h_i18.txt.gz | Bin 0 -> 606 bytes
.../mp00307c_bis/stats4_all_q5_r26h_i26.txt.gz | Bin 0 -> 602 bytes
.../mp00307c_bis/stats4_thick_q4_r06f_i06.txt.gz | Bin 0 -> 495 bytes
.../mp00307c_bis/stats4_thick_q4_r06f_i18.txt.gz | Bin 0 -> 494 bytes
.../mp00307c_bis/stats4_thick_q4_r06f_i26.txt.gz | Bin 0 -> 489 bytes
.../mp00307c_bis/stats4_thick_q4_r06h_i06.txt.gz | Bin 0 -> 849 bytes
.../mp00307c_bis/stats4_thick_q4_r06h_i18.txt.gz | Bin 0 -> 871 bytes
.../mp00307c_bis/stats4_thick_q4_r06h_i26.txt.gz | Bin 0 -> 881 bytes
.../mp00307c_bis/stats4_thick_q4_r18f_i06.txt.gz | Bin 0 -> 248 bytes
.../mp00307c_bis/stats4_thick_q4_r18f_i18.txt.gz | Bin 0 -> 248 bytes
.../mp00307c_bis/stats4_thick_q4_r18f_i26.txt.gz | Bin 0 -> 246 bytes
.../mp00307c_bis/stats4_thick_q4_r18h_i06.txt.gz | Bin 0 -> 574 bytes
.../mp00307c_bis/stats4_thick_q4_r18h_i18.txt.gz | Bin 0 -> 596 bytes
.../mp00307c_bis/stats4_thick_q4_r18h_i26.txt.gz | Bin 0 -> 591 bytes
.../mp00307c_bis/stats4_thick_q4_r26f_i06.txt.gz | Bin 0 -> 248 bytes
.../mp00307c_bis/stats4_thick_q4_r26f_i18.txt.gz | Bin 0 -> 248 bytes
.../mp00307c_bis/stats4_thick_q4_r26f_i26.txt.gz | Bin 0 -> 246 bytes
.../mp00307c_bis/stats4_thick_q4_r26h_i06.txt.gz | Bin 0 -> 310 bytes
.../mp00307c_bis/stats4_thick_q4_r26h_i18.txt.gz | Bin 0 -> 316 bytes
.../mp00307c_bis/stats4_thick_q4_r26h_i26.txt.gz | Bin 0 -> 309 bytes
.../mp00307c_bis/stats4_thick_q5_r06f_i06.txt.gz | Bin 0 -> 710 bytes
.../mp00307c_bis/stats4_thick_q5_r06f_i18.txt.gz | Bin 0 -> 709 bytes
.../mp00307c_bis/stats4_thick_q5_r06f_i26.txt.gz | Bin 0 -> 716 bytes
.../mp00307c_bis/stats4_thick_q5_r06h_i06.txt.gz | Bin 0 -> 4279 bytes
.../mp00307c_bis/stats4_thick_q5_r06h_i18.txt.gz | Bin 0 -> 4449 bytes
.../mp00307c_bis/stats4_thick_q5_r06h_i26.txt.gz | Bin 0 -> 4477 bytes
.../mp00307c_bis/stats4_thick_q5_r18f_i06.txt.gz | Bin 0 -> 389 bytes
.../mp00307c_bis/stats4_thick_q5_r18f_i18.txt.gz | Bin 0 -> 384 bytes
.../mp00307c_bis/stats4_thick_q5_r18f_i26.txt.gz | Bin 0 -> 387 bytes
.../mp00307c_bis/stats4_thick_q5_r18h_i06.txt.gz | Bin 0 -> 1498 bytes
.../mp00307c_bis/stats4_thick_q5_r18h_i18.txt.gz | Bin 0 -> 1563 bytes
.../mp00307c_bis/stats4_thick_q5_r18h_i26.txt.gz | Bin 0 -> 1597 bytes
.../mp00307c_bis/stats4_thick_q5_r26f_i06.txt.gz | Bin 0 -> 365 bytes
.../mp00307c_bis/stats4_thick_q5_r26f_i18.txt.gz | Bin 0 -> 362 bytes
.../mp00307c_bis/stats4_thick_q5_r26f_i26.txt.gz | Bin 0 -> 362 bytes
.../mp00307c_bis/stats4_thick_q5_r26h_i06.txt.gz | Bin 0 -> 658 bytes
.../mp00307c_bis/stats4_thick_q5_r26h_i18.txt.gz | Bin 0 -> 680 bytes
.../mp00307c_bis/stats4_thick_q5_r26h_i26.txt.gz | Bin 0 -> 675 bytes
.../mp00307c_bis/stats4_thin_q4_r06f_i06.txt.gz | Bin 0 -> 499 bytes
.../mp00307c_bis/stats4_thin_q4_r06f_i18.txt.gz | Bin 0 -> 490 bytes
.../mp00307c_bis/stats4_thin_q4_r06f_i26.txt.gz | Bin 0 -> 490 bytes
.../mp00307c_bis/stats4_thin_q4_r06h_i06.txt.gz | Bin 0 -> 831 bytes
.../mp00307c_bis/stats4_thin_q4_r06h_i18.txt.gz | Bin 0 -> 828 bytes
.../mp00307c_bis/stats4_thin_q4_r06h_i26.txt.gz | Bin 0 -> 841 bytes
.../mp00307c_bis/stats4_thin_q4_r18f_i06.txt.gz | Bin 0 -> 247 bytes
.../mp00307c_bis/stats4_thin_q4_r18f_i18.txt.gz | Bin 0 -> 246 bytes
.../mp00307c_bis/stats4_thin_q4_r18f_i26.txt.gz | Bin 0 -> 245 bytes
.../mp00307c_bis/stats4_thin_q4_r18h_i06.txt.gz | Bin 0 -> 595 bytes
.../mp00307c_bis/stats4_thin_q4_r18h_i18.txt.gz | Bin 0 -> 605 bytes
.../mp00307c_bis/stats4_thin_q4_r18h_i26.txt.gz | Bin 0 -> 600 bytes
.../mp00307c_bis/stats4_thin_q4_r26f_i06.txt.gz | Bin 0 -> 247 bytes
.../mp00307c_bis/stats4_thin_q4_r26f_i18.txt.gz | Bin 0 -> 246 bytes
.../mp00307c_bis/stats4_thin_q4_r26f_i26.txt.gz | Bin 0 -> 245 bytes
.../mp00307c_bis/stats4_thin_q4_r26h_i06.txt.gz | Bin 0 -> 313 bytes
.../mp00307c_bis/stats4_thin_q4_r26h_i18.txt.gz | Bin 0 -> 308 bytes
.../mp00307c_bis/stats4_thin_q4_r26h_i26.txt.gz | Bin 0 -> 312 bytes
.../mp00307c_bis/stats4_thin_q5_r06f_i06.txt.gz | Bin 0 -> 841 bytes
.../mp00307c_bis/stats4_thin_q5_r06f_i18.txt.gz | Bin 0 -> 855 bytes
.../mp00307c_bis/stats4_thin_q5_r06f_i26.txt.gz | Bin 0 -> 845 bytes
.../mp00307c_bis/stats4_thin_q5_r06h_i06.txt.gz | Bin 0 -> 4067 bytes
.../mp00307c_bis/stats4_thin_q5_r06h_i18.txt.gz | Bin 0 -> 4198 bytes
.../mp00307c_bis/stats4_thin_q5_r06h_i26.txt.gz | Bin 0 -> 4235 bytes
.../mp00307c_bis/stats4_thin_q5_r18f_i06.txt.gz | Bin 0 -> 365 bytes
.../mp00307c_bis/stats4_thin_q5_r18f_i18.txt.gz | Bin 0 -> 362 bytes
.../mp00307c_bis/stats4_thin_q5_r18f_i26.txt.gz | Bin 0 -> 366 bytes
.../mp00307c_bis/stats4_thin_q5_r18h_i06.txt.gz | Bin 0 -> 1416 bytes
.../mp00307c_bis/stats4_thin_q5_r18h_i18.txt.gz | Bin 0 -> 1462 bytes
.../mp00307c_bis/stats4_thin_q5_r18h_i26.txt.gz | Bin 0 -> 1470 bytes
.../mp00307c_bis/stats4_thin_q5_r26f_i06.txt.gz | Bin 0 -> 342 bytes
.../mp00307c_bis/stats4_thin_q5_r26f_i18.txt.gz | Bin 0 -> 337 bytes
.../mp00307c_bis/stats4_thin_q5_r26f_i26.txt.gz | Bin 0 -> 342 bytes
.../mp00307c_bis/stats4_thin_q5_r26h_i06.txt.gz | Bin 0 -> 663 bytes
.../mp00307c_bis/stats4_thin_q5_r26h_i18.txt.gz | Bin 0 -> 667 bytes
.../mp00307c_bis/stats4_thin_q5_r26h_i26.txt.gz | Bin 0 -> 676 bytes
.../doc/labeling/mp00307c_bis/synthese.txt.gz | Bin 0 -> 4298 bytes
.../doc/labeling}/mp00411c/colormap_all_q4.txt.gz | Bin 187 -> 187 bytes
.../doc/labeling}/mp00411c/colormap_all_q5.txt.gz | Bin 420 -> 420 bytes
.../labeling}/mp00411c/colormap_thick_q4.txt.gz | Bin 159 -> 159 bytes
.../labeling}/mp00411c/colormap_thick_q5.txt.gz | Bin 352 -> 352 bytes
.../doc/labeling}/mp00411c/colormap_thin_q4.txt.gz | Bin 173 -> 173 bytes
.../doc/labeling}/mp00411c/colormap_thin_q5.txt.gz | Bin 366 -> 366 bytes
.../doc/labeling}/mp00411c/histo_all_q4.dump.gz | Bin 1233 -> 1233 bytes
.../doc/labeling}/mp00411c/histo_all_q5.dump.gz | Bin 4779 -> 4779 bytes
.../doc/labeling}/mp00411c/histo_thick_q4.dump.gz | Bin 781 -> 781 bytes
.../doc/labeling}/mp00411c/histo_thick_q5.dump.gz | Bin 2532 -> 2532 bytes
.../doc/labeling}/mp00411c/histo_thin_q4.dump.gz | Bin 901 -> 901 bytes
.../doc/labeling}/mp00411c/histo_thin_q5.dump.gz | Bin 2976 -> 2976 bytes
.../green/doc/labeling}/mp00411c/iz_all_q4.dump.gz | Bin 659040 -> 659040 bytes
.../green/doc/labeling}/mp00411c/iz_all_q5.dump.gz | Bin 1505619 -> 1505619 bytes
.../doc/labeling}/mp00411c/iz_thick_q4.dump.gz | Bin 482831 -> 482831 bytes
.../doc/labeling}/mp00411c/iz_thick_q5.dump.gz | Bin 1414258 -> 1414258 bytes
.../doc/labeling}/mp00411c/iz_thin_q4.dump.gz | Bin 647722 -> 647722 bytes
.../doc/labeling}/mp00411c/iz_thin_q5.dump.gz | Bin 1458415 -> 1458415 bytes
.../doc/labeling}/mp00411c/labeled_all_q4.dump.gz | Bin 149 -> 149 bytes
.../doc/labeling}/mp00411c/labeled_all_q5.dump.gz | Bin 343 -> 343 bytes
.../labeling}/mp00411c/labeled_thick_q4.dump.gz | Bin 149 -> 149 bytes
.../labeling}/mp00411c/labeled_thick_q5.dump.gz | Bin 309 -> 309 bytes
.../doc/labeling}/mp00411c/labeled_thin_q4.dump.gz | Bin 149 -> 149 bytes
.../doc/labeling}/mp00411c/labeled_thin_q5.dump.gz | Bin 308 -> 308 bytes
.../doc/labeling}/mp00411c/mean3_all_q4.ppm.gz | Bin 985276 -> 985276 bytes
.../doc/labeling}/mp00411c/mean3_all_q5.ppm.gz | Bin 1961577 -> 1961577 bytes
.../doc/labeling}/mp00411c/mean3_thick_q4.ppm.gz | Bin 865034 -> 865034 bytes
.../doc/labeling}/mp00411c/mean3_thick_q5.ppm.gz | Bin 1831699 -> 1831699 bytes
.../doc/labeling}/mp00411c/mean3_thin_q4.ppm.gz | Bin 958289 -> 958289 bytes
.../doc/labeling}/mp00411c/mean3_thin_q5.ppm.gz | Bin 1872271 -> 1872271 bytes
.../doc/labeling}/mp00411c/mean4_all_q4.ppm.gz | Bin 772605 -> 772605 bytes
.../doc/labeling}/mp00411c/mean4_all_q5.ppm.gz | Bin 1852455 -> 1852455 bytes
.../doc/labeling}/mp00411c/mean4_thick_q4.ppm.gz | Bin 559850 -> 559850 bytes
.../doc/labeling}/mp00411c/mean4_thick_q5.ppm.gz | Bin 1727247 -> 1727247 bytes
.../doc/labeling}/mp00411c/mean4_thin_q4.ppm.gz | Bin 760428 -> 760428 bytes
.../doc/labeling}/mp00411c/mean4_thin_q5.ppm.gz | Bin 1781495 -> 1781495 bytes
.../green/doc/labeling}/mp00411c/mp00411c.ppm.gz | Bin 5316204 -> 5316204 bytes
.../green/doc/labeling}/mp00411c/mp00411c.sh.gz | Bin 636 -> 636 bytes
.../doc/labeling}/mp00411c/mp00411c_thick.pbm.gz | Bin 190478 -> 190478 bytes
.../doc/labeling}/mp00411c/mp00411c_thin.pbm.gz | Bin 248730 -> 248730 bytes
.../doc/labeling}/mp00411c/opened_all_q4.dump.gz | Bin 1159 -> 1159 bytes
.../doc/labeling}/mp00411c/opened_all_q5.dump.gz | Bin 4531 -> 4531 bytes
.../doc/labeling}/mp00411c/opened_thick_q4.dump.gz | Bin 747 -> 747 bytes
.../doc/labeling}/mp00411c/opened_thick_q5.dump.gz | Bin 2351 -> 2351 bytes
.../doc/labeling}/mp00411c/opened_thin_q4.dump.gz | Bin 848 -> 848 bytes
.../doc/labeling}/mp00411c/opened_thin_q5.dump.gz | Bin 2772 -> 2772 bytes
.../doc/labeling}/mp00411c/proj1_all_q4.pgm.gz | Bin 343 -> 343 bytes
.../doc/labeling}/mp00411c/proj1_all_q5.pgm.gz | Bin 779 -> 779 bytes
.../doc/labeling}/mp00411c/proj1_thick_q4.pgm.gz | Bin 312 -> 312 bytes
.../doc/labeling}/mp00411c/proj1_thick_q5.pgm.gz | Bin 612 -> 612 bytes
.../doc/labeling}/mp00411c/proj1_thin_q4.pgm.gz | Bin 339 -> 339 bytes
.../doc/labeling}/mp00411c/proj1_thin_q5.pgm.gz | Bin 718 -> 718 bytes
.../doc/labeling}/mp00411c/proj2_all_q4.pgm.gz | Bin 338 -> 338 bytes
.../doc/labeling}/mp00411c/proj2_all_q5.pgm.gz | Bin 750 -> 750 bytes
.../doc/labeling}/mp00411c/proj2_thick_q4.pgm.gz | Bin 315 -> 315 bytes
.../doc/labeling}/mp00411c/proj2_thick_q5.pgm.gz | Bin 606 -> 606 bytes
.../doc/labeling}/mp00411c/proj2_thin_q4.pgm.gz | Bin 331 -> 331 bytes
.../doc/labeling}/mp00411c/proj2_thin_q5.pgm.gz | Bin 693 -> 693 bytes
.../doc/labeling}/mp00411c/proj3_all_q4.ppm.gz | Bin 230 -> 230 bytes
.../doc/labeling}/mp00411c/proj3_all_q5.ppm.gz | Bin 401 -> 401 bytes
.../doc/labeling}/mp00411c/proj3_thick_q4.ppm.gz | Bin 224 -> 224 bytes
.../doc/labeling}/mp00411c/proj3_thick_q5.ppm.gz | Bin 343 -> 343 bytes
.../doc/labeling}/mp00411c/proj3_thin_q4.ppm.gz | Bin 229 -> 229 bytes
.../doc/labeling}/mp00411c/proj3_thin_q5.ppm.gz | Bin 359 -> 359 bytes
.../doc/labeling}/mp00411c/proj4_all_q4.ppm.gz | Bin 252 -> 252 bytes
.../doc/labeling}/mp00411c/proj4_all_q5.ppm.gz | Bin 447 -> 447 bytes
.../doc/labeling}/mp00411c/proj4_thick_q4.ppm.gz | Bin 221 -> 221 bytes
.../doc/labeling}/mp00411c/proj4_thick_q5.ppm.gz | Bin 369 -> 369 bytes
.../doc/labeling}/mp00411c/proj4_thin_q4.ppm.gz | Bin 234 -> 234 bytes
.../doc/labeling}/mp00411c/proj4_thin_q5.ppm.gz | Bin 415 -> 415 bytes
.../green/doc/labeling}/mp00411c/quant_q4.ppm.gz | Bin 2590062 -> 2590062 bytes
.../green/doc/labeling}/mp00411c/quant_q5.ppm.gz | Bin 3775184 -> 3775184 bytes
.../doc/labeling}/mp00411c/stats3_all_q4.txt.gz | Bin 292 -> 292 bytes
.../doc/labeling}/mp00411c/stats3_all_q5.txt.gz | Bin 701 -> 701 bytes
.../doc/labeling}/mp00411c/stats3_thick_q4.txt.gz | Bin 244 -> 244 bytes
.../doc/labeling}/mp00411c/stats3_thick_q5.txt.gz | Bin 584 -> 584 bytes
.../doc/labeling}/mp00411c/stats3_thin_q4.txt.gz | Bin 262 -> 262 bytes
.../doc/labeling}/mp00411c/stats3_thin_q5.txt.gz | Bin 606 -> 606 bytes
.../doc/labeling}/mp00411c/stats4_all_q4.txt.gz | Bin 284 -> 284 bytes
.../doc/labeling}/mp00411c/stats4_all_q5.txt.gz | Bin 704 -> 704 bytes
.../doc/labeling}/mp00411c/stats4_thick_q4.txt.gz | Bin 234 -> 234 bytes
.../doc/labeling}/mp00411c/stats4_thick_q5.txt.gz | Bin 580 -> 580 bytes
.../doc/labeling}/mp00411c/stats4_thin_q4.txt.gz | Bin 255 -> 255 bytes
.../doc/labeling}/mp00411c/stats4_thin_q5.txt.gz | Bin 591 -> 591 bytes
.../green/doc/labeling}/mp00411c/synthese.txt.gz | Bin 4062 -> 4062 bytes
.../green/doc/labeling/ta00031c/ta00031c.ppm.gz | Bin 0 -> 4517352 bytes
.../doc/labeling/ta00031c/ta00031c_thick.pbm.gz | Bin 0 -> 127662 bytes
.../doc/labeling/ta00031c/ta00031c_thin.pbm.gz | Bin 0 -> 161402 bytes
.../green/doc/labeling/ta00083c/ta00083c.ppm.gz | Bin 0 -> 5542240 bytes
.../doc/labeling/ta00083c/ta00083c_thick.pbm.gz | Bin 0 -> 168946 bytes
.../doc/labeling/ta00083c/ta00083c_thin.pbm.gz | Bin 0 -> 225983 bytes
.../sandbox/green/doc/quick_tour/quick_tour.tex | 0
.../green/exp/annotating/achromastism/Makefile.am | 153 ++
.../exp/annotating/achromastism/achromastism.cc | 179 +++
.../exp/annotating/achromastism/text-color.txt | 0
.../green/exp/annotating/achromastism/text-img.txt | 0
.../exp/annotating/achromastism/text-only.txt | 0
.../sandbox/green/exp/annotating/bench/Makefile.am | 153 ++
scribo/sandbox/green/exp/annotating/bench/bench.cc | 1450 ++++++++++++++++++++
.../sandbox/green/exp/annotating/error/Makefile.am | 153 ++
scribo/sandbox/green/exp/annotating/error/error.cc | 833 +++++++++++
.../sandbox/green/exp/annotating/histo/Makefile.am | 153 ++
scribo/sandbox/green/exp/annotating/histo/histo.cc | 366 +++++
.../sandbox/green/exp/annotating/hsv/Makefile.am | 153 ++
scribo/sandbox/green/exp/annotating/hsv/hsv.cc | 912 ++++++++++++
.../sandbox/green/exp/annotating/hue/Makefile.am | 153 ++
scribo/sandbox/green/exp/annotating/hue/hue.cc | 402 ++++++
.../green/exp/annotating/hue}/text-color.txt | 0
.../sandbox/green/exp/annotating/hue}/text-img.txt | 0
.../green/exp/annotating/hue}/text-only.txt | 0
.../green/exp/annotating/nb_color/Makefile.am | 153 ++
.../green/exp/annotating/nb_color/nb_color.cc | 171 +++
.../green/exp/annotating/saturation/Makefile.am | 153 ++
.../green/exp/annotating/saturation/saturation.cc | 175 +++
.../exp/annotating/saturation}/text-color.txt | 0
.../green/exp/annotating/saturation}/text-img.txt | 0
.../green/exp/annotating/saturation}/text-only.txt | 0
.../green/exp/annotating/stddev_color/Makefile.am | 153 ++
.../exp/annotating/stddev_color/stddev_color.cc | 216 +++
.../exp/annotating/stddev_color_16/Makefile.am | 153 ++
.../annotating/stddev_color_16/stddev_color_16.cc | 277 ++++
.../sandbox/green/exp/annotating/value/Makefile.am | 153 ++
.../green/exp/annotating/value}/text-color.txt | 0
.../green/exp/annotating/value}/text-img.txt | 0
.../green/exp/annotating/value}/text-only.txt | 0
scribo/sandbox/green/exp/annotating/value/value.cc | 468 +++++++
.../sandbox/green/exp/regional_maxima/Makefile.am | 153 ++
.../green/exp/regional_maxima/regional_maxima.cc | 196 +++
.../green/exp}/regional_maxima/thresholds.txt | 0
scribo/sandbox/green/mln/clustering/kmean2d.hh | 4 +-
scribo/sandbox/green/mln/display/display_histo.hh | 149 ++-
scribo/sandbox/green/mln/display/project_histo.hh | 178 +++-
scribo/sandbox/green/mln/fun/p2b/achromatic.hh | 20 +-
.../sandbox/green/mln/fun/v2v/hue_concentration.hh | 10 +
.../green/mln/fun/v2v/rgb_to_achromatism_map.hh | 5 +
scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh | 15 +-
.../sandbox/green/tools/labeling/histo/Makefile.am | 153 ++
scribo/sandbox/green/tools/labeling/histo/histo.cc | 204 +++
scribo/sandbox/green/tools/labeling/iz/Makefile.am | 153 ++
scribo/sandbox/green/tools/labeling/iz/iz.cc | 495 +++++++
.../green/tools/labeling/opening/Makefile.am | 153 ++
.../green/tools/labeling/opening/opening.cc | 174 +++
.../green/tools/labeling/regmax/Makefile.am | 153 ++
.../sandbox/green/tools/labeling/regmax/regmax.cc | 428 ++++++
.../histo1d => display/display_histo}/Makefile.am | 0
.../use/display/display_histo/display_histo.cc | 86 ++
1032 files changed, 14401 insertions(+), 68 deletions(-)
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/bic}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/bic/bic.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/hsv}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/hsv/hsv.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/lep}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/lep/lep.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/nb_color}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/nb_color/nb_color.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/project}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/project/project.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/rgb_64}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/rgb_64/rgb_64.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/rgb_64_9}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/rgb_64_9/rgb_64_9.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/stddev_color}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/stddev_color/stddev_color.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/stddev_color_16}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/stddev_color_16/stddev_color_16.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => labeling/regional_maxima}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/labeling/regional_maxima/regional_maxima.cc
copy {milena => scribo}/sandbox/green/demo/labeling/regional_maxima/thresholds.txt (100%)
copy scribo/sandbox/green/demo/{clustering/kmean1d => labeling/watershed}/Makefile.am (100%)
copy {milena/sandbox/green/tests/accu/stat/histo1d => scribo/sandbox/green/demo/labeling/watershed}/gaussian.sh (100%)
create mode 100644 scribo/sandbox/green/demo/labeling/watershed/watershed.cc
copy {milena => scribo}/sandbox/green/doc/annotating/class.txt (100%)
copy {milena => scribo}/sandbox/green/doc/annotating/syntheseMillet2008.txt (100%)
copy {milena => scribo}/sandbox/green/doc/annotating/testMillet2008 (100%)
copy {milena => scribo}/sandbox/green/doc/examples/accu_color/accu_color.cc (100%)
copy {milena => scribo}/sandbox/green/doc/examples/frac/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/frac/frac.cc (100%)
copy {milena => scribo}/sandbox/green/doc/examples/frac/frac.hh (100%)
copy {milena => scribo}/sandbox/green/doc/examples/frac/gcd.hh (100%)
copy {milena => scribo}/sandbox/green/doc/examples/frac/sign_prod.hh (100%)
copy {milena => scribo}/sandbox/green/doc/examples/hello_milena/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/hello_milena/hello_milena.cc (100%)
copy {milena/sandbox/green/doc/examples/hello_milena => scribo/sandbox/green/doc/examples/hello_world}/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/hello_world/hello_world.cc (100%)
copy {milena => scribo}/sandbox/green/doc/examples/hello_world/print.cc (100%)
copy {milena => scribo}/sandbox/green/doc/examples/io/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/io/io.cc (100%)
copy {milena/sandbox/green/doc/examples/hello_milena => scribo/sandbox/green/doc/examples/learn_milena}/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/learn_milena/learn_milena.cc (100%)
copy {milena/sandbox/green/doc/examples/hello_milena => scribo/sandbox/green/doc/examples/otsu}/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/otsu/otsu.cc (100%)
copy {milena/sandbox/green/doc/examples/hello_milena => scribo/sandbox/green/doc/examples/stats}/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/stats/stats.cc (100%)
copy {milena => scribo}/sandbox/green/doc/formulae/formulae.tex (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h0_input.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h2_mean.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h2_merge.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h3_mean.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h3_merge.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h4_mean.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h4_merge.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h5_mean.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h5_merge.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/i2_mean.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/i2_merge.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/i3_mean.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/i3_merge.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/i4_mean.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/i4_merge.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/i5_mean.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/i5_merge.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/l2_input.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/l3_input.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/l4_input.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/l5_input.pgm.gz (100%)
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_method/reponse_theo.eml.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_method/s2_histo.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_method/s3_histo.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_method/s4_histo.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_method/s5_histo.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_method/synthese.txt.gz
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h0_input.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_mean_q2.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_mean_q3.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_mean_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_mean_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_mean_q6.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_mean_q7.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_mean_q8.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_merge_q2.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_merge_q3.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_merge_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_merge_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_merge_q6.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_merge_q7.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_merge_q8.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_mean_q2.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_mean_q3.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_mean_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_mean_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_mean_q6.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_mean_q7.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_mean_q8.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_merge_q2.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_merge_q3.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_merge_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_merge_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_merge_q6.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_merge_q7.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_merge_q8.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/l5_input_q2.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/l5_input_q3.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/l5_input_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/l5_input_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/l5_input_q6.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/l5_input_q7.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/l5_input_q8.pgm.gz (100%)
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_quant/s5_histo_q2.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_quant/s5_histo_q3.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_quant/s5_histo_q4.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_quant/s5_histo_q5.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_quant/s5_histo_q6.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_quant/s5_histo_q7.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_quant/s5_histo_q8.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_quant/synthese.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/histo_all.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/histo_thick.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/histo_thin.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/labeled_all.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/labeled_thick.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/labeled_thin.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/mean_all.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/mean_thick.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/mean_thin.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/mp00042c.ppm.gz
create mode 100755 scribo/sandbox/green/doc/labeling/mp00042c/mp00042c.sh.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/mp00042c_thick.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/mp00042c_thin.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/opened_all.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/opened_thick.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/opened_thin.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/pal_all.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/pal_thick.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/pal_thin.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj1.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj2.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj2_all.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj2_thick.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj2_thin.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj3.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj3_all.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj3_thick.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj3_thin.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj_all.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj_thick.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj_thin.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/quant.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00215c/mp00215c.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00215c/mp00215c_thick.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00215c/mp00215c_thin.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00234c/mp00234c.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00234c/mp00234c_thick.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00234c/mp00234c_thin.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00248c/mp00248c.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00248c/mp00248c_thick.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00248c/mp00248c_thin.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/colormap_all.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/colormap_thick.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/colormap_thin.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/histo_all.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/histo_thick.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/histo_thin.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/iz_all.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/iz_thick.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/iz_thin.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/labeled_all.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/labeled_thick.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/labeled_thin.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mean3_all.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mean3_thick.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mean3_thin.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mean4_all.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mean4_thick.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mean4_thin.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mp00307c.ppm.gz
create mode 100755 scribo/sandbox/green/doc/labeling/mp00307c/mp00307c.sh.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mp00307c_thick.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mp00307c_thin.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/opened_all.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/opened_thick.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/opened_thin.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj1_all.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj1_all.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj1_thick.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj1_thick.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj1_thin.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj1_thin.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj2_all.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj2_all.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj2_thick.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj2_thick.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj2_thin.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj2_thin.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj3_all.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj3_thick.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj3_thin.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj4_all.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj4_thick.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj4_thin.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/quant.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/stats3_all.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/stats3_thick.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/stats3_thin.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/stats4_all.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/stats4_thick.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/stats4_thin.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/synthese.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q4_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q4_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q4_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q4_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q4_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q4_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q5_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q5_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q5_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q5_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q5_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q5_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q4_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q4_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q4_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q4_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q4_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q4_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q5_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q5_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q5_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q5_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q5_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q5_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q4_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q4_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q4_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q4_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q4_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q4_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q5_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q5_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q5_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q5_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q5_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q5_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_all_q4.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_all_q5.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_all_q8.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_thick_q4.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_thick_q5.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_thick_q8.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_thin_q4.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_thin_q5.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_thin_q8.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r06f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r06f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r06f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r06h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r06h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r06h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r18f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r18f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r18f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r18h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r18h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r18h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r26f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r26f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r26f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r26h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r26h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r26h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r06f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r06f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r06f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r06h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r06h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r06h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r18f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r18f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r18f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r18h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r18h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r18h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r26f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r26f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r26f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r26h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r26h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r26h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r06f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r06f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r06f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r06h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r06h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r06h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r18f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r18f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r18f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r18h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r18h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r18h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r26f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r26f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r26f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r26h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r26h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r26h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r06f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r06f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r06f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r06h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r06h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r06h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r18f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r18f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r18f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r18h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r18h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r18h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r26f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r26f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r26f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r26h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r26h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r26h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r06f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r06f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r06f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r06h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r06h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r06h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r18f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r18f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r18f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r18h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r18h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r18h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r26f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r26f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r26f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r26h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r26h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r26h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r06f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r06f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r06f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r06h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r06h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r06h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r18f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r18f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r18f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r18h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r18h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r18h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r26f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r26f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r26f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r26h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r26h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r26h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q4_r06f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q4_r06h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q4_r18f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q4_r18h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q4_r26f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q4_r26h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q5_r06f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q5_r06h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q5_r18f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q5_r18h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q5_r26f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q5_r26h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q4_r06f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q4_r06h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q4_r18f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q4_r18h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q4_r26f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q4_r26h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q5_r06f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q5_r06h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q5_r18f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q5_r18h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q5_r26f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q5_r26h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q4_r06f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q4_r06h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q4_r18f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q4_r18h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q4_r26f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q4_r26h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q5_r06f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q5_r06h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q5_r18f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q5_r18h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q5_r26f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q5_r26h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q4_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q4_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q4_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q4_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q4_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q4_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q5_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q5_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q5_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q5_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q5_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q5_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q4_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q4_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q4_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q4_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q4_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q4_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q5_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q5_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q5_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q5_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q5_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q5_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q4_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q4_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q4_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q4_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q4_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q4_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q5_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q5_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q5_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q5_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q5_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q5_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mp00307c.ppm.gz
create mode 100755 scribo/sandbox/green/doc/labeling/mp00307c_bis/mp00307c.sh.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mp00307c_thick.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mp00307c_thin.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_all_q4.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_all_q5.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_all_q8.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_thick_q4.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_thick_q5.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_thick_q8.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_thin_q4.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_thin_q5.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_thin_q8.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_all_q4.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_all_q4.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_all_q5.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_all_q5.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_all_q8.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_all_q8.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thick_q4.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thick_q4.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thick_q5.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thick_q5.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thick_q8.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thick_q8.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thin_q4.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thin_q4.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thin_q5.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thin_q5.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thin_q8.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thin_q8.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_all_q4.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_all_q4.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_all_q5.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_all_q5.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_all_q8.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_all_q8.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thick_q4.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thick_q4.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thick_q5.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thick_q5.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thick_q8.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thick_q8.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thin_q4.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thin_q4.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thin_q5.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thin_q5.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thin_q8.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thin_q8.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q4_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q4_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q4_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q4_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q4_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q4_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q5_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q5_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q5_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q5_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q5_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q5_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q4_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q4_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q4_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q4_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q4_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q4_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q5_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q5_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q5_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q5_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q5_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q5_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q4_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q4_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q4_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q4_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q4_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q4_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q5_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q5_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q5_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q5_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q5_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q5_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/quant_q4.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/quant_q5.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/quant_q8.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q4_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q4_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q4_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q4_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q4_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q4_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q5_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q5_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q5_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q5_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q5_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q5_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q4_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q4_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q4_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q4_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q4_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q4_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q5_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q5_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q5_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q5_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q5_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q5_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q4_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q4_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q4_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q4_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q4_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q4_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q5_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q5_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q5_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q5_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q5_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q5_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r06f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r06f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r06f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r06h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r06h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r06h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r18f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r18f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r18f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r18h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r18h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r18h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r26f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r26f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r26f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r26h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r26h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r26h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r06f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r06f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r06f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r06h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r06h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r06h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r18f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r18f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r18f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r18h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r18h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r18h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r26f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r26f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r26f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r26h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r26h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r26h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r06f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r06f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r06f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r06h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r06h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r06h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r18f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r18f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r18f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r18h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r18h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r18h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r26f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r26f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r26f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r26h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r26h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r26h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r06f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r06f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r06f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r06h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r06h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r06h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r18f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r18f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r18f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r18h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r18h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r18h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r26f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r26f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r26f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r26h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r26h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r26h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r06f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r06f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r06f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r06h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r06h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r06h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r18f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r18f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r18f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r18h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r18h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r18h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r26f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r26f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r26f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r26h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r26h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r26h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r06f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r06f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r06f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r06h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r06h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r06h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r18f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r18f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r18f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r18h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r18h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r18h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r26f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r26f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r26f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r26h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r26h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r26h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/synthese.txt.gz
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/colormap_all_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/colormap_all_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/colormap_thick_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/colormap_thick_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/colormap_thin_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/colormap_thin_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/histo_all_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/histo_all_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/histo_thick_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/histo_thick_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/histo_thin_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/histo_thin_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/iz_all_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/iz_all_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/iz_thick_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/iz_thick_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/iz_thin_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/iz_thin_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/labeled_all_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/labeled_all_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/labeled_thick_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/labeled_thick_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/labeled_thin_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/labeled_thin_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean3_all_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean3_all_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean3_thick_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean3_thick_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean3_thin_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean3_thin_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean4_all_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean4_all_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean4_thick_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean4_thick_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean4_thin_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean4_thin_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mp00411c.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mp00411c.sh.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mp00411c_thick.pbm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mp00411c_thin.pbm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/opened_all_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/opened_all_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/opened_thick_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/opened_thick_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/opened_thin_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/opened_thin_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj1_all_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj1_all_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj1_thick_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj1_thick_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj1_thin_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj1_thin_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj2_all_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj2_all_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj2_thick_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj2_thick_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj2_thin_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj2_thin_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj3_all_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj3_all_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj3_thick_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj3_thick_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj3_thin_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj3_thin_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj4_all_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj4_all_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj4_thick_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj4_thick_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj4_thin_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj4_thin_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/quant_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/quant_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats3_all_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats3_all_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats3_thick_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats3_thick_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats3_thin_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats3_thin_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats4_all_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats4_all_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats4_thick_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats4_thick_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats4_thin_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats4_thin_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/synthese.txt.gz (100%)
create mode 100644 scribo/sandbox/green/doc/labeling/ta00031c/ta00031c.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/ta00031c/ta00031c_thick.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/ta00031c/ta00031c_thin.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/ta00083c/ta00083c.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/ta00083c/ta00083c_thick.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/ta00083c/ta00083c_thin.pbm.gz
copy {milena => scribo}/sandbox/green/doc/quick_tour/quick_tour.tex (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/achromastism/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/achromastism/achromastism.cc
copy {milena => scribo}/sandbox/green/exp/annotating/achromastism/text-color.txt (100%)
copy {milena => scribo}/sandbox/green/exp/annotating/achromastism/text-img.txt (100%)
copy {milena => scribo}/sandbox/green/exp/annotating/achromastism/text-only.txt (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/bench/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/bench/bench.cc
create mode 100644 scribo/sandbox/green/exp/annotating/error/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/error/error.cc
create mode 100644 scribo/sandbox/green/exp/annotating/histo/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/histo/histo.cc
create mode 100644 scribo/sandbox/green/exp/annotating/hsv/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/hsv/hsv.cc
create mode 100644 scribo/sandbox/green/exp/annotating/hue/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/hue/hue.cc
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/hue}/text-color.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/hue}/text-img.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/hue}/text-only.txt (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/nb_color/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/nb_color/nb_color.cc
create mode 100644 scribo/sandbox/green/exp/annotating/saturation/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/saturation/saturation.cc
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/saturation}/text-color.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/saturation}/text-img.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/saturation}/text-only.txt (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/stddev_color/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/stddev_color/stddev_color.cc
create mode 100644 scribo/sandbox/green/exp/annotating/stddev_color_16/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/stddev_color_16/stddev_color_16.cc
create mode 100644 scribo/sandbox/green/exp/annotating/value/Makefile.am
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/value}/text-color.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/value}/text-img.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/value}/text-only.txt (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/value/value.cc
create mode 100644 scribo/sandbox/green/exp/regional_maxima/Makefile.am
create mode 100644 scribo/sandbox/green/exp/regional_maxima/regional_maxima.cc
copy {milena/sandbox/green/demo/labeling => scribo/sandbox/green/exp}/regional_maxima/thresholds.txt (100%)
create mode 100644 scribo/sandbox/green/tools/labeling/histo/Makefile.am
create mode 100644 scribo/sandbox/green/tools/labeling/histo/histo.cc
create mode 100644 scribo/sandbox/green/tools/labeling/iz/Makefile.am
create mode 100644 scribo/sandbox/green/tools/labeling/iz/iz.cc
create mode 100644 scribo/sandbox/green/tools/labeling/opening/Makefile.am
create mode 100644 scribo/sandbox/green/tools/labeling/opening/opening.cc
create mode 100644 scribo/sandbox/green/tools/labeling/regmax/Makefile.am
create mode 100644 scribo/sandbox/green/tools/labeling/regmax/regmax.cc
copy scribo/sandbox/green/use/{accu/stat/histo1d => display/display_histo}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/use/display/display_histo/display_histo.cc
hooks/post-receive
--
Olena, a generic and efficient image processing platform
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/green has been updated
via f23ea9c2f6d7fbdbc3a895d5ea6c6ce90da862a9 (commit)
via 7eab14e181eab8694efdce70d4109abaacc70345 (commit)
from 6db793f7e1bba8cde5c975d2a9fb6521265f551b (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 -----------------------------------------------------------------
f23ea9c Import annotating sources from milena green's sandbox.
7eab14e Import regional maxima sources from milena green's sandbox.
-----------------------------------------------------------------------
Summary of changes:
scribo/sandbox/green/ChangeLog | 1147 ++++++++++++++++
scribo/sandbox/green/README.green | 851 +++++++++++-
.../kmean1d => annotating/bic}/Makefile.am | 0
scribo/sandbox/green/demo/annotating/bic/bic.cc | 122 ++
.../kmean1d => annotating/hsv}/Makefile.am | 0
scribo/sandbox/green/demo/annotating/hsv/hsv.cc | 721 ++++++++++
.../kmean1d => annotating/lep}/Makefile.am | 0
scribo/sandbox/green/demo/annotating/lep/lep.cc | 127 ++
.../kmean1d => annotating/nb_color}/Makefile.am | 0
.../green/demo/annotating/nb_color/nb_color.cc | 143 ++
.../kmean1d => annotating/project}/Makefile.am | 0
.../green/demo/annotating/project/project.cc | 275 ++++
.../kmean1d => annotating/rgb_64}/Makefile.am | 0
.../sandbox/green/demo/annotating/rgb_64/rgb_64.cc | 80 ++
.../kmean1d => annotating/rgb_64_9}/Makefile.am | 0
.../green/demo/annotating/rgb_64_9/rgb_64_9.cc | 132 ++
.../stddev_color}/Makefile.am | 0
.../demo/annotating/stddev_color/stddev_color.cc | 191 +++
.../stddev_color_16}/Makefile.am | 0
.../annotating/stddev_color_16/stddev_color_16.cc | 261 ++++
.../regional_maxima}/Makefile.am | 0
.../labeling/regional_maxima/regional_maxima.cc | 198 +++
.../demo/labeling/regional_maxima/thresholds.txt | 0
.../kmean1d => labeling/watershed}/Makefile.am | 0
.../green/demo/labeling/watershed}/gaussian.sh | 0
.../green/demo/labeling/watershed/watershed.cc | 360 +++++
.../sandbox/green/doc/annotating/class.txt | 0
.../green/doc/annotating/syntheseMillet2008.txt | 0
.../sandbox/green/doc/annotating/testMillet2008 | 0
.../green/doc/examples/accu_color/accu_color.cc | 0
.../sandbox/green/doc/examples/frac/Makefile.am | 0
.../sandbox/green/doc/examples/frac/frac.cc | 0
.../sandbox/green/doc/examples/frac/frac.hh | 0
.../sandbox/green/doc/examples/frac/gcd.hh | 0
.../sandbox/green/doc/examples/frac/sign_prod.hh | 0
.../green/doc/examples/hello_milena/Makefile.am | 0
.../doc/examples/hello_milena/hello_milena.cc | 0
.../green/doc/examples/hello_world}/Makefile.am | 0
.../green/doc/examples/hello_world/hello_world.cc | 0
.../green/doc/examples/hello_world/print.cc | 0
.../sandbox/green/doc/examples/io/Makefile.am | 0
.../sandbox/green/doc/examples/io/io.cc | 0
.../green/doc/examples/learn_milena}/Makefile.am | 0
.../doc/examples/learn_milena/learn_milena.cc | 0
.../sandbox/green/doc/examples/otsu}/Makefile.am | 0
.../sandbox/green/doc/examples/otsu/otsu.cc | 0
.../sandbox/green/doc/examples/stats}/Makefile.am | 0
.../sandbox/green/doc/examples/stats/stats.cc | 0
.../sandbox/green/doc/formulae/formulae.tex | 0
.../green/doc/labeling}/cmp_method/h0_input.pgm.gz | Bin 18078 -> 18078 bytes
.../green/doc/labeling}/cmp_method/h2_mean.pgm.gz | Bin 374 -> 374 bytes
.../green/doc/labeling}/cmp_method/h2_merge.pgm.gz | Bin 4491 -> 4491 bytes
.../green/doc/labeling}/cmp_method/h3_mean.pgm.gz | Bin 391 -> 391 bytes
.../green/doc/labeling}/cmp_method/h3_merge.pgm.gz | Bin 10188 -> 10188 bytes
.../green/doc/labeling}/cmp_method/h4_mean.pgm.gz | Bin 367 -> 367 bytes
.../green/doc/labeling}/cmp_method/h4_merge.pgm.gz | Bin 18078 -> 18078 bytes
.../green/doc/labeling}/cmp_method/h5_mean.pgm.gz | Bin 372 -> 372 bytes
.../green/doc/labeling}/cmp_method/h5_merge.pgm.gz | Bin 12777 -> 12777 bytes
.../green/doc/labeling}/cmp_method/i2_mean.ppm.gz | Bin 566650 -> 566650 bytes
.../green/doc/labeling}/cmp_method/i2_merge.ppm.gz | Bin 1586150 -> 1586150 bytes
.../green/doc/labeling}/cmp_method/i3_mean.ppm.gz | Bin 573407 -> 573407 bytes
.../green/doc/labeling}/cmp_method/i3_merge.ppm.gz | Bin 3050979 -> 3050979 bytes
.../green/doc/labeling}/cmp_method/i4_mean.ppm.gz | Bin 663621 -> 663621 bytes
.../green/doc/labeling}/cmp_method/i4_merge.ppm.gz | Bin 3387044 -> 3387044 bytes
.../green/doc/labeling}/cmp_method/i5_mean.ppm.gz | Bin 653140 -> 653140 bytes
.../green/doc/labeling}/cmp_method/i5_merge.ppm.gz | Bin 3217839 -> 3217839 bytes
.../green/doc/labeling}/cmp_method/l2_input.pgm.gz | Bin 423612 -> 423612 bytes
.../green/doc/labeling}/cmp_method/l3_input.pgm.gz | Bin 420801 -> 420801 bytes
.../green/doc/labeling}/cmp_method/l4_input.pgm.gz | Bin 486206 -> 486206 bytes
.../green/doc/labeling}/cmp_method/l5_input.pgm.gz | Bin 479055 -> 479055 bytes
.../doc/labeling/cmp_method/reponse_theo.eml.gz | Bin 0 -> 1617 bytes
.../green/doc/labeling/cmp_method/s2_histo.txt.gz | Bin 0 -> 789 bytes
.../green/doc/labeling/cmp_method/s3_histo.txt.gz | Bin 0 -> 832 bytes
.../green/doc/labeling/cmp_method/s4_histo.txt.gz | Bin 0 -> 803 bytes
.../green/doc/labeling/cmp_method/s5_histo.txt.gz | Bin 0 -> 811 bytes
.../green/doc/labeling/cmp_method/synthese.txt.gz | Bin 0 -> 4501 bytes
.../green/doc/labeling}/cmp_quant/h0_input.pgm.gz | Bin 18078 -> 18078 bytes
.../doc/labeling}/cmp_quant/h5_mean_q2.pgm.gz | Bin 247 -> 247 bytes
.../doc/labeling}/cmp_quant/h5_mean_q3.pgm.gz | Bin 280 -> 280 bytes
.../doc/labeling}/cmp_quant/h5_mean_q4.pgm.gz | Bin 319 -> 319 bytes
.../doc/labeling}/cmp_quant/h5_mean_q5.pgm.gz | Bin 375 -> 375 bytes
.../doc/labeling}/cmp_quant/h5_mean_q6.pgm.gz | Bin 392 -> 392 bytes
.../doc/labeling}/cmp_quant/h5_mean_q7.pgm.gz | Bin 383 -> 383 bytes
.../doc/labeling}/cmp_quant/h5_mean_q8.pgm.gz | Bin 470 -> 470 bytes
.../doc/labeling}/cmp_quant/h5_merge_q2.pgm.gz | Bin 18081 -> 18081 bytes
.../doc/labeling}/cmp_quant/h5_merge_q3.pgm.gz | Bin 18081 -> 18081 bytes
.../doc/labeling}/cmp_quant/h5_merge_q4.pgm.gz | Bin 16358 -> 16358 bytes
.../doc/labeling}/cmp_quant/h5_merge_q5.pgm.gz | Bin 12780 -> 12780 bytes
.../doc/labeling}/cmp_quant/h5_merge_q6.pgm.gz | Bin 9694 -> 9694 bytes
.../doc/labeling}/cmp_quant/h5_merge_q7.pgm.gz | Bin 6211 -> 6211 bytes
.../doc/labeling}/cmp_quant/h5_merge_q8.pgm.gz | Bin 1564 -> 1564 bytes
.../doc/labeling}/cmp_quant/i5_mean_q2.ppm.gz | Bin 112779 -> 112779 bytes
.../doc/labeling}/cmp_quant/i5_mean_q3.ppm.gz | Bin 191264 -> 191264 bytes
.../doc/labeling}/cmp_quant/i5_mean_q4.ppm.gz | Bin 298062 -> 298062 bytes
.../doc/labeling}/cmp_quant/i5_mean_q5.ppm.gz | Bin 653143 -> 653143 bytes
.../doc/labeling}/cmp_quant/i5_mean_q6.ppm.gz | Bin 807617 -> 807617 bytes
.../doc/labeling}/cmp_quant/i5_mean_q7.ppm.gz | Bin 813222 -> 813222 bytes
.../doc/labeling}/cmp_quant/i5_mean_q8.ppm.gz | Bin 861711 -> 861711 bytes
.../doc/labeling}/cmp_quant/i5_merge_q2.ppm.gz | Bin 3387047 -> 3387047 bytes
.../doc/labeling}/cmp_quant/i5_merge_q3.ppm.gz | Bin 3387047 -> 3387047 bytes
.../doc/labeling}/cmp_quant/i5_merge_q4.ppm.gz | Bin 3355365 -> 3355365 bytes
.../doc/labeling}/cmp_quant/i5_merge_q5.ppm.gz | Bin 3217842 -> 3217842 bytes
.../doc/labeling}/cmp_quant/i5_merge_q6.ppm.gz | Bin 3033730 -> 3033730 bytes
.../doc/labeling}/cmp_quant/i5_merge_q7.ppm.gz | Bin 2295150 -> 2295150 bytes
.../doc/labeling}/cmp_quant/i5_merge_q8.ppm.gz | Bin 1319396 -> 1319396 bytes
.../doc/labeling}/cmp_quant/l5_input_q2.pgm.gz | Bin 83951 -> 83951 bytes
.../doc/labeling}/cmp_quant/l5_input_q3.pgm.gz | Bin 143817 -> 143817 bytes
.../doc/labeling}/cmp_quant/l5_input_q4.pgm.gz | Bin 220346 -> 220346 bytes
.../doc/labeling}/cmp_quant/l5_input_q5.pgm.gz | Bin 479058 -> 479058 bytes
.../doc/labeling}/cmp_quant/l5_input_q6.pgm.gz | Bin 593359 -> 593359 bytes
.../doc/labeling}/cmp_quant/l5_input_q7.pgm.gz | Bin 600121 -> 600121 bytes
.../doc/labeling}/cmp_quant/l5_input_q8.pgm.gz | Bin 630760 -> 630760 bytes
.../doc/labeling/cmp_quant/s5_histo_q2.txt.gz | Bin 0 -> 152 bytes
.../doc/labeling/cmp_quant/s5_histo_q3.txt.gz | Bin 0 -> 274 bytes
.../doc/labeling/cmp_quant/s5_histo_q4.txt.gz | Bin 0 -> 470 bytes
.../doc/labeling/cmp_quant/s5_histo_q5.txt.gz | Bin 0 -> 815 bytes
.../doc/labeling/cmp_quant/s5_histo_q6.txt.gz | Bin 0 -> 842 bytes
.../doc/labeling/cmp_quant/s5_histo_q7.txt.gz | Bin 0 -> 811 bytes
.../doc/labeling/cmp_quant/s5_histo_q8.txt.gz | Bin 0 -> 1632 bytes
.../green/doc/labeling/cmp_quant/synthese.txt.gz | Bin 0 -> 4196 bytes
.../green/doc/labeling/mp00042c/histo_all.dump.gz | Bin 0 -> 3824 bytes
.../doc/labeling/mp00042c/histo_thick.dump.gz | Bin 0 -> 3369 bytes
.../green/doc/labeling/mp00042c/histo_thin.dump.gz | Bin 0 -> 3131 bytes
.../doc/labeling/mp00042c/labeled_all.dump.gz | Bin 0 -> 177 bytes
.../doc/labeling/mp00042c/labeled_thick.dump.gz | Bin 0 -> 148 bytes
.../doc/labeling/mp00042c/labeled_thin.dump.gz | Bin 0 -> 146 bytes
.../green/doc/labeling/mp00042c/mean_all.ppm.gz | Bin 0 -> 798766 bytes
.../green/doc/labeling/mp00042c/mean_thick.ppm.gz | Bin 0 -> 556265 bytes
.../green/doc/labeling/mp00042c/mean_thin.ppm.gz | Bin 0 -> 529846 bytes
.../green/doc/labeling/mp00042c/mp00042c.ppm.gz | Bin 0 -> 11277012 bytes
.../green/doc/labeling/mp00042c/mp00042c.sh.gz | Bin 0 -> 262 bytes
.../doc/labeling/mp00042c/mp00042c_thick.pbm.gz | Bin 0 -> 177849 bytes
.../doc/labeling/mp00042c/mp00042c_thin.pbm.gz | Bin 0 -> 263200 bytes
.../green/doc/labeling/mp00042c/opened_all.dump.gz | Bin 0 -> 3708 bytes
.../doc/labeling/mp00042c/opened_thick.dump.gz | Bin 0 -> 3275 bytes
.../doc/labeling/mp00042c/opened_thin.dump.gz | Bin 0 -> 3020 bytes
.../green/doc/labeling/mp00042c/pal_all.txt.gz | Bin 0 -> 247 bytes
.../green/doc/labeling/mp00042c/pal_thick.txt.gz | Bin 0 -> 161 bytes
.../green/doc/labeling/mp00042c/pal_thin.txt.gz | Bin 0 -> 163 bytes
.../green/doc/labeling/mp00042c/proj1.pgm.gz | Bin 0 -> 352 bytes
.../green/doc/labeling/mp00042c/proj2.pgm.gz | Bin 0 -> 249 bytes
.../green/doc/labeling/mp00042c/proj2_all.pgm.gz | Bin 0 -> 378 bytes
.../green/doc/labeling/mp00042c/proj2_thick.pgm.gz | Bin 0 -> 363 bytes
.../green/doc/labeling/mp00042c/proj2_thin.pgm.gz | Bin 0 -> 358 bytes
.../green/doc/labeling/mp00042c/proj3.ppm.gz | Bin 0 -> 497 bytes
.../green/doc/labeling/mp00042c/proj3_all.ppm.gz | Bin 0 -> 253 bytes
.../green/doc/labeling/mp00042c/proj3_thick.ppm.gz | Bin 0 -> 217 bytes
.../green/doc/labeling/mp00042c/proj3_thin.ppm.gz | Bin 0 -> 222 bytes
.../green/doc/labeling/mp00042c/proj_all.pgm.gz | Bin 0 -> 373 bytes
.../green/doc/labeling/mp00042c/proj_thick.pgm.gz | Bin 0 -> 357 bytes
.../green/doc/labeling/mp00042c/proj_thin.pgm.gz | Bin 0 -> 352 bytes
.../green/doc/labeling/mp00042c/quant.ppm.gz | Bin 0 -> 2249866 bytes
.../green/doc/labeling/mp00215c/mp00215c.ppm.gz | Bin 0 -> 7036281 bytes
.../doc/labeling/mp00215c/mp00215c_thick.pbm.gz | Bin 0 -> 242015 bytes
.../doc/labeling/mp00215c/mp00215c_thin.pbm.gz | Bin 0 -> 324559 bytes
.../green/doc/labeling/mp00234c/mp00234c.ppm.gz | Bin 0 -> 6948755 bytes
.../doc/labeling/mp00234c/mp00234c_thick.pbm.gz | Bin 0 -> 269877 bytes
.../doc/labeling/mp00234c/mp00234c_thin.pbm.gz | Bin 0 -> 351051 bytes
.../green/doc/labeling/mp00248c/mp00248c.ppm.gz | Bin 0 -> 6135619 bytes
.../doc/labeling/mp00248c/mp00248c_thick.pbm.gz | Bin 0 -> 201420 bytes
.../doc/labeling/mp00248c/mp00248c_thin.pbm.gz | Bin 0 -> 270025 bytes
.../doc/labeling/mp00307c/colormap_all.txt.gz | Bin 0 -> 317 bytes
.../doc/labeling/mp00307c/colormap_thick.txt.gz | Bin 0 -> 289 bytes
.../doc/labeling/mp00307c/colormap_thin.txt.gz | Bin 0 -> 290 bytes
.../green/doc/labeling/mp00307c/histo_all.dump.gz | Bin 0 -> 1858 bytes
.../doc/labeling/mp00307c/histo_thick.dump.gz | Bin 0 -> 1615 bytes
.../green/doc/labeling/mp00307c/histo_thin.dump.gz | Bin 0 -> 1585 bytes
.../green/doc/labeling/mp00307c/iz_all.dump.gz | Bin 0 -> 1032196 bytes
.../green/doc/labeling/mp00307c/iz_thick.dump.gz | Bin 0 -> 919114 bytes
.../green/doc/labeling/mp00307c/iz_thin.dump.gz | Bin 0 -> 933750 bytes
.../doc/labeling/mp00307c/labeled_all.dump.gz | Bin 0 -> 215 bytes
.../doc/labeling/mp00307c/labeled_thick.dump.gz | Bin 0 -> 206 bytes
.../doc/labeling/mp00307c/labeled_thin.dump.gz | Bin 0 -> 205 bytes
.../green/doc/labeling/mp00307c/mean3_all.ppm.gz | Bin 0 -> 1306369 bytes
.../green/doc/labeling/mp00307c/mean3_thick.ppm.gz | Bin 0 -> 1167838 bytes
.../green/doc/labeling/mp00307c/mean3_thin.ppm.gz | Bin 0 -> 1193530 bytes
.../green/doc/labeling/mp00307c/mean4_all.ppm.gz | Bin 0 -> 1212810 bytes
.../green/doc/labeling/mp00307c/mean4_thick.ppm.gz | Bin 0 -> 1066656 bytes
.../green/doc/labeling/mp00307c/mean4_thin.ppm.gz | Bin 0 -> 1086137 bytes
.../green/doc/labeling/mp00307c/mp00307c.ppm.gz | Bin 0 -> 4951735 bytes
.../green/doc/labeling/mp00307c/mp00307c.sh.gz | Bin 0 -> 439 bytes
.../doc/labeling/mp00307c/mp00307c_thick.pbm.gz | Bin 0 -> 196172 bytes
.../doc/labeling/mp00307c/mp00307c_thin.pbm.gz | Bin 0 -> 244492 bytes
.../green/doc/labeling/mp00307c/opened_all.dump.gz | Bin 0 -> 1783 bytes
.../doc/labeling/mp00307c/opened_thick.dump.gz | Bin 0 -> 1557 bytes
.../doc/labeling/mp00307c/opened_thin.dump.gz | Bin 0 -> 1512 bytes
.../green/doc/labeling/mp00307c/proj1_all.pgm.gz | Bin 0 -> 310 bytes
.../green/doc/labeling/mp00307c/proj1_all.ppm.gz | Bin 0 -> 419 bytes
.../green/doc/labeling/mp00307c/proj1_thick.pgm.gz | Bin 0 -> 306 bytes
.../green/doc/labeling/mp00307c/proj1_thick.ppm.gz | Bin 0 -> 409 bytes
.../green/doc/labeling/mp00307c/proj1_thin.pgm.gz | Bin 0 -> 304 bytes
.../green/doc/labeling/mp00307c/proj1_thin.ppm.gz | Bin 0 -> 408 bytes
.../green/doc/labeling/mp00307c/proj2_all.pgm.gz | Bin 0 -> 313 bytes
.../green/doc/labeling/mp00307c/proj2_all.ppm.gz | Bin 0 -> 422 bytes
.../green/doc/labeling/mp00307c/proj2_thick.pgm.gz | Bin 0 -> 308 bytes
.../green/doc/labeling/mp00307c/proj2_thick.ppm.gz | Bin 0 -> 412 bytes
.../green/doc/labeling/mp00307c/proj2_thin.pgm.gz | Bin 0 -> 306 bytes
.../green/doc/labeling/mp00307c/proj2_thin.ppm.gz | Bin 0 -> 412 bytes
.../green/doc/labeling/mp00307c/proj3_all.ppm.gz | Bin 0 -> 287 bytes
.../green/doc/labeling/mp00307c/proj3_thick.ppm.gz | Bin 0 -> 284 bytes
.../green/doc/labeling/mp00307c/proj3_thin.ppm.gz | Bin 0 -> 284 bytes
.../green/doc/labeling/mp00307c/proj4_all.ppm.gz | Bin 0 -> 323 bytes
.../green/doc/labeling/mp00307c/proj4_thick.ppm.gz | Bin 0 -> 311 bytes
.../green/doc/labeling/mp00307c/proj4_thin.ppm.gz | Bin 0 -> 307 bytes
.../green/doc/labeling/mp00307c/quant.ppm.gz | Bin 0 -> 1890531 bytes
.../green/doc/labeling/mp00307c/stats3_all.txt.gz | Bin 0 -> 527 bytes
.../doc/labeling/mp00307c/stats3_thick.txt.gz | Bin 0 -> 473 bytes
.../green/doc/labeling/mp00307c/stats3_thin.txt.gz | Bin 0 -> 475 bytes
.../green/doc/labeling/mp00307c/stats4_all.txt.gz | Bin 0 -> 521 bytes
.../doc/labeling/mp00307c/stats4_thick.txt.gz | Bin 0 -> 469 bytes
.../green/doc/labeling/mp00307c/stats4_thin.txt.gz | Bin 0 -> 470 bytes
.../green/doc/labeling/mp00307c/synthese.txt.gz | Bin 0 -> 3330 bytes
.../mp00307c_bis/colormap_all_q4_r06f.txt.gz | Bin 0 -> 325 bytes
.../mp00307c_bis/colormap_all_q4_r06h.txt.gz | Bin 0 -> 528 bytes
.../mp00307c_bis/colormap_all_q4_r18f.txt.gz | Bin 0 -> 158 bytes
.../mp00307c_bis/colormap_all_q4_r18h.txt.gz | Bin 0 -> 371 bytes
.../mp00307c_bis/colormap_all_q4_r26f.txt.gz | Bin 0 -> 158 bytes
.../mp00307c_bis/colormap_all_q4_r26h.txt.gz | Bin 0 -> 187 bytes
.../mp00307c_bis/colormap_all_q5_r06f.txt.gz | Bin 0 -> 521 bytes
.../mp00307c_bis/colormap_all_q5_r06h.txt.gz | Bin 0 -> 3230 bytes
.../mp00307c_bis/colormap_all_q5_r18f.txt.gz | Bin 0 -> 217 bytes
.../mp00307c_bis/colormap_all_q5_r18h.txt.gz | Bin 0 -> 948 bytes
.../mp00307c_bis/colormap_all_q5_r26f.txt.gz | Bin 0 -> 217 bytes
.../mp00307c_bis/colormap_all_q5_r26h.txt.gz | Bin 0 -> 382 bytes
.../mp00307c_bis/colormap_thick_q4_r06f.txt.gz | Bin 0 -> 297 bytes
.../mp00307c_bis/colormap_thick_q4_r06h.txt.gz | Bin 0 -> 541 bytes
.../mp00307c_bis/colormap_thick_q4_r18f.txt.gz | Bin 0 -> 161 bytes
.../mp00307c_bis/colormap_thick_q4_r18h.txt.gz | Bin 0 -> 372 bytes
.../mp00307c_bis/colormap_thick_q4_r26f.txt.gz | Bin 0 -> 161 bytes
.../mp00307c_bis/colormap_thick_q4_r26h.txt.gz | Bin 0 -> 204 bytes
.../mp00307c_bis/colormap_thick_q5_r06f.txt.gz | Bin 0 -> 446 bytes
.../mp00307c_bis/colormap_thick_q5_r06h.txt.gz | Bin 0 -> 3015 bytes
.../mp00307c_bis/colormap_thick_q5_r18f.txt.gz | Bin 0 -> 248 bytes
.../mp00307c_bis/colormap_thick_q5_r18h.txt.gz | Bin 0 -> 1014 bytes
.../mp00307c_bis/colormap_thick_q5_r26f.txt.gz | Bin 0 -> 234 bytes
.../mp00307c_bis/colormap_thick_q5_r26h.txt.gz | Bin 0 -> 432 bytes
.../mp00307c_bis/colormap_thin_q4_r06f.txt.gz | Bin 0 -> 298 bytes
.../mp00307c_bis/colormap_thin_q4_r06h.txt.gz | Bin 0 -> 519 bytes
.../mp00307c_bis/colormap_thin_q4_r18f.txt.gz | Bin 0 -> 161 bytes
.../mp00307c_bis/colormap_thin_q4_r18h.txt.gz | Bin 0 -> 374 bytes
.../mp00307c_bis/colormap_thin_q4_r26f.txt.gz | Bin 0 -> 161 bytes
.../mp00307c_bis/colormap_thin_q4_r26h.txt.gz | Bin 0 -> 202 bytes
.../mp00307c_bis/colormap_thin_q5_r06f.txt.gz | Bin 0 -> 523 bytes
.../mp00307c_bis/colormap_thin_q5_r06h.txt.gz | Bin 0 -> 2832 bytes
.../mp00307c_bis/colormap_thin_q5_r18f.txt.gz | Bin 0 -> 233 bytes
.../mp00307c_bis/colormap_thin_q5_r18h.txt.gz | Bin 0 -> 949 bytes
.../mp00307c_bis/colormap_thin_q5_r26f.txt.gz | Bin 0 -> 216 bytes
.../mp00307c_bis/colormap_thin_q5_r26h.txt.gz | Bin 0 -> 434 bytes
.../doc/labeling/mp00307c_bis/histo_all_q4.dump.gz | Bin 0 -> 1861 bytes
.../doc/labeling/mp00307c_bis/histo_all_q5.dump.gz | Bin 0 -> 7682 bytes
.../doc/labeling/mp00307c_bis/histo_all_q8.dump.gz | Bin 0 -> 92423 bytes
.../labeling/mp00307c_bis/histo_thick_q4.dump.gz | Bin 0 -> 1618 bytes
.../labeling/mp00307c_bis/histo_thick_q5.dump.gz | Bin 0 -> 6222 bytes
.../labeling/mp00307c_bis/histo_thick_q8.dump.gz | Bin 0 -> 86275 bytes
.../labeling/mp00307c_bis/histo_thin_q4.dump.gz | Bin 0 -> 1588 bytes
.../labeling/mp00307c_bis/histo_thin_q5.dump.gz | Bin 0 -> 6016 bytes
.../labeling/mp00307c_bis/histo_thin_q8.dump.gz | Bin 0 -> 85572 bytes
.../mp00307c_bis/iz_all_q4_r06f_i06.dump.gz | Bin 0 -> 1024320 bytes
.../mp00307c_bis/iz_all_q4_r06f_i18.dump.gz | Bin 0 -> 987528 bytes
.../mp00307c_bis/iz_all_q4_r06f_i26.dump.gz | Bin 0 -> 1021696 bytes
.../mp00307c_bis/iz_all_q4_r06h_i06.dump.gz | Bin 0 -> 1132389 bytes
.../mp00307c_bis/iz_all_q4_r06h_i18.dump.gz | Bin 0 -> 1163188 bytes
.../mp00307c_bis/iz_all_q4_r06h_i26.dump.gz | Bin 0 -> 1167408 bytes
.../mp00307c_bis/iz_all_q4_r18f_i06.dump.gz | Bin 0 -> 667996 bytes
.../mp00307c_bis/iz_all_q4_r18f_i18.dump.gz | Bin 0 -> 649237 bytes
.../mp00307c_bis/iz_all_q4_r18f_i26.dump.gz | Bin 0 -> 450172 bytes
.../mp00307c_bis/iz_all_q4_r18h_i06.dump.gz | Bin 0 -> 1068732 bytes
.../mp00307c_bis/iz_all_q4_r18h_i18.dump.gz | Bin 0 -> 1039089 bytes
.../mp00307c_bis/iz_all_q4_r18h_i26.dump.gz | Bin 0 -> 1000347 bytes
.../mp00307c_bis/iz_all_q4_r26f_i06.dump.gz | Bin 0 -> 667996 bytes
.../mp00307c_bis/iz_all_q4_r26f_i18.dump.gz | Bin 0 -> 649237 bytes
.../mp00307c_bis/iz_all_q4_r26f_i26.dump.gz | Bin 0 -> 450172 bytes
.../mp00307c_bis/iz_all_q4_r26h_i06.dump.gz | Bin 0 -> 663031 bytes
.../mp00307c_bis/iz_all_q4_r26h_i18.dump.gz | Bin 0 -> 695436 bytes
.../mp00307c_bis/iz_all_q4_r26h_i26.dump.gz | Bin 0 -> 554087 bytes
.../mp00307c_bis/iz_all_q5_r06f_i06.dump.gz | Bin 0 -> 1718006 bytes
.../mp00307c_bis/iz_all_q5_r06f_i18.dump.gz | Bin 0 -> 1618420 bytes
.../mp00307c_bis/iz_all_q5_r06f_i26.dump.gz | Bin 0 -> 1626869 bytes
.../mp00307c_bis/iz_all_q5_r06h_i06.dump.gz | Bin 0 -> 878392 bytes
.../mp00307c_bis/iz_all_q5_r06h_i18.dump.gz | Bin 0 -> 878392 bytes
.../mp00307c_bis/iz_all_q5_r06h_i26.dump.gz | Bin 0 -> 878392 bytes
.../mp00307c_bis/iz_all_q5_r18f_i06.dump.gz | Bin 0 -> 602061 bytes
.../mp00307c_bis/iz_all_q5_r18f_i18.dump.gz | Bin 0 -> 567901 bytes
.../mp00307c_bis/iz_all_q5_r18f_i26.dump.gz | Bin 0 -> 848955 bytes
.../mp00307c_bis/iz_all_q5_r18h_i06.dump.gz | Bin 0 -> 1585856 bytes
.../mp00307c_bis/iz_all_q5_r18h_i18.dump.gz | Bin 0 -> 1580541 bytes
.../mp00307c_bis/iz_all_q5_r18h_i26.dump.gz | Bin 0 -> 1524533 bytes
.../mp00307c_bis/iz_all_q5_r26f_i06.dump.gz | Bin 0 -> 602061 bytes
.../mp00307c_bis/iz_all_q5_r26f_i18.dump.gz | Bin 0 -> 567901 bytes
.../mp00307c_bis/iz_all_q5_r26f_i26.dump.gz | Bin 0 -> 848955 bytes
.../mp00307c_bis/iz_all_q5_r26h_i06.dump.gz | Bin 0 -> 1089436 bytes
.../mp00307c_bis/iz_all_q5_r26h_i18.dump.gz | Bin 0 -> 1152528 bytes
.../mp00307c_bis/iz_all_q5_r26h_i26.dump.gz | Bin 0 -> 734492 bytes
.../mp00307c_bis/iz_thick_q4_r06f_i06.dump.gz | Bin 0 -> 935810 bytes
.../mp00307c_bis/iz_thick_q4_r06f_i18.dump.gz | Bin 0 -> 958111 bytes
.../mp00307c_bis/iz_thick_q4_r06f_i26.dump.gz | Bin 0 -> 969793 bytes
.../mp00307c_bis/iz_thick_q4_r06h_i06.dump.gz | Bin 0 -> 1139886 bytes
.../mp00307c_bis/iz_thick_q4_r06h_i18.dump.gz | Bin 0 -> 1163741 bytes
.../mp00307c_bis/iz_thick_q4_r06h_i26.dump.gz | Bin 0 -> 1136143 bytes
.../mp00307c_bis/iz_thick_q4_r18f_i06.dump.gz | Bin 0 -> 620527 bytes
.../mp00307c_bis/iz_thick_q4_r18f_i18.dump.gz | Bin 0 -> 609204 bytes
.../mp00307c_bis/iz_thick_q4_r18f_i26.dump.gz | Bin 0 -> 407383 bytes
.../mp00307c_bis/iz_thick_q4_r18h_i06.dump.gz | Bin 0 -> 1055151 bytes
.../mp00307c_bis/iz_thick_q4_r18h_i18.dump.gz | Bin 0 -> 1000578 bytes
.../mp00307c_bis/iz_thick_q4_r18h_i26.dump.gz | Bin 0 -> 972987 bytes
.../mp00307c_bis/iz_thick_q4_r26f_i06.dump.gz | Bin 0 -> 620527 bytes
.../mp00307c_bis/iz_thick_q4_r26f_i18.dump.gz | Bin 0 -> 609204 bytes
.../mp00307c_bis/iz_thick_q4_r26f_i26.dump.gz | Bin 0 -> 407383 bytes
.../mp00307c_bis/iz_thick_q4_r26h_i06.dump.gz | Bin 0 -> 601790 bytes
.../mp00307c_bis/iz_thick_q4_r26h_i18.dump.gz | Bin 0 -> 634200 bytes
.../mp00307c_bis/iz_thick_q4_r26h_i26.dump.gz | Bin 0 -> 544735 bytes
.../mp00307c_bis/iz_thick_q5_r06f_i06.dump.gz | Bin 0 -> 1588485 bytes
.../mp00307c_bis/iz_thick_q5_r06f_i18.dump.gz | Bin 0 -> 1496840 bytes
.../mp00307c_bis/iz_thick_q5_r06f_i26.dump.gz | Bin 0 -> 1493765 bytes
.../mp00307c_bis/iz_thick_q5_r06h_i06.dump.gz | Bin 0 -> 1904574 bytes
.../mp00307c_bis/iz_thick_q5_r06h_i18.dump.gz | Bin 0 -> 1904339 bytes
.../mp00307c_bis/iz_thick_q5_r06h_i26.dump.gz | Bin 0 -> 1951532 bytes
.../mp00307c_bis/iz_thick_q5_r18f_i06.dump.gz | Bin 0 -> 664871 bytes
.../mp00307c_bis/iz_thick_q5_r18f_i18.dump.gz | Bin 0 -> 639733 bytes
.../mp00307c_bis/iz_thick_q5_r18f_i26.dump.gz | Bin 0 -> 894758 bytes
.../mp00307c_bis/iz_thick_q5_r18h_i06.dump.gz | Bin 0 -> 1572494 bytes
.../mp00307c_bis/iz_thick_q5_r18h_i18.dump.gz | Bin 0 -> 1568504 bytes
.../mp00307c_bis/iz_thick_q5_r18h_i26.dump.gz | Bin 0 -> 1527415 bytes
.../mp00307c_bis/iz_thick_q5_r26f_i06.dump.gz | Bin 0 -> 590817 bytes
.../mp00307c_bis/iz_thick_q5_r26f_i18.dump.gz | Bin 0 -> 550819 bytes
.../mp00307c_bis/iz_thick_q5_r26f_i26.dump.gz | Bin 0 -> 823220 bytes
.../mp00307c_bis/iz_thick_q5_r26h_i06.dump.gz | Bin 0 -> 1075375 bytes
.../mp00307c_bis/iz_thick_q5_r26h_i18.dump.gz | Bin 0 -> 1143134 bytes
.../mp00307c_bis/iz_thick_q5_r26h_i26.dump.gz | Bin 0 -> 735410 bytes
.../mp00307c_bis/iz_thin_q4_r06f_i06.dump.gz | Bin 0 -> 962776 bytes
.../mp00307c_bis/iz_thin_q4_r06f_i18.dump.gz | Bin 0 -> 954748 bytes
.../mp00307c_bis/iz_thin_q4_r06f_i26.dump.gz | Bin 0 -> 962713 bytes
.../mp00307c_bis/iz_thin_q4_r06h_i06.dump.gz | Bin 0 -> 1135791 bytes
.../mp00307c_bis/iz_thin_q4_r06h_i18.dump.gz | Bin 0 -> 1160192 bytes
.../mp00307c_bis/iz_thin_q4_r06h_i26.dump.gz | Bin 0 -> 1132680 bytes
.../mp00307c_bis/iz_thin_q4_r18f_i06.dump.gz | Bin 0 -> 684779 bytes
.../mp00307c_bis/iz_thin_q4_r18f_i18.dump.gz | Bin 0 -> 629247 bytes
.../mp00307c_bis/iz_thin_q4_r18f_i26.dump.gz | Bin 0 -> 422005 bytes
.../mp00307c_bis/iz_thin_q4_r18h_i06.dump.gz | Bin 0 -> 1083535 bytes
.../mp00307c_bis/iz_thin_q4_r18h_i18.dump.gz | Bin 0 -> 1006366 bytes
.../mp00307c_bis/iz_thin_q4_r18h_i26.dump.gz | Bin 0 -> 991070 bytes
.../mp00307c_bis/iz_thin_q4_r26f_i06.dump.gz | Bin 0 -> 684779 bytes
.../mp00307c_bis/iz_thin_q4_r26f_i18.dump.gz | Bin 0 -> 629247 bytes
.../mp00307c_bis/iz_thin_q4_r26f_i26.dump.gz | Bin 0 -> 422005 bytes
.../mp00307c_bis/iz_thin_q4_r26h_i06.dump.gz | Bin 0 -> 666343 bytes
.../mp00307c_bis/iz_thin_q4_r26h_i18.dump.gz | Bin 0 -> 701484 bytes
.../mp00307c_bis/iz_thin_q4_r26h_i26.dump.gz | Bin 0 -> 561507 bytes
.../mp00307c_bis/iz_thin_q5_r06f_i06.dump.gz | Bin 0 -> 1612222 bytes
.../mp00307c_bis/iz_thin_q5_r06f_i18.dump.gz | Bin 0 -> 1487062 bytes
.../mp00307c_bis/iz_thin_q5_r06f_i26.dump.gz | Bin 0 -> 1485725 bytes
.../mp00307c_bis/iz_thin_q5_r06h_i06.dump.gz | Bin 0 -> 1878561 bytes
.../mp00307c_bis/iz_thin_q5_r06h_i18.dump.gz | Bin 0 -> 1891209 bytes
.../mp00307c_bis/iz_thin_q5_r06h_i26.dump.gz | Bin 0 -> 1941281 bytes
.../mp00307c_bis/iz_thin_q5_r18f_i06.dump.gz | Bin 0 -> 614381 bytes
.../mp00307c_bis/iz_thin_q5_r18f_i18.dump.gz | Bin 0 -> 703060 bytes
.../mp00307c_bis/iz_thin_q5_r18f_i26.dump.gz | Bin 0 -> 630278 bytes
.../mp00307c_bis/iz_thin_q5_r18h_i06.dump.gz | Bin 0 -> 1573269 bytes
.../mp00307c_bis/iz_thin_q5_r18h_i18.dump.gz | Bin 0 -> 1587858 bytes
.../mp00307c_bis/iz_thin_q5_r18h_i26.dump.gz | Bin 0 -> 1517497 bytes
.../mp00307c_bis/iz_thin_q5_r26f_i06.dump.gz | Bin 0 -> 539920 bytes
.../mp00307c_bis/iz_thin_q5_r26f_i18.dump.gz | Bin 0 -> 620113 bytes
.../mp00307c_bis/iz_thin_q5_r26f_i26.dump.gz | Bin 0 -> 551315 bytes
.../mp00307c_bis/iz_thin_q5_r26h_i06.dump.gz | Bin 0 -> 1131441 bytes
.../mp00307c_bis/iz_thin_q5_r26h_i18.dump.gz | Bin 0 -> 1204687 bytes
.../mp00307c_bis/iz_thin_q5_r26h_i26.dump.gz | Bin 0 -> 797028 bytes
.../mp00307c_bis/labeled_all_q4_r06f.dump.gz | Bin 0 -> 223 bytes
.../mp00307c_bis/labeled_all_q4_r06h.dump.gz | Bin 0 -> 236 bytes
.../mp00307c_bis/labeled_all_q4_r18f.dump.gz | Bin 0 -> 148 bytes
.../mp00307c_bis/labeled_all_q4_r18h.dump.gz | Bin 0 -> 197 bytes
.../mp00307c_bis/labeled_all_q4_r26f.dump.gz | Bin 0 -> 148 bytes
.../mp00307c_bis/labeled_all_q4_r26h.dump.gz | Bin 0 -> 145 bytes
.../mp00307c_bis/labeled_all_q5_r06f.dump.gz | Bin 0 -> 416 bytes
.../mp00307c_bis/labeled_all_q5_r06h.dump.gz | Bin 0 -> 1146 bytes
.../mp00307c_bis/labeled_all_q5_r18f.dump.gz | Bin 0 -> 265 bytes
.../mp00307c_bis/labeled_all_q5_r18h.dump.gz | Bin 0 -> 436 bytes
.../mp00307c_bis/labeled_all_q5_r26f.dump.gz | Bin 0 -> 265 bytes
.../mp00307c_bis/labeled_all_q5_r26h.dump.gz | Bin 0 -> 262 bytes
.../mp00307c_bis/labeled_thick_q4_r06f.dump.gz | Bin 0 -> 214 bytes
.../mp00307c_bis/labeled_thick_q4_r06h.dump.gz | Bin 0 -> 245 bytes
.../mp00307c_bis/labeled_thick_q4_r18f.dump.gz | Bin 0 -> 150 bytes
.../mp00307c_bis/labeled_thick_q4_r18h.dump.gz | Bin 0 -> 196 bytes
.../mp00307c_bis/labeled_thick_q4_r26f.dump.gz | Bin 0 -> 150 bytes
.../mp00307c_bis/labeled_thick_q4_r26h.dump.gz | Bin 0 -> 150 bytes
.../mp00307c_bis/labeled_thick_q5_r06f.dump.gz | Bin 0 -> 390 bytes
.../mp00307c_bis/labeled_thick_q5_r06h.dump.gz | Bin 0 -> 1092 bytes
.../mp00307c_bis/labeled_thick_q5_r18f.dump.gz | Bin 0 -> 285 bytes
.../mp00307c_bis/labeled_thick_q5_r18h.dump.gz | Bin 0 -> 463 bytes
.../mp00307c_bis/labeled_thick_q5_r26f.dump.gz | Bin 0 -> 279 bytes
.../mp00307c_bis/labeled_thick_q5_r26h.dump.gz | Bin 0 -> 278 bytes
.../mp00307c_bis/labeled_thin_q4_r06f.dump.gz | Bin 0 -> 213 bytes
.../mp00307c_bis/labeled_thin_q4_r06h.dump.gz | Bin 0 -> 236 bytes
.../mp00307c_bis/labeled_thin_q4_r18f.dump.gz | Bin 0 -> 151 bytes
.../mp00307c_bis/labeled_thin_q4_r18h.dump.gz | Bin 0 -> 197 bytes
.../mp00307c_bis/labeled_thin_q4_r26f.dump.gz | Bin 0 -> 151 bytes
.../mp00307c_bis/labeled_thin_q4_r26h.dump.gz | Bin 0 -> 149 bytes
.../mp00307c_bis/labeled_thin_q5_r06f.dump.gz | Bin 0 -> 427 bytes
.../mp00307c_bis/labeled_thin_q5_r06h.dump.gz | Bin 0 -> 1043 bytes
.../mp00307c_bis/labeled_thin_q5_r18f.dump.gz | Bin 0 -> 276 bytes
.../mp00307c_bis/labeled_thin_q5_r18h.dump.gz | Bin 0 -> 444 bytes
.../mp00307c_bis/labeled_thin_q5_r26f.dump.gz | Bin 0 -> 267 bytes
.../mp00307c_bis/labeled_thin_q5_r26h.dump.gz | Bin 0 -> 282 bytes
.../labeling/mp00307c_bis/mean3_all_q4_r06f.ppm.gz | Bin 0 -> 1306377 bytes
.../labeling/mp00307c_bis/mean3_all_q4_r06h.ppm.gz | Bin 0 -> 1467102 bytes
.../labeling/mp00307c_bis/mean3_all_q4_r18f.ppm.gz | Bin 0 -> 668707 bytes
.../labeling/mp00307c_bis/mean3_all_q4_r18h.ppm.gz | Bin 0 -> 1277353 bytes
.../labeling/mp00307c_bis/mean3_all_q4_r26f.ppm.gz | Bin 0 -> 668707 bytes
.../labeling/mp00307c_bis/mean3_all_q4_r26h.ppm.gz | Bin 0 -> 602143 bytes
.../labeling/mp00307c_bis/mean3_all_q5_r06f.ppm.gz | Bin 0 -> 1970048 bytes
.../labeling/mp00307c_bis/mean3_all_q5_r06h.ppm.gz | Bin 0 -> 876877 bytes
.../labeling/mp00307c_bis/mean3_all_q5_r18f.ppm.gz | Bin 0 -> 579352 bytes
.../labeling/mp00307c_bis/mean3_all_q5_r18h.ppm.gz | Bin 0 -> 1674000 bytes
.../labeling/mp00307c_bis/mean3_all_q5_r26f.ppm.gz | Bin 0 -> 579352 bytes
.../labeling/mp00307c_bis/mean3_all_q5_r26h.ppm.gz | Bin 0 -> 1000647 bytes
.../mp00307c_bis/mean3_thick_q4_r06f.ppm.gz | Bin 0 -> 1167846 bytes
.../mp00307c_bis/mean3_thick_q4_r06h.ppm.gz | Bin 0 -> 1456800 bytes
.../mp00307c_bis/mean3_thick_q4_r18f.ppm.gz | Bin 0 -> 596167 bytes
.../mp00307c_bis/mean3_thick_q4_r18h.ppm.gz | Bin 0 -> 1222433 bytes
.../mp00307c_bis/mean3_thick_q4_r26f.ppm.gz | Bin 0 -> 596167 bytes
.../mp00307c_bis/mean3_thick_q4_r26h.ppm.gz | Bin 0 -> 498504 bytes
.../mp00307c_bis/mean3_thick_q5_r06f.ppm.gz | Bin 0 -> 1839948 bytes
.../mp00307c_bis/mean3_thick_q5_r06h.ppm.gz | Bin 0 -> 2180622 bytes
.../mp00307c_bis/mean3_thick_q5_r18f.ppm.gz | Bin 0 -> 690328 bytes
.../mp00307c_bis/mean3_thick_q5_r18h.ppm.gz | Bin 0 -> 1630724 bytes
.../mp00307c_bis/mean3_thick_q5_r26f.ppm.gz | Bin 0 -> 651392 bytes
.../mp00307c_bis/mean3_thick_q5_r26h.ppm.gz | Bin 0 -> 950599 bytes
.../mp00307c_bis/mean3_thin_q4_r06f.ppm.gz | Bin 0 -> 1193538 bytes
.../mp00307c_bis/mean3_thin_q4_r06h.ppm.gz | Bin 0 -> 1454794 bytes
.../mp00307c_bis/mean3_thin_q4_r18f.ppm.gz | Bin 0 -> 699989 bytes
.../mp00307c_bis/mean3_thin_q4_r18h.ppm.gz | Bin 0 -> 1266243 bytes
.../mp00307c_bis/mean3_thin_q4_r26f.ppm.gz | Bin 0 -> 699989 bytes
.../mp00307c_bis/mean3_thin_q4_r26h.ppm.gz | Bin 0 -> 603860 bytes
.../mp00307c_bis/mean3_thin_q5_r06f.ppm.gz | Bin 0 -> 1857739 bytes
.../mp00307c_bis/mean3_thin_q5_r06h.ppm.gz | Bin 0 -> 2141277 bytes
.../mp00307c_bis/mean3_thin_q5_r18f.ppm.gz | Bin 0 -> 435524 bytes
.../mp00307c_bis/mean3_thin_q5_r18h.ppm.gz | Bin 0 -> 1625982 bytes
.../mp00307c_bis/mean3_thin_q5_r26f.ppm.gz | Bin 0 -> 396958 bytes
.../mp00307c_bis/mean3_thin_q5_r26h.ppm.gz | Bin 0 -> 1023329 bytes
.../mp00307c_bis/mean4_all_q4_r06f_i06.ppm.gz | Bin 0 -> 1205539 bytes
.../mp00307c_bis/mean4_all_q4_r06f_i18.ppm.gz | Bin 0 -> 1157791 bytes
.../mp00307c_bis/mean4_all_q4_r06f_i26.ppm.gz | Bin 0 -> 1201438 bytes
.../mp00307c_bis/mean4_all_q4_r06h_i06.ppm.gz | Bin 0 -> 1358023 bytes
.../mp00307c_bis/mean4_all_q4_r06h_i18.ppm.gz | Bin 0 -> 1395466 bytes
.../mp00307c_bis/mean4_all_q4_r06h_i26.ppm.gz | Bin 0 -> 1403498 bytes
.../mp00307c_bis/mean4_all_q4_r18f_i06.ppm.gz | Bin 0 -> 698282 bytes
.../mp00307c_bis/mean4_all_q4_r18f_i18.ppm.gz | Bin 0 -> 718930 bytes
.../mp00307c_bis/mean4_all_q4_r18f_i26.ppm.gz | Bin 0 -> 515546 bytes
.../mp00307c_bis/mean4_all_q4_r18h_i06.ppm.gz | Bin 0 -> 1282443 bytes
.../mp00307c_bis/mean4_all_q4_r18h_i18.ppm.gz | Bin 0 -> 1227286 bytes
.../mp00307c_bis/mean4_all_q4_r18h_i26.ppm.gz | Bin 0 -> 1173155 bytes
.../mp00307c_bis/mean4_all_q4_r26f_i06.ppm.gz | Bin 0 -> 698282 bytes
.../mp00307c_bis/mean4_all_q4_r26f_i18.ppm.gz | Bin 0 -> 718930 bytes
.../mp00307c_bis/mean4_all_q4_r26f_i26.ppm.gz | Bin 0 -> 515546 bytes
.../mp00307c_bis/mean4_all_q4_r26h_i06.ppm.gz | Bin 0 -> 703216 bytes
.../mp00307c_bis/mean4_all_q4_r26h_i18.ppm.gz | Bin 0 -> 743441 bytes
.../mp00307c_bis/mean4_all_q4_r26h_i26.ppm.gz | Bin 0 -> 643417 bytes
.../mp00307c_bis/mean4_all_q5_r06f_i06.ppm.gz | Bin 0 -> 2093582 bytes
.../mp00307c_bis/mean4_all_q5_r06f_i18.ppm.gz | Bin 0 -> 1954065 bytes
.../mp00307c_bis/mean4_all_q5_r06f_i26.ppm.gz | Bin 0 -> 1983641 bytes
.../mp00307c_bis/mean4_all_q5_r06h_i06.ppm.gz | Bin 0 -> 1111868 bytes
.../mp00307c_bis/mean4_all_q5_r06h_i18.ppm.gz | Bin 0 -> 1111868 bytes
.../mp00307c_bis/mean4_all_q5_r06h_i26.ppm.gz | Bin 0 -> 1111868 bytes
.../mp00307c_bis/mean4_all_q5_r18f_i06.ppm.gz | Bin 0 -> 680211 bytes
.../mp00307c_bis/mean4_all_q5_r18f_i18.ppm.gz | Bin 0 -> 633735 bytes
.../mp00307c_bis/mean4_all_q5_r18f_i26.ppm.gz | Bin 0 -> 931952 bytes
.../mp00307c_bis/mean4_all_q5_r18h_i06.ppm.gz | Bin 0 -> 1923195 bytes
.../mp00307c_bis/mean4_all_q5_r18h_i18.ppm.gz | Bin 0 -> 1910194 bytes
.../mp00307c_bis/mean4_all_q5_r18h_i26.ppm.gz | Bin 0 -> 1835260 bytes
.../mp00307c_bis/mean4_all_q5_r26f_i06.ppm.gz | Bin 0 -> 680211 bytes
.../mp00307c_bis/mean4_all_q5_r26f_i18.ppm.gz | Bin 0 -> 633735 bytes
.../mp00307c_bis/mean4_all_q5_r26f_i26.ppm.gz | Bin 0 -> 931952 bytes
.../mp00307c_bis/mean4_all_q5_r26h_i06.ppm.gz | Bin 0 -> 1220579 bytes
.../mp00307c_bis/mean4_all_q5_r26h_i18.ppm.gz | Bin 0 -> 1302559 bytes
.../mp00307c_bis/mean4_all_q5_r26h_i26.ppm.gz | Bin 0 -> 864603 bytes
.../mp00307c_bis/mean4_thick_q4_r06f_i06.ppm.gz | Bin 0 -> 1090370 bytes
.../mp00307c_bis/mean4_thick_q4_r06f_i18.ppm.gz | Bin 0 -> 1119679 bytes
.../mp00307c_bis/mean4_thick_q4_r06f_i26.ppm.gz | Bin 0 -> 1134801 bytes
.../mp00307c_bis/mean4_thick_q4_r06h_i06.ppm.gz | Bin 0 -> 1370239 bytes
.../mp00307c_bis/mean4_thick_q4_r06h_i18.ppm.gz | Bin 0 -> 1397990 bytes
.../mp00307c_bis/mean4_thick_q4_r06h_i26.ppm.gz | Bin 0 -> 1357462 bytes
.../mp00307c_bis/mean4_thick_q4_r18f_i06.ppm.gz | Bin 0 -> 619992 bytes
.../mp00307c_bis/mean4_thick_q4_r18f_i18.ppm.gz | Bin 0 -> 644303 bytes
.../mp00307c_bis/mean4_thick_q4_r18f_i26.ppm.gz | Bin 0 -> 432688 bytes
.../mp00307c_bis/mean4_thick_q4_r18h_i06.ppm.gz | Bin 0 -> 1265996 bytes
.../mp00307c_bis/mean4_thick_q4_r18h_i18.ppm.gz | Bin 0 -> 1177530 bytes
.../mp00307c_bis/mean4_thick_q4_r18h_i26.ppm.gz | Bin 0 -> 1139263 bytes
.../mp00307c_bis/mean4_thick_q4_r26f_i06.ppm.gz | Bin 0 -> 619992 bytes
.../mp00307c_bis/mean4_thick_q4_r26f_i18.ppm.gz | Bin 0 -> 644303 bytes
.../mp00307c_bis/mean4_thick_q4_r26f_i26.ppm.gz | Bin 0 -> 432688 bytes
.../mp00307c_bis/mean4_thick_q4_r26h_i06.ppm.gz | Bin 0 -> 601868 bytes
.../mp00307c_bis/mean4_thick_q4_r26h_i18.ppm.gz | Bin 0 -> 640946 bytes
.../mp00307c_bis/mean4_thick_q4_r26h_i26.ppm.gz | Bin 0 -> 605278 bytes
.../mp00307c_bis/mean4_thick_q5_r06f_i06.ppm.gz | Bin 0 -> 1904710 bytes
.../mp00307c_bis/mean4_thick_q5_r06f_i18.ppm.gz | Bin 0 -> 1789692 bytes
.../mp00307c_bis/mean4_thick_q5_r06f_i26.ppm.gz | Bin 0 -> 1791506 bytes
.../mp00307c_bis/mean4_thick_q5_r06h_i06.ppm.gz | Bin 0 -> 2368970 bytes
.../mp00307c_bis/mean4_thick_q5_r06h_i18.ppm.gz | Bin 0 -> 2380072 bytes
.../mp00307c_bis/mean4_thick_q5_r06h_i26.ppm.gz | Bin 0 -> 2444867 bytes
.../mp00307c_bis/mean4_thick_q5_r18f_i06.ppm.gz | Bin 0 -> 767713 bytes
.../mp00307c_bis/mean4_thick_q5_r18f_i18.ppm.gz | Bin 0 -> 736526 bytes
.../mp00307c_bis/mean4_thick_q5_r18f_i26.ppm.gz | Bin 0 -> 1014507 bytes
.../mp00307c_bis/mean4_thick_q5_r18h_i06.ppm.gz | Bin 0 -> 1907841 bytes
.../mp00307c_bis/mean4_thick_q5_r18h_i18.ppm.gz | Bin 0 -> 1904778 bytes
.../mp00307c_bis/mean4_thick_q5_r18h_i26.ppm.gz | Bin 0 -> 1851869 bytes
.../mp00307c_bis/mean4_thick_q5_r26f_i06.ppm.gz | Bin 0 -> 667547 bytes
.../mp00307c_bis/mean4_thick_q5_r26f_i18.ppm.gz | Bin 0 -> 611670 bytes
.../mp00307c_bis/mean4_thick_q5_r26f_i26.ppm.gz | Bin 0 -> 903927 bytes
.../mp00307c_bis/mean4_thick_q5_r26h_i06.ppm.gz | Bin 0 -> 1199684 bytes
.../mp00307c_bis/mean4_thick_q5_r26h_i18.ppm.gz | Bin 0 -> 1287816 bytes
.../mp00307c_bis/mean4_thick_q5_r26h_i26.ppm.gz | Bin 0 -> 864979 bytes
.../mp00307c_bis/mean4_thin_q4_r06f_i06.ppm.gz | Bin 0 -> 1127048 bytes
.../mp00307c_bis/mean4_thin_q4_r06f_i18.ppm.gz | Bin 0 -> 1115306 bytes
.../mp00307c_bis/mean4_thin_q4_r06f_i26.ppm.gz | Bin 0 -> 1125211 bytes
.../mp00307c_bis/mean4_thin_q4_r06h_i06.ppm.gz | Bin 0 -> 1365868 bytes
.../mp00307c_bis/mean4_thin_q4_r06h_i18.ppm.gz | Bin 0 -> 1390980 bytes
.../mp00307c_bis/mean4_thin_q4_r06h_i26.ppm.gz | Bin 0 -> 1351373 bytes
.../mp00307c_bis/mean4_thin_q4_r18f_i06.ppm.gz | Bin 0 -> 727709 bytes
.../mp00307c_bis/mean4_thin_q4_r18f_i18.ppm.gz | Bin 0 -> 693489 bytes
.../mp00307c_bis/mean4_thin_q4_r18f_i26.ppm.gz | Bin 0 -> 484106 bytes
.../mp00307c_bis/mean4_thin_q4_r18h_i06.ppm.gz | Bin 0 -> 1302627 bytes
.../mp00307c_bis/mean4_thin_q4_r18h_i18.ppm.gz | Bin 0 -> 1183068 bytes
.../mp00307c_bis/mean4_thin_q4_r18h_i26.ppm.gz | Bin 0 -> 1160881 bytes
.../mp00307c_bis/mean4_thin_q4_r26f_i06.ppm.gz | Bin 0 -> 727709 bytes
.../mp00307c_bis/mean4_thin_q4_r26f_i18.ppm.gz | Bin 0 -> 693489 bytes
.../mp00307c_bis/mean4_thin_q4_r26f_i26.ppm.gz | Bin 0 -> 484106 bytes
.../mp00307c_bis/mean4_thin_q4_r26h_i06.ppm.gz | Bin 0 -> 708109 bytes
.../mp00307c_bis/mean4_thin_q4_r26h_i18.ppm.gz | Bin 0 -> 752658 bytes
.../mp00307c_bis/mean4_thin_q4_r26h_i26.ppm.gz | Bin 0 -> 654845 bytes
.../mp00307c_bis/mean4_thin_q5_r06f_i06.ppm.gz | Bin 0 -> 1950212 bytes
.../mp00307c_bis/mean4_thin_q5_r06f_i18.ppm.gz | Bin 0 -> 1777651 bytes
.../mp00307c_bis/mean4_thin_q5_r06f_i26.ppm.gz | Bin 0 -> 1775219 bytes
.../mp00307c_bis/mean4_thin_q5_r06h_i06.ppm.gz | Bin 0 -> 2326251 bytes
.../mp00307c_bis/mean4_thin_q5_r06h_i18.ppm.gz | Bin 0 -> 2349671 bytes
.../mp00307c_bis/mean4_thin_q5_r06h_i26.ppm.gz | Bin 0 -> 2423756 bytes
.../mp00307c_bis/mean4_thin_q5_r18f_i06.ppm.gz | Bin 0 -> 699039 bytes
.../mp00307c_bis/mean4_thin_q5_r18f_i18.ppm.gz | Bin 0 -> 823493 bytes
.../mp00307c_bis/mean4_thin_q5_r18f_i26.ppm.gz | Bin 0 -> 738297 bytes
.../mp00307c_bis/mean4_thin_q5_r18h_i06.ppm.gz | Bin 0 -> 1887981 bytes
.../mp00307c_bis/mean4_thin_q5_r18h_i18.ppm.gz | Bin 0 -> 1881624 bytes
.../mp00307c_bis/mean4_thin_q5_r18h_i26.ppm.gz | Bin 0 -> 1825698 bytes
.../mp00307c_bis/mean4_thin_q5_r26f_i06.ppm.gz | Bin 0 -> 598568 bytes
.../mp00307c_bis/mean4_thin_q5_r26f_i18.ppm.gz | Bin 0 -> 708405 bytes
.../mp00307c_bis/mean4_thin_q5_r26f_i26.ppm.gz | Bin 0 -> 629821 bytes
.../mp00307c_bis/mean4_thin_q5_r26h_i06.ppm.gz | Bin 0 -> 1275641 bytes
.../mp00307c_bis/mean4_thin_q5_r26h_i18.ppm.gz | Bin 0 -> 1371205 bytes
.../mp00307c_bis/mean4_thin_q5_r26h_i26.ppm.gz | Bin 0 -> 951356 bytes
.../doc/labeling/mp00307c_bis/mp00307c.ppm.gz | Bin 0 -> 4951735 bytes
.../green/doc/labeling/mp00307c_bis/mp00307c.sh.gz | Bin 0 -> 3781 bytes
.../labeling/mp00307c_bis/mp00307c_thick.pbm.gz | Bin 0 -> 196172 bytes
.../doc/labeling/mp00307c_bis/mp00307c_thin.pbm.gz | Bin 0 -> 244492 bytes
.../labeling/mp00307c_bis/opened_all_q4.dump.gz | Bin 0 -> 1786 bytes
.../labeling/mp00307c_bis/opened_all_q5.dump.gz | Bin 0 -> 7290 bytes
.../labeling/mp00307c_bis/opened_all_q8.dump.gz | Bin 0 -> 65211 bytes
.../labeling/mp00307c_bis/opened_thick_q4.dump.gz | Bin 0 -> 1560 bytes
.../labeling/mp00307c_bis/opened_thick_q5.dump.gz | Bin 0 -> 5813 bytes
.../labeling/mp00307c_bis/opened_thick_q8.dump.gz | Bin 0 -> 65213 bytes
.../labeling/mp00307c_bis/opened_thin_q4.dump.gz | Bin 0 -> 1515 bytes
.../labeling/mp00307c_bis/opened_thin_q5.dump.gz | Bin 0 -> 5638 bytes
.../labeling/mp00307c_bis/opened_thin_q8.dump.gz | Bin 0 -> 65212 bytes
.../doc/labeling/mp00307c_bis/proj1_all_q4.pgm.gz | Bin 0 -> 313 bytes
.../doc/labeling/mp00307c_bis/proj1_all_q4.ppm.gz | Bin 0 -> 422 bytes
.../doc/labeling/mp00307c_bis/proj1_all_q5.pgm.gz | Bin 0 -> 663 bytes
.../doc/labeling/mp00307c_bis/proj1_all_q5.ppm.gz | Bin 0 -> 1093 bytes
.../doc/labeling/mp00307c_bis/proj1_all_q8.pgm.gz | Bin 0 -> 8180 bytes
.../doc/labeling/mp00307c_bis/proj1_all_q8.ppm.gz | Bin 0 -> 22924 bytes
.../labeling/mp00307c_bis/proj1_thick_q4.pgm.gz | Bin 0 -> 309 bytes
.../labeling/mp00307c_bis/proj1_thick_q4.ppm.gz | Bin 0 -> 412 bytes
.../labeling/mp00307c_bis/proj1_thick_q5.pgm.gz | Bin 0 -> 646 bytes
.../labeling/mp00307c_bis/proj1_thick_q5.ppm.gz | Bin 0 -> 1062 bytes
.../labeling/mp00307c_bis/proj1_thick_q8.pgm.gz | Bin 0 -> 6790 bytes
.../labeling/mp00307c_bis/proj1_thick_q8.ppm.gz | Bin 0 -> 18924 bytes
.../doc/labeling/mp00307c_bis/proj1_thin_q4.pgm.gz | Bin 0 -> 307 bytes
.../doc/labeling/mp00307c_bis/proj1_thin_q4.ppm.gz | Bin 0 -> 411 bytes
.../doc/labeling/mp00307c_bis/proj1_thin_q5.pgm.gz | Bin 0 -> 641 bytes
.../doc/labeling/mp00307c_bis/proj1_thin_q5.ppm.gz | Bin 0 -> 1051 bytes
.../doc/labeling/mp00307c_bis/proj1_thin_q8.pgm.gz | Bin 0 -> 6680 bytes
.../doc/labeling/mp00307c_bis/proj1_thin_q8.ppm.gz | Bin 0 -> 18395 bytes
.../doc/labeling/mp00307c_bis/proj2_all_q4.pgm.gz | Bin 0 -> 316 bytes
.../doc/labeling/mp00307c_bis/proj2_all_q4.ppm.gz | Bin 0 -> 425 bytes
.../doc/labeling/mp00307c_bis/proj2_all_q5.pgm.gz | Bin 0 -> 659 bytes
.../doc/labeling/mp00307c_bis/proj2_all_q5.ppm.gz | Bin 0 -> 1076 bytes
.../doc/labeling/mp00307c_bis/proj2_all_q8.pgm.gz | Bin 0 -> 233 bytes
.../doc/labeling/mp00307c_bis/proj2_all_q8.ppm.gz | Bin 0 -> 364 bytes
.../labeling/mp00307c_bis/proj2_thick_q4.pgm.gz | Bin 0 -> 311 bytes
.../labeling/mp00307c_bis/proj2_thick_q4.ppm.gz | Bin 0 -> 415 bytes
.../labeling/mp00307c_bis/proj2_thick_q5.pgm.gz | Bin 0 -> 635 bytes
.../labeling/mp00307c_bis/proj2_thick_q5.ppm.gz | Bin 0 -> 1048 bytes
.../labeling/mp00307c_bis/proj2_thick_q8.pgm.gz | Bin 0 -> 235 bytes
.../labeling/mp00307c_bis/proj2_thick_q8.ppm.gz | Bin 0 -> 366 bytes
.../doc/labeling/mp00307c_bis/proj2_thin_q4.pgm.gz | Bin 0 -> 309 bytes
.../doc/labeling/mp00307c_bis/proj2_thin_q4.ppm.gz | Bin 0 -> 415 bytes
.../doc/labeling/mp00307c_bis/proj2_thin_q5.pgm.gz | Bin 0 -> 630 bytes
.../doc/labeling/mp00307c_bis/proj2_thin_q5.ppm.gz | Bin 0 -> 1036 bytes
.../doc/labeling/mp00307c_bis/proj2_thin_q8.pgm.gz | Bin 0 -> 234 bytes
.../doc/labeling/mp00307c_bis/proj2_thin_q8.ppm.gz | Bin 0 -> 365 bytes
.../labeling/mp00307c_bis/proj3_all_q4_r06f.ppm.gz | Bin 0 -> 295 bytes
.../labeling/mp00307c_bis/proj3_all_q4_r06h.ppm.gz | Bin 0 -> 338 bytes
.../labeling/mp00307c_bis/proj3_all_q4_r18f.ppm.gz | Bin 0 -> 227 bytes
.../labeling/mp00307c_bis/proj3_all_q4_r18h.ppm.gz | Bin 0 -> 294 bytes
.../labeling/mp00307c_bis/proj3_all_q4_r26f.ppm.gz | Bin 0 -> 227 bytes
.../labeling/mp00307c_bis/proj3_all_q4_r26h.ppm.gz | Bin 0 -> 232 bytes
.../labeling/mp00307c_bis/proj3_all_q5_r06f.ppm.gz | Bin 0 -> 444 bytes
.../labeling/mp00307c_bis/proj3_all_q5_r06h.ppm.gz | Bin 0 -> 818 bytes
.../labeling/mp00307c_bis/proj3_all_q5_r18f.ppm.gz | Bin 0 -> 332 bytes
.../labeling/mp00307c_bis/proj3_all_q5_r18h.ppm.gz | Bin 0 -> 510 bytes
.../labeling/mp00307c_bis/proj3_all_q5_r26f.ppm.gz | Bin 0 -> 332 bytes
.../labeling/mp00307c_bis/proj3_all_q5_r26h.ppm.gz | Bin 0 -> 348 bytes
.../mp00307c_bis/proj3_thick_q4_r06f.ppm.gz | Bin 0 -> 292 bytes
.../mp00307c_bis/proj3_thick_q4_r06h.ppm.gz | Bin 0 -> 327 bytes
.../mp00307c_bis/proj3_thick_q4_r18f.ppm.gz | Bin 0 -> 232 bytes
.../mp00307c_bis/proj3_thick_q4_r18h.ppm.gz | Bin 0 -> 289 bytes
.../mp00307c_bis/proj3_thick_q4_r26f.ppm.gz | Bin 0 -> 232 bytes
.../mp00307c_bis/proj3_thick_q4_r26h.ppm.gz | Bin 0 -> 240 bytes
.../mp00307c_bis/proj3_thick_q5_r06f.ppm.gz | Bin 0 -> 434 bytes
.../mp00307c_bis/proj3_thick_q5_r06h.ppm.gz | Bin 0 -> 836 bytes
.../mp00307c_bis/proj3_thick_q5_r18f.ppm.gz | Bin 0 -> 356 bytes
.../mp00307c_bis/proj3_thick_q5_r18h.ppm.gz | Bin 0 -> 527 bytes
.../mp00307c_bis/proj3_thick_q5_r26f.ppm.gz | Bin 0 -> 350 bytes
.../mp00307c_bis/proj3_thick_q5_r26h.ppm.gz | Bin 0 -> 375 bytes
.../mp00307c_bis/proj3_thin_q4_r06f.ppm.gz | Bin 0 -> 292 bytes
.../mp00307c_bis/proj3_thin_q4_r06h.ppm.gz | Bin 0 -> 327 bytes
.../mp00307c_bis/proj3_thin_q4_r18f.ppm.gz | Bin 0 -> 231 bytes
.../mp00307c_bis/proj3_thin_q4_r18h.ppm.gz | Bin 0 -> 295 bytes
.../mp00307c_bis/proj3_thin_q4_r26f.ppm.gz | Bin 0 -> 231 bytes
.../mp00307c_bis/proj3_thin_q4_r26h.ppm.gz | Bin 0 -> 241 bytes
.../mp00307c_bis/proj3_thin_q5_r06f.ppm.gz | Bin 0 -> 459 bytes
.../mp00307c_bis/proj3_thin_q5_r06h.ppm.gz | Bin 0 -> 788 bytes
.../mp00307c_bis/proj3_thin_q5_r18f.ppm.gz | Bin 0 -> 356 bytes
.../mp00307c_bis/proj3_thin_q5_r18h.ppm.gz | Bin 0 -> 510 bytes
.../mp00307c_bis/proj3_thin_q5_r26f.ppm.gz | Bin 0 -> 353 bytes
.../mp00307c_bis/proj3_thin_q5_r26h.ppm.gz | Bin 0 -> 379 bytes
.../mp00307c_bis/proj4_all_q4_r06f_i06.ppm.gz | Bin 0 -> 332 bytes
.../mp00307c_bis/proj4_all_q4_r06f_i18.ppm.gz | Bin 0 -> 329 bytes
.../mp00307c_bis/proj4_all_q4_r06f_i26.ppm.gz | Bin 0 -> 332 bytes
.../mp00307c_bis/proj4_all_q4_r06h_i06.ppm.gz | Bin 0 -> 376 bytes
.../mp00307c_bis/proj4_all_q4_r06h_i18.ppm.gz | Bin 0 -> 395 bytes
.../mp00307c_bis/proj4_all_q4_r06h_i26.ppm.gz | Bin 0 -> 395 bytes
.../mp00307c_bis/proj4_all_q4_r18f_i06.ppm.gz | Bin 0 -> 253 bytes
.../mp00307c_bis/proj4_all_q4_r18f_i18.ppm.gz | Bin 0 -> 256 bytes
.../mp00307c_bis/proj4_all_q4_r18f_i26.ppm.gz | Bin 0 -> 255 bytes
.../mp00307c_bis/proj4_all_q4_r18h_i06.ppm.gz | Bin 0 -> 325 bytes
.../mp00307c_bis/proj4_all_q4_r18h_i18.ppm.gz | Bin 0 -> 351 bytes
.../mp00307c_bis/proj4_all_q4_r18h_i26.ppm.gz | Bin 0 -> 349 bytes
.../mp00307c_bis/proj4_all_q4_r26f_i06.ppm.gz | Bin 0 -> 253 bytes
.../mp00307c_bis/proj4_all_q4_r26f_i18.ppm.gz | Bin 0 -> 256 bytes
.../mp00307c_bis/proj4_all_q4_r26f_i26.ppm.gz | Bin 0 -> 255 bytes
.../mp00307c_bis/proj4_all_q4_r26h_i06.ppm.gz | Bin 0 -> 256 bytes
.../mp00307c_bis/proj4_all_q4_r26h_i18.ppm.gz | Bin 0 -> 274 bytes
.../mp00307c_bis/proj4_all_q4_r26h_i26.ppm.gz | Bin 0 -> 275 bytes
.../mp00307c_bis/proj4_all_q5_r06f_i06.ppm.gz | Bin 0 -> 511 bytes
.../mp00307c_bis/proj4_all_q5_r06f_i18.ppm.gz | Bin 0 -> 525 bytes
.../mp00307c_bis/proj4_all_q5_r06f_i26.ppm.gz | Bin 0 -> 530 bytes
.../mp00307c_bis/proj4_all_q5_r06h_i06.ppm.gz | Bin 0 -> 896 bytes
.../mp00307c_bis/proj4_all_q5_r06h_i18.ppm.gz | Bin 0 -> 896 bytes
.../mp00307c_bis/proj4_all_q5_r06h_i26.ppm.gz | Bin 0 -> 896 bytes
.../mp00307c_bis/proj4_all_q5_r18f_i06.ppm.gz | Bin 0 -> 356 bytes
.../mp00307c_bis/proj4_all_q5_r18f_i18.ppm.gz | Bin 0 -> 383 bytes
.../mp00307c_bis/proj4_all_q5_r18f_i26.ppm.gz | Bin 0 -> 389 bytes
.../mp00307c_bis/proj4_all_q5_r18h_i06.ppm.gz | Bin 0 -> 597 bytes
.../mp00307c_bis/proj4_all_q5_r18h_i18.ppm.gz | Bin 0 -> 673 bytes
.../mp00307c_bis/proj4_all_q5_r18h_i26.ppm.gz | Bin 0 -> 685 bytes
.../mp00307c_bis/proj4_all_q5_r26f_i06.ppm.gz | Bin 0 -> 356 bytes
.../mp00307c_bis/proj4_all_q5_r26f_i18.ppm.gz | Bin 0 -> 383 bytes
.../mp00307c_bis/proj4_all_q5_r26f_i26.ppm.gz | Bin 0 -> 389 bytes
.../mp00307c_bis/proj4_all_q5_r26h_i06.ppm.gz | Bin 0 -> 379 bytes
.../mp00307c_bis/proj4_all_q5_r26h_i18.ppm.gz | Bin 0 -> 439 bytes
.../mp00307c_bis/proj4_all_q5_r26h_i26.ppm.gz | Bin 0 -> 455 bytes
.../mp00307c_bis/proj4_thick_q4_r06f_i06.ppm.gz | Bin 0 -> 326 bytes
.../mp00307c_bis/proj4_thick_q4_r06f_i18.ppm.gz | Bin 0 -> 327 bytes
.../mp00307c_bis/proj4_thick_q4_r06f_i26.ppm.gz | Bin 0 -> 325 bytes
.../mp00307c_bis/proj4_thick_q4_r06h_i06.ppm.gz | Bin 0 -> 377 bytes
.../mp00307c_bis/proj4_thick_q4_r06h_i18.ppm.gz | Bin 0 -> 399 bytes
.../mp00307c_bis/proj4_thick_q4_r06h_i26.ppm.gz | Bin 0 -> 391 bytes
.../mp00307c_bis/proj4_thick_q4_r18f_i06.ppm.gz | Bin 0 -> 262 bytes
.../mp00307c_bis/proj4_thick_q4_r18f_i18.ppm.gz | Bin 0 -> 258 bytes
.../mp00307c_bis/proj4_thick_q4_r18f_i26.ppm.gz | Bin 0 -> 262 bytes
.../mp00307c_bis/proj4_thick_q4_r18h_i06.ppm.gz | Bin 0 -> 328 bytes
.../mp00307c_bis/proj4_thick_q4_r18h_i18.ppm.gz | Bin 0 -> 344 bytes
.../mp00307c_bis/proj4_thick_q4_r18h_i26.ppm.gz | Bin 0 -> 344 bytes
.../mp00307c_bis/proj4_thick_q4_r26f_i06.ppm.gz | Bin 0 -> 262 bytes
.../mp00307c_bis/proj4_thick_q4_r26f_i18.ppm.gz | Bin 0 -> 258 bytes
.../mp00307c_bis/proj4_thick_q4_r26f_i26.ppm.gz | Bin 0 -> 262 bytes
.../mp00307c_bis/proj4_thick_q4_r26h_i06.ppm.gz | Bin 0 -> 260 bytes
.../mp00307c_bis/proj4_thick_q4_r26h_i18.ppm.gz | Bin 0 -> 283 bytes
.../mp00307c_bis/proj4_thick_q4_r26h_i26.ppm.gz | Bin 0 -> 286 bytes
.../mp00307c_bis/proj4_thick_q5_r06f_i06.ppm.gz | Bin 0 -> 479 bytes
.../mp00307c_bis/proj4_thick_q5_r06f_i18.ppm.gz | Bin 0 -> 498 bytes
.../mp00307c_bis/proj4_thick_q5_r06f_i26.ppm.gz | Bin 0 -> 507 bytes
.../mp00307c_bis/proj4_thick_q5_r06h_i06.ppm.gz | Bin 0 -> 914 bytes
.../mp00307c_bis/proj4_thick_q5_r06h_i18.ppm.gz | Bin 0 -> 962 bytes
.../mp00307c_bis/proj4_thick_q5_r06h_i26.ppm.gz | Bin 0 -> 975 bytes
.../mp00307c_bis/proj4_thick_q5_r18f_i06.ppm.gz | Bin 0 -> 393 bytes
.../mp00307c_bis/proj4_thick_q5_r18f_i18.ppm.gz | Bin 0 -> 413 bytes
.../mp00307c_bis/proj4_thick_q5_r18f_i26.ppm.gz | Bin 0 -> 420 bytes
.../mp00307c_bis/proj4_thick_q5_r18h_i06.ppm.gz | Bin 0 -> 589 bytes
.../mp00307c_bis/proj4_thick_q5_r18h_i18.ppm.gz | Bin 0 -> 652 bytes
.../mp00307c_bis/proj4_thick_q5_r18h_i26.ppm.gz | Bin 0 -> 672 bytes
.../mp00307c_bis/proj4_thick_q5_r26f_i06.ppm.gz | Bin 0 -> 388 bytes
.../mp00307c_bis/proj4_thick_q5_r26f_i18.ppm.gz | Bin 0 -> 407 bytes
.../mp00307c_bis/proj4_thick_q5_r26f_i26.ppm.gz | Bin 0 -> 409 bytes
.../mp00307c_bis/proj4_thick_q5_r26h_i06.ppm.gz | Bin 0 -> 413 bytes
.../mp00307c_bis/proj4_thick_q5_r26h_i18.ppm.gz | Bin 0 -> 471 bytes
.../mp00307c_bis/proj4_thick_q5_r26h_i26.ppm.gz | Bin 0 -> 467 bytes
.../mp00307c_bis/proj4_thin_q4_r06f_i06.ppm.gz | Bin 0 -> 323 bytes
.../mp00307c_bis/proj4_thin_q4_r06f_i18.ppm.gz | Bin 0 -> 328 bytes
.../mp00307c_bis/proj4_thin_q4_r06f_i26.ppm.gz | Bin 0 -> 319 bytes
.../mp00307c_bis/proj4_thin_q4_r06h_i06.ppm.gz | Bin 0 -> 371 bytes
.../mp00307c_bis/proj4_thin_q4_r06h_i18.ppm.gz | Bin 0 -> 390 bytes
.../mp00307c_bis/proj4_thin_q4_r06h_i26.ppm.gz | Bin 0 -> 387 bytes
.../mp00307c_bis/proj4_thin_q4_r18f_i06.ppm.gz | Bin 0 -> 257 bytes
.../mp00307c_bis/proj4_thin_q4_r18f_i18.ppm.gz | Bin 0 -> 259 bytes
.../mp00307c_bis/proj4_thin_q4_r18f_i26.ppm.gz | Bin 0 -> 256 bytes
.../mp00307c_bis/proj4_thin_q4_r18h_i06.ppm.gz | Bin 0 -> 324 bytes
.../mp00307c_bis/proj4_thin_q4_r18h_i18.ppm.gz | Bin 0 -> 342 bytes
.../mp00307c_bis/proj4_thin_q4_r18h_i26.ppm.gz | Bin 0 -> 343 bytes
.../mp00307c_bis/proj4_thin_q4_r26f_i06.ppm.gz | Bin 0 -> 257 bytes
.../mp00307c_bis/proj4_thin_q4_r26f_i18.ppm.gz | Bin 0 -> 259 bytes
.../mp00307c_bis/proj4_thin_q4_r26f_i26.ppm.gz | Bin 0 -> 256 bytes
.../mp00307c_bis/proj4_thin_q4_r26h_i06.ppm.gz | Bin 0 -> 259 bytes
.../mp00307c_bis/proj4_thin_q4_r26h_i18.ppm.gz | Bin 0 -> 280 bytes
.../mp00307c_bis/proj4_thin_q4_r26h_i26.ppm.gz | Bin 0 -> 284 bytes
.../mp00307c_bis/proj4_thin_q5_r06f_i06.ppm.gz | Bin 0 -> 526 bytes
.../mp00307c_bis/proj4_thin_q5_r06f_i18.ppm.gz | Bin 0 -> 526 bytes
.../mp00307c_bis/proj4_thin_q5_r06f_i26.ppm.gz | Bin 0 -> 543 bytes
.../mp00307c_bis/proj4_thin_q5_r06h_i06.ppm.gz | Bin 0 -> 882 bytes
.../mp00307c_bis/proj4_thin_q5_r06h_i18.ppm.gz | Bin 0 -> 940 bytes
.../mp00307c_bis/proj4_thin_q5_r06h_i26.ppm.gz | Bin 0 -> 962 bytes
.../mp00307c_bis/proj4_thin_q5_r18f_i06.ppm.gz | Bin 0 -> 390 bytes
.../mp00307c_bis/proj4_thin_q5_r18f_i18.ppm.gz | Bin 0 -> 407 bytes
.../mp00307c_bis/proj4_thin_q5_r18f_i26.ppm.gz | Bin 0 -> 418 bytes
.../mp00307c_bis/proj4_thin_q5_r18h_i06.ppm.gz | Bin 0 -> 589 bytes
.../mp00307c_bis/proj4_thin_q5_r18h_i18.ppm.gz | Bin 0 -> 650 bytes
.../mp00307c_bis/proj4_thin_q5_r18h_i26.ppm.gz | Bin 0 -> 664 bytes
.../mp00307c_bis/proj4_thin_q5_r26f_i06.ppm.gz | Bin 0 -> 385 bytes
.../mp00307c_bis/proj4_thin_q5_r26f_i18.ppm.gz | Bin 0 -> 400 bytes
.../mp00307c_bis/proj4_thin_q5_r26f_i26.ppm.gz | Bin 0 -> 411 bytes
.../mp00307c_bis/proj4_thin_q5_r26h_i06.ppm.gz | Bin 0 -> 422 bytes
.../mp00307c_bis/proj4_thin_q5_r26h_i18.ppm.gz | Bin 0 -> 477 bytes
.../mp00307c_bis/proj4_thin_q5_r26h_i26.ppm.gz | Bin 0 -> 479 bytes
.../doc/labeling/mp00307c_bis/quant_q4.ppm.gz | Bin 0 -> 1890534 bytes
.../doc/labeling/mp00307c_bis/quant_q5.ppm.gz | Bin 0 -> 2929797 bytes
.../doc/labeling/mp00307c_bis/quant_q8.ppm.gz | Bin 0 -> 4951954 bytes
.../mp00307c_bis/stats3_all_q4_r06f.txt.gz | Bin 0 -> 535 bytes
.../mp00307c_bis/stats3_all_q4_r06h.txt.gz | Bin 0 -> 835 bytes
.../mp00307c_bis/stats3_all_q4_r18f.txt.gz | Bin 0 -> 234 bytes
.../mp00307c_bis/stats3_all_q4_r18h.txt.gz | Bin 0 -> 597 bytes
.../mp00307c_bis/stats3_all_q4_r26f.txt.gz | Bin 0 -> 234 bytes
.../mp00307c_bis/stats3_all_q4_r26h.txt.gz | Bin 0 -> 284 bytes
.../mp00307c_bis/stats3_all_q5_r06f.txt.gz | Bin 0 -> 855 bytes
.../mp00307c_bis/stats3_all_q5_r06h.txt.gz | Bin 0 -> 4374 bytes
.../mp00307c_bis/stats3_all_q5_r18f.txt.gz | Bin 0 -> 333 bytes
.../mp00307c_bis/stats3_all_q5_r18h.txt.gz | Bin 0 -> 1416 bytes
.../mp00307c_bis/stats3_all_q5_r26f.txt.gz | Bin 0 -> 333 bytes
.../mp00307c_bis/stats3_all_q5_r26h.txt.gz | Bin 0 -> 577 bytes
.../mp00307c_bis/stats3_thick_q4_r06f.txt.gz | Bin 0 -> 481 bytes
.../mp00307c_bis/stats3_thick_q4_r06h.txt.gz | Bin 0 -> 836 bytes
.../mp00307c_bis/stats3_thick_q4_r18f.txt.gz | Bin 0 -> 240 bytes
.../mp00307c_bis/stats3_thick_q4_r18h.txt.gz | Bin 0 -> 585 bytes
.../mp00307c_bis/stats3_thick_q4_r26f.txt.gz | Bin 0 -> 240 bytes
.../mp00307c_bis/stats3_thick_q4_r26h.txt.gz | Bin 0 -> 311 bytes
.../mp00307c_bis/stats3_thick_q5_r06f.txt.gz | Bin 0 -> 713 bytes
.../mp00307c_bis/stats3_thick_q5_r06h.txt.gz | Bin 0 -> 4004 bytes
.../mp00307c_bis/stats3_thick_q5_r18f.txt.gz | Bin 0 -> 381 bytes
.../mp00307c_bis/stats3_thick_q5_r18h.txt.gz | Bin 0 -> 1462 bytes
.../mp00307c_bis/stats3_thick_q5_r26f.txt.gz | Bin 0 -> 359 bytes
.../mp00307c_bis/stats3_thick_q5_r26h.txt.gz | Bin 0 -> 633 bytes
.../mp00307c_bis/stats3_thin_q4_r06f.txt.gz | Bin 0 -> 483 bytes
.../mp00307c_bis/stats3_thin_q4_r06h.txt.gz | Bin 0 -> 818 bytes
.../mp00307c_bis/stats3_thin_q4_r18f.txt.gz | Bin 0 -> 239 bytes
.../mp00307c_bis/stats3_thin_q4_r18h.txt.gz | Bin 0 -> 599 bytes
.../mp00307c_bis/stats3_thin_q4_r26f.txt.gz | Bin 0 -> 239 bytes
.../mp00307c_bis/stats3_thin_q4_r26h.txt.gz | Bin 0 -> 304 bytes
.../mp00307c_bis/stats3_thin_q5_r06f.txt.gz | Bin 0 -> 841 bytes
.../mp00307c_bis/stats3_thin_q5_r06h.txt.gz | Bin 0 -> 3791 bytes
.../mp00307c_bis/stats3_thin_q5_r18f.txt.gz | Bin 0 -> 359 bytes
.../mp00307c_bis/stats3_thin_q5_r18h.txt.gz | Bin 0 -> 1389 bytes
.../mp00307c_bis/stats3_thin_q5_r26f.txt.gz | Bin 0 -> 334 bytes
.../mp00307c_bis/stats3_thin_q5_r26h.txt.gz | Bin 0 -> 646 bytes
.../mp00307c_bis/stats4_all_q4_r06f_i06.txt.gz | Bin 0 -> 547 bytes
.../mp00307c_bis/stats4_all_q4_r06f_i18.txt.gz | Bin 0 -> 535 bytes
.../mp00307c_bis/stats4_all_q4_r06f_i26.txt.gz | Bin 0 -> 533 bytes
.../mp00307c_bis/stats4_all_q4_r06h_i06.txt.gz | Bin 0 -> 856 bytes
.../mp00307c_bis/stats4_all_q4_r06h_i18.txt.gz | Bin 0 -> 871 bytes
.../mp00307c_bis/stats4_all_q4_r06h_i26.txt.gz | Bin 0 -> 873 bytes
.../mp00307c_bis/stats4_all_q4_r18f_i06.txt.gz | Bin 0 -> 244 bytes
.../mp00307c_bis/stats4_all_q4_r18f_i18.txt.gz | Bin 0 -> 242 bytes
.../mp00307c_bis/stats4_all_q4_r18f_i26.txt.gz | Bin 0 -> 245 bytes
.../mp00307c_bis/stats4_all_q4_r18h_i06.txt.gz | Bin 0 -> 596 bytes
.../mp00307c_bis/stats4_all_q4_r18h_i18.txt.gz | Bin 0 -> 604 bytes
.../mp00307c_bis/stats4_all_q4_r18h_i26.txt.gz | Bin 0 -> 602 bytes
.../mp00307c_bis/stats4_all_q4_r26f_i06.txt.gz | Bin 0 -> 244 bytes
.../mp00307c_bis/stats4_all_q4_r26f_i18.txt.gz | Bin 0 -> 242 bytes
.../mp00307c_bis/stats4_all_q4_r26f_i26.txt.gz | Bin 0 -> 245 bytes
.../mp00307c_bis/stats4_all_q4_r26h_i06.txt.gz | Bin 0 -> 287 bytes
.../mp00307c_bis/stats4_all_q4_r26h_i18.txt.gz | Bin 0 -> 291 bytes
.../mp00307c_bis/stats4_all_q4_r26h_i26.txt.gz | Bin 0 -> 288 bytes
.../mp00307c_bis/stats4_all_q5_r06f_i06.txt.gz | Bin 0 -> 849 bytes
.../mp00307c_bis/stats4_all_q5_r06f_i18.txt.gz | Bin 0 -> 860 bytes
.../mp00307c_bis/stats4_all_q5_r06f_i26.txt.gz | Bin 0 -> 871 bytes
.../mp00307c_bis/stats4_all_q5_r06h_i06.txt.gz | Bin 0 -> 4673 bytes
.../mp00307c_bis/stats4_all_q5_r06h_i18.txt.gz | Bin 0 -> 4673 bytes
.../mp00307c_bis/stats4_all_q5_r06h_i26.txt.gz | Bin 0 -> 4673 bytes
.../mp00307c_bis/stats4_all_q5_r18f_i06.txt.gz | Bin 0 -> 341 bytes
.../mp00307c_bis/stats4_all_q5_r18f_i18.txt.gz | Bin 0 -> 339 bytes
.../mp00307c_bis/stats4_all_q5_r18f_i26.txt.gz | Bin 0 -> 340 bytes
.../mp00307c_bis/stats4_all_q5_r18h_i06.txt.gz | Bin 0 -> 1442 bytes
.../mp00307c_bis/stats4_all_q5_r18h_i18.txt.gz | Bin 0 -> 1473 bytes
.../mp00307c_bis/stats4_all_q5_r18h_i26.txt.gz | Bin 0 -> 1487 bytes
.../mp00307c_bis/stats4_all_q5_r26f_i06.txt.gz | Bin 0 -> 341 bytes
.../mp00307c_bis/stats4_all_q5_r26f_i18.txt.gz | Bin 0 -> 339 bytes
.../mp00307c_bis/stats4_all_q5_r26f_i26.txt.gz | Bin 0 -> 340 bytes
.../mp00307c_bis/stats4_all_q5_r26h_i06.txt.gz | Bin 0 -> 592 bytes
.../mp00307c_bis/stats4_all_q5_r26h_i18.txt.gz | Bin 0 -> 606 bytes
.../mp00307c_bis/stats4_all_q5_r26h_i26.txt.gz | Bin 0 -> 602 bytes
.../mp00307c_bis/stats4_thick_q4_r06f_i06.txt.gz | Bin 0 -> 495 bytes
.../mp00307c_bis/stats4_thick_q4_r06f_i18.txt.gz | Bin 0 -> 494 bytes
.../mp00307c_bis/stats4_thick_q4_r06f_i26.txt.gz | Bin 0 -> 489 bytes
.../mp00307c_bis/stats4_thick_q4_r06h_i06.txt.gz | Bin 0 -> 849 bytes
.../mp00307c_bis/stats4_thick_q4_r06h_i18.txt.gz | Bin 0 -> 871 bytes
.../mp00307c_bis/stats4_thick_q4_r06h_i26.txt.gz | Bin 0 -> 881 bytes
.../mp00307c_bis/stats4_thick_q4_r18f_i06.txt.gz | Bin 0 -> 248 bytes
.../mp00307c_bis/stats4_thick_q4_r18f_i18.txt.gz | Bin 0 -> 248 bytes
.../mp00307c_bis/stats4_thick_q4_r18f_i26.txt.gz | Bin 0 -> 246 bytes
.../mp00307c_bis/stats4_thick_q4_r18h_i06.txt.gz | Bin 0 -> 574 bytes
.../mp00307c_bis/stats4_thick_q4_r18h_i18.txt.gz | Bin 0 -> 596 bytes
.../mp00307c_bis/stats4_thick_q4_r18h_i26.txt.gz | Bin 0 -> 591 bytes
.../mp00307c_bis/stats4_thick_q4_r26f_i06.txt.gz | Bin 0 -> 248 bytes
.../mp00307c_bis/stats4_thick_q4_r26f_i18.txt.gz | Bin 0 -> 248 bytes
.../mp00307c_bis/stats4_thick_q4_r26f_i26.txt.gz | Bin 0 -> 246 bytes
.../mp00307c_bis/stats4_thick_q4_r26h_i06.txt.gz | Bin 0 -> 310 bytes
.../mp00307c_bis/stats4_thick_q4_r26h_i18.txt.gz | Bin 0 -> 316 bytes
.../mp00307c_bis/stats4_thick_q4_r26h_i26.txt.gz | Bin 0 -> 309 bytes
.../mp00307c_bis/stats4_thick_q5_r06f_i06.txt.gz | Bin 0 -> 710 bytes
.../mp00307c_bis/stats4_thick_q5_r06f_i18.txt.gz | Bin 0 -> 709 bytes
.../mp00307c_bis/stats4_thick_q5_r06f_i26.txt.gz | Bin 0 -> 716 bytes
.../mp00307c_bis/stats4_thick_q5_r06h_i06.txt.gz | Bin 0 -> 4279 bytes
.../mp00307c_bis/stats4_thick_q5_r06h_i18.txt.gz | Bin 0 -> 4449 bytes
.../mp00307c_bis/stats4_thick_q5_r06h_i26.txt.gz | Bin 0 -> 4477 bytes
.../mp00307c_bis/stats4_thick_q5_r18f_i06.txt.gz | Bin 0 -> 389 bytes
.../mp00307c_bis/stats4_thick_q5_r18f_i18.txt.gz | Bin 0 -> 384 bytes
.../mp00307c_bis/stats4_thick_q5_r18f_i26.txt.gz | Bin 0 -> 387 bytes
.../mp00307c_bis/stats4_thick_q5_r18h_i06.txt.gz | Bin 0 -> 1498 bytes
.../mp00307c_bis/stats4_thick_q5_r18h_i18.txt.gz | Bin 0 -> 1563 bytes
.../mp00307c_bis/stats4_thick_q5_r18h_i26.txt.gz | Bin 0 -> 1597 bytes
.../mp00307c_bis/stats4_thick_q5_r26f_i06.txt.gz | Bin 0 -> 365 bytes
.../mp00307c_bis/stats4_thick_q5_r26f_i18.txt.gz | Bin 0 -> 362 bytes
.../mp00307c_bis/stats4_thick_q5_r26f_i26.txt.gz | Bin 0 -> 362 bytes
.../mp00307c_bis/stats4_thick_q5_r26h_i06.txt.gz | Bin 0 -> 658 bytes
.../mp00307c_bis/stats4_thick_q5_r26h_i18.txt.gz | Bin 0 -> 680 bytes
.../mp00307c_bis/stats4_thick_q5_r26h_i26.txt.gz | Bin 0 -> 675 bytes
.../mp00307c_bis/stats4_thin_q4_r06f_i06.txt.gz | Bin 0 -> 499 bytes
.../mp00307c_bis/stats4_thin_q4_r06f_i18.txt.gz | Bin 0 -> 490 bytes
.../mp00307c_bis/stats4_thin_q4_r06f_i26.txt.gz | Bin 0 -> 490 bytes
.../mp00307c_bis/stats4_thin_q4_r06h_i06.txt.gz | Bin 0 -> 831 bytes
.../mp00307c_bis/stats4_thin_q4_r06h_i18.txt.gz | Bin 0 -> 828 bytes
.../mp00307c_bis/stats4_thin_q4_r06h_i26.txt.gz | Bin 0 -> 841 bytes
.../mp00307c_bis/stats4_thin_q4_r18f_i06.txt.gz | Bin 0 -> 247 bytes
.../mp00307c_bis/stats4_thin_q4_r18f_i18.txt.gz | Bin 0 -> 246 bytes
.../mp00307c_bis/stats4_thin_q4_r18f_i26.txt.gz | Bin 0 -> 245 bytes
.../mp00307c_bis/stats4_thin_q4_r18h_i06.txt.gz | Bin 0 -> 595 bytes
.../mp00307c_bis/stats4_thin_q4_r18h_i18.txt.gz | Bin 0 -> 605 bytes
.../mp00307c_bis/stats4_thin_q4_r18h_i26.txt.gz | Bin 0 -> 600 bytes
.../mp00307c_bis/stats4_thin_q4_r26f_i06.txt.gz | Bin 0 -> 247 bytes
.../mp00307c_bis/stats4_thin_q4_r26f_i18.txt.gz | Bin 0 -> 246 bytes
.../mp00307c_bis/stats4_thin_q4_r26f_i26.txt.gz | Bin 0 -> 245 bytes
.../mp00307c_bis/stats4_thin_q4_r26h_i06.txt.gz | Bin 0 -> 313 bytes
.../mp00307c_bis/stats4_thin_q4_r26h_i18.txt.gz | Bin 0 -> 308 bytes
.../mp00307c_bis/stats4_thin_q4_r26h_i26.txt.gz | Bin 0 -> 312 bytes
.../mp00307c_bis/stats4_thin_q5_r06f_i06.txt.gz | Bin 0 -> 841 bytes
.../mp00307c_bis/stats4_thin_q5_r06f_i18.txt.gz | Bin 0 -> 855 bytes
.../mp00307c_bis/stats4_thin_q5_r06f_i26.txt.gz | Bin 0 -> 845 bytes
.../mp00307c_bis/stats4_thin_q5_r06h_i06.txt.gz | Bin 0 -> 4067 bytes
.../mp00307c_bis/stats4_thin_q5_r06h_i18.txt.gz | Bin 0 -> 4198 bytes
.../mp00307c_bis/stats4_thin_q5_r06h_i26.txt.gz | Bin 0 -> 4235 bytes
.../mp00307c_bis/stats4_thin_q5_r18f_i06.txt.gz | Bin 0 -> 365 bytes
.../mp00307c_bis/stats4_thin_q5_r18f_i18.txt.gz | Bin 0 -> 362 bytes
.../mp00307c_bis/stats4_thin_q5_r18f_i26.txt.gz | Bin 0 -> 366 bytes
.../mp00307c_bis/stats4_thin_q5_r18h_i06.txt.gz | Bin 0 -> 1416 bytes
.../mp00307c_bis/stats4_thin_q5_r18h_i18.txt.gz | Bin 0 -> 1462 bytes
.../mp00307c_bis/stats4_thin_q5_r18h_i26.txt.gz | Bin 0 -> 1470 bytes
.../mp00307c_bis/stats4_thin_q5_r26f_i06.txt.gz | Bin 0 -> 342 bytes
.../mp00307c_bis/stats4_thin_q5_r26f_i18.txt.gz | Bin 0 -> 337 bytes
.../mp00307c_bis/stats4_thin_q5_r26f_i26.txt.gz | Bin 0 -> 342 bytes
.../mp00307c_bis/stats4_thin_q5_r26h_i06.txt.gz | Bin 0 -> 663 bytes
.../mp00307c_bis/stats4_thin_q5_r26h_i18.txt.gz | Bin 0 -> 667 bytes
.../mp00307c_bis/stats4_thin_q5_r26h_i26.txt.gz | Bin 0 -> 676 bytes
.../doc/labeling/mp00307c_bis/synthese.txt.gz | Bin 0 -> 4298 bytes
.../doc/labeling}/mp00411c/colormap_all_q4.txt.gz | Bin 187 -> 187 bytes
.../doc/labeling}/mp00411c/colormap_all_q5.txt.gz | Bin 420 -> 420 bytes
.../labeling}/mp00411c/colormap_thick_q4.txt.gz | Bin 159 -> 159 bytes
.../labeling}/mp00411c/colormap_thick_q5.txt.gz | Bin 352 -> 352 bytes
.../doc/labeling}/mp00411c/colormap_thin_q4.txt.gz | Bin 173 -> 173 bytes
.../doc/labeling}/mp00411c/colormap_thin_q5.txt.gz | Bin 366 -> 366 bytes
.../doc/labeling}/mp00411c/histo_all_q4.dump.gz | Bin 1233 -> 1233 bytes
.../doc/labeling}/mp00411c/histo_all_q5.dump.gz | Bin 4779 -> 4779 bytes
.../doc/labeling}/mp00411c/histo_thick_q4.dump.gz | Bin 781 -> 781 bytes
.../doc/labeling}/mp00411c/histo_thick_q5.dump.gz | Bin 2532 -> 2532 bytes
.../doc/labeling}/mp00411c/histo_thin_q4.dump.gz | Bin 901 -> 901 bytes
.../doc/labeling}/mp00411c/histo_thin_q5.dump.gz | Bin 2976 -> 2976 bytes
.../green/doc/labeling}/mp00411c/iz_all_q4.dump.gz | Bin 659040 -> 659040 bytes
.../green/doc/labeling}/mp00411c/iz_all_q5.dump.gz | Bin 1505619 -> 1505619 bytes
.../doc/labeling}/mp00411c/iz_thick_q4.dump.gz | Bin 482831 -> 482831 bytes
.../doc/labeling}/mp00411c/iz_thick_q5.dump.gz | Bin 1414258 -> 1414258 bytes
.../doc/labeling}/mp00411c/iz_thin_q4.dump.gz | Bin 647722 -> 647722 bytes
.../doc/labeling}/mp00411c/iz_thin_q5.dump.gz | Bin 1458415 -> 1458415 bytes
.../doc/labeling}/mp00411c/labeled_all_q4.dump.gz | Bin 149 -> 149 bytes
.../doc/labeling}/mp00411c/labeled_all_q5.dump.gz | Bin 343 -> 343 bytes
.../labeling}/mp00411c/labeled_thick_q4.dump.gz | Bin 149 -> 149 bytes
.../labeling}/mp00411c/labeled_thick_q5.dump.gz | Bin 309 -> 309 bytes
.../doc/labeling}/mp00411c/labeled_thin_q4.dump.gz | Bin 149 -> 149 bytes
.../doc/labeling}/mp00411c/labeled_thin_q5.dump.gz | Bin 308 -> 308 bytes
.../doc/labeling}/mp00411c/mean3_all_q4.ppm.gz | Bin 985276 -> 985276 bytes
.../doc/labeling}/mp00411c/mean3_all_q5.ppm.gz | Bin 1961577 -> 1961577 bytes
.../doc/labeling}/mp00411c/mean3_thick_q4.ppm.gz | Bin 865034 -> 865034 bytes
.../doc/labeling}/mp00411c/mean3_thick_q5.ppm.gz | Bin 1831699 -> 1831699 bytes
.../doc/labeling}/mp00411c/mean3_thin_q4.ppm.gz | Bin 958289 -> 958289 bytes
.../doc/labeling}/mp00411c/mean3_thin_q5.ppm.gz | Bin 1872271 -> 1872271 bytes
.../doc/labeling}/mp00411c/mean4_all_q4.ppm.gz | Bin 772605 -> 772605 bytes
.../doc/labeling}/mp00411c/mean4_all_q5.ppm.gz | Bin 1852455 -> 1852455 bytes
.../doc/labeling}/mp00411c/mean4_thick_q4.ppm.gz | Bin 559850 -> 559850 bytes
.../doc/labeling}/mp00411c/mean4_thick_q5.ppm.gz | Bin 1727247 -> 1727247 bytes
.../doc/labeling}/mp00411c/mean4_thin_q4.ppm.gz | Bin 760428 -> 760428 bytes
.../doc/labeling}/mp00411c/mean4_thin_q5.ppm.gz | Bin 1781495 -> 1781495 bytes
.../green/doc/labeling}/mp00411c/mp00411c.ppm.gz | Bin 5316204 -> 5316204 bytes
.../green/doc/labeling}/mp00411c/mp00411c.sh.gz | Bin 636 -> 636 bytes
.../doc/labeling}/mp00411c/mp00411c_thick.pbm.gz | Bin 190478 -> 190478 bytes
.../doc/labeling}/mp00411c/mp00411c_thin.pbm.gz | Bin 248730 -> 248730 bytes
.../doc/labeling}/mp00411c/opened_all_q4.dump.gz | Bin 1159 -> 1159 bytes
.../doc/labeling}/mp00411c/opened_all_q5.dump.gz | Bin 4531 -> 4531 bytes
.../doc/labeling}/mp00411c/opened_thick_q4.dump.gz | Bin 747 -> 747 bytes
.../doc/labeling}/mp00411c/opened_thick_q5.dump.gz | Bin 2351 -> 2351 bytes
.../doc/labeling}/mp00411c/opened_thin_q4.dump.gz | Bin 848 -> 848 bytes
.../doc/labeling}/mp00411c/opened_thin_q5.dump.gz | Bin 2772 -> 2772 bytes
.../doc/labeling}/mp00411c/proj1_all_q4.pgm.gz | Bin 343 -> 343 bytes
.../doc/labeling}/mp00411c/proj1_all_q5.pgm.gz | Bin 779 -> 779 bytes
.../doc/labeling}/mp00411c/proj1_thick_q4.pgm.gz | Bin 312 -> 312 bytes
.../doc/labeling}/mp00411c/proj1_thick_q5.pgm.gz | Bin 612 -> 612 bytes
.../doc/labeling}/mp00411c/proj1_thin_q4.pgm.gz | Bin 339 -> 339 bytes
.../doc/labeling}/mp00411c/proj1_thin_q5.pgm.gz | Bin 718 -> 718 bytes
.../doc/labeling}/mp00411c/proj2_all_q4.pgm.gz | Bin 338 -> 338 bytes
.../doc/labeling}/mp00411c/proj2_all_q5.pgm.gz | Bin 750 -> 750 bytes
.../doc/labeling}/mp00411c/proj2_thick_q4.pgm.gz | Bin 315 -> 315 bytes
.../doc/labeling}/mp00411c/proj2_thick_q5.pgm.gz | Bin 606 -> 606 bytes
.../doc/labeling}/mp00411c/proj2_thin_q4.pgm.gz | Bin 331 -> 331 bytes
.../doc/labeling}/mp00411c/proj2_thin_q5.pgm.gz | Bin 693 -> 693 bytes
.../doc/labeling}/mp00411c/proj3_all_q4.ppm.gz | Bin 230 -> 230 bytes
.../doc/labeling}/mp00411c/proj3_all_q5.ppm.gz | Bin 401 -> 401 bytes
.../doc/labeling}/mp00411c/proj3_thick_q4.ppm.gz | Bin 224 -> 224 bytes
.../doc/labeling}/mp00411c/proj3_thick_q5.ppm.gz | Bin 343 -> 343 bytes
.../doc/labeling}/mp00411c/proj3_thin_q4.ppm.gz | Bin 229 -> 229 bytes
.../doc/labeling}/mp00411c/proj3_thin_q5.ppm.gz | Bin 359 -> 359 bytes
.../doc/labeling}/mp00411c/proj4_all_q4.ppm.gz | Bin 252 -> 252 bytes
.../doc/labeling}/mp00411c/proj4_all_q5.ppm.gz | Bin 447 -> 447 bytes
.../doc/labeling}/mp00411c/proj4_thick_q4.ppm.gz | Bin 221 -> 221 bytes
.../doc/labeling}/mp00411c/proj4_thick_q5.ppm.gz | Bin 369 -> 369 bytes
.../doc/labeling}/mp00411c/proj4_thin_q4.ppm.gz | Bin 234 -> 234 bytes
.../doc/labeling}/mp00411c/proj4_thin_q5.ppm.gz | Bin 415 -> 415 bytes
.../green/doc/labeling}/mp00411c/quant_q4.ppm.gz | Bin 2590062 -> 2590062 bytes
.../green/doc/labeling}/mp00411c/quant_q5.ppm.gz | Bin 3775184 -> 3775184 bytes
.../doc/labeling}/mp00411c/stats3_all_q4.txt.gz | Bin 292 -> 292 bytes
.../doc/labeling}/mp00411c/stats3_all_q5.txt.gz | Bin 701 -> 701 bytes
.../doc/labeling}/mp00411c/stats3_thick_q4.txt.gz | Bin 244 -> 244 bytes
.../doc/labeling}/mp00411c/stats3_thick_q5.txt.gz | Bin 584 -> 584 bytes
.../doc/labeling}/mp00411c/stats3_thin_q4.txt.gz | Bin 262 -> 262 bytes
.../doc/labeling}/mp00411c/stats3_thin_q5.txt.gz | Bin 606 -> 606 bytes
.../doc/labeling}/mp00411c/stats4_all_q4.txt.gz | Bin 284 -> 284 bytes
.../doc/labeling}/mp00411c/stats4_all_q5.txt.gz | Bin 704 -> 704 bytes
.../doc/labeling}/mp00411c/stats4_thick_q4.txt.gz | Bin 234 -> 234 bytes
.../doc/labeling}/mp00411c/stats4_thick_q5.txt.gz | Bin 580 -> 580 bytes
.../doc/labeling}/mp00411c/stats4_thin_q4.txt.gz | Bin 255 -> 255 bytes
.../doc/labeling}/mp00411c/stats4_thin_q5.txt.gz | Bin 591 -> 591 bytes
.../green/doc/labeling}/mp00411c/synthese.txt.gz | Bin 4062 -> 4062 bytes
.../green/doc/labeling/ta00031c/ta00031c.ppm.gz | Bin 0 -> 4517352 bytes
.../doc/labeling/ta00031c/ta00031c_thick.pbm.gz | Bin 0 -> 127662 bytes
.../doc/labeling/ta00031c/ta00031c_thin.pbm.gz | Bin 0 -> 161402 bytes
.../green/doc/labeling/ta00083c/ta00083c.ppm.gz | Bin 0 -> 5542240 bytes
.../doc/labeling/ta00083c/ta00083c_thick.pbm.gz | Bin 0 -> 168946 bytes
.../doc/labeling/ta00083c/ta00083c_thin.pbm.gz | Bin 0 -> 225983 bytes
.../sandbox/green/doc/quick_tour/quick_tour.tex | 0
.../green/exp/annotating/achromastism/Makefile.am | 153 ++
.../exp/annotating/achromastism/achromastism.cc | 179 +++
.../exp/annotating/achromastism/text-color.txt | 0
.../green/exp/annotating/achromastism/text-img.txt | 0
.../exp/annotating/achromastism/text-only.txt | 0
.../sandbox/green/exp/annotating/bench/Makefile.am | 153 ++
scribo/sandbox/green/exp/annotating/bench/bench.cc | 1450 ++++++++++++++++++++
.../sandbox/green/exp/annotating/error/Makefile.am | 153 ++
scribo/sandbox/green/exp/annotating/error/error.cc | 833 +++++++++++
.../sandbox/green/exp/annotating/histo/Makefile.am | 153 ++
scribo/sandbox/green/exp/annotating/histo/histo.cc | 366 +++++
.../sandbox/green/exp/annotating/hsv/Makefile.am | 153 ++
scribo/sandbox/green/exp/annotating/hsv/hsv.cc | 912 ++++++++++++
.../sandbox/green/exp/annotating/hue/Makefile.am | 153 ++
scribo/sandbox/green/exp/annotating/hue/hue.cc | 402 ++++++
.../green/exp/annotating/hue}/text-color.txt | 0
.../sandbox/green/exp/annotating/hue}/text-img.txt | 0
.../green/exp/annotating/hue}/text-only.txt | 0
.../green/exp/annotating/nb_color/Makefile.am | 153 ++
.../green/exp/annotating/nb_color/nb_color.cc | 171 +++
.../green/exp/annotating/saturation/Makefile.am | 153 ++
.../green/exp/annotating/saturation/saturation.cc | 175 +++
.../exp/annotating/saturation}/text-color.txt | 0
.../green/exp/annotating/saturation}/text-img.txt | 0
.../green/exp/annotating/saturation}/text-only.txt | 0
.../green/exp/annotating/stddev_color/Makefile.am | 153 ++
.../exp/annotating/stddev_color/stddev_color.cc | 216 +++
.../exp/annotating/stddev_color_16/Makefile.am | 153 ++
.../annotating/stddev_color_16/stddev_color_16.cc | 277 ++++
.../sandbox/green/exp/annotating/value/Makefile.am | 153 ++
.../green/exp/annotating/value}/text-color.txt | 0
.../green/exp/annotating/value}/text-img.txt | 0
.../green/exp/annotating/value}/text-only.txt | 0
scribo/sandbox/green/exp/annotating/value/value.cc | 468 +++++++
.../sandbox/green/exp/regional_maxima/Makefile.am | 153 ++
.../green/exp/regional_maxima/regional_maxima.cc | 196 +++
.../green/exp}/regional_maxima/thresholds.txt | 0
scribo/sandbox/green/mln/clustering/kmean2d.hh | 4 +-
scribo/sandbox/green/mln/display/display_histo.hh | 149 ++-
scribo/sandbox/green/mln/display/project_histo.hh | 178 +++-
scribo/sandbox/green/mln/fun/p2b/achromatic.hh | 20 +-
.../sandbox/green/mln/fun/v2v/hue_concentration.hh | 10 +
.../green/mln/fun/v2v/rgb_to_achromatism_map.hh | 5 +
scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh | 15 +-
.../sandbox/green/tools/labeling/histo/Makefile.am | 153 ++
scribo/sandbox/green/tools/labeling/histo/histo.cc | 204 +++
scribo/sandbox/green/tools/labeling/iz/Makefile.am | 153 ++
scribo/sandbox/green/tools/labeling/iz/iz.cc | 495 +++++++
.../green/tools/labeling/opening/Makefile.am | 153 ++
.../green/tools/labeling/opening/opening.cc | 174 +++
.../green/tools/labeling/regmax/Makefile.am | 153 ++
.../sandbox/green/tools/labeling/regmax/regmax.cc | 428 ++++++
.../histo1d => display/display_histo}/Makefile.am | 0
.../use/display/display_histo/display_histo.cc | 86 ++
1032 files changed, 14401 insertions(+), 68 deletions(-)
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/bic}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/bic/bic.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/hsv}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/hsv/hsv.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/lep}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/lep/lep.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/nb_color}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/nb_color/nb_color.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/project}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/project/project.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/rgb_64}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/rgb_64/rgb_64.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/rgb_64_9}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/rgb_64_9/rgb_64_9.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/stddev_color}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/stddev_color/stddev_color.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/stddev_color_16}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/stddev_color_16/stddev_color_16.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => labeling/regional_maxima}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/labeling/regional_maxima/regional_maxima.cc
copy {milena => scribo}/sandbox/green/demo/labeling/regional_maxima/thresholds.txt (100%)
copy scribo/sandbox/green/demo/{clustering/kmean1d => labeling/watershed}/Makefile.am (100%)
copy {milena/sandbox/green/tests/accu/stat/histo1d => scribo/sandbox/green/demo/labeling/watershed}/gaussian.sh (100%)
create mode 100644 scribo/sandbox/green/demo/labeling/watershed/watershed.cc
copy {milena => scribo}/sandbox/green/doc/annotating/class.txt (100%)
copy {milena => scribo}/sandbox/green/doc/annotating/syntheseMillet2008.txt (100%)
copy {milena => scribo}/sandbox/green/doc/annotating/testMillet2008 (100%)
copy {milena => scribo}/sandbox/green/doc/examples/accu_color/accu_color.cc (100%)
copy {milena => scribo}/sandbox/green/doc/examples/frac/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/frac/frac.cc (100%)
copy {milena => scribo}/sandbox/green/doc/examples/frac/frac.hh (100%)
copy {milena => scribo}/sandbox/green/doc/examples/frac/gcd.hh (100%)
copy {milena => scribo}/sandbox/green/doc/examples/frac/sign_prod.hh (100%)
copy {milena => scribo}/sandbox/green/doc/examples/hello_milena/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/hello_milena/hello_milena.cc (100%)
copy {milena/sandbox/green/doc/examples/hello_milena => scribo/sandbox/green/doc/examples/hello_world}/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/hello_world/hello_world.cc (100%)
copy {milena => scribo}/sandbox/green/doc/examples/hello_world/print.cc (100%)
copy {milena => scribo}/sandbox/green/doc/examples/io/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/io/io.cc (100%)
copy {milena/sandbox/green/doc/examples/hello_milena => scribo/sandbox/green/doc/examples/learn_milena}/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/learn_milena/learn_milena.cc (100%)
copy {milena/sandbox/green/doc/examples/hello_milena => scribo/sandbox/green/doc/examples/otsu}/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/otsu/otsu.cc (100%)
copy {milena/sandbox/green/doc/examples/hello_milena => scribo/sandbox/green/doc/examples/stats}/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/doc/examples/stats/stats.cc (100%)
copy {milena => scribo}/sandbox/green/doc/formulae/formulae.tex (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h0_input.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h2_mean.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h2_merge.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h3_mean.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h3_merge.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h4_mean.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h4_merge.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h5_mean.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/h5_merge.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/i2_mean.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/i2_merge.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/i3_mean.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/i3_merge.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/i4_mean.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/i4_merge.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/i5_mean.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/i5_merge.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/l2_input.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/l3_input.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/l4_input.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_method/l5_input.pgm.gz (100%)
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_method/reponse_theo.eml.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_method/s2_histo.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_method/s3_histo.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_method/s4_histo.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_method/s5_histo.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_method/synthese.txt.gz
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h0_input.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_mean_q2.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_mean_q3.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_mean_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_mean_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_mean_q6.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_mean_q7.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_mean_q8.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_merge_q2.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_merge_q3.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_merge_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_merge_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_merge_q6.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_merge_q7.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/h5_merge_q8.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_mean_q2.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_mean_q3.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_mean_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_mean_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_mean_q6.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_mean_q7.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_mean_q8.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_merge_q2.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_merge_q3.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_merge_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_merge_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_merge_q6.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_merge_q7.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/i5_merge_q8.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/l5_input_q2.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/l5_input_q3.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/l5_input_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/l5_input_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/l5_input_q6.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/l5_input_q7.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/cmp_quant/l5_input_q8.pgm.gz (100%)
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_quant/s5_histo_q2.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_quant/s5_histo_q3.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_quant/s5_histo_q4.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_quant/s5_histo_q5.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_quant/s5_histo_q6.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_quant/s5_histo_q7.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_quant/s5_histo_q8.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/cmp_quant/synthese.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/histo_all.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/histo_thick.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/histo_thin.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/labeled_all.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/labeled_thick.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/labeled_thin.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/mean_all.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/mean_thick.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/mean_thin.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/mp00042c.ppm.gz
create mode 100755 scribo/sandbox/green/doc/labeling/mp00042c/mp00042c.sh.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/mp00042c_thick.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/mp00042c_thin.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/opened_all.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/opened_thick.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/opened_thin.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/pal_all.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/pal_thick.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/pal_thin.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj1.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj2.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj2_all.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj2_thick.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj2_thin.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj3.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj3_all.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj3_thick.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj3_thin.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj_all.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj_thick.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/proj_thin.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00042c/quant.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00215c/mp00215c.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00215c/mp00215c_thick.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00215c/mp00215c_thin.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00234c/mp00234c.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00234c/mp00234c_thick.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00234c/mp00234c_thin.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00248c/mp00248c.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00248c/mp00248c_thick.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00248c/mp00248c_thin.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/colormap_all.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/colormap_thick.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/colormap_thin.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/histo_all.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/histo_thick.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/histo_thin.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/iz_all.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/iz_thick.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/iz_thin.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/labeled_all.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/labeled_thick.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/labeled_thin.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mean3_all.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mean3_thick.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mean3_thin.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mean4_all.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mean4_thick.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mean4_thin.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mp00307c.ppm.gz
create mode 100755 scribo/sandbox/green/doc/labeling/mp00307c/mp00307c.sh.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mp00307c_thick.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/mp00307c_thin.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/opened_all.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/opened_thick.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/opened_thin.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj1_all.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj1_all.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj1_thick.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj1_thick.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj1_thin.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj1_thin.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj2_all.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj2_all.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj2_thick.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj2_thick.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj2_thin.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj2_thin.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj3_all.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj3_thick.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj3_thin.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj4_all.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj4_thick.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/proj4_thin.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/quant.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/stats3_all.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/stats3_thick.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/stats3_thin.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/stats4_all.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/stats4_thick.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/stats4_thin.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c/synthese.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q4_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q4_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q4_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q4_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q4_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q4_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q5_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q5_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q5_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q5_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q5_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_all_q5_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q4_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q4_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q4_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q4_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q4_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q4_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q5_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q5_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q5_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q5_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q5_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thick_q5_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q4_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q4_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q4_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q4_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q4_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q4_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q5_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q5_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q5_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q5_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q5_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/colormap_thin_q5_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_all_q4.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_all_q5.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_all_q8.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_thick_q4.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_thick_q5.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_thick_q8.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_thin_q4.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_thin_q5.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/histo_thin_q8.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r06f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r06f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r06f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r06h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r06h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r06h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r18f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r18f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r18f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r18h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r18h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r18h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r26f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r26f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r26f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r26h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r26h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q4_r26h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r06f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r06f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r06f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r06h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r06h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r06h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r18f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r18f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r18f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r18h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r18h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r18h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r26f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r26f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r26f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r26h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r26h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_all_q5_r26h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r06f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r06f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r06f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r06h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r06h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r06h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r18f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r18f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r18f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r18h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r18h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r18h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r26f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r26f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r26f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r26h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r26h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q4_r26h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r06f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r06f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r06f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r06h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r06h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r06h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r18f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r18f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r18f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r18h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r18h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r18h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r26f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r26f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r26f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r26h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r26h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thick_q5_r26h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r06f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r06f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r06f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r06h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r06h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r06h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r18f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r18f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r18f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r18h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r18h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r18h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r26f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r26f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r26f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r26h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r26h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q4_r26h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r06f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r06f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r06f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r06h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r06h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r06h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r18f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r18f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r18f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r18h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r18h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r18h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r26f_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r26f_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r26f_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r26h_i06.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r26h_i18.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/iz_thin_q5_r26h_i26.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q4_r06f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q4_r06h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q4_r18f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q4_r18h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q4_r26f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q4_r26h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q5_r06f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q5_r06h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q5_r18f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q5_r18h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q5_r26f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_all_q5_r26h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q4_r06f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q4_r06h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q4_r18f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q4_r18h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q4_r26f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q4_r26h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q5_r06f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q5_r06h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q5_r18f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q5_r18h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q5_r26f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thick_q5_r26h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q4_r06f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q4_r06h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q4_r18f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q4_r18h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q4_r26f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q4_r26h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q5_r06f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q5_r06h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q5_r18f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q5_r18h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q5_r26f.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/labeled_thin_q5_r26h.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q4_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q4_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q4_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q4_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q4_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q4_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q5_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q5_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q5_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q5_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q5_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_all_q5_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q4_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q4_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q4_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q4_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q4_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q4_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q5_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q5_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q5_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q5_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q5_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thick_q5_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q4_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q4_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q4_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q4_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q4_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q4_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q5_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q5_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q5_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q5_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q5_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean3_thin_q5_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q4_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_all_q5_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q4_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thick_q5_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q4_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mean4_thin_q5_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mp00307c.ppm.gz
create mode 100755 scribo/sandbox/green/doc/labeling/mp00307c_bis/mp00307c.sh.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mp00307c_thick.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/mp00307c_thin.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_all_q4.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_all_q5.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_all_q8.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_thick_q4.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_thick_q5.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_thick_q8.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_thin_q4.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_thin_q5.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/opened_thin_q8.dump.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_all_q4.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_all_q4.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_all_q5.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_all_q5.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_all_q8.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_all_q8.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thick_q4.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thick_q4.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thick_q5.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thick_q5.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thick_q8.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thick_q8.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thin_q4.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thin_q4.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thin_q5.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thin_q5.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thin_q8.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj1_thin_q8.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_all_q4.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_all_q4.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_all_q5.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_all_q5.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_all_q8.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_all_q8.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thick_q4.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thick_q4.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thick_q5.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thick_q5.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thick_q8.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thick_q8.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thin_q4.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thin_q4.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thin_q5.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thin_q5.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thin_q8.pgm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj2_thin_q8.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q4_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q4_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q4_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q4_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q4_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q4_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q5_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q5_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q5_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q5_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q5_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_all_q5_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q4_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q4_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q4_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q4_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q4_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q4_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q5_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q5_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q5_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q5_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q5_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thick_q5_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q4_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q4_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q4_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q4_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q4_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q4_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q5_r06f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q5_r06h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q5_r18f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q5_r18h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q5_r26f.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj3_thin_q5_r26h.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q4_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_all_q5_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q4_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thick_q5_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q4_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r06f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r06f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r06f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r06h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r06h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r06h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r18f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r18f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r18f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r18h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r18h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r18h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r26f_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r26f_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r26f_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r26h_i06.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r26h_i18.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/proj4_thin_q5_r26h_i26.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/quant_q4.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/quant_q5.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/quant_q8.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q4_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q4_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q4_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q4_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q4_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q4_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q5_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q5_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q5_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q5_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q5_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_all_q5_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q4_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q4_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q4_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q4_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q4_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q4_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q5_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q5_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q5_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q5_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q5_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thick_q5_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q4_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q4_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q4_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q4_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q4_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q4_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q5_r06f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q5_r06h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q5_r18f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q5_r18h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q5_r26f.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats3_thin_q5_r26h.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r06f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r06f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r06f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r06h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r06h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r06h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r18f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r18f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r18f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r18h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r18h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r18h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r26f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r26f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r26f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r26h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r26h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q4_r26h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r06f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r06f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r06f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r06h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r06h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r06h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r18f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r18f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r18f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r18h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r18h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r18h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r26f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r26f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r26f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r26h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r26h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_all_q5_r26h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r06f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r06f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r06f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r06h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r06h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r06h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r18f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r18f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r18f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r18h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r18h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r18h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r26f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r26f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r26f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r26h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r26h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q4_r26h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r06f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r06f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r06f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r06h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r06h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r06h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r18f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r18f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r18f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r18h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r18h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r18h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r26f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r26f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r26f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r26h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r26h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thick_q5_r26h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r06f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r06f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r06f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r06h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r06h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r06h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r18f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r18f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r18f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r18h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r18h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r18h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r26f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r26f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r26f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r26h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r26h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q4_r26h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r06f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r06f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r06f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r06h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r06h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r06h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r18f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r18f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r18f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r18h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r18h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r18h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r26f_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r26f_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r26f_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r26h_i06.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r26h_i18.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/stats4_thin_q5_r26h_i26.txt.gz
create mode 100644 scribo/sandbox/green/doc/labeling/mp00307c_bis/synthese.txt.gz
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/colormap_all_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/colormap_all_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/colormap_thick_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/colormap_thick_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/colormap_thin_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/colormap_thin_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/histo_all_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/histo_all_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/histo_thick_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/histo_thick_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/histo_thin_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/histo_thin_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/iz_all_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/iz_all_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/iz_thick_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/iz_thick_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/iz_thin_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/iz_thin_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/labeled_all_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/labeled_all_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/labeled_thick_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/labeled_thick_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/labeled_thin_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/labeled_thin_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean3_all_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean3_all_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean3_thick_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean3_thick_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean3_thin_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean3_thin_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean4_all_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean4_all_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean4_thick_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean4_thick_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean4_thin_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mean4_thin_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mp00411c.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mp00411c.sh.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mp00411c_thick.pbm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/mp00411c_thin.pbm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/opened_all_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/opened_all_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/opened_thick_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/opened_thick_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/opened_thin_q4.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/opened_thin_q5.dump.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj1_all_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj1_all_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj1_thick_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj1_thick_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj1_thin_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj1_thin_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj2_all_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj2_all_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj2_thick_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj2_thick_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj2_thin_q4.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj2_thin_q5.pgm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj3_all_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj3_all_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj3_thick_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj3_thick_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj3_thin_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj3_thin_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj4_all_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj4_all_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj4_thick_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj4_thick_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj4_thin_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/proj4_thin_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/quant_q4.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/quant_q5.ppm.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats3_all_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats3_all_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats3_thick_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats3_thick_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats3_thin_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats3_thin_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats4_all_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats4_all_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats4_thick_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats4_thick_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats4_thin_q4.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/stats4_thin_q5.txt.gz (100%)
copy {milena/sandbox/green/doc/regional_maxima => scribo/sandbox/green/doc/labeling}/mp00411c/synthese.txt.gz (100%)
create mode 100644 scribo/sandbox/green/doc/labeling/ta00031c/ta00031c.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/ta00031c/ta00031c_thick.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/ta00031c/ta00031c_thin.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/ta00083c/ta00083c.ppm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/ta00083c/ta00083c_thick.pbm.gz
create mode 100644 scribo/sandbox/green/doc/labeling/ta00083c/ta00083c_thin.pbm.gz
copy {milena => scribo}/sandbox/green/doc/quick_tour/quick_tour.tex (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/achromastism/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/achromastism/achromastism.cc
copy {milena => scribo}/sandbox/green/exp/annotating/achromastism/text-color.txt (100%)
copy {milena => scribo}/sandbox/green/exp/annotating/achromastism/text-img.txt (100%)
copy {milena => scribo}/sandbox/green/exp/annotating/achromastism/text-only.txt (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/bench/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/bench/bench.cc
create mode 100644 scribo/sandbox/green/exp/annotating/error/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/error/error.cc
create mode 100644 scribo/sandbox/green/exp/annotating/histo/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/histo/histo.cc
create mode 100644 scribo/sandbox/green/exp/annotating/hsv/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/hsv/hsv.cc
create mode 100644 scribo/sandbox/green/exp/annotating/hue/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/hue/hue.cc
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/hue}/text-color.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/hue}/text-img.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/hue}/text-only.txt (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/nb_color/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/nb_color/nb_color.cc
create mode 100644 scribo/sandbox/green/exp/annotating/saturation/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/saturation/saturation.cc
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/saturation}/text-color.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/saturation}/text-img.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/saturation}/text-only.txt (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/stddev_color/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/stddev_color/stddev_color.cc
create mode 100644 scribo/sandbox/green/exp/annotating/stddev_color_16/Makefile.am
create mode 100644 scribo/sandbox/green/exp/annotating/stddev_color_16/stddev_color_16.cc
create mode 100644 scribo/sandbox/green/exp/annotating/value/Makefile.am
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/value}/text-color.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/value}/text-img.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/value}/text-only.txt (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/value/value.cc
create mode 100644 scribo/sandbox/green/exp/regional_maxima/Makefile.am
create mode 100644 scribo/sandbox/green/exp/regional_maxima/regional_maxima.cc
copy {milena/sandbox/green/demo/labeling => scribo/sandbox/green/exp}/regional_maxima/thresholds.txt (100%)
create mode 100644 scribo/sandbox/green/tools/labeling/histo/Makefile.am
create mode 100644 scribo/sandbox/green/tools/labeling/histo/histo.cc
create mode 100644 scribo/sandbox/green/tools/labeling/iz/Makefile.am
create mode 100644 scribo/sandbox/green/tools/labeling/iz/iz.cc
create mode 100644 scribo/sandbox/green/tools/labeling/opening/Makefile.am
create mode 100644 scribo/sandbox/green/tools/labeling/opening/opening.cc
create mode 100644 scribo/sandbox/green/tools/labeling/regmax/Makefile.am
create mode 100644 scribo/sandbox/green/tools/labeling/regmax/regmax.cc
copy scribo/sandbox/green/use/{accu/stat/histo1d => display/display_histo}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/use/display/display_histo/display_histo.cc
hooks/post-receive
--
Olena, a generic and efficient image processing platform
1
0

last-svn-commit-50-gf23ea9c Import annotating sources from milena green's sandbox.
by Yann Jacquelet 08 Sep '10
by Yann Jacquelet 08 Sep '10
08 Sep '10
* README.green: New.
* demo/annotating/bic/Makefile.am: New.
* demo/annotating/bic/bic.cc: New.
* demo/annotating/hsv/Makefile.am: New.
* demo/annotating/hsv/hsv.cc: New.
* demo/annotating/lep/Makefile.am: New.
* demo/annotating/lep/lep.cc: New.
* demo/annotating/nb_color/Makefile.am: New.
* demo/annotating/nb_color/nb_color.cc: New.
* demo/annotating/project/Makefile.am: New.
* demo/annotating/project/project.cc: New.
* demo/annotating/rgb_64/Makefile.am: New.
* demo/annotating/rgb_64/rgb_64.cc: New.
* demo/annotating/rgb_64_9/Makefile.am: New.
* demo/annotating/rgb_64_9/rgb_64_9.cc: New.
* demo/annotating/stddev_color/Makefile.am: New.
* demo/annotating/stddev_color/stddev_color.cc: New.
* demo/annotating/stddev_color_16/Makefile.am: New.
* demo/annotating/stddev_color_16/stddev_color_16.cc: New.
* exp/annotating/achromastism/Makefile.am: New.
* exp/annotating/achromastism/achromastism.cc: New.
* exp/annotating/achromastism/text-color.txt: New.
* exp/annotating/achromastism/text-img.txt: New.
* exp/annotating/achromastism/text-only.txt: New.
* exp/annotating/bench/Makefile.am: New.
* exp/annotating/bench/bench.cc: New.
* exp/annotating/error/Makefile.am: New.
* exp/annotating/error/error.cc: New.
* exp/annotating/histo/Makefile.am: New.
* exp/annotating/histo/histo.cc: New.
* exp/annotating/hsv/Makefile.am: New.
* exp/annotating/hsv/hsv.cc: New.
* exp/annotating/hue/Makefile.am: New.
* exp/annotating/hue/hue.cc: New.
* exp/annotating/hue/text-color.txt: New.
* exp/annotating/hue/text-img.txt: New.
* exp/annotating/hue/text-only.txt: New.
* exp/annotating/nb_color/Makefile.am: New.
* exp/annotating/nb_color/nb_color.cc: New.
* exp/annotating/saturation/Makefile.am: New.
* exp/annotating/saturation/saturation.cc: New.
* exp/annotating/saturation/text-color.txt: New.
* exp/annotating/saturation/text-img.txt: New.
* exp/annotating/saturation/text-only.txt: New.
* exp/annotating/stddev_color/Makefile.am: New.
* exp/annotating/stddev_color/stddev_color.cc: New.
* exp/annotating/stddev_color_16/Makefile.am: New.
* exp/annotating/stddev_color_16/stddev_color_16.cc: New.
* exp/annotating/value/Makefile.am: New.
* exp/annotating/value/text-color.txt: New.
* exp/annotating/value/text-img.txt: New.
* exp/annotating/value/text-only.txt: New.
* exp/annotating/value/value.cc: New.
* mln/clustering/kmean2d.hh: New.
* mln/fun/p2b/achromatic.hh: New.
* mln/fun/v2v/hue_concentration.hh: New.
* mln/fun/v2v/rgb_to_achromatism_map.hh: New.
* mln/fun/v2v/rgb_to_hsv.hh: New.
---
scribo/sandbox/green/ChangeLog | 64 +
scribo/sandbox/green/README.green | 507 +++++++-
.../kmean1d => annotating/bic}/Makefile.am | 0
scribo/sandbox/green/demo/annotating/bic/bic.cc | 122 ++
.../kmean1d => annotating/hsv}/Makefile.am | 0
scribo/sandbox/green/demo/annotating/hsv/hsv.cc | 721 ++++++++++
.../kmean1d => annotating/lep}/Makefile.am | 0
scribo/sandbox/green/demo/annotating/lep/lep.cc | 127 ++
.../kmean1d => annotating/nb_color}/Makefile.am | 0
.../green/demo/annotating/nb_color/nb_color.cc | 143 ++
.../kmean1d => annotating/project}/Makefile.am | 0
.../green/demo/annotating/project/project.cc | 275 ++++
.../kmean1d => annotating/rgb_64}/Makefile.am | 0
.../sandbox/green/demo/annotating/rgb_64/rgb_64.cc | 80 ++
.../kmean1d => annotating/rgb_64_9}/Makefile.am | 0
.../green/demo/annotating/rgb_64_9/rgb_64_9.cc | 132 ++
.../stddev_color}/Makefile.am | 0
.../demo/annotating/stddev_color/stddev_color.cc | 191 +++
.../stddev_color_16}/Makefile.am | 0
.../annotating/stddev_color_16/stddev_color_16.cc | 261 ++++
.../achromastism}/Makefile.am | 0
.../exp/annotating/achromastism/achromastism.cc | 179 +++
.../exp/annotating/achromastism/text-color.txt | 0
.../green/exp/annotating/achromastism/text-img.txt | 0
.../exp/annotating/achromastism/text-only.txt | 0
.../bench}/Makefile.am | 0
scribo/sandbox/green/exp/annotating/bench/bench.cc | 1450 ++++++++++++++++++++
.../error}/Makefile.am | 0
scribo/sandbox/green/exp/annotating/error/error.cc | 833 +++++++++++
.../histo}/Makefile.am | 0
scribo/sandbox/green/exp/annotating/histo/histo.cc | 366 +++++
.../hsv}/Makefile.am | 0
scribo/sandbox/green/exp/annotating/hsv/hsv.cc | 912 ++++++++++++
.../hue}/Makefile.am | 0
scribo/sandbox/green/exp/annotating/hue/hue.cc | 402 ++++++
.../green/exp/annotating/hue}/text-color.txt | 0
.../sandbox/green/exp/annotating/hue}/text-img.txt | 0
.../green/exp/annotating/hue}/text-only.txt | 0
.../nb_color}/Makefile.am | 0
.../green/exp/annotating/nb_color/nb_color.cc | 171 +++
.../saturation}/Makefile.am | 0
.../green/exp/annotating/saturation/saturation.cc | 175 +++
.../exp/annotating/saturation}/text-color.txt | 0
.../green/exp/annotating/saturation}/text-img.txt | 0
.../green/exp/annotating/saturation}/text-only.txt | 0
.../stddev_color}/Makefile.am | 0
.../exp/annotating/stddev_color/stddev_color.cc | 216 +++
.../stddev_color_16}/Makefile.am | 0
.../annotating/stddev_color_16/stddev_color_16.cc | 277 ++++
.../value}/Makefile.am | 0
.../green/exp/annotating/value}/text-color.txt | 0
.../green/exp/annotating/value}/text-img.txt | 0
.../green/exp/annotating/value}/text-only.txt | 0
scribo/sandbox/green/exp/annotating/value/value.cc | 468 +++++++
scribo/sandbox/green/mln/clustering/kmean2d.hh | 4 +-
scribo/sandbox/green/mln/fun/p2b/achromatic.hh | 20 +-
.../sandbox/green/mln/fun/v2v/hue_concentration.hh | 10 +
.../green/mln/fun/v2v/rgb_to_achromatism_map.hh | 5 +
scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh | 15 +-
59 files changed, 8105 insertions(+), 21 deletions(-)
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/bic}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/bic/bic.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/hsv}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/hsv/hsv.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/lep}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/lep/lep.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/nb_color}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/nb_color/nb_color.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/project}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/project/project.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/rgb_64}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/rgb_64/rgb_64.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/rgb_64_9}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/rgb_64_9/rgb_64_9.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/stddev_color}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/stddev_color/stddev_color.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/stddev_color_16}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/stddev_color_16/stddev_color_16.cc
copy scribo/sandbox/green/exp/{regional_maxima => annotating/achromastism}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/achromastism/achromastism.cc
copy {milena => scribo}/sandbox/green/exp/annotating/achromastism/text-color.txt (100%)
copy {milena => scribo}/sandbox/green/exp/annotating/achromastism/text-img.txt (100%)
copy {milena => scribo}/sandbox/green/exp/annotating/achromastism/text-only.txt (100%)
copy scribo/sandbox/green/exp/{regional_maxima => annotating/bench}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/bench/bench.cc
copy scribo/sandbox/green/exp/{regional_maxima => annotating/error}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/error/error.cc
copy scribo/sandbox/green/exp/{regional_maxima => annotating/histo}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/histo/histo.cc
copy scribo/sandbox/green/exp/{regional_maxima => annotating/hsv}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/hsv/hsv.cc
copy scribo/sandbox/green/exp/{regional_maxima => annotating/hue}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/hue/hue.cc
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/hue}/text-color.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/hue}/text-img.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/hue}/text-only.txt (100%)
copy scribo/sandbox/green/exp/{regional_maxima => annotating/nb_color}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/nb_color/nb_color.cc
copy scribo/sandbox/green/exp/{regional_maxima => annotating/saturation}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/saturation/saturation.cc
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/saturation}/text-color.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/saturation}/text-img.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/saturation}/text-only.txt (100%)
copy scribo/sandbox/green/exp/{regional_maxima => annotating/stddev_color}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/stddev_color/stddev_color.cc
copy scribo/sandbox/green/exp/{regional_maxima => annotating/stddev_color_16}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/stddev_color_16/stddev_color_16.cc
copy scribo/sandbox/green/exp/{regional_maxima => annotating/value}/Makefile.am (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/value}/text-color.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/value}/text-img.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/value}/text-only.txt (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/value/value.cc
diff --git a/scribo/sandbox/green/ChangeLog b/scribo/sandbox/green/ChangeLog
index 5e4cb27..6210a79 100644
--- a/scribo/sandbox/green/ChangeLog
+++ b/scribo/sandbox/green/ChangeLog
@@ -1,3 +1,67 @@
+2010-09-08 Yann Jacquelet <jacquelet(a)lrde.epita.fr>
+
+ Import annotating sources from milena green's sandbox.
+
+ * README.green: New.
+ * demo/annotating/bic/Makefile.am: New.
+ * demo/annotating/bic/bic.cc: New.
+ * demo/annotating/hsv/Makefile.am: New.
+ * demo/annotating/hsv/hsv.cc: New.
+ * demo/annotating/lep/Makefile.am: New.
+ * demo/annotating/lep/lep.cc: New.
+ * demo/annotating/nb_color/Makefile.am: New.
+ * demo/annotating/nb_color/nb_color.cc: New.
+ * demo/annotating/project/Makefile.am: New.
+ * demo/annotating/project/project.cc: New.
+ * demo/annotating/rgb_64/Makefile.am: New.
+ * demo/annotating/rgb_64/rgb_64.cc: New.
+ * demo/annotating/rgb_64_9/Makefile.am: New.
+ * demo/annotating/rgb_64_9/rgb_64_9.cc: New.
+ * demo/annotating/stddev_color/Makefile.am: New.
+ * demo/annotating/stddev_color/stddev_color.cc: New.
+ * demo/annotating/stddev_color_16/Makefile.am: New.
+ * demo/annotating/stddev_color_16/stddev_color_16.cc: New.
+ * exp/annotating/achromastism/Makefile.am: New.
+ * exp/annotating/achromastism/achromastism.cc: New.
+ * exp/annotating/achromastism/text-color.txt: New.
+ * exp/annotating/achromastism/text-img.txt: New.
+ * exp/annotating/achromastism/text-only.txt: New.
+ * exp/annotating/bench/Makefile.am: New.
+ * exp/annotating/bench/bench.cc: New.
+ * exp/annotating/error/Makefile.am: New.
+ * exp/annotating/error/error.cc: New.
+ * exp/annotating/histo/Makefile.am: New.
+ * exp/annotating/histo/histo.cc: New.
+ * exp/annotating/hsv/Makefile.am: New.
+ * exp/annotating/hsv/hsv.cc: New.
+ * exp/annotating/hue/Makefile.am: New.
+ * exp/annotating/hue/hue.cc: New.
+ * exp/annotating/hue/text-color.txt: New.
+ * exp/annotating/hue/text-img.txt: New.
+ * exp/annotating/hue/text-only.txt: New.
+ * exp/annotating/nb_color/Makefile.am: New.
+ * exp/annotating/nb_color/nb_color.cc: New.
+ * exp/annotating/saturation/Makefile.am: New.
+ * exp/annotating/saturation/saturation.cc: New.
+ * exp/annotating/saturation/text-color.txt: New.
+ * exp/annotating/saturation/text-img.txt: New.
+ * exp/annotating/saturation/text-only.txt: New.
+ * exp/annotating/stddev_color/Makefile.am: New.
+ * exp/annotating/stddev_color/stddev_color.cc: New.
+ * exp/annotating/stddev_color_16/Makefile.am: New.
+ * exp/annotating/stddev_color_16/stddev_color_16.cc: New.
+ * exp/annotating/value/Makefile.am: New.
+ * exp/annotating/value/text-color.txt: New.
+ * exp/annotating/value/text-img.txt: New.
+ * exp/annotating/value/text-only.txt: New.
+ * exp/annotating/value/value.cc: New.
+ * mln/clustering/kmean2d.hh: New.
+ * mln/fun/p2b/achromatic.hh: New.
+ * mln/fun/v2v/hue_concentration.hh: New.
+ * mln/fun/v2v/rgb_to_achromatism_map.hh: New.
+ * mln/fun/v2v/rgb_to_hsv.hh: New.
+
+
2010-07-07 Yann Jacquelet <jacquelet(a)lrde.epita.fr>
Import regional maxima sources from milena green's sandbox.
diff --git a/scribo/sandbox/green/README.green b/scribo/sandbox/green/README.green
index 7886914..5d6e147 100644
--- a/scribo/sandbox/green/README.green
+++ b/scribo/sandbox/green/README.green
@@ -685,21 +685,6 @@ rechercher dans les derniers répertoires mp00042c et mp00307c.
* doc/labeling/mp00307c: Test sur la representativité des couleurs trouvées.
-Faire le changelog, il y a de l'aide dans git/doc/Changelog
-... et commiter
-
-
-XI ANNOTATING
---------------
-
-==> to do
-
-
-
-* doc/annotating
-
-
-
XI AUTRES ASPECTS DOCUMENTAIRES
-------------------------------
@@ -732,3 +717,495 @@ l'effort.
* doc/formulae: LaTex directory.
* doc/quick_tour: LaTex directory.
+
+XII ANNOTATING
+--------------
+
+Tout d'abord, voici les notes documentaires qui ont été réalisées sur
+la problématique d'annotation d'image. On trouvera un fichier
+class.txt qui a pour but de poser quelques réflexions sur les types de
+classes de document. Les informations ne sont pas abouties mais
+permettent de défricher un peu le terrain. Le document
+syntheseMillet2008 est un compte-rendu de lecture des parties
+relatives à nos travaux dans la thèse de Millet. Pour bien comprendre
+mon travail, il est impératif de lire les travaux de Millet, ou
+simplement ce compte-rendu. Le dernier document est moins intéressant,
+il s'agit d'une note de travail sur les indicateurs de Millet bruts de
+fonderie (testMillet2008). Cette note n'est ni achevée, ni
+aboutie. Elle conclue sur le fait que les indicateurs et les seuils
+donnés par Millet dans sa thèse sont complètement à revoir pour nos
+besoins. Notemment, des tests sur la détection des images par rapport
+aux cliparts nous ont convaincu que certaines images AFP contiennent
+des de grandes zones homogènes qui induisent des erreurs dans les
+prédicteurs de Millet. Néanmoins, les cas particuliers qui
+contredisent les aspects opérationnnels de Millet n'enlèvent pas sa
+réflexion: Les images noir/blanc (ou monochromes) ont une très faible
+saturation, et/ou une forte concentration de la teinte. Les cliparts
+ont une forte concentration de niveaux de gris autour d'un pic.
+
+* doc/annotating: La documentation relative à l'annotation.
+
+
+Après la lecture des descripteurs de Millet, un des premiers réflexe a
+été d'en implémenter plusieurs pour voir ce qu'ils pouvaient ressortir
+sur les images que nous avions. Le descripteur BIC sépare une image en
+deux ensembles de pixels, les points intérieurs et les points
+extérieurs. Les points intérieurs ont la propriété d'être de même
+couleur que leur 4-voisins. Attention, la couleur est évaluée dans un
+espace RGB Ã 3 bits.
+
+* demo/annotating/bic: Histogrammes des points intérieurs et extérieurs.
+
+
+Le descripteur LEP, lui, propose de seuiller par sobel l'image et de
+faire l'histogramme des configurations du voisinage des points
+seuillés. Pour ce faire, on utilise une convolution un peu spéciale
+qui va attribué un unique id en fonction du voisinage.
+
+* demo/annotating/lep: Histogramme des configurations des voisinages des pixels.
+
+
+Un autre descripteur simple est le nombre de couleur dans une
+image. Pour cela, il est possible de construire l'histogramme des
+couleurs et de compter les cellules pleines. On peut éventuellement
+appliquer une quantification sur l'espace des couleurs. La
+compilation laisse place à d'étranges warnings sur une comparaison
+entre entiers signés et non signés, mais je n'ai pas la main dans mon
+code (ou je ne sais pas comment faire) pour enlever ces warnings. Ils
+sont récents, je n'avais pas souvenir de les avoir eu.
+
+* demo/annotating/nb_color: Compte le nombre de couleurs dans une image.
+* exp/annotating/nb_color: Adaptation pour fonctionner sur une base d'image.
+
+
+L'histogramme RGB-64 est un descripteur simple qui quantifie les
+couleurs sur 2 bits et réalise l'histogramme dans cet espace. C'est
+bien sûr une classification gros grain, mais ajouté au reste ... La
+version RGB-64-9 ajoute une phase de division de l'image en 9 sous
+images. De cette manière, l'histogramme RGB-64 est construit sur les 9
+sous images. Pour former le descripteur final, on fusionne les neufs
+histogrammes.
+
+* demo/annotating/rgb_64: Histogramme couleur dans l'espace RGB-64 (2 bits/axe).
+* demo/annotating/rgb_64_9: Histogramme RGB-64 sur les 9 sous images.
+
+
+Le descripteur de projection relaté par Millet est particulier. En
+premier lieu l'image est sous échantillonnée pour réduire sa dimension
+à 100 x 100 de manière à borner la taille des vecteurs obtenus au
+final. Puis l'image est seuillée par sobel (threshold = 100). L'image
+est d'abord divisée horizontalement en deux. Puis on établit la
+projecton perpendiculairement à la séparation de manière à obtenir
+deux vecteurs de 100 valeurs chacunes. On recommence l'opération en
+divisant maintenant l'image verticalement. L'union des 4 vecteurs
+forme le descripteur de projection. L'information condensée dans ces
+vecteurs est simplement la répartition des contours de manière
+horizontale ou verticale.
+
+* demo/annotating/project: Répartition des contours horizontaux et verticaux.
+
+
+La reconnaissance des cliparts s'appuie sur une analyse d'histogramme
+qui est fournie dans le code suivant. L'idée est de dire qu'une image
+de type clipart va être reconnaissable surtout à l'aide de ces
+contours. La couleur existe mais est très grossière. Le faitde
+dessiner à la main implique de simplifier énormément, de caricaturer,
+le remplissage. Du coup, une analyse en niveau de gris de
+l'histogramme révèle très peu de nuances. Il peut cependant en avoir
+un peu. Néanmoins, il existe des logiciels pour aider à la fabrication
+des cliparts qui proposent l'usage de dégradé, ce qui nuit à cette
+méthode de reconnaissance. Millet analyze l'histogramme normalisé
+(histogramme divisé par son pic) et regarde si son energie ne serait
+pas concentrée autour du pic (5 pixels de chaque côté
+maximum). Parfois cette méthode ne fonctionne pas correctement sur des
+photographies qui ont un cadre uniforme. La méthode trouve un pic (le
+cadre) et vérifie alors qu'une proportion non négligeable des pixels
+sont bien autour de ce pic (tout dépend de l'épaisseur du cadre). Pour
+palier à cet inconvénient, Millet propose d'utiliser ce test, non plus
+sur l'image entière, mais sur chacune des 16 sous images après un
+découpage géométrique régulier. De facto, la contribution du cadre
+diminue suffisemment pour repasser en dessous du seuil de
+reconnaissance.
+
+* demo/annotating/stddev_color: Descripteur utilisé reconnaitre des cliparts.
+* exp/annotating/stddev_color_16: Adaptation pour le travail sur base.
+* demo/annotating/stddev_color_16: Descripteur pour cliparts avec 16 imagettes.
+* exp/annotating/stddev_color: Adaptation pour le travail sur une base d'image.
+
+
+A partir de maintenant, tous les morceaux de codes réalisés préparent
+directement ou indirectement le résultat de la classification des
+bases (exp/annotating/bench).
+
+Plus de temps pour faire le code use correspondant aux fichiers
+librairies. Tout le code pour le faire est dans hsv. Rien de
+compliqué, mais allons à l'essentiel.
+
+Le but du code HSV est d'effectuer les tests de Millet ou des
+améliorations sur ces tests. Le premier test proposé par Millet est
+l'achromaticité. Il s'agit de regarder s'il existe une faible
+variation entre les trois canaux (R/G/B) pour un grand nombre de
+pixels. Si c'est le cas, c'est que l'image est presque en niveau de
+gris et peut être remplacée facilement par une image grisée sans trop
+de distorsions au niveau de la couleur. Nous avons essayer de
+généraliser un peu le test de manière à produire, non pas seulement
+une réponse sur l'achromaticité de l'image, mais aussi avoir une vue
+d'ensemble (sous forme d'image) des variations entre les cannaux pour
+chaque pixel. Il n'est pas utile d'analyser les différences sur chacun
+des canaux, prendre la différence absolue entre le canal min et le
+canal max suffit pour définir le test d'achromaticité.
+
+Les autres tests de Millet sont la faible saturation et la dominance
+de la teinte. Pour savoir si la saturation est faible, il faut
+utiliser un histogramme du canal dédié à la saturation. Si 95% des
+pixels sont en dessous de 100, alors l'image est faiblement saturée,
+elle est en noir et blanc. De la même manière, on regarde la dominance
+de la teinte. Pour ce faire, il faut voir si l'histogramme de la
+teinte ne possède pas un pic avec une très faible variance (tout
+rapproché autour du pic). Si c'est le cas, la dominance de la teinte
+est avérée et l'on peut calculé la couleur dominante. L'image est en
+niveau de gris, mais colorisé autour d'une couleur (par cepia, vert
+...).
+
+Ce programme est très très sujet à changements, il m'a servit de test
+et je ne peux pas juré qu'il est complètement sain au niveau du
+traitement. D'autres versions sont potentiellement plus
+stables. Notemment celle dans exp/annotating/hsv.
+
+* mln/fun/v2v/rgb_to_achromatism_map.hh : Distance pour l'achromaticité.
+* mln/fun/v2v/achromatic.hh : Define the achromatic map.
+* mln/fun/v2v/hue_concentration.hh : Define the distance hue/peak map.
+* mln/fun/p2b/achromatic.hh : Say if a site is achromatic.
+* demo/annotating/hsv: Code des différents tests de Millet.
+
+
+Dans le répertoire exp/annotating/hue, on trouve 3 fichiers textes qui
+rassemblent des classes d'images. Tout d'abord les images ICDAR
+n'ayant que du texte et des traces de couleurs (lettrine de couleur,
+trait, petit bandeau), un fichier où il n'y a que du texte noir &
+blanc et un fichier contenant les images couleurs (avec photographies
+ou dessins). Cette classification a été effectuée de manière manuelle.
+Le code hue test la proportion de pixels étant autour du pic de
+teinte. Il s'agit de savoir si la dominance d'une teinte est
+avérée. Le code renvoit la proportion de pixels agglomérés autour du
+pic. Le but est de généralisé les tests de millets pour qu'ils se
+ressemblent le plus possible.
+
+* exp/annotating/hue: Implémentation de la généralisation du test de Millet.
+* mln/fun/v2v/rgb_to_hue_map.hh : Construction de la map de teinte.
+
+
+On retrouve les trois fichiers permettant de classifier la base ICDAR
+en trois sous populations. Le test de saturation consiste simplement Ã
+regarder si une certaine quantité de la population de l'histogramme de
+saturation est en dessous d'un certain seuil. La généralisation du
+test ne porte pas sur le test en lui-même, mais sur la forme dans
+lequel le test est fait.
+
+* exp/annotating/saturation: Implémentation de la généralisation du test.
+* mln/fun/v2v/rgb_to_saturation_map.hh : Construction de la map de saturation.
+
+
+Le test de value a déjà été décrit précédemment dans
+stddev_color. L'idée est toujours la même, mais cette fois il est
+effectué dans l'espace des valeurs (HSV). Cela ne change pas grand
+chose, puisqu'il était utilisé sur des images en niveau de gris. C'est
+l'un des tests importants car il réagit à la différentiation entre une
+image type photographie et une image plus stylisée comme un
+clipart. Ce test a aussi des vertus pour la distinction entre du noir
+& blanc et de la couleur. Il s'avère que les images type photographie
+avec pleins de couleurs ont un histogramme moins sujet aux pics que
+les histogrammes noir & blanc. De facto, l'énergie de l'histogramme
+est distribué sur l'ensemble de la plage contrairement aux images noir
+& blanc où il y a une concentration de chaque côté de l'histogramme
+(bipolarité).
+
+* exp/annotating/value: Implémentation de la généralisation du test de Millet.
+* mln/fun/v2v/rgb_to_value_map.hh : Transformation d'espace.
+
+
+Le programme hsv reprend les tests préalablement élaborés auparavant
+sur les plans H, S puis V. Il combine tout en un seul programme pour
+avoir une vision plus synthétique de ce qui se passe sur les 3 espaces
+simultanément.
+
+Les tests incorpore mes transformations. C'est à dire que l'on
+effectue une série de test équivalent à ceux de Millet (au moins dans
+l'idée et le plus souvent, il s'agit d'une réecriture sous une autre
+forme) en partant des histogrammes normalisés. Un histogramme
+normalisé est un histogramme de flottant qui contient l'histogramme
+classique divisé par le nombre total de pixels. En faisant cela, on se
+déplace dans l'espace des distributions. Si l'histogramme n'a qu'un
+seul pic et que ce dernier contient tous les pixels (pic de dirac par
+exemple), alors l'histogramme normalisé donnera 1 comme valeur de
+proportion à ce pic. En fait, l'intégrale d'une distribution vaut
+1. Le but des distributions est de s'affranchir des caractéristiques
+de taille de l'image, ce qui permet de comparer les histogrammes entre
+eux. On peut ainsi comparer les histogrammes d'une photo AFP petit
+format avec celui d'une image grand format de la base ICDAR. Le but du
+jeu est de garder les idées de Millet dans ce nouvel espace. Les tests
+obtenus sont équivalents mais pas identiques.
+
+Pour la teinte, une fois l'histogramme normalisé obtenu, on cherche Ã
+savoir s'il existe un pic avec une forte proportion de l'histogramme
+autour de ce pic. Plutôt que le pic, nous prenons la moyenne qui est
+un opérateur un peu plus robuste et nous calculons la proportion de
+l'histogramme autour (un seuil donné en paramètre défini le périmètre
+du calcul). L'expression sous forme de proportion plutôt que sous la
+forme d'une variance rend le test homogène avec les autres tests.
+
+Pour la saturation, après normalisation, on regarde la proportion de
+l'histogramme en dessous d'un certain seuil. Il n'y a pas de
+changement significatif par rapport au test de Millet. Le seuil
+initialement proposé par Millet était 100, il a été adapté car nos
+bases sont différentes des siennes (le notre est à 25).
+
+Le test sur les valeurs (cliparts contre photos) a vraiment un intérêt
+au delà de ce cas d'utilisation. Il nous renseigne sur la
+concentration autour d'un pic de l'histogramme ou non. Nous préferrons
+la mesure de similarité à l'équi-répartition des densités, mais l'idée
+est exactement la même. Est-ce que notre histogramme est plat ou
+inversement, est-ce que les contributions sont rassemblées autour d'un
+pic? Si une image est noir et blanc, il existera un pic correspondant
+au fond et la densité s'éloignera fortement de la distribution
+équiprobable. Dans le cas maintenant d'une image couleur, la
+répartition est plus homogène, couvrant un large spectre dans le
+domaine de l'histogramme. Du coup, la distribution semblera davantage
+equi-répartie. On notera que nous prenons le test à l'envers de ce que
+propose Millet. Il essaye de voir si il y a un pic et calcule une
+forme de contribution normalisée autour de ce pic. Nous au contraire,
+on regarde l'absence de pic et on calcule la différence entre la
+densité et cette absence de pic. Notre avantage par rapport à Millet
+est démontré particulièrement dans les cas où il existe plusieurs
+grosses distributions. A contrario, notre test souffre des cas où il
+existe de nombreuses petites distributions.
+
+
+Voici un premier retour sur les expériementations:
+La discrimination entre la base AFP et la base ICDAR peut se faire en
+étudiant la forme des densités des niveaux de gris. Les images
+naturelles semblent avoir un spectre recouvrant en général les 256
+niveaux de gris alors que les images de documents ont une présence
+importante du fond. Dans le cadre d'une densité, ce qui est alloué sur
+le fond ne peut se retrouver ailleurs. Une comparaison avec la densité
+équiprobable nous renseigne donc sur la nature des images. Il semble
+néanmoins qu'un certain nombre d'images défient ce dispositif. Par
+exemple des gros plans sur des zones mono-teintée (ski, voile,site
+web).
+
+* exp/annotating/hsv: Code unifiant les trois tests sur chacun des plans HSV.
+* mln/fun/v2v/rgb_to_hue_map.hh : Transformation d'espace.
+* mln/fun/v2v/rgb_to_saturation_map.hh : Transformation d'espace.
+* mln/fun/v2v/rgb_to_value_map.hh : Transformation d'espace.
+
+
+Le test sur l'achromatisme des images est décrit dans le code
+suivant. Il a été purement et simplement abandonné dans la mesure où
+c'est un cas très particulier qui est repris par une saturation très
+faible. La saturation s'exprime comme 1 - min(channel)/max(channel),
+mais dans le cas où le min(channel) == max(channel), la saturation
+vaut 0. Le problème vient plutôt du calcul de la teine qui ne peut pas
+admettre que le min soit égal au max. Pour ce calcul, on se débrouille
+pour gérer le cas et renvoyer une valeur standardisée, Millet
+proposait -1.
+
+* exp/annotating/achromatism: Détection d'image couleur en niveau de gris.
+* mln/fun/v2v/rgb_to_achromatism_map.hh : Transformation d'espace.
+
+
+Ce programme a pour but de créer les histogrammes normalisés en rafale
+pour les bases AFP et ICDAR. Il assure leur création dans les six
+plans possibles R,G,B,H,S,V. De cette manière il est possible de
+vérifier les corrélations éventuelles entre le canal B et G. Par
+ailleurs, après visionnement de tous les histogrammes, on note des
+spécificités dans les deux bases sur les plans S et V. Certaines
+images ont des réactions très fortes sur le plan H, mais ce n'est pas
+une caractéristique pour une base (seulement pour ces images en
+question). Les résultats ont déjà été sauvegardés dans le répertoire
+image du LRDE. Des infos sont notés à ce sujet dans README.result. Le
+seul but de ce calcul est de maîtriser csujet dans README.result. Le
+seul but de ce calcul est de maîtriser ce qui se passe dans ces
+espaces, pas simplement de supposer ce qu'il pourrait s'y passer. La
+comparaison des images est rendu possible quelque soit la base
+d'origine par le fait qu'elles sont normalisées. Chaque fréquence des
+histogrammes est divisée par la somme des fréquences. On obtient donc
+une version discrète des densitées. La somme des nouvelles fréquences
+vaut 1. On voit davantage si les densités se rapprochent d'une
+équi-répartition ou non. La négative implique un ou plusieurs pics. Le
+cas défavorable dans mon approche (qui existe pour certaines images)
+est une multitude de tout petits pics autour de l'équi-répartition. Ce
+n'est pas équi-répartie pour les calculs mais ce n'est clairement pas
+la manisfestation d'une concentration de l'énergie quelque part.
+
+* exp/annotating/histo: Creation des histogrammes normalisés.
+* mln/fun/v2v/rgb_to_hue_map.hh: Transformation d'espace.
+* mln/fun/v2v/rgb_to_saturation_map.hh: Transformation d'espace.
+* mln/fun/v2v/rgb_to_value_map.hh: Transformation d'espace.
+
+
+Dans le programme erreur, on teste l'idée de jonathan. Une référence Ã
+ce sujet peut être trouvée dans README.img. Les bases AFP et ICDAR
+sont retravaillées à l'aide de ImageMagick et de Gimp pour diminuer le
+nombre de couleurs initiales. On oblige à n'avoir que 30, 20 ou 10
+couleurs pour chaque base. Il y a donc 4 versions de chacune des bases
+en comptant la version originale des images. Les algorithmes utilisés
+par Gimp et ImageMagick sont très différents. L'idée de Jonathan était
+de dire que lorsqu'une image est couleur, plus on réduit le nombre de
+couleur, plus elle change vis-Ã -vis de l'image originale. Inversement,
+si une image possède peu de couleurs (noir & blanc), sa dégradation ne
+l'altérera pas tant que cela. Prenons une image d'un skieur de la base
+AFP, en réduisant le nombre de couleurs, la combinaison marron va
+devenir marron strictement homogène et la perception que nous en avons
+est visuellement très altérée. A contrario, une image en noir & blanc
+ne semble pas bouger d'un pouce. La comparaison avec la discrimination
+sur la saturation ou la valeur montrera des résultats un peu meilleur
+plus tard mais il impossible de préjuger a priori des résultats
+futurs. L'erreur entre l'image initiale et l'image dégradée est
+calculée avec le PNSNR (compression p278 Handbook Color). Le programme
+calcule la dégradation et essaie de trouver automatiquement des seuils
+de séparation pour les deux bases. 4 détection de seuils sont testées.
+Ces seuils sont calculées avec deux bases représentatives des bases Ã
+discriminer. En mode production, le seuil est vu comme une constante
+pour le programme. Les deux premières classifications renvoient un
+seuil calculée comme une moyenne pondérée des moyennes des populations
+à discriminer. Le premier détecteur pondère par la déviation standard
+et le second par la variance. Le troisième simule deux populations
+gaussiennes de variances différentes et résoud l'équation de second
+degré qui en résulte. Enfin, le dernier test ne préjuge pas des
+distributions statistiques et réalise la minimisation de l'erreur de
+classification. Pour cela, il suffit de compter le nombre d'images
+bien classées et mal classées sur les bases d'apprentissage des
+populations. On utilise pour cela la méthode Otsu. Le détecteur PNSRN
+renvoie une valeur. Pour chaque population (AFP, ICDAR), on construit
+l'histogramme de des valeurs obtenues. A noter, qu'il faut que les
+valeurs du PNSNR soient ramenées entre 0 et 255. En pratique ce n'est
+pas un problème, mais il faut le mettre en oeuvre, dans mon code, ce
+n'est pas fait (les valeurs ne posaient pas de problème). Donc, pour
+chaque seuil possible (de 0 à 256), on étudie la matrice de classement
+(groupe 1 - détecté groupe 1, groupe 1 - détecté groupe 2, groupe 2 -
+détecté groupe 1, groupe 2 - détecté groupe 2). L'erreur est
+simplement la somme des quantités groupe x - détecté groupe y avec x
+!= y. Finalement, pour chaque seuil, il est possible de connaitre
+l'erreur. Le processus de minimisation de l'erreur revient à chercher
+le seuil associé à l'erreur minimale. C'est ce dernier test que nous
+préconisons. Il faut mettre en lumière que ces quatre tests renvoient
+à peu près les mêmes seuils. La minimisation de l'erreur étant le
+meilleur de tous puisqu'il minimise directement l'erreur de
+classification et c'est ce que nous cherchions en fin de compte. Un
+cinquième test a été fait avec une analyse de fisher sur l'histogramme
+des populations mélangées, mais c'est une idée saugrenue car nous
+disposons à ce niveau des populations séparées et évidemment les
+résultats sont moins bons.
+
+Petit rappel. Un vieux problème a été mis à jour ici. Lorsqu'on
+calcule des informations sur un histogramme, le type temporaire qui
+contient les résultats ne doit pas être le type qui encode les valeurs
+des résultats. Par exemple, un histogramme de byte, un calcul de
+variance tout simple où il faut stocker la valeur des pixels au carré
+multiplié par leur occurrence tiendra facilement dans un long mais pas
+dans un byte. Le sucre avec les acesseurs des itérateurs tend Ã
+mélanger les genres. Une solution simple est de stocker la valeur de
+l'histogramme dans un type pouvant effectuer les calculs et ensuite
+retravailler avec ce type. Nous avions déjà discuté de ce problème et
+je ne sais pas si tu avais pu corriger le problème. Si la
+classification renvoit n'importe quoi, il se peut que cela provienne
+de ce problème. Le problème ne se voit pas sur des calculs de
+moyennes, il ne s'observe que sur certains calculs de variance (dépend
+de la formule utilisée).
+
+* exp/annotating/error: Test de l'idée de jonathan (dégradation des couleurs)
+
+
+Le travail dans bench.cc reprend toute sorte de travaux déjà réalisés
+dans d'autres fichiers. Il a pour but de comparer ensemble tous les
+descripteurs pour la reconnaissance de base de données entre l'AFP et
+l'ICDAR.
+
+Le travail commence avec un certain nombres de routines travaillant
+sur les histogrammes permettant de trouver le pic, la moyenne, la
+variance et d'autres éléments. Les routines étaient éparpillées dans
+le code, du coup je les ai regroupées au même endroit. Il y a des
+redondances de code correspondant à des copier/coller ou à différents
+essais. Prendre les versions les plus génériques et en faire des
+accumulateurs serait un riche idée.
+
+Huit détecteurs sont comparés ensembles:
+- hue1, détection d'un pic de teinte très dense par la méthode de Millet.
+- sat1, détection d'une densité importante dans les saturations basses (Millet).
+- lvl0, comptage du nombre de niveau de gris (idée de Millet).
+- hue0, détection d'un pic de teinte par la méthode des densités.
+- sat0, détection d'une forte basse saturation par la méthode des densités.
+- val0, détection d'un pic de niveau de gris par la méthode des densités.
+- val1, détection d'un pic de niveau de gris par la méthode de Millet.
+- err, PNSNR (idée de jonathan).
+
+FIXME: Attention, le PNSNR n'est pas borné, il faut le faire, il doit avoir
+au maximum 255 comme valeur.
+
+Tous les détecteurs ont été expliqués en large, en long et en travers
+dans les sources précédentes. LIRE le chapitre XII (ANNOTATING) de ce fichier
+en entier.
+
+Ensuite vient les séparateurs de population statistiques qui ont été
+déjà introduit dans le fichier error. Bien que tous soient présent,
+c'est la minimisation de l'erreur qui est utilisée.
+
+Enfin vient le front end, l'un des plus complexes que j'ai écrit cette
+année. Le main lui même, n'est pas la partie la plus complexe. Il
+définit les actions fonctionnelles à réaliser et la structure de
+donnée réalisée pour garder la trace de tous les résultats.
+- File_name : Cette variable retient le nom des fichiers. C'est un tableau
+de la taille du nombre d'images rencontrées toute base confondue. Comme on
+ne parcourt qu'une fois les répertoires, il faut pouvoir retenir cette
+information qui servira éventuellement pour la nomenclature des dumps
+par la suite.
+- Result : Cette variable contient toutes les informations du traitement.
+C'est un tableau à deux dimensions, une pour les images et une autre pour
+les descripteurs. L'index d'image est le même que pour file_name.
+- Size : Cette variable contient le nombre d'images par database.
+- Threshold : Cette variable va stocker les seuils calculés sur chacun
+des descripteurs. Ces seuils sont sensés effectuer la séparation entre les
+deux bases.
+- Cxx : variables de comptage des images bien ou mal classées relativement
+à la position des seuils et à l'appartenance d'origine des images. Cette
+appartenance d'origine est calculée à l'aide Size qui contient le nombre
+d'image par base de données. Comme les images sont vues dans l'ordre, les X
+premières appartiennent à la base ICDAR et les Y suivantes à la base AFP.
+- histo : Variable servant à effectuer par database et par descripteur un
+histogramme utilisé ensuite lors de la discrimination des bases.
+
+La partie compute_descriptors a pour mission de passer une fois sur
+toutes les images et de calculer les descripteurs associés. A l'issue
+de cette passe file_name, result et size sont remplis et pourront être
+utilisés par les autres routines.
+
+La partie dump_descriptors a pour but de réaliser un tracé en gnuplot,
+avec une couleur différente pour chaque base. Le graphe montre les
+valeurs utilisées par chaque descripteur pour toutes les images de la
+base.
+
+La partie correction des descripteurs est optionnelle et force un
+certain nombre de valeurs pour être inférieures à 256. Le but était de
+pouvoir travaillé, même si les descripteurs n'étaient pas complètement
+opérationnels. Elle sert donc pour le debug.
+
+La partie calcul des histogrammes sert à obtenir la distribution des
+valeurs de chacun des descripteurs en fonction des bases
+utilisées. C'est une étape préliminaire à l'analyse des populations et
+au calcul des seuils.
+
+La partie calcul des seuils repose sur la minimisation des erreurs de
+classification. Cette méthode ne fonctionne bien si la classe zéro Ã
+une moyenne inférieure à la classe un. Du coup, il n'est pas possible
+de déterminer de manière simple si la classe 0 correspond à l'AFP ou Ã
+l'ICDAR. Pour chaque descripteur, les cartes sont rebattues.
+
+Enfin, tous les histogrammes sont sauvés pour pouvoir comprendre et
+visualiser les résultats.
+
+Le main2 ne sert à rien, juste pour des essais.
+
+Attention, modification VAL0/VAL1, vérifiez que le bon descripteur est
+au bon endroit dans le tableau.
+
+* exp/annotating/bench: Comparaison des détecteurs pour la classif. ICDAR/AFP.
\ No newline at end of file
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/bic/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/bic/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/bic/bic.cc b/scribo/sandbox/green/demo/annotating/bic/bic.cc
new file mode 100644
index 0000000..f63d260
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/bic/bic.cc
@@ -0,0 +1,122 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet BIC descriptor [millet.phd.2008.pdf]
+///
+/// This is an image descriptor. It quantifies the three channels on 3
+/// bits, then builds two histograms with the interior pixels and the
+/// exterior ones. The interior pixels are those where color value is
+/// the same as their 4 neighbouring pixels. The descriptor is the
+/// fusion of the two histograms.
+
+#include <iostream>
+
+#include <mln/accu/stat/histo3d_rgb.hh>
+
+#include <mln/core/image/image2d.hh>
+#include <mln/core/alias/neighb2d.hh>
+#include <mln/core/routine/initialize.hh>
+#include <mln/core/var.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/convert.hh>
+#include <mln/data/transform.hh>
+#include <mln/data/fill.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/fun/v2v/rgb8_to_rgbn.hh>
+
+#include <mln/img_path.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/ppm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/literal/colors.hh>
+
+#include <mln/value/rgb.hh>
+#include <mln/value/rgb8.hh>
+
+/// \brief Main entry.
+///
+/// Load the images, compute the interior and the exterior with the
+/// predicate, then compute the two histograms separately.
+int main()
+{
+ typedef mln::value::rgb<3> t_rgb3;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::neighb2d t_neighb2d;
+ typedef mln::image2d<t_rgb3> t_image2d_rgb3;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image3d<unsigned> t_histo3d;
+ typedef mln::fun::v2v::rgb8_to_rgbn<3> t_rgb8_to_rgb3;
+ typedef mln::accu::meta::stat::histo3d_rgb t_histo3d_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_rgb3 input_rgb3;
+ t_image2d_rgb3 interior_rgb3;
+ t_image2d_rgb3 exterior_rgb3;
+ t_histo3d histo_exterior;
+ t_histo3d histo_interior;
+
+ // IMAGE LOADING PHASE
+ std::cout << "Image loading phase ..." << std::endl;
+ mln::io::ppm::load(input_rgb8, ICDAR_50P_PPM_IMG_PATH"/mp00082c_50p.ppm");
+ input_rgb3 = mln::data::transform(input_rgb8, t_rgb8_to_rgb3());
+
+ mln::initialize(interior_rgb3, input_rgb3);
+ mln::initialize(exterior_rgb3, input_rgb3);
+
+ mln::data::fill(interior_rgb3, mln::literal::black);
+ mln::data::fill(exterior_rgb3, mln::literal::black);
+
+ mln_piter_(t_image2d_rgb3) p(input_rgb3.domain());
+ mln_niter_(t_neighb2d) n(mln::c4(), p);
+
+ for_all(p)
+ {
+ bool is_interior = true;
+
+ for_all(n)
+ is_interior = is_interior && (input_rgb3(p) == input_rgb3(n));
+
+ if (is_interior)
+ interior_rgb3(p) = input_rgb3(p);
+ else
+ exterior_rgb3(p) = input_rgb3(p);
+ }
+
+ histo_interior = mln::data::compute(t_histo3d_fun(), interior_rgb3);
+ histo_exterior = mln::data::compute(t_histo3d_fun(), exterior_rgb3);
+
+ //mln::io::plot::save_image_sh(histo, "histo.sh");
+
+ // PRINTING PHASE
+ mln::debug::println(histo_interior);
+ mln::debug::println(histo_exterior);
+}
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/hsv/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/hsv/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/hsv/hsv.cc b/scribo/sandbox/green/demo/annotating/hsv/hsv.cc
new file mode 100644
index 0000000..e87ab2d
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/hsv/hsv.cc
@@ -0,0 +1,721 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet HSV operator [millet.phd.2008.pdf]
+///
+/// This is the Millet code for moving from RGB space to HSV
+/// one. Formulae are classical, we can find them on the web.
+///
+// Val = max(R,G,B).
+// Sat = (max(R,G,B) - min(R,G,B))/max(R,G,B).
+// IF R = max(R,G,B) THEN Hue = 60 * [(V-B)/(max(R,G,B)-min(R,G,B))].
+// IF G = max(R,G,B) THEN Hue = 60 * [2 + (B-R)/(max(R,G,B)-min(R,G,B))].
+// IF B = max(R,G,B) THEN Hue = 60 * [4 + (R-G)/(max(R,G,B)-min(R,G,B))].
+///
+/// \fixme: This code is unstable. It was using to make a lot of tests.
+/// Don't use it, we have more stable version of it.
+#include <iostream>
+#include <fstream>
+
+#include <mln/accu/max_site.hh>
+#include <mln/accu/math/count.hh>
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/binarization/threshold.hh>
+
+#include <mln/core/alias/point1d.hh>
+#include <mln/core/alias/box1d.hh>
+#include <mln/core/concept/image.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+
+#include <mln/data/transform.hh>
+#include <mln/data/compute.hh>
+#include <mln/data/stretch.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/literal/colors.hh>
+#include <mln/literal/grays.hh>
+
+#include <mln/fun/v2v/rgb_to_hsv.hh>
+#include <mln/fun/v2v/rgb_to_achromatism_map.hh>
+#include <mln/fun/v2v/achromatism.hh>
+#include <mln/fun/v2v/hue_concentration.hh>
+#include <mln/fun/p2b/component_equals.hh>
+#include <mln/fun/p2b/achromatic.hh>
+#include <mln/fun/v2v/component.hh>
+
+#include <mln/geom/nsites.hh>
+
+#include <mln/img_path.hh>
+
+#include <mln/io/plot/save_image_sh.hh>
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/pbm/save.hh>
+
+#include <mln/pw/cst.hh>
+#include <mln/pw/value.hh>
+//#include <mln/trace/quiet.hh>
+
+#include <mln/value/rgb8.hh>
+#include <mln/value/int_u8.hh>
+#include <mln/value/hsv.hh>
+
+
+/// \brief Classify a rgb a value with a color of reference.
+///
+/// \param[in] rgb a rgb8 value.
+///
+/// \return a rgb8 initialize with the selecting literal.
+///
+/// This classification of the RGB color space is based on the
+/// Millet's work. It uses the hue wheel to do it and make new
+/// distinction as brown/orange for instance.
+mln::value::rgb8 label_color(const mln::value::rgb8 rgb)
+{
+ mln::value::hsv_f hsv = mln::fun::v2v::f_rgb_to_hsv_f(rgb);
+
+ mln::value::rgb8 result;
+
+ // Is it a gray level ?
+ if (0 == hsv.sat())
+ {
+ // which result one ?
+ if (82 > hsv.sat())
+ result = mln::literal::black;
+ else if (179 > hsv.sat())
+ result= mln::literal::medium_gray;
+ else
+ result = mln::literal::white;
+ }
+ // Is it a true result color ?
+ else if (14 > hsv.hue())
+ result = mln::literal::red;
+ else if (29 > hsv.hue())
+ {
+ // Is is brown or orange ?
+ unsigned dist_orange = mln::math::abs(hsv.sat() - 184)
+ + mln::math::abs(hsv.val() - 65);
+
+ unsigned dist_brown = mln::math::abs(hsv.sat() - 255)
+ + mln::math::abs(hsv.val() - 125);
+
+ if (dist_orange < dist_brown)
+ result = mln::literal::orange;
+ else
+ result = mln::literal::brown;
+ }
+ else if (45 > hsv.hue())
+ {
+ // Is it green or yellow ?
+ if (80 > hsv.val())
+ result = mln::literal::green;
+ else
+ result = mln::literal::yellow;
+ }
+ else if (113 > hsv.hue())
+ result = mln::literal::green;
+ else if (149 > hsv.hue())
+ result = mln::literal::cyan;
+ else if (205 > hsv.hue())
+ result = mln::literal::blue;
+ else if (235 > hsv.hue())
+ result = mln::literal::violet;
+ else if (242 > hsv.hue())
+ result = mln::literal::pink;
+ else
+ result = mln::literal::red;
+
+ return result;
+}
+
+/// \brief Sum all the bins of the histogram.
+///
+/// \param[in] img the histogram based on image.
+///
+/// \return the sum of the overall bins.
+///
+/// Sum evry bins and return the result.
+template <typename I>
+unsigned count_histo(const mln::Image<I>& img_)
+{
+ const I& img = exact(img_);
+
+ mln_precondition(img.is_valid());
+
+ unsigned result = 0;
+ mln_piter(I) p(img.domain());
+
+ for_all(p)
+ result += img(p);
+
+ return result;
+}
+
+
+/// \brief The R function of Millet
+///
+/// \param[in] p the position of the pic.
+/// \param[in] histo_p the histo value of the pic.
+/// \param[in] x the position of the element which we compute the contrib.
+/// \param[in] histo_x the histo value of that element.
+///
+/// \result the contribution of the element x.
+///
+/// This function compute the variance-like contribution of an element
+/// x linked to the pic of the histogram. In fact, every thing is like
+/// we compute a square distance-like between the element x and the
+/// pic in the normalized histogram. Notice that the normalized
+/// histogram is the histogram divide by the value of it's pic. So at
+/// the pic, the value equals 1. It's a current representation of the
+/// histogram in image processing, we can find it in gimp for exemple.
+float r(short p, unsigned histo_p, short x, unsigned histo_x)
+{
+ float result = mln::math::sqr(((float)histo_x / histo_p) * (x-p));
+
+ return result;
+}
+
+
+/// \brief Find the peak of the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the bin which contains the greatest value.
+///
+/// Compute the position of the peak of the histogram. To do this, we
+/// view evrey bin and we maintain the maxima of the values and the
+/// position. At the end, we return the position which contains the
+/// greatest value.
+template <typename I>
+unsigned peak_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the peak of the histogram
+ unsigned v_max = mln::opt::at(histo, 0);
+ short p_max = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ return p_max;
+}
+
+
+/// Brief compute the whole deviation of Millet
+///
+/// \param[in] image the input image to analyze.
+///
+/// \return the deviation.
+///
+/// The deviation uses the R function. It stats by finding the pic. If
+/// the pic is near the rigth border of the histo, compute the R
+/// function on the left neighbouring of the pic. If the pic is near
+/// the left border of the histo, compute the R function on the right
+/// neigbouring. Otherwise, compute the average of the right and left
+/// results. The selected neighbouring is composed of five pixels at
+/// the right or at the left of the pic. The detection of clipart
+/// assumes that the majority of the energy of the histogram is closed
+/// to the pic (five pixels around it).
+// unsigned stddev_color(mln::image2d<mln::value::int_u8> input_int_u8,
+// const char *name_histo,
+// const char *name_image)
+// {
+// typedef mln::point1d t_point1d;
+// typedef mln::value::rgb8 t_rgb8;
+// typedef mln::value::int_u8 t_int_u8;
+// typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+// typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+// typedef mln::image1d<unsigned> t_histo1d;
+// typedef mln::fun::v2v::rgb8_to_int_u8 t_rgb8_to_int_u8;
+// typedef mln::accu::meta::stat::histo1d t_histo1d_fun;
+// typedef mln::accu::max_site<t_histo1d> t_max_site_fun;
+
+// t_histo1d histo;
+
+// std::cout << "histo : " << name_histo << std::endl;
+// std::cout << "image : " << name_image << std::endl;
+
+// histo = mln::data::compute(t_histo1d_fun(), input_int_u8);
+
+// mln::io::pgm::save(input_int_u8, name_image);
+// mln::io::plot::save_image_sh(histo, name_histo);
+// mln::debug::println(histo);
+
+// // Find the peak of the histogram
+// unsigned v_max = mln::opt::at(histo, 0);
+// short p_max = 0;
+
+// mln_piter_(t_histo1d) p(histo.domain());
+
+// for_all(p)
+// {
+// if (v_max < histo(p))
+// {
+// v_max = histo(p);
+// p_max = p.ind();
+// }
+// }
+
+// // Compute the specific stddev
+
+// float stddev_low = 0.0;
+// float stddev_up = 0.0;
+// float stddev = 0.0;
+
+// if (250 > p_max)
+// for (short i = p_max+1; i < p_max+6; ++i)
+// stddev_up += r(p_max, mln::opt::at(histo,p_max),
+// i, mln::opt::at(histo,i));
+
+// if (5 < p_max)
+// for (short i = p_max-1; i > p_max-6; --i)
+// stddev_low += r(p_max, mln::opt::at(histo,p_max),
+// i, mln::opt::at(histo,i));
+
+// stddev = (250 < p_max)? stddev_low : (5 > p_max)? stddev_up :
+// (stddev_low + stddev_up)/2;
+
+// std::cout << "max_site : " << p_max << std::endl;
+// std::cout << "h(max_site) : " << v_max << std::endl;
+// std::cout << "stddev_up : " << stddev_up << std::endl;
+// std::cout << "stddev_low : " << stddev_low << std::endl;
+// std::cout << "stddev : " << stddev << std::endl;
+
+// return 0;
+// }
+
+
+// -------------------------------------
+// input image <name>.ppm
+// map <name>-<map>.pgm
+// thresholded map <name>-<map>.pbm
+// histogram <name>-<map>.sh
+// decision <name>-<map>.txt
+// -------------------------------------
+// Achromatism <name>-achromatism.pgm
+// call achromatism(input_rgb8, 7, 99.0)
+
+
+/// \brief Decide if an image is achromatic or not [Millet].
+///
+/// \param[in] input_rgb8 the input image.
+/// \param[in] threshold the distance threshold used for equality.
+/// \param[in] percentage the percentage of pixels that very the test.
+///
+/// This is an improving of the Millet test. The original test
+/// compares rgb values to each other and look at differences greater
+/// than the threshold. If the number of pixel that pass the test are
+/// greater than 99.0, then the image is declared achromatic. In fact,
+/// there is few variations between the three channels, so we can say
+/// that it is like a grey image. We can with no too distortions
+/// replace the color image by the grey one. The improving is in first
+/// creating a map of the difference. As we can't keep the free
+/// differences between channels, we look at reducing the test and we
+/// find an equivalent one based on the difference between minima
+/// channel value and the maxima channel value. After the map is
+/// ready, we make binarization with the threshold. Then we compute
+/// the histogram 1d for every pixels of the map that are greater the
+/// threshold. Then, we count pixels in the histogram and traduce the
+/// count in percentage to compare to the second threshold. Details
+/// are saved in files and printed in the screen.
+void achromatism(mln::image2d<mln::value::rgb8> input_rgb8,
+ mln::value::int_u8 threshold,
+ float percentage)
+{
+ typedef mln::fun::v2v::rgb_to_achromatism_map<8> t_rgb_to_achromatism_map;
+
+ mln::image2d<mln::value::int_u8> map;
+ mln::image2d<mln::value::int_u8> view;
+ mln::image2d<bool> mask;
+ mln::image1d<unsigned> histo;
+ unsigned cnt1;
+ unsigned cnt2;
+ float prop;
+ bool result;
+
+
+ map = mln::data::transform(input_rgb8, t_rgb_to_achromatism_map());
+ view = mln::data::stretch(mln::value::int_u8(), map);
+ mask = mln::binarization::threshold(map, threshold);
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(),
+ map | (mln::pw::value(mask) == true));
+ cnt1 = count_histo(histo);
+ cnt2 = mln::geom::nsites(input_rgb8);
+ prop = (100.0 * (cnt2 - cnt1) / cnt2);
+ result = (prop > percentage);
+
+
+ std::ofstream txt_stream("achromatism.txt");
+ txt_stream << "Achromatism" << std::endl;
+
+ txt_stream << "Nbre pixels : " << cnt2 << std::endl;
+ txt_stream << "Nbre pixels achromatiques : " << (cnt2-cnt1)<< std::endl;
+ txt_stream << "Percentage : " << prop << std::endl;
+ txt_stream << "Image achromatique : " << result << std::endl;
+ txt_stream << std::endl;
+
+ txt_stream.flush();
+ txt_stream.close();
+
+ mln::io::pgm::save(view, "achromatism.pgm");
+ mln::io::plot::save_image_sh(histo, "achromatism.sh");
+ mln::io::pbm::save(mask, "achromatism.pbm");
+}
+
+
+/// \brief Decide if an image is low saturate or not and so b/w [Millet].
+///
+/// \param[in] input_hsvf the input image in the HSV space.
+/// \param[in] achromatism_mask the mask to prevent computing bad saturation.
+/// \param[in] threshold the distance threshold used for equality.
+/// \param[in] percentage the percentage of pixels that very the test.
+///
+/// As we are in the HSV space, we can just isolate saturation
+/// channel. The original idea of Millet is to build histogram bound
+/// to 256 for the saturation. If a great percentage (95%) of the
+/// population are under a threshold (100), then the image has got low
+/// saturation. So, it is b/w image. Low saturation is sometimes
+/// redundant with the achromatism test but not every time.
+
+// call low_saturation(input_rgb8, achromatism_mask, 100, 95.0)
+void low_saturation(mln::image2d<mln::value::hsv_f> input_hsvf,
+ mln::image2d<bool> achromatism_mask,
+ mln::value::int_u8 threshold,
+ float percentage)
+{
+ typedef mln::value::hsv_f t_hsvf;
+ typedef mln::value::hsv_f::s_type t_sat;
+ typedef mln::fun::v2v::component<t_hsvf,1> t_component_s;
+
+ mln::image2d<t_sat> map;
+ mln::image2d<mln::value::int_u8> view;
+ mln::image2d<bool> mask;
+ mln::image1d<unsigned> histo;
+ unsigned cnt1;
+ unsigned cnt2;
+ float prop;
+ bool result;
+
+
+ map = mln::data::transform(input_hsvf, t_component_s());
+ view = mln::data::stretch(mln::value::int_u8(), map);
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(),
+ view|(mln::pw::value(achromatism_mask) == true));
+ prop = (100.0 * (cnt2 - cnt1) / cnt2);
+ result = (prop > percentage);
+
+ std::cout << "Saturation" << std::endl;
+
+ cnt1 = count_histo(histo | mln::box1d(mln::point1d(0),mln::point1d(100)));
+ cnt2= mln::geom::nsites(achromatism_mask|
+ (mln::pw::value(achromatism_mask)==false));
+
+ std::ofstream txt_stream("saturation.txt");
+ txt_stream << "Saturation" << std::endl;
+
+ txt_stream << "Nbre pixels : " << cnt2 << std::endl;
+ txt_stream << "Nbre p faiblement saturés : " << cnt1 << std::endl;
+ txt_stream << "Pourcentage : " << prop << std::endl;
+ txt_stream << "Image faiblement saturé : " << result << std::endl;
+ txt_stream << std::endl;
+
+ txt_stream.flush();
+ txt_stream.close();
+
+ mln::io::pgm::save(view, "saturation.pgm");
+ mln::io::plot::save_image_sh(histo, "saturation.sh");
+ mln::io::pbm::save(mask, "saturation.pbm");
+}
+
+/* This is a classification of the ICDAR base in 3 modalities.
+// COLOR
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00032c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00042c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00076c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00082c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00142c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00215c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00228c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00234c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00248c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00252c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00253c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00255c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00259c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00271c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00290c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00293c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00304c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00307c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00376c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00411c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00419c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00447c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00498c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00510c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00550c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00573c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00589c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00592c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00597c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00599c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00600c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00031c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00034c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00043c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00063c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00065c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00072c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00081c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00083c_20p.ppm");
+
+// BLACK AND WHITE
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00329c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00036c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00037c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00039c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00040c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00049c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00055c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00057c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00068c_20p.ppm");
+
+
+// A LITTLE BIT OF COLOR
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00262c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00263c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00311c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00319c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00440c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00608c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00630c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00631c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00028c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00046c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00073c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00089c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00090c_20p.ppm");
+*/
+
+
+/// \brief The main entry and the whole processing routine
+///
+/// This is the routine which works on Millet test. First compute the
+/// achromatic mask. Then build the transfer between RGB and HSV. Then
+/// isolate each channel to work on it. Each separate channel is bound
+/// between 0 and 255. Then keep only pixels low saturated (< 100 in S
+/// canal) in a specefic map. Build the 3 histograms without the
+/// achromatic pixels based on the 3 separated channels (H/S/V). Build the
+/// 3 maps (hue_concentration, low_saturation and achromatism). Then do
+/// the 3 tests of Millet with the thow thresolded pass (threshold,percentage).
+int main()
+{
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::value::hsv_f t_hsvf;
+ typedef mln::value::hsv_f::h_type t_hue;
+ typedef mln::value::hsv_f::s_type t_sat;
+ typedef mln::value::hsv_f::v_type t_val;
+ typedef mln::image2d<t_hue> t_image2d_hue;
+ typedef mln::image2d<t_sat> t_image2d_sat;
+ typedef mln::image2d<t_val> t_image2d_val;
+ typedef mln::image2d<t_hsvf> t_image2d_hsvf;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<float> t_image2d_float;
+ typedef mln::image1d<unsigned> t_histo1d;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::image2d<bool> t_mask;
+ typedef mln::fun::v2v::f_rgb_to_hsv_f_t t_rgb8_to_hsv;
+ typedef mln::accu::math::count<t_hsvf> t_count;
+ typedef mln::fun::v2v::component<t_hsvf,0> t_component_h;
+ typedef mln::fun::v2v::component<t_hsvf,1> t_component_s;
+ typedef mln::fun::v2v::component<t_hsvf,2> t_component_v;
+ typedef mln::fun::p2b::component_equals<t_image2d_hsvf,0> t_component_eq0;
+ typedef mln::fun::p2b::component_equals<t_image2d_hsvf,1> t_component_eq1;
+ typedef mln::fun::p2b::component_equals<t_image2d_hsvf,2> t_component_eq2;
+ typedef mln::fun::p2b::achromatic<t_rgb8> t_achromatic;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_hsvf input_hsvf;
+
+ t_mask achromatic;
+ t_mask low_saturation;
+
+ t_image2d_float achromatism1;
+ t_image2d_int_u8 achromatism2;
+ t_image2d_float hue_concentration1;
+ t_image2d_int_u8 hue_concentration2;
+
+ t_image2d_hue input_h;
+ t_image2d_hue input_h2;
+ t_image2d_sat input_s;
+ t_image2d_val input_v;
+
+ t_image2d_int_u8 input_h8;
+ t_image2d_int_u8 input_s8;
+ t_image2d_int_u8 input_v8;
+
+ t_histo1d histo_h;
+ t_histo1d histo_s;
+ t_histo1d histo_v;
+
+ unsigned cnt1;
+ unsigned cnt2;
+ float percentage;
+ bool result;
+
+
+
+ // IMAGE LOADING PHASE
+ std::cout << "Image loading phase ..." << std::endl;
+// mln::io::ppm::load(input_rgb8, ANNOTATING_1_BILL_IMG_PATH"/bill03.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00082c_20p.ppm");
+
+
+// achromatism(input_rgb8,7,99.0);
+// exit(-1);
+
+ // REPERAGE DES PIXELS ACHROMATICS
+ std::cout << "Init achromatic mask ..." << std::endl;
+ initialize(achromatic, input_rgb8);
+ mln::data::fill(achromatic, false);
+ mln::data::fill((achromatic | t_achromatic(input_rgb8, 0.03)).rw(), true);
+
+ mln::io::pbm::save(achromatic, "achromatic.pbm");
+
+ std::cout << "Achieve canal forking ..." << std::endl;
+ input_hsvf = mln::data::transform(input_rgb8, t_rgb8_to_hsv());
+ input_h = mln::data::transform(input_hsvf, t_component_h());
+ input_s = mln::data::transform(input_hsvf, t_component_s());
+ input_v = mln::data::transform(input_hsvf, t_component_v());
+
+ // quid of achromatic pixels ???
+ input_h8 = mln::data::stretch(t_int_u8(), input_h);
+ input_s8 = mln::data::stretch(t_int_u8(), input_s);
+ input_v8 = mln::data::stretch(t_int_u8(), input_v);
+
+ // IDENTIFY LOW SATURATED PIXELS
+ std::cout << "Init low saturation mask ..." << std::endl;
+ initialize(low_saturation, input_s8);
+ mln::data::fill(low_saturation, false);
+ mln::data::fill((low_saturation|(mln::pw::value(input_s8) <
+ mln::pw::cst(100u))).rw(), true);
+
+ mln::io::pbm::save(low_saturation, "low_saturation.pbm");
+
+ std::cout << "Compute histograms ..." << std::endl;
+ histo_h = mln::data::compute(mln::accu::meta::stat::histo1d(),
+ input_h8|(mln::pw::value(achromatic)==false));
+
+ histo_s = mln::data::compute(mln::accu::meta::stat::histo1d(),
+ input_s8|(mln::pw::value(achromatic)==false));
+
+ histo_v = mln::data::compute(mln::accu::meta::stat::histo1d(),
+ input_v8|(mln::pw::value(achromatic)==false));
+
+
+ // Study the maps
+ hue_concentration1=mln::data::transform(input_h,
+ mln::fun::v2v::hue_concentration(histo_h));
+ achromatism1=mln::data::transform(input_rgb8,mln::fun::v2v::achromatism());
+
+ hue_concentration2= mln::data::stretch(t_int_u8(), hue_concentration1);
+ achromatism2= mln::data::stretch(t_int_u8(), achromatism1);
+
+ mln::io::pgm::save(achromatism2, "achromatism_map.pgm");
+ mln::io::pgm::save(hue_concentration2, "hue_concentration_map.pgm");
+ mln::io::pgm::save(input_s8, "saturation_map.pgm");
+
+// cnt1 = mln::data::compute(t_count(),
+// (input_hsvf|t_component_eq0(input_hsvf,-1)).rw());
+
+
+ // (I) ACHROMATISM
+ std::cout << "Achromatism" << std::endl;
+ cnt1 = count_histo(histo_h);
+ cnt2 = mln::geom::nsites(input_h);
+
+ percentage = (100.0 * (cnt2 - cnt1) / cnt2);
+ result = percentage > 99.0;
+
+ std::cout << "Nbre pixels : " << cnt2 << std::endl;
+ std::cout << "Nbre pixels achromatiques : " << (cnt2-cnt1)<< std::endl;
+ std::cout << "Percentage : " << percentage << std::endl;
+ std::cout << "Image achromatique : " << result << std::endl;
+ std::cout << std::endl;
+
+ // (II) LOW SATURATION
+ std::cout << "Saturation" << std::endl;
+
+ cnt1 = count_histo(histo_s | mln::box1d(mln::point1d(0),mln::point1d(100)));
+
+ cnt2= mln::geom::nsites(achromatic | (mln::pw::value(achromatic)==false));
+
+ percentage = (100.0 * cnt1 / cnt2);
+ result = percentage > 95.0;
+
+ std::cout << "Nbre pixels : " << cnt2 << std::endl;
+ std::cout << "Nbre p faiblement saturés : " << cnt1 << std::endl;
+ std::cout << "Percentage : " << percentage << std::endl;
+ std::cout << "Image faiblement saturé : " << result << std::endl;
+ std::cout << std::endl;
+
+ // (III) HIGH HUE CONCENTRATION
+ mln::debug::println(histo_h);
+ unsigned peak = peak_histo(histo_h);
+
+ cnt1 = count_histo(histo_h | mln::box1d(mln::point1d(peak-20),
+ mln::point1d(peak+20)));
+
+ cnt2= count_histo(histo_h);
+
+ percentage = (100.0 * cnt1 / cnt2);
+ result = percentage > 95.0;
+
+ std::cout << "Position du pic : " << peak << std::endl;
+ std::cout << "Nbre pixels : " << cnt2 << std::endl;
+ std::cout << "Nbre pixels proches pic : " << cnt1 << std::endl;
+ std::cout << "Percentage : " << percentage << std::endl;
+ std::cout << "Image fortement teintée : " << result << std::endl;
+ std::cout << std::endl;
+
+ return 0;
+}
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/lep/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/lep/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/lep/lep.cc b/scribo/sandbox/green/demo/annotating/lep/lep.cc
new file mode 100644
index 0000000..981a369
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/lep/lep.cc
@@ -0,0 +1,127 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet LEP descriptor [millet.phd.2008.pdf]
+///
+/// This is an image descriptor. It works on grey level image. First,
+/// Sobel is applied on the image. Then a specific window is build to
+/// be convolved on the image. The aim of the convolution is to mark
+/// the configuration of the neighbouring for this thresholded image.
+/// Histogram of the configuration is then created and that's all.
+
+#include <iostream>
+
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/binarization/threshold.hh>
+
+#include <mln/core/alias/w_window2d_int.hh>
+#include <mln/core/image/image2d.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/convert.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/fun/v2v/rgb8_to_rgbn.hh>
+
+#include <mln/img_path.hh>
+
+#include <mln/io/pgm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/linear/ch_convolve.hh>
+#include <mln/linear/convolve.hh>
+#include <mln/linear/sobel_2d.hh>
+
+#include <mln/make/w_window2d.hh>
+
+#include <mln/value/rgb.hh>
+#include <mln/value/rgb8.hh>
+#include <mln/value/int_u8.hh>
+
+#include <mln/core/var.hh>
+
+/// \brief Main entry.
+///
+/// Load the pgm image. Threshold it. Identifie the pixel
+/// configuration with specific convolution filter. Build 1d histogram.
+
+int main()
+{
+ using namespace mln;
+
+ typedef mln::w_window2d_int t_win2d;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::value::int_u<9> t_int_u9;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::image2d<t_int_u9> t_image2d_int_u9;
+ typedef mln::image2d<int> t_image2d_int;
+ typedef mln::image2d<unsigned> t_image2d_unsigned;
+ typedef mln::image2d<float> t_image2d_float;
+ typedef mln::image2d<double> t_image2d_double;
+ typedef mln::image2d<bool> t_image2d_bool;
+ typedef mln::image1d<unsigned> t_histo1d;
+ typedef mln::accu::meta::stat::histo1d t_histo1d_fun;
+
+ t_image2d_int_u8 input_int_u8;
+ t_image2d_int input_int;
+ t_image2d_unsigned input_unsigned;
+ t_image2d_float sobel;
+ t_image2d_bool thresh_bool;
+ t_image2d_int_u8 thresh_int_u8;
+ t_image2d_float conf_float;
+ t_image2d_int_u9 conf_int_u9;
+ t_histo1d histo;
+
+ // IMAGE LOADING PHASE
+ std::cout << "Image loading phase ..." << std::endl;
+ mln::io::pgm::load(input_int_u8,ICDAR_50P_PGM_IMG_PATH"/mp00082c_50p.pgm");
+
+ sobel = mln::linear::sobel_2d_l1_norm(input_int_u8);
+
+ //mln::io::plot::save_image_sh(sobel, "sobel.sh");
+ thresh_bool = mln::binarization::threshold(sobel, 100);
+ thresh_int_u8 = mln::data::convert(mln::value::int_u8(), thresh_bool);
+ //mln::io::plot::save_image_sh(thresh, "thresh.sh");
+
+ int ws[] = { 1, 2, 4,
+ 8, 256, 16,
+ 32, 64, 128 };
+
+ t_win2d win2d = mln::make::w_window2d(ws);
+ conf_float = mln::linear::convolve(thresh_int_u8, win2d);
+ conf_int_u9 = mln::data::convert(t_int_u9(), conf_float);
+ histo = mln::data::compute(t_histo1d_fun(), conf_int_u9);
+
+ mln::io::plot::save_image_sh(histo, "histo.sh");
+
+ // PRINTING PHASE
+ mln::debug::println(histo);
+}
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/nb_color/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/nb_color/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/nb_color/nb_color.cc b/scribo/sandbox/green/demo/annotating/nb_color/nb_color.cc
new file mode 100644
index 0000000..acc64e9
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/nb_color/nb_color.cc
@@ -0,0 +1,143 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Compute the number of colors in an image.
+///
+/// Build histogram of colors and count the bins different from zero.
+
+#include <iostream>
+#include <sstream>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/math/sum.hh>
+#include <mln/accu/math/count.hh>
+#include <mln/accu/stat/histo3d_rgb.hh>
+#include <mln/accu/stat/mean.hh>
+#include <mln/accu/stat/variance.hh>
+
+#include <mln/algebra/vec.hh>
+
+#include <mln/arith/diff_abs.hh>
+
+#include <mln/core/macros.hh>
+#include <mln/core/alias/neighb3d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/image3d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+#include <mln/core/routine/initialize.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/fill.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/fun/v2v/rgb8_to_rgbn.hh>
+
+#include <mln/io/pgm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/ppm/load.hh>
+#include <mln/io/ppm/save.hh>
+
+#include <mln/labeling/regional_maxima.hh>
+#include <mln/labeling/mean_values.hh>
+#include <mln/labeling/compute.hh>
+
+#include <mln/literal/colors.hh>
+
+#include <mln/morpho/opening/volume.hh>
+#include <mln/morpho/elementary/dilation.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/pw/cst.hh>
+
+#include <mln/util/array.hh>
+#include <mln/util/timer.hh>
+
+#include <mln/value/label_8.hh>
+#include <mln/value/rgb8.hh>
+#include <mln/value/rgb.hh>
+#include <mln/value/int_u.hh>
+
+/// \brief Count the colors.
+///
+/// \param[in] image the name of the image to process.
+///
+/// \return the number of colors.
+///
+/// Count the color by building histogram. Quantification is done to
+/// reduce the size of the histogram.
+///
+/// \fixme: Strange compilation warning, I don't know how to solve it!
+
+// n < 8, n is the degree of quantification
+template <unsigned n>
+unsigned count_image_color(const std::string& image)
+{
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::rgb<n> t_rgbn;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_rgbn> t_image2d_rgbn;
+ typedef mln::image3d<unsigned> t_histo3d;
+ typedef mln::fun::v2v::rgb8_to_rgbn<n> t_rgb8_to_rgbn;
+ typedef mln::accu::meta::stat::histo3d_rgb t_histo3d_fun;
+ typedef mln::accu::meta::math::count t_count_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_rgbn input_rgbn;
+ t_image2d_rgbn output_rgbn;
+ t_histo3d histo;
+ t_histo3d opened;
+
+ mln::io::ppm::load(input_rgb8, image.c_str());
+
+// unsigned nb_pixel = input_rgb8.ncols() * input_rgb8.nrows();
+// unsigned min_volume = (unsigned)(nb_pixel * 0.054);
+ unsigned nb_color = 0;
+
+ input_rgbn = mln::data::transform(input_rgb8, t_rgb8_to_rgbn());
+ histo = mln::data::compute(t_histo3d_fun(), input_rgbn);
+ nb_color = mln::data::compute(t_count_fun(),
+ (histo | (mln::pw::value(histo) != 0)).rw());
+
+ return nb_color;
+}
+
+
+/// \brief Main entry.
+///
+/// Print the number of colors.
+int main()
+{
+ unsigned val=count_image_color<8>(ANNOTATING_1_PHOTO_IMG_PATH "/photo01.ppm");
+
+ std::cout << "nb color : " << val << std::endl;
+
+ return 0;
+}
+
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/project/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/project/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/project/project.cc b/scribo/sandbox/green/demo/annotating/project/project.cc
new file mode 100644
index 0000000..4cab73c
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/project/project.cc
@@ -0,0 +1,275 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet PROJECT descriptor [millet.phd.2008.pdf]
+///
+/// This is an image descriptor. It works a grey level image. First,
+/// we make subsampling of the image to the size 100x100. Then Sobel
+/// is applied. After that, we divide the image in 2 sub-images with
+/// horizontal or vertical splitting. Projection (summing along a
+/// direction) is done in a way that preserves a vector of size
+/// 100. Finally, it results 4 vector of size 100 which are concatened
+/// to build the descriptor.
+
+#include <iostream>
+#include <sstream>
+
+#include <mln/accu/image/init.hh>
+#include <mln/accu/image/take.hh>
+#include <mln/accu/image/to_result.hh>
+#include <mln/accu/stat/mean.hh>
+
+#include <mln/binarization/threshold.hh>
+
+#include <mln/core/alias/box2d.hh>
+#include <mln/core/alias/point2d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+#include <mln/core/routine/initialize.hh>
+#include <mln/core/image/dmorph/unproject_image.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/convert.hh>
+#include <mln/data/paste.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/fun/v2v/projection.hh>
+
+#include <mln/img_path.hh>
+
+#include <mln/io/pgm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/pbm/save.hh>
+
+#include <mln/linear/sobel_2d.hh>
+
+#include <mln/opt/at.hh>
+
+/// \brief get the sub-image name.
+///
+/// \param[in] base the common part of the name.
+/// \param[in] i the column.
+/// \param[in] j the line.
+///
+/// \result the complete name of the sub-image.
+///
+/// This function builds the complete name of a sub-image by making
+/// explicit its position in the array.
+const char *get_name(const char *base, const unsigned i, const unsigned j)
+{
+ std::ostringstream name;
+
+ name << base;
+ name << i;
+ name << "_";
+ name << j;
+ name << ".ppm";
+
+ return name.str().c_str();
+}
+
+
+/// \brief Project row data.
+///
+/// \param[in] img the binary image converted to u_int8.
+///
+/// \ return a vector.
+///
+/// This routine "eats" one dimension of the image by making a
+/// projection. The projection sums the pixel along a specific
+/// direction. It results a vector.
+mln::image1d<mln::value::int_u8>
+project_row(const mln::image2d<mln::value::int_u8>& img)
+{
+ typedef mln::accu::math::sum<mln::value::int_u8,mln::value::int_u8> t_sum;
+ typedef mln::fun::v2v::projection<mln::point2d,0> t_projection;
+
+ mln::image1d<t_sum> img_accu(img.ncols());
+
+ mln::accu::image::init(img_accu);
+
+ mln::accu::image::take(unproject(img_accu,
+ img.domain(),
+ t_projection()).rw(),
+ img);
+
+ return mln::accu::image::to_result(img_accu);
+}
+
+
+/// \brief Project column data.
+///
+/// \param[in] img the binary image converted to u_int8.
+///
+/// \ return a vector.
+///
+/// This routine "eats" one dimension of the image by making a
+/// projection. The projection sums the pixel along a specific
+/// direction. It results a vector.
+mln::image1d<mln::value::int_u8>
+project_col(const mln::image2d<mln::value::int_u8>& img)
+{
+ typedef mln::accu::math::sum<mln::value::int_u8,mln::value::int_u8> t_sum;
+ typedef mln::fun::v2v::projection<mln::point2d,1> t_projection;
+
+ mln::image1d<t_sum> img_accu(img.nrows());
+
+ mln::accu::image::init(img_accu);
+
+ mln::accu::image::take(unproject(img_accu,
+ img.domain(),
+ t_projection()).rw(),
+ img);
+
+ return mln::accu::image::to_result(img_accu);
+}
+
+
+/// \brief The image processing routine.
+///
+/// Describe the processing chain. First subsample the input image to
+/// 100x100. This is done by splitting the image and then compute the
+/// mean of the subimage. The result is a pixel of the subsample
+/// image. Then apply Sobel and threshold. Then split in two
+/// (vertically or horizontally), it results 4 images. Finally, make
+/// the projection.
+int main()
+{
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::algebra::vec<3,float> t_vec3f;
+ typedef mln::algebra::vec<3,unsigned> t_vec3u;
+ typedef mln::image2d<float> t_image2d_float;
+ typedef mln::image2d<bool> t_image2d_bool;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::accu::meta::stat::mean t_mean_fun;
+ typedef mln::accu::math::sum<t_int_u8,t_int_u8> t_sum;
+ typedef mln::image1d<t_int_u8> t_image1d_int_u8;
+
+ t_image2d_int_u8 input_int_u8;
+ t_image2d_float sobel;
+ t_image2d_bool thresh_bool;
+ t_image2d_int_u8 thresh_int_u8;
+
+ // IMAGE LOADING PHASE
+ std::cout << "Image loading phase ..." << std::endl;
+ mln::io::pgm::load(input_int_u8,ICDAR_50P_PGM_IMG_PATH"/mp00082c_50p.pgm");
+
+
+ // IMAGE SPLITTING PHASE
+ t_image2d_int_u8 subimg_int_u8(mln::box2d(mln::point2d(0,0),
+ mln::point2d(100,100)));
+
+ mln::box2d domain = input_int_u8.domain();
+ mln::point2d pmin = domain.pmin();
+ mln::point2d pmax = domain.pmax();
+
+ unsigned sz_row = (pmax.row() - pmin.row())/ 100;
+ unsigned sz_col = (pmax.col() - pmin.col())/ 100;
+
+ std::cout << domain << std::endl;
+
+ // Subsampling in 100x100
+ // FIXME Test that is it a subsampling, not a upsampling!
+ for (unsigned i = 0; i < 100; ++i)
+ for (unsigned j = 0; j < 100; ++j)
+ {
+ mln::point2d min(pmin.row()+sz_row*i,pmin.col()+sz_col*j);
+ mln::point2d max(pmin.row()+sz_row*(i+1),pmin.col()+sz_col*(j+1));
+ mln::box2d dom(min,max);
+
+ std::cout << dom << std::endl;
+
+ // Save it
+ t_image2d_int_u8 input_part_int_u8(dom);
+
+ mln::data::paste(input_int_u8 | dom, input_part_int_u8);
+ //mln::io::pgm::save(input_part_int_u8, get_name("output",i,j));
+ float mean = mln::data::compute(t_mean_fun(), input_part_int_u8);
+ t_int_u8 val = static_cast<t_int_u8>(mean);
+ mln::opt::at(subimg_int_u8, i,j) = val;
+ }
+
+ mln::io::pgm::save(subimg_int_u8, "subimg.pgm");
+
+ sobel = mln::linear::sobel_2d_l1_norm(subimg_int_u8);
+ thresh_bool = mln::binarization::threshold(sobel, 100);
+ thresh_int_u8 = mln::data::convert(t_int_u8(), thresh_bool);
+
+ mln::io::pbm::save(thresh_bool, "subimg.pbm");
+
+ // Define img_up, img_down, img_left, img_right
+ t_image2d_int_u8 img_up(mln::box2d(mln::point2d(0,0),
+ mln::point2d(49,99)));
+
+ mln::data::paste(thresh_int_u8 | img_up.domain(), img_up);
+
+
+ t_image2d_int_u8 img_down(mln::box2d(mln::point2d(50,0),
+ mln::point2d(99,99)));
+
+ mln::data::paste(thresh_int_u8 | img_down.domain(), img_down);
+
+ t_image2d_int_u8 img_left(mln::box2d(mln::point2d(0,0),
+ mln::point2d(99,49)));
+
+ mln::data::paste(thresh_int_u8 | img_left.domain(), img_left);
+
+
+ t_image2d_int_u8 img_right(mln::box2d(mln::point2d(0,50),
+ mln::point2d(99,99)));
+
+ mln::data::paste(thresh_int_u8 | img_right.domain(), img_right);
+
+
+ // Define project_up, project_down, project_left, project_right
+ t_image1d_int_u8 project_up = project_row(img_up);
+ t_image1d_int_u8 project_down = project_row(img_down);
+ t_image1d_int_u8 project_left = project_col(img_left);
+ t_image1d_int_u8 project_right = project_col(img_right);
+
+ mln::io::pgm::save(img_up, "up.pgm");
+ mln::io::pgm::save(img_down, "down.pgm");
+ mln::io::pgm::save(img_left, "left.pgm");
+ mln::io::pgm::save(img_right, "right.pgm");
+
+ // PRINTING PHASE
+
+ std::cout << std::endl << "UP" << std::endl;
+ mln::debug::println(project_up);
+
+ std::cout << std::endl << "DOWN" << std::endl;
+ mln::debug::println(project_down);
+
+ std::cout << std::endl << "LEFT" << std::endl;
+ mln::debug::println(project_left);
+
+ std::cout << std::endl << "RIGHT" << std::endl;
+ mln::debug::println(project_right);
+}
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/rgb_64/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/rgb_64/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/rgb_64/rgb_64.cc b/scribo/sandbox/green/demo/annotating/rgb_64/rgb_64.cc
new file mode 100644
index 0000000..b49f979
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/rgb_64/rgb_64.cc
@@ -0,0 +1,80 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet RGB-64 descriptor [millet.phd.2008.pdf]
+///
+/// This is an image descriptor. It works by making 2 bits
+/// quantification on each channel. It result a processing in RGB-64
+/// space. Then we build the color histogram.
+
+#include <iostream>
+
+#include <mln/accu/stat/histo3d_rgb.hh>
+
+#include <mln/core/image/image2d.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/fun/v2v/rgb8_to_rgbn.hh>
+
+#include <mln/img_path.hh>
+
+#include <mln/io/ppm/load.hh>
+
+#include <mln/value/rgb.hh>
+#include <mln/value/rgb8.hh>
+
+/// \brief Main entry.
+///
+/// Loading, Quantifiying in two bits each channel, then building
+/// color histogram.
+int main()
+{
+ typedef mln::fun::v2v::rgb8_to_rgbn<2> t_rgb8_to_rgb2;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::rgb<2> t_rgb2;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_rgb2> t_image2d_rgb2;
+ typedef mln::image3d<unsigned> t_histo3d;
+ typedef mln::accu::meta::stat::histo3d_rgb t_histo3d_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_rgb2 input_rgb2;
+ t_histo3d histo;
+
+ // IMAGE LOADING PHASE
+ std::cout << "Image loading phase ..." << std::endl;
+ mln::io::ppm::load(input_rgb8, ICDAR_50P_PPM_IMG_PATH"/mp00082c_50p.ppm");
+ input_rgb2 = mln::data::transform(input_rgb8, t_rgb8_to_rgb2());
+ histo = mln::data::compute(t_histo3d_fun(), input_rgb2);
+
+ // PRINTING PHASE
+ mln::debug::println(histo);
+}
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/rgb_64_9/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/rgb_64_9/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/rgb_64_9/rgb_64_9.cc b/scribo/sandbox/green/demo/annotating/rgb_64_9/rgb_64_9.cc
new file mode 100644
index 0000000..355cbfd
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/rgb_64_9/rgb_64_9.cc
@@ -0,0 +1,132 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet RGB-64 descriptor [millet.phd.2008.pdf]
+///
+/// This is an image descriptor. It works by making 2 bits
+/// quantification on each channel. It result a processing in RGB-64
+/// space. Then we build the color histogram.
+
+#include <iostream>
+#include <sstream>
+
+#include <mln/accu/stat/histo3d_rgb.hh>
+
+#include <mln/core/alias/box2d.hh>
+#include <mln/core/alias/point2d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+#include <mln/core/routine/initialize.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/paste.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/fun/v2v/rgb8_to_rgbn.hh>
+
+#include <mln/img_path.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/ppm/save.hh>
+
+#include <mln/value/rgb.hh>
+#include <mln/value/rgb8.hh>
+
+/// \brief Get the sub image name.
+///
+/// \return the name of the ith/jth sub image of the array.
+const char *get_name(const char *base, const unsigned i, const unsigned j)
+{
+ std::ostringstream name;
+
+ name << base;
+ name << i;
+ name << "_";
+ name << j;
+ name << ".ppm";
+
+ return name.str().c_str();
+}
+
+/// \brief Same code as rgb-64 but divide the wall image in nine.
+///
+/// Adding a splitting phase for image rgb-64 code reference.
+int main()
+{
+ typedef mln::fun::v2v::rgb8_to_rgbn<2> t_rgb8_to_rgb2;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::rgb<2> t_rgb2;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_rgb2> t_image2d_rgb2;
+ typedef mln::image3d<unsigned> t_histo3d;
+ typedef mln::accu::meta::stat::histo3d_rgb t_histo3d_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_rgb2 input_rgb2;
+ t_histo3d histo;
+
+ // IMAGE LOADING PHASE
+ std::cout << "Image loading phase ..." << std::endl;
+ mln::io::ppm::load(input_rgb8, ICDAR_50P_PPM_IMG_PATH"/mp00082c_50p.ppm");
+
+ input_rgb2 = mln::data::transform(input_rgb8, t_rgb8_to_rgb2());
+
+ // IMAGE SPLITTING PHASE
+ mln::box2d domain = input_rgb2.domain();
+ mln::point2d pmin = domain.pmin();
+ mln::point2d pmax = domain.pmax();
+
+ unsigned sz_row = (pmax.row() - pmin.row())/ 3;
+ unsigned sz_col = (pmax.col() - pmin.col())/ 3;
+
+ std::cout << domain << std::endl;
+
+ // Divide the domain in nine sub-domains.
+ for (unsigned i = 0; i < 3; ++i)
+ for (unsigned j = 0; j < 3; ++j)
+ {
+ mln::point2d min(pmin.row()+sz_row*i,pmin.col()+sz_col*j);
+ mln::point2d max(pmin.row()+sz_row*(i+1),pmin.col()+sz_col*(j+1));
+ mln::box2d dom(min,max);
+
+ std::cout << dom << std::endl;
+
+ // Save it
+ t_image2d_rgb2 input_1o9_rgb2(dom);
+
+ mln::data::paste(input_rgb2 | dom, input_1o9_rgb2);
+ mln::io::ppm::save(input_1o9_rgb2, get_name("output",i,j));
+
+ histo = mln::data::compute(t_histo3d_fun(), input_1o9_rgb2);
+
+ // PRINTING PHASE
+ mln::debug::println(histo);
+ }
+
+}
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/stddev_color/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/stddev_color/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/stddev_color/stddev_color.cc b/scribo/sandbox/green/demo/annotating/stddev_color/stddev_color.cc
new file mode 100644
index 0000000..549834f
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/stddev_color/stddev_color.cc
@@ -0,0 +1,191 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet clipart detection [millet.phd.2008.pdf]
+///
+/// The aim of this descriptor is to recognize clipart. To do this, we
+/// assume that clipart have their histogram concentrated around their
+/// mode. This is particularly true if the clipart is design by hand,
+/// because a very small number of grey tones or colors are used to
+/// draw it. But sometimes, computer assists their creation and we can
+/// find some continuous set of tones and this artefact create noise
+/// for the detection technique describe bellow.
+
+#include <iostream>
+#include <sstream>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/max_site.hh>
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/core/macros.hh>
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/image3d.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/fill.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/fun/v2v/rgb8_to_int_u8.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/math/sqr.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/value/rgb8.hh>
+#include <mln/value/int_u.hh>
+
+
+
+/// \brief The R function of Millet
+///
+/// \param[in] p the position of the pic.
+/// \param[in] histo_p the histo value of the pic.
+/// \param[in] x the position of the element which we compute the contrib.
+/// \param[in] histo_x the histo value of that element.
+///
+/// \result the contribution of the element x.
+///
+/// This function compute the variance-like contribution of an element
+/// x linked to the pic of the histogram. In fact, every thing is like
+/// we compute a square distance-like between the element x and the
+/// pic in the normalized histogram. Notice that the normalized
+/// histogram is the histogram divide by the value of it's pic. So at
+/// the pic, the value equals 1. It's a current representation of the
+/// histogram in image processing, we can find it in gimp for exemple.
+float r(short p, unsigned histo_p, short x, unsigned histo_x)
+{
+ float result = mln::math::sqr(((float)histo_x / histo_p) * (x-p));
+
+ return result;
+}
+
+/// Brief compute the whole deviation of Millet
+///
+/// \param[in] image the input image to analyze.
+///
+/// \return the deviation.
+///
+/// The deviation uses the R function. It stats by finding the pic. If
+/// the pic is near the rigth border of the histo, compute the R
+/// function on the left neighbouring of the pic. If the pic is near
+/// the left border of the histo, compute the R function on the right
+/// neigbouring. Otherwise, compute the average of the right and left
+/// results. The selected neighbouring is composed of five pixels at
+/// the right or at the left of the pic. The detection of clipart
+/// assumes that the majority of the energy of the histogram is closed
+/// to the pic (five pixels around it).
+unsigned stddev_color(const std::string& image)
+{
+ typedef mln::point1d t_point1d;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::image1d<unsigned> t_histo1d;
+ typedef mln::fun::v2v::rgb8_to_int_u8 t_rgb8_to_int_u8;
+ typedef mln::accu::meta::stat::histo1d t_histo1d_fun;
+ typedef mln::accu::max_site<t_histo1d> t_max_site_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_int_u8 input_int_u8;
+ t_histo1d histo;
+ t_point1d max_site;
+
+ mln::io::ppm::load(input_rgb8, image.c_str());
+ input_int_u8 = mln::data::transform(input_rgb8, t_rgb8_to_int_u8());
+ histo = mln::data::compute(t_histo1d_fun(), input_int_u8);
+
+ mln::io::pgm::save(input_int_u8, "tmp.pgm");
+ mln::io::plot::save_image_sh(histo, "histo.sh");
+ mln::debug::println(histo);
+
+ // Find the peak of the histogram
+ unsigned v_max = mln::opt::at(histo, 0);
+ short p_max = 0;
+
+ mln_piter_(t_histo1d) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ // Compute the specific stddev
+
+ float stddev_low = 0.0;
+ float stddev_up = 0.0;
+ float stddev = 0.0;
+
+ if (250 > p_max)
+ for (short i = p_max+1; i < p_max+6; ++i)
+ stddev_up += r(p_max, mln::opt::at(histo,p_max),
+ i, mln::opt::at(histo,i));
+
+ if (5 < p_max)
+ for (short i = p_max-1; i > p_max-6; --i)
+ stddev_low += r(p_max, mln::opt::at(histo,p_max),
+ i, mln::opt::at(histo,i));
+
+ stddev = (250 < p_max)? stddev_low : (5 > p_max)? stddev_up :
+ (stddev_low + stddev_up)/2;
+
+ std::cout << "max_site : " << p_max << std::endl;
+ std::cout << "h(max_site) : " << v_max << std::endl;
+ std::cout << "stddev_up : " << stddev_up << std::endl;
+ std::cout << "stddev_low : " << stddev_low << std::endl;
+ std::cout << "stddev : " << stddev << std::endl;
+
+ return 0;
+}
+
+
+/// \brief Main entry.
+///
+/// Front end for image processing.
+int main()
+{
+// unsigned val = stdev_color(ANNOTATING_1_PHOTO_IMG_PATH "/photo01.ppm");
+ unsigned val = stddev_color(ANNOTATING_1_LOGO_IMG_PATH "/logo06.ppm");
+
+// std::cout << "nb color : " << val << std::endl;
+
+ return 0;
+}
+
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/stddev_color_16/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/stddev_color_16/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/stddev_color_16/stddev_color_16.cc b/scribo/sandbox/green/demo/annotating/stddev_color_16/stddev_color_16.cc
new file mode 100644
index 0000000..98d94fd
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/stddev_color_16/stddev_color_16.cc
@@ -0,0 +1,261 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet clipart detection [millet.phd.2008.pdf]
+///
+/// The aim of this descriptor is to recognize clipart. To do this, we
+/// assume that clipart have their histogram concentrated around their
+/// mode. This is particularly true if the clipart is design by hand,
+/// because a very small number of grey tones or colors are used to
+/// draw it. But sometimes, computer assists their creation and we can
+/// find some continuous set of tones and this artefact create noise
+/// for the detection technique describe bellow. When photographies
+/// has some large uniform border, the detection can fail. To improve
+/// the method, Millet decide to subdivise the image in 16 sub images
+/// on which it applies the test.
+#include <iostream>
+#include <sstream>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/max_site.hh>
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/core/macros.hh>
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/image3d.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/fill.hh>
+#include <mln/data/transform.hh>
+#include <mln/data/paste.hh>
+
+#include <mln/fun/v2v/rgb8_to_int_u8.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/math/sqr.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/value/rgb8.hh>
+#include <mln/value/int_u.hh>
+
+
+/// \brief The R function of Millet
+///
+/// \param[in] p the position of the pic.
+/// \param[in] histo_p the histo value of the pic.
+/// \param[in] x the position of the element which we compute the contrib.
+/// \param[in] histo_x the histo value of that element.
+///
+/// \result the contribution of the element x.
+///
+/// This function compute the variance-like contribution of an element
+/// x linked to the pic of the histogram. In fact, every thing is like
+/// we compute a square distance-like between the element x and the
+/// pic in the normalized histogram. Notice that the normalized
+/// histogram is the histogram divide by the value of it's pic. So at
+/// the pic, the value equals 1. It's a current representation of the
+/// histogram in image processing, we can find it in gimp for exemple.
+float r(short p, unsigned histo_p, short x, unsigned histo_x)
+{
+ float result = mln::math::sqr(((float)histo_x / histo_p) * (x-p));
+
+ return result;
+}
+
+/// Brief compute the whole deviation of Millet
+///
+/// \param[in] input_int_u8 the 8 bits input image to analyze.
+/// \param[in] name_histo the name of the output histogram.
+/// \param[in] name_image the name of the ouput sub image.
+///
+/// \return the deviation, but at this time nothing..
+///
+/// The deviation uses the R function. It stats by finding the pic. If
+/// the pic is near the rigth border of the histo, compute the R
+/// function on the left neighbouring of the pic. If the pic is near
+/// the left border of the histo, compute the R function on the right
+/// neigbouring. Otherwise, compute the average of the right and left
+/// results. The selected neighbouring is composed of five pixels at
+/// the right or at the left of the pic. The detection of clipart
+/// assumes that the majority of the energy of the histogram is closed
+/// to the pic (five pixels around it).
+unsigned stddev_color(mln::image2d<mln::value::int_u8> input_int_u8,
+ const char *name_histo,
+ const char *name_image)
+{
+ typedef mln::point1d t_point1d;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::image1d<unsigned> t_histo1d;
+ typedef mln::fun::v2v::rgb8_to_int_u8 t_rgb8_to_int_u8;
+ typedef mln::accu::meta::stat::histo1d t_histo1d_fun;
+ typedef mln::accu::max_site<t_histo1d> t_max_site_fun;
+
+ t_histo1d histo;
+
+ std::cout << "histo : " << name_histo << std::endl;
+ std::cout << "image : " << name_image << std::endl;
+
+ histo = mln::data::compute(t_histo1d_fun(), input_int_u8);
+
+ mln::io::pgm::save(input_int_u8, name_image);
+ mln::io::plot::save_image_sh(histo, name_histo);
+ mln::debug::println(histo);
+
+ // Find the peak of the histogram
+ unsigned v_max = mln::opt::at(histo, 0);
+ short p_max = 0;
+
+ mln_piter_(t_histo1d) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ // Compute the specific stddev
+
+ float stddev_low = 0.0;
+ float stddev_up = 0.0;
+ float stddev = 0.0;
+
+ if (250 > p_max)
+ for (short i = p_max+1; i < p_max+6; ++i)
+ stddev_up += r(p_max, mln::opt::at(histo,p_max),
+ i, mln::opt::at(histo,i));
+
+ if (5 < p_max)
+ for (short i = p_max-1; i > p_max-6; --i)
+ stddev_low += r(p_max, mln::opt::at(histo,p_max),
+ i, mln::opt::at(histo,i));
+
+ stddev = (250 < p_max)? stddev_low : (5 > p_max)? stddev_up :
+ (stddev_low + stddev_up)/2;
+
+ std::cout << "max_site : " << p_max << std::endl;
+ std::cout << "h(max_site) : " << v_max << std::endl;
+ std::cout << "stddev_up : " << stddev_up << std::endl;
+ std::cout << "stddev_low : " << stddev_low << std::endl;
+ std::cout << "stddev : " << stddev << std::endl;
+
+ return 0;
+}
+
+
+/// \brief Divide the image in 16 sub images.
+///
+/// \param[in] image the input image.
+///
+/// \result nothing.
+///
+/// Divive the input image in 16 by uniform and geometrical
+/// method. When a sub image is ready, call the stddev routine to show
+/// stats on it.
+unsigned stddev_color_16(const std::string& image)
+{
+ typedef mln::point1d t_point1d;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::image1d<unsigned> t_histo1d;
+ typedef mln::fun::v2v::rgb8_to_int_u8 t_rgb8_to_int_u8;
+ typedef mln::accu::meta::stat::histo1d t_histo1d_fun;
+ typedef mln::accu::max_site<t_histo1d> t_max_site_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_int_u8 input_int_u8;
+
+ mln::io::ppm::load(input_rgb8, image.c_str());
+ input_int_u8 = mln::data::transform(input_rgb8, t_rgb8_to_int_u8());
+
+ // IMAGE SPLITTING PHASE
+ mln::box2d domain = input_int_u8.domain();
+ mln::point2d pmin = domain.pmin();
+ mln::point2d pmax = domain.pmax();
+
+ unsigned sz_row = (pmax.row() - pmin.row())/ 4;
+ unsigned sz_col = (pmax.col() - pmin.col())/ 4;
+
+ std::cout << domain << std::endl;
+
+ // Divide the domain in nine sub-domains.
+ for (unsigned i = 0; i < 4; ++i)
+ for (unsigned j = 0; j < 4; ++j)
+ {
+ mln::point2d min(pmin.row()+sz_row*i,pmin.col()+sz_col*j);
+ mln::point2d max(pmin.row()+sz_row*(i+1),pmin.col()+sz_col*(j+1));
+ mln::box2d dom(min,max);
+
+ std::cout << dom << std::endl;
+
+ // Save it
+ t_image2d_int_u8 input_1o16_int_u8(dom);
+ std::ostringstream name_histo("");
+ std::ostringstream name_image("");
+
+ name_histo << "histo" << i << "_" << j << ".sh";
+ name_image << "image" << i << "_" << j << ".ppm";
+
+ mln::data::paste(input_int_u8 | dom, input_1o16_int_u8);
+
+ stddev_color(input_1o16_int_u8,
+ name_histo.str().c_str(),
+ name_image.str().c_str());
+ }
+
+ return 0;
+}
+
+
+/// \brief Main entry.
+///
+/// Just a front end for image processing routine.
+int main()
+{
+// unsigned val = stddev_color_16(ANNOTATING_1_PHOTO_IMG_PATH "/photo01.ppm");
+ unsigned val = stddev_color_16(ANNOTATING_1_LOGO_IMG_PATH "/logo06.ppm");
+
+// std::cout << "nb color : " << val << std::endl;
+
+ return 0;
+}
+
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/achromastism/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/achromastism/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/achromastism/achromastism.cc b/scribo/sandbox/green/exp/annotating/achromastism/achromastism.cc
new file mode 100644
index 0000000..3486b20
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/achromastism/achromastism.cc
@@ -0,0 +1,179 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+
+/// \file
+///
+/// \brief Implement the Millet achromatism operator [millet.phd.2008.pdf]
+///
+/// An image is said to be achromatic when have the RGB channel which
+/// are quite identicals.
+
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/stretch.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/math/max.hh>
+#include <mln/math/min.hh>
+
+#include <mln/geom/nsites.hh>
+
+#include <mln/fun/v2v/rgb_to_achromatism_map.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/value/rgb8.hh>
+
+
+/// \brief Sum all the bins of the histogram.
+///
+/// \param[in] img the histogram based on image.
+///
+/// \return the sum of the overall bins.
+///
+/// Sum evry bins and return the result.
+template <typename I>
+unsigned count_histo(const mln::Image<I>& img_)
+{
+ const I& img = exact(img_);
+
+ mln_precondition(img.is_valid());
+
+ unsigned result = 0;
+
+ mln_piter(I) p(img.domain());
+
+ for_all(p)
+ result += img(p);
+
+ return result;
+}
+
+/// \brief Decide if an image is achromatic or not [Millet].
+///
+/// \param[in] input the input image.
+/// \param[in] output the histogram of the achromatic map.
+/// \param[in] threshold the distance threshold used for equality.
+///
+/// This is an improving of the Millet test. The original test
+/// compares rgb values to each other and look at differences greater
+/// than the threshold. If the number of pixel that pass the test are
+/// greater than 99.0, then the image is declared achromatic. In fact,
+/// there is few variations between the three channels, so we can say
+/// that it is like a grey image. We can with no too distortions
+/// replace the color image by the grey one. The improving is in first
+/// creating a map of the difference. As we can't keep the free
+/// differences between channels, we look at reducing the test and we
+/// find an equivalent one based on the difference between minima
+/// channel value and the maxima channel value. After the map is
+/// ready, we make binarization with the threshold. Then we compute
+/// the histogram 1d for every pixels of the map that are greater the
+/// threshold. Then, we count pixels in the histogram and traduce the
+/// count in percentage to compare to the second threshold. Details
+/// are saved in files and printed in the screen.
+float achromatism_test(const std::string input,
+ const std::string output,
+ const unsigned threshold)
+
+{
+ typedef mln::fun::v2v::rgb_to_achromatism_map<8> t_rgb_to_achromatism_map;
+
+ mln::image2d<mln::value::rgb8> input_rgb8;
+ mln::image2d<mln::value::int_u8> map;
+ mln::image1d<unsigned> histo;
+ unsigned cnt1;
+ unsigned cnt2;
+ float prop;
+
+ mln::io::ppm::load(input_rgb8, input.c_str());
+
+ map = mln::data::transform(input_rgb8, t_rgb_to_achromatism_map());
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(), map);
+ cnt1 = count_histo(histo | mln::box1d(mln::point1d(0),
+ mln::point1d(threshold)));
+ cnt2 = mln::geom::nsites(input_rgb8);
+ prop = ((100.0 * cnt1) / cnt2);
+
+ mln::io::plot::save_image_sh(histo, output.c_str());
+
+ return prop;
+}
+
+
+/// \brief The main entry.
+///
+/// Deal with boost library for walking over image database
+/// directories. Call the image processing routine and compute some
+/// stats on the result.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+ t_path full_path[] = {t_path(ICDAR_20P_PPM_IMG_PATH)};
+
+ for (int i = 0; i < 1; ++i)
+ {
+ std::cout << "entering " << full_path[i] << std::endl;
+
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ float prop = 0.0;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ // concatenation de chaine
+ t_path directory(ANNOTATING_RET_PATH);
+ t_path leaf = dir_iter->path().leaf();
+ t_path output = change_extension(directory / leaf, ".sh");
+
+ prop = achromatism_test(dir_iter->path().string(),
+ output.string(),
+ 11);
+
+ std::cout << output << " : " << prop << std::endl;
+ std::cerr << output << " : " << prop << std::endl;
+ }
+ }
+ }
+
+ return 0;
+}
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-color.txt b/scribo/sandbox/green/exp/annotating/achromastism/text-color.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-color.txt
copy to scribo/sandbox/green/exp/annotating/achromastism/text-color.txt
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-img.txt b/scribo/sandbox/green/exp/annotating/achromastism/text-img.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-img.txt
copy to scribo/sandbox/green/exp/annotating/achromastism/text-img.txt
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-only.txt b/scribo/sandbox/green/exp/annotating/achromastism/text-only.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-only.txt
copy to scribo/sandbox/green/exp/annotating/achromastism/text-only.txt
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/bench/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/bench/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/bench/bench.cc b/scribo/sandbox/green/exp/annotating/bench/bench.cc
new file mode 100644
index 0000000..102a896
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/bench/bench.cc
@@ -0,0 +1,1450 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// This file is the final work to differentiate between the two image
+/// databases AFP and ICDAR. Several tests are used to show
+/// improvement of detection. The jonathan's tests are put together to
+/// compare them to the others (in fact, to the low saturation one).
+
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/algebra/vec.hh>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/stat/mean.hh>
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/arith/minus.hh>
+#include <mln/arith/times.hh>
+#include <mln/arith/diff_abs.hh>
+#include <mln/arith/div.hh>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+#include <mln/core/alias/point1d.hh>
+#include <mln/core/alias/box1d.hh>
+
+#include <mln/data/transform.hh>
+#include <mln/data/compute.hh>
+#include <mln/data/convert.hh>
+#include <mln/data/stretch.hh>
+#include <mln/data/fill.hh>
+
+#include <mln/fun/v2v/component.hh>
+#include <mln/fun/v2v/rgb_to_hue_map.hh>
+#include <mln/fun/v2v/rgb_to_saturation_map.hh>
+#include <mln/fun/v2v/rgb_to_value_map.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/literal/zero.hh>
+
+#include <mln/math/ceil.hh>
+#include <mln/math/floor.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/trait/value_.hh>
+
+#include <mln/value/rgb8.hh>
+
+
+#include <mln/value/int_u8.hh>
+
+/// Histogram part.
+///
+/// We regroup here the routines that work on histogram, count_histo,
+/// sum_frequency_histo, peak_histo, count_null_frequency_histo,
+/// cmp_equi_frequency_histo and others (variance
+/// operators). count_histo and sum_frequency_histo count the overall
+/// frequency in the domain. peak_histo find the peak of the
+/// histogram. count_null_frequency_histo compute the number of non
+/// grey levels. cmp_equi_frequency_histo compare a histogram with
+/// the one with the same frequency everywhere.
+/// \{
+template <typename I>
+mln_value(I) count_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) result = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ result += histo(p);
+
+ return result;
+}
+
+
+template <typename I>
+mln_value(I) sum_frequency_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) sum = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ sum += histo(p);
+
+ return sum;
+}
+
+
+template <typename I>
+mln_coord(mln_site_(I)) peak_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the peak of the histogram
+ mln_value(I) v_max = mln::opt::at(histo, mln::literal::zero);
+ mln_coord(mln_site_(I)) p_max = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ return p_max;
+}
+
+template <typename I>
+mln_value(I) count_null_frequency_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) count = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ if (0 == histo(p))
+ count++;
+
+ return count;
+}
+
+template <typename I>
+float cmp_equi_frequency_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ float sum = 0;
+ float var = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum ++;
+ var += mln::math::sqr(histo(p) - (1/256.0));
+ }
+
+ var = var / sum;
+
+ return var;
+}
+
+template <typename I>
+mln_value(I) cnt_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) sum = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum += histo(p);
+ }
+
+ return sum;
+}
+
+template <typename I>
+mln_value(I) sum_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ pos = p.ind();
+ sum += pos*histo(p);
+ }
+
+ return sum;
+}
+
+template <typename I>
+mln_value(I) avg_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_value(I) cnt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ pos = p.ind();
+ cnt += histo(p);
+ sum += pos*histo(p);
+ }
+
+ return (0 == cnt)? 0 : sum/cnt;
+}
+
+template <typename I>
+mln_value(I) var3_histo(const mln::Image<I>& histo_, float mean)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_value(I) cnt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ cnt += histo(p);
+ sum += (mln::math::sqr(p.ind()-mean)*histo(p));
+ }
+
+ return (0 == cnt)? 0 : sum/cnt;
+}
+
+template <typename I>
+mln_value(I) var2_histo(const mln::Image<I>& histo_, float mean)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_value(I) sqr = mln::literal::zero;
+ mln_value(I) cnt = mln::literal::zero;
+ mln_value(I) dlt = mln::literal::zero;
+ mln_value(I) mxt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ pos = p.ind();
+ cnt += (histo(p));
+ sum += (histo(p)*pos);
+ mxt += (histo(p)*pos*mean);
+ sqr += (histo(p)*mln::math::sqr(pos));
+ dlt += (histo(p)*mln::math::sqr(pos - mean));
+
+ std::cout << "p = " << pos << std::endl;
+ std::cout << "p² = " << mln::math::sqr(pos) << std::endl;
+ std::cout << "p*mean = " << (pos*mean) << std::endl;
+ std::cout << "p-mean = " << (pos-mean) << std::endl;
+ std::cout << "(p-mean)² = " << mln::math::sqr(pos-mean) << std::endl;
+ std::cout << "histo(p) = " << histo(p) << std::endl;
+ std::cout << "histo(p)*p = " << (pos*histo(p)) << std::endl;
+ std::cout << "histo(p)*p²= " << (mln::math::sqr(pos)*histo(p))
+ << std::endl;
+ std::cout << "cnt = " << cnt << std::endl;
+ std::cout << "sum = " << sum << std::endl;
+ std::cout << "sqr = " << sqr << std::endl;
+ std::cout << "dlt = " << dlt << std::endl;
+ std::cout << "mxt = " << mxt << std::endl;
+ std::cout << std::endl;
+ }
+
+ std::cout << "sqr/cnt = " << (sqr/cnt) << std::endl;
+ std::cout << "sum/cnt = " << (sum/cnt) << std::endl;
+ std::cout << "(sum/cnt)² = " << mln::math::sqr(sum/cnt) << std::endl;
+ std::cout << "dlt/cnt = " << dlt/cnt << std::endl;
+ std::cout << "mxt/cnt = " << mxt/cnt << std::endl;
+ std::cout << std::endl;
+
+ std::cout << "sqr = "
+ << (sqr) << std::endl;
+ std::cout << "dlt = "
+ << (dlt) << std::endl;
+ std::cout << "cnt*avg² = "
+ << (mln::math::sqr(sum/cnt)*cnt) << std::endl;
+ std::cout << "2*mxt = "
+ << (2*mxt) << std::endl;
+ std::cout << "sqr - cnt*avg² = "
+ << (sqr/cnt - mln::math::sqr(sum/cnt)) << std::endl;
+ std::cout << "(sqr -2*mxt + cnt*avg²) = "
+ << ((sqr - 2*mxt + mln::math::sqr(sum/cnt))/cnt) << std::endl;
+ std::cout << std::endl;
+ return (0 == cnt)? 0 : sqr/cnt - mln::math::sqr(sum/cnt);
+}
+
+template <typename I>
+mln_value(I) var_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_value(I) sqr = mln::literal::zero;
+ mln_value(I) cnt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ pos = p.ind();
+ cnt += (histo(p));
+ sum += (histo(p)*pos);
+ sqr += (histo(p)*mln::math::sqr(pos));
+ }
+
+ return (0 == cnt)? 0 : sqr/cnt - mln::math::sqr(sum/cnt);
+}
+
+template <typename I>
+mln_value(I) sqr_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) sum = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ sum += (mln::math::sqr(p.ind())*histo(p));
+
+ return sum;
+}
+/// \}
+
+
+/// \brief Millet Hue detector.
+///
+/// \param[in] histo the histogram image on which applying the detector.
+/// \param[in] threshold a way to adapt the test to the population.
+///
+/// \return the proportion of population that verify the hue detector.
+///
+/// This test is used for discrimination between black and white pictures and
+/// color ones. Some colored Black and white pictures have their energy near
+/// the peak.
+float hue1_descriptor(mln::image1d<unsigned> histo, const short threshold)
+{
+ float cnt1;
+ float cnt2;
+ float prop;
+ short peak;
+ mln::point1d inf;
+ mln::point1d sup;
+
+ peak = peak_histo(histo);
+ inf = mln::point1d(mln::math::max(0, peak-threshold));
+ sup = mln::point1d(mln::math::min(255, peak+threshold));
+ cnt1 = count_histo(histo|mln::box1d(inf,sup));
+ cnt2 = count_histo(histo);
+ prop = ((255.0 * cnt1) / cnt2);
+
+ return prop;
+}
+
+
+/// \brief Saturation detector.
+///
+/// \param[in] histo the histogram image on which applying the detector.
+/// \param[in] threshold a way to adapt the test to the population.
+///
+/// \return the proportion of population that verify the hue detector.
+///
+/// This test is used for discrimination between black and white pictures and
+/// color ones. Black and white pictures have their energy in the low saturation
+/// band.
+float sat1_descriptor(mln::image1d<unsigned> histo, const short threshold)
+{
+ float cnt1;
+ float cnt2;
+ float result;
+
+ cnt1 = count_histo(histo | mln::box1d(mln::point1d(0),
+ mln::point1d(threshold)));
+ cnt2 = count_histo(histo);
+ result = ((255.0 * cnt1) / cnt2);
+
+ return result;
+}
+
+
+/// \brief Counting grey levels descriptor.
+///
+/// \param[in] histo the histogram image on which applying the detector.
+///
+/// \return the number of grey levels.
+///
+/// This test aims at compute the number of grey levels. Photographies tends to
+/// use all the levels or many of them.
+float lvl0_descriptor(mln::image1d<unsigned> histo)
+{
+ float result;
+
+ // FIXME 255
+ result = 255-count_null_frequency_histo(histo);
+
+ return result;
+}
+
+
+/// \brief Density hue detector.
+///
+/// \param[in] histo the histogram image on which applying the detector.
+///
+/// \return the proportion of population that verify the hue detector.
+///
+/// This test works on density histogram and compare to the
+/// equi-frequency histogram. If the normalized histogram show a peak,
+/// it will differ from the reference density.
+float hue0_descriptor(mln::image1d<unsigned> histo)
+{
+ mln::image1d<float> histo_float;
+ float sum;
+ float result;
+
+ sum = sum_frequency_histo(histo);
+ histo_float = mln::data::convert(float(), histo) / sum;
+ result = cmp_equi_frequency_histo(histo_float);
+
+ return result*255;
+}
+
+
+/// \brief Density saturation detector.
+///
+/// \param[in] histo the histogram image on which applying the detector.
+///
+/// \return the proportion of population that verify the hue detector.
+///
+/// This test works on density histogram and compare to the
+/// equi-frequency histogram. If the normalized histogram show a peak,
+/// it will differ from the reference density.
+float sat0_descriptor(mln::image1d<unsigned> histo)
+{
+ mln::image1d<float> histo_float;
+ float sum;
+ float result;
+
+ sum = sum_frequency_histo(histo);
+ histo_float = mln::data::convert(float(), histo) / sum;
+ result = cmp_equi_frequency_histo(histo_float);
+
+ return result*255;
+}
+
+
+/// \brief Density value detector.
+///
+/// \param[in] histo the histogram image on which applying the detector.
+///
+/// \return the proportion of population that verify the hue detector.
+///
+/// This test works on density histogram and compare to the
+/// equi-frequency histogram. If the normalized histogram show a peak,
+/// it will differ from the reference density.
+float val0_descriptor(mln::image1d<unsigned> histo)
+{
+ mln::image1d<float> histo_float;
+ float sum;
+ float result;
+
+ sum = sum_frequency_histo(histo);
+ histo_float = mln::data::convert(float(), histo) / sum;
+ result = cmp_equi_frequency_histo(histo_float);
+
+ return result*255;
+}
+
+
+/// \brief The R function of Millet
+///
+/// \param[in] p the position of the pic.
+/// \param[in] histo_p the histo value of the pic.
+/// \param[in] x the position of the element which we compute the contrib.
+/// \param[in] histo_x the histo value of that element.
+///
+/// \result the contribution of the element x.
+///
+/// This function compute the variance-like contribution of an element
+/// x linked to the pic of the histogram. In fact, every thing is like
+/// we compute a square distance-like between the element x and the
+/// pic in the normalized histogram. Notice that the normalized
+/// histogram is the histogram divide by the value of it's pic. So at
+/// the pic, the value equals 1. It's a current representation of the
+/// histogram in image processing, we can find it in gimp for exemple.
+float r(short p, unsigned histo_p, short x, unsigned histo_x)
+{
+ float result = mln::math::sqr(((float)histo_x / histo_p) * (x-p));
+
+ return result;
+}
+
+/// \brief The stddev3 is an internal stuff.
+///
+/// \param[in] histo_ the image which represents the histogram.
+/// \param[in] peak the position of the histogram peak.
+///
+/// \return simple computing of deviation.
+///
+/// This is an internal stuff. It splits the computing for easy
+/// reusing practice. Sum the R contribution.
+template <typename I>
+float stddev3(const mln::Image<I>& histo_, unsigned peak)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Compute stddev
+
+ float stddev = 0.0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ stddev += r((short)peak, mln::opt::at(histo,peak), p.ind(), histo(p));
+ }
+
+ return stddev;
+}
+
+/// Brief compute the whole deviation of Millet
+///
+/// \param[in] image the input image to analyze.
+/// \param[in] peak the peak of the histogram.
+/// \param[in] limit the threshold to compute the contribution.
+///
+/// \return the deviation.
+///
+/// The deviation uses the R function. It stats by finding the pic. If
+/// the pic is near the rigth border of the histo, compute the R
+/// function on the left neighbouring of the pic. If the pic is near
+/// the left border of the histo, compute the R function on the right
+/// neigbouring. Otherwise, compute the average of the right and left
+/// results. The selected neighbouring is composed of five pixels at
+/// the right or at the left of the pic. The detection of clipart
+/// assumes that the majority of the energy of the histogram is closed
+/// to the pic (five pixels around it). The test is generalized by
+/// making constants as parameters.
+template <typename I>
+float stddev2(const mln::Image<I>& histo_, unsigned peak, unsigned limit)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ float stddev_low = 0.0;
+ float stddev_up = 0.0;
+ float ret = 0.0;
+
+ // A transformer avec des iterators
+
+ if (250 > peak)
+ stddev_up = stddev3(histo |mln::box1d(mln::point1d(peak+1),
+ mln::point1d(peak+limit)), peak);
+
+ if (5 < peak)
+ stddev_low = stddev3(histo |mln::box1d(mln::point1d(peak-limit),
+ mln::point1d(peak-1)), peak);
+
+ ret = (250 < peak)? stddev_low : (5 > peak)? stddev_up :
+ (stddev_low + stddev_up)/2;
+
+ return ret;
+}
+
+
+/// \brief Millet value descriptor (cf. Millet.phd.2008)
+///
+/// \param[in] histo the histogram image on which applying the detector.
+/// \param[in] threshold the limit where to compute the contribution.
+///
+/// \return the proportion of population that verify the hue detector.
+///
+/// This test aims at compute some deviation on the peak of the histogram of
+/// the image. Large deviations mean lots of graduation in colors (such as
+/// photos) and small ones mean something like cartoon.
+float val1_descriptor(mln::image1d<unsigned> histo, const short threshold)
+{
+ typedef mln::fun::v2v::rgb_to_value_map<8> t_rgb_to_value_map;
+
+ float result;
+ short peak;
+
+ peak = peak_histo(histo);
+ result = stddev2(histo, peak, threshold);
+
+ return result;
+}
+
+
+/// \brief Error detector (jonathan idea).
+///
+/// \param[in] r_img_map the original red channel.
+/// \param[in] g_img_map the original green channel.
+/// \param[in] b_img_map the original blue channel.
+/// \param[in] r_rdc_map the reduced (in color) red channel.
+/// \param[in] g_rdc_map the reduced (in color) green channel.
+/// \param[in] b_rdc_map the reduced (in color) blue channel.
+///
+/// \return the PNSNR (cf compression p278 Handbook Color).
+///
+/// \fixme the actual PNSNR is unbound, we need to fix its max to
+/// 255. Two images which are the same produces an infinite PNSNR.
+float err_descriptor(mln::image2d<mln::value::int_u8> r_img_map,
+ mln::image2d<mln::value::int_u8> g_img_map,
+ mln::image2d<mln::value::int_u8> b_img_map,
+ mln::image2d<mln::value::int_u8> r_rdc_map,
+ mln::image2d<mln::value::int_u8> g_rdc_map,
+ mln::image2d<mln::value::int_u8> b_rdc_map)
+
+
+{
+ typedef mln::accu::meta::stat::mean t_mean;
+ typedef mln::image2d<mln::value::int_u8> t_map;
+ typedef mln_trait_op_minus_(t_map,t_map) t_minus;
+ typedef mln_trait_op_times_(t_minus,t_minus) t_times;
+
+
+ t_minus minus_red;
+ t_minus minus_green;
+ t_minus minus_blue;
+
+ t_times times_red;
+ t_times times_green;
+ t_times times_blue;
+
+ float error_red;
+ float error_green;
+ float error_blue;
+
+ float error;
+
+ minus_red = (r_img_map - r_rdc_map);
+ times_red = minus_red * minus_red;
+
+ minus_green = (g_img_map - g_rdc_map);
+ times_green = minus_green * minus_green;
+
+ minus_blue = (b_img_map - b_rdc_map);
+ times_blue = minus_blue * minus_blue;
+
+ error_red = mln::data::compute(t_mean(), times_red);
+ error_green = mln::data::compute(t_mean(), times_green);
+ error_blue = mln::data::compute(t_mean(), times_blue);
+
+ error = (error_red + error_green + error_blue)/3.0;
+ error = mln::math::sqrt(error);
+ error = 20 * log(255/error);
+
+// FIXME:
+// SAME IMAGE PRODUCE PNSNR GOING THROW THE INFINITY.
+// DIFFERENT IMAGE PRODUCE PNSNR GOING NEAR ZERO.
+// WE SHOULD KEEP THE PNSNR BELOW 255 FOR COMPARAISON.
+
+ return error;
+}
+
+/// Discriminant operators.
+///
+/// We have some operators that compute the threshold which separate
+/// two sub-populations in a histogram.
+/// /{
+
+/// \brief Compute discrimination threshold.
+/// \param[in] avg1 the mean of the population 1.
+/// \param[in] var1 the variance of the population 1.
+/// \param[in] avg2 the mean of the population 2.
+/// \param[in] var2 the variance of the population 2.
+///
+/// \return the threshold to discriminate the two populations.
+///
+/// Linear discriminant analysis in 1d is done. When two population
+/// have the same variance, the threshold is at (m1+m2)/2. When threre
+/// are different variances, we propose the threshold at the position
+/// (m1*sqrt(v1)+m2*sqrt(v2))/(sqrt(v1)+sqrt(v2)).
+float threshold_histo(float avg1, float var1, float avg2, float var2)
+{
+ float sigma1 = mln::math::sqrt(var1);
+ float sigma2 = mln::math::sqrt(var2);
+ float threshold = (avg1*sigma1+avg2*sigma2)/(sigma1+sigma2);
+
+ return threshold;
+}
+
+/// \brief Compute discrimination threshold.
+/// \param[in] avg1 the mean of the population 1.
+/// \param[in] var1 the variance of the population 1.
+/// \param[in] avg2 the mean of the population 2.
+/// \param[in] var2 the variance of the population 2.
+///
+/// \return the threshold to discriminate the two populations.
+///
+/// Linear discriminant analysis in 1d is done. When two population
+/// have the same variance, the threshold is at (m1+m2)/2. When threre
+/// are different variances, we propose the threshold at the position
+/// (m1*var1+m2*var2)/(sqrt(v1)+sqrt(v2)).
+
+float threshold3_histo(float avg1, float var1, float avg2, float var2)
+{
+ float threshold = (avg1*var1+avg2*var2)/(var1+var2);
+
+ return threshold;
+}
+
+
+/// \brief Compute discrimination threshold.
+/// \param[in] avg1 the mean of the population 1.
+/// \param[in] var1 the variance of the population 1.
+/// \param[in] avg2 the mean of the population 2.
+/// \param[in] var2 the variance of the population 2.
+///
+/// \return the threshold to discriminate the two populations.
+///
+/// Gaussian discriminant analysis in 1d is done. Compute the
+/// discrimanation and solve the parabolic equation.
+float threshold2_histo(float avg1, float var1, float avg2, float var2)
+{
+ float a = var2 - var1;
+ float b = -2 * (avg1 * var2 - avg2 * var1);
+ float c = var2 * mln::math::sqr(avg1) - var1 * mln::math::sqr(avg2);
+ float d = mln::math::sqr(b) - 4 * a * c;
+
+ if (d < 0)
+ std::cout << "delta negatif" << std::endl;
+
+ float x1 = (-b+mln::math::sqrt(d))/(2*a);
+ float x2 = (-b-mln::math::sqrt(d))/(2*a);
+
+ std::cout << "a = " << a << std::endl;
+ std::cout << "b = " << b << std::endl;
+ std::cout << "c = " << c << std::endl;
+ std::cout << "d = " << d << std::endl;
+ std::cout << "x1 = " << x1 << std::endl;
+ std::cout << "x2 = " << x2 << std::endl;
+
+ return x2;
+}
+
+/// \brief Minimisation of the error.
+///
+/// \param[in] histo_grp1 the histogram of the first population.
+/// \param[in] histo_grp2 the histogram of the second population.
+///
+/// \return the threshold.
+///
+/// Computes the error and find the minimum error threshold. It's just
+/// a counting of element in four categories (0 - but detects 1, 1 -
+/// but detects 1, 1 but detects 0, 0 but detects 0). The error is the
+/// sum of missclassifications for the classes 0 and 1. As Otsu done,
+/// we can iterate on the threshold and compute the error associated
+/// to it. The bes threshold is the one that minimize the error.
+short min_error(const mln::image1d<float> histo_grp1,
+ const mln::image1d<float> histo_grp2,
+ float *_c00, float *_c10, float *_c01, float *_c11)
+{
+ float c00[256];
+ float c10[256];
+ float c01[256];
+ float c11[256];
+ float err[256];
+
+ for (short p = 0; p < 256; p++)
+ {
+ c00[p] = cnt_histo(histo_grp1|mln::box1d(mln::point1d(0),
+ mln::point1d(p)));
+
+ c10[p] = cnt_histo(histo_grp1|mln::box1d(mln::point1d(p+1),
+ mln::point1d(255)));
+
+ c01[p] = cnt_histo(histo_grp2|mln::box1d(mln::point1d(0),
+ mln::point1d(p)));
+
+ c11[p] = cnt_histo(histo_grp2|mln::box1d(mln::point1d(p+1),
+ mln::point1d(255)));
+ }
+
+ short threshold = 0;
+ float error = c01[0] + c01[0] + c00[0] + c11[0];
+
+ for(short p = 0; p < 256; p++)
+ {
+ err[p] = c10[p] + c01[p];
+
+// std::cout << " p = " << p
+// << ";c00 = " << c00[p]
+// << ";c10 = " << c10[p]
+// << ";c01 = " << c01[p]
+// << ";c11 = " << c11[p]
+// << std::endl;
+// std::cout << "err[" << p << "] = " << err[p] << std::endl;
+
+ if (error > err[p])
+ {
+ error = err[p];
+ threshold = p;
+ }
+ }
+
+ *_c00 = c00[threshold];
+ *_c10 = c10[threshold];
+ *_c01 = c01[threshold];
+ *_c11 = c11[threshold];
+
+ return threshold;
+}
+
+
+/// \brief Fisher analysis.
+///
+/// \param[in] histo the histogram of the mixed population.
+///
+/// \return the threshold.
+///
+/// This routine is less performant than the others because it starts
+/// with a mixed population, but we know exactly the two separated
+/// population. It was just a test. Don't take it in production
+/// environement, it doesn't help you.
+short fisher_analysis(const mln::image1d<float> histo)
+{
+ typedef mln::value::int_u8 t_int_u8;
+
+ // FIXE ME SIZE const short a = mln_min(t_int_u8);
+ // float cnt1[a];
+
+ float cnt1[256];
+ float sum1[256];
+ float sqr1[256];
+ float avg1[256];
+ float var1[256];
+
+ float cnt2[256];
+ float sum2[256];
+ float sqr2[256];
+ float avg2[256];
+ float var2[256];
+
+ float cnt0[256]; // count of points
+ float sum0[256]; // sum of population
+ float sqr0[256]; // sqr of population
+ float avg0[256]; // average of the population
+ float v_in[256]; // variance with-in class
+ float v_bw[256]; // variance between class
+ float var0[256]; // variance of the population
+ short threshold;
+ float pos;
+ float min_var;
+
+ // Assign the first elements
+ cnt1[0] = 0;
+ sum1[0] = 0;
+ sqr1[0] = 0;
+ avg1[0] = 0;
+ var1[0] = 0;
+
+ // Compute the stats of the wall histogram
+ cnt2[0] = 0;
+ sum2[0] = 0;
+ sqr2[0] = 0;
+
+ for(short p = 0; p < 256; p++)
+ {
+ pos = p;
+ cnt2[0] += mln::opt::at(histo,p);
+ sum2[0] += (pos * mln::opt::at(histo,p));
+ sqr2[0] += (mln::math::sqr(pos) * mln::opt::at(histo,p));
+ }
+
+ avg2[0] = (0 == cnt2[0])? 0 : sum2[0] / cnt2[0];
+ var2[0] = (0 == cnt2[0])? 0 : sqr2[0] / cnt2[0] - mln::math::sqr(avg2[0]);
+
+ // watch the array limits
+ for (short p = 1; p < 256; p++)
+ {
+ pos = p;
+
+ // Assign the statistics to the primary class
+ cnt1[p] = cnt1[p-1] + mln::opt::at(histo, p);
+ sum1[p] = sum1[p-1] + pos * mln::opt::at(histo, p);
+ sqr1[p] = sqr1[p-1] + mln::math::sqr(pos) * mln::opt::at(histo, p);
+ avg1[p] = (0 == cnt1[p])? 0 : (sum1[p] / cnt1[p]);
+ var1[p] = (0 == cnt1[p])? 0 : ((sqr1[p] / cnt1[p])-mln::math::sqr(avg1[p]));
+
+ // Assign the statistics to the second class
+ cnt2[p] = cnt2[p-1] - mln::opt::at(histo, p);;
+ sum2[p] = sum2[p-1] - p * mln::opt::at(histo, p);;
+ sqr2[p] = sqr2[p-1] - mln::math::sqr(p) * mln::opt::at(histo, p);;
+ avg2[p] = (0 == cnt2[p])? 0 : (sum2[p] / cnt2[p]);
+ var2[p] = (0 == cnt2[p])? 0 : ((sqr2[p] / cnt2[p])-mln::math::sqr(avg2[p]));
+
+ // Lets compute the invariants
+ cnt0[p] = cnt1[p] + cnt2[p];
+ sum0[p] = sum1[p] + sum2[p];
+ sqr0[p] = sqr1[p] + sqr2[p];
+ avg0[p] = (cnt1[p] * avg1[p] + cnt2[p] * avg2[p])/cnt0[p];
+ v_in[p] = (cnt1[p] * var1[p] + cnt2[p] * var2[p])/cnt0[p];
+ v_bw[p] = (cnt1[p] * mln::math::sqr(avg1[p]-avg0[p]) +
+ cnt2[p] * mln::math::sqr(avg2[p]-avg0[p]))/cnt0[p];
+ var0[p] = v_in[p] + v_bw[p];
+ }
+
+ // Find the threshold that minimizes the intra-class variance
+ min_var = cnt2[0]*var2[0];
+ threshold = 0;
+
+ for(short p = 0; p < 256; p++)
+ {
+ // Compute the intra-class variance
+ v_in[p] = cnt1[p]*var1[p] + cnt2[p]*var2[p];
+// std::cout << "var intra[" << p << "]= " << v_in[p] << std::endl;
+
+ if (min_var > v_in[p])
+ {
+ min_var = v_in[p];
+ threshold = p;
+ }
+ }
+
+ return threshold;
+}
+/// /}
+
+
+/// Launching part.
+///
+/// In this part, we have the front end that walk over the image
+/// databases and start to compute information that we pass to
+/// previous routines.
+/// \{
+
+#define LVL0_DESCR 0 // Number of grey available
+#define HUE0_DESCR 1 // Density histogram hue analysis
+#define HUE1_DESCR 2 // Millet Hue analysis
+#define SAT0_DESCR 3 // Density histogram saturation analysis
+#define SAT1_DESCR 4 // Millet saturation analysis
+#define VAL0_DESCR 5 // Density histogram grey level analysis
+#define VAL1_DESCR 6 // Millet grey level analysis
+#define GMP0_DESCR 7 // PNSNR with GIMP compression
+#define GMP1_DESCR 8 // PNSNR with GIMP compression
+#define GMP2_DESCR 9 // PNSNR with GIMP compression
+#define MGK0_DESCR 9 // PNSNR with ImageMagick compression
+#define MGK1_DESCR 10 // PNSNR with ImageMagick compression
+#define MGK2_DESCR 11 // PNSNR with ImageMagick compression
+
+#define MGK_DESCR(version) (MGK0_DESCR + version)
+#define GMP_DESCR(version) (GMP0_DESCR + version)
+
+#define NB_DESCR 12 // Number of descriptors
+#define NB_DATABASE 2 // Number of image databases : AFP,ICDAR
+#define NB_IMAGE 110 // Number of images
+#define NB_VERSION 3 // Number of compression by GIMP or ImageMagick
+
+/// \brief Make sure that the result is between 0 and 255.
+///
+/// \param[in] file_name the name of the analysis files.
+/// \param[in] result the values for each image and each descriptors.
+/// \param[in] size the number of image by each database.
+///
+/// Correct the descriptors if there is overflow values. Just used in
+/// debug mode.
+void init_descriptors(std::string file_name[],
+ float result[][NB_DESCR],
+ int size[])
+{
+ for (int i = 0; i < NB_IMAGE; i++)
+ {
+ file_name[i] = std::string("PGM");
+
+ for (int d = 0; d < NB_DESCR; d++)
+ result[i][d] = (i*d) % 256;
+ }
+
+ size[0] = 62;
+ size[1] = 48;
+}
+
+
+/// \brief Dump gnuplot file for vizualisation of results.
+///
+/// \param[in] file_name the name of the analysis files.
+/// \param[in] result the values for each image and each descriptors.
+/// \param[in] size the number of image by each database.
+///
+/// This routine aimed at plotting the result with one graph. Each
+/// database has got its color. We can see the values used by each
+/// descriptors along the image of each database.
+void dump_descriptors(const std::string file_name[],
+ const float result[][NB_DESCR],
+ const int size[])
+{
+ std::cout << "#!/usr/bin/gnuplot" << std::endl;
+ std::cout << "set terminal x11 persist 1" << std::endl;
+ std::cout << "plot '-' using 2 with point title 'ICDAR',\\" << std::endl;
+ std::cout << " '-' using 2 with point title 'AFP'" << std::endl;
+
+ int num = 0;
+
+ for (int db = 0; db < NB_DATABASE; db++)
+ {
+ for (int i = 0; i < size[db]; i++)
+ {
+ std::cout << result[num][LVL0_DESCR] << " ";
+ std::cout << result[num][HUE0_DESCR] << " ";
+ std::cout << result[num][HUE1_DESCR] << " ";
+ std::cout << result[num][SAT0_DESCR] << " ";
+ std::cout << result[num][SAT1_DESCR] << " ";
+ std::cout << result[num][VAL0_DESCR] << " ";
+ std::cout << result[num][VAL1_DESCR] << " ";
+ std::cout << result[num][GMP0_DESCR] << " ";
+ std::cout << result[num][GMP1_DESCR] << " ";
+ std::cout << result[num][GMP2_DESCR] << " ";
+ std::cout << result[num][MGK0_DESCR] << " ";
+ std::cout << result[num][MGK1_DESCR] << " ";
+ std::cout << result[num][MGK2_DESCR] << " ";
+ std::cout << " # " << file_name[num] << std::endl;
+ num++;
+ }
+
+ std::cout << "e" << std::endl;
+ }
+}
+
+
+/// \brief Compute the descriptor histograms for each database.
+///
+/// \param[in] result the result values of each descriptors.
+/// \param[in] size the number of images by database.
+/// \param[out] histo the computed histograms.
+///
+/// This routine compute a histograms for each database and each descriptors.
+/// So we can see the distribution of descriptor values over each database.
+/// Result values are transform from float to int for histograms.
+void compute_histo(const float result[][NB_DESCR],
+ const int size[],
+ mln::image1d<float> histo[][NB_DATABASE])
+{
+ for (int i = 0; i < NB_DESCR; i++)
+ for (int db = 0; db < NB_DATABASE; db++)
+ {
+ histo[i][db].init_(mln::box1d(mln::point1d(0),mln::point1d(255)));
+
+ mln::data::fill(histo[i][db], mln::literal::zero);
+ }
+
+ short v;
+ int num = 0;
+
+ for (int db = 0; db < NB_DATABASE; db++)
+ {
+ for (int i = 0; i < size[db]; i++)
+ {
+ v = (short)mln::math::floor(result[num][VAL0_DESCR]+0.4999);
+ mln::opt::at(histo[VAL0_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][LVL0_DESCR]+0.4999);
+ mln::opt::at(histo[LVL0_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][HUE0_DESCR]+0.4999);
+ mln::opt::at(histo[HUE0_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][HUE1_DESCR]+0.4999);
+ mln::opt::at(histo[HUE1_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][SAT0_DESCR]+0.4999);
+ mln::opt::at(histo[SAT0_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][SAT1_DESCR]+0.4999);
+ mln::opt::at(histo[SAT1_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][VAL1_DESCR]+0.4999);
+ mln::opt::at(histo[VAL1_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][GMP0_DESCR]+0.4999);
+ mln::opt::at(histo[GMP0_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][GMP1_DESCR]+0.4999);
+ mln::opt::at(histo[GMP1_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][GMP2_DESCR]+0.4999);
+ mln::opt::at(histo[GMP2_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][MGK0_DESCR]+0.4999);
+ mln::opt::at(histo[MGK0_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][MGK1_DESCR]+0.4999);
+ mln::opt::at(histo[MGK1_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][MGK2_DESCR]+0.4999);
+ mln::opt::at(histo[MGK2_DESCR][db],v)++;
+
+ num++;
+ }
+ }
+}
+
+
+/// Compute the threshold for discrimination between ICDAR and AFP.
+///
+/// \param[in] histo the histogram for each descriptor and for each database.
+/// \param[out] threshold computed values to discriminate between ICDAR/AFP.
+/// \param[out] c00 say CLASS 1 but CLASS 1.
+/// \param[out] c10 say CLASS 2 but CLASS 1.
+/// \param[out] c01 say CLASS 1 but CLASS 2.
+/// \param[out] c11 say CLASS 2 but CLASS 2.
+///
+/// Compute the threshold by the minimum of error of
+/// classification. Population are inverted in function of average,
+/// technical solution to prevent min_error crashed. The bad thing is
+/// now, the class 0 can be either ICDAR of AFP, depends on descriptors.
+void compute_thresholds(const mln::image1d<float> histo[][NB_DATABASE],
+ short threshold[],
+ float c00[],
+ float c10[],
+ float c01[],
+ float c11[])
+{
+ for (int i = 0; i < NB_DESCR; i++)
+ {
+ float avg0 = avg_histo(histo[i][0]);
+ float avg1 = avg_histo(histo[i][1]);
+
+ if (avg0 < avg1)
+ {
+ threshold[i] = min_error(histo[i][0], histo[i][1],
+ &c00[i], &c10[i], &c01[i], &c11[i]);
+ }
+ else
+ {
+ threshold[i] = min_error(histo[i][1], histo[i][0],
+ &c00[i], &c10[i], &c01[i], &c11[i]);
+ }
+
+ std::cerr << " i = " << i
+ << "; c00 = " << c00[i]
+ << "; c10 = " << c10[i]
+ << "; c01 = " << c01[i]
+ << "; c11 = " << c11[i]
+ << "; threshold " << threshold[i]
+ << std::endl;
+
+ }
+}
+
+
+/// \brief Walk over the database directories.
+///
+/// \param[out] file_name the array of the image name.
+/// \param[out] result the descriptors values for each image.
+/// \param[out] size the number of image for each database.
+///
+/// This is the front end part to access to the database directories. We use
+/// boost library to do it. First we explore ICDAR database en then the AFP one.
+/// For each valid image, we compute all the descriptors. Histograms are
+/// computed at this level because we can do that thing one time for every
+/// density descriptors. Every parameters are updated to retrurn the values.
+void compute_descriptors(std::string file_name[],
+ float result[][NB_DESCR],
+ int size[])
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+ typedef mln::image1d<unsigned> t_histo;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::image2d<t_int_u8> t_map;
+ typedef mln::image2d<t_rgb8> t_input;
+ typedef mln::fun::v2v::rgb_to_hue_map<8> t_rgb_2_hue;
+ typedef mln::fun::v2v::rgb_to_saturation_map<8> t_rgb_2_sat;
+ typedef mln::fun::v2v::rgb_to_value_map<8> t_rgb_2_val;
+ typedef mln::fun::v2v::component<t_rgb8,0> t_rgb_2_red;
+ typedef mln::fun::v2v::component<t_rgb8,1> t_rgb_2_green;
+ typedef mln::fun::v2v::component<t_rgb8,2> t_rgb_2_blue;
+ typedef mln::accu::meta::stat::histo1d t_accu_histo;
+
+
+ t_path img_path[2] = { ICDAR_20P_INPUT_IMG_PATH, AFP_PPM_IMG_PATH};
+ t_path mgk_path[3][2] = {{ICDAR_20P_MGK30_IMG_PATH, AFP_MGK30_IMG_PATH},
+ {ICDAR_20P_MGK20_IMG_PATH, AFP_MGK20_IMG_PATH},
+ {ICDAR_20P_MGK10_IMG_PATH, AFP_MGK10_IMG_PATH}};
+ t_path gmp_path[3][2] = {{ICDAR_20P_GMP30_IMG_PATH, AFP_GMP30_IMG_PATH},
+ {ICDAR_20P_GMP20_IMG_PATH, AFP_GMP20_IMG_PATH},
+ {ICDAR_20P_GMP10_IMG_PATH, AFP_GMP10_IMG_PATH}};
+
+ int num = 0;
+ int cnt = 0;
+
+ for (int db = 0; db < NB_DATABASE; db++)
+ {
+ if (boost::filesystem::exists(img_path[db]) &&
+ boost::filesystem::is_directory(img_path[db]))
+ {
+ boost::filesystem::system_complete(img_path[db]);
+
+ const t_iter_path end_iter;
+
+ cnt = 0;
+
+ for (t_iter_path dir_iter(img_path[db]); end_iter != dir_iter; ++dir_iter)
+ {
+ t_path img_file = dir_iter->path().leaf();
+ t_path dir_file = dir_iter->path();
+ t_input img_input;
+
+ mln::io::ppm::load(img_input, dir_file.string().c_str());
+
+ t_map h_img_map = mln::data::transform(img_input, t_rgb_2_hue());
+ t_map s_img_map = mln::data::transform(img_input, t_rgb_2_sat());
+ t_map v_img_map = mln::data::transform(img_input, t_rgb_2_val());
+ t_map r_img_map = mln::data::transform(img_input, t_rgb_2_red());
+ t_map g_img_map = mln::data::transform(img_input, t_rgb_2_green());
+ t_map b_img_map = mln::data::transform(img_input, t_rgb_2_blue());
+ t_histo h_img_hst = mln::data::compute(t_accu_histo(), h_img_map);
+ t_histo s_img_hst = mln::data::compute(t_accu_histo(), s_img_map);
+ t_histo v_img_hst = mln::data::compute(t_accu_histo(), v_img_map);
+ t_histo r_img_hst = mln::data::compute(t_accu_histo(), r_img_map);
+ t_histo g_img_hst = mln::data::compute(t_accu_histo(), g_img_map);
+ t_histo b_img_hst = mln::data::compute(t_accu_histo(), b_img_map);
+
+ std::cerr << dir_iter->path() << std::endl;
+
+ file_name[num] = img_file.string();
+
+ // descriptors
+ result[num][LVL0_DESCR] = lvl0_descriptor(v_img_hst);
+ result[num][HUE0_DESCR] = hue0_descriptor(h_img_hst);
+ result[num][HUE1_DESCR] = hue1_descriptor(h_img_hst,20);
+ result[num][SAT0_DESCR] = sat0_descriptor(s_img_hst);
+ result[num][SAT1_DESCR] = sat1_descriptor(s_img_hst,50);
+ result[num][VAL0_DESCR] = val0_descriptor(v_img_hst);
+ //result[num][VAL1_DESCR] = val1_descriptor(v_img_hst, 15);
+ result[num][VAL1_DESCR] = 0;
+
+ // for gimp and magick
+ for (int v = 0; v < NB_VERSION; v++)
+ {
+ if (boost::filesystem::exists(mgk_path[v][db]) &&
+ boost::filesystem::exists(gmp_path[v][db]) &&
+ boost::filesystem::is_directory(mgk_path[v][db]) &&
+ boost::filesystem::is_directory(gmp_path[v][db]))
+ {
+ t_path mgk_file = mgk_path[v][db] / img_file;
+ t_path gmp_file = gmp_path[v][db] / img_file;
+ t_input gmp_input;
+
+ mln::io::ppm::load(gmp_input, gmp_file.string().c_str());
+
+ t_map r_gmp_map = mln::data::transform(gmp_input,t_rgb_2_red());
+ t_map g_gmp_map = mln::data::transform(gmp_input,t_rgb_2_green());
+ t_map b_gmp_map = mln::data::transform(gmp_input,t_rgb_2_blue());
+
+ result[num][GMP_DESCR(v)]= err_descriptor(r_img_map,
+ g_img_map,
+ b_img_map,
+ r_gmp_map,
+ g_gmp_map,
+ b_gmp_map);
+
+ t_input mgk_input;
+
+ mln::io::ppm::load(mgk_input, mgk_file.string().c_str());
+
+ t_map r_mgk_map = mln::data::transform(mgk_input,t_rgb_2_red());
+ t_map g_mgk_map = mln::data::transform(mgk_input,t_rgb_2_green());
+ t_map b_mgk_map = mln::data::transform(mgk_input,t_rgb_2_blue());
+
+ result[num][MGK_DESCR(v)]= err_descriptor(r_img_map,
+ g_img_map,
+ b_img_map,
+ r_mgk_map,
+ g_mgk_map,
+ b_mgk_map);
+ }
+ }
+
+ num++;
+ cnt++;
+ }
+ }
+
+ size[db] = cnt;
+ }
+}
+
+/// \brief Just for debugging purpose and tests.
+int main2()
+{
+ typedef mln::image1d<unsigned> t_histo;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::image2d<t_int_u8> t_map;
+ typedef mln::image2d<t_rgb8> t_input;
+ typedef mln::fun::v2v::rgb_to_hue_map<8> t_rgb_2_hue;
+ typedef mln::fun::v2v::rgb_to_saturation_map<8> t_rgb_2_sat;
+ typedef mln::fun::v2v::rgb_to_value_map<8> t_rgb_2_val;
+ typedef mln::fun::v2v::component<t_rgb8,0> t_rgb_2_red;
+ typedef mln::fun::v2v::component<t_rgb8,1> t_rgb_2_green;
+ typedef mln::fun::v2v::component<t_rgb8,2> t_rgb_2_blue;
+ typedef mln::accu::meta::stat::histo1d t_accu_histo;
+
+ t_input img_input;
+
+ mln::io::ppm::load(img_input, ICDAR_20P_INPUT_IMG_PATH"/mp00032c_20p.ppm");
+ //mln::io::ppm::load(img_input, AFP_PPM_IMG_PATH"/000_Del218430.ppm");
+
+
+
+ t_map h_img_map = mln::data::transform(img_input, t_rgb_2_hue());
+ t_map s_img_map = mln::data::transform(img_input, t_rgb_2_sat());
+ t_map v_img_map = mln::data::transform(img_input, t_rgb_2_val());
+ t_map r_img_map = mln::data::transform(img_input, t_rgb_2_red());
+ t_map g_img_map = mln::data::transform(img_input, t_rgb_2_green());
+ t_map b_img_map = mln::data::transform(img_input, t_rgb_2_blue());
+ t_histo h_img_hst = mln::data::compute(t_accu_histo(), h_img_map);
+ t_histo s_img_hst = mln::data::compute(t_accu_histo(), s_img_map);
+ t_histo v_img_hst = mln::data::compute(t_accu_histo(), v_img_map);
+ t_histo r_img_hst = mln::data::compute(t_accu_histo(), r_img_map);
+ t_histo g_img_hst = mln::data::compute(t_accu_histo(), g_img_map);
+ t_histo b_img_hst = mln::data::compute(t_accu_histo(), b_img_map);
+
+
+ std::cout << "sat2 : " << sat0_descriptor(s_img_hst) << std::endl;
+
+ return 0;
+}
+
+
+/// \brief Main entry.
+///
+/// This is the front end for every routines.
+/// - compute descriptors.
+/// - dump descriptors.
+/// - compute histograms.
+/// - compute thresholds.
+/// - save results.
+///
+/// Global data used:
+/// - file_name : all the initial images name, mixed every image database.
+/// - result : all the result values for every descriptors and for every images.
+/// - histo : the histograms ny database and by descriptors.
+/// - size : the number of image by database.
+/// - threshold : the computed histogram separation on each descriptors.
+/// - cxx : the count of well/bad classified images function of threshold info.
+int main()
+{
+ std::string file_name[NB_IMAGE];
+ float result[NB_IMAGE][NB_DESCR];
+ int size[NB_DATABASE];
+ mln::image1d<float> histo[NB_DESCR][NB_DATABASE];
+ short threshold[NB_DESCR];
+ float c00[NB_DESCR];
+ float c10[NB_DESCR];
+ float c01[NB_DESCR];
+ float c11[NB_DESCR];
+
+ std::cerr << "DESCRIPTORS" << std::endl;
+ compute_descriptors(file_name,result,size);
+// std::cout << "DUMPING" << std::endl;
+// init_descriptors(file_name,result,size);
+ dump_descriptors(file_name,result,size);
+ std::cerr << "HISTO" << std::endl;
+ compute_histo(result,size,histo);
+ std::cerr << "THRESHOLD" << std::endl;
+ compute_thresholds(histo,threshold,c00,c10,c01,c11);
+
+ mln::io::plot::save_image_sh(histo[LVL0_DESCR][0], "lvl0_histo1.sh");
+ mln::io::plot::save_image_sh(histo[HUE0_DESCR][0], "hue0_histo1.sh");
+ mln::io::plot::save_image_sh(histo[HUE1_DESCR][0], "hue1_histo1.sh");
+ mln::io::plot::save_image_sh(histo[SAT0_DESCR][0], "sat0_histo1.sh");
+ mln::io::plot::save_image_sh(histo[SAT1_DESCR][0], "sat1_histo1.sh");
+ mln::io::plot::save_image_sh(histo[VAL0_DESCR][0], "val0_histo1.sh");
+ mln::io::plot::save_image_sh(histo[VAL1_DESCR][0], "val1_histo1.sh");
+ mln::io::plot::save_image_sh(histo[GMP0_DESCR][0], "gmp0_histo1.sh");
+ mln::io::plot::save_image_sh(histo[GMP1_DESCR][0], "gmp1_histo1.sh");
+ mln::io::plot::save_image_sh(histo[GMP2_DESCR][0], "gmp2_histo1.sh");
+ mln::io::plot::save_image_sh(histo[MGK0_DESCR][0], "mgk0_histo1.sh");
+ mln::io::plot::save_image_sh(histo[MGK1_DESCR][0], "mgk1_histo1.sh");
+ mln::io::plot::save_image_sh(histo[MGK2_DESCR][0], "mgk2_histo1.sh");
+
+ mln::io::plot::save_image_sh(histo[LVL0_DESCR][1], "lvl0_histo2.sh");
+ mln::io::plot::save_image_sh(histo[HUE0_DESCR][1], "hue0_histo2.sh");
+ mln::io::plot::save_image_sh(histo[HUE1_DESCR][1], "hue1_histo2.sh");
+ mln::io::plot::save_image_sh(histo[SAT0_DESCR][1], "sat0_histo2.sh");
+ mln::io::plot::save_image_sh(histo[SAT1_DESCR][1], "sat1_histo2.sh");
+ mln::io::plot::save_image_sh(histo[VAL0_DESCR][1], "val0_histo2.sh");
+ mln::io::plot::save_image_sh(histo[VAL1_DESCR][1], "val1_histo2.sh");
+ mln::io::plot::save_image_sh(histo[GMP0_DESCR][1], "gmp0_histo2.sh");
+ mln::io::plot::save_image_sh(histo[GMP1_DESCR][1], "gmp1_histo2.sh");
+ mln::io::plot::save_image_sh(histo[GMP2_DESCR][1], "gmp2_histo2.sh");
+ mln::io::plot::save_image_sh(histo[MGK0_DESCR][1], "mgk0_histo2.sh");
+ mln::io::plot::save_image_sh(histo[MGK1_DESCR][1], "mgk1_histo2.sh");
+ mln::io::plot::save_image_sh(histo[MGK2_DESCR][1], "mgk2_histo2.sh");
+
+ return 0;
+}
+/// \}
+
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/error/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/error/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/error/error.cc b/scribo/sandbox/green/exp/annotating/error/error.cc
new file mode 100644
index 0000000..949b51b
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/error/error.cc
@@ -0,0 +1,833 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// This file is a prelude just before using the bench source. It puts
+/// the light on the Jonathan's idea which wants to compare ICDAR and
+/// AFP image database with difference between original image and
+/// color reducted one. The key point is to say that when a color
+/// image is degraded, the visual quality fall quickly in function of
+/// the number of colors left. A contrario, when an image is black and
+/// white, this kind of degradation doesn't change the original visual
+/// quality. The PNSNR detector is build and learning threshold for
+/// automatic classification is done (four algorithms are tested).
+
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/algebra/vec.hh>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/stat/mean.hh>
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/arith/minus.hh>
+#include <mln/arith/times.hh>
+#include <mln/arith/diff_abs.hh>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+#include <mln/core/alias/point1d.hh>
+#include <mln/core/alias/box1d.hh>
+
+#include <mln/data/transform.hh>
+#include <mln/data/compute.hh>
+#include <mln/data/stretch.hh>
+#include <mln/data/fill.hh>
+
+#include <mln/fun/v2v/component.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/literal/zero.hh>
+
+#include <mln/math/ceil.hh>
+#include <mln/math/floor.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/trait/value_.hh>
+
+#include <mln/value/rgb8.hh>
+#include <mln/value/int_u8.hh>
+
+/// Work on histogram.
+/// \brief Different routines are presented for computing mean, variance ...
+/// \{
+
+/// \brief Counting the number of pixels in the histogram.
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the number of pixels in the histogram.
+///
+/// Such routine is a generic and is generally applied on a portion of
+/// the real domain.
+template <typename I>
+mln_value(I) cnt_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) sum = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum += histo(p);
+ }
+
+ return sum;
+}
+
+/// \brief Summing the values ponderated by their occurences.
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the sum ponderated of values by their occurences.
+///
+/// This method is not a production routine, it's just a test to debug
+/// histogram problem. When we compute something over the histogram,
+/// we need to take care of the intermediate type that contains the
+/// temporary result. If not the case, the type used is the one of the
+/// value of the histogram and we can go to some overflow
+/// problems. The trick is to store the value returned by the iterator
+/// in some temporary computing type (look at pos in the code).
+template <typename I>
+mln_value(I) sum_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ pos = p.ind();
+ sum += pos*histo(p);
+ }
+
+ return sum;
+}
+
+/// \brief Summing the values ponderated by their occurences.
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the sum ponderated of values by their occurences.
+template <typename I>
+mln_value(I) avg_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_value(I) cnt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ pos = p.ind();
+ cnt += histo(p);
+ sum += pos*histo(p);
+ }
+
+ return (0 == cnt)? 0 : sum/cnt;
+}
+
+/// \brief Computing the variance
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the variance of the histogram.
+///
+/// This computing is safe because the quantity of information stored
+/// in sum is low. This formulae doesn't show the overflow problem.
+template <typename I>
+mln_value(I) var3_histo(const mln::Image<I>& histo_, float mean)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_value(I) cnt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ cnt += histo(p);
+ sum += (mln::math::sqr(p.ind()-mean)*histo(p));
+ }
+
+ return (0 == cnt)? 0 : sum/cnt;
+}
+
+/// \brief Computing the variance
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the variance of the histogram.
+///
+/// This is the debugging code to observe overflow problem.
+template <typename I>
+mln_value(I) var2_histo(const mln::Image<I>& histo_, float mean)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_value(I) sqr = mln::literal::zero;
+ mln_value(I) cnt = mln::literal::zero;
+ mln_value(I) dlt = mln::literal::zero;
+ mln_value(I) mxt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ pos = p.ind();
+ cnt += (histo(p));
+ sum += (histo(p)*pos);
+ mxt += (histo(p)*pos*mean);
+ sqr += (histo(p)*mln::math::sqr(pos));
+ dlt += (histo(p)*mln::math::sqr(pos - mean));
+
+ std::cout << "p = " << pos << std::endl;
+ std::cout << "p² = " << mln::math::sqr(pos) << std::endl;
+ std::cout << "p*mean = " << (pos*mean) << std::endl;
+ std::cout << "p-mean = " << (pos-mean) << std::endl;
+ std::cout << "(p-mean)² = " << mln::math::sqr(pos-mean) << std::endl;
+ std::cout << "histo(p) = " << histo(p) << std::endl;
+ std::cout << "histo(p)*p = " << (pos*histo(p)) << std::endl;
+ std::cout << "histo(p)*p²= " << (mln::math::sqr(pos)*histo(p))
+ << std::endl;
+ std::cout << "cnt = " << cnt << std::endl;
+ std::cout << "sum = " << sum << std::endl;
+ std::cout << "sqr = " << sqr << std::endl;
+ std::cout << "dlt = " << dlt << std::endl;
+ std::cout << "mxt = " << mxt << std::endl;
+ std::cout << std::endl;
+ }
+
+ std::cout << "sqr/cnt = " << (sqr/cnt) << std::endl;
+ std::cout << "sum/cnt = " << (sum/cnt) << std::endl;
+ std::cout << "(sum/cnt)² = " << mln::math::sqr(sum/cnt) << std::endl;
+ std::cout << "dlt/cnt = " << dlt/cnt << std::endl;
+ std::cout << "mxt/cnt = " << mxt/cnt << std::endl;
+ std::cout << std::endl;
+
+ std::cout << "sqr = "
+ << (sqr) << std::endl;
+ std::cout << "dlt = "
+ << (dlt) << std::endl;
+ std::cout << "cnt*avg² = "
+ << (mln::math::sqr(sum/cnt)*cnt) << std::endl;
+ std::cout << "2*mxt = "
+ << (2*mxt) << std::endl;
+ std::cout << "sqr - cnt*avg² = "
+ << (sqr/cnt - mln::math::sqr(sum/cnt)) << std::endl;
+ std::cout << "(sqr -2*mxt + cnt*avg²) = "
+ << ((sqr - 2*mxt + mln::math::sqr(sum/cnt))/cnt) << std::endl;
+ std::cout << std::endl;
+ return (0 == cnt)? 0 : sqr/cnt - mln::math::sqr(sum/cnt);
+}
+
+/// \brief Computing the variance
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the variance of the histogram.
+///
+/// My standard code for the variance.
+template <typename I>
+mln_value(I) var_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_value(I) sqr = mln::literal::zero;
+ mln_value(I) cnt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ pos = p.ind();
+ cnt += (histo(p));
+ sum += (histo(p)*pos);
+ sqr += (histo(p)*mln::math::sqr(pos));
+ }
+
+ return (0 == cnt)? 0 : sqr/cnt - mln::math::sqr(sum/cnt);
+}
+/// \}
+
+
+/// Classify.
+/// \brief Classification routines that compute threshold.
+/// \{
+
+/// \brief Compute discrimination threshold.
+/// \param[in] avg1 the mean of the population 1.
+/// \param[in] var1 the variance of the population 1.
+/// \param[in] avg2 the mean of the population 2.
+/// \param[in] var2 the variance of the population 2.
+///
+/// \return the threshold to discriminate the two populations.
+///
+/// Linear discriminant analysis in 1d is done. When two population
+/// have the same variance, the threshold is at (m1+m2)/2. When threre
+/// are different variances, we propose the threshold at the position
+/// (m1*sqrt(v1)+m2*sqrt(v2))/(sqrt(v1)+sqrt(v2)).
+float threshold_histo(float avg1, float var1, float avg2, float var2)
+{
+ float sigma1 = mln::math::sqrt(var1);
+ float sigma2 = mln::math::sqrt(var2);
+ float threshold = (avg1*sigma1+avg2*sigma2)/(sigma1+sigma2);
+
+ return threshold;
+}
+
+/// \brief Compute discrimination threshold.
+/// \param[in] avg1 the mean of the population 1.
+/// \param[in] var1 the variance of the population 1.
+/// \param[in] avg2 the mean of the population 2.
+/// \param[in] var2 the variance of the population 2.
+///
+/// \return the threshold to discriminate the two populations.
+///
+/// Linear discriminant analysis in 1d is done. When two population
+/// have the same variance, the threshold is at (m1+m2)/2. When threre
+/// are different variances, we propose the threshold at the position
+/// (m1*var1+m2*var2)/(sqrt(v1)+sqrt(v2)).
+float threshold3_histo(float avg1, float var1, float avg2, float var2)
+{
+ float threshold = (avg1*var1+avg2*var2)/(var1+var2);
+
+ return threshold;
+}
+
+
+
+/// \brief Compute discrimination threshold.
+/// \param[in] avg1 the mean of the population 1.
+/// \param[in] var1 the variance of the population 1.
+/// \param[in] avg2 the mean of the population 2.
+/// \param[in] var2 the variance of the population 2.
+///
+/// \return the threshold to discriminate the two populations.
+///
+/// Gaussian discriminant analysis in 1d is done. Compute the
+/// discrimanation and solve the parabolic equation.
+float threshold2_histo(float avg1, float var1, float avg2, float var2)
+{
+ float a = var2 - var1;
+ float b = -2 * (avg1 * var2 - avg2 * var1);
+ float c = var2 * mln::math::sqr(avg1) - var1 * mln::math::sqr(avg2);
+ float d = mln::math::sqr(b) - 4 * a * c;
+
+ if (d < 0)
+ std::cout << "delta negatif" << std::endl;
+
+ float x1 = (-b+mln::math::sqrt(d))/(2*a);
+ float x2 = (-b-mln::math::sqrt(d))/(2*a);
+
+ std::cout << "a = " << a << std::endl;
+ std::cout << "b = " << b << std::endl;
+ std::cout << "c = " << c << std::endl;
+ std::cout << "d = " << d << std::endl;
+ std::cout << "x1 = " << x1 << std::endl;
+ std::cout << "x2 = " << x2 << std::endl;
+
+ return x2;
+}
+
+/// \brief Compute the other proportion of histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the ponderated sum of the sqrt values.
+///
+/// This is a test. Don't take this routine in production.
+template <typename I>
+mln_value(I) sqr_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) sum = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ sum += (mln::math::sqr(p.ind())*histo(p));
+
+ return sum;
+}
+
+/// \brief Minimisation of the error.
+///
+/// \param[in] histo_grp1 the histogram of the first population.
+/// \param[in] histo_grp2 the histogram of the second population.
+///
+/// \return the threshold.
+///
+/// Computes the error and find the minimum error threshold. It's just
+/// a counting of element in four categories (0 - but detects 1, 1 -
+/// but detects 1, 1 but detects 0, 0 but detects 0). The error is the
+/// sum of missclassifications for the classes 0 and 1. As Otsu done,
+/// we can iterate on the threshold and compute the error associated
+/// to it. The bes threshold is the one that minimize the error.
+short min_error(const mln::image1d<float> histo_grp1,
+ const mln::image1d<float> histo_grp2)
+{
+ float c00[256];
+ float c10[256];
+ float c01[256];
+ float c11[256];
+ float err[256];
+
+ for (short p = 0; p < 256; p++)
+ {
+ c00[p] = cnt_histo(histo_grp1|mln::box1d(mln::point1d(0),
+ mln::point1d(p)));
+
+ c10[p] = cnt_histo(histo_grp1|mln::box1d(mln::point1d(p+1),
+ mln::point1d(255)));
+
+ c01[p] = cnt_histo(histo_grp2|mln::box1d(mln::point1d(0),
+ mln::point1d(p)));
+
+ c11[p] = cnt_histo(histo_grp2|mln::box1d(mln::point1d(p+1),
+ mln::point1d(255)));
+ }
+
+ short threshold = 0;
+ float error = c01[0] + c01[0] + c00[0] + c11[0];
+
+ for(short p = 0; p < 256; p++)
+ {
+ err[p] = c10[p] + c01[p];
+
+ std::cout << " p = " << p
+ << ";c00 = " << c00[p]
+ << ";c10 = " << c10[p]
+ << ";c01 = " << c01[p]
+ << ";c11 = " << c11[p]
+ << std::endl;
+// std::cout << "err[" << p << "] = " << err[p] << std::endl;
+
+ if (error > err[p])
+ {
+ error = err[p];
+ threshold = p;
+ }
+ }
+
+ return threshold;
+}
+
+/// \brief Fisher analysis.
+///
+/// \param[in] histo the histogram of the mixed population.
+///
+/// \return the threshold.
+///
+/// This routine is less performant than the others because it starts
+/// with a mixed population, but we know exactly the two separated
+/// population. It was just a test. Don't take it in production
+/// environement, it doesn't help you.
+short fisher_analysis(const mln::image1d<float> histo)
+{
+ typedef mln::value::int_u8 t_int_u8;
+
+ // FIXE ME SIZE const short a = mln_min(t_int_u8);
+ // float cnt1[a];
+
+ float cnt1[256];
+ float sum1[256];
+ float sqr1[256];
+ float avg1[256];
+ float var1[256];
+
+ float cnt2[256];
+ float sum2[256];
+ float sqr2[256];
+ float avg2[256];
+ float var2[256];
+
+ float cnt0[256]; // count of points
+ float sum0[256]; // sum of population
+ float sqr0[256]; // sqr of population
+ float avg0[256]; // average of the population
+ float v_in[256]; // variance with-in class
+ float v_bw[256]; // variance between class
+ float var0[256]; // variance of the population
+ short threshold;
+ float pos;
+ float min_var;
+
+ // Assign the first elements
+ cnt1[0] = 0;
+ sum1[0] = 0;
+ sqr1[0] = 0;
+ avg1[0] = 0;
+ var1[0] = 0;
+
+ // Compute the stats of the wall histogram
+ cnt2[0] = 0;
+ sum2[0] = 0;
+ sqr2[0] = 0;
+
+ for(short p = 0; p < 256; p++)
+ {
+ pos = p;
+ cnt2[0] += mln::opt::at(histo,p);
+ sum2[0] += (pos * mln::opt::at(histo,p));
+ sqr2[0] += (mln::math::sqr(pos) * mln::opt::at(histo,p));
+ }
+
+ avg2[0] = (0 == cnt2[0])? 0 : sum2[0] / cnt2[0];
+ var2[0] = (0 == cnt2[0])? 0 : sqr2[0] / cnt2[0] - mln::math::sqr(avg2[0]);
+
+ // watch the array limits
+ for (short p = 1; p < 256; p++)
+ {
+ pos = p;
+
+ // Assign the statistics to the primary class
+ cnt1[p] = cnt1[p-1] + mln::opt::at(histo, p);
+ sum1[p] = sum1[p-1] + pos * mln::opt::at(histo, p);
+ sqr1[p] = sqr1[p-1] + mln::math::sqr(pos) * mln::opt::at(histo, p);
+ avg1[p] = (0 == cnt1[p])? 0 : (sum1[p] / cnt1[p]);
+ var1[p] = (0 == cnt1[p])? 0 : ((sqr1[p] / cnt1[p])-mln::math::sqr(avg1[p]));
+
+ // Assign the statistics to the second class
+ cnt2[p] = cnt2[p-1] - mln::opt::at(histo, p);;
+ sum2[p] = sum2[p-1] - p * mln::opt::at(histo, p);;
+ sqr2[p] = sqr2[p-1] - mln::math::sqr(p) * mln::opt::at(histo, p);;
+ avg2[p] = (0 == cnt2[p])? 0 : (sum2[p] / cnt2[p]);
+ var2[p] = (0 == cnt2[p])? 0 : ((sqr2[p] / cnt2[p])-mln::math::sqr(avg2[p]));
+
+ // Lets compute the invariants
+ cnt0[p] = cnt1[p] + cnt2[p];
+ sum0[p] = sum1[p] + sum2[p];
+ sqr0[p] = sqr1[p] + sqr2[p];
+ avg0[p] = (cnt1[p] * avg1[p] + cnt2[p] * avg2[p])/cnt0[p];
+ v_in[p] = (cnt1[p] * var1[p] + cnt2[p] * var2[p])/cnt0[p];
+ v_bw[p] = (cnt1[p] * mln::math::sqr(avg1[p]-avg0[p]) +
+ cnt2[p] * mln::math::sqr(avg2[p]-avg0[p]))/cnt0[p];
+ var0[p] = v_in[p] + v_bw[p];
+ }
+
+ // Find the threshold that minimizes the intra-class variance
+ min_var = cnt2[0]*var2[0];
+ threshold = 0;
+
+ for(short p = 0; p < 256; p++)
+ {
+ // Compute the intra-class variance
+ v_in[p] = cnt1[p]*var1[p] + cnt2[p]*var2[p];
+// std::cout << "var intra[" << p << "]= " << v_in[p] << std::endl;
+
+ if (min_var > v_in[p])
+ {
+ min_var = v_in[p];
+ threshold = p;
+ }
+ }
+
+ return threshold;
+}
+/// \}
+
+/// \brief ERROR (MSE, PNSNR) compression p278 Handbook Color.
+/// \param[in] original the original image.
+/// \param[in] reduced the image with a reduced number of colors.
+///
+/// \return the PNSNR.
+///
+/// Compute the PNSNR. First compute the square difference in each
+/// channel. Then compute the mean of those square differences and get
+/// the mean over the three channels. Then, get the sqrt of that to
+/// have a distance. The PNSNR is a logarithmic quantity of that distance.
+float error_test(const std::string original,
+ const std::string reduced)
+
+{
+
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::fun::v2v::component<t_rgb8,0> t_component_red;
+ typedef mln::fun::v2v::component<t_rgb8,1> t_component_green;
+ typedef mln::fun::v2v::component<t_rgb8,2> t_component_blue;
+ typedef mln::accu::meta::stat::mean t_mean;
+ typedef mln::accu::meta::stat::histo1d t_histo;
+ typedef mln::image2d<t_int_u8> t_img;
+ typedef mln_trait_op_minus_(t_img,t_img) t_minus;
+ typedef mln_trait_op_times_(t_minus,t_minus) t_times;
+
+ mln::image2d<mln::value::rgb8> original_rgb8;
+ mln::image2d<mln::value::rgb8> reduced_rgb8;
+
+ mln::image2d<mln::value::int_u8> original_red;
+ mln::image2d<mln::value::int_u8> original_green;
+ mln::image2d<mln::value::int_u8> original_blue;
+
+ mln::image2d<mln::value::int_u8> reduced_red;
+ mln::image2d<mln::value::int_u8> reduced_green;
+ mln::image2d<mln::value::int_u8> reduced_blue;
+
+// mln::image2d<mln::value::int_u8> map_red;
+// mln::image2d<mln::value::int_u8> map_green;
+// mln::image2d<mln::value::int_u8> map_blue;
+
+// mln::image1d<unsigned> histo_red;
+// mln::image1d<unsigned> histo_green;
+// mln::image1d<unsigned> histo_blue;
+
+ t_minus minus_red;
+ t_minus minus_green;
+ t_minus minus_blue;
+
+ t_times times_red;
+ t_times times_green;
+ t_times times_blue;
+
+ float error_red;
+ float error_green;
+ float error_blue;
+
+ float error;
+
+
+ mln::io::ppm::load(original_rgb8, original.c_str());
+ mln::io::ppm::load(reduced_rgb8, reduced.c_str());
+
+ original_red = mln::data::transform(original_rgb8, t_component_red());
+ original_green = mln::data::transform(original_rgb8, t_component_green());
+ original_blue = mln::data::transform(original_rgb8, t_component_blue());
+
+ reduced_red = mln::data::transform(reduced_rgb8, t_component_red());
+ reduced_green = mln::data::transform(reduced_rgb8, t_component_green());
+ reduced_blue = mln::data::transform(reduced_rgb8, t_component_blue());
+
+ minus_red = (original_red - reduced_red);
+ times_red = minus_red * minus_red;
+
+ minus_green = (original_green - reduced_green);
+ times_green = minus_green * minus_green;
+
+ minus_blue = (original_blue - reduced_blue);
+ times_blue = minus_blue * minus_blue;
+
+ error_red = mln::data::compute(t_mean(), times_red);
+ error_green = mln::data::compute(t_mean(), times_green);
+ error_blue = mln::data::compute(t_mean(), times_blue);
+
+// map_red = mln::data::stretch(t_int_u8(), times_red);
+// map_green = mln::data::stretch(t_int_u8(), times_blue);
+// map_blue = mln::data::stretch(t_int_u8(), times_green);
+
+// histo_red = mln::data::compute(t_histo(), map_red);
+// histo_green = mln::data::compute(t_histo(), map_green);
+// histo_blue = mln::data::compute(t_histo(), map_blue);
+
+// mln::io::plot::save_image_sh(histo_red, "histo_red.sh");
+// mln::io::plot::save_image_sh(histo_green,"histo_green.sh");
+// mln::io::plot::save_image_sh(histo_blue, "histo_blue.sh");
+
+// mln::io::pgm::save(map_red, "red.pgm");
+// mln::io::pgm::save(map_green,"green.pgm");
+// mln::io::pgm::save(map_blue, "blue.pgm");
+
+ error = (error_red + error_green + error_blue)/3.0;
+ error = mln::math::sqrt(error);
+ error = 20 * log(255/error);
+
+// Le PNSNR semble offrir plus d'espace pour la discrimination
+// Si les images sont identiques ==> PNSNR = +inf
+// Si les images sont très différentes ==> PNSNR = 0
+
+ return error;
+}
+
+
+/// \brief The main entry.
+///
+/// This is the front end for error classification. This is the big
+/// loop where we walk other image data bases. Computation of
+/// automatic thresholds are called from here.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+ mln::image1d<float> histo(256);
+ mln::image1d<float> histo_grp[2]; // histo by group
+
+ histo_grp[0].init_(mln::box1d(mln::point1d(0),mln::point1d(255)));
+ histo_grp[1].init_(mln::box1d(mln::point1d(0),mln::point1d(255)));
+
+ mln::data::fill(histo, mln::literal::zero);
+ mln::data::fill(histo_grp[0], mln::literal::zero);
+ mln::data::fill(histo_grp[1], mln::literal::zero);
+
+ t_path original_path[] = {ICDAR_20P_INPUT_IMG_PATH,
+ AFP_PPM_IMG_PATH};
+
+// t_path reduced1_path[] = {ICDAR_20P_MGK30_IMG_PATH,
+// AFP_MGK30_IMG_PATH};
+
+// t_path reduced1_path[] = {ICDAR_20P_MGK20_IMG_PATH,
+// AFP_MGK20_IMG_PATH};
+
+ t_path reduced1_path[] = {ICDAR_20P_MGK10_IMG_PATH,
+ AFP_MGK10_IMG_PATH};
+
+// t_path reduced2_path[] = {ICDAR_20P_GMP30_IMG_PATH,
+// AFP_GMP30_IMG_PATH};
+
+// t_path reduced2_path[] = {ICDAR_20P_GMP20_IMG_PATH,
+// AFP_GMP20_IMG_PATH};
+
+ t_path reduced2_path[] = {ICDAR_20P_GMP10_IMG_PATH,
+ AFP_GMP10_IMG_PATH};
+
+
+ std::cout << "#!/usr/bin/gnuplot" << std::endl;
+ std::cout << "set terminal x11 persist 1" << std::endl;
+ std::cout << "ERROR" << std::endl;
+ std::cout << "plot '-' using 1 with point notitle,\\" << std::endl;
+ std::cout << " '-' using 1 with point notitle" << std::endl;
+
+ for (int i = 0; i < 2; i++)
+ {
+ if (boost::filesystem::exists(original_path[i]) &&
+ boost::filesystem::exists(reduced1_path[i]) &&
+ boost::filesystem::exists(reduced2_path[i]) &&
+ boost::filesystem::is_directory(original_path[i]) &&
+ boost::filesystem::is_directory(reduced1_path[i]) &&
+ boost::filesystem::is_directory(reduced2_path[i]))
+ {
+ boost::filesystem::system_complete(original_path[i]);
+ const t_iter_path end_iter;
+ float error1 = 0.0;
+ float error2 = 0.0;
+ t_path leaf;
+ t_path reduced1_file;
+ t_path reduced2_file;
+
+ for (t_iter_path dir_iter(original_path[i]);end_iter!=dir_iter;++dir_iter)
+ {
+ leaf = dir_iter->path().leaf();
+ reduced1_file = reduced1_path[i] / leaf;
+ reduced2_file = reduced2_path[i] / leaf;
+
+ error1 = error_test(dir_iter->path().string(), reduced1_file.string());
+ error2 = error_test(dir_iter->path().string(), reduced2_file.string());
+
+ float a1 = 1;
+ short v1 = (short)mln::math::floor(error2+0.4999);
+ mln::opt::at(histo,v1) += a1;
+ mln::opt::at(histo_grp[i],v1) += a1;
+
+// float a1 = error2 - mln::math::floor(error2);
+// float a2 = mln::math::ceil(error2) - error2;
+// short v1 = (short)mln::math::floor(error2);
+// short v2 = (short)mln::math::ceil(error2);
+// mln::opt::at(histo,v1) += a1;
+// mln::opt::at(histo,v2) += a2;
+// mln::opt::at(histo_grp[i],v1) += a1;
+// mln::opt::at(histo_grp[i],v2) += a2;
+
+ std::cout << error1 << " ";
+ std::cout << error2 << " ";
+ std::cout << "# " << dir_iter->path().leaf() << std::endl;
+ }
+ std::cout << "e" << std::endl;
+ }
+ }
+
+ mln::io::plot::save_image_sh(histo, "histo.sh");
+ mln::io::plot::save_image_sh(histo_grp[1], "histo_grp1.sh");
+ mln::io::plot::save_image_sh(histo_grp[0], "histo_grp2.sh");
+
+ float threshold = fisher_analysis(histo);
+ float threshold2 = threshold_histo(avg_histo(histo_grp[1]),
+ var_histo(histo_grp[1]),
+ avg_histo(histo_grp[0]),
+ var_histo(histo_grp[0]));
+ float threshold3 = threshold2_histo(avg_histo(histo_grp[1]),
+ var_histo(histo_grp[1]),
+ avg_histo(histo_grp[0]),
+ var_histo(histo_grp[0]));
+ float threshold4 = min_error(histo_grp[1],histo_grp[0]);
+
+ std::cout << "threshold = " << threshold << std::endl;
+ std::cout << "threshold2 = " << threshold2 << std::endl;
+ std::cout << "threshold3 = " << threshold3 << std::endl;
+ std::cout << "threshold4 = " << threshold4 << std::endl;
+ std::cout << "avg_grp1 = " << avg_histo(histo_grp[1]) << std::endl;
+ std::cout << "avg_grp2 = " << avg_histo(histo_grp[0]) << std::endl;
+
+ // compute the classification matrix
+ // for each sub population
+
+ float c00 = cnt_histo(histo_grp[1] | mln::box1d(mln::point1d(0),
+ mln::point1d(threshold)));
+
+ float c10 = cnt_histo(histo_grp[1] | mln::box1d(mln::point1d(threshold+1),
+ mln::point1d(255)));
+
+ float c01 = cnt_histo(histo_grp[0] | mln::box1d(mln::point1d(0),
+ mln::point1d(threshold)));
+
+ float c11 = cnt_histo(histo_grp[0] | mln::box1d(mln::point1d(threshold+1),
+ mln::point1d(255)));
+
+
+ std::cout << "pop0 = " << cnt_histo(histo_grp[1]) << std::endl;
+ std::cout << "pop1 = " << cnt_histo(histo_grp[0]) << std::endl;
+ std::cout << std::endl;
+
+ std::cout << "c00 = " << c00 << std::endl;
+ std::cout << "c10 = " << c10 << std::endl;
+ std::cout << "c01 = " << c01 << std::endl;
+ std::cout << "c11 = " << c11 << std::endl;
+
+ return 0;
+}
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/histo/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/histo/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/histo/histo.cc b/scribo/sandbox/green/exp/annotating/histo/histo.cc
new file mode 100644
index 0000000..90b18e4
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/histo/histo.cc
@@ -0,0 +1,366 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Build normalized histograms for visualization only.
+///
+/// The goal of this code is to build every normalized histograms of
+/// an image database for visual inspection. It enables the
+/// comparaison of the densities of each image database and the
+/// understanding of the differences in this space.
+
+
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/arith/minus.hh>
+#include <mln/arith/div.hh>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+
+#include <mln/data/convert.hh>
+#include <mln/data/compute.hh>
+#include <mln/data/stretch.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/literal/zero.hh>
+#include <mln/literal/colors.hh>
+#include <mln/literal/grays.hh>
+
+#include <mln/math/max.hh>
+#include <mln/math/min.hh>
+#include <mln/math/sqr.hh>
+#include <mln/math/sqrt.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/geom/nsites.hh>
+
+#include <mln/fun/v2v/rgb_to_hue_map.hh>
+#include <mln/fun/v2v/rgb_to_saturation_map.hh>
+#include <mln/fun/v2v/rgb_to_value_map.hh>
+#include <mln/fun/v2v/component.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/value/rgb8.hh>
+
+//============================================================================//
+// HISTOGRAM
+//============================================================================//
+
+/// \brief Count the number of pixel in the histogram.
+///
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the number of pixels in the domain.
+///
+/// This is simple counting routine that compute the number of pixels
+/// in the domain of the histogram. For each site, it sums the
+/// frequencies associated to its site.
+template <typename I>
+mln_value(I) cnt_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) cnt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ cnt += histo(p);
+ }
+
+ return cnt;
+}
+
+/// \brief The computing of the normalized histogram.
+///
+/// \param[in] input the name of the input image.
+/// \param[in] output_map the name of the specific map (hue,sat,val,R,G,B).
+/// \param[in] output_histo the name of the output normalized histogram.
+/// \param[in] space the name of the studied channel (R,G,B,H,S,V).
+///
+/// Compute the normalized histogram in the given channel. First get
+/// the channel from the RGB space or the HSV space and then compute
+/// its normalized histogram. Normalization is done by dividing each
+/// frequency by the sum of frequencies. It's a way to make the
+/// histogram independant from the dimension of the input image and
+/// then to compare different image databases together.
+void histo(const std::string input,
+ const std::string output_map,
+ const std::string output_histo,
+ const char space)
+
+{
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::fun::v2v::rgb_to_hue_map<8> t_rgb_to_hue_map;
+ typedef mln::fun::v2v::rgb_to_saturation_map<8> t_rgb_to_sat_map;
+ typedef mln::fun::v2v::rgb_to_value_map<8> t_rgb_to_val_map;
+ typedef mln::fun::v2v::component<t_rgb8,0> t_component_r;
+ typedef mln::fun::v2v::component<t_rgb8,1> t_component_g;
+ typedef mln::fun::v2v::component<t_rgb8,2> t_component_b;
+
+ mln::image2d<mln::value::rgb8> input_rgb8;
+ mln::image2d<mln::value::int_u8> map;
+ mln::image1d<unsigned> histo;
+ mln::image1d<float> histo_float;
+ float sum;
+
+ mln::io::ppm::load(input_rgb8, input.c_str());
+
+ switch(space)
+ {
+ case 'h': map = mln::data::transform(input_rgb8, t_rgb_to_hue_map()); break;
+ case 's': map = mln::data::transform(input_rgb8, t_rgb_to_sat_map()); break;
+ case 'v': map = mln::data::transform(input_rgb8, t_rgb_to_val_map()); break;
+ case 'r': map = mln::data::transform(input_rgb8, t_component_r()); break;
+ case 'g': map = mln::data::transform(input_rgb8, t_component_g()); break;
+ case 'b': map = mln::data::transform(input_rgb8, t_component_b()); break;
+ default: break;// crash
+ }
+
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(), map);
+ sum = cnt_histo(histo);
+ histo_float = mln::data::convert(float(), histo) / sum;
+
+ mln::io::pgm::save(map, output_map.c_str());
+ mln::io::plot::save_image_sh(histo_float, output_histo.c_str());
+}
+
+//============================================================================//
+// MAIN
+//============================================================================//
+
+
+/// \brief The main entry.
+///
+/// This a front end to compute histogram with boost plumberies. There
+/// is 2 uses cases, the computing over the icdar database and over
+/// the afp database. We force the computing over the six channel
+/// (H,S,V,R,G,B) in order to select the channel the most specific for
+/// a database. It seems that saturation channel and value channel are
+/// the most specific to describe each database. Take care to
+/// coherence of the output directories for each source of images.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+// t_path full_path[] = {t_path(ICDAR_20P_TEXT_ONLY_IMG_PATH),
+// t_path(ICDAR_20P_TEXT_COLOR_IMG_PATH),
+// t_path(ICDAR_20P_TEXT_PHOTO_IMG_PATH)};
+
+// t_path full_path[] = {t_path(AFP_INPUT_IMG_PATH)};
+// t_path full_path[] = {t_path(AFP_GMP30_IMG_PATH)};
+// t_path full_path[] = {t_path(AFP_GMP20_IMG_PATH)};
+// t_path full_path[] = {t_path(AFP_GMP10_IMG_PATH)};
+// t_path full_path[] = {t_path(AFP_MGK30_IMG_PATH)};
+// t_path full_path[] = {t_path(AFP_MGK20_IMG_PATH)};
+// t_path full_path[] = {t_path(AFP_MGK10_IMG_PATH)};
+
+// t_path full_path[] = {t_path(ICDAR_20P_INPUT_IMG_PATH)};
+// t_path full_path[] = {t_path(ICDAR_20P_GMP30_IMG_PATH)};
+ t_path full_path[] = {t_path(ICDAR_20P_GMP20_IMG_PATH)};
+// t_path full_path[] = {t_path(ICDAR_20P_GMP10_IMG_PATH)};
+// t_path full_path[] = {t_path(ICDAR_20P_MGK30_IMG_PATH)};
+// t_path full_path[] = {t_path(ICDAR_20P_MGK20_IMG_PATH)};
+// t_path full_path[] = {t_path(ICDAR_20P_MGK10_IMG_PATH)};
+
+ for (int i = 0; i < 1; ++i)
+ {
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ t_path directory;
+ t_path leaf;
+ t_path output_map;
+ t_path output_histo;
+
+ std::cerr << "entering " << full_path[i] << std::endl;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ std::cerr << dir_iter->path() << std::endl;
+
+ leaf = dir_iter->path().leaf();
+
+// directory = ANNOTATING_AFP_R_INPUT_RET_PATH;
+// directory = ANNOTATING_AFP_R_GMP30_RET_PATH;
+// directory = ANNOTATING_AFP_R_GMP20_RET_PATH;
+// directory = ANNOTATING_AFP_R_GMP10_RET_PATH;
+// directory = ANNOTATING_AFP_R_MGK30_RET_PATH;
+// directory = ANNOTATING_AFP_R_MGK20_RET_PATH;
+// directory = ANNOTATING_AFP_R_MGK10_RET_PATH;
+
+// directory = ANNOTATING_ICDAR_R_INPUT_RET_PATH;
+// directory = ANNOTATING_ICDAR_R_GMP30_RET_PATH;
+ directory = ANNOTATING_ICDAR_R_GMP20_RET_PATH;
+// directory = ANNOTATING_ICDAR_R_GMP10_RET_PATH;
+// directory = ANNOTATING_ICDAR_R_MGK30_RET_PATH;
+// directory = ANNOTATING_ICDAR_R_MGK20_RET_PATH;
+// directory = ANNOTATING_ICDAR_R_MGK10_RET_PATH;
+ output_histo = change_extension(directory / leaf, ".sh");
+ output_map = change_extension(directory / leaf, ".pgm");
+
+ histo(dir_iter->path().string(),
+ output_map.string(),
+ output_histo.string(),
+ 'r');
+
+// directory = ANNOTATING_AFP_G_INPUT_RET_PATH;
+// directory = ANNOTATING_AFP_G_GMP30_RET_PATH;
+// directory = ANNOTATING_AFP_G_GMP20_RET_PATH;
+// directory = ANNOTATING_AFP_G_GMP10_RET_PATH;
+// directory = ANNOTATING_AFP_G_MGK30_RET_PATH;
+// directory = ANNOTATING_AFP_G_MGK20_RET_PATH;
+// directory = ANNOTATING_AFP_G_MGK10_RET_PATH;
+
+// directory = ANNOTATING_ICDAR_G_INPUT_RET_PATH;
+// directory = ANNOTATING_ICDAR_G_GMP30_RET_PATH;
+ directory = ANNOTATING_ICDAR_G_GMP20_RET_PATH;
+// directory = ANNOTATING_ICDAR_G_GMP10_RET_PATH;
+// directory = ANNOTATING_ICDAR_G_MGK30_RET_PATH;
+// directory = ANNOTATING_ICDAR_G_MGK20_RET_PATH;
+// directory = ANNOTATING_ICDAR_G_MGK10_RET_PATH;
+ output_histo = change_extension(directory / leaf, ".sh");
+ output_map = change_extension(directory / leaf, ".pgm");
+
+ histo(dir_iter->path().string(),
+ output_map.string(),
+ output_histo.string(),
+ 'g');
+
+// directory = ANNOTATING_AFP_B_INPUT_RET_PATH;
+// directory = ANNOTATING_AFP_B_GMP30_RET_PATH;
+// directory = ANNOTATING_AFP_B_GMP20_RET_PATH;
+// directory = ANNOTATING_AFP_B_GMP10_RET_PATH;
+// directory = ANNOTATING_AFP_B_MGK30_RET_PATH;
+// directory = ANNOTATING_AFP_B_MGK20_RET_PATH;
+// directory = ANNOTATING_AFP_B_MGK10_RET_PATH;
+
+// directory = ANNOTATING_ICDAR_B_INPUT_RET_PATH;
+// directory = ANNOTATING_ICDAR_B_GMP30_RET_PATH;
+ directory = ANNOTATING_ICDAR_B_GMP20_RET_PATH;
+// directory = ANNOTATING_ICDAR_B_GMP10_RET_PATH;
+// directory = ANNOTATING_ICDAR_B_MGK30_RET_PATH;
+// directory = ANNOTATING_ICDAR_B_MGK20_RET_PATH;
+// directory = ANNOTATING_ICDAR_B_MGK10_RET_PATH;
+ output_histo = change_extension(directory / leaf, ".sh");
+ output_map = change_extension(directory / leaf, ".pgm");
+
+ histo(dir_iter->path().string(),
+ output_map.string(),
+ output_histo.string(),
+ 'b');
+
+// directory = ANNOTATING_AFP_H_INPUT_RET_PATH;
+// directory = ANNOTATING_AFP_H_GMP30_RET_PATH;
+// directory = ANNOTATING_AFP_H_GMP20_RET_PATH;
+// directory = ANNOTATING_AFP_H_GMP10_RET_PATH;
+// directory = ANNOTATING_AFP_H_MGK30_RET_PATH;
+// directory = ANNOTATING_AFP_H_MGK20_RET_PATH;
+// directory = ANNOTATING_AFP_H_MGK10_RET_PATH;
+
+// directory = ANNOTATING_ICDAR_H_INPUT_RET_PATH;
+// directory = ANNOTATING_ICDAR_H_GMP30_RET_PATH;
+ directory = ANNOTATING_ICDAR_H_GMP20_RET_PATH;
+// directory = ANNOTATING_ICDAR_H_GMP10_RET_PATH;
+// directory = ANNOTATING_ICDAR_H_MGK30_RET_PATH;
+// directory = ANNOTATING_ICDAR_H_MGK20_RET_PATH;
+// directory = ANNOTATING_ICDAR_H_MGK10_RET_PATH;
+ output_histo = change_extension(directory / leaf, ".sh");
+ output_map = change_extension(directory / leaf, ".pgm");
+
+ histo(dir_iter->path().string(),
+ output_map.string(),
+ output_histo.string(),
+ 'h');
+
+// directory = ANNOTATING_AFP_S_INPUT_RET_PATH;
+// directory = ANNOTATING_AFP_S_GMP30_RET_PATH;
+// directory = ANNOTATING_AFP_S_GMP20_RET_PATH;
+// directory = ANNOTATING_AFP_S_GMP10_RET_PATH;
+// directory = ANNOTATING_AFP_S_MGK30_RET_PATH;
+// directory = ANNOTATING_AFP_S_MGK20_RET_PATH;
+// directory = ANNOTATING_AFP_S_MGK10_RET_PATH;
+
+// directory = ANNOTATING_ICDAR_S_INPUT_RET_PATH;
+// directory = ANNOTATING_ICDAR_S_GMP30_RET_PATH;
+ directory = ANNOTATING_ICDAR_S_GMP20_RET_PATH;
+// directory = ANNOTATING_ICDAR_S_GMP10_RET_PATH;
+// directory = ANNOTATING_ICDAR_S_MGK30_RET_PATH;
+// directory = ANNOTATING_ICDAR_S_MGK20_RET_PATH;
+// directory = ANNOTATING_ICDAR_S_MGK10_RET_PATH;
+ output_histo = change_extension(directory / leaf, ".sh");
+ output_map = change_extension(directory / leaf, ".pgm");
+
+ histo(dir_iter->path().string(),
+ output_map.string(),
+ output_histo.string(),
+ 's');
+
+// directory = ANNOTATING_AFP_V_INPUT_RET_PATH;
+// directory = ANNOTATING_AFP_V_GMP30_RET_PATH;
+// directory = ANNOTATING_AFP_V_GMP20_RET_PATH;
+// directory = ANNOTATING_AFP_V_GMP10_RET_PATH;
+// directory = ANNOTATING_AFP_V_MGK30_RET_PATH;
+// directory = ANNOTATING_AFP_V_MGK20_RET_PATH;
+// directory = ANNOTATING_AFP_V_MGK10_RET_PATH;
+
+// directory = ANNOTATING_ICDAR_V_INPUT_RET_PATH;
+// directory = ANNOTATING_ICDAR_V_GMP30_RET_PATH;
+ directory = ANNOTATING_ICDAR_V_GMP20_RET_PATH;
+// directory = ANNOTATING_ICDAR_V_GMP10_RET_PATH;
+// directory = ANNOTATING_ICDAR_V_MGK30_RET_PATH;
+// directory = ANNOTATING_ICDAR_V_MGK20_RET_PATH;
+// directory = ANNOTATING_ICDAR_V_MGK10_RET_PATH;
+ output_histo = change_extension(directory / leaf, ".sh");
+ output_map = change_extension(directory / leaf, ".pgm");
+
+ histo(dir_iter->path().string(),
+ output_map.string(),
+ output_histo.string(),
+ 'v');
+ }
+ }
+ }
+
+ return 0;
+}
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/hsv/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/hsv/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/hsv/hsv.cc b/scribo/sandbox/green/exp/annotating/hsv/hsv.cc
new file mode 100644
index 0000000..507d07b
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/hsv/hsv.cc
@@ -0,0 +1,912 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet HSV operator [millet.phd.2008.pdf]
+///
+/// This is the Millet code for moving from RGB space to Hue
+/// one. Formulae are classical, we can find them on the web.
+///
+/// Val = max(R,G,B).
+/// Sat = (max(R,G,B) - min(R,G,B))/max(R,G,B).
+/// IF R = max(R,G,B) THEN Hue = 60 * [(V-B)/(max(R,G,B)-min(R,G,B))].
+/// IF G = max(R,G,B) THEN Hue = 60 * [2 + (B-R)/(max(R,G,B)-min(R,G,B))].
+/// IF B = max(R,G,B) THEN Hue = 60 * [4 + (R-G)/(max(R,G,B)-min(R,G,B))].
+///
+/// This operator try to integrate many processing in one shot, after
+/// HSV transformation.
+
+
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/arith/minus.hh>
+#include <mln/arith/div.hh>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+
+#include <mln/data/convert.hh>
+#include <mln/data/compute.hh>
+#include <mln/data/stretch.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/literal/zero.hh>
+#include <mln/literal/colors.hh>
+#include <mln/literal/grays.hh>
+
+#include <mln/math/max.hh>
+#include <mln/math/min.hh>
+#include <mln/math/sqr.hh>
+#include <mln/math/sqrt.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/geom/nsites.hh>
+
+#include <mln/fun/v2v/rgb_to_hue_map.hh>
+#include <mln/fun/v2v/rgb_to_saturation_map.hh>
+#include <mln/fun/v2v/rgb_to_value_map.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/value/rgb8.hh>
+
+//============================================================================//
+// HISTOGRAM
+//============================================================================//
+
+/// Histogram
+/// \{
+/// \brief Histogram processing methods.
+///
+/// In this part, we define methods for histogram processing as average,
+/// peak, variance etc ...
+
+
+/// \brief Sum all the bins of the histogram.
+///
+/// \param[in] img the histogram based on image.
+///
+/// \return the sum of the overall bins.
+///
+/// Sum evry bins and return the result.
+template <typename I>
+mln_value(I) count_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) result = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ result += histo(p);
+
+ return result;
+}
+
+/// \brief Sum the whole frequencies.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the number of pixels in the domain.
+///
+/// By summing all the frequencies of the domain, we count in fact the
+/// number of pixels in the image.
+template <typename I>
+mln_value(I) sum_frequency_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) sum = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ sum += histo(p);
+
+ return sum;
+}
+
+/// \brief Count the null frequencies.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the number of null frequencies.
+///
+/// It's a way to access the number of distinct colors in the
+/// histogram by comparing it with the histogram domain.
+template <typename I>
+mln_value(I) count_null_frequency_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) count = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ if (0 == histo(p))
+ count++;
+
+ return count;
+}
+
+/// \brief Find the peak of the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the bin which contains the greatest value.
+///
+/// Compute the position of the peak of the histogram. To do this, we
+/// view evrey bin and we maintain the maxima of the values and the
+/// position. At the end, we return the position which contains the
+/// greatest value.
+template <typename I>
+mln_coord(mln_site_(I)) peak_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the peak of the histogram
+ mln_value(I) v_max = mln::opt::at(histo, mln::literal::zero);
+ mln_coord(mln_site_(I)) p_max = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ return p_max;
+}
+
+/// \brief Find the maximum frequency of the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the maximum frequency of the histogram.
+///
+/// Find the peak and return its value, not its position. We use that
+/// function to normalize histograms.
+template <typename I>
+mln_value(I) max_frequency_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the value of the peak from the histogram
+ mln_value(I) max = mln::opt::at(histo, mln::literal::zero);
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ max = mln::math::max(histo(p),max);
+ }
+
+ return max;
+}
+
+/// \brief Find the mean of the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the aveerage of the histogram.
+///
+/// Compute the mean.
+template <typename I>
+float mean_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the mean of the histogram
+ float sum = 0;
+ float mean = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum += histo(p);
+ mean += p.ind()*histo(p);
+ }
+
+ mean = mean / sum;
+
+ return mean;
+}
+
+/// \brief Compare the histogram with the equi distributed histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the distance between the equi distributed histogram.
+///
+/// Compute the square euclidian distance between histogram and the
+/// equi distributed histogram. The equi distributed histogram is an
+/// histogram in which each bin has the same frequency (id est 1/256
+/// for instance). The integral equals one for this two
+/// histograms. This is a major contribution test to differentiate
+/// image database.
+template <typename I>
+float cmp_equi_frequency_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the mean of the histogram
+ float sum = 0;
+ float var = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum += histo(p);
+ var += mln::math::sqr(histo(p) - (1/256.0));
+ }
+
+ var = var / sum;
+
+ return var;
+}
+
+/// \brief Compute the variance on the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the variance.
+///
+/// Compute the variance by substracting the mean.
+template <typename I>
+float var_histo(const mln::Image<I>& histo_, float mean)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the mean of the histogram
+ float sum = 0;
+ float var = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum += histo(p);
+ var += mln::math::sqr(p.ind() - mean) * histo(p);
+ }
+
+ var = var / sum;
+
+ return var;
+}
+
+/// \brief Find the mean of the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the aveerage of the histogram.
+///
+/// Compute the mean.
+template <typename I>
+float mean_frequency_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the mean of the histogram
+ float sum = 0;
+ float mean = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum++;
+ mean += histo(p);
+ }
+
+ mean = mean / sum;
+
+ return mean;
+}
+
+/// \brief Compute the standard deviation on the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the dstandard deviation.
+///
+/// Compute the standard deviation by substracting the mean
+template <typename I>
+float stddev_frequency_histo(const mln::Image<I>& histo_, float mean)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the var of the histogram
+ float sum = 0;
+ float var = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum++;
+ var += mln::math::sqr(histo(p)-mean);
+ }
+
+ var = mln::math::sqrt(var / sum);
+
+ return var;
+}
+/// \}
+
+//============================================================================//
+// HUE TEST
+//============================================================================//
+
+/// Hue test
+/// \{
+/// \brief Hue test image processing stuff.
+///
+/// In this part, we define every thing that is correlated to the hue analysis.
+
+
+/// \brief Label a grey value.
+///
+/// \param[in] int_u8 the grey value.
+///
+/// \return the reference color for this grey value.
+///
+/// Classify grey value in three class, white, black and medium_gray.
+mln::value::rgb8 label_val(const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (82 > val)
+ result = mln::literal::black;
+ else if (179 > val)
+ result= mln::literal::medium_gray;
+ else
+ result = mln::literal::white;
+
+ return result;
+}
+
+
+/// \brief Label color with orange reference or brown reference.
+///
+/// \param[in] color the rgb8 color.
+/// \param[in] sat the HSV saturation.
+/// \param[in] val the HSV value.
+///
+/// \return the reference color with which it has been associated to.
+mln::value::rgb8 label_orange_or_brown(const mln::value::rgb8 color,
+ const mln::value::int_u8 sat,
+ const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (mln::literal::orange == color)
+ {
+ unsigned dist_orange = mln::math::abs(sat - 184)
+ + mln::math::abs(val - 65);
+
+ unsigned dist_brown = mln::math::abs(sat - 255)
+ + mln::math::abs(val - 125);
+
+ if (dist_orange < dist_brown)
+ result = mln::literal::orange;
+ else
+ result = mln::literal::brown;
+ }
+ else
+ result = color;
+
+ return result;
+}
+
+
+/// \brief Label between yellow and green color.
+///
+/// \param[in] color the rgb8 color.
+/// \param[in] val the HSV value.
+///
+/// \return the reference color associated to that color.
+mln::value::rgb8 label_yellow_or_green(const mln::value::rgb8 color,
+ const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (mln::literal::yellow == color)
+ {
+ // Is it green or yellow ?
+ if (80 > val)
+ result = mln::literal::green;
+ else
+ result = mln::literal::yellow;
+ }
+ else
+ return color;
+
+ return result;
+}
+
+
+/// \brief Label hue color.
+///
+/// \param[in] hue the HSV hue canal for a pixel.
+///
+/// \return a hue segmentation of the hue wheel.
+///
+/// The old classification given by Millet is commented. Mine is ready
+/// to use. We need to change reference colors to make the
+/// primary colors, the secondary ones, etc...
+mln::value::rgb8 label_hue(const mln::value::int_u8 hue)
+{
+ mln::value::rgb8 result;
+
+
+ if (10 > hue)
+ result = mln::literal::red;
+ else if (32 > hue)
+ result = mln::literal::orange;
+ else if (53 > hue)
+ result = mln::literal::yellow;
+ else if (74 > hue)
+ result = mln::literal::green; // chartreuse
+ else if (96 > hue)
+ result = mln::literal::green;
+ else if (116 > hue)
+ result = mln::literal::green;// turquoise, aigue-marine
+ else if (138 > hue)
+ result = mln::literal::green; // cyan
+ else if (159 > hue)
+ result = mln::literal::blue; // azur
+ else if (181 > hue)
+ result = mln::literal::blue;
+ else if (202 > hue)
+ result = mln::literal::violet;
+ else if (223 > hue)
+ result = mln::literal::pink;
+ else // if (244 > hue)
+ result = mln::literal::red;
+
+ return result;
+}
+
+/// \brief The hue test.
+///
+/// \param[in] input the name of the input image.
+/// \param[in] output the name of the histogram to output.
+/// \param[in] tmp the name of the hue map to output.
+/// \param[in] threshold the limit to compute the histogram contribution.
+///
+/// \return the proportion of pixels that pass the test.
+///
+/// This is an augmented test. We first normalized the histogram to
+/// obtain a discrete distribution. Then we compute the mean (or the
+/// peak, i don't really know what is the best) and we look at the
+/// proportion of the pixels around the mean or the peak. This
+/// proportion tell us how histogram distribution is concentrated
+/// around the modal value. If a hue modal value exist, we can say
+/// that the image is colorized.
+float hue_test(const std::string input,
+ const std::string output,
+ const std::string tmp,
+ const short threshold)
+
+{
+ typedef mln::fun::v2v::rgb_to_hue_map<8> t_rgb_to_hue_map;
+
+ mln::image2d<mln::value::rgb8> input_rgb8;
+ mln::image2d<mln::value::int_u8> map;
+ mln::image1d<unsigned> histo;
+ mln::image1d<float> histo_float;
+ float cnt1;
+ float cnt2;
+ float prop;
+ short peak;
+ mln::value::rgb8 color;
+ float sum;
+ mln::point1d inf;
+ mln::point1d sup;
+
+ mln::io::ppm::load(input_rgb8, input.c_str());
+
+ map = mln::data::transform(input_rgb8, t_rgb_to_hue_map());
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(), map);
+ sum = sum_frequency_histo(histo);
+ histo_float = mln::data::convert(float(), histo) / sum;
+ peak = mean_histo(histo); //peak_histo(histo);
+ color = label_hue(peak);
+ inf = mln::point1d(mln::math::max(0, peak-threshold));
+ sup = mln::point1d(mln::math::min(255, peak+threshold));
+ cnt1 = count_histo(histo_float|mln::box1d(inf,sup));
+ cnt2 = count_histo(histo_float);
+ prop = ((100.0 * cnt1) / cnt2);
+
+ mln::io::plot::save_image_sh(histo_float, output.c_str());
+ mln::io::pgm::save(map, tmp.c_str());
+// std::cout << "peak = " << peak << std::endl;
+// std::cout << "color = " << color << std::endl;
+
+ return prop;
+}
+/// \}
+
+//============================================================================//
+// SATURATION TEST
+//============================================================================//
+
+/// Saturation test
+/// \{
+/// \brief Saturation test image processing stuff.
+///
+/// In this part, we define every thing that is correlated to the
+/// saturation analysis.
+
+
+/// \brief The saturation test.
+///
+/// \param[in] input the name of the input image.
+/// \param[in] output the name of the histogram to output.
+/// \param[in] tmp the name of the hue map to output.
+/// \param[in] threshold for deciding which is low saturation or not.
+///
+/// \return the proportion of pixels which pass the test.
+///
+/// This is the augmented test, we normalized the histogram and then
+/// we count the proportion of the histogram below the threshold.
+float saturation_test(const std::string input,
+ const std::string output,
+ const std::string tmp,
+ const short threshold)
+
+{
+ typedef mln::fun::v2v::rgb_to_saturation_map<8> t_rgb_to_saturation_map;
+
+ mln::image2d<mln::value::rgb8> input_rgb8;
+ mln::image2d<mln::value::int_u8> map;
+ mln::image1d<unsigned> histo;
+ mln::image1d<float> histo_float;
+ float cnt1;
+ float cnt2;
+ float sum;
+ float prop;
+
+ mln::io::ppm::load(input_rgb8, input.c_str());
+
+ map = mln::data::transform(input_rgb8, t_rgb_to_saturation_map());
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(), map);
+ sum = sum_frequency_histo(histo);
+ histo_float = mln::data::convert(float(), histo) / sum;
+ cnt1 = count_histo(histo_float | mln::box1d(mln::point1d(0),
+ mln::point1d(threshold)));
+ cnt2 = count_histo(histo_float);
+ prop = ((100.0 * cnt1) / cnt2);
+
+ mln::io::plot::save_image_sh(histo_float, output.c_str());
+ mln::io::pgm::save(map, tmp.c_str());
+
+ return prop;
+}
+/// \}
+
+//============================================================================//
+// VALUE TEST
+//============================================================================//
+
+/// Value test
+/// \{
+/// \brief Value test image processing stuff.
+///
+/// In this part, we define every thing that is correlated to the
+/// value analysis.
+
+
+
+/// \brief The R function of Millet
+///
+/// \param[in] p the position of the pic.
+/// \param[in] histo_p the histo value of the pic.
+/// \param[in] x the position of the element which we compute the contrib.
+/// \param[in] histo_x the histo value of that element.
+///
+/// \result the contribution of the element x.
+///
+/// This function compute the variance-like contribution of an element
+/// x linked to the pic of the histogram. In fact, every thing is like
+/// we compute a square distance-like between the element x and the
+/// pic in the normalized histogram. Notice that the normalized
+/// histogram is the histogram divide by the value of it's pic. So at
+/// the pic, the value equals 1. It's a current representation of the
+/// histogram in image processing, we can find it in gimp for exemple.
+float r(short p, unsigned histo_p, short x, unsigned histo_x)
+{
+ float result = mln::math::sqr(((float)histo_x / histo_p) * (x-p));
+
+ return result;
+}
+
+/// \brief The stddev3 is an internal stuff.
+///
+/// \param[in] histo_ the image which represents the histogram.
+/// \param[in] peak the position of the histogram peak.
+///
+/// \return simple computing of deviation.
+///
+/// This is an internal stuff. It splits the computing for easy
+/// reusing practice. Sum the R contribution.
+template <typename I>
+float stddev3(const mln::Image<I>& histo_, unsigned peak)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Compute stddev
+
+ float stddev = 0.0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ stddev += r((short)peak, mln::opt::at(histo,peak), p.ind(), histo(p));
+ }
+
+ return stddev;
+}
+
+/// Brief compute the whole deviation of Millet
+///
+/// \param[in] image the input image to analyze.
+///
+/// \return the deviation.
+///
+/// The deviation uses the R function. It stats by finding the pic. If
+/// the pic is near the rigth border of the histo, compute the R
+/// function on the left neighbouring of the pic. If the pic is near
+/// the left border of the histo, compute the R function on the right
+/// neigbouring. Otherwise, compute the average of the right and left
+/// results. The selected neighbouring is composed of five pixels at
+/// the right or at the left of the pic. The detection of clipart
+/// assumes that the majority of the energy of the histogram is closed
+/// to the pic (five pixels around it). The test is generalized by
+/// making constants as parameters.
+template <typename I>
+float stddev2(const mln::Image<I>& histo_, unsigned peak, unsigned limit)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ float stddev_low = 0.0;
+ float stddev_up = 0.0;
+ float ret = 0.0;
+
+ // A transformer avec des iterators
+
+ if (250 > peak)
+ stddev_up = stddev3(histo |mln::box1d(mln::point1d(peak+1),
+ mln::point1d(peak+limit)), peak);
+
+ if (5 < peak)
+ stddev_low = stddev3(histo |mln::box1d(mln::point1d(peak-limit),
+ mln::point1d(peak-1)), peak);
+
+ ret = (250 < peak)? stddev_low : (5 > peak)? stddev_up :
+ (stddev_low + stddev_up)/2;
+
+ return ret;
+}
+
+
+/// \brief This is the Value test.
+///
+/// \param[in] input the name of the input image.
+/// \param[in] output the name of result histogram.
+/// \param[in] tmp the name of the output value (HSV) map.
+/// \param[in] threshold the range around the peak where R is computed.
+///
+/// \return the proportion of pixels that pass the test.
+///
+/// This is the augmented version of the Millet test. This code is not
+/// stable. There is a lots of tests on. The Millet test is computed
+/// with stddev2 call. We test simple counting around the pic as we
+/// do for other tests but it's not really insteresting. The prop4 is
+/// the best for me. We test the difference between the distribution and the
+/// equi-distribution.
+float value_test(const std::string input,
+ const std::string output,
+ const std::string tmp,
+ const short threshold)
+
+{
+ typedef mln::fun::v2v::rgb_to_value_map<8> t_rgb_to_value_map;
+
+ mln::image2d<mln::value::rgb8> input_rgb8;
+ mln::image2d<mln::value::int_u8> map;
+ mln::image1d<unsigned> histo;
+ mln::image1d<float> histo_float;
+ float cnt1;
+ float cnt2;
+ float prop;
+ float sum;
+ float prop4;
+ short peak;
+ mln::point1d inf;
+ mln::point1d sup;
+
+
+ mln::io::ppm::load(input_rgb8, input.c_str());
+
+ map = mln::data::transform(input_rgb8, t_rgb_to_value_map());
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(), map);
+ sum = sum_frequency_histo(histo);
+ histo_float = mln::data::convert(float(), histo) / sum;
+ prop4 = cmp_equi_frequency_histo(histo_float);
+ peak = peak_histo(histo); // mean_histo(histo);
+ //prop = stddev2(histo, peak, threshold);
+ inf = mln::point1d(mln::math::max(0, peak-threshold));
+ sup = mln::point1d(mln::math::min(255, peak+threshold));
+ cnt1 = count_histo(histo_float|mln::box1d(inf,sup));
+ cnt2 = count_histo(histo_float);
+ prop = ((100.0 * cnt1) / cnt2);
+
+ std::cerr << "peak = " << peak << std::endl;
+ std::cerr << "inf = " << inf << std::endl;
+ std::cerr << "sup = " << sup << std::endl;
+ std::cerr << "cnt1 = " << cnt1 << std::endl;
+ std::cerr << "cnt2 = " << cnt2 << std::endl;
+ std::cerr << "prop = " << prop << std::endl;
+ std::cerr << "prop4= " << prop4 << std::endl;
+
+ mln::io::plot::save_image_sh(histo_float, output.c_str());
+ mln::io::pgm::save(map, tmp.c_str());
+
+ return prop;
+}
+
+//============================================================================//
+// MAIN
+//============================================================================//
+
+
+/// \brief The main entry.
+///
+/// This is a front end for launching image processing test. We deal
+/// with boost library to walk on image database directories. Nothing
+/// very interesting here, it is a lot of plumberies.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+// t_path full_path[] = {t_path(ICDAR_20P_TEXT_ONLY_IMG_PATH),
+// t_path(ICDAR_20P_TEXT_COLOR_IMG_PATH),
+// t_path(ICDAR_20P_TEXT_PHOTO_IMG_PATH)};
+
+ t_path full_path[] = {t_path(AFP_PPM_IMG_PATH)};
+
+ std::cout << "#!/usr/bin/gnuplot" << std::endl;
+ std::cout << "set terminal x11 persist 1" << std::endl;
+ std::cout << "#HUE - SATURATION - VALUE" << std::endl;
+ std::cout << "plot '-' using 1:2 with point notitle,\\" << std::endl;
+ std::cout << " '-' using 1:2 with point notitle,\\" << std::endl;
+ std::cout << " '-' using 1:2 with point notitle" << std::endl;
+
+ for (int i = 0; i < 1; ++i)
+ {
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ float prop = 0.0;
+ t_path directory;
+ t_path leaf;
+ t_path output;
+ t_path tmp;
+
+ std::cerr << "entering " << full_path[i] << std::endl;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ std::cerr << dir_iter->path() << std::endl;
+ // concatenation de chaine
+// directory = (ANNOTATING_ICDAR_H_INPUT_RET_PATH);
+ directory = (ANNOTATING_AFP_H_INPUT_RET_PATH);
+ leaf = dir_iter->path().leaf();
+ output = change_extension(directory / leaf, ".sh");
+ tmp = change_extension(directory / leaf, ".pgm");
+
+ prop = hue_test(dir_iter->path().string(),
+ output.string(),
+ tmp.string(),
+ 20);
+
+ std::cout << prop << " ";
+
+// directory = (ANNOTATING_ICDAR_S_INPUT_RET_PATH);
+ directory = (ANNOTATING_AFP_S_INPUT_RET_PATH);
+ leaf = dir_iter->path().leaf();
+ output = change_extension(directory / leaf, ".sh");
+ tmp = change_extension(directory / leaf, ".pgm");
+
+ prop = saturation_test(dir_iter->path().string(),
+ output.string(),
+ tmp.string(),
+ 25);
+
+ std::cout << prop << " ";
+
+// directory = (ANNOTATING_ICDAR_V_INPUT_RET_PATH);
+ directory = (ANNOTATING_AFP_V_INPUT_RET_PATH);
+ leaf = dir_iter->path().leaf();
+ output = change_extension(directory / leaf, ".sh");
+ tmp = change_extension(directory / leaf, ".pgm");
+
+ prop = value_test(dir_iter->path().string(),
+ output.string(),
+ tmp.string(),
+ 15);
+
+ std::cout << prop << " ";
+ std::cout << "# " << dir_iter->path().leaf() << std::endl;
+ }
+ std::cout << "e" << std::endl;
+ }
+ }
+
+ return 0;
+}
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/hue/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/hue/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/hue/hue.cc b/scribo/sandbox/green/exp/annotating/hue/hue.cc
new file mode 100644
index 0000000..6e1195c
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/hue/hue.cc
@@ -0,0 +1,402 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet hue operator [millet.phd.2008.pdf]
+///
+/// This is the Millet code for moving from RGB space to Hue
+/// one. Formulae are classical, we can find them on the web.
+///
+/// Val = max(R,G,B).
+/// Sat = (max(R,G,B) - min(R,G,B))/max(R,G,B).
+/// IF R = max(R,G,B) THEN Hue = 60 * [(V-B)/(max(R,G,B)-min(R,G,B))].
+/// IF G = max(R,G,B) THEN Hue = 60 * [2 + (B-R)/(max(R,G,B)-min(R,G,B))].
+/// IF B = max(R,G,B) THEN Hue = 60 * [4 + (R-G)/(max(R,G,B)-min(R,G,B))].
+
+
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/stretch.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/literal/colors.hh>
+#include <mln/literal/grays.hh>
+
+#include <mln/math/max.hh>
+#include <mln/math/min.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/geom/nsites.hh>
+
+#include <mln/fun/v2v/rgb_to_hue_map.hh>
+#include <mln/value/rgb8.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+
+
+/// \brief Label a grey value.
+///
+/// \param[in] int_u8 the grey value.
+///
+/// \return the reference color for this grey value.
+///
+/// Classify grey value in three class, white, black and medium_gray.
+mln::value::rgb8 label_val(const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (82 > val)
+ result = mln::literal::black;
+ else if (179 > val)
+ result= mln::literal::medium_gray;
+ else
+ result = mln::literal::white;
+
+ return result;
+}
+
+
+/// \brief Label color with orange reference or brown reference.
+///
+/// \param[in] color the rgb8 color.
+/// \param[in] sat the HSV saturation.
+/// \param[in] val the HSV value.
+///
+/// \return the reference color with which it has been associated to.
+mln::value::rgb8 label_orange_or_brown(const mln::value::rgb8 color,
+ const mln::value::int_u8 sat,
+ const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (mln::literal::orange == color)
+ {
+ unsigned dist_orange = mln::math::abs(sat - 184)
+ + mln::math::abs(val - 65);
+
+ unsigned dist_brown = mln::math::abs(sat - 255)
+ + mln::math::abs(val - 125);
+
+ if (dist_orange < dist_brown)
+ result = mln::literal::orange;
+ else
+ result = mln::literal::brown;
+ }
+ else
+ result = color;
+
+ return result;
+}
+
+/// \brief Label between yellow and green color.
+///
+/// \param[in] color the rgb8 color.
+/// \param[in] val the HSV value.
+///
+/// \return the reference color associated to that color.
+mln::value::rgb8 label_yellow_or_green(const mln::value::rgb8 color,
+ const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (mln::literal::yellow == color)
+ {
+ // Is it green or yellow ?
+ if (80 > val)
+ result = mln::literal::green;
+ else
+ result = mln::literal::yellow;
+ }
+ else
+ return color;
+
+ return result;
+}
+
+
+/// \brief Label hue color.
+///
+/// \param[in] hue the HSV hue canal for a pixel.
+///
+/// \return a hue segmentation of the hue wheel.
+///
+/// The old classification given by Millet is commented. Mine is ready
+/// to use. We need to change reference colors to make the
+/// primary colors, the secondary ones, etc...
+mln::value::rgb8 label_hue(const mln::value::int_u8 hue)
+{
+ mln::value::rgb8 result;
+
+
+ if (10 > hue)
+ result = mln::literal::red;
+ else if (32 > hue)
+ result = mln::literal::orange;
+ else if (53 > hue)
+ result = mln::literal::yellow;
+ else if (74 > hue)
+ result = mln::literal::green; // chartreuse
+ else if (96 > hue)
+ result = mln::literal::green;
+ else if (116 > hue)
+ result = mln::literal::green;// turquoise, aigue-marine
+ else if (138 > hue)
+ result = mln::literal::green; // cyan
+ else if (159 > hue)
+ result = mln::literal::blue; // azur
+ else if (181 > hue)
+ result = mln::literal::blue;
+ else if (202 > hue)
+ result = mln::literal::violet;
+ else if (223 > hue)
+ result = mln::literal::pink;
+ else // if (244 > hue)
+ result = mln::literal::red;
+
+
+// if (14 > hue)
+// result = mln::literal::red;
+// else if (29 > hue)
+// result = mln::literal::orange;
+// else if (45 > hue)
+// result = mln::literal::yellow;
+// else if (113 > hue)
+// result = mln::literal::green;
+// else if (149 > hue)
+// result = mln::literal::cyan;
+// else if (205 > hue)
+// result = mln::literal::blue;
+// else if (235 > hue)
+// result = mln::literal::violet;
+// else if (242 > hue)
+// result = mln::literal::pink;
+// else
+// result = mln::literal::red;
+
+ return result;
+}
+
+
+/// \brief Sum all the bins of the histogram.
+///
+/// \param[in] img the histogram based on image.
+///
+/// \return the sum of the overall bins.
+///
+/// Sum evry bins and return the result.
+template <typename I>
+unsigned count_histo(const mln::Image<I>& img_)
+{
+ const I& img = exact(img_);
+
+ mln_precondition(img.is_valid());
+
+ unsigned result = 0;
+
+ mln_piter(I) p(img.domain());
+
+ for_all(p)
+ result += img(p);
+
+ return result;
+}
+
+/// \brief Find the peak of the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the bin which contains the greatest value.
+///
+/// Compute the position of the peak of the histogram. To do this, we
+/// view evrey bin and we maintain the maxima of the values and the
+/// position. At the end, we return the position which contains the
+/// greatest value.
+template <typename I>
+unsigned peak_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the peak of the histogram
+ unsigned v_max = mln::opt::at(histo, 0);
+ short p_max = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ return p_max;
+}
+
+/// \brief Compute the average of the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the average of the histogram.
+///
+/// Compute the mean of the histogram by summing the values of each
+/// bin ponderated by its frequency. The result is divided by the sum
+/// of the frequencies.
+template <typename I>
+unsigned mean_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the mean of the histogram
+ float sum = 0;
+ float mean = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum += histo(p);
+ mean += p.ind()*histo(p);
+ }
+
+ mean = mean / sum;
+
+ return mean;
+}
+
+
+/// \brief The hue test.
+///
+/// \param[in] input the name of the input image.
+/// \param[in] output the name of the histogram to output.
+/// \param[in] tmp the name of the hue map to output.
+///
+/// \return the proportion of pixels that pass the test.
+///
+/// Load the input image, transform it to get the hue_map and compute
+/// the histogram. Then count the number of pixels that are between
+/// peak-threshold and peak +threshold. Print the peak and the
+/// percentage of pixels around the pic.
+float hue_test(const std::string input,
+ const std::string output,
+ const std::string tmp,
+ const unsigned threshold)
+
+{
+ typedef mln::fun::v2v::rgb_to_hue_map<8> t_rgb_to_hue_map;
+
+ mln::image2d<mln::value::rgb8> input_rgb8;
+ mln::image2d<mln::value::int_u8> map;
+ mln::image1d<unsigned> histo;
+ unsigned cnt1;
+ unsigned cnt2;
+ float prop;
+ unsigned peak;
+ mln::value::rgb8 color;
+
+ mln::io::ppm::load(input_rgb8, input.c_str());
+
+ map = mln::data::transform(input_rgb8, t_rgb_to_hue_map());
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(), map);
+ peak = mean_histo(histo); //peak_histo(histo);
+ color = label_hue(peak);
+ cnt1 = count_histo(histo | mln::box1d(mln::point1d(peak-threshold),
+ mln::point1d(peak+threshold)));
+ cnt2 = mln::geom::nsites(input_rgb8);
+ prop = ((100.0 * cnt1) / cnt2);
+
+ mln::io::plot::save_image_sh(histo, output.c_str());
+ mln::io::pgm::save(map, tmp.c_str());
+ std::cout << "peak = " << peak << std::endl;
+ std::cout << "color = " << color << std::endl;
+
+ return prop;
+}
+
+
+/// \brief Main entry.
+///
+/// It is a front end which managing the iteration through one image
+/// data base with boost. Save hue map and hue histogram.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+ t_path full_path[] = {t_path(ICDAR_20P_PPM_IMG_PATH)};
+
+ for (int i = 0; i < 1; ++i)
+ {
+ std::cout << "entering " << full_path[i] << std::endl;
+
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ float prop = 0.0;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ // concatenation de chaine
+ t_path directory(ANNOTATING_ICDAR_RET_PATH);
+ t_path leaf = dir_iter->path().leaf();
+ t_path output = change_extension(directory / leaf, ".sh");
+ t_path tmp = change_extension(directory / leaf, ".pgm");
+
+ prop = hue_test(dir_iter->path().string(),
+ output.string(),
+ tmp.string(),
+ 20);
+
+ std::cout << output << " : " << prop << std::endl;
+ std::cerr << output << " : " << prop << std::endl;
+ }
+ }
+ }
+
+ return 0;
+}
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-color.txt b/scribo/sandbox/green/exp/annotating/hue/text-color.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-color.txt
copy to scribo/sandbox/green/exp/annotating/hue/text-color.txt
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-img.txt b/scribo/sandbox/green/exp/annotating/hue/text-img.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-img.txt
copy to scribo/sandbox/green/exp/annotating/hue/text-img.txt
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-only.txt b/scribo/sandbox/green/exp/annotating/hue/text-only.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-only.txt
copy to scribo/sandbox/green/exp/annotating/hue/text-only.txt
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/nb_color/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/nb_color/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/nb_color/nb_color.cc b/scribo/sandbox/green/exp/annotating/nb_color/nb_color.cc
new file mode 100644
index 0000000..2331c61
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/nb_color/nb_color.cc
@@ -0,0 +1,171 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Compute the number of colors in an image.
+///
+/// Build histogram of colors and count the bins different from zero.
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/math/count.hh>
+#include <mln/accu/stat/histo3d_rgb.hh>
+
+#include <mln/binarization/threshold.hh>
+
+#include <mln/core/alias/neighb3d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/image3d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/fun/v2v/rgb8_to_rgbn.hh>
+
+// #include <mln/morpho/opening/volume.hh>
+
+#include <mln/io/ppm/load.hh>
+
+#include <mln/pw/value.hh>
+#include <mln/pw/cst.hh>
+
+#include <mln/util/timer.hh>
+
+#include <mln/value/rgb8.hh>
+//#include <mln/value/rgb.hh>
+
+
+/// \brief Count the colors.
+///
+/// \param[in] image the name of the image to process.
+///
+/// \return the number of colors.
+///
+/// Count the color by building histogram. Strange filtering is
+/// done. We use also the technique of regional maxima in
+/// comment. Quantification is done to reduce the size of the
+/// histogram as well.
+
+// n < 8, n is the degree of quantification
+template <unsigned n>
+unsigned count_image_color(const std::string& image)
+{
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::rgb<n> t_rgbn;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_rgbn> t_image2d_rgbn;
+ typedef mln::image3d<unsigned> t_histo3d;
+ typedef mln::image3d<bool> t_histo3d_bool;
+ typedef mln::fun::v2v::rgb8_to_rgbn<n> t_rgb8_to_rgbn;
+ typedef mln::accu::meta::stat::histo3d_rgb t_histo3d_fun;
+ typedef mln::accu::meta::math::count t_count_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_rgbn input_rgbn;
+ t_image2d_rgbn output_rgbn;
+ t_histo3d histo;
+// t_histo3d opened;
+ t_histo3d_bool filtered;
+
+ mln::io::ppm::load(input_rgb8, image.c_str());
+
+ unsigned nb_pixel = input_rgb8.ncols() * input_rgb8.nrows();
+ unsigned min_volume = (unsigned)(nb_pixel * 0.0001);
+ unsigned nb_color = 0;
+
+// input_rgbn = mln::data::transform(input_rgb8, t_rgb8_to_rgbn());
+ histo = mln::data::compute(t_histo3d_fun(), input_rgb8);
+// opened = mln::morpho::opening::volume(histo, mln::c6(), min_volume);
+ filtered = mln::binarization::threshold(histo, min_volume);
+ nb_color = mln::data::compute(t_count_fun(),
+ (filtered|(mln::pw::value(filtered)!=0)).rw());
+
+ return nb_color;
+}
+
+
+/// \brief Main entry.
+///
+/// The main routine makes the base driver job. It looks after many
+/// directories and lists every images in it. We use the boost library
+/// to do it. Statistics are computed on the number of colors. The
+/// first idea was to answer the question is this descriptor allow to
+/// recognize a specific base.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ //typedef boost::filesystem::initial_path<t_path()> t_init_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+ t_path full_path[] = {t_path(ANNOTATING_1_BILL_IMG_PATH),
+ t_path(ANNOTATING_1_FAX_IMG_PATH),
+ t_path(ANNOTATING_1_HANDWRITTEN_IMG_PATH),
+ t_path(ANNOTATING_1_LOGO_IMG_PATH),
+ t_path(ANNOTATING_1_MAP_IMG_PATH),
+ t_path(ANNOTATING_1_PHOTO_IMG_PATH),
+ t_path(ANNOTATING_1_SCREENSHOT_IMG_PATH),
+ t_path(ANNOTATING_1_SLIDE_IMG_PATH),
+ t_path(ANNOTATING_1_TYPED_IMG_PATH)};
+
+ for (int i = 0; i < 9; ++i)
+ {
+ std::cerr << "entering " << full_path[i] << std::endl;
+ std::cout << "entering " << full_path[i] << std::endl;
+
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ unsigned count = 0;
+ unsigned sum1 = 0;
+ unsigned sum2 = 0;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ unsigned val = count_image_color<8>(dir_iter->path().string());
+
+ ++count;
+ sum1 += val;
+ sum2 += val*val;
+
+ std::cout << dir_iter->path().string() << " => " << val << std::endl;
+ }
+
+ float mean = sum1 / count;
+ float var = ((float)sum2 / count) - (mean * mean);
+
+ std::cout << "mean : " << mean << std::endl;
+ std::cout << "var : " << var << std::endl;
+ }
+ }
+
+ return 0;
+}
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/saturation/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/saturation/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/saturation/saturation.cc b/scribo/sandbox/green/exp/annotating/saturation/saturation.cc
new file mode 100644
index 0000000..b5834a1
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/saturation/saturation.cc
@@ -0,0 +1,175 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet saturation operator [millet.phd.2008.pdf]
+///
+/// This is the Millet code for moving from RGB space to Sat
+/// one. Formulae are classical, we can find them on the web.
+///
+/// Val = max(R,G,B).
+/// Sat = (max(R,G,B) - min(R,G,B))/max(R,G,B).
+/// IF R = max(R,G,B) THEN Hue = 60 * [(V-B)/(max(R,G,B)-min(R,G,B))].
+/// IF G = max(R,G,B) THEN Hue = 60 * [2 + (B-R)/(max(R,G,B)-min(R,G,B))].
+/// IF B = max(R,G,B) THEN Hue = 60 * [4 + (R-G)/(max(R,G,B)-min(R,G,B))].
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/stretch.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/math/max.hh>
+#include <mln/math/min.hh>
+
+#include <mln/geom/nsites.hh>
+
+#include <mln/fun/v2v/rgb_to_saturation_map.hh>
+
+#include <mln/io/ppm/load.hh>
+//#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/value/rgb8.hh>
+
+/// \brief Sum all the bins of the histogram.
+///
+/// \param[in] img the histogram based on image.
+///
+/// \return the sum of the overall bins.
+///
+/// Sum evry bins and return the result.
+template <typename I>
+unsigned count_histo(const mln::Image<I>& img_)
+{
+ const I& img = exact(img_);
+
+ mln_precondition(img.is_valid());
+
+ unsigned result = 0;
+
+ mln_piter(I) p(img.domain());
+
+ for_all(p)
+ result += img(p);
+
+ return result;
+}
+
+/// \brief The saturation test.
+///
+/// \param[in] input the name of the input image.
+/// \param[in] output the name of the histogram to output.
+/// \param[in] threshold for deciding which is low saturation or not.
+///
+/// \return the proportion of pixels that pass the test.
+///
+/// Load the input image, transform it to get the saturation_map and compute
+/// the histogram. Then count the number of pixels that are under the threshold.
+/// Then return the proportion of pixels.
+float saturation_test(const std::string input,
+ const std::string output,
+// const std::string tmp,
+ const unsigned threshold)
+
+{
+ typedef mln::fun::v2v::rgb_to_saturation_map<8> t_rgb_to_saturation_map;
+
+ mln::image2d<mln::value::rgb8> input_rgb8;
+ mln::image2d<mln::value::int_u8> map;
+ mln::image1d<unsigned> histo;
+ unsigned cnt1;
+ unsigned cnt2;
+ float prop;
+
+ mln::io::ppm::load(input_rgb8, input.c_str());
+
+ map = mln::data::transform(input_rgb8, t_rgb_to_saturation_map());
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(), map);
+ cnt1 = count_histo(histo | mln::box1d(mln::point1d(0),
+ mln::point1d(threshold)));
+ cnt2 = mln::geom::nsites(input_rgb8);
+ prop = ((100.0 * cnt1) / cnt2);
+
+ mln::io::plot::save_image_sh(histo, output.c_str());
+// mln::io::pgm::save(map, tmp.c_str());
+
+ return prop;
+}
+
+
+/// \brief the main entry.
+///
+/// This is a front end for image processing routine. It manages the
+/// calling of every image in the database.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+ t_path full_path[] = {t_path(ICDAR_20P_PPM_IMG_PATH)};
+
+ for (int i = 0; i < 1; ++i)
+ {
+ std::cout << "entering " << full_path[i] << std::endl;
+
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ float prop = 0.0;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ // concatenation de chaine
+ t_path directory(ANNOTATING_ICDAR_RET_PATH);
+ t_path leaf = dir_iter->path().leaf();
+ t_path output = change_extension(directory / leaf, ".sh");
+ t_path tmp = change_extension(directory / leaf, ".pgm");
+
+ prop = saturation_test(dir_iter->path().string(),
+ output.string(),
+// tmp.string(),
+ 25);
+
+ std::cout << output << " : " << prop << std::endl;
+ std::cerr << output << " : " << prop << std::endl;
+ }
+ }
+ }
+
+ return 0;
+}
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-color.txt b/scribo/sandbox/green/exp/annotating/saturation/text-color.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-color.txt
copy to scribo/sandbox/green/exp/annotating/saturation/text-color.txt
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-img.txt b/scribo/sandbox/green/exp/annotating/saturation/text-img.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-img.txt
copy to scribo/sandbox/green/exp/annotating/saturation/text-img.txt
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-only.txt b/scribo/sandbox/green/exp/annotating/saturation/text-only.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-only.txt
copy to scribo/sandbox/green/exp/annotating/saturation/text-only.txt
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/stddev_color/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/stddev_color/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/stddev_color/stddev_color.cc b/scribo/sandbox/green/exp/annotating/stddev_color/stddev_color.cc
new file mode 100644
index 0000000..365a9c3
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/stddev_color/stddev_color.cc
@@ -0,0 +1,216 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet clipart detection [millet.phd.2008.pdf]
+///
+/// The aim of this descriptor is to recognize clipart. To do this, we
+/// assume that clipart have their histogram concentrated around their
+/// mode. This is particularly true if the clipart is design by hand,
+/// because a very small number of grey tones or colors are used to
+/// draw it. But sometimes, computer assists their creation and we can
+/// find some continuous set of tones and this artefact create noise
+/// for the detection technique describe bellow.
+
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/max_site.hh>
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/core/macros.hh>
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/fill.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/fun/v2v/rgb8_to_int_u8.hh>
+
+#include <mln/io/ppm/load.hh>
+
+#include <mln/math/sqr.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/value/rgb8.hh>
+#include <mln/value/int_u.hh>
+
+/// \brief The R function of Millet
+///
+/// \param[in] p the position of the pic.
+/// \param[in] histo_p the histo value of the pic.
+/// \param[in] x the position of the element which we compute the contrib.
+/// \param[in] histo_x the histo value of that element.
+///
+/// \result the contribution of the element x.
+///
+/// This function compute the variance-like contribution of an element
+/// x linked to the pic of the histogram. In fact, every thing is like
+/// we compute a square distance-like between the element x and the
+/// pic in the normalized histogram. Notice that the normalized
+/// histogram is the histogram divide by the value of it's pic. So at
+/// the pic, the value equals 1. It's a current representation of the
+/// histogram in image processing, we can find it in gimp for exemple.
+float r(short p, unsigned histo_p, short x, unsigned histo_x)
+{
+ float result = mln::math::sqr(((float)histo_x / histo_p) * (x-p));
+
+ return result;
+}
+
+/// Brief compute the whole deviation of Millet
+///
+/// \param[in] image the input image to analyze.
+///
+/// \return the deviation.
+///
+/// The deviation uses the R function. It stats by finding the pic. If
+/// the pic is near the rigth border of the histo, compute the R
+/// function on the left neighbouring of the pic. If the pic is near
+/// the left border of the histo, compute the R function on the right
+/// neigbouring. Otherwise, compute the average of the right and left
+/// results. The selected neighbouring is composed of five pixels at
+/// the right or at the left of the pic. The detection of clipart
+/// assumes that the majority of the energy of the histogram is closed
+/// to the pic (five pixels around it).
+float stddev_color(const std::string& image)
+{
+ typedef mln::point1d t_point1d;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::image1d<unsigned> t_histo1d;
+ typedef mln::fun::v2v::rgb8_to_int_u8 t_rgb8_to_int_u8;
+ typedef mln::accu::meta::stat::histo1d t_histo1d_fun;
+ typedef mln::accu::max_site<t_histo1d> t_max_site_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_int_u8 input_int_u8;
+ t_histo1d histo;
+ t_point1d max_site;
+
+ mln::io::ppm::load(input_rgb8, image.c_str());
+ input_int_u8 = mln::data::transform(input_rgb8, t_rgb8_to_int_u8());
+ histo = mln::data::compute(t_histo1d_fun(), input_int_u8);
+
+ // Find the peak of the histogram
+ unsigned v_max = mln::opt::at(histo, 0);
+ short p_max = 0;
+
+ mln_piter_(t_histo1d) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ // Compute the specific stddev
+
+ float stddev_low = 0.0;
+ float stddev_up = 0.0;
+ float stddev = 0.0;
+
+ if (250 > p_max)
+ for (short i = p_max+1; i < p_max+6; ++i)
+ stddev_up += r(p_max, mln::opt::at(histo,p_max),
+ i, mln::opt::at(histo,i));
+
+ if (5 < p_max)
+ for (short i = p_max-1; i > p_max-6; --i)
+ stddev_low += r(p_max, mln::opt::at(histo,p_max),
+ i, mln::opt::at(histo,i));
+
+ stddev = (250 < p_max)? stddev_low : (5 > p_max)? stddev_up :
+ (stddev_low + stddev_up)/2;
+
+ return stddev;
+}
+
+
+/// \brief Main entry.
+///
+/// Front end for image processing. It is in the main routine where we
+/// go through the image data base (using boost to do it).
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+ t_path full_path[] = {t_path(ANNOTATING_1_BILL_IMG_PATH),
+ t_path(ANNOTATING_1_FAX_IMG_PATH),
+ t_path(ANNOTATING_1_HANDWRITTEN_IMG_PATH),
+ t_path(ANNOTATING_1_LOGO_IMG_PATH),
+ t_path(ANNOTATING_1_MAP_IMG_PATH),
+ t_path(ANNOTATING_1_PHOTO_IMG_PATH),
+ t_path(ANNOTATING_1_SCREENSHOT_IMG_PATH),
+ t_path(ANNOTATING_1_SLIDE_IMG_PATH),
+ t_path(ANNOTATING_1_TYPED_IMG_PATH)};
+
+ for (int i = 0; i < 9; ++i)
+ {
+ std::cerr << "entering " << full_path[i] << std::endl;
+ std::cout << "entering " << full_path[i] << std::endl;
+
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ float count = 0;
+ float sum1 = 0;
+ float sum2 = 0;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ float val = stddev_color(dir_iter->path().string());
+
+ ++count;
+ sum1 += val;
+ sum2 += val*val;
+
+ std::cout << dir_iter->path().string() << " => " << val << std::endl;
+ }
+
+ float mean = sum1 / count;
+ float var = ((float)sum2 / count) - (mean * mean);
+
+ std::cout << "mean : " << mean << std::endl;
+ std::cout << "var : " << var << std::endl;
+ }
+ }
+
+ return 0;
+}
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/stddev_color_16/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/stddev_color_16/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/stddev_color_16/stddev_color_16.cc b/scribo/sandbox/green/exp/annotating/stddev_color_16/stddev_color_16.cc
new file mode 100644
index 0000000..fc55547
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/stddev_color_16/stddev_color_16.cc
@@ -0,0 +1,277 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet clipart detection [millet.phd.2008.pdf]
+///
+/// The aim of this descriptor is to recognize clipart. To do this, we
+/// assume that clipart have their histogram concentrated around their
+/// mode. This is particularly true if the clipart is design by hand,
+/// because a very small number of grey tones or colors are used to
+/// draw it. But sometimes, computer assists their creation and we can
+/// find some continuous set of tones and this artefact create noise
+/// for the detection technique describe bellow. When photographies
+/// has some large uniform border, the detection can fail. To improve
+/// the method, Millet decide to subdivise the image in 16 sub images
+/// on which it applies the test.
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/max_site.hh>
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/core/macros.hh>
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/image3d.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/fill.hh>
+#include <mln/data/transform.hh>
+#include <mln/data/paste.hh>
+
+#include <mln/fun/v2v/rgb8_to_int_u8.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/math/sqr.hh>
+#include <mln/math/max.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/value/rgb8.hh>
+#include <mln/value/int_u.hh>
+
+/// \brief The R function of Millet
+///
+/// \param[in] p the position of the pic.
+/// \param[in] histo_p the histo value of the pic.
+/// \param[in] x the position of the element which we compute the contrib.
+/// \param[in] histo_x the histo value of that element.
+///
+/// \result the contribution of the element x.
+///
+/// This function compute the variance-like contribution of an element
+/// x linked to the pic of the histogram. In fact, every thing is like
+/// we compute a square distance-like between the element x and the
+/// pic in the normalized histogram. Notice that the normalized
+/// histogram is the histogram divide by the value of it's pic. So at
+/// the pic, the value equals 1. It's a current representation of the
+/// histogram in image processing, we can find it in gimp for exemple.
+float r(short p, unsigned histo_p, short x, unsigned histo_x)
+{
+ float result = mln::math::sqr(((float)histo_x / histo_p) * (x-p));
+
+ return result;
+}
+
+/// Brief compute the whole deviation of Millet
+///
+/// \param[in] input_int_u8 the 8 bits input image to analyze.
+/// \param[in] name_histo the name of the output histogram.
+/// \param[in] name_image the name of the ouput sub image.
+///
+/// \return the deviation, but at this time nothing..
+///
+/// The deviation uses the R function. It stats by finding the pic. If
+/// the pic is near the rigth border of the histo, compute the R
+/// function on the left neighbouring of the pic. If the pic is near
+/// the left border of the histo, compute the R function on the right
+/// neigbouring. Otherwise, compute the average of the right and left
+/// results. The selected neighbouring is composed of five pixels at
+/// the right or at the left of the pic. The detection of clipart
+/// assumes that the majority of the energy of the histogram is closed
+/// to the pic (five pixels around it).
+float stddev_color(mln::image2d<mln::value::int_u8> input_int_u8)
+{
+ typedef mln::point1d t_point1d;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::image1d<unsigned> t_histo1d;
+ typedef mln::fun::v2v::rgb8_to_int_u8 t_rgb8_to_int_u8;
+ typedef mln::accu::meta::stat::histo1d t_histo1d_fun;
+ typedef mln::accu::max_site<t_histo1d> t_max_site_fun;
+
+ t_histo1d histo;
+
+ histo = mln::data::compute(t_histo1d_fun(), input_int_u8);
+
+ // Find the peak of the histogram
+ unsigned v_max = mln::opt::at(histo, 0);
+ short p_max = 0;
+
+ mln_piter_(t_histo1d) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ // Compute the specific stddev
+
+ float stddev_low = 0.0;
+ float stddev_up = 0.0;
+ float stddev = 0.0;
+
+ if (250 > p_max)
+ for (short i = p_max+1; i < p_max+6; ++i)
+ stddev_up += r(p_max, mln::opt::at(histo,p_max),
+ i, mln::opt::at(histo,i));
+
+ if (5 < p_max)
+ for (short i = p_max-1; i > p_max-6; --i)
+ stddev_low += r(p_max, mln::opt::at(histo,p_max),
+ i, mln::opt::at(histo,i));
+
+ stddev = (250 < p_max)? stddev_low : (5 > p_max)? stddev_up :
+ (stddev_low + stddev_up)/2;
+
+ return stddev;
+}
+
+/// \brief Divide the image in 16 sub images.
+///
+/// \param[in] image the input image.
+///
+/// \result nothing.
+///
+/// Divive the input image in 16 by uniform and geometrical
+/// method. When a sub image is ready, call the stddev routine to show
+/// stats on it.
+float stddev_color_16(const std::string& image)
+{
+ typedef mln::point1d t_point1d;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::image1d<unsigned> t_histo1d;
+ typedef mln::fun::v2v::rgb8_to_int_u8 t_rgb8_to_int_u8;
+ typedef mln::accu::meta::stat::histo1d t_histo1d_fun;
+ typedef mln::accu::max_site<t_histo1d> t_max_site_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_int_u8 input_int_u8;
+
+ mln::io::ppm::load(input_rgb8, image.c_str());
+ input_int_u8 = mln::data::transform(input_rgb8, t_rgb8_to_int_u8());
+
+ // IMAGE SPLITTING PHASE
+ mln::box2d domain = input_int_u8.domain();
+ mln::point2d pmin = domain.pmin();
+ mln::point2d pmax = domain.pmax();
+
+ unsigned sz_row = (pmax.row() - pmin.row())/ 4;
+ unsigned sz_col = (pmax.col() - pmin.col())/ 4;
+ float stddev = 0.0;
+
+ // Divide the domain in nine sub-domains.
+ for (unsigned i = 0; i < 4; ++i)
+ for (unsigned j = 0; j < 4; ++j)
+ {
+ mln::point2d min(pmin.row()+sz_row*i,pmin.col()+sz_col*j);
+ mln::point2d max(pmin.row()+sz_row*(i+1),pmin.col()+sz_col*(j+1));
+ mln::box2d dom(min,max);
+
+ // Save it
+ t_image2d_int_u8 input_1o16_int_u8(dom);
+
+ mln::data::paste(input_int_u8 | dom, input_1o16_int_u8);
+
+ stddev = mln::math::max(stddev, stddev_color(input_1o16_int_u8));
+ }
+
+ return stddev;
+}
+
+
+/// \brief Main entry.
+///
+/// Just a front end for image processing routine. Use boost to go
+/// through the image database.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+ t_path full_path[] = {t_path(ANNOTATING_1_BILL_IMG_PATH),
+ t_path(ANNOTATING_1_FAX_IMG_PATH),
+ t_path(ANNOTATING_1_HANDWRITTEN_IMG_PATH),
+ t_path(ANNOTATING_1_LOGO_IMG_PATH),
+ t_path(ANNOTATING_1_MAP_IMG_PATH),
+ t_path(ANNOTATING_1_PHOTO_IMG_PATH),
+ t_path(ANNOTATING_1_SCREENSHOT_IMG_PATH),
+ t_path(ANNOTATING_1_SLIDE_IMG_PATH),
+ t_path(ANNOTATING_1_TYPED_IMG_PATH)};
+
+ for (int i = 0; i < 9; ++i)
+ {
+ std::cerr << "entering " << full_path[i] << std::endl;
+ std::cout << "entering " << full_path[i] << std::endl;
+
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ float count = 0;
+ float sum1 = 0;
+ float sum2 = 0;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ float val = stddev_color_16(dir_iter->path().string());
+
+ ++count;
+ sum1 += val;
+ sum2 += val*val;
+
+ std::cout << dir_iter->path().string() << " => " << val << std::endl;
+ }
+
+ float mean = sum1 / count;
+ float var = ((float)sum2 / count) - (mean * mean);
+
+ std::cout << "mean : " << mean << std::endl;
+ std::cout << "var : " << var << std::endl;
+ }
+ }
+
+ return 0;
+}
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/value/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/value/Makefile.am
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-color.txt b/scribo/sandbox/green/exp/annotating/value/text-color.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-color.txt
copy to scribo/sandbox/green/exp/annotating/value/text-color.txt
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-img.txt b/scribo/sandbox/green/exp/annotating/value/text-img.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-img.txt
copy to scribo/sandbox/green/exp/annotating/value/text-img.txt
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-only.txt b/scribo/sandbox/green/exp/annotating/value/text-only.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-only.txt
copy to scribo/sandbox/green/exp/annotating/value/text-only.txt
diff --git a/scribo/sandbox/green/exp/annotating/value/value.cc b/scribo/sandbox/green/exp/annotating/value/value.cc
new file mode 100644
index 0000000..cade88b
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/value/value.cc
@@ -0,0 +1,468 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet value operator [millet.phd.2008.pdf]
+///
+/// This is the Millet code for moving from RGB space to value
+/// one. Formulae are classical, we can find them on the web.
+///
+/// Val = max(R,G,B).
+/// Sat = (max(R,G,B) - min(R,G,B))/max(R,G,B).
+/// IF R = max(R,G,B) THEN Hue = 60 * [(V-B)/(max(R,G,B)-min(R,G,B))].
+/// IF G = max(R,G,B) THEN Hue = 60 * [2 + (B-R)/(max(R,G,B)-min(R,G,B))].
+/// IF B = max(R,G,B) THEN Hue = 60 * [4 + (R-G)/(max(R,G,B)-min(R,G,B))].
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/stretch.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/literal/colors.hh>
+#include <mln/literal/grays.hh>
+
+#include <mln/math/max.hh>
+#include <mln/math/min.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/geom/nsites.hh>
+
+#include <mln/fun/v2v/rgb_to_value_map.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/value/rgb8.hh>
+
+/// \brief Label the value.
+///
+/// \param[in] val the value in [0..255].
+///
+/// \return the reference color.
+///
+/// Segment the grey value in three classes.
+mln::value::rgb8 label_val(const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (82 > val)
+ result = mln::literal::black;
+ else if (179 > val)
+ result= mln::literal::medium_gray;
+ else
+ result = mln::literal::white;
+
+ return result;
+}
+
+
+/// \brief Label color with orange reference or brown reference.
+///
+/// \param[in] color the rgb8 color.
+/// \param[in] sat the HSV saturation.
+/// \param[in] val the HSV value.
+///
+/// \return the reference color with which it has been associated to.
+///
+/// Discriminate between orange and brown colors which are at the same
+/// position on the hue wheel.
+mln::value::rgb8 label_orange_or_brown(const mln::value::rgb8 color,
+ const mln::value::int_u8 sat,
+ const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (mln::literal::orange == color)
+ {
+ unsigned dist_orange = mln::math::abs(sat - 184)
+ + mln::math::abs(val - 65);
+
+ unsigned dist_brown = mln::math::abs(sat - 255)
+ + mln::math::abs(val - 125);
+
+ if (dist_orange < dist_brown)
+ result = mln::literal::orange;
+ else
+ result = mln::literal::brown;
+ }
+ else
+ result = color;
+
+ return result;
+}
+
+/// \brief Label between yellow and green color.
+///
+/// \param[in] color the rgb8 color.
+/// \param[in] val the HSV value.
+///
+/// \return the reference color associated to that color.
+///
+/// Segment between yellow and green because the discrimination is not
+/// so easy based on the hue wheel.
+mln::value::rgb8 label_yellow_or_green(const mln::value::rgb8 color,
+ const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (mln::literal::yellow == color)
+ {
+ // Is it green or yellow ?
+ if (80 > val)
+ result = mln::literal::green;
+ else
+ result = mln::literal::yellow;
+ }
+ else
+ return color;
+
+ return result;
+}
+
+/// \brief Label hue color.
+///
+/// \param[in] hue the HSV hue canal for a pixel.
+///
+/// \return a hue segmentation of the hue wheel.
+///
+/// The old classification given by Millet is commented. Mine is ready
+/// to use. We need to change reference colors to make the primary
+/// colors, the secondary ones, etc...
+mln::value::rgb8 label_hue(const mln::value::int_u8 hue)
+{
+ mln::value::rgb8 result;
+
+ if (14 > hue)
+ result = mln::literal::red;
+ else if (29 > hue)
+ result = mln::literal::orange;
+ else if (45 > hue)
+ result = mln::literal::yellow;
+ else if (113 > hue)
+ result = mln::literal::green;
+ else if (149 > hue)
+ result = mln::literal::cyan;
+ else if (205 > hue)
+ result = mln::literal::blue;
+ else if (235 > hue)
+ result = mln::literal::violet;
+ else if (242 > hue)
+ result = mln::literal::pink;
+ else
+ result = mln::literal::red;
+
+ return result;
+}
+
+/// \brief Sum all the bins of the histogram.
+///
+/// \param[in] img the histogram based on image.
+///
+/// \return the sum of the overall bins.
+///
+/// Sum evry bins and return the result.
+template <typename I>
+unsigned count_histo(const mln::Image<I>& img_)
+{
+ const I& img = exact(img_);
+
+ mln_precondition(img.is_valid());
+
+ unsigned result = 0;
+
+ mln_piter(I) p(img.domain());
+
+ for_all(p)
+ result += img(p);
+
+ return result;
+}
+
+/// \brief Detect the peak of the histogram.
+///
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the position of the peak.
+///
+/// This is a typical accumulator use case but as it needs the
+/// position it couldn't be one of them. Look at the last maxima in
+/// the curve and return its position.
+template <typename I>
+unsigned peak_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the peak of the histogram
+ unsigned v_max = mln::opt::at(histo, 0);
+ short p_max = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ return p_max;
+}
+
+/// \brief Compute the average of the histogram.
+///
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the average of the histogram.
+///
+/// This code should be an accumulator. It computes the mean of the
+/// histogram, just stats in loop. Compute the sum, compute the
+/// ponderate sum and divide the second by the first.
+template <typename I>
+unsigned mean_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the mean of the histogram
+ float sum = 0;
+ float mean = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum += histo(p);
+ mean += p.ind()*histo(p);
+ }
+
+ mean = mean / sum;
+
+ return mean;
+}
+
+/// \brief The R function of Millet
+///
+/// \param[in] p the position of the pic.
+/// \param[in] histo_p the histo value of the pic.
+/// \param[in] x the position of the element which we compute the contrib.
+/// \param[in] histo_x the histo value of that element.
+///
+/// \result the contribution of the element x.
+///
+/// This function compute the variance-like contribution of an element
+/// x linked to the pic of the histogram. In fact, every thing is like
+/// we compute a square distance-like between the element x and the
+/// pic in the normalized histogram. Notice that the normalized
+/// histogram is the histogram divide by the value of it's pic. So at
+/// the pic, the value equals 1. It's a current representation of the
+/// histogram in image processing, we can find it in gimp for exemple.
+float r(short p, unsigned histo_p, short x, unsigned histo_x)
+{
+ float result = mln::math::sqr(((float)histo_x / histo_p) * (x-p));
+
+ return result;
+}
+
+
+/// \brief The stddev3 is an internal stuff.
+///
+/// \param[in] histo_ the image which represents the histogram.
+/// \param[in] peak the position of the histogram peak.
+///
+/// \return simple computing of deviation.
+///
+/// This is an internal stuff. It splits the computing for easy
+/// reusing practice. Sum the R contribution.
+template <typename I>
+float stddev3(const mln::Image<I>& histo_, unsigned peak)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Compute stddev
+
+ float stddev = 0.0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ stddev += r((short)peak, mln::opt::at(histo,peak), p.ind(), histo(p));
+ }
+
+ return stddev;
+}
+
+
+/// Brief compute the whole deviation of Millet
+///
+/// \param[in] image the input image to analyze.
+/// \param[in] peak the peak of the histogram.
+/// \param[in] limit the threshold to compute the contribution.
+///
+/// \return the deviation.
+///
+/// The deviation uses the R function. It stats by finding the pic. If
+/// the pic is near the rigth border of the histo, compute the R
+/// function on the left neighbouring of the pic. If the pic is near
+/// the left border of the histo, compute the R function on the right
+/// neigbouring. Otherwise, compute the average of the right and left
+/// results. The selected neighbouring is composed of five pixels at
+/// the right or at the left of the pic. The detection of clipart
+/// assumes that the majority of the energy of the histogram is closed
+/// to the pic (five pixels around it). The test is generalized by
+/// making constants as parameters.
+template <typename I>
+float stddev2(const mln::Image<I>& histo_, unsigned peak, unsigned limit)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ float stddev_low = 0.0;
+ float stddev_up = 0.0;
+ float ret = 0.0;
+
+ // A transformer avec des iterators
+
+ if (250 > peak)
+ stddev_up = stddev3(histo |mln::box1d(mln::point1d(peak+1),
+ mln::point1d(peak+limit)), peak);
+
+ if (5 < peak)
+ stddev_low = stddev3(histo |mln::box1d(mln::point1d(peak-limit),
+ mln::point1d(peak-1)), peak);
+
+ ret = (250 < peak)? stddev_low : (5 > peak)? stddev_up :
+ (stddev_low + stddev_up)/2;
+
+ return ret;
+}
+
+
+/// \brief This is the main Millet test.
+///
+/// \param[in] input the name of the input image.
+/// \param[in] output the name of result histogram.
+/// \param[in] tmp the name of the output value (HSV) map.
+/// \param[in] threshold the range around the peak where R is computed.
+///
+/// \return the proportion of pixels that pass the test.
+float value_test(const std::string input,
+ const std::string output,
+ const std::string tmp,
+ const unsigned threshold)
+
+{
+ typedef mln::fun::v2v::rgb_to_value_map<8> t_rgb_to_value_map;
+
+ mln::image2d<mln::value::rgb8> input_rgb8;
+ mln::image2d<mln::value::int_u8> map;
+ mln::image1d<unsigned> histo;
+ unsigned cnt1;
+ unsigned cnt2;
+ float prop;
+ unsigned peak;
+
+ mln::io::ppm::load(input_rgb8, input.c_str());
+
+ map = mln::data::transform(input_rgb8, t_rgb_to_value_map());
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(), map);
+ peak = peak_histo(histo); // mean_histo(histo);
+ prop = stddev2(histo, peak, threshold);
+// cnt1 = count_histo(histo | mln::box1d(mln::point1d(peak-threshold),
+// mln::point1d(peak+threshold)));
+// cnt2 = mln::geom::nsites(input_rgb8);
+// prop = ((100.0 * cnt1) / cnt2);
+
+ mln::io::plot::save_image_sh(histo, output.c_str());
+ mln::io::pgm::save(map, tmp.c_str());
+
+ return prop;
+}
+
+
+/// \brief The main entry.
+///
+/// This is the front end for using directories with boost. It calls
+/// the true image processing routine.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+ t_path full_path[] = {t_path(ICDAR_20P_PPM_IMG_PATH)};
+
+ for (int i = 0; i < 1; ++i)
+ {
+ std::cout << "entering " << full_path[i] << std::endl;
+
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ float prop = 0.0;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ // concatenation de chaine
+ t_path directory(ANNOTATING_RET_PATH);
+ t_path leaf = dir_iter->path().leaf();
+ t_path output = change_extension(directory / leaf, ".sh");
+ t_path tmp = change_extension(directory / leaf, ".pgm");
+
+ prop = value_test(dir_iter->path().string(),
+ output.string(),
+ tmp.string(),
+ 15);
+
+ std::cout << output << " : " << prop << std::endl;
+ std::cerr << output << " : " << prop << std::endl;
+ }
+ }
+ }
+
+ return 0;
+}
diff --git a/scribo/sandbox/green/mln/clustering/kmean2d.hh b/scribo/sandbox/green/mln/clustering/kmean2d.hh
index 51aaf49..4539083 100644
--- a/scribo/sandbox/green/mln/clustering/kmean2d.hh
+++ b/scribo/sandbox/green/mln/clustering/kmean2d.hh
@@ -150,7 +150,7 @@ namespace mln
{
/// Type definitions.
/// \brief A few type definitions to limit the refactoring impact.
- ///{
+ /// \{
typedef value::rgb<8> t_rgb;
typedef value::label<8> t_label;
typedef value::rg<n> t_value;
@@ -179,7 +179,7 @@ namespace mln
typedef util::array<t_mean_set> t_mean_cnv;
typedef image1d<t_result1d> t_variance_val;
typedef util::array<t_variance_val> t_variance_cnv;
- ///}
+ /// \}
/// \brief Constructor.
/// \param[in] point : the image as the population of pixels.
diff --git a/scribo/sandbox/green/mln/fun/p2b/achromatic.hh b/scribo/sandbox/green/mln/fun/p2b/achromatic.hh
index 1f45b2d..91a2dc5 100644
--- a/scribo/sandbox/green/mln/fun/p2b/achromatic.hh
+++ b/scribo/sandbox/green/mln/fun/p2b/achromatic.hh
@@ -44,15 +44,29 @@ namespace mln
namespace p2b
{
- /// \brief Functor that compare the i-th component of a value.
- // V is for the type of the value received
- // i is the ith component to select
+ /// \brief Functor that compare the i-th component with a threshold.
+ ///
+ /// T_rgb is the kind of RGB we use.
template <typename T_rgb>
struct achromatic : public Function_v2b< achromatic<T_rgb> >
{
typedef bool result;
+
+ /// \brief Operator that makes the threshold [millet.phd.2008.pdf]
+ ///
+ /// \param[in] p the selected site
+ ///
+ /// \return if the site is achromatic or not.
+ ///
+ /// This a try for opimized the call to the achromatic
+ /// routine. The goal is to decide if a site has got an
+ /// achromatic status or not. This is the true Millet test.
bool operator()(const point2d& p) const;
+ /// \brief Cstor of the object.
+ ///
+ /// \param[in] img the RGB input image.
+ /// \param[in] threshold the value to compare with.
achromatic(const image2d<T_rgb>& img, const float threshold);
const float threshold_;
diff --git a/scribo/sandbox/green/mln/fun/v2v/hue_concentration.hh b/scribo/sandbox/green/mln/fun/v2v/hue_concentration.hh
index 84d26c8..e776c9a 100644
--- a/scribo/sandbox/green/mln/fun/v2v/hue_concentration.hh
+++ b/scribo/sandbox/green/mln/fun/v2v/hue_concentration.hh
@@ -32,6 +32,10 @@
# include <mln/value/hsv.hh>
# include <mln/value/rgb8.hh>
+/// \file
+///
+/// This is the code for building hue_concentration_map.
+
namespace mln
{
@@ -41,12 +45,18 @@ namespace mln
namespace v2v
{
+ /// \brief internal method for detecting the histogram peak.
+ ///
+ /// \param[in] hue_histo the histogram of hue.
+ ///
+ /// \return the seed of the peek.
unsigned peak_histo(const mln::image1d<unsigned>& hue_histo);
struct hue_concentration : public Function_v2v< hue_concentration >
{
typedef float result;
+ /// \brief Gibe the distance map between actual hue and the peak.
float operator()(const float hue) const;
hue_concentration(const mln::image1d<unsigned>& hue_histo)
diff --git a/scribo/sandbox/green/mln/fun/v2v/rgb_to_achromatism_map.hh b/scribo/sandbox/green/mln/fun/v2v/rgb_to_achromatism_map.hh
index 6de63ec..126f9bd 100644
--- a/scribo/sandbox/green/mln/fun/v2v/rgb_to_achromatism_map.hh
+++ b/scribo/sandbox/green/mln/fun/v2v/rgb_to_achromatism_map.hh
@@ -49,6 +49,11 @@ namespace mln
/// \brief Convert rgb value to achromatism map.
///
+ /// Convert rgb value to binary achromastism map using the
+ /// rebuilded Millet phd formulae [millet.phd.2008.pdf]. The
+ /// idea is to look at the minimum and maximum of the channels
+ /// and to return the difference.
+ ///
/// \ingroup modfunv2v
template <unsigned n>
diff --git a/scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh b/scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh
index 3dd8eb0..a191095 100644
--- a/scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh
+++ b/scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh
@@ -34,6 +34,11 @@
#include <mln/value/hsv.hh>
#include <mln/value/rgb.hh>
+/// \fiie
+///
+/// This is the millet [millet.phd.2008.pdf] transformation from RGB
+/// space to HSV space.
+
namespace mln
{
@@ -57,7 +62,15 @@ namespace mln
typedef T_hsv result;
- /// HSV implementation from millet.2008.phd.pdf p67
+ /// \brief HSV implementation from millet.2008.phd.pdf p67
+ ///
+ /// \param[in] rgb the input rgb pixel.
+ ///
+ /// \return a HSV pixel.
+ ///
+ /// This is the Millet implementation of its transformation
+ /// operator to go from RGB space to HSV space. When pixels
+ /// are achromatic, hue equals -1.
template <typename T_rgb>
T_hsv operator()(const T_rgb& rgb) const;
--
1.5.6.5
1
0

last-svn-commit-496-g6c094d0 Import annotating sources from milena green's sandbox.
by Yann Jacquelet 08 Sep '10
by Yann Jacquelet 08 Sep '10
08 Sep '10
* README.green: New.
* demo/annotating/bic/Makefile.am: New.
* demo/annotating/bic/bic.cc: New.
* demo/annotating/hsv/Makefile.am: New.
* demo/annotating/hsv/hsv.cc: New.
* demo/annotating/lep/Makefile.am: New.
* demo/annotating/lep/lep.cc: New.
* demo/annotating/nb_color/Makefile.am: New.
* demo/annotating/nb_color/nb_color.cc: New.
* demo/annotating/project/Makefile.am: New.
* demo/annotating/project/project.cc: New.
* demo/annotating/rgb_64/Makefile.am: New.
* demo/annotating/rgb_64/rgb_64.cc: New.
* demo/annotating/rgb_64_9/Makefile.am: New.
* demo/annotating/rgb_64_9/rgb_64_9.cc: New.
* demo/annotating/stddev_color/Makefile.am: New.
* demo/annotating/stddev_color/stddev_color.cc: New.
* demo/annotating/stddev_color_16/Makefile.am: New.
* demo/annotating/stddev_color_16/stddev_color_16.cc: New.
* exp/annotating/achromastism/Makefile.am: New.
* exp/annotating/achromastism/achromastism.cc: New.
* exp/annotating/achromastism/text-color.txt: New.
* exp/annotating/achromastism/text-img.txt: New.
* exp/annotating/achromastism/text-only.txt: New.
* exp/annotating/bench/Makefile.am: New.
* exp/annotating/bench/bench.cc: New.
* exp/annotating/error/Makefile.am: New.
* exp/annotating/error/error.cc: New.
* exp/annotating/histo/Makefile.am: New.
* exp/annotating/histo/histo.cc: New.
* exp/annotating/hsv/Makefile.am: New.
* exp/annotating/hsv/hsv.cc: New.
* exp/annotating/hue/Makefile.am: New.
* exp/annotating/hue/hue.cc: New.
* exp/annotating/hue/text-color.txt: New.
* exp/annotating/hue/text-img.txt: New.
* exp/annotating/hue/text-only.txt: New.
* exp/annotating/nb_color/Makefile.am: New.
* exp/annotating/nb_color/nb_color.cc: New.
* exp/annotating/saturation/Makefile.am: New.
* exp/annotating/saturation/saturation.cc: New.
* exp/annotating/saturation/text-color.txt: New.
* exp/annotating/saturation/text-img.txt: New.
* exp/annotating/saturation/text-only.txt: New.
* exp/annotating/stddev_color/Makefile.am: New.
* exp/annotating/stddev_color/stddev_color.cc: New.
* exp/annotating/stddev_color_16/Makefile.am: New.
* exp/annotating/stddev_color_16/stddev_color_16.cc: New.
* exp/annotating/value/Makefile.am: New.
* exp/annotating/value/text-color.txt: New.
* exp/annotating/value/text-img.txt: New.
* exp/annotating/value/text-only.txt: New.
* exp/annotating/value/value.cc: New.
* mln/clustering/kmean2d.hh: New.
* mln/fun/p2b/achromatic.hh: New.
* mln/fun/v2v/hue_concentration.hh: New.
* mln/fun/v2v/rgb_to_achromatism_map.hh: New.
* mln/fun/v2v/rgb_to_hsv.hh: New.
---
scribo/sandbox/green/ChangeLog | 64 +
scribo/sandbox/green/README.green | 507 +++++++-
.../kmean1d => annotating/bic}/Makefile.am | 0
scribo/sandbox/green/demo/annotating/bic/bic.cc | 122 ++
.../kmean1d => annotating/hsv}/Makefile.am | 0
scribo/sandbox/green/demo/annotating/hsv/hsv.cc | 721 ++++++++++
.../kmean1d => annotating/lep}/Makefile.am | 0
scribo/sandbox/green/demo/annotating/lep/lep.cc | 127 ++
.../kmean1d => annotating/nb_color}/Makefile.am | 0
.../green/demo/annotating/nb_color/nb_color.cc | 143 ++
.../kmean1d => annotating/project}/Makefile.am | 0
.../green/demo/annotating/project/project.cc | 275 ++++
.../kmean1d => annotating/rgb_64}/Makefile.am | 0
.../sandbox/green/demo/annotating/rgb_64/rgb_64.cc | 80 ++
.../kmean1d => annotating/rgb_64_9}/Makefile.am | 0
.../green/demo/annotating/rgb_64_9/rgb_64_9.cc | 132 ++
.../stddev_color}/Makefile.am | 0
.../demo/annotating/stddev_color/stddev_color.cc | 191 +++
.../stddev_color_16}/Makefile.am | 0
.../annotating/stddev_color_16/stddev_color_16.cc | 261 ++++
.../achromastism}/Makefile.am | 0
.../exp/annotating/achromastism/achromastism.cc | 179 +++
.../exp/annotating/achromastism/text-color.txt | 0
.../green/exp/annotating/achromastism/text-img.txt | 0
.../exp/annotating/achromastism/text-only.txt | 0
.../bench}/Makefile.am | 0
scribo/sandbox/green/exp/annotating/bench/bench.cc | 1450 ++++++++++++++++++++
.../error}/Makefile.am | 0
scribo/sandbox/green/exp/annotating/error/error.cc | 833 +++++++++++
.../histo}/Makefile.am | 0
scribo/sandbox/green/exp/annotating/histo/histo.cc | 366 +++++
.../hsv}/Makefile.am | 0
scribo/sandbox/green/exp/annotating/hsv/hsv.cc | 912 ++++++++++++
.../hue}/Makefile.am | 0
scribo/sandbox/green/exp/annotating/hue/hue.cc | 402 ++++++
.../green/exp/annotating/hue}/text-color.txt | 0
.../sandbox/green/exp/annotating/hue}/text-img.txt | 0
.../green/exp/annotating/hue}/text-only.txt | 0
.../nb_color}/Makefile.am | 0
.../green/exp/annotating/nb_color/nb_color.cc | 171 +++
.../saturation}/Makefile.am | 0
.../green/exp/annotating/saturation/saturation.cc | 175 +++
.../exp/annotating/saturation}/text-color.txt | 0
.../green/exp/annotating/saturation}/text-img.txt | 0
.../green/exp/annotating/saturation}/text-only.txt | 0
.../stddev_color}/Makefile.am | 0
.../exp/annotating/stddev_color/stddev_color.cc | 216 +++
.../stddev_color_16}/Makefile.am | 0
.../annotating/stddev_color_16/stddev_color_16.cc | 277 ++++
.../value}/Makefile.am | 0
.../green/exp/annotating/value}/text-color.txt | 0
.../green/exp/annotating/value}/text-img.txt | 0
.../green/exp/annotating/value}/text-only.txt | 0
scribo/sandbox/green/exp/annotating/value/value.cc | 468 +++++++
scribo/sandbox/green/mln/clustering/kmean2d.hh | 4 +-
scribo/sandbox/green/mln/fun/p2b/achromatic.hh | 20 +-
.../sandbox/green/mln/fun/v2v/hue_concentration.hh | 10 +
.../green/mln/fun/v2v/rgb_to_achromatism_map.hh | 5 +
scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh | 15 +-
59 files changed, 8105 insertions(+), 21 deletions(-)
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/bic}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/bic/bic.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/hsv}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/hsv/hsv.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/lep}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/lep/lep.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/nb_color}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/nb_color/nb_color.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/project}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/project/project.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/rgb_64}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/rgb_64/rgb_64.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/rgb_64_9}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/rgb_64_9/rgb_64_9.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/stddev_color}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/stddev_color/stddev_color.cc
copy scribo/sandbox/green/demo/{clustering/kmean1d => annotating/stddev_color_16}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/demo/annotating/stddev_color_16/stddev_color_16.cc
copy scribo/sandbox/green/exp/{regional_maxima => annotating/achromastism}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/achromastism/achromastism.cc
copy {milena => scribo}/sandbox/green/exp/annotating/achromastism/text-color.txt (100%)
copy {milena => scribo}/sandbox/green/exp/annotating/achromastism/text-img.txt (100%)
copy {milena => scribo}/sandbox/green/exp/annotating/achromastism/text-only.txt (100%)
copy scribo/sandbox/green/exp/{regional_maxima => annotating/bench}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/bench/bench.cc
copy scribo/sandbox/green/exp/{regional_maxima => annotating/error}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/error/error.cc
copy scribo/sandbox/green/exp/{regional_maxima => annotating/histo}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/histo/histo.cc
copy scribo/sandbox/green/exp/{regional_maxima => annotating/hsv}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/hsv/hsv.cc
copy scribo/sandbox/green/exp/{regional_maxima => annotating/hue}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/hue/hue.cc
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/hue}/text-color.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/hue}/text-img.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/hue}/text-only.txt (100%)
copy scribo/sandbox/green/exp/{regional_maxima => annotating/nb_color}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/nb_color/nb_color.cc
copy scribo/sandbox/green/exp/{regional_maxima => annotating/saturation}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/saturation/saturation.cc
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/saturation}/text-color.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/saturation}/text-img.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/saturation}/text-only.txt (100%)
copy scribo/sandbox/green/exp/{regional_maxima => annotating/stddev_color}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/stddev_color/stddev_color.cc
copy scribo/sandbox/green/exp/{regional_maxima => annotating/stddev_color_16}/Makefile.am (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/stddev_color_16/stddev_color_16.cc
copy scribo/sandbox/green/exp/{regional_maxima => annotating/value}/Makefile.am (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/value}/text-color.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/value}/text-img.txt (100%)
copy {milena/sandbox/green/exp/annotating/achromastism => scribo/sandbox/green/exp/annotating/value}/text-only.txt (100%)
create mode 100644 scribo/sandbox/green/exp/annotating/value/value.cc
diff --git a/scribo/sandbox/green/ChangeLog b/scribo/sandbox/green/ChangeLog
index 62a7aff..9963f53 100644
--- a/scribo/sandbox/green/ChangeLog
+++ b/scribo/sandbox/green/ChangeLog
@@ -1,3 +1,67 @@
+2010-09-08 Yann Jacquelet <jacquelet(a)lrde.epita.fr>
+
+ Import annotating sources from milena green's sandbox.
+
+ * README.green: New.
+ * demo/annotating/bic/Makefile.am: New.
+ * demo/annotating/bic/bic.cc: New.
+ * demo/annotating/hsv/Makefile.am: New.
+ * demo/annotating/hsv/hsv.cc: New.
+ * demo/annotating/lep/Makefile.am: New.
+ * demo/annotating/lep/lep.cc: New.
+ * demo/annotating/nb_color/Makefile.am: New.
+ * demo/annotating/nb_color/nb_color.cc: New.
+ * demo/annotating/project/Makefile.am: New.
+ * demo/annotating/project/project.cc: New.
+ * demo/annotating/rgb_64/Makefile.am: New.
+ * demo/annotating/rgb_64/rgb_64.cc: New.
+ * demo/annotating/rgb_64_9/Makefile.am: New.
+ * demo/annotating/rgb_64_9/rgb_64_9.cc: New.
+ * demo/annotating/stddev_color/Makefile.am: New.
+ * demo/annotating/stddev_color/stddev_color.cc: New.
+ * demo/annotating/stddev_color_16/Makefile.am: New.
+ * demo/annotating/stddev_color_16/stddev_color_16.cc: New.
+ * exp/annotating/achromastism/Makefile.am: New.
+ * exp/annotating/achromastism/achromastism.cc: New.
+ * exp/annotating/achromastism/text-color.txt: New.
+ * exp/annotating/achromastism/text-img.txt: New.
+ * exp/annotating/achromastism/text-only.txt: New.
+ * exp/annotating/bench/Makefile.am: New.
+ * exp/annotating/bench/bench.cc: New.
+ * exp/annotating/error/Makefile.am: New.
+ * exp/annotating/error/error.cc: New.
+ * exp/annotating/histo/Makefile.am: New.
+ * exp/annotating/histo/histo.cc: New.
+ * exp/annotating/hsv/Makefile.am: New.
+ * exp/annotating/hsv/hsv.cc: New.
+ * exp/annotating/hue/Makefile.am: New.
+ * exp/annotating/hue/hue.cc: New.
+ * exp/annotating/hue/text-color.txt: New.
+ * exp/annotating/hue/text-img.txt: New.
+ * exp/annotating/hue/text-only.txt: New.
+ * exp/annotating/nb_color/Makefile.am: New.
+ * exp/annotating/nb_color/nb_color.cc: New.
+ * exp/annotating/saturation/Makefile.am: New.
+ * exp/annotating/saturation/saturation.cc: New.
+ * exp/annotating/saturation/text-color.txt: New.
+ * exp/annotating/saturation/text-img.txt: New.
+ * exp/annotating/saturation/text-only.txt: New.
+ * exp/annotating/stddev_color/Makefile.am: New.
+ * exp/annotating/stddev_color/stddev_color.cc: New.
+ * exp/annotating/stddev_color_16/Makefile.am: New.
+ * exp/annotating/stddev_color_16/stddev_color_16.cc: New.
+ * exp/annotating/value/Makefile.am: New.
+ * exp/annotating/value/text-color.txt: New.
+ * exp/annotating/value/text-img.txt: New.
+ * exp/annotating/value/text-only.txt: New.
+ * exp/annotating/value/value.cc: New.
+ * mln/clustering/kmean2d.hh: New.
+ * mln/fun/p2b/achromatic.hh: New.
+ * mln/fun/v2v/hue_concentration.hh: New.
+ * mln/fun/v2v/rgb_to_achromatism_map.hh: New.
+ * mln/fun/v2v/rgb_to_hsv.hh: New.
+
+
2010-07-07 Yann Jacquelet <jacquelet(a)lrde.epita.fr>
Import regional maxima sources from milena green's sandbox.
diff --git a/scribo/sandbox/green/README.green b/scribo/sandbox/green/README.green
index 7886914..5d6e147 100644
--- a/scribo/sandbox/green/README.green
+++ b/scribo/sandbox/green/README.green
@@ -685,21 +685,6 @@ rechercher dans les derniers répertoires mp00042c et mp00307c.
* doc/labeling/mp00307c: Test sur la representativité des couleurs trouvées.
-Faire le changelog, il y a de l'aide dans git/doc/Changelog
-... et commiter
-
-
-XI ANNOTATING
---------------
-
-==> to do
-
-
-
-* doc/annotating
-
-
-
XI AUTRES ASPECTS DOCUMENTAIRES
-------------------------------
@@ -732,3 +717,495 @@ l'effort.
* doc/formulae: LaTex directory.
* doc/quick_tour: LaTex directory.
+
+XII ANNOTATING
+--------------
+
+Tout d'abord, voici les notes documentaires qui ont été réalisées sur
+la problématique d'annotation d'image. On trouvera un fichier
+class.txt qui a pour but de poser quelques réflexions sur les types de
+classes de document. Les informations ne sont pas abouties mais
+permettent de défricher un peu le terrain. Le document
+syntheseMillet2008 est un compte-rendu de lecture des parties
+relatives à nos travaux dans la thèse de Millet. Pour bien comprendre
+mon travail, il est impératif de lire les travaux de Millet, ou
+simplement ce compte-rendu. Le dernier document est moins intéressant,
+il s'agit d'une note de travail sur les indicateurs de Millet bruts de
+fonderie (testMillet2008). Cette note n'est ni achevée, ni
+aboutie. Elle conclue sur le fait que les indicateurs et les seuils
+donnés par Millet dans sa thèse sont complètement à revoir pour nos
+besoins. Notemment, des tests sur la détection des images par rapport
+aux cliparts nous ont convaincu que certaines images AFP contiennent
+des de grandes zones homogènes qui induisent des erreurs dans les
+prédicteurs de Millet. Néanmoins, les cas particuliers qui
+contredisent les aspects opérationnnels de Millet n'enlèvent pas sa
+réflexion: Les images noir/blanc (ou monochromes) ont une très faible
+saturation, et/ou une forte concentration de la teinte. Les cliparts
+ont une forte concentration de niveaux de gris autour d'un pic.
+
+* doc/annotating: La documentation relative à l'annotation.
+
+
+Après la lecture des descripteurs de Millet, un des premiers réflexe a
+été d'en implémenter plusieurs pour voir ce qu'ils pouvaient ressortir
+sur les images que nous avions. Le descripteur BIC sépare une image en
+deux ensembles de pixels, les points intérieurs et les points
+extérieurs. Les points intérieurs ont la propriété d'être de même
+couleur que leur 4-voisins. Attention, la couleur est évaluée dans un
+espace RGB Ã 3 bits.
+
+* demo/annotating/bic: Histogrammes des points intérieurs et extérieurs.
+
+
+Le descripteur LEP, lui, propose de seuiller par sobel l'image et de
+faire l'histogramme des configurations du voisinage des points
+seuillés. Pour ce faire, on utilise une convolution un peu spéciale
+qui va attribué un unique id en fonction du voisinage.
+
+* demo/annotating/lep: Histogramme des configurations des voisinages des pixels.
+
+
+Un autre descripteur simple est le nombre de couleur dans une
+image. Pour cela, il est possible de construire l'histogramme des
+couleurs et de compter les cellules pleines. On peut éventuellement
+appliquer une quantification sur l'espace des couleurs. La
+compilation laisse place à d'étranges warnings sur une comparaison
+entre entiers signés et non signés, mais je n'ai pas la main dans mon
+code (ou je ne sais pas comment faire) pour enlever ces warnings. Ils
+sont récents, je n'avais pas souvenir de les avoir eu.
+
+* demo/annotating/nb_color: Compte le nombre de couleurs dans une image.
+* exp/annotating/nb_color: Adaptation pour fonctionner sur une base d'image.
+
+
+L'histogramme RGB-64 est un descripteur simple qui quantifie les
+couleurs sur 2 bits et réalise l'histogramme dans cet espace. C'est
+bien sûr une classification gros grain, mais ajouté au reste ... La
+version RGB-64-9 ajoute une phase de division de l'image en 9 sous
+images. De cette manière, l'histogramme RGB-64 est construit sur les 9
+sous images. Pour former le descripteur final, on fusionne les neufs
+histogrammes.
+
+* demo/annotating/rgb_64: Histogramme couleur dans l'espace RGB-64 (2 bits/axe).
+* demo/annotating/rgb_64_9: Histogramme RGB-64 sur les 9 sous images.
+
+
+Le descripteur de projection relaté par Millet est particulier. En
+premier lieu l'image est sous échantillonnée pour réduire sa dimension
+à 100 x 100 de manière à borner la taille des vecteurs obtenus au
+final. Puis l'image est seuillée par sobel (threshold = 100). L'image
+est d'abord divisée horizontalement en deux. Puis on établit la
+projecton perpendiculairement à la séparation de manière à obtenir
+deux vecteurs de 100 valeurs chacunes. On recommence l'opération en
+divisant maintenant l'image verticalement. L'union des 4 vecteurs
+forme le descripteur de projection. L'information condensée dans ces
+vecteurs est simplement la répartition des contours de manière
+horizontale ou verticale.
+
+* demo/annotating/project: Répartition des contours horizontaux et verticaux.
+
+
+La reconnaissance des cliparts s'appuie sur une analyse d'histogramme
+qui est fournie dans le code suivant. L'idée est de dire qu'une image
+de type clipart va être reconnaissable surtout à l'aide de ces
+contours. La couleur existe mais est très grossière. Le faitde
+dessiner à la main implique de simplifier énormément, de caricaturer,
+le remplissage. Du coup, une analyse en niveau de gris de
+l'histogramme révèle très peu de nuances. Il peut cependant en avoir
+un peu. Néanmoins, il existe des logiciels pour aider à la fabrication
+des cliparts qui proposent l'usage de dégradé, ce qui nuit à cette
+méthode de reconnaissance. Millet analyze l'histogramme normalisé
+(histogramme divisé par son pic) et regarde si son energie ne serait
+pas concentrée autour du pic (5 pixels de chaque côté
+maximum). Parfois cette méthode ne fonctionne pas correctement sur des
+photographies qui ont un cadre uniforme. La méthode trouve un pic (le
+cadre) et vérifie alors qu'une proportion non négligeable des pixels
+sont bien autour de ce pic (tout dépend de l'épaisseur du cadre). Pour
+palier à cet inconvénient, Millet propose d'utiliser ce test, non plus
+sur l'image entière, mais sur chacune des 16 sous images après un
+découpage géométrique régulier. De facto, la contribution du cadre
+diminue suffisemment pour repasser en dessous du seuil de
+reconnaissance.
+
+* demo/annotating/stddev_color: Descripteur utilisé reconnaitre des cliparts.
+* exp/annotating/stddev_color_16: Adaptation pour le travail sur base.
+* demo/annotating/stddev_color_16: Descripteur pour cliparts avec 16 imagettes.
+* exp/annotating/stddev_color: Adaptation pour le travail sur une base d'image.
+
+
+A partir de maintenant, tous les morceaux de codes réalisés préparent
+directement ou indirectement le résultat de la classification des
+bases (exp/annotating/bench).
+
+Plus de temps pour faire le code use correspondant aux fichiers
+librairies. Tout le code pour le faire est dans hsv. Rien de
+compliqué, mais allons à l'essentiel.
+
+Le but du code HSV est d'effectuer les tests de Millet ou des
+améliorations sur ces tests. Le premier test proposé par Millet est
+l'achromaticité. Il s'agit de regarder s'il existe une faible
+variation entre les trois canaux (R/G/B) pour un grand nombre de
+pixels. Si c'est le cas, c'est que l'image est presque en niveau de
+gris et peut être remplacée facilement par une image grisée sans trop
+de distorsions au niveau de la couleur. Nous avons essayer de
+généraliser un peu le test de manière à produire, non pas seulement
+une réponse sur l'achromaticité de l'image, mais aussi avoir une vue
+d'ensemble (sous forme d'image) des variations entre les cannaux pour
+chaque pixel. Il n'est pas utile d'analyser les différences sur chacun
+des canaux, prendre la différence absolue entre le canal min et le
+canal max suffit pour définir le test d'achromaticité.
+
+Les autres tests de Millet sont la faible saturation et la dominance
+de la teinte. Pour savoir si la saturation est faible, il faut
+utiliser un histogramme du canal dédié à la saturation. Si 95% des
+pixels sont en dessous de 100, alors l'image est faiblement saturée,
+elle est en noir et blanc. De la même manière, on regarde la dominance
+de la teinte. Pour ce faire, il faut voir si l'histogramme de la
+teinte ne possède pas un pic avec une très faible variance (tout
+rapproché autour du pic). Si c'est le cas, la dominance de la teinte
+est avérée et l'on peut calculé la couleur dominante. L'image est en
+niveau de gris, mais colorisé autour d'une couleur (par cepia, vert
+...).
+
+Ce programme est très très sujet à changements, il m'a servit de test
+et je ne peux pas juré qu'il est complètement sain au niveau du
+traitement. D'autres versions sont potentiellement plus
+stables. Notemment celle dans exp/annotating/hsv.
+
+* mln/fun/v2v/rgb_to_achromatism_map.hh : Distance pour l'achromaticité.
+* mln/fun/v2v/achromatic.hh : Define the achromatic map.
+* mln/fun/v2v/hue_concentration.hh : Define the distance hue/peak map.
+* mln/fun/p2b/achromatic.hh : Say if a site is achromatic.
+* demo/annotating/hsv: Code des différents tests de Millet.
+
+
+Dans le répertoire exp/annotating/hue, on trouve 3 fichiers textes qui
+rassemblent des classes d'images. Tout d'abord les images ICDAR
+n'ayant que du texte et des traces de couleurs (lettrine de couleur,
+trait, petit bandeau), un fichier où il n'y a que du texte noir &
+blanc et un fichier contenant les images couleurs (avec photographies
+ou dessins). Cette classification a été effectuée de manière manuelle.
+Le code hue test la proportion de pixels étant autour du pic de
+teinte. Il s'agit de savoir si la dominance d'une teinte est
+avérée. Le code renvoit la proportion de pixels agglomérés autour du
+pic. Le but est de généralisé les tests de millets pour qu'ils se
+ressemblent le plus possible.
+
+* exp/annotating/hue: Implémentation de la généralisation du test de Millet.
+* mln/fun/v2v/rgb_to_hue_map.hh : Construction de la map de teinte.
+
+
+On retrouve les trois fichiers permettant de classifier la base ICDAR
+en trois sous populations. Le test de saturation consiste simplement Ã
+regarder si une certaine quantité de la population de l'histogramme de
+saturation est en dessous d'un certain seuil. La généralisation du
+test ne porte pas sur le test en lui-même, mais sur la forme dans
+lequel le test est fait.
+
+* exp/annotating/saturation: Implémentation de la généralisation du test.
+* mln/fun/v2v/rgb_to_saturation_map.hh : Construction de la map de saturation.
+
+
+Le test de value a déjà été décrit précédemment dans
+stddev_color. L'idée est toujours la même, mais cette fois il est
+effectué dans l'espace des valeurs (HSV). Cela ne change pas grand
+chose, puisqu'il était utilisé sur des images en niveau de gris. C'est
+l'un des tests importants car il réagit à la différentiation entre une
+image type photographie et une image plus stylisée comme un
+clipart. Ce test a aussi des vertus pour la distinction entre du noir
+& blanc et de la couleur. Il s'avère que les images type photographie
+avec pleins de couleurs ont un histogramme moins sujet aux pics que
+les histogrammes noir & blanc. De facto, l'énergie de l'histogramme
+est distribué sur l'ensemble de la plage contrairement aux images noir
+& blanc où il y a une concentration de chaque côté de l'histogramme
+(bipolarité).
+
+* exp/annotating/value: Implémentation de la généralisation du test de Millet.
+* mln/fun/v2v/rgb_to_value_map.hh : Transformation d'espace.
+
+
+Le programme hsv reprend les tests préalablement élaborés auparavant
+sur les plans H, S puis V. Il combine tout en un seul programme pour
+avoir une vision plus synthétique de ce qui se passe sur les 3 espaces
+simultanément.
+
+Les tests incorpore mes transformations. C'est à dire que l'on
+effectue une série de test équivalent à ceux de Millet (au moins dans
+l'idée et le plus souvent, il s'agit d'une réecriture sous une autre
+forme) en partant des histogrammes normalisés. Un histogramme
+normalisé est un histogramme de flottant qui contient l'histogramme
+classique divisé par le nombre total de pixels. En faisant cela, on se
+déplace dans l'espace des distributions. Si l'histogramme n'a qu'un
+seul pic et que ce dernier contient tous les pixels (pic de dirac par
+exemple), alors l'histogramme normalisé donnera 1 comme valeur de
+proportion à ce pic. En fait, l'intégrale d'une distribution vaut
+1. Le but des distributions est de s'affranchir des caractéristiques
+de taille de l'image, ce qui permet de comparer les histogrammes entre
+eux. On peut ainsi comparer les histogrammes d'une photo AFP petit
+format avec celui d'une image grand format de la base ICDAR. Le but du
+jeu est de garder les idées de Millet dans ce nouvel espace. Les tests
+obtenus sont équivalents mais pas identiques.
+
+Pour la teinte, une fois l'histogramme normalisé obtenu, on cherche Ã
+savoir s'il existe un pic avec une forte proportion de l'histogramme
+autour de ce pic. Plutôt que le pic, nous prenons la moyenne qui est
+un opérateur un peu plus robuste et nous calculons la proportion de
+l'histogramme autour (un seuil donné en paramètre défini le périmètre
+du calcul). L'expression sous forme de proportion plutôt que sous la
+forme d'une variance rend le test homogène avec les autres tests.
+
+Pour la saturation, après normalisation, on regarde la proportion de
+l'histogramme en dessous d'un certain seuil. Il n'y a pas de
+changement significatif par rapport au test de Millet. Le seuil
+initialement proposé par Millet était 100, il a été adapté car nos
+bases sont différentes des siennes (le notre est à 25).
+
+Le test sur les valeurs (cliparts contre photos) a vraiment un intérêt
+au delà de ce cas d'utilisation. Il nous renseigne sur la
+concentration autour d'un pic de l'histogramme ou non. Nous préferrons
+la mesure de similarité à l'équi-répartition des densités, mais l'idée
+est exactement la même. Est-ce que notre histogramme est plat ou
+inversement, est-ce que les contributions sont rassemblées autour d'un
+pic? Si une image est noir et blanc, il existera un pic correspondant
+au fond et la densité s'éloignera fortement de la distribution
+équiprobable. Dans le cas maintenant d'une image couleur, la
+répartition est plus homogène, couvrant un large spectre dans le
+domaine de l'histogramme. Du coup, la distribution semblera davantage
+equi-répartie. On notera que nous prenons le test à l'envers de ce que
+propose Millet. Il essaye de voir si il y a un pic et calcule une
+forme de contribution normalisée autour de ce pic. Nous au contraire,
+on regarde l'absence de pic et on calcule la différence entre la
+densité et cette absence de pic. Notre avantage par rapport à Millet
+est démontré particulièrement dans les cas où il existe plusieurs
+grosses distributions. A contrario, notre test souffre des cas où il
+existe de nombreuses petites distributions.
+
+
+Voici un premier retour sur les expériementations:
+La discrimination entre la base AFP et la base ICDAR peut se faire en
+étudiant la forme des densités des niveaux de gris. Les images
+naturelles semblent avoir un spectre recouvrant en général les 256
+niveaux de gris alors que les images de documents ont une présence
+importante du fond. Dans le cadre d'une densité, ce qui est alloué sur
+le fond ne peut se retrouver ailleurs. Une comparaison avec la densité
+équiprobable nous renseigne donc sur la nature des images. Il semble
+néanmoins qu'un certain nombre d'images défient ce dispositif. Par
+exemple des gros plans sur des zones mono-teintée (ski, voile,site
+web).
+
+* exp/annotating/hsv: Code unifiant les trois tests sur chacun des plans HSV.
+* mln/fun/v2v/rgb_to_hue_map.hh : Transformation d'espace.
+* mln/fun/v2v/rgb_to_saturation_map.hh : Transformation d'espace.
+* mln/fun/v2v/rgb_to_value_map.hh : Transformation d'espace.
+
+
+Le test sur l'achromatisme des images est décrit dans le code
+suivant. Il a été purement et simplement abandonné dans la mesure où
+c'est un cas très particulier qui est repris par une saturation très
+faible. La saturation s'exprime comme 1 - min(channel)/max(channel),
+mais dans le cas où le min(channel) == max(channel), la saturation
+vaut 0. Le problème vient plutôt du calcul de la teine qui ne peut pas
+admettre que le min soit égal au max. Pour ce calcul, on se débrouille
+pour gérer le cas et renvoyer une valeur standardisée, Millet
+proposait -1.
+
+* exp/annotating/achromatism: Détection d'image couleur en niveau de gris.
+* mln/fun/v2v/rgb_to_achromatism_map.hh : Transformation d'espace.
+
+
+Ce programme a pour but de créer les histogrammes normalisés en rafale
+pour les bases AFP et ICDAR. Il assure leur création dans les six
+plans possibles R,G,B,H,S,V. De cette manière il est possible de
+vérifier les corrélations éventuelles entre le canal B et G. Par
+ailleurs, après visionnement de tous les histogrammes, on note des
+spécificités dans les deux bases sur les plans S et V. Certaines
+images ont des réactions très fortes sur le plan H, mais ce n'est pas
+une caractéristique pour une base (seulement pour ces images en
+question). Les résultats ont déjà été sauvegardés dans le répertoire
+image du LRDE. Des infos sont notés à ce sujet dans README.result. Le
+seul but de ce calcul est de maîtriser csujet dans README.result. Le
+seul but de ce calcul est de maîtriser ce qui se passe dans ces
+espaces, pas simplement de supposer ce qu'il pourrait s'y passer. La
+comparaison des images est rendu possible quelque soit la base
+d'origine par le fait qu'elles sont normalisées. Chaque fréquence des
+histogrammes est divisée par la somme des fréquences. On obtient donc
+une version discrète des densitées. La somme des nouvelles fréquences
+vaut 1. On voit davantage si les densités se rapprochent d'une
+équi-répartition ou non. La négative implique un ou plusieurs pics. Le
+cas défavorable dans mon approche (qui existe pour certaines images)
+est une multitude de tout petits pics autour de l'équi-répartition. Ce
+n'est pas équi-répartie pour les calculs mais ce n'est clairement pas
+la manisfestation d'une concentration de l'énergie quelque part.
+
+* exp/annotating/histo: Creation des histogrammes normalisés.
+* mln/fun/v2v/rgb_to_hue_map.hh: Transformation d'espace.
+* mln/fun/v2v/rgb_to_saturation_map.hh: Transformation d'espace.
+* mln/fun/v2v/rgb_to_value_map.hh: Transformation d'espace.
+
+
+Dans le programme erreur, on teste l'idée de jonathan. Une référence Ã
+ce sujet peut être trouvée dans README.img. Les bases AFP et ICDAR
+sont retravaillées à l'aide de ImageMagick et de Gimp pour diminuer le
+nombre de couleurs initiales. On oblige à n'avoir que 30, 20 ou 10
+couleurs pour chaque base. Il y a donc 4 versions de chacune des bases
+en comptant la version originale des images. Les algorithmes utilisés
+par Gimp et ImageMagick sont très différents. L'idée de Jonathan était
+de dire que lorsqu'une image est couleur, plus on réduit le nombre de
+couleur, plus elle change vis-Ã -vis de l'image originale. Inversement,
+si une image possède peu de couleurs (noir & blanc), sa dégradation ne
+l'altérera pas tant que cela. Prenons une image d'un skieur de la base
+AFP, en réduisant le nombre de couleurs, la combinaison marron va
+devenir marron strictement homogène et la perception que nous en avons
+est visuellement très altérée. A contrario, une image en noir & blanc
+ne semble pas bouger d'un pouce. La comparaison avec la discrimination
+sur la saturation ou la valeur montrera des résultats un peu meilleur
+plus tard mais il impossible de préjuger a priori des résultats
+futurs. L'erreur entre l'image initiale et l'image dégradée est
+calculée avec le PNSNR (compression p278 Handbook Color). Le programme
+calcule la dégradation et essaie de trouver automatiquement des seuils
+de séparation pour les deux bases. 4 détection de seuils sont testées.
+Ces seuils sont calculées avec deux bases représentatives des bases Ã
+discriminer. En mode production, le seuil est vu comme une constante
+pour le programme. Les deux premières classifications renvoient un
+seuil calculée comme une moyenne pondérée des moyennes des populations
+à discriminer. Le premier détecteur pondère par la déviation standard
+et le second par la variance. Le troisième simule deux populations
+gaussiennes de variances différentes et résoud l'équation de second
+degré qui en résulte. Enfin, le dernier test ne préjuge pas des
+distributions statistiques et réalise la minimisation de l'erreur de
+classification. Pour cela, il suffit de compter le nombre d'images
+bien classées et mal classées sur les bases d'apprentissage des
+populations. On utilise pour cela la méthode Otsu. Le détecteur PNSRN
+renvoie une valeur. Pour chaque population (AFP, ICDAR), on construit
+l'histogramme de des valeurs obtenues. A noter, qu'il faut que les
+valeurs du PNSNR soient ramenées entre 0 et 255. En pratique ce n'est
+pas un problème, mais il faut le mettre en oeuvre, dans mon code, ce
+n'est pas fait (les valeurs ne posaient pas de problème). Donc, pour
+chaque seuil possible (de 0 à 256), on étudie la matrice de classement
+(groupe 1 - détecté groupe 1, groupe 1 - détecté groupe 2, groupe 2 -
+détecté groupe 1, groupe 2 - détecté groupe 2). L'erreur est
+simplement la somme des quantités groupe x - détecté groupe y avec x
+!= y. Finalement, pour chaque seuil, il est possible de connaitre
+l'erreur. Le processus de minimisation de l'erreur revient à chercher
+le seuil associé à l'erreur minimale. C'est ce dernier test que nous
+préconisons. Il faut mettre en lumière que ces quatre tests renvoient
+à peu près les mêmes seuils. La minimisation de l'erreur étant le
+meilleur de tous puisqu'il minimise directement l'erreur de
+classification et c'est ce que nous cherchions en fin de compte. Un
+cinquième test a été fait avec une analyse de fisher sur l'histogramme
+des populations mélangées, mais c'est une idée saugrenue car nous
+disposons à ce niveau des populations séparées et évidemment les
+résultats sont moins bons.
+
+Petit rappel. Un vieux problème a été mis à jour ici. Lorsqu'on
+calcule des informations sur un histogramme, le type temporaire qui
+contient les résultats ne doit pas être le type qui encode les valeurs
+des résultats. Par exemple, un histogramme de byte, un calcul de
+variance tout simple où il faut stocker la valeur des pixels au carré
+multiplié par leur occurrence tiendra facilement dans un long mais pas
+dans un byte. Le sucre avec les acesseurs des itérateurs tend Ã
+mélanger les genres. Une solution simple est de stocker la valeur de
+l'histogramme dans un type pouvant effectuer les calculs et ensuite
+retravailler avec ce type. Nous avions déjà discuté de ce problème et
+je ne sais pas si tu avais pu corriger le problème. Si la
+classification renvoit n'importe quoi, il se peut que cela provienne
+de ce problème. Le problème ne se voit pas sur des calculs de
+moyennes, il ne s'observe que sur certains calculs de variance (dépend
+de la formule utilisée).
+
+* exp/annotating/error: Test de l'idée de jonathan (dégradation des couleurs)
+
+
+Le travail dans bench.cc reprend toute sorte de travaux déjà réalisés
+dans d'autres fichiers. Il a pour but de comparer ensemble tous les
+descripteurs pour la reconnaissance de base de données entre l'AFP et
+l'ICDAR.
+
+Le travail commence avec un certain nombres de routines travaillant
+sur les histogrammes permettant de trouver le pic, la moyenne, la
+variance et d'autres éléments. Les routines étaient éparpillées dans
+le code, du coup je les ai regroupées au même endroit. Il y a des
+redondances de code correspondant à des copier/coller ou à différents
+essais. Prendre les versions les plus génériques et en faire des
+accumulateurs serait un riche idée.
+
+Huit détecteurs sont comparés ensembles:
+- hue1, détection d'un pic de teinte très dense par la méthode de Millet.
+- sat1, détection d'une densité importante dans les saturations basses (Millet).
+- lvl0, comptage du nombre de niveau de gris (idée de Millet).
+- hue0, détection d'un pic de teinte par la méthode des densités.
+- sat0, détection d'une forte basse saturation par la méthode des densités.
+- val0, détection d'un pic de niveau de gris par la méthode des densités.
+- val1, détection d'un pic de niveau de gris par la méthode de Millet.
+- err, PNSNR (idée de jonathan).
+
+FIXME: Attention, le PNSNR n'est pas borné, il faut le faire, il doit avoir
+au maximum 255 comme valeur.
+
+Tous les détecteurs ont été expliqués en large, en long et en travers
+dans les sources précédentes. LIRE le chapitre XII (ANNOTATING) de ce fichier
+en entier.
+
+Ensuite vient les séparateurs de population statistiques qui ont été
+déjà introduit dans le fichier error. Bien que tous soient présent,
+c'est la minimisation de l'erreur qui est utilisée.
+
+Enfin vient le front end, l'un des plus complexes que j'ai écrit cette
+année. Le main lui même, n'est pas la partie la plus complexe. Il
+définit les actions fonctionnelles à réaliser et la structure de
+donnée réalisée pour garder la trace de tous les résultats.
+- File_name : Cette variable retient le nom des fichiers. C'est un tableau
+de la taille du nombre d'images rencontrées toute base confondue. Comme on
+ne parcourt qu'une fois les répertoires, il faut pouvoir retenir cette
+information qui servira éventuellement pour la nomenclature des dumps
+par la suite.
+- Result : Cette variable contient toutes les informations du traitement.
+C'est un tableau à deux dimensions, une pour les images et une autre pour
+les descripteurs. L'index d'image est le même que pour file_name.
+- Size : Cette variable contient le nombre d'images par database.
+- Threshold : Cette variable va stocker les seuils calculés sur chacun
+des descripteurs. Ces seuils sont sensés effectuer la séparation entre les
+deux bases.
+- Cxx : variables de comptage des images bien ou mal classées relativement
+à la position des seuils et à l'appartenance d'origine des images. Cette
+appartenance d'origine est calculée à l'aide Size qui contient le nombre
+d'image par base de données. Comme les images sont vues dans l'ordre, les X
+premières appartiennent à la base ICDAR et les Y suivantes à la base AFP.
+- histo : Variable servant à effectuer par database et par descripteur un
+histogramme utilisé ensuite lors de la discrimination des bases.
+
+La partie compute_descriptors a pour mission de passer une fois sur
+toutes les images et de calculer les descripteurs associés. A l'issue
+de cette passe file_name, result et size sont remplis et pourront être
+utilisés par les autres routines.
+
+La partie dump_descriptors a pour but de réaliser un tracé en gnuplot,
+avec une couleur différente pour chaque base. Le graphe montre les
+valeurs utilisées par chaque descripteur pour toutes les images de la
+base.
+
+La partie correction des descripteurs est optionnelle et force un
+certain nombre de valeurs pour être inférieures à 256. Le but était de
+pouvoir travaillé, même si les descripteurs n'étaient pas complètement
+opérationnels. Elle sert donc pour le debug.
+
+La partie calcul des histogrammes sert à obtenir la distribution des
+valeurs de chacun des descripteurs en fonction des bases
+utilisées. C'est une étape préliminaire à l'analyse des populations et
+au calcul des seuils.
+
+La partie calcul des seuils repose sur la minimisation des erreurs de
+classification. Cette méthode ne fonctionne bien si la classe zéro Ã
+une moyenne inférieure à la classe un. Du coup, il n'est pas possible
+de déterminer de manière simple si la classe 0 correspond à l'AFP ou Ã
+l'ICDAR. Pour chaque descripteur, les cartes sont rebattues.
+
+Enfin, tous les histogrammes sont sauvés pour pouvoir comprendre et
+visualiser les résultats.
+
+Le main2 ne sert à rien, juste pour des essais.
+
+Attention, modification VAL0/VAL1, vérifiez que le bon descripteur est
+au bon endroit dans le tableau.
+
+* exp/annotating/bench: Comparaison des détecteurs pour la classif. ICDAR/AFP.
\ No newline at end of file
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/bic/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/bic/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/bic/bic.cc b/scribo/sandbox/green/demo/annotating/bic/bic.cc
new file mode 100644
index 0000000..f63d260
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/bic/bic.cc
@@ -0,0 +1,122 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet BIC descriptor [millet.phd.2008.pdf]
+///
+/// This is an image descriptor. It quantifies the three channels on 3
+/// bits, then builds two histograms with the interior pixels and the
+/// exterior ones. The interior pixels are those where color value is
+/// the same as their 4 neighbouring pixels. The descriptor is the
+/// fusion of the two histograms.
+
+#include <iostream>
+
+#include <mln/accu/stat/histo3d_rgb.hh>
+
+#include <mln/core/image/image2d.hh>
+#include <mln/core/alias/neighb2d.hh>
+#include <mln/core/routine/initialize.hh>
+#include <mln/core/var.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/convert.hh>
+#include <mln/data/transform.hh>
+#include <mln/data/fill.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/fun/v2v/rgb8_to_rgbn.hh>
+
+#include <mln/img_path.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/ppm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/literal/colors.hh>
+
+#include <mln/value/rgb.hh>
+#include <mln/value/rgb8.hh>
+
+/// \brief Main entry.
+///
+/// Load the images, compute the interior and the exterior with the
+/// predicate, then compute the two histograms separately.
+int main()
+{
+ typedef mln::value::rgb<3> t_rgb3;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::neighb2d t_neighb2d;
+ typedef mln::image2d<t_rgb3> t_image2d_rgb3;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image3d<unsigned> t_histo3d;
+ typedef mln::fun::v2v::rgb8_to_rgbn<3> t_rgb8_to_rgb3;
+ typedef mln::accu::meta::stat::histo3d_rgb t_histo3d_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_rgb3 input_rgb3;
+ t_image2d_rgb3 interior_rgb3;
+ t_image2d_rgb3 exterior_rgb3;
+ t_histo3d histo_exterior;
+ t_histo3d histo_interior;
+
+ // IMAGE LOADING PHASE
+ std::cout << "Image loading phase ..." << std::endl;
+ mln::io::ppm::load(input_rgb8, ICDAR_50P_PPM_IMG_PATH"/mp00082c_50p.ppm");
+ input_rgb3 = mln::data::transform(input_rgb8, t_rgb8_to_rgb3());
+
+ mln::initialize(interior_rgb3, input_rgb3);
+ mln::initialize(exterior_rgb3, input_rgb3);
+
+ mln::data::fill(interior_rgb3, mln::literal::black);
+ mln::data::fill(exterior_rgb3, mln::literal::black);
+
+ mln_piter_(t_image2d_rgb3) p(input_rgb3.domain());
+ mln_niter_(t_neighb2d) n(mln::c4(), p);
+
+ for_all(p)
+ {
+ bool is_interior = true;
+
+ for_all(n)
+ is_interior = is_interior && (input_rgb3(p) == input_rgb3(n));
+
+ if (is_interior)
+ interior_rgb3(p) = input_rgb3(p);
+ else
+ exterior_rgb3(p) = input_rgb3(p);
+ }
+
+ histo_interior = mln::data::compute(t_histo3d_fun(), interior_rgb3);
+ histo_exterior = mln::data::compute(t_histo3d_fun(), exterior_rgb3);
+
+ //mln::io::plot::save_image_sh(histo, "histo.sh");
+
+ // PRINTING PHASE
+ mln::debug::println(histo_interior);
+ mln::debug::println(histo_exterior);
+}
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/hsv/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/hsv/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/hsv/hsv.cc b/scribo/sandbox/green/demo/annotating/hsv/hsv.cc
new file mode 100644
index 0000000..e87ab2d
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/hsv/hsv.cc
@@ -0,0 +1,721 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet HSV operator [millet.phd.2008.pdf]
+///
+/// This is the Millet code for moving from RGB space to HSV
+/// one. Formulae are classical, we can find them on the web.
+///
+// Val = max(R,G,B).
+// Sat = (max(R,G,B) - min(R,G,B))/max(R,G,B).
+// IF R = max(R,G,B) THEN Hue = 60 * [(V-B)/(max(R,G,B)-min(R,G,B))].
+// IF G = max(R,G,B) THEN Hue = 60 * [2 + (B-R)/(max(R,G,B)-min(R,G,B))].
+// IF B = max(R,G,B) THEN Hue = 60 * [4 + (R-G)/(max(R,G,B)-min(R,G,B))].
+///
+/// \fixme: This code is unstable. It was using to make a lot of tests.
+/// Don't use it, we have more stable version of it.
+#include <iostream>
+#include <fstream>
+
+#include <mln/accu/max_site.hh>
+#include <mln/accu/math/count.hh>
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/binarization/threshold.hh>
+
+#include <mln/core/alias/point1d.hh>
+#include <mln/core/alias/box1d.hh>
+#include <mln/core/concept/image.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+
+#include <mln/data/transform.hh>
+#include <mln/data/compute.hh>
+#include <mln/data/stretch.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/literal/colors.hh>
+#include <mln/literal/grays.hh>
+
+#include <mln/fun/v2v/rgb_to_hsv.hh>
+#include <mln/fun/v2v/rgb_to_achromatism_map.hh>
+#include <mln/fun/v2v/achromatism.hh>
+#include <mln/fun/v2v/hue_concentration.hh>
+#include <mln/fun/p2b/component_equals.hh>
+#include <mln/fun/p2b/achromatic.hh>
+#include <mln/fun/v2v/component.hh>
+
+#include <mln/geom/nsites.hh>
+
+#include <mln/img_path.hh>
+
+#include <mln/io/plot/save_image_sh.hh>
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/pbm/save.hh>
+
+#include <mln/pw/cst.hh>
+#include <mln/pw/value.hh>
+//#include <mln/trace/quiet.hh>
+
+#include <mln/value/rgb8.hh>
+#include <mln/value/int_u8.hh>
+#include <mln/value/hsv.hh>
+
+
+/// \brief Classify a rgb a value with a color of reference.
+///
+/// \param[in] rgb a rgb8 value.
+///
+/// \return a rgb8 initialize with the selecting literal.
+///
+/// This classification of the RGB color space is based on the
+/// Millet's work. It uses the hue wheel to do it and make new
+/// distinction as brown/orange for instance.
+mln::value::rgb8 label_color(const mln::value::rgb8 rgb)
+{
+ mln::value::hsv_f hsv = mln::fun::v2v::f_rgb_to_hsv_f(rgb);
+
+ mln::value::rgb8 result;
+
+ // Is it a gray level ?
+ if (0 == hsv.sat())
+ {
+ // which result one ?
+ if (82 > hsv.sat())
+ result = mln::literal::black;
+ else if (179 > hsv.sat())
+ result= mln::literal::medium_gray;
+ else
+ result = mln::literal::white;
+ }
+ // Is it a true result color ?
+ else if (14 > hsv.hue())
+ result = mln::literal::red;
+ else if (29 > hsv.hue())
+ {
+ // Is is brown or orange ?
+ unsigned dist_orange = mln::math::abs(hsv.sat() - 184)
+ + mln::math::abs(hsv.val() - 65);
+
+ unsigned dist_brown = mln::math::abs(hsv.sat() - 255)
+ + mln::math::abs(hsv.val() - 125);
+
+ if (dist_orange < dist_brown)
+ result = mln::literal::orange;
+ else
+ result = mln::literal::brown;
+ }
+ else if (45 > hsv.hue())
+ {
+ // Is it green or yellow ?
+ if (80 > hsv.val())
+ result = mln::literal::green;
+ else
+ result = mln::literal::yellow;
+ }
+ else if (113 > hsv.hue())
+ result = mln::literal::green;
+ else if (149 > hsv.hue())
+ result = mln::literal::cyan;
+ else if (205 > hsv.hue())
+ result = mln::literal::blue;
+ else if (235 > hsv.hue())
+ result = mln::literal::violet;
+ else if (242 > hsv.hue())
+ result = mln::literal::pink;
+ else
+ result = mln::literal::red;
+
+ return result;
+}
+
+/// \brief Sum all the bins of the histogram.
+///
+/// \param[in] img the histogram based on image.
+///
+/// \return the sum of the overall bins.
+///
+/// Sum evry bins and return the result.
+template <typename I>
+unsigned count_histo(const mln::Image<I>& img_)
+{
+ const I& img = exact(img_);
+
+ mln_precondition(img.is_valid());
+
+ unsigned result = 0;
+ mln_piter(I) p(img.domain());
+
+ for_all(p)
+ result += img(p);
+
+ return result;
+}
+
+
+/// \brief The R function of Millet
+///
+/// \param[in] p the position of the pic.
+/// \param[in] histo_p the histo value of the pic.
+/// \param[in] x the position of the element which we compute the contrib.
+/// \param[in] histo_x the histo value of that element.
+///
+/// \result the contribution of the element x.
+///
+/// This function compute the variance-like contribution of an element
+/// x linked to the pic of the histogram. In fact, every thing is like
+/// we compute a square distance-like between the element x and the
+/// pic in the normalized histogram. Notice that the normalized
+/// histogram is the histogram divide by the value of it's pic. So at
+/// the pic, the value equals 1. It's a current representation of the
+/// histogram in image processing, we can find it in gimp for exemple.
+float r(short p, unsigned histo_p, short x, unsigned histo_x)
+{
+ float result = mln::math::sqr(((float)histo_x / histo_p) * (x-p));
+
+ return result;
+}
+
+
+/// \brief Find the peak of the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the bin which contains the greatest value.
+///
+/// Compute the position of the peak of the histogram. To do this, we
+/// view evrey bin and we maintain the maxima of the values and the
+/// position. At the end, we return the position which contains the
+/// greatest value.
+template <typename I>
+unsigned peak_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the peak of the histogram
+ unsigned v_max = mln::opt::at(histo, 0);
+ short p_max = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ return p_max;
+}
+
+
+/// Brief compute the whole deviation of Millet
+///
+/// \param[in] image the input image to analyze.
+///
+/// \return the deviation.
+///
+/// The deviation uses the R function. It stats by finding the pic. If
+/// the pic is near the rigth border of the histo, compute the R
+/// function on the left neighbouring of the pic. If the pic is near
+/// the left border of the histo, compute the R function on the right
+/// neigbouring. Otherwise, compute the average of the right and left
+/// results. The selected neighbouring is composed of five pixels at
+/// the right or at the left of the pic. The detection of clipart
+/// assumes that the majority of the energy of the histogram is closed
+/// to the pic (five pixels around it).
+// unsigned stddev_color(mln::image2d<mln::value::int_u8> input_int_u8,
+// const char *name_histo,
+// const char *name_image)
+// {
+// typedef mln::point1d t_point1d;
+// typedef mln::value::rgb8 t_rgb8;
+// typedef mln::value::int_u8 t_int_u8;
+// typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+// typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+// typedef mln::image1d<unsigned> t_histo1d;
+// typedef mln::fun::v2v::rgb8_to_int_u8 t_rgb8_to_int_u8;
+// typedef mln::accu::meta::stat::histo1d t_histo1d_fun;
+// typedef mln::accu::max_site<t_histo1d> t_max_site_fun;
+
+// t_histo1d histo;
+
+// std::cout << "histo : " << name_histo << std::endl;
+// std::cout << "image : " << name_image << std::endl;
+
+// histo = mln::data::compute(t_histo1d_fun(), input_int_u8);
+
+// mln::io::pgm::save(input_int_u8, name_image);
+// mln::io::plot::save_image_sh(histo, name_histo);
+// mln::debug::println(histo);
+
+// // Find the peak of the histogram
+// unsigned v_max = mln::opt::at(histo, 0);
+// short p_max = 0;
+
+// mln_piter_(t_histo1d) p(histo.domain());
+
+// for_all(p)
+// {
+// if (v_max < histo(p))
+// {
+// v_max = histo(p);
+// p_max = p.ind();
+// }
+// }
+
+// // Compute the specific stddev
+
+// float stddev_low = 0.0;
+// float stddev_up = 0.0;
+// float stddev = 0.0;
+
+// if (250 > p_max)
+// for (short i = p_max+1; i < p_max+6; ++i)
+// stddev_up += r(p_max, mln::opt::at(histo,p_max),
+// i, mln::opt::at(histo,i));
+
+// if (5 < p_max)
+// for (short i = p_max-1; i > p_max-6; --i)
+// stddev_low += r(p_max, mln::opt::at(histo,p_max),
+// i, mln::opt::at(histo,i));
+
+// stddev = (250 < p_max)? stddev_low : (5 > p_max)? stddev_up :
+// (stddev_low + stddev_up)/2;
+
+// std::cout << "max_site : " << p_max << std::endl;
+// std::cout << "h(max_site) : " << v_max << std::endl;
+// std::cout << "stddev_up : " << stddev_up << std::endl;
+// std::cout << "stddev_low : " << stddev_low << std::endl;
+// std::cout << "stddev : " << stddev << std::endl;
+
+// return 0;
+// }
+
+
+// -------------------------------------
+// input image <name>.ppm
+// map <name>-<map>.pgm
+// thresholded map <name>-<map>.pbm
+// histogram <name>-<map>.sh
+// decision <name>-<map>.txt
+// -------------------------------------
+// Achromatism <name>-achromatism.pgm
+// call achromatism(input_rgb8, 7, 99.0)
+
+
+/// \brief Decide if an image is achromatic or not [Millet].
+///
+/// \param[in] input_rgb8 the input image.
+/// \param[in] threshold the distance threshold used for equality.
+/// \param[in] percentage the percentage of pixels that very the test.
+///
+/// This is an improving of the Millet test. The original test
+/// compares rgb values to each other and look at differences greater
+/// than the threshold. If the number of pixel that pass the test are
+/// greater than 99.0, then the image is declared achromatic. In fact,
+/// there is few variations between the three channels, so we can say
+/// that it is like a grey image. We can with no too distortions
+/// replace the color image by the grey one. The improving is in first
+/// creating a map of the difference. As we can't keep the free
+/// differences between channels, we look at reducing the test and we
+/// find an equivalent one based on the difference between minima
+/// channel value and the maxima channel value. After the map is
+/// ready, we make binarization with the threshold. Then we compute
+/// the histogram 1d for every pixels of the map that are greater the
+/// threshold. Then, we count pixels in the histogram and traduce the
+/// count in percentage to compare to the second threshold. Details
+/// are saved in files and printed in the screen.
+void achromatism(mln::image2d<mln::value::rgb8> input_rgb8,
+ mln::value::int_u8 threshold,
+ float percentage)
+{
+ typedef mln::fun::v2v::rgb_to_achromatism_map<8> t_rgb_to_achromatism_map;
+
+ mln::image2d<mln::value::int_u8> map;
+ mln::image2d<mln::value::int_u8> view;
+ mln::image2d<bool> mask;
+ mln::image1d<unsigned> histo;
+ unsigned cnt1;
+ unsigned cnt2;
+ float prop;
+ bool result;
+
+
+ map = mln::data::transform(input_rgb8, t_rgb_to_achromatism_map());
+ view = mln::data::stretch(mln::value::int_u8(), map);
+ mask = mln::binarization::threshold(map, threshold);
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(),
+ map | (mln::pw::value(mask) == true));
+ cnt1 = count_histo(histo);
+ cnt2 = mln::geom::nsites(input_rgb8);
+ prop = (100.0 * (cnt2 - cnt1) / cnt2);
+ result = (prop > percentage);
+
+
+ std::ofstream txt_stream("achromatism.txt");
+ txt_stream << "Achromatism" << std::endl;
+
+ txt_stream << "Nbre pixels : " << cnt2 << std::endl;
+ txt_stream << "Nbre pixels achromatiques : " << (cnt2-cnt1)<< std::endl;
+ txt_stream << "Percentage : " << prop << std::endl;
+ txt_stream << "Image achromatique : " << result << std::endl;
+ txt_stream << std::endl;
+
+ txt_stream.flush();
+ txt_stream.close();
+
+ mln::io::pgm::save(view, "achromatism.pgm");
+ mln::io::plot::save_image_sh(histo, "achromatism.sh");
+ mln::io::pbm::save(mask, "achromatism.pbm");
+}
+
+
+/// \brief Decide if an image is low saturate or not and so b/w [Millet].
+///
+/// \param[in] input_hsvf the input image in the HSV space.
+/// \param[in] achromatism_mask the mask to prevent computing bad saturation.
+/// \param[in] threshold the distance threshold used for equality.
+/// \param[in] percentage the percentage of pixels that very the test.
+///
+/// As we are in the HSV space, we can just isolate saturation
+/// channel. The original idea of Millet is to build histogram bound
+/// to 256 for the saturation. If a great percentage (95%) of the
+/// population are under a threshold (100), then the image has got low
+/// saturation. So, it is b/w image. Low saturation is sometimes
+/// redundant with the achromatism test but not every time.
+
+// call low_saturation(input_rgb8, achromatism_mask, 100, 95.0)
+void low_saturation(mln::image2d<mln::value::hsv_f> input_hsvf,
+ mln::image2d<bool> achromatism_mask,
+ mln::value::int_u8 threshold,
+ float percentage)
+{
+ typedef mln::value::hsv_f t_hsvf;
+ typedef mln::value::hsv_f::s_type t_sat;
+ typedef mln::fun::v2v::component<t_hsvf,1> t_component_s;
+
+ mln::image2d<t_sat> map;
+ mln::image2d<mln::value::int_u8> view;
+ mln::image2d<bool> mask;
+ mln::image1d<unsigned> histo;
+ unsigned cnt1;
+ unsigned cnt2;
+ float prop;
+ bool result;
+
+
+ map = mln::data::transform(input_hsvf, t_component_s());
+ view = mln::data::stretch(mln::value::int_u8(), map);
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(),
+ view|(mln::pw::value(achromatism_mask) == true));
+ prop = (100.0 * (cnt2 - cnt1) / cnt2);
+ result = (prop > percentage);
+
+ std::cout << "Saturation" << std::endl;
+
+ cnt1 = count_histo(histo | mln::box1d(mln::point1d(0),mln::point1d(100)));
+ cnt2= mln::geom::nsites(achromatism_mask|
+ (mln::pw::value(achromatism_mask)==false));
+
+ std::ofstream txt_stream("saturation.txt");
+ txt_stream << "Saturation" << std::endl;
+
+ txt_stream << "Nbre pixels : " << cnt2 << std::endl;
+ txt_stream << "Nbre p faiblement saturés : " << cnt1 << std::endl;
+ txt_stream << "Pourcentage : " << prop << std::endl;
+ txt_stream << "Image faiblement saturé : " << result << std::endl;
+ txt_stream << std::endl;
+
+ txt_stream.flush();
+ txt_stream.close();
+
+ mln::io::pgm::save(view, "saturation.pgm");
+ mln::io::plot::save_image_sh(histo, "saturation.sh");
+ mln::io::pbm::save(mask, "saturation.pbm");
+}
+
+/* This is a classification of the ICDAR base in 3 modalities.
+// COLOR
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00032c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00042c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00076c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00082c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00142c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00215c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00228c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00234c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00248c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00252c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00253c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00255c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00259c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00271c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00290c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00293c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00304c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00307c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00376c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00411c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00419c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00447c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00498c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00510c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00550c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00573c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00589c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00592c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00597c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00599c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00600c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00031c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00034c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00043c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00063c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00065c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00072c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00081c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00083c_20p.ppm");
+
+// BLACK AND WHITE
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00329c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00036c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00037c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00039c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00040c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00049c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00055c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00057c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00068c_20p.ppm");
+
+
+// A LITTLE BIT OF COLOR
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00262c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00263c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00311c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00319c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00440c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00608c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00630c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00631c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00028c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00046c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00073c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00089c_20p.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/ta00090c_20p.ppm");
+*/
+
+
+/// \brief The main entry and the whole processing routine
+///
+/// This is the routine which works on Millet test. First compute the
+/// achromatic mask. Then build the transfer between RGB and HSV. Then
+/// isolate each channel to work on it. Each separate channel is bound
+/// between 0 and 255. Then keep only pixels low saturated (< 100 in S
+/// canal) in a specefic map. Build the 3 histograms without the
+/// achromatic pixels based on the 3 separated channels (H/S/V). Build the
+/// 3 maps (hue_concentration, low_saturation and achromatism). Then do
+/// the 3 tests of Millet with the thow thresolded pass (threshold,percentage).
+int main()
+{
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::value::hsv_f t_hsvf;
+ typedef mln::value::hsv_f::h_type t_hue;
+ typedef mln::value::hsv_f::s_type t_sat;
+ typedef mln::value::hsv_f::v_type t_val;
+ typedef mln::image2d<t_hue> t_image2d_hue;
+ typedef mln::image2d<t_sat> t_image2d_sat;
+ typedef mln::image2d<t_val> t_image2d_val;
+ typedef mln::image2d<t_hsvf> t_image2d_hsvf;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<float> t_image2d_float;
+ typedef mln::image1d<unsigned> t_histo1d;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::image2d<bool> t_mask;
+ typedef mln::fun::v2v::f_rgb_to_hsv_f_t t_rgb8_to_hsv;
+ typedef mln::accu::math::count<t_hsvf> t_count;
+ typedef mln::fun::v2v::component<t_hsvf,0> t_component_h;
+ typedef mln::fun::v2v::component<t_hsvf,1> t_component_s;
+ typedef mln::fun::v2v::component<t_hsvf,2> t_component_v;
+ typedef mln::fun::p2b::component_equals<t_image2d_hsvf,0> t_component_eq0;
+ typedef mln::fun::p2b::component_equals<t_image2d_hsvf,1> t_component_eq1;
+ typedef mln::fun::p2b::component_equals<t_image2d_hsvf,2> t_component_eq2;
+ typedef mln::fun::p2b::achromatic<t_rgb8> t_achromatic;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_hsvf input_hsvf;
+
+ t_mask achromatic;
+ t_mask low_saturation;
+
+ t_image2d_float achromatism1;
+ t_image2d_int_u8 achromatism2;
+ t_image2d_float hue_concentration1;
+ t_image2d_int_u8 hue_concentration2;
+
+ t_image2d_hue input_h;
+ t_image2d_hue input_h2;
+ t_image2d_sat input_s;
+ t_image2d_val input_v;
+
+ t_image2d_int_u8 input_h8;
+ t_image2d_int_u8 input_s8;
+ t_image2d_int_u8 input_v8;
+
+ t_histo1d histo_h;
+ t_histo1d histo_s;
+ t_histo1d histo_v;
+
+ unsigned cnt1;
+ unsigned cnt2;
+ float percentage;
+ bool result;
+
+
+
+ // IMAGE LOADING PHASE
+ std::cout << "Image loading phase ..." << std::endl;
+// mln::io::ppm::load(input_rgb8, ANNOTATING_1_BILL_IMG_PATH"/bill03.ppm");
+ mln::io::ppm::load(input_rgb8, ICDAR_20P_PPM_IMG_PATH"/mp00082c_20p.ppm");
+
+
+// achromatism(input_rgb8,7,99.0);
+// exit(-1);
+
+ // REPERAGE DES PIXELS ACHROMATICS
+ std::cout << "Init achromatic mask ..." << std::endl;
+ initialize(achromatic, input_rgb8);
+ mln::data::fill(achromatic, false);
+ mln::data::fill((achromatic | t_achromatic(input_rgb8, 0.03)).rw(), true);
+
+ mln::io::pbm::save(achromatic, "achromatic.pbm");
+
+ std::cout << "Achieve canal forking ..." << std::endl;
+ input_hsvf = mln::data::transform(input_rgb8, t_rgb8_to_hsv());
+ input_h = mln::data::transform(input_hsvf, t_component_h());
+ input_s = mln::data::transform(input_hsvf, t_component_s());
+ input_v = mln::data::transform(input_hsvf, t_component_v());
+
+ // quid of achromatic pixels ???
+ input_h8 = mln::data::stretch(t_int_u8(), input_h);
+ input_s8 = mln::data::stretch(t_int_u8(), input_s);
+ input_v8 = mln::data::stretch(t_int_u8(), input_v);
+
+ // IDENTIFY LOW SATURATED PIXELS
+ std::cout << "Init low saturation mask ..." << std::endl;
+ initialize(low_saturation, input_s8);
+ mln::data::fill(low_saturation, false);
+ mln::data::fill((low_saturation|(mln::pw::value(input_s8) <
+ mln::pw::cst(100u))).rw(), true);
+
+ mln::io::pbm::save(low_saturation, "low_saturation.pbm");
+
+ std::cout << "Compute histograms ..." << std::endl;
+ histo_h = mln::data::compute(mln::accu::meta::stat::histo1d(),
+ input_h8|(mln::pw::value(achromatic)==false));
+
+ histo_s = mln::data::compute(mln::accu::meta::stat::histo1d(),
+ input_s8|(mln::pw::value(achromatic)==false));
+
+ histo_v = mln::data::compute(mln::accu::meta::stat::histo1d(),
+ input_v8|(mln::pw::value(achromatic)==false));
+
+
+ // Study the maps
+ hue_concentration1=mln::data::transform(input_h,
+ mln::fun::v2v::hue_concentration(histo_h));
+ achromatism1=mln::data::transform(input_rgb8,mln::fun::v2v::achromatism());
+
+ hue_concentration2= mln::data::stretch(t_int_u8(), hue_concentration1);
+ achromatism2= mln::data::stretch(t_int_u8(), achromatism1);
+
+ mln::io::pgm::save(achromatism2, "achromatism_map.pgm");
+ mln::io::pgm::save(hue_concentration2, "hue_concentration_map.pgm");
+ mln::io::pgm::save(input_s8, "saturation_map.pgm");
+
+// cnt1 = mln::data::compute(t_count(),
+// (input_hsvf|t_component_eq0(input_hsvf,-1)).rw());
+
+
+ // (I) ACHROMATISM
+ std::cout << "Achromatism" << std::endl;
+ cnt1 = count_histo(histo_h);
+ cnt2 = mln::geom::nsites(input_h);
+
+ percentage = (100.0 * (cnt2 - cnt1) / cnt2);
+ result = percentage > 99.0;
+
+ std::cout << "Nbre pixels : " << cnt2 << std::endl;
+ std::cout << "Nbre pixels achromatiques : " << (cnt2-cnt1)<< std::endl;
+ std::cout << "Percentage : " << percentage << std::endl;
+ std::cout << "Image achromatique : " << result << std::endl;
+ std::cout << std::endl;
+
+ // (II) LOW SATURATION
+ std::cout << "Saturation" << std::endl;
+
+ cnt1 = count_histo(histo_s | mln::box1d(mln::point1d(0),mln::point1d(100)));
+
+ cnt2= mln::geom::nsites(achromatic | (mln::pw::value(achromatic)==false));
+
+ percentage = (100.0 * cnt1 / cnt2);
+ result = percentage > 95.0;
+
+ std::cout << "Nbre pixels : " << cnt2 << std::endl;
+ std::cout << "Nbre p faiblement saturés : " << cnt1 << std::endl;
+ std::cout << "Percentage : " << percentage << std::endl;
+ std::cout << "Image faiblement saturé : " << result << std::endl;
+ std::cout << std::endl;
+
+ // (III) HIGH HUE CONCENTRATION
+ mln::debug::println(histo_h);
+ unsigned peak = peak_histo(histo_h);
+
+ cnt1 = count_histo(histo_h | mln::box1d(mln::point1d(peak-20),
+ mln::point1d(peak+20)));
+
+ cnt2= count_histo(histo_h);
+
+ percentage = (100.0 * cnt1 / cnt2);
+ result = percentage > 95.0;
+
+ std::cout << "Position du pic : " << peak << std::endl;
+ std::cout << "Nbre pixels : " << cnt2 << std::endl;
+ std::cout << "Nbre pixels proches pic : " << cnt1 << std::endl;
+ std::cout << "Percentage : " << percentage << std::endl;
+ std::cout << "Image fortement teintée : " << result << std::endl;
+ std::cout << std::endl;
+
+ return 0;
+}
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/lep/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/lep/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/lep/lep.cc b/scribo/sandbox/green/demo/annotating/lep/lep.cc
new file mode 100644
index 0000000..981a369
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/lep/lep.cc
@@ -0,0 +1,127 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet LEP descriptor [millet.phd.2008.pdf]
+///
+/// This is an image descriptor. It works on grey level image. First,
+/// Sobel is applied on the image. Then a specific window is build to
+/// be convolved on the image. The aim of the convolution is to mark
+/// the configuration of the neighbouring for this thresholded image.
+/// Histogram of the configuration is then created and that's all.
+
+#include <iostream>
+
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/binarization/threshold.hh>
+
+#include <mln/core/alias/w_window2d_int.hh>
+#include <mln/core/image/image2d.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/convert.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/fun/v2v/rgb8_to_rgbn.hh>
+
+#include <mln/img_path.hh>
+
+#include <mln/io/pgm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/linear/ch_convolve.hh>
+#include <mln/linear/convolve.hh>
+#include <mln/linear/sobel_2d.hh>
+
+#include <mln/make/w_window2d.hh>
+
+#include <mln/value/rgb.hh>
+#include <mln/value/rgb8.hh>
+#include <mln/value/int_u8.hh>
+
+#include <mln/core/var.hh>
+
+/// \brief Main entry.
+///
+/// Load the pgm image. Threshold it. Identifie the pixel
+/// configuration with specific convolution filter. Build 1d histogram.
+
+int main()
+{
+ using namespace mln;
+
+ typedef mln::w_window2d_int t_win2d;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::value::int_u<9> t_int_u9;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::image2d<t_int_u9> t_image2d_int_u9;
+ typedef mln::image2d<int> t_image2d_int;
+ typedef mln::image2d<unsigned> t_image2d_unsigned;
+ typedef mln::image2d<float> t_image2d_float;
+ typedef mln::image2d<double> t_image2d_double;
+ typedef mln::image2d<bool> t_image2d_bool;
+ typedef mln::image1d<unsigned> t_histo1d;
+ typedef mln::accu::meta::stat::histo1d t_histo1d_fun;
+
+ t_image2d_int_u8 input_int_u8;
+ t_image2d_int input_int;
+ t_image2d_unsigned input_unsigned;
+ t_image2d_float sobel;
+ t_image2d_bool thresh_bool;
+ t_image2d_int_u8 thresh_int_u8;
+ t_image2d_float conf_float;
+ t_image2d_int_u9 conf_int_u9;
+ t_histo1d histo;
+
+ // IMAGE LOADING PHASE
+ std::cout << "Image loading phase ..." << std::endl;
+ mln::io::pgm::load(input_int_u8,ICDAR_50P_PGM_IMG_PATH"/mp00082c_50p.pgm");
+
+ sobel = mln::linear::sobel_2d_l1_norm(input_int_u8);
+
+ //mln::io::plot::save_image_sh(sobel, "sobel.sh");
+ thresh_bool = mln::binarization::threshold(sobel, 100);
+ thresh_int_u8 = mln::data::convert(mln::value::int_u8(), thresh_bool);
+ //mln::io::plot::save_image_sh(thresh, "thresh.sh");
+
+ int ws[] = { 1, 2, 4,
+ 8, 256, 16,
+ 32, 64, 128 };
+
+ t_win2d win2d = mln::make::w_window2d(ws);
+ conf_float = mln::linear::convolve(thresh_int_u8, win2d);
+ conf_int_u9 = mln::data::convert(t_int_u9(), conf_float);
+ histo = mln::data::compute(t_histo1d_fun(), conf_int_u9);
+
+ mln::io::plot::save_image_sh(histo, "histo.sh");
+
+ // PRINTING PHASE
+ mln::debug::println(histo);
+}
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/nb_color/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/nb_color/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/nb_color/nb_color.cc b/scribo/sandbox/green/demo/annotating/nb_color/nb_color.cc
new file mode 100644
index 0000000..acc64e9
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/nb_color/nb_color.cc
@@ -0,0 +1,143 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Compute the number of colors in an image.
+///
+/// Build histogram of colors and count the bins different from zero.
+
+#include <iostream>
+#include <sstream>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/math/sum.hh>
+#include <mln/accu/math/count.hh>
+#include <mln/accu/stat/histo3d_rgb.hh>
+#include <mln/accu/stat/mean.hh>
+#include <mln/accu/stat/variance.hh>
+
+#include <mln/algebra/vec.hh>
+
+#include <mln/arith/diff_abs.hh>
+
+#include <mln/core/macros.hh>
+#include <mln/core/alias/neighb3d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/image3d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+#include <mln/core/routine/initialize.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/fill.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/fun/v2v/rgb8_to_rgbn.hh>
+
+#include <mln/io/pgm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/ppm/load.hh>
+#include <mln/io/ppm/save.hh>
+
+#include <mln/labeling/regional_maxima.hh>
+#include <mln/labeling/mean_values.hh>
+#include <mln/labeling/compute.hh>
+
+#include <mln/literal/colors.hh>
+
+#include <mln/morpho/opening/volume.hh>
+#include <mln/morpho/elementary/dilation.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/pw/cst.hh>
+
+#include <mln/util/array.hh>
+#include <mln/util/timer.hh>
+
+#include <mln/value/label_8.hh>
+#include <mln/value/rgb8.hh>
+#include <mln/value/rgb.hh>
+#include <mln/value/int_u.hh>
+
+/// \brief Count the colors.
+///
+/// \param[in] image the name of the image to process.
+///
+/// \return the number of colors.
+///
+/// Count the color by building histogram. Quantification is done to
+/// reduce the size of the histogram.
+///
+/// \fixme: Strange compilation warning, I don't know how to solve it!
+
+// n < 8, n is the degree of quantification
+template <unsigned n>
+unsigned count_image_color(const std::string& image)
+{
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::rgb<n> t_rgbn;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_rgbn> t_image2d_rgbn;
+ typedef mln::image3d<unsigned> t_histo3d;
+ typedef mln::fun::v2v::rgb8_to_rgbn<n> t_rgb8_to_rgbn;
+ typedef mln::accu::meta::stat::histo3d_rgb t_histo3d_fun;
+ typedef mln::accu::meta::math::count t_count_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_rgbn input_rgbn;
+ t_image2d_rgbn output_rgbn;
+ t_histo3d histo;
+ t_histo3d opened;
+
+ mln::io::ppm::load(input_rgb8, image.c_str());
+
+// unsigned nb_pixel = input_rgb8.ncols() * input_rgb8.nrows();
+// unsigned min_volume = (unsigned)(nb_pixel * 0.054);
+ unsigned nb_color = 0;
+
+ input_rgbn = mln::data::transform(input_rgb8, t_rgb8_to_rgbn());
+ histo = mln::data::compute(t_histo3d_fun(), input_rgbn);
+ nb_color = mln::data::compute(t_count_fun(),
+ (histo | (mln::pw::value(histo) != 0)).rw());
+
+ return nb_color;
+}
+
+
+/// \brief Main entry.
+///
+/// Print the number of colors.
+int main()
+{
+ unsigned val=count_image_color<8>(ANNOTATING_1_PHOTO_IMG_PATH "/photo01.ppm");
+
+ std::cout << "nb color : " << val << std::endl;
+
+ return 0;
+}
+
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/project/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/project/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/project/project.cc b/scribo/sandbox/green/demo/annotating/project/project.cc
new file mode 100644
index 0000000..4cab73c
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/project/project.cc
@@ -0,0 +1,275 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet PROJECT descriptor [millet.phd.2008.pdf]
+///
+/// This is an image descriptor. It works a grey level image. First,
+/// we make subsampling of the image to the size 100x100. Then Sobel
+/// is applied. After that, we divide the image in 2 sub-images with
+/// horizontal or vertical splitting. Projection (summing along a
+/// direction) is done in a way that preserves a vector of size
+/// 100. Finally, it results 4 vector of size 100 which are concatened
+/// to build the descriptor.
+
+#include <iostream>
+#include <sstream>
+
+#include <mln/accu/image/init.hh>
+#include <mln/accu/image/take.hh>
+#include <mln/accu/image/to_result.hh>
+#include <mln/accu/stat/mean.hh>
+
+#include <mln/binarization/threshold.hh>
+
+#include <mln/core/alias/box2d.hh>
+#include <mln/core/alias/point2d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+#include <mln/core/routine/initialize.hh>
+#include <mln/core/image/dmorph/unproject_image.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/convert.hh>
+#include <mln/data/paste.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/fun/v2v/projection.hh>
+
+#include <mln/img_path.hh>
+
+#include <mln/io/pgm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/pbm/save.hh>
+
+#include <mln/linear/sobel_2d.hh>
+
+#include <mln/opt/at.hh>
+
+/// \brief get the sub-image name.
+///
+/// \param[in] base the common part of the name.
+/// \param[in] i the column.
+/// \param[in] j the line.
+///
+/// \result the complete name of the sub-image.
+///
+/// This function builds the complete name of a sub-image by making
+/// explicit its position in the array.
+const char *get_name(const char *base, const unsigned i, const unsigned j)
+{
+ std::ostringstream name;
+
+ name << base;
+ name << i;
+ name << "_";
+ name << j;
+ name << ".ppm";
+
+ return name.str().c_str();
+}
+
+
+/// \brief Project row data.
+///
+/// \param[in] img the binary image converted to u_int8.
+///
+/// \ return a vector.
+///
+/// This routine "eats" one dimension of the image by making a
+/// projection. The projection sums the pixel along a specific
+/// direction. It results a vector.
+mln::image1d<mln::value::int_u8>
+project_row(const mln::image2d<mln::value::int_u8>& img)
+{
+ typedef mln::accu::math::sum<mln::value::int_u8,mln::value::int_u8> t_sum;
+ typedef mln::fun::v2v::projection<mln::point2d,0> t_projection;
+
+ mln::image1d<t_sum> img_accu(img.ncols());
+
+ mln::accu::image::init(img_accu);
+
+ mln::accu::image::take(unproject(img_accu,
+ img.domain(),
+ t_projection()).rw(),
+ img);
+
+ return mln::accu::image::to_result(img_accu);
+}
+
+
+/// \brief Project column data.
+///
+/// \param[in] img the binary image converted to u_int8.
+///
+/// \ return a vector.
+///
+/// This routine "eats" one dimension of the image by making a
+/// projection. The projection sums the pixel along a specific
+/// direction. It results a vector.
+mln::image1d<mln::value::int_u8>
+project_col(const mln::image2d<mln::value::int_u8>& img)
+{
+ typedef mln::accu::math::sum<mln::value::int_u8,mln::value::int_u8> t_sum;
+ typedef mln::fun::v2v::projection<mln::point2d,1> t_projection;
+
+ mln::image1d<t_sum> img_accu(img.nrows());
+
+ mln::accu::image::init(img_accu);
+
+ mln::accu::image::take(unproject(img_accu,
+ img.domain(),
+ t_projection()).rw(),
+ img);
+
+ return mln::accu::image::to_result(img_accu);
+}
+
+
+/// \brief The image processing routine.
+///
+/// Describe the processing chain. First subsample the input image to
+/// 100x100. This is done by splitting the image and then compute the
+/// mean of the subimage. The result is a pixel of the subsample
+/// image. Then apply Sobel and threshold. Then split in two
+/// (vertically or horizontally), it results 4 images. Finally, make
+/// the projection.
+int main()
+{
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::algebra::vec<3,float> t_vec3f;
+ typedef mln::algebra::vec<3,unsigned> t_vec3u;
+ typedef mln::image2d<float> t_image2d_float;
+ typedef mln::image2d<bool> t_image2d_bool;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::accu::meta::stat::mean t_mean_fun;
+ typedef mln::accu::math::sum<t_int_u8,t_int_u8> t_sum;
+ typedef mln::image1d<t_int_u8> t_image1d_int_u8;
+
+ t_image2d_int_u8 input_int_u8;
+ t_image2d_float sobel;
+ t_image2d_bool thresh_bool;
+ t_image2d_int_u8 thresh_int_u8;
+
+ // IMAGE LOADING PHASE
+ std::cout << "Image loading phase ..." << std::endl;
+ mln::io::pgm::load(input_int_u8,ICDAR_50P_PGM_IMG_PATH"/mp00082c_50p.pgm");
+
+
+ // IMAGE SPLITTING PHASE
+ t_image2d_int_u8 subimg_int_u8(mln::box2d(mln::point2d(0,0),
+ mln::point2d(100,100)));
+
+ mln::box2d domain = input_int_u8.domain();
+ mln::point2d pmin = domain.pmin();
+ mln::point2d pmax = domain.pmax();
+
+ unsigned sz_row = (pmax.row() - pmin.row())/ 100;
+ unsigned sz_col = (pmax.col() - pmin.col())/ 100;
+
+ std::cout << domain << std::endl;
+
+ // Subsampling in 100x100
+ // FIXME Test that is it a subsampling, not a upsampling!
+ for (unsigned i = 0; i < 100; ++i)
+ for (unsigned j = 0; j < 100; ++j)
+ {
+ mln::point2d min(pmin.row()+sz_row*i,pmin.col()+sz_col*j);
+ mln::point2d max(pmin.row()+sz_row*(i+1),pmin.col()+sz_col*(j+1));
+ mln::box2d dom(min,max);
+
+ std::cout << dom << std::endl;
+
+ // Save it
+ t_image2d_int_u8 input_part_int_u8(dom);
+
+ mln::data::paste(input_int_u8 | dom, input_part_int_u8);
+ //mln::io::pgm::save(input_part_int_u8, get_name("output",i,j));
+ float mean = mln::data::compute(t_mean_fun(), input_part_int_u8);
+ t_int_u8 val = static_cast<t_int_u8>(mean);
+ mln::opt::at(subimg_int_u8, i,j) = val;
+ }
+
+ mln::io::pgm::save(subimg_int_u8, "subimg.pgm");
+
+ sobel = mln::linear::sobel_2d_l1_norm(subimg_int_u8);
+ thresh_bool = mln::binarization::threshold(sobel, 100);
+ thresh_int_u8 = mln::data::convert(t_int_u8(), thresh_bool);
+
+ mln::io::pbm::save(thresh_bool, "subimg.pbm");
+
+ // Define img_up, img_down, img_left, img_right
+ t_image2d_int_u8 img_up(mln::box2d(mln::point2d(0,0),
+ mln::point2d(49,99)));
+
+ mln::data::paste(thresh_int_u8 | img_up.domain(), img_up);
+
+
+ t_image2d_int_u8 img_down(mln::box2d(mln::point2d(50,0),
+ mln::point2d(99,99)));
+
+ mln::data::paste(thresh_int_u8 | img_down.domain(), img_down);
+
+ t_image2d_int_u8 img_left(mln::box2d(mln::point2d(0,0),
+ mln::point2d(99,49)));
+
+ mln::data::paste(thresh_int_u8 | img_left.domain(), img_left);
+
+
+ t_image2d_int_u8 img_right(mln::box2d(mln::point2d(0,50),
+ mln::point2d(99,99)));
+
+ mln::data::paste(thresh_int_u8 | img_right.domain(), img_right);
+
+
+ // Define project_up, project_down, project_left, project_right
+ t_image1d_int_u8 project_up = project_row(img_up);
+ t_image1d_int_u8 project_down = project_row(img_down);
+ t_image1d_int_u8 project_left = project_col(img_left);
+ t_image1d_int_u8 project_right = project_col(img_right);
+
+ mln::io::pgm::save(img_up, "up.pgm");
+ mln::io::pgm::save(img_down, "down.pgm");
+ mln::io::pgm::save(img_left, "left.pgm");
+ mln::io::pgm::save(img_right, "right.pgm");
+
+ // PRINTING PHASE
+
+ std::cout << std::endl << "UP" << std::endl;
+ mln::debug::println(project_up);
+
+ std::cout << std::endl << "DOWN" << std::endl;
+ mln::debug::println(project_down);
+
+ std::cout << std::endl << "LEFT" << std::endl;
+ mln::debug::println(project_left);
+
+ std::cout << std::endl << "RIGHT" << std::endl;
+ mln::debug::println(project_right);
+}
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/rgb_64/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/rgb_64/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/rgb_64/rgb_64.cc b/scribo/sandbox/green/demo/annotating/rgb_64/rgb_64.cc
new file mode 100644
index 0000000..b49f979
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/rgb_64/rgb_64.cc
@@ -0,0 +1,80 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet RGB-64 descriptor [millet.phd.2008.pdf]
+///
+/// This is an image descriptor. It works by making 2 bits
+/// quantification on each channel. It result a processing in RGB-64
+/// space. Then we build the color histogram.
+
+#include <iostream>
+
+#include <mln/accu/stat/histo3d_rgb.hh>
+
+#include <mln/core/image/image2d.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/fun/v2v/rgb8_to_rgbn.hh>
+
+#include <mln/img_path.hh>
+
+#include <mln/io/ppm/load.hh>
+
+#include <mln/value/rgb.hh>
+#include <mln/value/rgb8.hh>
+
+/// \brief Main entry.
+///
+/// Loading, Quantifiying in two bits each channel, then building
+/// color histogram.
+int main()
+{
+ typedef mln::fun::v2v::rgb8_to_rgbn<2> t_rgb8_to_rgb2;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::rgb<2> t_rgb2;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_rgb2> t_image2d_rgb2;
+ typedef mln::image3d<unsigned> t_histo3d;
+ typedef mln::accu::meta::stat::histo3d_rgb t_histo3d_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_rgb2 input_rgb2;
+ t_histo3d histo;
+
+ // IMAGE LOADING PHASE
+ std::cout << "Image loading phase ..." << std::endl;
+ mln::io::ppm::load(input_rgb8, ICDAR_50P_PPM_IMG_PATH"/mp00082c_50p.ppm");
+ input_rgb2 = mln::data::transform(input_rgb8, t_rgb8_to_rgb2());
+ histo = mln::data::compute(t_histo3d_fun(), input_rgb2);
+
+ // PRINTING PHASE
+ mln::debug::println(histo);
+}
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/rgb_64_9/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/rgb_64_9/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/rgb_64_9/rgb_64_9.cc b/scribo/sandbox/green/demo/annotating/rgb_64_9/rgb_64_9.cc
new file mode 100644
index 0000000..355cbfd
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/rgb_64_9/rgb_64_9.cc
@@ -0,0 +1,132 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet RGB-64 descriptor [millet.phd.2008.pdf]
+///
+/// This is an image descriptor. It works by making 2 bits
+/// quantification on each channel. It result a processing in RGB-64
+/// space. Then we build the color histogram.
+
+#include <iostream>
+#include <sstream>
+
+#include <mln/accu/stat/histo3d_rgb.hh>
+
+#include <mln/core/alias/box2d.hh>
+#include <mln/core/alias/point2d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+#include <mln/core/routine/initialize.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/paste.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/fun/v2v/rgb8_to_rgbn.hh>
+
+#include <mln/img_path.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/ppm/save.hh>
+
+#include <mln/value/rgb.hh>
+#include <mln/value/rgb8.hh>
+
+/// \brief Get the sub image name.
+///
+/// \return the name of the ith/jth sub image of the array.
+const char *get_name(const char *base, const unsigned i, const unsigned j)
+{
+ std::ostringstream name;
+
+ name << base;
+ name << i;
+ name << "_";
+ name << j;
+ name << ".ppm";
+
+ return name.str().c_str();
+}
+
+/// \brief Same code as rgb-64 but divide the wall image in nine.
+///
+/// Adding a splitting phase for image rgb-64 code reference.
+int main()
+{
+ typedef mln::fun::v2v::rgb8_to_rgbn<2> t_rgb8_to_rgb2;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::rgb<2> t_rgb2;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_rgb2> t_image2d_rgb2;
+ typedef mln::image3d<unsigned> t_histo3d;
+ typedef mln::accu::meta::stat::histo3d_rgb t_histo3d_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_rgb2 input_rgb2;
+ t_histo3d histo;
+
+ // IMAGE LOADING PHASE
+ std::cout << "Image loading phase ..." << std::endl;
+ mln::io::ppm::load(input_rgb8, ICDAR_50P_PPM_IMG_PATH"/mp00082c_50p.ppm");
+
+ input_rgb2 = mln::data::transform(input_rgb8, t_rgb8_to_rgb2());
+
+ // IMAGE SPLITTING PHASE
+ mln::box2d domain = input_rgb2.domain();
+ mln::point2d pmin = domain.pmin();
+ mln::point2d pmax = domain.pmax();
+
+ unsigned sz_row = (pmax.row() - pmin.row())/ 3;
+ unsigned sz_col = (pmax.col() - pmin.col())/ 3;
+
+ std::cout << domain << std::endl;
+
+ // Divide the domain in nine sub-domains.
+ for (unsigned i = 0; i < 3; ++i)
+ for (unsigned j = 0; j < 3; ++j)
+ {
+ mln::point2d min(pmin.row()+sz_row*i,pmin.col()+sz_col*j);
+ mln::point2d max(pmin.row()+sz_row*(i+1),pmin.col()+sz_col*(j+1));
+ mln::box2d dom(min,max);
+
+ std::cout << dom << std::endl;
+
+ // Save it
+ t_image2d_rgb2 input_1o9_rgb2(dom);
+
+ mln::data::paste(input_rgb2 | dom, input_1o9_rgb2);
+ mln::io::ppm::save(input_1o9_rgb2, get_name("output",i,j));
+
+ histo = mln::data::compute(t_histo3d_fun(), input_1o9_rgb2);
+
+ // PRINTING PHASE
+ mln::debug::println(histo);
+ }
+
+}
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/stddev_color/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/stddev_color/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/stddev_color/stddev_color.cc b/scribo/sandbox/green/demo/annotating/stddev_color/stddev_color.cc
new file mode 100644
index 0000000..549834f
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/stddev_color/stddev_color.cc
@@ -0,0 +1,191 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet clipart detection [millet.phd.2008.pdf]
+///
+/// The aim of this descriptor is to recognize clipart. To do this, we
+/// assume that clipart have their histogram concentrated around their
+/// mode. This is particularly true if the clipart is design by hand,
+/// because a very small number of grey tones or colors are used to
+/// draw it. But sometimes, computer assists their creation and we can
+/// find some continuous set of tones and this artefact create noise
+/// for the detection technique describe bellow.
+
+#include <iostream>
+#include <sstream>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/max_site.hh>
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/core/macros.hh>
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/image3d.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/fill.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/fun/v2v/rgb8_to_int_u8.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/math/sqr.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/value/rgb8.hh>
+#include <mln/value/int_u.hh>
+
+
+
+/// \brief The R function of Millet
+///
+/// \param[in] p the position of the pic.
+/// \param[in] histo_p the histo value of the pic.
+/// \param[in] x the position of the element which we compute the contrib.
+/// \param[in] histo_x the histo value of that element.
+///
+/// \result the contribution of the element x.
+///
+/// This function compute the variance-like contribution of an element
+/// x linked to the pic of the histogram. In fact, every thing is like
+/// we compute a square distance-like between the element x and the
+/// pic in the normalized histogram. Notice that the normalized
+/// histogram is the histogram divide by the value of it's pic. So at
+/// the pic, the value equals 1. It's a current representation of the
+/// histogram in image processing, we can find it in gimp for exemple.
+float r(short p, unsigned histo_p, short x, unsigned histo_x)
+{
+ float result = mln::math::sqr(((float)histo_x / histo_p) * (x-p));
+
+ return result;
+}
+
+/// Brief compute the whole deviation of Millet
+///
+/// \param[in] image the input image to analyze.
+///
+/// \return the deviation.
+///
+/// The deviation uses the R function. It stats by finding the pic. If
+/// the pic is near the rigth border of the histo, compute the R
+/// function on the left neighbouring of the pic. If the pic is near
+/// the left border of the histo, compute the R function on the right
+/// neigbouring. Otherwise, compute the average of the right and left
+/// results. The selected neighbouring is composed of five pixels at
+/// the right or at the left of the pic. The detection of clipart
+/// assumes that the majority of the energy of the histogram is closed
+/// to the pic (five pixels around it).
+unsigned stddev_color(const std::string& image)
+{
+ typedef mln::point1d t_point1d;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::image1d<unsigned> t_histo1d;
+ typedef mln::fun::v2v::rgb8_to_int_u8 t_rgb8_to_int_u8;
+ typedef mln::accu::meta::stat::histo1d t_histo1d_fun;
+ typedef mln::accu::max_site<t_histo1d> t_max_site_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_int_u8 input_int_u8;
+ t_histo1d histo;
+ t_point1d max_site;
+
+ mln::io::ppm::load(input_rgb8, image.c_str());
+ input_int_u8 = mln::data::transform(input_rgb8, t_rgb8_to_int_u8());
+ histo = mln::data::compute(t_histo1d_fun(), input_int_u8);
+
+ mln::io::pgm::save(input_int_u8, "tmp.pgm");
+ mln::io::plot::save_image_sh(histo, "histo.sh");
+ mln::debug::println(histo);
+
+ // Find the peak of the histogram
+ unsigned v_max = mln::opt::at(histo, 0);
+ short p_max = 0;
+
+ mln_piter_(t_histo1d) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ // Compute the specific stddev
+
+ float stddev_low = 0.0;
+ float stddev_up = 0.0;
+ float stddev = 0.0;
+
+ if (250 > p_max)
+ for (short i = p_max+1; i < p_max+6; ++i)
+ stddev_up += r(p_max, mln::opt::at(histo,p_max),
+ i, mln::opt::at(histo,i));
+
+ if (5 < p_max)
+ for (short i = p_max-1; i > p_max-6; --i)
+ stddev_low += r(p_max, mln::opt::at(histo,p_max),
+ i, mln::opt::at(histo,i));
+
+ stddev = (250 < p_max)? stddev_low : (5 > p_max)? stddev_up :
+ (stddev_low + stddev_up)/2;
+
+ std::cout << "max_site : " << p_max << std::endl;
+ std::cout << "h(max_site) : " << v_max << std::endl;
+ std::cout << "stddev_up : " << stddev_up << std::endl;
+ std::cout << "stddev_low : " << stddev_low << std::endl;
+ std::cout << "stddev : " << stddev << std::endl;
+
+ return 0;
+}
+
+
+/// \brief Main entry.
+///
+/// Front end for image processing.
+int main()
+{
+// unsigned val = stdev_color(ANNOTATING_1_PHOTO_IMG_PATH "/photo01.ppm");
+ unsigned val = stddev_color(ANNOTATING_1_LOGO_IMG_PATH "/logo06.ppm");
+
+// std::cout << "nb color : " << val << std::endl;
+
+ return 0;
+}
+
diff --git a/scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am b/scribo/sandbox/green/demo/annotating/stddev_color_16/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
copy to scribo/sandbox/green/demo/annotating/stddev_color_16/Makefile.am
diff --git a/scribo/sandbox/green/demo/annotating/stddev_color_16/stddev_color_16.cc b/scribo/sandbox/green/demo/annotating/stddev_color_16/stddev_color_16.cc
new file mode 100644
index 0000000..98d94fd
--- /dev/null
+++ b/scribo/sandbox/green/demo/annotating/stddev_color_16/stddev_color_16.cc
@@ -0,0 +1,261 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet clipart detection [millet.phd.2008.pdf]
+///
+/// The aim of this descriptor is to recognize clipart. To do this, we
+/// assume that clipart have their histogram concentrated around their
+/// mode. This is particularly true if the clipart is design by hand,
+/// because a very small number of grey tones or colors are used to
+/// draw it. But sometimes, computer assists their creation and we can
+/// find some continuous set of tones and this artefact create noise
+/// for the detection technique describe bellow. When photographies
+/// has some large uniform border, the detection can fail. To improve
+/// the method, Millet decide to subdivise the image in 16 sub images
+/// on which it applies the test.
+#include <iostream>
+#include <sstream>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/max_site.hh>
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/core/macros.hh>
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/image3d.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/fill.hh>
+#include <mln/data/transform.hh>
+#include <mln/data/paste.hh>
+
+#include <mln/fun/v2v/rgb8_to_int_u8.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/math/sqr.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/value/rgb8.hh>
+#include <mln/value/int_u.hh>
+
+
+/// \brief The R function of Millet
+///
+/// \param[in] p the position of the pic.
+/// \param[in] histo_p the histo value of the pic.
+/// \param[in] x the position of the element which we compute the contrib.
+/// \param[in] histo_x the histo value of that element.
+///
+/// \result the contribution of the element x.
+///
+/// This function compute the variance-like contribution of an element
+/// x linked to the pic of the histogram. In fact, every thing is like
+/// we compute a square distance-like between the element x and the
+/// pic in the normalized histogram. Notice that the normalized
+/// histogram is the histogram divide by the value of it's pic. So at
+/// the pic, the value equals 1. It's a current representation of the
+/// histogram in image processing, we can find it in gimp for exemple.
+float r(short p, unsigned histo_p, short x, unsigned histo_x)
+{
+ float result = mln::math::sqr(((float)histo_x / histo_p) * (x-p));
+
+ return result;
+}
+
+/// Brief compute the whole deviation of Millet
+///
+/// \param[in] input_int_u8 the 8 bits input image to analyze.
+/// \param[in] name_histo the name of the output histogram.
+/// \param[in] name_image the name of the ouput sub image.
+///
+/// \return the deviation, but at this time nothing..
+///
+/// The deviation uses the R function. It stats by finding the pic. If
+/// the pic is near the rigth border of the histo, compute the R
+/// function on the left neighbouring of the pic. If the pic is near
+/// the left border of the histo, compute the R function on the right
+/// neigbouring. Otherwise, compute the average of the right and left
+/// results. The selected neighbouring is composed of five pixels at
+/// the right or at the left of the pic. The detection of clipart
+/// assumes that the majority of the energy of the histogram is closed
+/// to the pic (five pixels around it).
+unsigned stddev_color(mln::image2d<mln::value::int_u8> input_int_u8,
+ const char *name_histo,
+ const char *name_image)
+{
+ typedef mln::point1d t_point1d;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::image1d<unsigned> t_histo1d;
+ typedef mln::fun::v2v::rgb8_to_int_u8 t_rgb8_to_int_u8;
+ typedef mln::accu::meta::stat::histo1d t_histo1d_fun;
+ typedef mln::accu::max_site<t_histo1d> t_max_site_fun;
+
+ t_histo1d histo;
+
+ std::cout << "histo : " << name_histo << std::endl;
+ std::cout << "image : " << name_image << std::endl;
+
+ histo = mln::data::compute(t_histo1d_fun(), input_int_u8);
+
+ mln::io::pgm::save(input_int_u8, name_image);
+ mln::io::plot::save_image_sh(histo, name_histo);
+ mln::debug::println(histo);
+
+ // Find the peak of the histogram
+ unsigned v_max = mln::opt::at(histo, 0);
+ short p_max = 0;
+
+ mln_piter_(t_histo1d) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ // Compute the specific stddev
+
+ float stddev_low = 0.0;
+ float stddev_up = 0.0;
+ float stddev = 0.0;
+
+ if (250 > p_max)
+ for (short i = p_max+1; i < p_max+6; ++i)
+ stddev_up += r(p_max, mln::opt::at(histo,p_max),
+ i, mln::opt::at(histo,i));
+
+ if (5 < p_max)
+ for (short i = p_max-1; i > p_max-6; --i)
+ stddev_low += r(p_max, mln::opt::at(histo,p_max),
+ i, mln::opt::at(histo,i));
+
+ stddev = (250 < p_max)? stddev_low : (5 > p_max)? stddev_up :
+ (stddev_low + stddev_up)/2;
+
+ std::cout << "max_site : " << p_max << std::endl;
+ std::cout << "h(max_site) : " << v_max << std::endl;
+ std::cout << "stddev_up : " << stddev_up << std::endl;
+ std::cout << "stddev_low : " << stddev_low << std::endl;
+ std::cout << "stddev : " << stddev << std::endl;
+
+ return 0;
+}
+
+
+/// \brief Divide the image in 16 sub images.
+///
+/// \param[in] image the input image.
+///
+/// \result nothing.
+///
+/// Divive the input image in 16 by uniform and geometrical
+/// method. When a sub image is ready, call the stddev routine to show
+/// stats on it.
+unsigned stddev_color_16(const std::string& image)
+{
+ typedef mln::point1d t_point1d;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::image1d<unsigned> t_histo1d;
+ typedef mln::fun::v2v::rgb8_to_int_u8 t_rgb8_to_int_u8;
+ typedef mln::accu::meta::stat::histo1d t_histo1d_fun;
+ typedef mln::accu::max_site<t_histo1d> t_max_site_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_int_u8 input_int_u8;
+
+ mln::io::ppm::load(input_rgb8, image.c_str());
+ input_int_u8 = mln::data::transform(input_rgb8, t_rgb8_to_int_u8());
+
+ // IMAGE SPLITTING PHASE
+ mln::box2d domain = input_int_u8.domain();
+ mln::point2d pmin = domain.pmin();
+ mln::point2d pmax = domain.pmax();
+
+ unsigned sz_row = (pmax.row() - pmin.row())/ 4;
+ unsigned sz_col = (pmax.col() - pmin.col())/ 4;
+
+ std::cout << domain << std::endl;
+
+ // Divide the domain in nine sub-domains.
+ for (unsigned i = 0; i < 4; ++i)
+ for (unsigned j = 0; j < 4; ++j)
+ {
+ mln::point2d min(pmin.row()+sz_row*i,pmin.col()+sz_col*j);
+ mln::point2d max(pmin.row()+sz_row*(i+1),pmin.col()+sz_col*(j+1));
+ mln::box2d dom(min,max);
+
+ std::cout << dom << std::endl;
+
+ // Save it
+ t_image2d_int_u8 input_1o16_int_u8(dom);
+ std::ostringstream name_histo("");
+ std::ostringstream name_image("");
+
+ name_histo << "histo" << i << "_" << j << ".sh";
+ name_image << "image" << i << "_" << j << ".ppm";
+
+ mln::data::paste(input_int_u8 | dom, input_1o16_int_u8);
+
+ stddev_color(input_1o16_int_u8,
+ name_histo.str().c_str(),
+ name_image.str().c_str());
+ }
+
+ return 0;
+}
+
+
+/// \brief Main entry.
+///
+/// Just a front end for image processing routine.
+int main()
+{
+// unsigned val = stddev_color_16(ANNOTATING_1_PHOTO_IMG_PATH "/photo01.ppm");
+ unsigned val = stddev_color_16(ANNOTATING_1_LOGO_IMG_PATH "/logo06.ppm");
+
+// std::cout << "nb color : " << val << std::endl;
+
+ return 0;
+}
+
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/achromastism/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/achromastism/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/achromastism/achromastism.cc b/scribo/sandbox/green/exp/annotating/achromastism/achromastism.cc
new file mode 100644
index 0000000..3486b20
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/achromastism/achromastism.cc
@@ -0,0 +1,179 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+
+/// \file
+///
+/// \brief Implement the Millet achromatism operator [millet.phd.2008.pdf]
+///
+/// An image is said to be achromatic when have the RGB channel which
+/// are quite identicals.
+
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/stretch.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/math/max.hh>
+#include <mln/math/min.hh>
+
+#include <mln/geom/nsites.hh>
+
+#include <mln/fun/v2v/rgb_to_achromatism_map.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/value/rgb8.hh>
+
+
+/// \brief Sum all the bins of the histogram.
+///
+/// \param[in] img the histogram based on image.
+///
+/// \return the sum of the overall bins.
+///
+/// Sum evry bins and return the result.
+template <typename I>
+unsigned count_histo(const mln::Image<I>& img_)
+{
+ const I& img = exact(img_);
+
+ mln_precondition(img.is_valid());
+
+ unsigned result = 0;
+
+ mln_piter(I) p(img.domain());
+
+ for_all(p)
+ result += img(p);
+
+ return result;
+}
+
+/// \brief Decide if an image is achromatic or not [Millet].
+///
+/// \param[in] input the input image.
+/// \param[in] output the histogram of the achromatic map.
+/// \param[in] threshold the distance threshold used for equality.
+///
+/// This is an improving of the Millet test. The original test
+/// compares rgb values to each other and look at differences greater
+/// than the threshold. If the number of pixel that pass the test are
+/// greater than 99.0, then the image is declared achromatic. In fact,
+/// there is few variations between the three channels, so we can say
+/// that it is like a grey image. We can with no too distortions
+/// replace the color image by the grey one. The improving is in first
+/// creating a map of the difference. As we can't keep the free
+/// differences between channels, we look at reducing the test and we
+/// find an equivalent one based on the difference between minima
+/// channel value and the maxima channel value. After the map is
+/// ready, we make binarization with the threshold. Then we compute
+/// the histogram 1d for every pixels of the map that are greater the
+/// threshold. Then, we count pixels in the histogram and traduce the
+/// count in percentage to compare to the second threshold. Details
+/// are saved in files and printed in the screen.
+float achromatism_test(const std::string input,
+ const std::string output,
+ const unsigned threshold)
+
+{
+ typedef mln::fun::v2v::rgb_to_achromatism_map<8> t_rgb_to_achromatism_map;
+
+ mln::image2d<mln::value::rgb8> input_rgb8;
+ mln::image2d<mln::value::int_u8> map;
+ mln::image1d<unsigned> histo;
+ unsigned cnt1;
+ unsigned cnt2;
+ float prop;
+
+ mln::io::ppm::load(input_rgb8, input.c_str());
+
+ map = mln::data::transform(input_rgb8, t_rgb_to_achromatism_map());
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(), map);
+ cnt1 = count_histo(histo | mln::box1d(mln::point1d(0),
+ mln::point1d(threshold)));
+ cnt2 = mln::geom::nsites(input_rgb8);
+ prop = ((100.0 * cnt1) / cnt2);
+
+ mln::io::plot::save_image_sh(histo, output.c_str());
+
+ return prop;
+}
+
+
+/// \brief The main entry.
+///
+/// Deal with boost library for walking over image database
+/// directories. Call the image processing routine and compute some
+/// stats on the result.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+ t_path full_path[] = {t_path(ICDAR_20P_PPM_IMG_PATH)};
+
+ for (int i = 0; i < 1; ++i)
+ {
+ std::cout << "entering " << full_path[i] << std::endl;
+
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ float prop = 0.0;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ // concatenation de chaine
+ t_path directory(ANNOTATING_RET_PATH);
+ t_path leaf = dir_iter->path().leaf();
+ t_path output = change_extension(directory / leaf, ".sh");
+
+ prop = achromatism_test(dir_iter->path().string(),
+ output.string(),
+ 11);
+
+ std::cout << output << " : " << prop << std::endl;
+ std::cerr << output << " : " << prop << std::endl;
+ }
+ }
+ }
+
+ return 0;
+}
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-color.txt b/scribo/sandbox/green/exp/annotating/achromastism/text-color.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-color.txt
copy to scribo/sandbox/green/exp/annotating/achromastism/text-color.txt
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-img.txt b/scribo/sandbox/green/exp/annotating/achromastism/text-img.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-img.txt
copy to scribo/sandbox/green/exp/annotating/achromastism/text-img.txt
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-only.txt b/scribo/sandbox/green/exp/annotating/achromastism/text-only.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-only.txt
copy to scribo/sandbox/green/exp/annotating/achromastism/text-only.txt
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/bench/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/bench/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/bench/bench.cc b/scribo/sandbox/green/exp/annotating/bench/bench.cc
new file mode 100644
index 0000000..102a896
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/bench/bench.cc
@@ -0,0 +1,1450 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// This file is the final work to differentiate between the two image
+/// databases AFP and ICDAR. Several tests are used to show
+/// improvement of detection. The jonathan's tests are put together to
+/// compare them to the others (in fact, to the low saturation one).
+
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/algebra/vec.hh>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/stat/mean.hh>
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/arith/minus.hh>
+#include <mln/arith/times.hh>
+#include <mln/arith/diff_abs.hh>
+#include <mln/arith/div.hh>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+#include <mln/core/alias/point1d.hh>
+#include <mln/core/alias/box1d.hh>
+
+#include <mln/data/transform.hh>
+#include <mln/data/compute.hh>
+#include <mln/data/convert.hh>
+#include <mln/data/stretch.hh>
+#include <mln/data/fill.hh>
+
+#include <mln/fun/v2v/component.hh>
+#include <mln/fun/v2v/rgb_to_hue_map.hh>
+#include <mln/fun/v2v/rgb_to_saturation_map.hh>
+#include <mln/fun/v2v/rgb_to_value_map.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/literal/zero.hh>
+
+#include <mln/math/ceil.hh>
+#include <mln/math/floor.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/trait/value_.hh>
+
+#include <mln/value/rgb8.hh>
+
+
+#include <mln/value/int_u8.hh>
+
+/// Histogram part.
+///
+/// We regroup here the routines that work on histogram, count_histo,
+/// sum_frequency_histo, peak_histo, count_null_frequency_histo,
+/// cmp_equi_frequency_histo and others (variance
+/// operators). count_histo and sum_frequency_histo count the overall
+/// frequency in the domain. peak_histo find the peak of the
+/// histogram. count_null_frequency_histo compute the number of non
+/// grey levels. cmp_equi_frequency_histo compare a histogram with
+/// the one with the same frequency everywhere.
+/// \{
+template <typename I>
+mln_value(I) count_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) result = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ result += histo(p);
+
+ return result;
+}
+
+
+template <typename I>
+mln_value(I) sum_frequency_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) sum = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ sum += histo(p);
+
+ return sum;
+}
+
+
+template <typename I>
+mln_coord(mln_site_(I)) peak_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the peak of the histogram
+ mln_value(I) v_max = mln::opt::at(histo, mln::literal::zero);
+ mln_coord(mln_site_(I)) p_max = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ return p_max;
+}
+
+template <typename I>
+mln_value(I) count_null_frequency_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) count = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ if (0 == histo(p))
+ count++;
+
+ return count;
+}
+
+template <typename I>
+float cmp_equi_frequency_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ float sum = 0;
+ float var = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum ++;
+ var += mln::math::sqr(histo(p) - (1/256.0));
+ }
+
+ var = var / sum;
+
+ return var;
+}
+
+template <typename I>
+mln_value(I) cnt_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) sum = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum += histo(p);
+ }
+
+ return sum;
+}
+
+template <typename I>
+mln_value(I) sum_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ pos = p.ind();
+ sum += pos*histo(p);
+ }
+
+ return sum;
+}
+
+template <typename I>
+mln_value(I) avg_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_value(I) cnt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ pos = p.ind();
+ cnt += histo(p);
+ sum += pos*histo(p);
+ }
+
+ return (0 == cnt)? 0 : sum/cnt;
+}
+
+template <typename I>
+mln_value(I) var3_histo(const mln::Image<I>& histo_, float mean)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_value(I) cnt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ cnt += histo(p);
+ sum += (mln::math::sqr(p.ind()-mean)*histo(p));
+ }
+
+ return (0 == cnt)? 0 : sum/cnt;
+}
+
+template <typename I>
+mln_value(I) var2_histo(const mln::Image<I>& histo_, float mean)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_value(I) sqr = mln::literal::zero;
+ mln_value(I) cnt = mln::literal::zero;
+ mln_value(I) dlt = mln::literal::zero;
+ mln_value(I) mxt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ pos = p.ind();
+ cnt += (histo(p));
+ sum += (histo(p)*pos);
+ mxt += (histo(p)*pos*mean);
+ sqr += (histo(p)*mln::math::sqr(pos));
+ dlt += (histo(p)*mln::math::sqr(pos - mean));
+
+ std::cout << "p = " << pos << std::endl;
+ std::cout << "p² = " << mln::math::sqr(pos) << std::endl;
+ std::cout << "p*mean = " << (pos*mean) << std::endl;
+ std::cout << "p-mean = " << (pos-mean) << std::endl;
+ std::cout << "(p-mean)² = " << mln::math::sqr(pos-mean) << std::endl;
+ std::cout << "histo(p) = " << histo(p) << std::endl;
+ std::cout << "histo(p)*p = " << (pos*histo(p)) << std::endl;
+ std::cout << "histo(p)*p²= " << (mln::math::sqr(pos)*histo(p))
+ << std::endl;
+ std::cout << "cnt = " << cnt << std::endl;
+ std::cout << "sum = " << sum << std::endl;
+ std::cout << "sqr = " << sqr << std::endl;
+ std::cout << "dlt = " << dlt << std::endl;
+ std::cout << "mxt = " << mxt << std::endl;
+ std::cout << std::endl;
+ }
+
+ std::cout << "sqr/cnt = " << (sqr/cnt) << std::endl;
+ std::cout << "sum/cnt = " << (sum/cnt) << std::endl;
+ std::cout << "(sum/cnt)² = " << mln::math::sqr(sum/cnt) << std::endl;
+ std::cout << "dlt/cnt = " << dlt/cnt << std::endl;
+ std::cout << "mxt/cnt = " << mxt/cnt << std::endl;
+ std::cout << std::endl;
+
+ std::cout << "sqr = "
+ << (sqr) << std::endl;
+ std::cout << "dlt = "
+ << (dlt) << std::endl;
+ std::cout << "cnt*avg² = "
+ << (mln::math::sqr(sum/cnt)*cnt) << std::endl;
+ std::cout << "2*mxt = "
+ << (2*mxt) << std::endl;
+ std::cout << "sqr - cnt*avg² = "
+ << (sqr/cnt - mln::math::sqr(sum/cnt)) << std::endl;
+ std::cout << "(sqr -2*mxt + cnt*avg²) = "
+ << ((sqr - 2*mxt + mln::math::sqr(sum/cnt))/cnt) << std::endl;
+ std::cout << std::endl;
+ return (0 == cnt)? 0 : sqr/cnt - mln::math::sqr(sum/cnt);
+}
+
+template <typename I>
+mln_value(I) var_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_value(I) sqr = mln::literal::zero;
+ mln_value(I) cnt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ pos = p.ind();
+ cnt += (histo(p));
+ sum += (histo(p)*pos);
+ sqr += (histo(p)*mln::math::sqr(pos));
+ }
+
+ return (0 == cnt)? 0 : sqr/cnt - mln::math::sqr(sum/cnt);
+}
+
+template <typename I>
+mln_value(I) sqr_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) sum = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ sum += (mln::math::sqr(p.ind())*histo(p));
+
+ return sum;
+}
+/// \}
+
+
+/// \brief Millet Hue detector.
+///
+/// \param[in] histo the histogram image on which applying the detector.
+/// \param[in] threshold a way to adapt the test to the population.
+///
+/// \return the proportion of population that verify the hue detector.
+///
+/// This test is used for discrimination between black and white pictures and
+/// color ones. Some colored Black and white pictures have their energy near
+/// the peak.
+float hue1_descriptor(mln::image1d<unsigned> histo, const short threshold)
+{
+ float cnt1;
+ float cnt2;
+ float prop;
+ short peak;
+ mln::point1d inf;
+ mln::point1d sup;
+
+ peak = peak_histo(histo);
+ inf = mln::point1d(mln::math::max(0, peak-threshold));
+ sup = mln::point1d(mln::math::min(255, peak+threshold));
+ cnt1 = count_histo(histo|mln::box1d(inf,sup));
+ cnt2 = count_histo(histo);
+ prop = ((255.0 * cnt1) / cnt2);
+
+ return prop;
+}
+
+
+/// \brief Saturation detector.
+///
+/// \param[in] histo the histogram image on which applying the detector.
+/// \param[in] threshold a way to adapt the test to the population.
+///
+/// \return the proportion of population that verify the hue detector.
+///
+/// This test is used for discrimination between black and white pictures and
+/// color ones. Black and white pictures have their energy in the low saturation
+/// band.
+float sat1_descriptor(mln::image1d<unsigned> histo, const short threshold)
+{
+ float cnt1;
+ float cnt2;
+ float result;
+
+ cnt1 = count_histo(histo | mln::box1d(mln::point1d(0),
+ mln::point1d(threshold)));
+ cnt2 = count_histo(histo);
+ result = ((255.0 * cnt1) / cnt2);
+
+ return result;
+}
+
+
+/// \brief Counting grey levels descriptor.
+///
+/// \param[in] histo the histogram image on which applying the detector.
+///
+/// \return the number of grey levels.
+///
+/// This test aims at compute the number of grey levels. Photographies tends to
+/// use all the levels or many of them.
+float lvl0_descriptor(mln::image1d<unsigned> histo)
+{
+ float result;
+
+ // FIXME 255
+ result = 255-count_null_frequency_histo(histo);
+
+ return result;
+}
+
+
+/// \brief Density hue detector.
+///
+/// \param[in] histo the histogram image on which applying the detector.
+///
+/// \return the proportion of population that verify the hue detector.
+///
+/// This test works on density histogram and compare to the
+/// equi-frequency histogram. If the normalized histogram show a peak,
+/// it will differ from the reference density.
+float hue0_descriptor(mln::image1d<unsigned> histo)
+{
+ mln::image1d<float> histo_float;
+ float sum;
+ float result;
+
+ sum = sum_frequency_histo(histo);
+ histo_float = mln::data::convert(float(), histo) / sum;
+ result = cmp_equi_frequency_histo(histo_float);
+
+ return result*255;
+}
+
+
+/// \brief Density saturation detector.
+///
+/// \param[in] histo the histogram image on which applying the detector.
+///
+/// \return the proportion of population that verify the hue detector.
+///
+/// This test works on density histogram and compare to the
+/// equi-frequency histogram. If the normalized histogram show a peak,
+/// it will differ from the reference density.
+float sat0_descriptor(mln::image1d<unsigned> histo)
+{
+ mln::image1d<float> histo_float;
+ float sum;
+ float result;
+
+ sum = sum_frequency_histo(histo);
+ histo_float = mln::data::convert(float(), histo) / sum;
+ result = cmp_equi_frequency_histo(histo_float);
+
+ return result*255;
+}
+
+
+/// \brief Density value detector.
+///
+/// \param[in] histo the histogram image on which applying the detector.
+///
+/// \return the proportion of population that verify the hue detector.
+///
+/// This test works on density histogram and compare to the
+/// equi-frequency histogram. If the normalized histogram show a peak,
+/// it will differ from the reference density.
+float val0_descriptor(mln::image1d<unsigned> histo)
+{
+ mln::image1d<float> histo_float;
+ float sum;
+ float result;
+
+ sum = sum_frequency_histo(histo);
+ histo_float = mln::data::convert(float(), histo) / sum;
+ result = cmp_equi_frequency_histo(histo_float);
+
+ return result*255;
+}
+
+
+/// \brief The R function of Millet
+///
+/// \param[in] p the position of the pic.
+/// \param[in] histo_p the histo value of the pic.
+/// \param[in] x the position of the element which we compute the contrib.
+/// \param[in] histo_x the histo value of that element.
+///
+/// \result the contribution of the element x.
+///
+/// This function compute the variance-like contribution of an element
+/// x linked to the pic of the histogram. In fact, every thing is like
+/// we compute a square distance-like between the element x and the
+/// pic in the normalized histogram. Notice that the normalized
+/// histogram is the histogram divide by the value of it's pic. So at
+/// the pic, the value equals 1. It's a current representation of the
+/// histogram in image processing, we can find it in gimp for exemple.
+float r(short p, unsigned histo_p, short x, unsigned histo_x)
+{
+ float result = mln::math::sqr(((float)histo_x / histo_p) * (x-p));
+
+ return result;
+}
+
+/// \brief The stddev3 is an internal stuff.
+///
+/// \param[in] histo_ the image which represents the histogram.
+/// \param[in] peak the position of the histogram peak.
+///
+/// \return simple computing of deviation.
+///
+/// This is an internal stuff. It splits the computing for easy
+/// reusing practice. Sum the R contribution.
+template <typename I>
+float stddev3(const mln::Image<I>& histo_, unsigned peak)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Compute stddev
+
+ float stddev = 0.0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ stddev += r((short)peak, mln::opt::at(histo,peak), p.ind(), histo(p));
+ }
+
+ return stddev;
+}
+
+/// Brief compute the whole deviation of Millet
+///
+/// \param[in] image the input image to analyze.
+/// \param[in] peak the peak of the histogram.
+/// \param[in] limit the threshold to compute the contribution.
+///
+/// \return the deviation.
+///
+/// The deviation uses the R function. It stats by finding the pic. If
+/// the pic is near the rigth border of the histo, compute the R
+/// function on the left neighbouring of the pic. If the pic is near
+/// the left border of the histo, compute the R function on the right
+/// neigbouring. Otherwise, compute the average of the right and left
+/// results. The selected neighbouring is composed of five pixels at
+/// the right or at the left of the pic. The detection of clipart
+/// assumes that the majority of the energy of the histogram is closed
+/// to the pic (five pixels around it). The test is generalized by
+/// making constants as parameters.
+template <typename I>
+float stddev2(const mln::Image<I>& histo_, unsigned peak, unsigned limit)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ float stddev_low = 0.0;
+ float stddev_up = 0.0;
+ float ret = 0.0;
+
+ // A transformer avec des iterators
+
+ if (250 > peak)
+ stddev_up = stddev3(histo |mln::box1d(mln::point1d(peak+1),
+ mln::point1d(peak+limit)), peak);
+
+ if (5 < peak)
+ stddev_low = stddev3(histo |mln::box1d(mln::point1d(peak-limit),
+ mln::point1d(peak-1)), peak);
+
+ ret = (250 < peak)? stddev_low : (5 > peak)? stddev_up :
+ (stddev_low + stddev_up)/2;
+
+ return ret;
+}
+
+
+/// \brief Millet value descriptor (cf. Millet.phd.2008)
+///
+/// \param[in] histo the histogram image on which applying the detector.
+/// \param[in] threshold the limit where to compute the contribution.
+///
+/// \return the proportion of population that verify the hue detector.
+///
+/// This test aims at compute some deviation on the peak of the histogram of
+/// the image. Large deviations mean lots of graduation in colors (such as
+/// photos) and small ones mean something like cartoon.
+float val1_descriptor(mln::image1d<unsigned> histo, const short threshold)
+{
+ typedef mln::fun::v2v::rgb_to_value_map<8> t_rgb_to_value_map;
+
+ float result;
+ short peak;
+
+ peak = peak_histo(histo);
+ result = stddev2(histo, peak, threshold);
+
+ return result;
+}
+
+
+/// \brief Error detector (jonathan idea).
+///
+/// \param[in] r_img_map the original red channel.
+/// \param[in] g_img_map the original green channel.
+/// \param[in] b_img_map the original blue channel.
+/// \param[in] r_rdc_map the reduced (in color) red channel.
+/// \param[in] g_rdc_map the reduced (in color) green channel.
+/// \param[in] b_rdc_map the reduced (in color) blue channel.
+///
+/// \return the PNSNR (cf compression p278 Handbook Color).
+///
+/// \fixme the actual PNSNR is unbound, we need to fix its max to
+/// 255. Two images which are the same produces an infinite PNSNR.
+float err_descriptor(mln::image2d<mln::value::int_u8> r_img_map,
+ mln::image2d<mln::value::int_u8> g_img_map,
+ mln::image2d<mln::value::int_u8> b_img_map,
+ mln::image2d<mln::value::int_u8> r_rdc_map,
+ mln::image2d<mln::value::int_u8> g_rdc_map,
+ mln::image2d<mln::value::int_u8> b_rdc_map)
+
+
+{
+ typedef mln::accu::meta::stat::mean t_mean;
+ typedef mln::image2d<mln::value::int_u8> t_map;
+ typedef mln_trait_op_minus_(t_map,t_map) t_minus;
+ typedef mln_trait_op_times_(t_minus,t_minus) t_times;
+
+
+ t_minus minus_red;
+ t_minus minus_green;
+ t_minus minus_blue;
+
+ t_times times_red;
+ t_times times_green;
+ t_times times_blue;
+
+ float error_red;
+ float error_green;
+ float error_blue;
+
+ float error;
+
+ minus_red = (r_img_map - r_rdc_map);
+ times_red = minus_red * minus_red;
+
+ minus_green = (g_img_map - g_rdc_map);
+ times_green = minus_green * minus_green;
+
+ minus_blue = (b_img_map - b_rdc_map);
+ times_blue = minus_blue * minus_blue;
+
+ error_red = mln::data::compute(t_mean(), times_red);
+ error_green = mln::data::compute(t_mean(), times_green);
+ error_blue = mln::data::compute(t_mean(), times_blue);
+
+ error = (error_red + error_green + error_blue)/3.0;
+ error = mln::math::sqrt(error);
+ error = 20 * log(255/error);
+
+// FIXME:
+// SAME IMAGE PRODUCE PNSNR GOING THROW THE INFINITY.
+// DIFFERENT IMAGE PRODUCE PNSNR GOING NEAR ZERO.
+// WE SHOULD KEEP THE PNSNR BELOW 255 FOR COMPARAISON.
+
+ return error;
+}
+
+/// Discriminant operators.
+///
+/// We have some operators that compute the threshold which separate
+/// two sub-populations in a histogram.
+/// /{
+
+/// \brief Compute discrimination threshold.
+/// \param[in] avg1 the mean of the population 1.
+/// \param[in] var1 the variance of the population 1.
+/// \param[in] avg2 the mean of the population 2.
+/// \param[in] var2 the variance of the population 2.
+///
+/// \return the threshold to discriminate the two populations.
+///
+/// Linear discriminant analysis in 1d is done. When two population
+/// have the same variance, the threshold is at (m1+m2)/2. When threre
+/// are different variances, we propose the threshold at the position
+/// (m1*sqrt(v1)+m2*sqrt(v2))/(sqrt(v1)+sqrt(v2)).
+float threshold_histo(float avg1, float var1, float avg2, float var2)
+{
+ float sigma1 = mln::math::sqrt(var1);
+ float sigma2 = mln::math::sqrt(var2);
+ float threshold = (avg1*sigma1+avg2*sigma2)/(sigma1+sigma2);
+
+ return threshold;
+}
+
+/// \brief Compute discrimination threshold.
+/// \param[in] avg1 the mean of the population 1.
+/// \param[in] var1 the variance of the population 1.
+/// \param[in] avg2 the mean of the population 2.
+/// \param[in] var2 the variance of the population 2.
+///
+/// \return the threshold to discriminate the two populations.
+///
+/// Linear discriminant analysis in 1d is done. When two population
+/// have the same variance, the threshold is at (m1+m2)/2. When threre
+/// are different variances, we propose the threshold at the position
+/// (m1*var1+m2*var2)/(sqrt(v1)+sqrt(v2)).
+
+float threshold3_histo(float avg1, float var1, float avg2, float var2)
+{
+ float threshold = (avg1*var1+avg2*var2)/(var1+var2);
+
+ return threshold;
+}
+
+
+/// \brief Compute discrimination threshold.
+/// \param[in] avg1 the mean of the population 1.
+/// \param[in] var1 the variance of the population 1.
+/// \param[in] avg2 the mean of the population 2.
+/// \param[in] var2 the variance of the population 2.
+///
+/// \return the threshold to discriminate the two populations.
+///
+/// Gaussian discriminant analysis in 1d is done. Compute the
+/// discrimanation and solve the parabolic equation.
+float threshold2_histo(float avg1, float var1, float avg2, float var2)
+{
+ float a = var2 - var1;
+ float b = -2 * (avg1 * var2 - avg2 * var1);
+ float c = var2 * mln::math::sqr(avg1) - var1 * mln::math::sqr(avg2);
+ float d = mln::math::sqr(b) - 4 * a * c;
+
+ if (d < 0)
+ std::cout << "delta negatif" << std::endl;
+
+ float x1 = (-b+mln::math::sqrt(d))/(2*a);
+ float x2 = (-b-mln::math::sqrt(d))/(2*a);
+
+ std::cout << "a = " << a << std::endl;
+ std::cout << "b = " << b << std::endl;
+ std::cout << "c = " << c << std::endl;
+ std::cout << "d = " << d << std::endl;
+ std::cout << "x1 = " << x1 << std::endl;
+ std::cout << "x2 = " << x2 << std::endl;
+
+ return x2;
+}
+
+/// \brief Minimisation of the error.
+///
+/// \param[in] histo_grp1 the histogram of the first population.
+/// \param[in] histo_grp2 the histogram of the second population.
+///
+/// \return the threshold.
+///
+/// Computes the error and find the minimum error threshold. It's just
+/// a counting of element in four categories (0 - but detects 1, 1 -
+/// but detects 1, 1 but detects 0, 0 but detects 0). The error is the
+/// sum of missclassifications for the classes 0 and 1. As Otsu done,
+/// we can iterate on the threshold and compute the error associated
+/// to it. The bes threshold is the one that minimize the error.
+short min_error(const mln::image1d<float> histo_grp1,
+ const mln::image1d<float> histo_grp2,
+ float *_c00, float *_c10, float *_c01, float *_c11)
+{
+ float c00[256];
+ float c10[256];
+ float c01[256];
+ float c11[256];
+ float err[256];
+
+ for (short p = 0; p < 256; p++)
+ {
+ c00[p] = cnt_histo(histo_grp1|mln::box1d(mln::point1d(0),
+ mln::point1d(p)));
+
+ c10[p] = cnt_histo(histo_grp1|mln::box1d(mln::point1d(p+1),
+ mln::point1d(255)));
+
+ c01[p] = cnt_histo(histo_grp2|mln::box1d(mln::point1d(0),
+ mln::point1d(p)));
+
+ c11[p] = cnt_histo(histo_grp2|mln::box1d(mln::point1d(p+1),
+ mln::point1d(255)));
+ }
+
+ short threshold = 0;
+ float error = c01[0] + c01[0] + c00[0] + c11[0];
+
+ for(short p = 0; p < 256; p++)
+ {
+ err[p] = c10[p] + c01[p];
+
+// std::cout << " p = " << p
+// << ";c00 = " << c00[p]
+// << ";c10 = " << c10[p]
+// << ";c01 = " << c01[p]
+// << ";c11 = " << c11[p]
+// << std::endl;
+// std::cout << "err[" << p << "] = " << err[p] << std::endl;
+
+ if (error > err[p])
+ {
+ error = err[p];
+ threshold = p;
+ }
+ }
+
+ *_c00 = c00[threshold];
+ *_c10 = c10[threshold];
+ *_c01 = c01[threshold];
+ *_c11 = c11[threshold];
+
+ return threshold;
+}
+
+
+/// \brief Fisher analysis.
+///
+/// \param[in] histo the histogram of the mixed population.
+///
+/// \return the threshold.
+///
+/// This routine is less performant than the others because it starts
+/// with a mixed population, but we know exactly the two separated
+/// population. It was just a test. Don't take it in production
+/// environement, it doesn't help you.
+short fisher_analysis(const mln::image1d<float> histo)
+{
+ typedef mln::value::int_u8 t_int_u8;
+
+ // FIXE ME SIZE const short a = mln_min(t_int_u8);
+ // float cnt1[a];
+
+ float cnt1[256];
+ float sum1[256];
+ float sqr1[256];
+ float avg1[256];
+ float var1[256];
+
+ float cnt2[256];
+ float sum2[256];
+ float sqr2[256];
+ float avg2[256];
+ float var2[256];
+
+ float cnt0[256]; // count of points
+ float sum0[256]; // sum of population
+ float sqr0[256]; // sqr of population
+ float avg0[256]; // average of the population
+ float v_in[256]; // variance with-in class
+ float v_bw[256]; // variance between class
+ float var0[256]; // variance of the population
+ short threshold;
+ float pos;
+ float min_var;
+
+ // Assign the first elements
+ cnt1[0] = 0;
+ sum1[0] = 0;
+ sqr1[0] = 0;
+ avg1[0] = 0;
+ var1[0] = 0;
+
+ // Compute the stats of the wall histogram
+ cnt2[0] = 0;
+ sum2[0] = 0;
+ sqr2[0] = 0;
+
+ for(short p = 0; p < 256; p++)
+ {
+ pos = p;
+ cnt2[0] += mln::opt::at(histo,p);
+ sum2[0] += (pos * mln::opt::at(histo,p));
+ sqr2[0] += (mln::math::sqr(pos) * mln::opt::at(histo,p));
+ }
+
+ avg2[0] = (0 == cnt2[0])? 0 : sum2[0] / cnt2[0];
+ var2[0] = (0 == cnt2[0])? 0 : sqr2[0] / cnt2[0] - mln::math::sqr(avg2[0]);
+
+ // watch the array limits
+ for (short p = 1; p < 256; p++)
+ {
+ pos = p;
+
+ // Assign the statistics to the primary class
+ cnt1[p] = cnt1[p-1] + mln::opt::at(histo, p);
+ sum1[p] = sum1[p-1] + pos * mln::opt::at(histo, p);
+ sqr1[p] = sqr1[p-1] + mln::math::sqr(pos) * mln::opt::at(histo, p);
+ avg1[p] = (0 == cnt1[p])? 0 : (sum1[p] / cnt1[p]);
+ var1[p] = (0 == cnt1[p])? 0 : ((sqr1[p] / cnt1[p])-mln::math::sqr(avg1[p]));
+
+ // Assign the statistics to the second class
+ cnt2[p] = cnt2[p-1] - mln::opt::at(histo, p);;
+ sum2[p] = sum2[p-1] - p * mln::opt::at(histo, p);;
+ sqr2[p] = sqr2[p-1] - mln::math::sqr(p) * mln::opt::at(histo, p);;
+ avg2[p] = (0 == cnt2[p])? 0 : (sum2[p] / cnt2[p]);
+ var2[p] = (0 == cnt2[p])? 0 : ((sqr2[p] / cnt2[p])-mln::math::sqr(avg2[p]));
+
+ // Lets compute the invariants
+ cnt0[p] = cnt1[p] + cnt2[p];
+ sum0[p] = sum1[p] + sum2[p];
+ sqr0[p] = sqr1[p] + sqr2[p];
+ avg0[p] = (cnt1[p] * avg1[p] + cnt2[p] * avg2[p])/cnt0[p];
+ v_in[p] = (cnt1[p] * var1[p] + cnt2[p] * var2[p])/cnt0[p];
+ v_bw[p] = (cnt1[p] * mln::math::sqr(avg1[p]-avg0[p]) +
+ cnt2[p] * mln::math::sqr(avg2[p]-avg0[p]))/cnt0[p];
+ var0[p] = v_in[p] + v_bw[p];
+ }
+
+ // Find the threshold that minimizes the intra-class variance
+ min_var = cnt2[0]*var2[0];
+ threshold = 0;
+
+ for(short p = 0; p < 256; p++)
+ {
+ // Compute the intra-class variance
+ v_in[p] = cnt1[p]*var1[p] + cnt2[p]*var2[p];
+// std::cout << "var intra[" << p << "]= " << v_in[p] << std::endl;
+
+ if (min_var > v_in[p])
+ {
+ min_var = v_in[p];
+ threshold = p;
+ }
+ }
+
+ return threshold;
+}
+/// /}
+
+
+/// Launching part.
+///
+/// In this part, we have the front end that walk over the image
+/// databases and start to compute information that we pass to
+/// previous routines.
+/// \{
+
+#define LVL0_DESCR 0 // Number of grey available
+#define HUE0_DESCR 1 // Density histogram hue analysis
+#define HUE1_DESCR 2 // Millet Hue analysis
+#define SAT0_DESCR 3 // Density histogram saturation analysis
+#define SAT1_DESCR 4 // Millet saturation analysis
+#define VAL0_DESCR 5 // Density histogram grey level analysis
+#define VAL1_DESCR 6 // Millet grey level analysis
+#define GMP0_DESCR 7 // PNSNR with GIMP compression
+#define GMP1_DESCR 8 // PNSNR with GIMP compression
+#define GMP2_DESCR 9 // PNSNR with GIMP compression
+#define MGK0_DESCR 9 // PNSNR with ImageMagick compression
+#define MGK1_DESCR 10 // PNSNR with ImageMagick compression
+#define MGK2_DESCR 11 // PNSNR with ImageMagick compression
+
+#define MGK_DESCR(version) (MGK0_DESCR + version)
+#define GMP_DESCR(version) (GMP0_DESCR + version)
+
+#define NB_DESCR 12 // Number of descriptors
+#define NB_DATABASE 2 // Number of image databases : AFP,ICDAR
+#define NB_IMAGE 110 // Number of images
+#define NB_VERSION 3 // Number of compression by GIMP or ImageMagick
+
+/// \brief Make sure that the result is between 0 and 255.
+///
+/// \param[in] file_name the name of the analysis files.
+/// \param[in] result the values for each image and each descriptors.
+/// \param[in] size the number of image by each database.
+///
+/// Correct the descriptors if there is overflow values. Just used in
+/// debug mode.
+void init_descriptors(std::string file_name[],
+ float result[][NB_DESCR],
+ int size[])
+{
+ for (int i = 0; i < NB_IMAGE; i++)
+ {
+ file_name[i] = std::string("PGM");
+
+ for (int d = 0; d < NB_DESCR; d++)
+ result[i][d] = (i*d) % 256;
+ }
+
+ size[0] = 62;
+ size[1] = 48;
+}
+
+
+/// \brief Dump gnuplot file for vizualisation of results.
+///
+/// \param[in] file_name the name of the analysis files.
+/// \param[in] result the values for each image and each descriptors.
+/// \param[in] size the number of image by each database.
+///
+/// This routine aimed at plotting the result with one graph. Each
+/// database has got its color. We can see the values used by each
+/// descriptors along the image of each database.
+void dump_descriptors(const std::string file_name[],
+ const float result[][NB_DESCR],
+ const int size[])
+{
+ std::cout << "#!/usr/bin/gnuplot" << std::endl;
+ std::cout << "set terminal x11 persist 1" << std::endl;
+ std::cout << "plot '-' using 2 with point title 'ICDAR',\\" << std::endl;
+ std::cout << " '-' using 2 with point title 'AFP'" << std::endl;
+
+ int num = 0;
+
+ for (int db = 0; db < NB_DATABASE; db++)
+ {
+ for (int i = 0; i < size[db]; i++)
+ {
+ std::cout << result[num][LVL0_DESCR] << " ";
+ std::cout << result[num][HUE0_DESCR] << " ";
+ std::cout << result[num][HUE1_DESCR] << " ";
+ std::cout << result[num][SAT0_DESCR] << " ";
+ std::cout << result[num][SAT1_DESCR] << " ";
+ std::cout << result[num][VAL0_DESCR] << " ";
+ std::cout << result[num][VAL1_DESCR] << " ";
+ std::cout << result[num][GMP0_DESCR] << " ";
+ std::cout << result[num][GMP1_DESCR] << " ";
+ std::cout << result[num][GMP2_DESCR] << " ";
+ std::cout << result[num][MGK0_DESCR] << " ";
+ std::cout << result[num][MGK1_DESCR] << " ";
+ std::cout << result[num][MGK2_DESCR] << " ";
+ std::cout << " # " << file_name[num] << std::endl;
+ num++;
+ }
+
+ std::cout << "e" << std::endl;
+ }
+}
+
+
+/// \brief Compute the descriptor histograms for each database.
+///
+/// \param[in] result the result values of each descriptors.
+/// \param[in] size the number of images by database.
+/// \param[out] histo the computed histograms.
+///
+/// This routine compute a histograms for each database and each descriptors.
+/// So we can see the distribution of descriptor values over each database.
+/// Result values are transform from float to int for histograms.
+void compute_histo(const float result[][NB_DESCR],
+ const int size[],
+ mln::image1d<float> histo[][NB_DATABASE])
+{
+ for (int i = 0; i < NB_DESCR; i++)
+ for (int db = 0; db < NB_DATABASE; db++)
+ {
+ histo[i][db].init_(mln::box1d(mln::point1d(0),mln::point1d(255)));
+
+ mln::data::fill(histo[i][db], mln::literal::zero);
+ }
+
+ short v;
+ int num = 0;
+
+ for (int db = 0; db < NB_DATABASE; db++)
+ {
+ for (int i = 0; i < size[db]; i++)
+ {
+ v = (short)mln::math::floor(result[num][VAL0_DESCR]+0.4999);
+ mln::opt::at(histo[VAL0_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][LVL0_DESCR]+0.4999);
+ mln::opt::at(histo[LVL0_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][HUE0_DESCR]+0.4999);
+ mln::opt::at(histo[HUE0_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][HUE1_DESCR]+0.4999);
+ mln::opt::at(histo[HUE1_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][SAT0_DESCR]+0.4999);
+ mln::opt::at(histo[SAT0_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][SAT1_DESCR]+0.4999);
+ mln::opt::at(histo[SAT1_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][VAL1_DESCR]+0.4999);
+ mln::opt::at(histo[VAL1_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][GMP0_DESCR]+0.4999);
+ mln::opt::at(histo[GMP0_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][GMP1_DESCR]+0.4999);
+ mln::opt::at(histo[GMP1_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][GMP2_DESCR]+0.4999);
+ mln::opt::at(histo[GMP2_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][MGK0_DESCR]+0.4999);
+ mln::opt::at(histo[MGK0_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][MGK1_DESCR]+0.4999);
+ mln::opt::at(histo[MGK1_DESCR][db],v)++;
+
+ v = (short)mln::math::floor(result[num][MGK2_DESCR]+0.4999);
+ mln::opt::at(histo[MGK2_DESCR][db],v)++;
+
+ num++;
+ }
+ }
+}
+
+
+/// Compute the threshold for discrimination between ICDAR and AFP.
+///
+/// \param[in] histo the histogram for each descriptor and for each database.
+/// \param[out] threshold computed values to discriminate between ICDAR/AFP.
+/// \param[out] c00 say CLASS 1 but CLASS 1.
+/// \param[out] c10 say CLASS 2 but CLASS 1.
+/// \param[out] c01 say CLASS 1 but CLASS 2.
+/// \param[out] c11 say CLASS 2 but CLASS 2.
+///
+/// Compute the threshold by the minimum of error of
+/// classification. Population are inverted in function of average,
+/// technical solution to prevent min_error crashed. The bad thing is
+/// now, the class 0 can be either ICDAR of AFP, depends on descriptors.
+void compute_thresholds(const mln::image1d<float> histo[][NB_DATABASE],
+ short threshold[],
+ float c00[],
+ float c10[],
+ float c01[],
+ float c11[])
+{
+ for (int i = 0; i < NB_DESCR; i++)
+ {
+ float avg0 = avg_histo(histo[i][0]);
+ float avg1 = avg_histo(histo[i][1]);
+
+ if (avg0 < avg1)
+ {
+ threshold[i] = min_error(histo[i][0], histo[i][1],
+ &c00[i], &c10[i], &c01[i], &c11[i]);
+ }
+ else
+ {
+ threshold[i] = min_error(histo[i][1], histo[i][0],
+ &c00[i], &c10[i], &c01[i], &c11[i]);
+ }
+
+ std::cerr << " i = " << i
+ << "; c00 = " << c00[i]
+ << "; c10 = " << c10[i]
+ << "; c01 = " << c01[i]
+ << "; c11 = " << c11[i]
+ << "; threshold " << threshold[i]
+ << std::endl;
+
+ }
+}
+
+
+/// \brief Walk over the database directories.
+///
+/// \param[out] file_name the array of the image name.
+/// \param[out] result the descriptors values for each image.
+/// \param[out] size the number of image for each database.
+///
+/// This is the front end part to access to the database directories. We use
+/// boost library to do it. First we explore ICDAR database en then the AFP one.
+/// For each valid image, we compute all the descriptors. Histograms are
+/// computed at this level because we can do that thing one time for every
+/// density descriptors. Every parameters are updated to retrurn the values.
+void compute_descriptors(std::string file_name[],
+ float result[][NB_DESCR],
+ int size[])
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+ typedef mln::image1d<unsigned> t_histo;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::image2d<t_int_u8> t_map;
+ typedef mln::image2d<t_rgb8> t_input;
+ typedef mln::fun::v2v::rgb_to_hue_map<8> t_rgb_2_hue;
+ typedef mln::fun::v2v::rgb_to_saturation_map<8> t_rgb_2_sat;
+ typedef mln::fun::v2v::rgb_to_value_map<8> t_rgb_2_val;
+ typedef mln::fun::v2v::component<t_rgb8,0> t_rgb_2_red;
+ typedef mln::fun::v2v::component<t_rgb8,1> t_rgb_2_green;
+ typedef mln::fun::v2v::component<t_rgb8,2> t_rgb_2_blue;
+ typedef mln::accu::meta::stat::histo1d t_accu_histo;
+
+
+ t_path img_path[2] = { ICDAR_20P_INPUT_IMG_PATH, AFP_PPM_IMG_PATH};
+ t_path mgk_path[3][2] = {{ICDAR_20P_MGK30_IMG_PATH, AFP_MGK30_IMG_PATH},
+ {ICDAR_20P_MGK20_IMG_PATH, AFP_MGK20_IMG_PATH},
+ {ICDAR_20P_MGK10_IMG_PATH, AFP_MGK10_IMG_PATH}};
+ t_path gmp_path[3][2] = {{ICDAR_20P_GMP30_IMG_PATH, AFP_GMP30_IMG_PATH},
+ {ICDAR_20P_GMP20_IMG_PATH, AFP_GMP20_IMG_PATH},
+ {ICDAR_20P_GMP10_IMG_PATH, AFP_GMP10_IMG_PATH}};
+
+ int num = 0;
+ int cnt = 0;
+
+ for (int db = 0; db < NB_DATABASE; db++)
+ {
+ if (boost::filesystem::exists(img_path[db]) &&
+ boost::filesystem::is_directory(img_path[db]))
+ {
+ boost::filesystem::system_complete(img_path[db]);
+
+ const t_iter_path end_iter;
+
+ cnt = 0;
+
+ for (t_iter_path dir_iter(img_path[db]); end_iter != dir_iter; ++dir_iter)
+ {
+ t_path img_file = dir_iter->path().leaf();
+ t_path dir_file = dir_iter->path();
+ t_input img_input;
+
+ mln::io::ppm::load(img_input, dir_file.string().c_str());
+
+ t_map h_img_map = mln::data::transform(img_input, t_rgb_2_hue());
+ t_map s_img_map = mln::data::transform(img_input, t_rgb_2_sat());
+ t_map v_img_map = mln::data::transform(img_input, t_rgb_2_val());
+ t_map r_img_map = mln::data::transform(img_input, t_rgb_2_red());
+ t_map g_img_map = mln::data::transform(img_input, t_rgb_2_green());
+ t_map b_img_map = mln::data::transform(img_input, t_rgb_2_blue());
+ t_histo h_img_hst = mln::data::compute(t_accu_histo(), h_img_map);
+ t_histo s_img_hst = mln::data::compute(t_accu_histo(), s_img_map);
+ t_histo v_img_hst = mln::data::compute(t_accu_histo(), v_img_map);
+ t_histo r_img_hst = mln::data::compute(t_accu_histo(), r_img_map);
+ t_histo g_img_hst = mln::data::compute(t_accu_histo(), g_img_map);
+ t_histo b_img_hst = mln::data::compute(t_accu_histo(), b_img_map);
+
+ std::cerr << dir_iter->path() << std::endl;
+
+ file_name[num] = img_file.string();
+
+ // descriptors
+ result[num][LVL0_DESCR] = lvl0_descriptor(v_img_hst);
+ result[num][HUE0_DESCR] = hue0_descriptor(h_img_hst);
+ result[num][HUE1_DESCR] = hue1_descriptor(h_img_hst,20);
+ result[num][SAT0_DESCR] = sat0_descriptor(s_img_hst);
+ result[num][SAT1_DESCR] = sat1_descriptor(s_img_hst,50);
+ result[num][VAL0_DESCR] = val0_descriptor(v_img_hst);
+ //result[num][VAL1_DESCR] = val1_descriptor(v_img_hst, 15);
+ result[num][VAL1_DESCR] = 0;
+
+ // for gimp and magick
+ for (int v = 0; v < NB_VERSION; v++)
+ {
+ if (boost::filesystem::exists(mgk_path[v][db]) &&
+ boost::filesystem::exists(gmp_path[v][db]) &&
+ boost::filesystem::is_directory(mgk_path[v][db]) &&
+ boost::filesystem::is_directory(gmp_path[v][db]))
+ {
+ t_path mgk_file = mgk_path[v][db] / img_file;
+ t_path gmp_file = gmp_path[v][db] / img_file;
+ t_input gmp_input;
+
+ mln::io::ppm::load(gmp_input, gmp_file.string().c_str());
+
+ t_map r_gmp_map = mln::data::transform(gmp_input,t_rgb_2_red());
+ t_map g_gmp_map = mln::data::transform(gmp_input,t_rgb_2_green());
+ t_map b_gmp_map = mln::data::transform(gmp_input,t_rgb_2_blue());
+
+ result[num][GMP_DESCR(v)]= err_descriptor(r_img_map,
+ g_img_map,
+ b_img_map,
+ r_gmp_map,
+ g_gmp_map,
+ b_gmp_map);
+
+ t_input mgk_input;
+
+ mln::io::ppm::load(mgk_input, mgk_file.string().c_str());
+
+ t_map r_mgk_map = mln::data::transform(mgk_input,t_rgb_2_red());
+ t_map g_mgk_map = mln::data::transform(mgk_input,t_rgb_2_green());
+ t_map b_mgk_map = mln::data::transform(mgk_input,t_rgb_2_blue());
+
+ result[num][MGK_DESCR(v)]= err_descriptor(r_img_map,
+ g_img_map,
+ b_img_map,
+ r_mgk_map,
+ g_mgk_map,
+ b_mgk_map);
+ }
+ }
+
+ num++;
+ cnt++;
+ }
+ }
+
+ size[db] = cnt;
+ }
+}
+
+/// \brief Just for debugging purpose and tests.
+int main2()
+{
+ typedef mln::image1d<unsigned> t_histo;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::image2d<t_int_u8> t_map;
+ typedef mln::image2d<t_rgb8> t_input;
+ typedef mln::fun::v2v::rgb_to_hue_map<8> t_rgb_2_hue;
+ typedef mln::fun::v2v::rgb_to_saturation_map<8> t_rgb_2_sat;
+ typedef mln::fun::v2v::rgb_to_value_map<8> t_rgb_2_val;
+ typedef mln::fun::v2v::component<t_rgb8,0> t_rgb_2_red;
+ typedef mln::fun::v2v::component<t_rgb8,1> t_rgb_2_green;
+ typedef mln::fun::v2v::component<t_rgb8,2> t_rgb_2_blue;
+ typedef mln::accu::meta::stat::histo1d t_accu_histo;
+
+ t_input img_input;
+
+ mln::io::ppm::load(img_input, ICDAR_20P_INPUT_IMG_PATH"/mp00032c_20p.ppm");
+ //mln::io::ppm::load(img_input, AFP_PPM_IMG_PATH"/000_Del218430.ppm");
+
+
+
+ t_map h_img_map = mln::data::transform(img_input, t_rgb_2_hue());
+ t_map s_img_map = mln::data::transform(img_input, t_rgb_2_sat());
+ t_map v_img_map = mln::data::transform(img_input, t_rgb_2_val());
+ t_map r_img_map = mln::data::transform(img_input, t_rgb_2_red());
+ t_map g_img_map = mln::data::transform(img_input, t_rgb_2_green());
+ t_map b_img_map = mln::data::transform(img_input, t_rgb_2_blue());
+ t_histo h_img_hst = mln::data::compute(t_accu_histo(), h_img_map);
+ t_histo s_img_hst = mln::data::compute(t_accu_histo(), s_img_map);
+ t_histo v_img_hst = mln::data::compute(t_accu_histo(), v_img_map);
+ t_histo r_img_hst = mln::data::compute(t_accu_histo(), r_img_map);
+ t_histo g_img_hst = mln::data::compute(t_accu_histo(), g_img_map);
+ t_histo b_img_hst = mln::data::compute(t_accu_histo(), b_img_map);
+
+
+ std::cout << "sat2 : " << sat0_descriptor(s_img_hst) << std::endl;
+
+ return 0;
+}
+
+
+/// \brief Main entry.
+///
+/// This is the front end for every routines.
+/// - compute descriptors.
+/// - dump descriptors.
+/// - compute histograms.
+/// - compute thresholds.
+/// - save results.
+///
+/// Global data used:
+/// - file_name : all the initial images name, mixed every image database.
+/// - result : all the result values for every descriptors and for every images.
+/// - histo : the histograms ny database and by descriptors.
+/// - size : the number of image by database.
+/// - threshold : the computed histogram separation on each descriptors.
+/// - cxx : the count of well/bad classified images function of threshold info.
+int main()
+{
+ std::string file_name[NB_IMAGE];
+ float result[NB_IMAGE][NB_DESCR];
+ int size[NB_DATABASE];
+ mln::image1d<float> histo[NB_DESCR][NB_DATABASE];
+ short threshold[NB_DESCR];
+ float c00[NB_DESCR];
+ float c10[NB_DESCR];
+ float c01[NB_DESCR];
+ float c11[NB_DESCR];
+
+ std::cerr << "DESCRIPTORS" << std::endl;
+ compute_descriptors(file_name,result,size);
+// std::cout << "DUMPING" << std::endl;
+// init_descriptors(file_name,result,size);
+ dump_descriptors(file_name,result,size);
+ std::cerr << "HISTO" << std::endl;
+ compute_histo(result,size,histo);
+ std::cerr << "THRESHOLD" << std::endl;
+ compute_thresholds(histo,threshold,c00,c10,c01,c11);
+
+ mln::io::plot::save_image_sh(histo[LVL0_DESCR][0], "lvl0_histo1.sh");
+ mln::io::plot::save_image_sh(histo[HUE0_DESCR][0], "hue0_histo1.sh");
+ mln::io::plot::save_image_sh(histo[HUE1_DESCR][0], "hue1_histo1.sh");
+ mln::io::plot::save_image_sh(histo[SAT0_DESCR][0], "sat0_histo1.sh");
+ mln::io::plot::save_image_sh(histo[SAT1_DESCR][0], "sat1_histo1.sh");
+ mln::io::plot::save_image_sh(histo[VAL0_DESCR][0], "val0_histo1.sh");
+ mln::io::plot::save_image_sh(histo[VAL1_DESCR][0], "val1_histo1.sh");
+ mln::io::plot::save_image_sh(histo[GMP0_DESCR][0], "gmp0_histo1.sh");
+ mln::io::plot::save_image_sh(histo[GMP1_DESCR][0], "gmp1_histo1.sh");
+ mln::io::plot::save_image_sh(histo[GMP2_DESCR][0], "gmp2_histo1.sh");
+ mln::io::plot::save_image_sh(histo[MGK0_DESCR][0], "mgk0_histo1.sh");
+ mln::io::plot::save_image_sh(histo[MGK1_DESCR][0], "mgk1_histo1.sh");
+ mln::io::plot::save_image_sh(histo[MGK2_DESCR][0], "mgk2_histo1.sh");
+
+ mln::io::plot::save_image_sh(histo[LVL0_DESCR][1], "lvl0_histo2.sh");
+ mln::io::plot::save_image_sh(histo[HUE0_DESCR][1], "hue0_histo2.sh");
+ mln::io::plot::save_image_sh(histo[HUE1_DESCR][1], "hue1_histo2.sh");
+ mln::io::plot::save_image_sh(histo[SAT0_DESCR][1], "sat0_histo2.sh");
+ mln::io::plot::save_image_sh(histo[SAT1_DESCR][1], "sat1_histo2.sh");
+ mln::io::plot::save_image_sh(histo[VAL0_DESCR][1], "val0_histo2.sh");
+ mln::io::plot::save_image_sh(histo[VAL1_DESCR][1], "val1_histo2.sh");
+ mln::io::plot::save_image_sh(histo[GMP0_DESCR][1], "gmp0_histo2.sh");
+ mln::io::plot::save_image_sh(histo[GMP1_DESCR][1], "gmp1_histo2.sh");
+ mln::io::plot::save_image_sh(histo[GMP2_DESCR][1], "gmp2_histo2.sh");
+ mln::io::plot::save_image_sh(histo[MGK0_DESCR][1], "mgk0_histo2.sh");
+ mln::io::plot::save_image_sh(histo[MGK1_DESCR][1], "mgk1_histo2.sh");
+ mln::io::plot::save_image_sh(histo[MGK2_DESCR][1], "mgk2_histo2.sh");
+
+ return 0;
+}
+/// \}
+
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/error/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/error/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/error/error.cc b/scribo/sandbox/green/exp/annotating/error/error.cc
new file mode 100644
index 0000000..949b51b
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/error/error.cc
@@ -0,0 +1,833 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// This file is a prelude just before using the bench source. It puts
+/// the light on the Jonathan's idea which wants to compare ICDAR and
+/// AFP image database with difference between original image and
+/// color reducted one. The key point is to say that when a color
+/// image is degraded, the visual quality fall quickly in function of
+/// the number of colors left. A contrario, when an image is black and
+/// white, this kind of degradation doesn't change the original visual
+/// quality. The PNSNR detector is build and learning threshold for
+/// automatic classification is done (four algorithms are tested).
+
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/algebra/vec.hh>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/stat/mean.hh>
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/arith/minus.hh>
+#include <mln/arith/times.hh>
+#include <mln/arith/diff_abs.hh>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+#include <mln/core/alias/point1d.hh>
+#include <mln/core/alias/box1d.hh>
+
+#include <mln/data/transform.hh>
+#include <mln/data/compute.hh>
+#include <mln/data/stretch.hh>
+#include <mln/data/fill.hh>
+
+#include <mln/fun/v2v/component.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/literal/zero.hh>
+
+#include <mln/math/ceil.hh>
+#include <mln/math/floor.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/trait/value_.hh>
+
+#include <mln/value/rgb8.hh>
+#include <mln/value/int_u8.hh>
+
+/// Work on histogram.
+/// \brief Different routines are presented for computing mean, variance ...
+/// \{
+
+/// \brief Counting the number of pixels in the histogram.
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the number of pixels in the histogram.
+///
+/// Such routine is a generic and is generally applied on a portion of
+/// the real domain.
+template <typename I>
+mln_value(I) cnt_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) sum = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum += histo(p);
+ }
+
+ return sum;
+}
+
+/// \brief Summing the values ponderated by their occurences.
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the sum ponderated of values by their occurences.
+///
+/// This method is not a production routine, it's just a test to debug
+/// histogram problem. When we compute something over the histogram,
+/// we need to take care of the intermediate type that contains the
+/// temporary result. If not the case, the type used is the one of the
+/// value of the histogram and we can go to some overflow
+/// problems. The trick is to store the value returned by the iterator
+/// in some temporary computing type (look at pos in the code).
+template <typename I>
+mln_value(I) sum_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ pos = p.ind();
+ sum += pos*histo(p);
+ }
+
+ return sum;
+}
+
+/// \brief Summing the values ponderated by their occurences.
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the sum ponderated of values by their occurences.
+template <typename I>
+mln_value(I) avg_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_value(I) cnt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ pos = p.ind();
+ cnt += histo(p);
+ sum += pos*histo(p);
+ }
+
+ return (0 == cnt)? 0 : sum/cnt;
+}
+
+/// \brief Computing the variance
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the variance of the histogram.
+///
+/// This computing is safe because the quantity of information stored
+/// in sum is low. This formulae doesn't show the overflow problem.
+template <typename I>
+mln_value(I) var3_histo(const mln::Image<I>& histo_, float mean)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_value(I) cnt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ cnt += histo(p);
+ sum += (mln::math::sqr(p.ind()-mean)*histo(p));
+ }
+
+ return (0 == cnt)? 0 : sum/cnt;
+}
+
+/// \brief Computing the variance
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the variance of the histogram.
+///
+/// This is the debugging code to observe overflow problem.
+template <typename I>
+mln_value(I) var2_histo(const mln::Image<I>& histo_, float mean)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_value(I) sqr = mln::literal::zero;
+ mln_value(I) cnt = mln::literal::zero;
+ mln_value(I) dlt = mln::literal::zero;
+ mln_value(I) mxt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ pos = p.ind();
+ cnt += (histo(p));
+ sum += (histo(p)*pos);
+ mxt += (histo(p)*pos*mean);
+ sqr += (histo(p)*mln::math::sqr(pos));
+ dlt += (histo(p)*mln::math::sqr(pos - mean));
+
+ std::cout << "p = " << pos << std::endl;
+ std::cout << "p² = " << mln::math::sqr(pos) << std::endl;
+ std::cout << "p*mean = " << (pos*mean) << std::endl;
+ std::cout << "p-mean = " << (pos-mean) << std::endl;
+ std::cout << "(p-mean)² = " << mln::math::sqr(pos-mean) << std::endl;
+ std::cout << "histo(p) = " << histo(p) << std::endl;
+ std::cout << "histo(p)*p = " << (pos*histo(p)) << std::endl;
+ std::cout << "histo(p)*p²= " << (mln::math::sqr(pos)*histo(p))
+ << std::endl;
+ std::cout << "cnt = " << cnt << std::endl;
+ std::cout << "sum = " << sum << std::endl;
+ std::cout << "sqr = " << sqr << std::endl;
+ std::cout << "dlt = " << dlt << std::endl;
+ std::cout << "mxt = " << mxt << std::endl;
+ std::cout << std::endl;
+ }
+
+ std::cout << "sqr/cnt = " << (sqr/cnt) << std::endl;
+ std::cout << "sum/cnt = " << (sum/cnt) << std::endl;
+ std::cout << "(sum/cnt)² = " << mln::math::sqr(sum/cnt) << std::endl;
+ std::cout << "dlt/cnt = " << dlt/cnt << std::endl;
+ std::cout << "mxt/cnt = " << mxt/cnt << std::endl;
+ std::cout << std::endl;
+
+ std::cout << "sqr = "
+ << (sqr) << std::endl;
+ std::cout << "dlt = "
+ << (dlt) << std::endl;
+ std::cout << "cnt*avg² = "
+ << (mln::math::sqr(sum/cnt)*cnt) << std::endl;
+ std::cout << "2*mxt = "
+ << (2*mxt) << std::endl;
+ std::cout << "sqr - cnt*avg² = "
+ << (sqr/cnt - mln::math::sqr(sum/cnt)) << std::endl;
+ std::cout << "(sqr -2*mxt + cnt*avg²) = "
+ << ((sqr - 2*mxt + mln::math::sqr(sum/cnt))/cnt) << std::endl;
+ std::cout << std::endl;
+ return (0 == cnt)? 0 : sqr/cnt - mln::math::sqr(sum/cnt);
+}
+
+/// \brief Computing the variance
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the variance of the histogram.
+///
+/// My standard code for the variance.
+template <typename I>
+mln_value(I) var_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) pos = mln::literal::zero;
+ mln_value(I) sum = mln::literal::zero;
+ mln_value(I) sqr = mln::literal::zero;
+ mln_value(I) cnt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ pos = p.ind();
+ cnt += (histo(p));
+ sum += (histo(p)*pos);
+ sqr += (histo(p)*mln::math::sqr(pos));
+ }
+
+ return (0 == cnt)? 0 : sqr/cnt - mln::math::sqr(sum/cnt);
+}
+/// \}
+
+
+/// Classify.
+/// \brief Classification routines that compute threshold.
+/// \{
+
+/// \brief Compute discrimination threshold.
+/// \param[in] avg1 the mean of the population 1.
+/// \param[in] var1 the variance of the population 1.
+/// \param[in] avg2 the mean of the population 2.
+/// \param[in] var2 the variance of the population 2.
+///
+/// \return the threshold to discriminate the two populations.
+///
+/// Linear discriminant analysis in 1d is done. When two population
+/// have the same variance, the threshold is at (m1+m2)/2. When threre
+/// are different variances, we propose the threshold at the position
+/// (m1*sqrt(v1)+m2*sqrt(v2))/(sqrt(v1)+sqrt(v2)).
+float threshold_histo(float avg1, float var1, float avg2, float var2)
+{
+ float sigma1 = mln::math::sqrt(var1);
+ float sigma2 = mln::math::sqrt(var2);
+ float threshold = (avg1*sigma1+avg2*sigma2)/(sigma1+sigma2);
+
+ return threshold;
+}
+
+/// \brief Compute discrimination threshold.
+/// \param[in] avg1 the mean of the population 1.
+/// \param[in] var1 the variance of the population 1.
+/// \param[in] avg2 the mean of the population 2.
+/// \param[in] var2 the variance of the population 2.
+///
+/// \return the threshold to discriminate the two populations.
+///
+/// Linear discriminant analysis in 1d is done. When two population
+/// have the same variance, the threshold is at (m1+m2)/2. When threre
+/// are different variances, we propose the threshold at the position
+/// (m1*var1+m2*var2)/(sqrt(v1)+sqrt(v2)).
+float threshold3_histo(float avg1, float var1, float avg2, float var2)
+{
+ float threshold = (avg1*var1+avg2*var2)/(var1+var2);
+
+ return threshold;
+}
+
+
+
+/// \brief Compute discrimination threshold.
+/// \param[in] avg1 the mean of the population 1.
+/// \param[in] var1 the variance of the population 1.
+/// \param[in] avg2 the mean of the population 2.
+/// \param[in] var2 the variance of the population 2.
+///
+/// \return the threshold to discriminate the two populations.
+///
+/// Gaussian discriminant analysis in 1d is done. Compute the
+/// discrimanation and solve the parabolic equation.
+float threshold2_histo(float avg1, float var1, float avg2, float var2)
+{
+ float a = var2 - var1;
+ float b = -2 * (avg1 * var2 - avg2 * var1);
+ float c = var2 * mln::math::sqr(avg1) - var1 * mln::math::sqr(avg2);
+ float d = mln::math::sqr(b) - 4 * a * c;
+
+ if (d < 0)
+ std::cout << "delta negatif" << std::endl;
+
+ float x1 = (-b+mln::math::sqrt(d))/(2*a);
+ float x2 = (-b-mln::math::sqrt(d))/(2*a);
+
+ std::cout << "a = " << a << std::endl;
+ std::cout << "b = " << b << std::endl;
+ std::cout << "c = " << c << std::endl;
+ std::cout << "d = " << d << std::endl;
+ std::cout << "x1 = " << x1 << std::endl;
+ std::cout << "x2 = " << x2 << std::endl;
+
+ return x2;
+}
+
+/// \brief Compute the other proportion of histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the ponderated sum of the sqrt values.
+///
+/// This is a test. Don't take this routine in production.
+template <typename I>
+mln_value(I) sqr_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) sum = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ sum += (mln::math::sqr(p.ind())*histo(p));
+
+ return sum;
+}
+
+/// \brief Minimisation of the error.
+///
+/// \param[in] histo_grp1 the histogram of the first population.
+/// \param[in] histo_grp2 the histogram of the second population.
+///
+/// \return the threshold.
+///
+/// Computes the error and find the minimum error threshold. It's just
+/// a counting of element in four categories (0 - but detects 1, 1 -
+/// but detects 1, 1 but detects 0, 0 but detects 0). The error is the
+/// sum of missclassifications for the classes 0 and 1. As Otsu done,
+/// we can iterate on the threshold and compute the error associated
+/// to it. The bes threshold is the one that minimize the error.
+short min_error(const mln::image1d<float> histo_grp1,
+ const mln::image1d<float> histo_grp2)
+{
+ float c00[256];
+ float c10[256];
+ float c01[256];
+ float c11[256];
+ float err[256];
+
+ for (short p = 0; p < 256; p++)
+ {
+ c00[p] = cnt_histo(histo_grp1|mln::box1d(mln::point1d(0),
+ mln::point1d(p)));
+
+ c10[p] = cnt_histo(histo_grp1|mln::box1d(mln::point1d(p+1),
+ mln::point1d(255)));
+
+ c01[p] = cnt_histo(histo_grp2|mln::box1d(mln::point1d(0),
+ mln::point1d(p)));
+
+ c11[p] = cnt_histo(histo_grp2|mln::box1d(mln::point1d(p+1),
+ mln::point1d(255)));
+ }
+
+ short threshold = 0;
+ float error = c01[0] + c01[0] + c00[0] + c11[0];
+
+ for(short p = 0; p < 256; p++)
+ {
+ err[p] = c10[p] + c01[p];
+
+ std::cout << " p = " << p
+ << ";c00 = " << c00[p]
+ << ";c10 = " << c10[p]
+ << ";c01 = " << c01[p]
+ << ";c11 = " << c11[p]
+ << std::endl;
+// std::cout << "err[" << p << "] = " << err[p] << std::endl;
+
+ if (error > err[p])
+ {
+ error = err[p];
+ threshold = p;
+ }
+ }
+
+ return threshold;
+}
+
+/// \brief Fisher analysis.
+///
+/// \param[in] histo the histogram of the mixed population.
+///
+/// \return the threshold.
+///
+/// This routine is less performant than the others because it starts
+/// with a mixed population, but we know exactly the two separated
+/// population. It was just a test. Don't take it in production
+/// environement, it doesn't help you.
+short fisher_analysis(const mln::image1d<float> histo)
+{
+ typedef mln::value::int_u8 t_int_u8;
+
+ // FIXE ME SIZE const short a = mln_min(t_int_u8);
+ // float cnt1[a];
+
+ float cnt1[256];
+ float sum1[256];
+ float sqr1[256];
+ float avg1[256];
+ float var1[256];
+
+ float cnt2[256];
+ float sum2[256];
+ float sqr2[256];
+ float avg2[256];
+ float var2[256];
+
+ float cnt0[256]; // count of points
+ float sum0[256]; // sum of population
+ float sqr0[256]; // sqr of population
+ float avg0[256]; // average of the population
+ float v_in[256]; // variance with-in class
+ float v_bw[256]; // variance between class
+ float var0[256]; // variance of the population
+ short threshold;
+ float pos;
+ float min_var;
+
+ // Assign the first elements
+ cnt1[0] = 0;
+ sum1[0] = 0;
+ sqr1[0] = 0;
+ avg1[0] = 0;
+ var1[0] = 0;
+
+ // Compute the stats of the wall histogram
+ cnt2[0] = 0;
+ sum2[0] = 0;
+ sqr2[0] = 0;
+
+ for(short p = 0; p < 256; p++)
+ {
+ pos = p;
+ cnt2[0] += mln::opt::at(histo,p);
+ sum2[0] += (pos * mln::opt::at(histo,p));
+ sqr2[0] += (mln::math::sqr(pos) * mln::opt::at(histo,p));
+ }
+
+ avg2[0] = (0 == cnt2[0])? 0 : sum2[0] / cnt2[0];
+ var2[0] = (0 == cnt2[0])? 0 : sqr2[0] / cnt2[0] - mln::math::sqr(avg2[0]);
+
+ // watch the array limits
+ for (short p = 1; p < 256; p++)
+ {
+ pos = p;
+
+ // Assign the statistics to the primary class
+ cnt1[p] = cnt1[p-1] + mln::opt::at(histo, p);
+ sum1[p] = sum1[p-1] + pos * mln::opt::at(histo, p);
+ sqr1[p] = sqr1[p-1] + mln::math::sqr(pos) * mln::opt::at(histo, p);
+ avg1[p] = (0 == cnt1[p])? 0 : (sum1[p] / cnt1[p]);
+ var1[p] = (0 == cnt1[p])? 0 : ((sqr1[p] / cnt1[p])-mln::math::sqr(avg1[p]));
+
+ // Assign the statistics to the second class
+ cnt2[p] = cnt2[p-1] - mln::opt::at(histo, p);;
+ sum2[p] = sum2[p-1] - p * mln::opt::at(histo, p);;
+ sqr2[p] = sqr2[p-1] - mln::math::sqr(p) * mln::opt::at(histo, p);;
+ avg2[p] = (0 == cnt2[p])? 0 : (sum2[p] / cnt2[p]);
+ var2[p] = (0 == cnt2[p])? 0 : ((sqr2[p] / cnt2[p])-mln::math::sqr(avg2[p]));
+
+ // Lets compute the invariants
+ cnt0[p] = cnt1[p] + cnt2[p];
+ sum0[p] = sum1[p] + sum2[p];
+ sqr0[p] = sqr1[p] + sqr2[p];
+ avg0[p] = (cnt1[p] * avg1[p] + cnt2[p] * avg2[p])/cnt0[p];
+ v_in[p] = (cnt1[p] * var1[p] + cnt2[p] * var2[p])/cnt0[p];
+ v_bw[p] = (cnt1[p] * mln::math::sqr(avg1[p]-avg0[p]) +
+ cnt2[p] * mln::math::sqr(avg2[p]-avg0[p]))/cnt0[p];
+ var0[p] = v_in[p] + v_bw[p];
+ }
+
+ // Find the threshold that minimizes the intra-class variance
+ min_var = cnt2[0]*var2[0];
+ threshold = 0;
+
+ for(short p = 0; p < 256; p++)
+ {
+ // Compute the intra-class variance
+ v_in[p] = cnt1[p]*var1[p] + cnt2[p]*var2[p];
+// std::cout << "var intra[" << p << "]= " << v_in[p] << std::endl;
+
+ if (min_var > v_in[p])
+ {
+ min_var = v_in[p];
+ threshold = p;
+ }
+ }
+
+ return threshold;
+}
+/// \}
+
+/// \brief ERROR (MSE, PNSNR) compression p278 Handbook Color.
+/// \param[in] original the original image.
+/// \param[in] reduced the image with a reduced number of colors.
+///
+/// \return the PNSNR.
+///
+/// Compute the PNSNR. First compute the square difference in each
+/// channel. Then compute the mean of those square differences and get
+/// the mean over the three channels. Then, get the sqrt of that to
+/// have a distance. The PNSNR is a logarithmic quantity of that distance.
+float error_test(const std::string original,
+ const std::string reduced)
+
+{
+
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::fun::v2v::component<t_rgb8,0> t_component_red;
+ typedef mln::fun::v2v::component<t_rgb8,1> t_component_green;
+ typedef mln::fun::v2v::component<t_rgb8,2> t_component_blue;
+ typedef mln::accu::meta::stat::mean t_mean;
+ typedef mln::accu::meta::stat::histo1d t_histo;
+ typedef mln::image2d<t_int_u8> t_img;
+ typedef mln_trait_op_minus_(t_img,t_img) t_minus;
+ typedef mln_trait_op_times_(t_minus,t_minus) t_times;
+
+ mln::image2d<mln::value::rgb8> original_rgb8;
+ mln::image2d<mln::value::rgb8> reduced_rgb8;
+
+ mln::image2d<mln::value::int_u8> original_red;
+ mln::image2d<mln::value::int_u8> original_green;
+ mln::image2d<mln::value::int_u8> original_blue;
+
+ mln::image2d<mln::value::int_u8> reduced_red;
+ mln::image2d<mln::value::int_u8> reduced_green;
+ mln::image2d<mln::value::int_u8> reduced_blue;
+
+// mln::image2d<mln::value::int_u8> map_red;
+// mln::image2d<mln::value::int_u8> map_green;
+// mln::image2d<mln::value::int_u8> map_blue;
+
+// mln::image1d<unsigned> histo_red;
+// mln::image1d<unsigned> histo_green;
+// mln::image1d<unsigned> histo_blue;
+
+ t_minus minus_red;
+ t_minus minus_green;
+ t_minus minus_blue;
+
+ t_times times_red;
+ t_times times_green;
+ t_times times_blue;
+
+ float error_red;
+ float error_green;
+ float error_blue;
+
+ float error;
+
+
+ mln::io::ppm::load(original_rgb8, original.c_str());
+ mln::io::ppm::load(reduced_rgb8, reduced.c_str());
+
+ original_red = mln::data::transform(original_rgb8, t_component_red());
+ original_green = mln::data::transform(original_rgb8, t_component_green());
+ original_blue = mln::data::transform(original_rgb8, t_component_blue());
+
+ reduced_red = mln::data::transform(reduced_rgb8, t_component_red());
+ reduced_green = mln::data::transform(reduced_rgb8, t_component_green());
+ reduced_blue = mln::data::transform(reduced_rgb8, t_component_blue());
+
+ minus_red = (original_red - reduced_red);
+ times_red = minus_red * minus_red;
+
+ minus_green = (original_green - reduced_green);
+ times_green = minus_green * minus_green;
+
+ minus_blue = (original_blue - reduced_blue);
+ times_blue = minus_blue * minus_blue;
+
+ error_red = mln::data::compute(t_mean(), times_red);
+ error_green = mln::data::compute(t_mean(), times_green);
+ error_blue = mln::data::compute(t_mean(), times_blue);
+
+// map_red = mln::data::stretch(t_int_u8(), times_red);
+// map_green = mln::data::stretch(t_int_u8(), times_blue);
+// map_blue = mln::data::stretch(t_int_u8(), times_green);
+
+// histo_red = mln::data::compute(t_histo(), map_red);
+// histo_green = mln::data::compute(t_histo(), map_green);
+// histo_blue = mln::data::compute(t_histo(), map_blue);
+
+// mln::io::plot::save_image_sh(histo_red, "histo_red.sh");
+// mln::io::plot::save_image_sh(histo_green,"histo_green.sh");
+// mln::io::plot::save_image_sh(histo_blue, "histo_blue.sh");
+
+// mln::io::pgm::save(map_red, "red.pgm");
+// mln::io::pgm::save(map_green,"green.pgm");
+// mln::io::pgm::save(map_blue, "blue.pgm");
+
+ error = (error_red + error_green + error_blue)/3.0;
+ error = mln::math::sqrt(error);
+ error = 20 * log(255/error);
+
+// Le PNSNR semble offrir plus d'espace pour la discrimination
+// Si les images sont identiques ==> PNSNR = +inf
+// Si les images sont très différentes ==> PNSNR = 0
+
+ return error;
+}
+
+
+/// \brief The main entry.
+///
+/// This is the front end for error classification. This is the big
+/// loop where we walk other image data bases. Computation of
+/// automatic thresholds are called from here.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+ mln::image1d<float> histo(256);
+ mln::image1d<float> histo_grp[2]; // histo by group
+
+ histo_grp[0].init_(mln::box1d(mln::point1d(0),mln::point1d(255)));
+ histo_grp[1].init_(mln::box1d(mln::point1d(0),mln::point1d(255)));
+
+ mln::data::fill(histo, mln::literal::zero);
+ mln::data::fill(histo_grp[0], mln::literal::zero);
+ mln::data::fill(histo_grp[1], mln::literal::zero);
+
+ t_path original_path[] = {ICDAR_20P_INPUT_IMG_PATH,
+ AFP_PPM_IMG_PATH};
+
+// t_path reduced1_path[] = {ICDAR_20P_MGK30_IMG_PATH,
+// AFP_MGK30_IMG_PATH};
+
+// t_path reduced1_path[] = {ICDAR_20P_MGK20_IMG_PATH,
+// AFP_MGK20_IMG_PATH};
+
+ t_path reduced1_path[] = {ICDAR_20P_MGK10_IMG_PATH,
+ AFP_MGK10_IMG_PATH};
+
+// t_path reduced2_path[] = {ICDAR_20P_GMP30_IMG_PATH,
+// AFP_GMP30_IMG_PATH};
+
+// t_path reduced2_path[] = {ICDAR_20P_GMP20_IMG_PATH,
+// AFP_GMP20_IMG_PATH};
+
+ t_path reduced2_path[] = {ICDAR_20P_GMP10_IMG_PATH,
+ AFP_GMP10_IMG_PATH};
+
+
+ std::cout << "#!/usr/bin/gnuplot" << std::endl;
+ std::cout << "set terminal x11 persist 1" << std::endl;
+ std::cout << "ERROR" << std::endl;
+ std::cout << "plot '-' using 1 with point notitle,\\" << std::endl;
+ std::cout << " '-' using 1 with point notitle" << std::endl;
+
+ for (int i = 0; i < 2; i++)
+ {
+ if (boost::filesystem::exists(original_path[i]) &&
+ boost::filesystem::exists(reduced1_path[i]) &&
+ boost::filesystem::exists(reduced2_path[i]) &&
+ boost::filesystem::is_directory(original_path[i]) &&
+ boost::filesystem::is_directory(reduced1_path[i]) &&
+ boost::filesystem::is_directory(reduced2_path[i]))
+ {
+ boost::filesystem::system_complete(original_path[i]);
+ const t_iter_path end_iter;
+ float error1 = 0.0;
+ float error2 = 0.0;
+ t_path leaf;
+ t_path reduced1_file;
+ t_path reduced2_file;
+
+ for (t_iter_path dir_iter(original_path[i]);end_iter!=dir_iter;++dir_iter)
+ {
+ leaf = dir_iter->path().leaf();
+ reduced1_file = reduced1_path[i] / leaf;
+ reduced2_file = reduced2_path[i] / leaf;
+
+ error1 = error_test(dir_iter->path().string(), reduced1_file.string());
+ error2 = error_test(dir_iter->path().string(), reduced2_file.string());
+
+ float a1 = 1;
+ short v1 = (short)mln::math::floor(error2+0.4999);
+ mln::opt::at(histo,v1) += a1;
+ mln::opt::at(histo_grp[i],v1) += a1;
+
+// float a1 = error2 - mln::math::floor(error2);
+// float a2 = mln::math::ceil(error2) - error2;
+// short v1 = (short)mln::math::floor(error2);
+// short v2 = (short)mln::math::ceil(error2);
+// mln::opt::at(histo,v1) += a1;
+// mln::opt::at(histo,v2) += a2;
+// mln::opt::at(histo_grp[i],v1) += a1;
+// mln::opt::at(histo_grp[i],v2) += a2;
+
+ std::cout << error1 << " ";
+ std::cout << error2 << " ";
+ std::cout << "# " << dir_iter->path().leaf() << std::endl;
+ }
+ std::cout << "e" << std::endl;
+ }
+ }
+
+ mln::io::plot::save_image_sh(histo, "histo.sh");
+ mln::io::plot::save_image_sh(histo_grp[1], "histo_grp1.sh");
+ mln::io::plot::save_image_sh(histo_grp[0], "histo_grp2.sh");
+
+ float threshold = fisher_analysis(histo);
+ float threshold2 = threshold_histo(avg_histo(histo_grp[1]),
+ var_histo(histo_grp[1]),
+ avg_histo(histo_grp[0]),
+ var_histo(histo_grp[0]));
+ float threshold3 = threshold2_histo(avg_histo(histo_grp[1]),
+ var_histo(histo_grp[1]),
+ avg_histo(histo_grp[0]),
+ var_histo(histo_grp[0]));
+ float threshold4 = min_error(histo_grp[1],histo_grp[0]);
+
+ std::cout << "threshold = " << threshold << std::endl;
+ std::cout << "threshold2 = " << threshold2 << std::endl;
+ std::cout << "threshold3 = " << threshold3 << std::endl;
+ std::cout << "threshold4 = " << threshold4 << std::endl;
+ std::cout << "avg_grp1 = " << avg_histo(histo_grp[1]) << std::endl;
+ std::cout << "avg_grp2 = " << avg_histo(histo_grp[0]) << std::endl;
+
+ // compute the classification matrix
+ // for each sub population
+
+ float c00 = cnt_histo(histo_grp[1] | mln::box1d(mln::point1d(0),
+ mln::point1d(threshold)));
+
+ float c10 = cnt_histo(histo_grp[1] | mln::box1d(mln::point1d(threshold+1),
+ mln::point1d(255)));
+
+ float c01 = cnt_histo(histo_grp[0] | mln::box1d(mln::point1d(0),
+ mln::point1d(threshold)));
+
+ float c11 = cnt_histo(histo_grp[0] | mln::box1d(mln::point1d(threshold+1),
+ mln::point1d(255)));
+
+
+ std::cout << "pop0 = " << cnt_histo(histo_grp[1]) << std::endl;
+ std::cout << "pop1 = " << cnt_histo(histo_grp[0]) << std::endl;
+ std::cout << std::endl;
+
+ std::cout << "c00 = " << c00 << std::endl;
+ std::cout << "c10 = " << c10 << std::endl;
+ std::cout << "c01 = " << c01 << std::endl;
+ std::cout << "c11 = " << c11 << std::endl;
+
+ return 0;
+}
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/histo/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/histo/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/histo/histo.cc b/scribo/sandbox/green/exp/annotating/histo/histo.cc
new file mode 100644
index 0000000..90b18e4
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/histo/histo.cc
@@ -0,0 +1,366 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Build normalized histograms for visualization only.
+///
+/// The goal of this code is to build every normalized histograms of
+/// an image database for visual inspection. It enables the
+/// comparaison of the densities of each image database and the
+/// understanding of the differences in this space.
+
+
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/arith/minus.hh>
+#include <mln/arith/div.hh>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+
+#include <mln/data/convert.hh>
+#include <mln/data/compute.hh>
+#include <mln/data/stretch.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/literal/zero.hh>
+#include <mln/literal/colors.hh>
+#include <mln/literal/grays.hh>
+
+#include <mln/math/max.hh>
+#include <mln/math/min.hh>
+#include <mln/math/sqr.hh>
+#include <mln/math/sqrt.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/geom/nsites.hh>
+
+#include <mln/fun/v2v/rgb_to_hue_map.hh>
+#include <mln/fun/v2v/rgb_to_saturation_map.hh>
+#include <mln/fun/v2v/rgb_to_value_map.hh>
+#include <mln/fun/v2v/component.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/value/rgb8.hh>
+
+//============================================================================//
+// HISTOGRAM
+//============================================================================//
+
+/// \brief Count the number of pixel in the histogram.
+///
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the number of pixels in the domain.
+///
+/// This is simple counting routine that compute the number of pixels
+/// in the domain of the histogram. For each site, it sums the
+/// frequencies associated to its site.
+template <typename I>
+mln_value(I) cnt_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) cnt = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ cnt += histo(p);
+ }
+
+ return cnt;
+}
+
+/// \brief The computing of the normalized histogram.
+///
+/// \param[in] input the name of the input image.
+/// \param[in] output_map the name of the specific map (hue,sat,val,R,G,B).
+/// \param[in] output_histo the name of the output normalized histogram.
+/// \param[in] space the name of the studied channel (R,G,B,H,S,V).
+///
+/// Compute the normalized histogram in the given channel. First get
+/// the channel from the RGB space or the HSV space and then compute
+/// its normalized histogram. Normalization is done by dividing each
+/// frequency by the sum of frequencies. It's a way to make the
+/// histogram independant from the dimension of the input image and
+/// then to compare different image databases together.
+void histo(const std::string input,
+ const std::string output_map,
+ const std::string output_histo,
+ const char space)
+
+{
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::fun::v2v::rgb_to_hue_map<8> t_rgb_to_hue_map;
+ typedef mln::fun::v2v::rgb_to_saturation_map<8> t_rgb_to_sat_map;
+ typedef mln::fun::v2v::rgb_to_value_map<8> t_rgb_to_val_map;
+ typedef mln::fun::v2v::component<t_rgb8,0> t_component_r;
+ typedef mln::fun::v2v::component<t_rgb8,1> t_component_g;
+ typedef mln::fun::v2v::component<t_rgb8,2> t_component_b;
+
+ mln::image2d<mln::value::rgb8> input_rgb8;
+ mln::image2d<mln::value::int_u8> map;
+ mln::image1d<unsigned> histo;
+ mln::image1d<float> histo_float;
+ float sum;
+
+ mln::io::ppm::load(input_rgb8, input.c_str());
+
+ switch(space)
+ {
+ case 'h': map = mln::data::transform(input_rgb8, t_rgb_to_hue_map()); break;
+ case 's': map = mln::data::transform(input_rgb8, t_rgb_to_sat_map()); break;
+ case 'v': map = mln::data::transform(input_rgb8, t_rgb_to_val_map()); break;
+ case 'r': map = mln::data::transform(input_rgb8, t_component_r()); break;
+ case 'g': map = mln::data::transform(input_rgb8, t_component_g()); break;
+ case 'b': map = mln::data::transform(input_rgb8, t_component_b()); break;
+ default: break;// crash
+ }
+
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(), map);
+ sum = cnt_histo(histo);
+ histo_float = mln::data::convert(float(), histo) / sum;
+
+ mln::io::pgm::save(map, output_map.c_str());
+ mln::io::plot::save_image_sh(histo_float, output_histo.c_str());
+}
+
+//============================================================================//
+// MAIN
+//============================================================================//
+
+
+/// \brief The main entry.
+///
+/// This a front end to compute histogram with boost plumberies. There
+/// is 2 uses cases, the computing over the icdar database and over
+/// the afp database. We force the computing over the six channel
+/// (H,S,V,R,G,B) in order to select the channel the most specific for
+/// a database. It seems that saturation channel and value channel are
+/// the most specific to describe each database. Take care to
+/// coherence of the output directories for each source of images.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+// t_path full_path[] = {t_path(ICDAR_20P_TEXT_ONLY_IMG_PATH),
+// t_path(ICDAR_20P_TEXT_COLOR_IMG_PATH),
+// t_path(ICDAR_20P_TEXT_PHOTO_IMG_PATH)};
+
+// t_path full_path[] = {t_path(AFP_INPUT_IMG_PATH)};
+// t_path full_path[] = {t_path(AFP_GMP30_IMG_PATH)};
+// t_path full_path[] = {t_path(AFP_GMP20_IMG_PATH)};
+// t_path full_path[] = {t_path(AFP_GMP10_IMG_PATH)};
+// t_path full_path[] = {t_path(AFP_MGK30_IMG_PATH)};
+// t_path full_path[] = {t_path(AFP_MGK20_IMG_PATH)};
+// t_path full_path[] = {t_path(AFP_MGK10_IMG_PATH)};
+
+// t_path full_path[] = {t_path(ICDAR_20P_INPUT_IMG_PATH)};
+// t_path full_path[] = {t_path(ICDAR_20P_GMP30_IMG_PATH)};
+ t_path full_path[] = {t_path(ICDAR_20P_GMP20_IMG_PATH)};
+// t_path full_path[] = {t_path(ICDAR_20P_GMP10_IMG_PATH)};
+// t_path full_path[] = {t_path(ICDAR_20P_MGK30_IMG_PATH)};
+// t_path full_path[] = {t_path(ICDAR_20P_MGK20_IMG_PATH)};
+// t_path full_path[] = {t_path(ICDAR_20P_MGK10_IMG_PATH)};
+
+ for (int i = 0; i < 1; ++i)
+ {
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ t_path directory;
+ t_path leaf;
+ t_path output_map;
+ t_path output_histo;
+
+ std::cerr << "entering " << full_path[i] << std::endl;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ std::cerr << dir_iter->path() << std::endl;
+
+ leaf = dir_iter->path().leaf();
+
+// directory = ANNOTATING_AFP_R_INPUT_RET_PATH;
+// directory = ANNOTATING_AFP_R_GMP30_RET_PATH;
+// directory = ANNOTATING_AFP_R_GMP20_RET_PATH;
+// directory = ANNOTATING_AFP_R_GMP10_RET_PATH;
+// directory = ANNOTATING_AFP_R_MGK30_RET_PATH;
+// directory = ANNOTATING_AFP_R_MGK20_RET_PATH;
+// directory = ANNOTATING_AFP_R_MGK10_RET_PATH;
+
+// directory = ANNOTATING_ICDAR_R_INPUT_RET_PATH;
+// directory = ANNOTATING_ICDAR_R_GMP30_RET_PATH;
+ directory = ANNOTATING_ICDAR_R_GMP20_RET_PATH;
+// directory = ANNOTATING_ICDAR_R_GMP10_RET_PATH;
+// directory = ANNOTATING_ICDAR_R_MGK30_RET_PATH;
+// directory = ANNOTATING_ICDAR_R_MGK20_RET_PATH;
+// directory = ANNOTATING_ICDAR_R_MGK10_RET_PATH;
+ output_histo = change_extension(directory / leaf, ".sh");
+ output_map = change_extension(directory / leaf, ".pgm");
+
+ histo(dir_iter->path().string(),
+ output_map.string(),
+ output_histo.string(),
+ 'r');
+
+// directory = ANNOTATING_AFP_G_INPUT_RET_PATH;
+// directory = ANNOTATING_AFP_G_GMP30_RET_PATH;
+// directory = ANNOTATING_AFP_G_GMP20_RET_PATH;
+// directory = ANNOTATING_AFP_G_GMP10_RET_PATH;
+// directory = ANNOTATING_AFP_G_MGK30_RET_PATH;
+// directory = ANNOTATING_AFP_G_MGK20_RET_PATH;
+// directory = ANNOTATING_AFP_G_MGK10_RET_PATH;
+
+// directory = ANNOTATING_ICDAR_G_INPUT_RET_PATH;
+// directory = ANNOTATING_ICDAR_G_GMP30_RET_PATH;
+ directory = ANNOTATING_ICDAR_G_GMP20_RET_PATH;
+// directory = ANNOTATING_ICDAR_G_GMP10_RET_PATH;
+// directory = ANNOTATING_ICDAR_G_MGK30_RET_PATH;
+// directory = ANNOTATING_ICDAR_G_MGK20_RET_PATH;
+// directory = ANNOTATING_ICDAR_G_MGK10_RET_PATH;
+ output_histo = change_extension(directory / leaf, ".sh");
+ output_map = change_extension(directory / leaf, ".pgm");
+
+ histo(dir_iter->path().string(),
+ output_map.string(),
+ output_histo.string(),
+ 'g');
+
+// directory = ANNOTATING_AFP_B_INPUT_RET_PATH;
+// directory = ANNOTATING_AFP_B_GMP30_RET_PATH;
+// directory = ANNOTATING_AFP_B_GMP20_RET_PATH;
+// directory = ANNOTATING_AFP_B_GMP10_RET_PATH;
+// directory = ANNOTATING_AFP_B_MGK30_RET_PATH;
+// directory = ANNOTATING_AFP_B_MGK20_RET_PATH;
+// directory = ANNOTATING_AFP_B_MGK10_RET_PATH;
+
+// directory = ANNOTATING_ICDAR_B_INPUT_RET_PATH;
+// directory = ANNOTATING_ICDAR_B_GMP30_RET_PATH;
+ directory = ANNOTATING_ICDAR_B_GMP20_RET_PATH;
+// directory = ANNOTATING_ICDAR_B_GMP10_RET_PATH;
+// directory = ANNOTATING_ICDAR_B_MGK30_RET_PATH;
+// directory = ANNOTATING_ICDAR_B_MGK20_RET_PATH;
+// directory = ANNOTATING_ICDAR_B_MGK10_RET_PATH;
+ output_histo = change_extension(directory / leaf, ".sh");
+ output_map = change_extension(directory / leaf, ".pgm");
+
+ histo(dir_iter->path().string(),
+ output_map.string(),
+ output_histo.string(),
+ 'b');
+
+// directory = ANNOTATING_AFP_H_INPUT_RET_PATH;
+// directory = ANNOTATING_AFP_H_GMP30_RET_PATH;
+// directory = ANNOTATING_AFP_H_GMP20_RET_PATH;
+// directory = ANNOTATING_AFP_H_GMP10_RET_PATH;
+// directory = ANNOTATING_AFP_H_MGK30_RET_PATH;
+// directory = ANNOTATING_AFP_H_MGK20_RET_PATH;
+// directory = ANNOTATING_AFP_H_MGK10_RET_PATH;
+
+// directory = ANNOTATING_ICDAR_H_INPUT_RET_PATH;
+// directory = ANNOTATING_ICDAR_H_GMP30_RET_PATH;
+ directory = ANNOTATING_ICDAR_H_GMP20_RET_PATH;
+// directory = ANNOTATING_ICDAR_H_GMP10_RET_PATH;
+// directory = ANNOTATING_ICDAR_H_MGK30_RET_PATH;
+// directory = ANNOTATING_ICDAR_H_MGK20_RET_PATH;
+// directory = ANNOTATING_ICDAR_H_MGK10_RET_PATH;
+ output_histo = change_extension(directory / leaf, ".sh");
+ output_map = change_extension(directory / leaf, ".pgm");
+
+ histo(dir_iter->path().string(),
+ output_map.string(),
+ output_histo.string(),
+ 'h');
+
+// directory = ANNOTATING_AFP_S_INPUT_RET_PATH;
+// directory = ANNOTATING_AFP_S_GMP30_RET_PATH;
+// directory = ANNOTATING_AFP_S_GMP20_RET_PATH;
+// directory = ANNOTATING_AFP_S_GMP10_RET_PATH;
+// directory = ANNOTATING_AFP_S_MGK30_RET_PATH;
+// directory = ANNOTATING_AFP_S_MGK20_RET_PATH;
+// directory = ANNOTATING_AFP_S_MGK10_RET_PATH;
+
+// directory = ANNOTATING_ICDAR_S_INPUT_RET_PATH;
+// directory = ANNOTATING_ICDAR_S_GMP30_RET_PATH;
+ directory = ANNOTATING_ICDAR_S_GMP20_RET_PATH;
+// directory = ANNOTATING_ICDAR_S_GMP10_RET_PATH;
+// directory = ANNOTATING_ICDAR_S_MGK30_RET_PATH;
+// directory = ANNOTATING_ICDAR_S_MGK20_RET_PATH;
+// directory = ANNOTATING_ICDAR_S_MGK10_RET_PATH;
+ output_histo = change_extension(directory / leaf, ".sh");
+ output_map = change_extension(directory / leaf, ".pgm");
+
+ histo(dir_iter->path().string(),
+ output_map.string(),
+ output_histo.string(),
+ 's');
+
+// directory = ANNOTATING_AFP_V_INPUT_RET_PATH;
+// directory = ANNOTATING_AFP_V_GMP30_RET_PATH;
+// directory = ANNOTATING_AFP_V_GMP20_RET_PATH;
+// directory = ANNOTATING_AFP_V_GMP10_RET_PATH;
+// directory = ANNOTATING_AFP_V_MGK30_RET_PATH;
+// directory = ANNOTATING_AFP_V_MGK20_RET_PATH;
+// directory = ANNOTATING_AFP_V_MGK10_RET_PATH;
+
+// directory = ANNOTATING_ICDAR_V_INPUT_RET_PATH;
+// directory = ANNOTATING_ICDAR_V_GMP30_RET_PATH;
+ directory = ANNOTATING_ICDAR_V_GMP20_RET_PATH;
+// directory = ANNOTATING_ICDAR_V_GMP10_RET_PATH;
+// directory = ANNOTATING_ICDAR_V_MGK30_RET_PATH;
+// directory = ANNOTATING_ICDAR_V_MGK20_RET_PATH;
+// directory = ANNOTATING_ICDAR_V_MGK10_RET_PATH;
+ output_histo = change_extension(directory / leaf, ".sh");
+ output_map = change_extension(directory / leaf, ".pgm");
+
+ histo(dir_iter->path().string(),
+ output_map.string(),
+ output_histo.string(),
+ 'v');
+ }
+ }
+ }
+
+ return 0;
+}
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/hsv/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/hsv/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/hsv/hsv.cc b/scribo/sandbox/green/exp/annotating/hsv/hsv.cc
new file mode 100644
index 0000000..507d07b
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/hsv/hsv.cc
@@ -0,0 +1,912 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet HSV operator [millet.phd.2008.pdf]
+///
+/// This is the Millet code for moving from RGB space to Hue
+/// one. Formulae are classical, we can find them on the web.
+///
+/// Val = max(R,G,B).
+/// Sat = (max(R,G,B) - min(R,G,B))/max(R,G,B).
+/// IF R = max(R,G,B) THEN Hue = 60 * [(V-B)/(max(R,G,B)-min(R,G,B))].
+/// IF G = max(R,G,B) THEN Hue = 60 * [2 + (B-R)/(max(R,G,B)-min(R,G,B))].
+/// IF B = max(R,G,B) THEN Hue = 60 * [4 + (R-G)/(max(R,G,B)-min(R,G,B))].
+///
+/// This operator try to integrate many processing in one shot, after
+/// HSV transformation.
+
+
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/arith/minus.hh>
+#include <mln/arith/div.hh>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+
+#include <mln/data/convert.hh>
+#include <mln/data/compute.hh>
+#include <mln/data/stretch.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/literal/zero.hh>
+#include <mln/literal/colors.hh>
+#include <mln/literal/grays.hh>
+
+#include <mln/math/max.hh>
+#include <mln/math/min.hh>
+#include <mln/math/sqr.hh>
+#include <mln/math/sqrt.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/geom/nsites.hh>
+
+#include <mln/fun/v2v/rgb_to_hue_map.hh>
+#include <mln/fun/v2v/rgb_to_saturation_map.hh>
+#include <mln/fun/v2v/rgb_to_value_map.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/value/rgb8.hh>
+
+//============================================================================//
+// HISTOGRAM
+//============================================================================//
+
+/// Histogram
+/// \{
+/// \brief Histogram processing methods.
+///
+/// In this part, we define methods for histogram processing as average,
+/// peak, variance etc ...
+
+
+/// \brief Sum all the bins of the histogram.
+///
+/// \param[in] img the histogram based on image.
+///
+/// \return the sum of the overall bins.
+///
+/// Sum evry bins and return the result.
+template <typename I>
+mln_value(I) count_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) result = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ result += histo(p);
+
+ return result;
+}
+
+/// \brief Sum the whole frequencies.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the number of pixels in the domain.
+///
+/// By summing all the frequencies of the domain, we count in fact the
+/// number of pixels in the image.
+template <typename I>
+mln_value(I) sum_frequency_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) sum = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ sum += histo(p);
+
+ return sum;
+}
+
+/// \brief Count the null frequencies.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the number of null frequencies.
+///
+/// It's a way to access the number of distinct colors in the
+/// histogram by comparing it with the histogram domain.
+template <typename I>
+mln_value(I) count_null_frequency_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ mln_value(I) count = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ if (0 == histo(p))
+ count++;
+
+ return count;
+}
+
+/// \brief Find the peak of the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the bin which contains the greatest value.
+///
+/// Compute the position of the peak of the histogram. To do this, we
+/// view evrey bin and we maintain the maxima of the values and the
+/// position. At the end, we return the position which contains the
+/// greatest value.
+template <typename I>
+mln_coord(mln_site_(I)) peak_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the peak of the histogram
+ mln_value(I) v_max = mln::opt::at(histo, mln::literal::zero);
+ mln_coord(mln_site_(I)) p_max = mln::literal::zero;
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ return p_max;
+}
+
+/// \brief Find the maximum frequency of the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the maximum frequency of the histogram.
+///
+/// Find the peak and return its value, not its position. We use that
+/// function to normalize histograms.
+template <typename I>
+mln_value(I) max_frequency_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the value of the peak from the histogram
+ mln_value(I) max = mln::opt::at(histo, mln::literal::zero);
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ max = mln::math::max(histo(p),max);
+ }
+
+ return max;
+}
+
+/// \brief Find the mean of the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the aveerage of the histogram.
+///
+/// Compute the mean.
+template <typename I>
+float mean_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the mean of the histogram
+ float sum = 0;
+ float mean = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum += histo(p);
+ mean += p.ind()*histo(p);
+ }
+
+ mean = mean / sum;
+
+ return mean;
+}
+
+/// \brief Compare the histogram with the equi distributed histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the distance between the equi distributed histogram.
+///
+/// Compute the square euclidian distance between histogram and the
+/// equi distributed histogram. The equi distributed histogram is an
+/// histogram in which each bin has the same frequency (id est 1/256
+/// for instance). The integral equals one for this two
+/// histograms. This is a major contribution test to differentiate
+/// image database.
+template <typename I>
+float cmp_equi_frequency_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the mean of the histogram
+ float sum = 0;
+ float var = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum += histo(p);
+ var += mln::math::sqr(histo(p) - (1/256.0));
+ }
+
+ var = var / sum;
+
+ return var;
+}
+
+/// \brief Compute the variance on the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the variance.
+///
+/// Compute the variance by substracting the mean.
+template <typename I>
+float var_histo(const mln::Image<I>& histo_, float mean)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the mean of the histogram
+ float sum = 0;
+ float var = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum += histo(p);
+ var += mln::math::sqr(p.ind() - mean) * histo(p);
+ }
+
+ var = var / sum;
+
+ return var;
+}
+
+/// \brief Find the mean of the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the aveerage of the histogram.
+///
+/// Compute the mean.
+template <typename I>
+float mean_frequency_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the mean of the histogram
+ float sum = 0;
+ float mean = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum++;
+ mean += histo(p);
+ }
+
+ mean = mean / sum;
+
+ return mean;
+}
+
+/// \brief Compute the standard deviation on the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the dstandard deviation.
+///
+/// Compute the standard deviation by substracting the mean
+template <typename I>
+float stddev_frequency_histo(const mln::Image<I>& histo_, float mean)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the var of the histogram
+ float sum = 0;
+ float var = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum++;
+ var += mln::math::sqr(histo(p)-mean);
+ }
+
+ var = mln::math::sqrt(var / sum);
+
+ return var;
+}
+/// \}
+
+//============================================================================//
+// HUE TEST
+//============================================================================//
+
+/// Hue test
+/// \{
+/// \brief Hue test image processing stuff.
+///
+/// In this part, we define every thing that is correlated to the hue analysis.
+
+
+/// \brief Label a grey value.
+///
+/// \param[in] int_u8 the grey value.
+///
+/// \return the reference color for this grey value.
+///
+/// Classify grey value in three class, white, black and medium_gray.
+mln::value::rgb8 label_val(const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (82 > val)
+ result = mln::literal::black;
+ else if (179 > val)
+ result= mln::literal::medium_gray;
+ else
+ result = mln::literal::white;
+
+ return result;
+}
+
+
+/// \brief Label color with orange reference or brown reference.
+///
+/// \param[in] color the rgb8 color.
+/// \param[in] sat the HSV saturation.
+/// \param[in] val the HSV value.
+///
+/// \return the reference color with which it has been associated to.
+mln::value::rgb8 label_orange_or_brown(const mln::value::rgb8 color,
+ const mln::value::int_u8 sat,
+ const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (mln::literal::orange == color)
+ {
+ unsigned dist_orange = mln::math::abs(sat - 184)
+ + mln::math::abs(val - 65);
+
+ unsigned dist_brown = mln::math::abs(sat - 255)
+ + mln::math::abs(val - 125);
+
+ if (dist_orange < dist_brown)
+ result = mln::literal::orange;
+ else
+ result = mln::literal::brown;
+ }
+ else
+ result = color;
+
+ return result;
+}
+
+
+/// \brief Label between yellow and green color.
+///
+/// \param[in] color the rgb8 color.
+/// \param[in] val the HSV value.
+///
+/// \return the reference color associated to that color.
+mln::value::rgb8 label_yellow_or_green(const mln::value::rgb8 color,
+ const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (mln::literal::yellow == color)
+ {
+ // Is it green or yellow ?
+ if (80 > val)
+ result = mln::literal::green;
+ else
+ result = mln::literal::yellow;
+ }
+ else
+ return color;
+
+ return result;
+}
+
+
+/// \brief Label hue color.
+///
+/// \param[in] hue the HSV hue canal for a pixel.
+///
+/// \return a hue segmentation of the hue wheel.
+///
+/// The old classification given by Millet is commented. Mine is ready
+/// to use. We need to change reference colors to make the
+/// primary colors, the secondary ones, etc...
+mln::value::rgb8 label_hue(const mln::value::int_u8 hue)
+{
+ mln::value::rgb8 result;
+
+
+ if (10 > hue)
+ result = mln::literal::red;
+ else if (32 > hue)
+ result = mln::literal::orange;
+ else if (53 > hue)
+ result = mln::literal::yellow;
+ else if (74 > hue)
+ result = mln::literal::green; // chartreuse
+ else if (96 > hue)
+ result = mln::literal::green;
+ else if (116 > hue)
+ result = mln::literal::green;// turquoise, aigue-marine
+ else if (138 > hue)
+ result = mln::literal::green; // cyan
+ else if (159 > hue)
+ result = mln::literal::blue; // azur
+ else if (181 > hue)
+ result = mln::literal::blue;
+ else if (202 > hue)
+ result = mln::literal::violet;
+ else if (223 > hue)
+ result = mln::literal::pink;
+ else // if (244 > hue)
+ result = mln::literal::red;
+
+ return result;
+}
+
+/// \brief The hue test.
+///
+/// \param[in] input the name of the input image.
+/// \param[in] output the name of the histogram to output.
+/// \param[in] tmp the name of the hue map to output.
+/// \param[in] threshold the limit to compute the histogram contribution.
+///
+/// \return the proportion of pixels that pass the test.
+///
+/// This is an augmented test. We first normalized the histogram to
+/// obtain a discrete distribution. Then we compute the mean (or the
+/// peak, i don't really know what is the best) and we look at the
+/// proportion of the pixels around the mean or the peak. This
+/// proportion tell us how histogram distribution is concentrated
+/// around the modal value. If a hue modal value exist, we can say
+/// that the image is colorized.
+float hue_test(const std::string input,
+ const std::string output,
+ const std::string tmp,
+ const short threshold)
+
+{
+ typedef mln::fun::v2v::rgb_to_hue_map<8> t_rgb_to_hue_map;
+
+ mln::image2d<mln::value::rgb8> input_rgb8;
+ mln::image2d<mln::value::int_u8> map;
+ mln::image1d<unsigned> histo;
+ mln::image1d<float> histo_float;
+ float cnt1;
+ float cnt2;
+ float prop;
+ short peak;
+ mln::value::rgb8 color;
+ float sum;
+ mln::point1d inf;
+ mln::point1d sup;
+
+ mln::io::ppm::load(input_rgb8, input.c_str());
+
+ map = mln::data::transform(input_rgb8, t_rgb_to_hue_map());
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(), map);
+ sum = sum_frequency_histo(histo);
+ histo_float = mln::data::convert(float(), histo) / sum;
+ peak = mean_histo(histo); //peak_histo(histo);
+ color = label_hue(peak);
+ inf = mln::point1d(mln::math::max(0, peak-threshold));
+ sup = mln::point1d(mln::math::min(255, peak+threshold));
+ cnt1 = count_histo(histo_float|mln::box1d(inf,sup));
+ cnt2 = count_histo(histo_float);
+ prop = ((100.0 * cnt1) / cnt2);
+
+ mln::io::plot::save_image_sh(histo_float, output.c_str());
+ mln::io::pgm::save(map, tmp.c_str());
+// std::cout << "peak = " << peak << std::endl;
+// std::cout << "color = " << color << std::endl;
+
+ return prop;
+}
+/// \}
+
+//============================================================================//
+// SATURATION TEST
+//============================================================================//
+
+/// Saturation test
+/// \{
+/// \brief Saturation test image processing stuff.
+///
+/// In this part, we define every thing that is correlated to the
+/// saturation analysis.
+
+
+/// \brief The saturation test.
+///
+/// \param[in] input the name of the input image.
+/// \param[in] output the name of the histogram to output.
+/// \param[in] tmp the name of the hue map to output.
+/// \param[in] threshold for deciding which is low saturation or not.
+///
+/// \return the proportion of pixels which pass the test.
+///
+/// This is the augmented test, we normalized the histogram and then
+/// we count the proportion of the histogram below the threshold.
+float saturation_test(const std::string input,
+ const std::string output,
+ const std::string tmp,
+ const short threshold)
+
+{
+ typedef mln::fun::v2v::rgb_to_saturation_map<8> t_rgb_to_saturation_map;
+
+ mln::image2d<mln::value::rgb8> input_rgb8;
+ mln::image2d<mln::value::int_u8> map;
+ mln::image1d<unsigned> histo;
+ mln::image1d<float> histo_float;
+ float cnt1;
+ float cnt2;
+ float sum;
+ float prop;
+
+ mln::io::ppm::load(input_rgb8, input.c_str());
+
+ map = mln::data::transform(input_rgb8, t_rgb_to_saturation_map());
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(), map);
+ sum = sum_frequency_histo(histo);
+ histo_float = mln::data::convert(float(), histo) / sum;
+ cnt1 = count_histo(histo_float | mln::box1d(mln::point1d(0),
+ mln::point1d(threshold)));
+ cnt2 = count_histo(histo_float);
+ prop = ((100.0 * cnt1) / cnt2);
+
+ mln::io::plot::save_image_sh(histo_float, output.c_str());
+ mln::io::pgm::save(map, tmp.c_str());
+
+ return prop;
+}
+/// \}
+
+//============================================================================//
+// VALUE TEST
+//============================================================================//
+
+/// Value test
+/// \{
+/// \brief Value test image processing stuff.
+///
+/// In this part, we define every thing that is correlated to the
+/// value analysis.
+
+
+
+/// \brief The R function of Millet
+///
+/// \param[in] p the position of the pic.
+/// \param[in] histo_p the histo value of the pic.
+/// \param[in] x the position of the element which we compute the contrib.
+/// \param[in] histo_x the histo value of that element.
+///
+/// \result the contribution of the element x.
+///
+/// This function compute the variance-like contribution of an element
+/// x linked to the pic of the histogram. In fact, every thing is like
+/// we compute a square distance-like between the element x and the
+/// pic in the normalized histogram. Notice that the normalized
+/// histogram is the histogram divide by the value of it's pic. So at
+/// the pic, the value equals 1. It's a current representation of the
+/// histogram in image processing, we can find it in gimp for exemple.
+float r(short p, unsigned histo_p, short x, unsigned histo_x)
+{
+ float result = mln::math::sqr(((float)histo_x / histo_p) * (x-p));
+
+ return result;
+}
+
+/// \brief The stddev3 is an internal stuff.
+///
+/// \param[in] histo_ the image which represents the histogram.
+/// \param[in] peak the position of the histogram peak.
+///
+/// \return simple computing of deviation.
+///
+/// This is an internal stuff. It splits the computing for easy
+/// reusing practice. Sum the R contribution.
+template <typename I>
+float stddev3(const mln::Image<I>& histo_, unsigned peak)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Compute stddev
+
+ float stddev = 0.0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ stddev += r((short)peak, mln::opt::at(histo,peak), p.ind(), histo(p));
+ }
+
+ return stddev;
+}
+
+/// Brief compute the whole deviation of Millet
+///
+/// \param[in] image the input image to analyze.
+///
+/// \return the deviation.
+///
+/// The deviation uses the R function. It stats by finding the pic. If
+/// the pic is near the rigth border of the histo, compute the R
+/// function on the left neighbouring of the pic. If the pic is near
+/// the left border of the histo, compute the R function on the right
+/// neigbouring. Otherwise, compute the average of the right and left
+/// results. The selected neighbouring is composed of five pixels at
+/// the right or at the left of the pic. The detection of clipart
+/// assumes that the majority of the energy of the histogram is closed
+/// to the pic (five pixels around it). The test is generalized by
+/// making constants as parameters.
+template <typename I>
+float stddev2(const mln::Image<I>& histo_, unsigned peak, unsigned limit)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ float stddev_low = 0.0;
+ float stddev_up = 0.0;
+ float ret = 0.0;
+
+ // A transformer avec des iterators
+
+ if (250 > peak)
+ stddev_up = stddev3(histo |mln::box1d(mln::point1d(peak+1),
+ mln::point1d(peak+limit)), peak);
+
+ if (5 < peak)
+ stddev_low = stddev3(histo |mln::box1d(mln::point1d(peak-limit),
+ mln::point1d(peak-1)), peak);
+
+ ret = (250 < peak)? stddev_low : (5 > peak)? stddev_up :
+ (stddev_low + stddev_up)/2;
+
+ return ret;
+}
+
+
+/// \brief This is the Value test.
+///
+/// \param[in] input the name of the input image.
+/// \param[in] output the name of result histogram.
+/// \param[in] tmp the name of the output value (HSV) map.
+/// \param[in] threshold the range around the peak where R is computed.
+///
+/// \return the proportion of pixels that pass the test.
+///
+/// This is the augmented version of the Millet test. This code is not
+/// stable. There is a lots of tests on. The Millet test is computed
+/// with stddev2 call. We test simple counting around the pic as we
+/// do for other tests but it's not really insteresting. The prop4 is
+/// the best for me. We test the difference between the distribution and the
+/// equi-distribution.
+float value_test(const std::string input,
+ const std::string output,
+ const std::string tmp,
+ const short threshold)
+
+{
+ typedef mln::fun::v2v::rgb_to_value_map<8> t_rgb_to_value_map;
+
+ mln::image2d<mln::value::rgb8> input_rgb8;
+ mln::image2d<mln::value::int_u8> map;
+ mln::image1d<unsigned> histo;
+ mln::image1d<float> histo_float;
+ float cnt1;
+ float cnt2;
+ float prop;
+ float sum;
+ float prop4;
+ short peak;
+ mln::point1d inf;
+ mln::point1d sup;
+
+
+ mln::io::ppm::load(input_rgb8, input.c_str());
+
+ map = mln::data::transform(input_rgb8, t_rgb_to_value_map());
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(), map);
+ sum = sum_frequency_histo(histo);
+ histo_float = mln::data::convert(float(), histo) / sum;
+ prop4 = cmp_equi_frequency_histo(histo_float);
+ peak = peak_histo(histo); // mean_histo(histo);
+ //prop = stddev2(histo, peak, threshold);
+ inf = mln::point1d(mln::math::max(0, peak-threshold));
+ sup = mln::point1d(mln::math::min(255, peak+threshold));
+ cnt1 = count_histo(histo_float|mln::box1d(inf,sup));
+ cnt2 = count_histo(histo_float);
+ prop = ((100.0 * cnt1) / cnt2);
+
+ std::cerr << "peak = " << peak << std::endl;
+ std::cerr << "inf = " << inf << std::endl;
+ std::cerr << "sup = " << sup << std::endl;
+ std::cerr << "cnt1 = " << cnt1 << std::endl;
+ std::cerr << "cnt2 = " << cnt2 << std::endl;
+ std::cerr << "prop = " << prop << std::endl;
+ std::cerr << "prop4= " << prop4 << std::endl;
+
+ mln::io::plot::save_image_sh(histo_float, output.c_str());
+ mln::io::pgm::save(map, tmp.c_str());
+
+ return prop;
+}
+
+//============================================================================//
+// MAIN
+//============================================================================//
+
+
+/// \brief The main entry.
+///
+/// This is a front end for launching image processing test. We deal
+/// with boost library to walk on image database directories. Nothing
+/// very interesting here, it is a lot of plumberies.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+// t_path full_path[] = {t_path(ICDAR_20P_TEXT_ONLY_IMG_PATH),
+// t_path(ICDAR_20P_TEXT_COLOR_IMG_PATH),
+// t_path(ICDAR_20P_TEXT_PHOTO_IMG_PATH)};
+
+ t_path full_path[] = {t_path(AFP_PPM_IMG_PATH)};
+
+ std::cout << "#!/usr/bin/gnuplot" << std::endl;
+ std::cout << "set terminal x11 persist 1" << std::endl;
+ std::cout << "#HUE - SATURATION - VALUE" << std::endl;
+ std::cout << "plot '-' using 1:2 with point notitle,\\" << std::endl;
+ std::cout << " '-' using 1:2 with point notitle,\\" << std::endl;
+ std::cout << " '-' using 1:2 with point notitle" << std::endl;
+
+ for (int i = 0; i < 1; ++i)
+ {
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ float prop = 0.0;
+ t_path directory;
+ t_path leaf;
+ t_path output;
+ t_path tmp;
+
+ std::cerr << "entering " << full_path[i] << std::endl;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ std::cerr << dir_iter->path() << std::endl;
+ // concatenation de chaine
+// directory = (ANNOTATING_ICDAR_H_INPUT_RET_PATH);
+ directory = (ANNOTATING_AFP_H_INPUT_RET_PATH);
+ leaf = dir_iter->path().leaf();
+ output = change_extension(directory / leaf, ".sh");
+ tmp = change_extension(directory / leaf, ".pgm");
+
+ prop = hue_test(dir_iter->path().string(),
+ output.string(),
+ tmp.string(),
+ 20);
+
+ std::cout << prop << " ";
+
+// directory = (ANNOTATING_ICDAR_S_INPUT_RET_PATH);
+ directory = (ANNOTATING_AFP_S_INPUT_RET_PATH);
+ leaf = dir_iter->path().leaf();
+ output = change_extension(directory / leaf, ".sh");
+ tmp = change_extension(directory / leaf, ".pgm");
+
+ prop = saturation_test(dir_iter->path().string(),
+ output.string(),
+ tmp.string(),
+ 25);
+
+ std::cout << prop << " ";
+
+// directory = (ANNOTATING_ICDAR_V_INPUT_RET_PATH);
+ directory = (ANNOTATING_AFP_V_INPUT_RET_PATH);
+ leaf = dir_iter->path().leaf();
+ output = change_extension(directory / leaf, ".sh");
+ tmp = change_extension(directory / leaf, ".pgm");
+
+ prop = value_test(dir_iter->path().string(),
+ output.string(),
+ tmp.string(),
+ 15);
+
+ std::cout << prop << " ";
+ std::cout << "# " << dir_iter->path().leaf() << std::endl;
+ }
+ std::cout << "e" << std::endl;
+ }
+ }
+
+ return 0;
+}
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/hue/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/hue/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/hue/hue.cc b/scribo/sandbox/green/exp/annotating/hue/hue.cc
new file mode 100644
index 0000000..6e1195c
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/hue/hue.cc
@@ -0,0 +1,402 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet hue operator [millet.phd.2008.pdf]
+///
+/// This is the Millet code for moving from RGB space to Hue
+/// one. Formulae are classical, we can find them on the web.
+///
+/// Val = max(R,G,B).
+/// Sat = (max(R,G,B) - min(R,G,B))/max(R,G,B).
+/// IF R = max(R,G,B) THEN Hue = 60 * [(V-B)/(max(R,G,B)-min(R,G,B))].
+/// IF G = max(R,G,B) THEN Hue = 60 * [2 + (B-R)/(max(R,G,B)-min(R,G,B))].
+/// IF B = max(R,G,B) THEN Hue = 60 * [4 + (R-G)/(max(R,G,B)-min(R,G,B))].
+
+
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/stretch.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/literal/colors.hh>
+#include <mln/literal/grays.hh>
+
+#include <mln/math/max.hh>
+#include <mln/math/min.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/geom/nsites.hh>
+
+#include <mln/fun/v2v/rgb_to_hue_map.hh>
+#include <mln/value/rgb8.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+
+
+/// \brief Label a grey value.
+///
+/// \param[in] int_u8 the grey value.
+///
+/// \return the reference color for this grey value.
+///
+/// Classify grey value in three class, white, black and medium_gray.
+mln::value::rgb8 label_val(const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (82 > val)
+ result = mln::literal::black;
+ else if (179 > val)
+ result= mln::literal::medium_gray;
+ else
+ result = mln::literal::white;
+
+ return result;
+}
+
+
+/// \brief Label color with orange reference or brown reference.
+///
+/// \param[in] color the rgb8 color.
+/// \param[in] sat the HSV saturation.
+/// \param[in] val the HSV value.
+///
+/// \return the reference color with which it has been associated to.
+mln::value::rgb8 label_orange_or_brown(const mln::value::rgb8 color,
+ const mln::value::int_u8 sat,
+ const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (mln::literal::orange == color)
+ {
+ unsigned dist_orange = mln::math::abs(sat - 184)
+ + mln::math::abs(val - 65);
+
+ unsigned dist_brown = mln::math::abs(sat - 255)
+ + mln::math::abs(val - 125);
+
+ if (dist_orange < dist_brown)
+ result = mln::literal::orange;
+ else
+ result = mln::literal::brown;
+ }
+ else
+ result = color;
+
+ return result;
+}
+
+/// \brief Label between yellow and green color.
+///
+/// \param[in] color the rgb8 color.
+/// \param[in] val the HSV value.
+///
+/// \return the reference color associated to that color.
+mln::value::rgb8 label_yellow_or_green(const mln::value::rgb8 color,
+ const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (mln::literal::yellow == color)
+ {
+ // Is it green or yellow ?
+ if (80 > val)
+ result = mln::literal::green;
+ else
+ result = mln::literal::yellow;
+ }
+ else
+ return color;
+
+ return result;
+}
+
+
+/// \brief Label hue color.
+///
+/// \param[in] hue the HSV hue canal for a pixel.
+///
+/// \return a hue segmentation of the hue wheel.
+///
+/// The old classification given by Millet is commented. Mine is ready
+/// to use. We need to change reference colors to make the
+/// primary colors, the secondary ones, etc...
+mln::value::rgb8 label_hue(const mln::value::int_u8 hue)
+{
+ mln::value::rgb8 result;
+
+
+ if (10 > hue)
+ result = mln::literal::red;
+ else if (32 > hue)
+ result = mln::literal::orange;
+ else if (53 > hue)
+ result = mln::literal::yellow;
+ else if (74 > hue)
+ result = mln::literal::green; // chartreuse
+ else if (96 > hue)
+ result = mln::literal::green;
+ else if (116 > hue)
+ result = mln::literal::green;// turquoise, aigue-marine
+ else if (138 > hue)
+ result = mln::literal::green; // cyan
+ else if (159 > hue)
+ result = mln::literal::blue; // azur
+ else if (181 > hue)
+ result = mln::literal::blue;
+ else if (202 > hue)
+ result = mln::literal::violet;
+ else if (223 > hue)
+ result = mln::literal::pink;
+ else // if (244 > hue)
+ result = mln::literal::red;
+
+
+// if (14 > hue)
+// result = mln::literal::red;
+// else if (29 > hue)
+// result = mln::literal::orange;
+// else if (45 > hue)
+// result = mln::literal::yellow;
+// else if (113 > hue)
+// result = mln::literal::green;
+// else if (149 > hue)
+// result = mln::literal::cyan;
+// else if (205 > hue)
+// result = mln::literal::blue;
+// else if (235 > hue)
+// result = mln::literal::violet;
+// else if (242 > hue)
+// result = mln::literal::pink;
+// else
+// result = mln::literal::red;
+
+ return result;
+}
+
+
+/// \brief Sum all the bins of the histogram.
+///
+/// \param[in] img the histogram based on image.
+///
+/// \return the sum of the overall bins.
+///
+/// Sum evry bins and return the result.
+template <typename I>
+unsigned count_histo(const mln::Image<I>& img_)
+{
+ const I& img = exact(img_);
+
+ mln_precondition(img.is_valid());
+
+ unsigned result = 0;
+
+ mln_piter(I) p(img.domain());
+
+ for_all(p)
+ result += img(p);
+
+ return result;
+}
+
+/// \brief Find the peak of the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the bin which contains the greatest value.
+///
+/// Compute the position of the peak of the histogram. To do this, we
+/// view evrey bin and we maintain the maxima of the values and the
+/// position. At the end, we return the position which contains the
+/// greatest value.
+template <typename I>
+unsigned peak_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the peak of the histogram
+ unsigned v_max = mln::opt::at(histo, 0);
+ short p_max = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ return p_max;
+}
+
+/// \brief Compute the average of the histogram.
+///
+/// \param[in] histo_ the histogram.
+///
+/// \return the average of the histogram.
+///
+/// Compute the mean of the histogram by summing the values of each
+/// bin ponderated by its frequency. The result is divided by the sum
+/// of the frequencies.
+template <typename I>
+unsigned mean_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the mean of the histogram
+ float sum = 0;
+ float mean = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum += histo(p);
+ mean += p.ind()*histo(p);
+ }
+
+ mean = mean / sum;
+
+ return mean;
+}
+
+
+/// \brief The hue test.
+///
+/// \param[in] input the name of the input image.
+/// \param[in] output the name of the histogram to output.
+/// \param[in] tmp the name of the hue map to output.
+///
+/// \return the proportion of pixels that pass the test.
+///
+/// Load the input image, transform it to get the hue_map and compute
+/// the histogram. Then count the number of pixels that are between
+/// peak-threshold and peak +threshold. Print the peak and the
+/// percentage of pixels around the pic.
+float hue_test(const std::string input,
+ const std::string output,
+ const std::string tmp,
+ const unsigned threshold)
+
+{
+ typedef mln::fun::v2v::rgb_to_hue_map<8> t_rgb_to_hue_map;
+
+ mln::image2d<mln::value::rgb8> input_rgb8;
+ mln::image2d<mln::value::int_u8> map;
+ mln::image1d<unsigned> histo;
+ unsigned cnt1;
+ unsigned cnt2;
+ float prop;
+ unsigned peak;
+ mln::value::rgb8 color;
+
+ mln::io::ppm::load(input_rgb8, input.c_str());
+
+ map = mln::data::transform(input_rgb8, t_rgb_to_hue_map());
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(), map);
+ peak = mean_histo(histo); //peak_histo(histo);
+ color = label_hue(peak);
+ cnt1 = count_histo(histo | mln::box1d(mln::point1d(peak-threshold),
+ mln::point1d(peak+threshold)));
+ cnt2 = mln::geom::nsites(input_rgb8);
+ prop = ((100.0 * cnt1) / cnt2);
+
+ mln::io::plot::save_image_sh(histo, output.c_str());
+ mln::io::pgm::save(map, tmp.c_str());
+ std::cout << "peak = " << peak << std::endl;
+ std::cout << "color = " << color << std::endl;
+
+ return prop;
+}
+
+
+/// \brief Main entry.
+///
+/// It is a front end which managing the iteration through one image
+/// data base with boost. Save hue map and hue histogram.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+ t_path full_path[] = {t_path(ICDAR_20P_PPM_IMG_PATH)};
+
+ for (int i = 0; i < 1; ++i)
+ {
+ std::cout << "entering " << full_path[i] << std::endl;
+
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ float prop = 0.0;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ // concatenation de chaine
+ t_path directory(ANNOTATING_ICDAR_RET_PATH);
+ t_path leaf = dir_iter->path().leaf();
+ t_path output = change_extension(directory / leaf, ".sh");
+ t_path tmp = change_extension(directory / leaf, ".pgm");
+
+ prop = hue_test(dir_iter->path().string(),
+ output.string(),
+ tmp.string(),
+ 20);
+
+ std::cout << output << " : " << prop << std::endl;
+ std::cerr << output << " : " << prop << std::endl;
+ }
+ }
+ }
+
+ return 0;
+}
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-color.txt b/scribo/sandbox/green/exp/annotating/hue/text-color.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-color.txt
copy to scribo/sandbox/green/exp/annotating/hue/text-color.txt
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-img.txt b/scribo/sandbox/green/exp/annotating/hue/text-img.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-img.txt
copy to scribo/sandbox/green/exp/annotating/hue/text-img.txt
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-only.txt b/scribo/sandbox/green/exp/annotating/hue/text-only.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-only.txt
copy to scribo/sandbox/green/exp/annotating/hue/text-only.txt
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/nb_color/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/nb_color/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/nb_color/nb_color.cc b/scribo/sandbox/green/exp/annotating/nb_color/nb_color.cc
new file mode 100644
index 0000000..2331c61
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/nb_color/nb_color.cc
@@ -0,0 +1,171 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Compute the number of colors in an image.
+///
+/// Build histogram of colors and count the bins different from zero.
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/math/count.hh>
+#include <mln/accu/stat/histo3d_rgb.hh>
+
+#include <mln/binarization/threshold.hh>
+
+#include <mln/core/alias/neighb3d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/image3d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/fun/v2v/rgb8_to_rgbn.hh>
+
+// #include <mln/morpho/opening/volume.hh>
+
+#include <mln/io/ppm/load.hh>
+
+#include <mln/pw/value.hh>
+#include <mln/pw/cst.hh>
+
+#include <mln/util/timer.hh>
+
+#include <mln/value/rgb8.hh>
+//#include <mln/value/rgb.hh>
+
+
+/// \brief Count the colors.
+///
+/// \param[in] image the name of the image to process.
+///
+/// \return the number of colors.
+///
+/// Count the color by building histogram. Strange filtering is
+/// done. We use also the technique of regional maxima in
+/// comment. Quantification is done to reduce the size of the
+/// histogram as well.
+
+// n < 8, n is the degree of quantification
+template <unsigned n>
+unsigned count_image_color(const std::string& image)
+{
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::rgb<n> t_rgbn;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_rgbn> t_image2d_rgbn;
+ typedef mln::image3d<unsigned> t_histo3d;
+ typedef mln::image3d<bool> t_histo3d_bool;
+ typedef mln::fun::v2v::rgb8_to_rgbn<n> t_rgb8_to_rgbn;
+ typedef mln::accu::meta::stat::histo3d_rgb t_histo3d_fun;
+ typedef mln::accu::meta::math::count t_count_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_rgbn input_rgbn;
+ t_image2d_rgbn output_rgbn;
+ t_histo3d histo;
+// t_histo3d opened;
+ t_histo3d_bool filtered;
+
+ mln::io::ppm::load(input_rgb8, image.c_str());
+
+ unsigned nb_pixel = input_rgb8.ncols() * input_rgb8.nrows();
+ unsigned min_volume = (unsigned)(nb_pixel * 0.0001);
+ unsigned nb_color = 0;
+
+// input_rgbn = mln::data::transform(input_rgb8, t_rgb8_to_rgbn());
+ histo = mln::data::compute(t_histo3d_fun(), input_rgb8);
+// opened = mln::morpho::opening::volume(histo, mln::c6(), min_volume);
+ filtered = mln::binarization::threshold(histo, min_volume);
+ nb_color = mln::data::compute(t_count_fun(),
+ (filtered|(mln::pw::value(filtered)!=0)).rw());
+
+ return nb_color;
+}
+
+
+/// \brief Main entry.
+///
+/// The main routine makes the base driver job. It looks after many
+/// directories and lists every images in it. We use the boost library
+/// to do it. Statistics are computed on the number of colors. The
+/// first idea was to answer the question is this descriptor allow to
+/// recognize a specific base.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ //typedef boost::filesystem::initial_path<t_path()> t_init_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+ t_path full_path[] = {t_path(ANNOTATING_1_BILL_IMG_PATH),
+ t_path(ANNOTATING_1_FAX_IMG_PATH),
+ t_path(ANNOTATING_1_HANDWRITTEN_IMG_PATH),
+ t_path(ANNOTATING_1_LOGO_IMG_PATH),
+ t_path(ANNOTATING_1_MAP_IMG_PATH),
+ t_path(ANNOTATING_1_PHOTO_IMG_PATH),
+ t_path(ANNOTATING_1_SCREENSHOT_IMG_PATH),
+ t_path(ANNOTATING_1_SLIDE_IMG_PATH),
+ t_path(ANNOTATING_1_TYPED_IMG_PATH)};
+
+ for (int i = 0; i < 9; ++i)
+ {
+ std::cerr << "entering " << full_path[i] << std::endl;
+ std::cout << "entering " << full_path[i] << std::endl;
+
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ unsigned count = 0;
+ unsigned sum1 = 0;
+ unsigned sum2 = 0;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ unsigned val = count_image_color<8>(dir_iter->path().string());
+
+ ++count;
+ sum1 += val;
+ sum2 += val*val;
+
+ std::cout << dir_iter->path().string() << " => " << val << std::endl;
+ }
+
+ float mean = sum1 / count;
+ float var = ((float)sum2 / count) - (mean * mean);
+
+ std::cout << "mean : " << mean << std::endl;
+ std::cout << "var : " << var << std::endl;
+ }
+ }
+
+ return 0;
+}
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/saturation/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/saturation/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/saturation/saturation.cc b/scribo/sandbox/green/exp/annotating/saturation/saturation.cc
new file mode 100644
index 0000000..b5834a1
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/saturation/saturation.cc
@@ -0,0 +1,175 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet saturation operator [millet.phd.2008.pdf]
+///
+/// This is the Millet code for moving from RGB space to Sat
+/// one. Formulae are classical, we can find them on the web.
+///
+/// Val = max(R,G,B).
+/// Sat = (max(R,G,B) - min(R,G,B))/max(R,G,B).
+/// IF R = max(R,G,B) THEN Hue = 60 * [(V-B)/(max(R,G,B)-min(R,G,B))].
+/// IF G = max(R,G,B) THEN Hue = 60 * [2 + (B-R)/(max(R,G,B)-min(R,G,B))].
+/// IF B = max(R,G,B) THEN Hue = 60 * [4 + (R-G)/(max(R,G,B)-min(R,G,B))].
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/stretch.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/math/max.hh>
+#include <mln/math/min.hh>
+
+#include <mln/geom/nsites.hh>
+
+#include <mln/fun/v2v/rgb_to_saturation_map.hh>
+
+#include <mln/io/ppm/load.hh>
+//#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/value/rgb8.hh>
+
+/// \brief Sum all the bins of the histogram.
+///
+/// \param[in] img the histogram based on image.
+///
+/// \return the sum of the overall bins.
+///
+/// Sum evry bins and return the result.
+template <typename I>
+unsigned count_histo(const mln::Image<I>& img_)
+{
+ const I& img = exact(img_);
+
+ mln_precondition(img.is_valid());
+
+ unsigned result = 0;
+
+ mln_piter(I) p(img.domain());
+
+ for_all(p)
+ result += img(p);
+
+ return result;
+}
+
+/// \brief The saturation test.
+///
+/// \param[in] input the name of the input image.
+/// \param[in] output the name of the histogram to output.
+/// \param[in] threshold for deciding which is low saturation or not.
+///
+/// \return the proportion of pixels that pass the test.
+///
+/// Load the input image, transform it to get the saturation_map and compute
+/// the histogram. Then count the number of pixels that are under the threshold.
+/// Then return the proportion of pixels.
+float saturation_test(const std::string input,
+ const std::string output,
+// const std::string tmp,
+ const unsigned threshold)
+
+{
+ typedef mln::fun::v2v::rgb_to_saturation_map<8> t_rgb_to_saturation_map;
+
+ mln::image2d<mln::value::rgb8> input_rgb8;
+ mln::image2d<mln::value::int_u8> map;
+ mln::image1d<unsigned> histo;
+ unsigned cnt1;
+ unsigned cnt2;
+ float prop;
+
+ mln::io::ppm::load(input_rgb8, input.c_str());
+
+ map = mln::data::transform(input_rgb8, t_rgb_to_saturation_map());
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(), map);
+ cnt1 = count_histo(histo | mln::box1d(mln::point1d(0),
+ mln::point1d(threshold)));
+ cnt2 = mln::geom::nsites(input_rgb8);
+ prop = ((100.0 * cnt1) / cnt2);
+
+ mln::io::plot::save_image_sh(histo, output.c_str());
+// mln::io::pgm::save(map, tmp.c_str());
+
+ return prop;
+}
+
+
+/// \brief the main entry.
+///
+/// This is a front end for image processing routine. It manages the
+/// calling of every image in the database.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+ t_path full_path[] = {t_path(ICDAR_20P_PPM_IMG_PATH)};
+
+ for (int i = 0; i < 1; ++i)
+ {
+ std::cout << "entering " << full_path[i] << std::endl;
+
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ float prop = 0.0;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ // concatenation de chaine
+ t_path directory(ANNOTATING_ICDAR_RET_PATH);
+ t_path leaf = dir_iter->path().leaf();
+ t_path output = change_extension(directory / leaf, ".sh");
+ t_path tmp = change_extension(directory / leaf, ".pgm");
+
+ prop = saturation_test(dir_iter->path().string(),
+ output.string(),
+// tmp.string(),
+ 25);
+
+ std::cout << output << " : " << prop << std::endl;
+ std::cerr << output << " : " << prop << std::endl;
+ }
+ }
+ }
+
+ return 0;
+}
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-color.txt b/scribo/sandbox/green/exp/annotating/saturation/text-color.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-color.txt
copy to scribo/sandbox/green/exp/annotating/saturation/text-color.txt
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-img.txt b/scribo/sandbox/green/exp/annotating/saturation/text-img.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-img.txt
copy to scribo/sandbox/green/exp/annotating/saturation/text-img.txt
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-only.txt b/scribo/sandbox/green/exp/annotating/saturation/text-only.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-only.txt
copy to scribo/sandbox/green/exp/annotating/saturation/text-only.txt
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/stddev_color/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/stddev_color/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/stddev_color/stddev_color.cc b/scribo/sandbox/green/exp/annotating/stddev_color/stddev_color.cc
new file mode 100644
index 0000000..365a9c3
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/stddev_color/stddev_color.cc
@@ -0,0 +1,216 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet clipart detection [millet.phd.2008.pdf]
+///
+/// The aim of this descriptor is to recognize clipart. To do this, we
+/// assume that clipart have their histogram concentrated around their
+/// mode. This is particularly true if the clipart is design by hand,
+/// because a very small number of grey tones or colors are used to
+/// draw it. But sometimes, computer assists their creation and we can
+/// find some continuous set of tones and this artefact create noise
+/// for the detection technique describe bellow.
+
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/max_site.hh>
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/core/macros.hh>
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/fill.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/fun/v2v/rgb8_to_int_u8.hh>
+
+#include <mln/io/ppm/load.hh>
+
+#include <mln/math/sqr.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/value/rgb8.hh>
+#include <mln/value/int_u.hh>
+
+/// \brief The R function of Millet
+///
+/// \param[in] p the position of the pic.
+/// \param[in] histo_p the histo value of the pic.
+/// \param[in] x the position of the element which we compute the contrib.
+/// \param[in] histo_x the histo value of that element.
+///
+/// \result the contribution of the element x.
+///
+/// This function compute the variance-like contribution of an element
+/// x linked to the pic of the histogram. In fact, every thing is like
+/// we compute a square distance-like between the element x and the
+/// pic in the normalized histogram. Notice that the normalized
+/// histogram is the histogram divide by the value of it's pic. So at
+/// the pic, the value equals 1. It's a current representation of the
+/// histogram in image processing, we can find it in gimp for exemple.
+float r(short p, unsigned histo_p, short x, unsigned histo_x)
+{
+ float result = mln::math::sqr(((float)histo_x / histo_p) * (x-p));
+
+ return result;
+}
+
+/// Brief compute the whole deviation of Millet
+///
+/// \param[in] image the input image to analyze.
+///
+/// \return the deviation.
+///
+/// The deviation uses the R function. It stats by finding the pic. If
+/// the pic is near the rigth border of the histo, compute the R
+/// function on the left neighbouring of the pic. If the pic is near
+/// the left border of the histo, compute the R function on the right
+/// neigbouring. Otherwise, compute the average of the right and left
+/// results. The selected neighbouring is composed of five pixels at
+/// the right or at the left of the pic. The detection of clipart
+/// assumes that the majority of the energy of the histogram is closed
+/// to the pic (five pixels around it).
+float stddev_color(const std::string& image)
+{
+ typedef mln::point1d t_point1d;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::image1d<unsigned> t_histo1d;
+ typedef mln::fun::v2v::rgb8_to_int_u8 t_rgb8_to_int_u8;
+ typedef mln::accu::meta::stat::histo1d t_histo1d_fun;
+ typedef mln::accu::max_site<t_histo1d> t_max_site_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_int_u8 input_int_u8;
+ t_histo1d histo;
+ t_point1d max_site;
+
+ mln::io::ppm::load(input_rgb8, image.c_str());
+ input_int_u8 = mln::data::transform(input_rgb8, t_rgb8_to_int_u8());
+ histo = mln::data::compute(t_histo1d_fun(), input_int_u8);
+
+ // Find the peak of the histogram
+ unsigned v_max = mln::opt::at(histo, 0);
+ short p_max = 0;
+
+ mln_piter_(t_histo1d) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ // Compute the specific stddev
+
+ float stddev_low = 0.0;
+ float stddev_up = 0.0;
+ float stddev = 0.0;
+
+ if (250 > p_max)
+ for (short i = p_max+1; i < p_max+6; ++i)
+ stddev_up += r(p_max, mln::opt::at(histo,p_max),
+ i, mln::opt::at(histo,i));
+
+ if (5 < p_max)
+ for (short i = p_max-1; i > p_max-6; --i)
+ stddev_low += r(p_max, mln::opt::at(histo,p_max),
+ i, mln::opt::at(histo,i));
+
+ stddev = (250 < p_max)? stddev_low : (5 > p_max)? stddev_up :
+ (stddev_low + stddev_up)/2;
+
+ return stddev;
+}
+
+
+/// \brief Main entry.
+///
+/// Front end for image processing. It is in the main routine where we
+/// go through the image data base (using boost to do it).
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+ t_path full_path[] = {t_path(ANNOTATING_1_BILL_IMG_PATH),
+ t_path(ANNOTATING_1_FAX_IMG_PATH),
+ t_path(ANNOTATING_1_HANDWRITTEN_IMG_PATH),
+ t_path(ANNOTATING_1_LOGO_IMG_PATH),
+ t_path(ANNOTATING_1_MAP_IMG_PATH),
+ t_path(ANNOTATING_1_PHOTO_IMG_PATH),
+ t_path(ANNOTATING_1_SCREENSHOT_IMG_PATH),
+ t_path(ANNOTATING_1_SLIDE_IMG_PATH),
+ t_path(ANNOTATING_1_TYPED_IMG_PATH)};
+
+ for (int i = 0; i < 9; ++i)
+ {
+ std::cerr << "entering " << full_path[i] << std::endl;
+ std::cout << "entering " << full_path[i] << std::endl;
+
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ float count = 0;
+ float sum1 = 0;
+ float sum2 = 0;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ float val = stddev_color(dir_iter->path().string());
+
+ ++count;
+ sum1 += val;
+ sum2 += val*val;
+
+ std::cout << dir_iter->path().string() << " => " << val << std::endl;
+ }
+
+ float mean = sum1 / count;
+ float var = ((float)sum2 / count) - (mean * mean);
+
+ std::cout << "mean : " << mean << std::endl;
+ std::cout << "var : " << var << std::endl;
+ }
+ }
+
+ return 0;
+}
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/stddev_color_16/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/stddev_color_16/Makefile.am
diff --git a/scribo/sandbox/green/exp/annotating/stddev_color_16/stddev_color_16.cc b/scribo/sandbox/green/exp/annotating/stddev_color_16/stddev_color_16.cc
new file mode 100644
index 0000000..fc55547
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/stddev_color_16/stddev_color_16.cc
@@ -0,0 +1,277 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet clipart detection [millet.phd.2008.pdf]
+///
+/// The aim of this descriptor is to recognize clipart. To do this, we
+/// assume that clipart have their histogram concentrated around their
+/// mode. This is particularly true if the clipart is design by hand,
+/// because a very small number of grey tones or colors are used to
+/// draw it. But sometimes, computer assists their creation and we can
+/// find some continuous set of tones and this artefact create noise
+/// for the detection technique describe bellow. When photographies
+/// has some large uniform border, the detection can fail. To improve
+/// the method, Millet decide to subdivise the image in 16 sub images
+/// on which it applies the test.
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/max_site.hh>
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/core/macros.hh>
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/image3d.hh>
+
+#include <mln/debug/println.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/fill.hh>
+#include <mln/data/transform.hh>
+#include <mln/data/paste.hh>
+
+#include <mln/fun/v2v/rgb8_to_int_u8.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/math/sqr.hh>
+#include <mln/math/max.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/value/rgb8.hh>
+#include <mln/value/int_u.hh>
+
+/// \brief The R function of Millet
+///
+/// \param[in] p the position of the pic.
+/// \param[in] histo_p the histo value of the pic.
+/// \param[in] x the position of the element which we compute the contrib.
+/// \param[in] histo_x the histo value of that element.
+///
+/// \result the contribution of the element x.
+///
+/// This function compute the variance-like contribution of an element
+/// x linked to the pic of the histogram. In fact, every thing is like
+/// we compute a square distance-like between the element x and the
+/// pic in the normalized histogram. Notice that the normalized
+/// histogram is the histogram divide by the value of it's pic. So at
+/// the pic, the value equals 1. It's a current representation of the
+/// histogram in image processing, we can find it in gimp for exemple.
+float r(short p, unsigned histo_p, short x, unsigned histo_x)
+{
+ float result = mln::math::sqr(((float)histo_x / histo_p) * (x-p));
+
+ return result;
+}
+
+/// Brief compute the whole deviation of Millet
+///
+/// \param[in] input_int_u8 the 8 bits input image to analyze.
+/// \param[in] name_histo the name of the output histogram.
+/// \param[in] name_image the name of the ouput sub image.
+///
+/// \return the deviation, but at this time nothing..
+///
+/// The deviation uses the R function. It stats by finding the pic. If
+/// the pic is near the rigth border of the histo, compute the R
+/// function on the left neighbouring of the pic. If the pic is near
+/// the left border of the histo, compute the R function on the right
+/// neigbouring. Otherwise, compute the average of the right and left
+/// results. The selected neighbouring is composed of five pixels at
+/// the right or at the left of the pic. The detection of clipart
+/// assumes that the majority of the energy of the histogram is closed
+/// to the pic (five pixels around it).
+float stddev_color(mln::image2d<mln::value::int_u8> input_int_u8)
+{
+ typedef mln::point1d t_point1d;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::image1d<unsigned> t_histo1d;
+ typedef mln::fun::v2v::rgb8_to_int_u8 t_rgb8_to_int_u8;
+ typedef mln::accu::meta::stat::histo1d t_histo1d_fun;
+ typedef mln::accu::max_site<t_histo1d> t_max_site_fun;
+
+ t_histo1d histo;
+
+ histo = mln::data::compute(t_histo1d_fun(), input_int_u8);
+
+ // Find the peak of the histogram
+ unsigned v_max = mln::opt::at(histo, 0);
+ short p_max = 0;
+
+ mln_piter_(t_histo1d) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ // Compute the specific stddev
+
+ float stddev_low = 0.0;
+ float stddev_up = 0.0;
+ float stddev = 0.0;
+
+ if (250 > p_max)
+ for (short i = p_max+1; i < p_max+6; ++i)
+ stddev_up += r(p_max, mln::opt::at(histo,p_max),
+ i, mln::opt::at(histo,i));
+
+ if (5 < p_max)
+ for (short i = p_max-1; i > p_max-6; --i)
+ stddev_low += r(p_max, mln::opt::at(histo,p_max),
+ i, mln::opt::at(histo,i));
+
+ stddev = (250 < p_max)? stddev_low : (5 > p_max)? stddev_up :
+ (stddev_low + stddev_up)/2;
+
+ return stddev;
+}
+
+/// \brief Divide the image in 16 sub images.
+///
+/// \param[in] image the input image.
+///
+/// \result nothing.
+///
+/// Divive the input image in 16 by uniform and geometrical
+/// method. When a sub image is ready, call the stddev routine to show
+/// stats on it.
+float stddev_color_16(const std::string& image)
+{
+ typedef mln::point1d t_point1d;
+ typedef mln::value::rgb8 t_rgb8;
+ typedef mln::value::int_u8 t_int_u8;
+ typedef mln::image2d<t_rgb8> t_image2d_rgb8;
+ typedef mln::image2d<t_int_u8> t_image2d_int_u8;
+ typedef mln::image1d<unsigned> t_histo1d;
+ typedef mln::fun::v2v::rgb8_to_int_u8 t_rgb8_to_int_u8;
+ typedef mln::accu::meta::stat::histo1d t_histo1d_fun;
+ typedef mln::accu::max_site<t_histo1d> t_max_site_fun;
+
+ t_image2d_rgb8 input_rgb8;
+ t_image2d_int_u8 input_int_u8;
+
+ mln::io::ppm::load(input_rgb8, image.c_str());
+ input_int_u8 = mln::data::transform(input_rgb8, t_rgb8_to_int_u8());
+
+ // IMAGE SPLITTING PHASE
+ mln::box2d domain = input_int_u8.domain();
+ mln::point2d pmin = domain.pmin();
+ mln::point2d pmax = domain.pmax();
+
+ unsigned sz_row = (pmax.row() - pmin.row())/ 4;
+ unsigned sz_col = (pmax.col() - pmin.col())/ 4;
+ float stddev = 0.0;
+
+ // Divide the domain in nine sub-domains.
+ for (unsigned i = 0; i < 4; ++i)
+ for (unsigned j = 0; j < 4; ++j)
+ {
+ mln::point2d min(pmin.row()+sz_row*i,pmin.col()+sz_col*j);
+ mln::point2d max(pmin.row()+sz_row*(i+1),pmin.col()+sz_col*(j+1));
+ mln::box2d dom(min,max);
+
+ // Save it
+ t_image2d_int_u8 input_1o16_int_u8(dom);
+
+ mln::data::paste(input_int_u8 | dom, input_1o16_int_u8);
+
+ stddev = mln::math::max(stddev, stddev_color(input_1o16_int_u8));
+ }
+
+ return stddev;
+}
+
+
+/// \brief Main entry.
+///
+/// Just a front end for image processing routine. Use boost to go
+/// through the image database.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+ t_path full_path[] = {t_path(ANNOTATING_1_BILL_IMG_PATH),
+ t_path(ANNOTATING_1_FAX_IMG_PATH),
+ t_path(ANNOTATING_1_HANDWRITTEN_IMG_PATH),
+ t_path(ANNOTATING_1_LOGO_IMG_PATH),
+ t_path(ANNOTATING_1_MAP_IMG_PATH),
+ t_path(ANNOTATING_1_PHOTO_IMG_PATH),
+ t_path(ANNOTATING_1_SCREENSHOT_IMG_PATH),
+ t_path(ANNOTATING_1_SLIDE_IMG_PATH),
+ t_path(ANNOTATING_1_TYPED_IMG_PATH)};
+
+ for (int i = 0; i < 9; ++i)
+ {
+ std::cerr << "entering " << full_path[i] << std::endl;
+ std::cout << "entering " << full_path[i] << std::endl;
+
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ float count = 0;
+ float sum1 = 0;
+ float sum2 = 0;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ float val = stddev_color_16(dir_iter->path().string());
+
+ ++count;
+ sum1 += val;
+ sum2 += val*val;
+
+ std::cout << dir_iter->path().string() << " => " << val << std::endl;
+ }
+
+ float mean = sum1 / count;
+ float var = ((float)sum2 / count) - (mean * mean);
+
+ std::cout << "mean : " << mean << std::endl;
+ std::cout << "var : " << var << std::endl;
+ }
+ }
+
+ return 0;
+}
diff --git a/scribo/sandbox/green/exp/regional_maxima/Makefile.am b/scribo/sandbox/green/exp/annotating/value/Makefile.am
similarity index 100%
copy from scribo/sandbox/green/exp/regional_maxima/Makefile.am
copy to scribo/sandbox/green/exp/annotating/value/Makefile.am
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-color.txt b/scribo/sandbox/green/exp/annotating/value/text-color.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-color.txt
copy to scribo/sandbox/green/exp/annotating/value/text-color.txt
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-img.txt b/scribo/sandbox/green/exp/annotating/value/text-img.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-img.txt
copy to scribo/sandbox/green/exp/annotating/value/text-img.txt
diff --git a/milena/sandbox/green/exp/annotating/achromastism/text-only.txt b/scribo/sandbox/green/exp/annotating/value/text-only.txt
similarity index 100%
copy from milena/sandbox/green/exp/annotating/achromastism/text-only.txt
copy to scribo/sandbox/green/exp/annotating/value/text-only.txt
diff --git a/scribo/sandbox/green/exp/annotating/value/value.cc b/scribo/sandbox/green/exp/annotating/value/value.cc
new file mode 100644
index 0000000..cade88b
--- /dev/null
+++ b/scribo/sandbox/green/exp/annotating/value/value.cc
@@ -0,0 +1,468 @@
+// Copyright (C) 2007, 2008, 2009, 2010 EPITA LRDE
+//
+// This file 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/>.
+//
+// As a special exception, you may use this file as part of a free
+// software project without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to produce
+// an executable, this file does not by itself cause the resulting
+// executable to be covered by the GNU General Public License. This
+// exception does not however invalidate any other reasons why the
+// executable file might be covered by the GNU General Public License.
+
+/// \file
+///
+/// \brief Implement the Millet value operator [millet.phd.2008.pdf]
+///
+/// This is the Millet code for moving from RGB space to value
+/// one. Formulae are classical, we can find them on the web.
+///
+/// Val = max(R,G,B).
+/// Sat = (max(R,G,B) - min(R,G,B))/max(R,G,B).
+/// IF R = max(R,G,B) THEN Hue = 60 * [(V-B)/(max(R,G,B)-min(R,G,B))].
+/// IF G = max(R,G,B) THEN Hue = 60 * [2 + (B-R)/(max(R,G,B)-min(R,G,B))].
+/// IF B = max(R,G,B) THEN Hue = 60 * [4 + (R-G)/(max(R,G,B)-min(R,G,B))].
+#include <iostream>
+#include <sstream>
+#include <boost/filesystem.hpp>
+
+#include <mln/img_path.hh>
+
+#include <mln/accu/stat/histo1d.hh>
+
+#include <mln/core/image/image1d.hh>
+#include <mln/core/image/image2d.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+
+#include <mln/data/compute.hh>
+#include <mln/data/stretch.hh>
+#include <mln/data/transform.hh>
+
+#include <mln/literal/colors.hh>
+#include <mln/literal/grays.hh>
+
+#include <mln/math/max.hh>
+#include <mln/math/min.hh>
+
+#include <mln/opt/at.hh>
+
+#include <mln/geom/nsites.hh>
+
+#include <mln/fun/v2v/rgb_to_value_map.hh>
+
+#include <mln/io/ppm/load.hh>
+#include <mln/io/pgm/save.hh>
+#include <mln/io/plot/save_image_sh.hh>
+
+#include <mln/value/rgb8.hh>
+
+/// \brief Label the value.
+///
+/// \param[in] val the value in [0..255].
+///
+/// \return the reference color.
+///
+/// Segment the grey value in three classes.
+mln::value::rgb8 label_val(const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (82 > val)
+ result = mln::literal::black;
+ else if (179 > val)
+ result= mln::literal::medium_gray;
+ else
+ result = mln::literal::white;
+
+ return result;
+}
+
+
+/// \brief Label color with orange reference or brown reference.
+///
+/// \param[in] color the rgb8 color.
+/// \param[in] sat the HSV saturation.
+/// \param[in] val the HSV value.
+///
+/// \return the reference color with which it has been associated to.
+///
+/// Discriminate between orange and brown colors which are at the same
+/// position on the hue wheel.
+mln::value::rgb8 label_orange_or_brown(const mln::value::rgb8 color,
+ const mln::value::int_u8 sat,
+ const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (mln::literal::orange == color)
+ {
+ unsigned dist_orange = mln::math::abs(sat - 184)
+ + mln::math::abs(val - 65);
+
+ unsigned dist_brown = mln::math::abs(sat - 255)
+ + mln::math::abs(val - 125);
+
+ if (dist_orange < dist_brown)
+ result = mln::literal::orange;
+ else
+ result = mln::literal::brown;
+ }
+ else
+ result = color;
+
+ return result;
+}
+
+/// \brief Label between yellow and green color.
+///
+/// \param[in] color the rgb8 color.
+/// \param[in] val the HSV value.
+///
+/// \return the reference color associated to that color.
+///
+/// Segment between yellow and green because the discrimination is not
+/// so easy based on the hue wheel.
+mln::value::rgb8 label_yellow_or_green(const mln::value::rgb8 color,
+ const mln::value::int_u8 val)
+{
+ mln::value::rgb8 result;
+
+ if (mln::literal::yellow == color)
+ {
+ // Is it green or yellow ?
+ if (80 > val)
+ result = mln::literal::green;
+ else
+ result = mln::literal::yellow;
+ }
+ else
+ return color;
+
+ return result;
+}
+
+/// \brief Label hue color.
+///
+/// \param[in] hue the HSV hue canal for a pixel.
+///
+/// \return a hue segmentation of the hue wheel.
+///
+/// The old classification given by Millet is commented. Mine is ready
+/// to use. We need to change reference colors to make the primary
+/// colors, the secondary ones, etc...
+mln::value::rgb8 label_hue(const mln::value::int_u8 hue)
+{
+ mln::value::rgb8 result;
+
+ if (14 > hue)
+ result = mln::literal::red;
+ else if (29 > hue)
+ result = mln::literal::orange;
+ else if (45 > hue)
+ result = mln::literal::yellow;
+ else if (113 > hue)
+ result = mln::literal::green;
+ else if (149 > hue)
+ result = mln::literal::cyan;
+ else if (205 > hue)
+ result = mln::literal::blue;
+ else if (235 > hue)
+ result = mln::literal::violet;
+ else if (242 > hue)
+ result = mln::literal::pink;
+ else
+ result = mln::literal::red;
+
+ return result;
+}
+
+/// \brief Sum all the bins of the histogram.
+///
+/// \param[in] img the histogram based on image.
+///
+/// \return the sum of the overall bins.
+///
+/// Sum evry bins and return the result.
+template <typename I>
+unsigned count_histo(const mln::Image<I>& img_)
+{
+ const I& img = exact(img_);
+
+ mln_precondition(img.is_valid());
+
+ unsigned result = 0;
+
+ mln_piter(I) p(img.domain());
+
+ for_all(p)
+ result += img(p);
+
+ return result;
+}
+
+/// \brief Detect the peak of the histogram.
+///
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the position of the peak.
+///
+/// This is a typical accumulator use case but as it needs the
+/// position it couldn't be one of them. Look at the last maxima in
+/// the curve and return its position.
+template <typename I>
+unsigned peak_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the peak of the histogram
+ unsigned v_max = mln::opt::at(histo, 0);
+ short p_max = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ if (v_max < histo(p))
+ {
+ v_max = histo(p);
+ p_max = p.ind();
+ }
+ }
+
+ return p_max;
+}
+
+/// \brief Compute the average of the histogram.
+///
+/// \param[in] histo_ the image which represents the histogram.
+///
+/// \return the average of the histogram.
+///
+/// This code should be an accumulator. It computes the mean of the
+/// histogram, just stats in loop. Compute the sum, compute the
+/// ponderate sum and divide the second by the first.
+template <typename I>
+unsigned mean_histo(const mln::Image<I>& histo_)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Find the mean of the histogram
+ float sum = 0;
+ float mean = 0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ sum += histo(p);
+ mean += p.ind()*histo(p);
+ }
+
+ mean = mean / sum;
+
+ return mean;
+}
+
+/// \brief The R function of Millet
+///
+/// \param[in] p the position of the pic.
+/// \param[in] histo_p the histo value of the pic.
+/// \param[in] x the position of the element which we compute the contrib.
+/// \param[in] histo_x the histo value of that element.
+///
+/// \result the contribution of the element x.
+///
+/// This function compute the variance-like contribution of an element
+/// x linked to the pic of the histogram. In fact, every thing is like
+/// we compute a square distance-like between the element x and the
+/// pic in the normalized histogram. Notice that the normalized
+/// histogram is the histogram divide by the value of it's pic. So at
+/// the pic, the value equals 1. It's a current representation of the
+/// histogram in image processing, we can find it in gimp for exemple.
+float r(short p, unsigned histo_p, short x, unsigned histo_x)
+{
+ float result = mln::math::sqr(((float)histo_x / histo_p) * (x-p));
+
+ return result;
+}
+
+
+/// \brief The stddev3 is an internal stuff.
+///
+/// \param[in] histo_ the image which represents the histogram.
+/// \param[in] peak the position of the histogram peak.
+///
+/// \return simple computing of deviation.
+///
+/// This is an internal stuff. It splits the computing for easy
+/// reusing practice. Sum the R contribution.
+template <typename I>
+float stddev3(const mln::Image<I>& histo_, unsigned peak)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ // Compute stddev
+
+ float stddev = 0.0;
+
+ mln_piter(I) p(histo.domain());
+
+ for_all(p)
+ {
+ stddev += r((short)peak, mln::opt::at(histo,peak), p.ind(), histo(p));
+ }
+
+ return stddev;
+}
+
+
+/// Brief compute the whole deviation of Millet
+///
+/// \param[in] image the input image to analyze.
+/// \param[in] peak the peak of the histogram.
+/// \param[in] limit the threshold to compute the contribution.
+///
+/// \return the deviation.
+///
+/// The deviation uses the R function. It stats by finding the pic. If
+/// the pic is near the rigth border of the histo, compute the R
+/// function on the left neighbouring of the pic. If the pic is near
+/// the left border of the histo, compute the R function on the right
+/// neigbouring. Otherwise, compute the average of the right and left
+/// results. The selected neighbouring is composed of five pixels at
+/// the right or at the left of the pic. The detection of clipart
+/// assumes that the majority of the energy of the histogram is closed
+/// to the pic (five pixels around it). The test is generalized by
+/// making constants as parameters.
+template <typename I>
+float stddev2(const mln::Image<I>& histo_, unsigned peak, unsigned limit)
+{
+ const I& histo = exact(histo_);
+
+ mln_precondition(histo.is_valid());
+
+ float stddev_low = 0.0;
+ float stddev_up = 0.0;
+ float ret = 0.0;
+
+ // A transformer avec des iterators
+
+ if (250 > peak)
+ stddev_up = stddev3(histo |mln::box1d(mln::point1d(peak+1),
+ mln::point1d(peak+limit)), peak);
+
+ if (5 < peak)
+ stddev_low = stddev3(histo |mln::box1d(mln::point1d(peak-limit),
+ mln::point1d(peak-1)), peak);
+
+ ret = (250 < peak)? stddev_low : (5 > peak)? stddev_up :
+ (stddev_low + stddev_up)/2;
+
+ return ret;
+}
+
+
+/// \brief This is the main Millet test.
+///
+/// \param[in] input the name of the input image.
+/// \param[in] output the name of result histogram.
+/// \param[in] tmp the name of the output value (HSV) map.
+/// \param[in] threshold the range around the peak where R is computed.
+///
+/// \return the proportion of pixels that pass the test.
+float value_test(const std::string input,
+ const std::string output,
+ const std::string tmp,
+ const unsigned threshold)
+
+{
+ typedef mln::fun::v2v::rgb_to_value_map<8> t_rgb_to_value_map;
+
+ mln::image2d<mln::value::rgb8> input_rgb8;
+ mln::image2d<mln::value::int_u8> map;
+ mln::image1d<unsigned> histo;
+ unsigned cnt1;
+ unsigned cnt2;
+ float prop;
+ unsigned peak;
+
+ mln::io::ppm::load(input_rgb8, input.c_str());
+
+ map = mln::data::transform(input_rgb8, t_rgb_to_value_map());
+ histo = mln::data::compute(mln::accu::meta::stat::histo1d(), map);
+ peak = peak_histo(histo); // mean_histo(histo);
+ prop = stddev2(histo, peak, threshold);
+// cnt1 = count_histo(histo | mln::box1d(mln::point1d(peak-threshold),
+// mln::point1d(peak+threshold)));
+// cnt2 = mln::geom::nsites(input_rgb8);
+// prop = ((100.0 * cnt1) / cnt2);
+
+ mln::io::plot::save_image_sh(histo, output.c_str());
+ mln::io::pgm::save(map, tmp.c_str());
+
+ return prop;
+}
+
+
+/// \brief The main entry.
+///
+/// This is the front end for using directories with boost. It calls
+/// the true image processing routine.
+int main()
+{
+ typedef boost::filesystem::path t_path;
+ typedef boost::filesystem::directory_iterator t_iter_path;
+
+ t_path full_path[] = {t_path(ICDAR_20P_PPM_IMG_PATH)};
+
+ for (int i = 0; i < 1; ++i)
+ {
+ std::cout << "entering " << full_path[i] << std::endl;
+
+ if (boost::filesystem::exists(full_path[i]) &&
+ boost::filesystem::is_directory(full_path[i]))
+ {
+ boost::filesystem::system_complete(full_path[i]);
+ const t_iter_path end_iter;
+ float prop = 0.0;
+
+ for (t_iter_path dir_iter(full_path[i]); end_iter != dir_iter; ++dir_iter)
+ {
+ // concatenation de chaine
+ t_path directory(ANNOTATING_RET_PATH);
+ t_path leaf = dir_iter->path().leaf();
+ t_path output = change_extension(directory / leaf, ".sh");
+ t_path tmp = change_extension(directory / leaf, ".pgm");
+
+ prop = value_test(dir_iter->path().string(),
+ output.string(),
+ tmp.string(),
+ 15);
+
+ std::cout << output << " : " << prop << std::endl;
+ std::cerr << output << " : " << prop << std::endl;
+ }
+ }
+ }
+
+ return 0;
+}
diff --git a/scribo/sandbox/green/mln/clustering/kmean2d.hh b/scribo/sandbox/green/mln/clustering/kmean2d.hh
index 51aaf49..4539083 100644
--- a/scribo/sandbox/green/mln/clustering/kmean2d.hh
+++ b/scribo/sandbox/green/mln/clustering/kmean2d.hh
@@ -150,7 +150,7 @@ namespace mln
{
/// Type definitions.
/// \brief A few type definitions to limit the refactoring impact.
- ///{
+ /// \{
typedef value::rgb<8> t_rgb;
typedef value::label<8> t_label;
typedef value::rg<n> t_value;
@@ -179,7 +179,7 @@ namespace mln
typedef util::array<t_mean_set> t_mean_cnv;
typedef image1d<t_result1d> t_variance_val;
typedef util::array<t_variance_val> t_variance_cnv;
- ///}
+ /// \}
/// \brief Constructor.
/// \param[in] point : the image as the population of pixels.
diff --git a/scribo/sandbox/green/mln/fun/p2b/achromatic.hh b/scribo/sandbox/green/mln/fun/p2b/achromatic.hh
index 1f45b2d..91a2dc5 100644
--- a/scribo/sandbox/green/mln/fun/p2b/achromatic.hh
+++ b/scribo/sandbox/green/mln/fun/p2b/achromatic.hh
@@ -44,15 +44,29 @@ namespace mln
namespace p2b
{
- /// \brief Functor that compare the i-th component of a value.
- // V is for the type of the value received
- // i is the ith component to select
+ /// \brief Functor that compare the i-th component with a threshold.
+ ///
+ /// T_rgb is the kind of RGB we use.
template <typename T_rgb>
struct achromatic : public Function_v2b< achromatic<T_rgb> >
{
typedef bool result;
+
+ /// \brief Operator that makes the threshold [millet.phd.2008.pdf]
+ ///
+ /// \param[in] p the selected site
+ ///
+ /// \return if the site is achromatic or not.
+ ///
+ /// This a try for opimized the call to the achromatic
+ /// routine. The goal is to decide if a site has got an
+ /// achromatic status or not. This is the true Millet test.
bool operator()(const point2d& p) const;
+ /// \brief Cstor of the object.
+ ///
+ /// \param[in] img the RGB input image.
+ /// \param[in] threshold the value to compare with.
achromatic(const image2d<T_rgb>& img, const float threshold);
const float threshold_;
diff --git a/scribo/sandbox/green/mln/fun/v2v/hue_concentration.hh b/scribo/sandbox/green/mln/fun/v2v/hue_concentration.hh
index 84d26c8..e776c9a 100644
--- a/scribo/sandbox/green/mln/fun/v2v/hue_concentration.hh
+++ b/scribo/sandbox/green/mln/fun/v2v/hue_concentration.hh
@@ -32,6 +32,10 @@
# include <mln/value/hsv.hh>
# include <mln/value/rgb8.hh>
+/// \file
+///
+/// This is the code for building hue_concentration_map.
+
namespace mln
{
@@ -41,12 +45,18 @@ namespace mln
namespace v2v
{
+ /// \brief internal method for detecting the histogram peak.
+ ///
+ /// \param[in] hue_histo the histogram of hue.
+ ///
+ /// \return the seed of the peek.
unsigned peak_histo(const mln::image1d<unsigned>& hue_histo);
struct hue_concentration : public Function_v2v< hue_concentration >
{
typedef float result;
+ /// \brief Gibe the distance map between actual hue and the peak.
float operator()(const float hue) const;
hue_concentration(const mln::image1d<unsigned>& hue_histo)
diff --git a/scribo/sandbox/green/mln/fun/v2v/rgb_to_achromatism_map.hh b/scribo/sandbox/green/mln/fun/v2v/rgb_to_achromatism_map.hh
index 6de63ec..126f9bd 100644
--- a/scribo/sandbox/green/mln/fun/v2v/rgb_to_achromatism_map.hh
+++ b/scribo/sandbox/green/mln/fun/v2v/rgb_to_achromatism_map.hh
@@ -49,6 +49,11 @@ namespace mln
/// \brief Convert rgb value to achromatism map.
///
+ /// Convert rgb value to binary achromastism map using the
+ /// rebuilded Millet phd formulae [millet.phd.2008.pdf]. The
+ /// idea is to look at the minimum and maximum of the channels
+ /// and to return the difference.
+ ///
/// \ingroup modfunv2v
template <unsigned n>
diff --git a/scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh b/scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh
index 3dd8eb0..a191095 100644
--- a/scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh
+++ b/scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh
@@ -34,6 +34,11 @@
#include <mln/value/hsv.hh>
#include <mln/value/rgb.hh>
+/// \fiie
+///
+/// This is the millet [millet.phd.2008.pdf] transformation from RGB
+/// space to HSV space.
+
namespace mln
{
@@ -57,7 +62,15 @@ namespace mln
typedef T_hsv result;
- /// HSV implementation from millet.2008.phd.pdf p67
+ /// \brief HSV implementation from millet.2008.phd.pdf p67
+ ///
+ /// \param[in] rgb the input rgb pixel.
+ ///
+ /// \return a HSV pixel.
+ ///
+ /// This is the Millet implementation of its transformation
+ /// operator to go from RGB space to HSV space. When pixels
+ /// are achromatic, hue equals -1.
template <typename T_rgb>
T_hsv operator()(const T_rgb& rgb) const;
--
1.5.6.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 next has been updated
discards 4515a1dc6803595b389196a908ed01c18c63a804 (commit)
discards db5fcd6bc95f6202aed69fd811d18584e719cdf5 (commit)
discards 18262984b19ffbd72f33e37e5e208b03521513e1 (commit)
discards 6e783da9ec7535fe373a5a9f90fce24495a84d93 (commit)
discards 206ddb6ba62ad2cdee862db36c025761d52898af (commit)
discards d2e8cf68fc8af6d5de279bb70535516f53e56df8 (commit)
discards 2520689648f68e6cbd3eb47c375102053af53019 (commit)
discards 53a57b1d3275c5b9fb41db4b706342d6a7df992d (commit)
discards cd5ea6ecd0a75ad2dbabd704490682aeceac68bd (commit)
discards 2925b324b1b9c0427600a0160cdc214a03d5e8ae (commit)
discards 04569a2bb109e39ae8d09530aaa526ad9ae2df49 (commit)
discards ebad60a1e78715afe0359a2837c5de517fa7a42b (commit)
discards 5bd441f8f01071c7c228837ceb8d9e401bc8f974 (commit)
discards d6e4a923e32eb749a66490fba62885a69b2fb4dd (commit)
discards a4a49108929edc4cd8c2d108da7ca821f6684b45 (commit)
discards ed4e74a2f51a69d580a46b155c9d319d7e7f603c (commit)
discards 63c77cdaa94cdbfd1ee3591675f729b74cc0371e (commit)
discards 621ebe718756448951c4362aa8dc5be8b84025da (commit)
discards c3d187edce3a706763c8e2bed355517e22037cf0 (commit)
discards a903e8dadd0bc8f76a36c846a6167903aac6c963 (commit)
discards 696503dfbe53631c3d16db408d7137a0d5b9c536 (commit)
discards b265090ab82ff960a5cd770b863eebb8eeee71be (commit)
discards c0c3a98d00d261f0b32c16083030be5dc05e79ff (commit)
discards bd5519ba780434acb1a52552f55c5c91806d5931 (commit)
discards 4d1677cf6f3b63d78da59159550988f17e61b93a (commit)
discards 951bfdd9cb60516e53abc0c961c046851174d37d (commit)
discards ca408292a71afa85aa76b568642f91729ebaae05 (commit)
discards 00d8fa3b631df334782cc755a0a1bbc3af1e8d35 (commit)
discards 6ca68abdb08224a001fbdd838a6bbffb58b902ba (commit)
discards a9958fa777ee5686c5a923311aab1caa793ab89a (commit)
discards be773a94ff966b4008cb3ce086bdaa3a679cf8a5 (commit)
discards 013ef3d7c8f41542dc327c3f86d3741476c61aa5 (commit)
discards 6793cca44120828368141b44d52d589d47c72f72 (commit)
discards f7bc7e130d7cd61342e2a1bd50433caf8dc251e2 (commit)
discards 3c2ce9bb05ba3502ded2bab10d64d19d10607874 (commit)
discards d34c8dd49b1cafb412ed6acbc9a7df856e744ada (commit)
discards d5c383adedab294cc3158789aae82a358ed9f8b3 (commit)
discards 59987833613195d29de390caf60ea67a6d05c63c (commit)
discards 6bf37e8533f6fe5e1ccb3db532ac2c75624a3973 (commit)
discards 0545aad9399df4de95f731d4ea7ff019e996efb0 (commit)
discards 324908fe7cfefc7e54ebab5419c195ba111adecc (commit)
discards 5ee999b4a272ce703a8441e19d21914ee24a325c (commit)
discards af62462e491439835ff02d83dd051209402b9e15 (commit)
discards 8fed6fb92cee676f1b08171261d1c3c3998affca (commit)
discards cb1501f56a94071aa6087845f47acbbb4e359487 (commit)
discards 4aec8b7df9701854f4a66a5759cba50d417e2477 (commit)
discards 6626ff4c9b970161a3afb4771f6b5d5d17cbc054 (commit)
discards 5a13b71e549e3e14f56c654c2cf8060668ee651d (commit)
discards 8bd912698276dec80d783a2a0d1c45934b7197d6 (commit)
discards c05d4df52ff6ff73eab3e75343e39a4bd59c25b6 (commit)
discards a0961e1c87e3d8b33fc3f956f4e5eabf1301e3f4 (commit)
discards 087715863927fde36a5c856fa87ba071c978a824 (commit)
discards 8283ce59a3fbee4679d7d5e6909ac69da6dc9565 (commit)
discards 8559cd77490d273ee43ab417b4b666aeb12a3f4b (commit)
discards 6b43c06339028b02542e0214c12a976d10f8b8d7 (commit)
discards 52112930338d0852964eba2a09f7984c04d3b29e (commit)
discards c3c62f2274a751f3cc0846f81d8f54c8c50192fb (commit)
discards 26c8584dbd90fb2668efe2cfe260eefc65201055 (commit)
discards 332c9acf642b9ab88ed466b1ad0e0500fc2c885c (commit)
discards 5ba287436f0ad7ae908f61e666e01ea6fbb546a0 (commit)
discards 6270c8c945def50f6fb12b95511567e27b04db24 (commit)
discards 290ccbee439ac1cfc9dbd0185b60260d10dbd206 (commit)
discards 9fffc8073f5ea86ae99a3b5ddd23d53d10cdb429 (commit)
discards aa19b0aaad96157c6cbc41fd92ceb07b8f370063 (commit)
discards 984412efeef78be23eb0f83ce6eb50bb36031a6e (commit)
discards d4ca44ab91728099a70f29b73f5eb3f83a487736 (commit)
discards 2ae99ffe384a9bdf63e59305fe1a77063a7a1c22 (commit)
discards e31b70169c431b1196afb6ae2b9eda6b94ec4e26 (commit)
discards 9e66b0bc8e1df4154fc7a4c6834a8db7b6c3af46 (commit)
discards ee180d60723b0718fa53cd7d936b8260acb93af2 (commit)
discards 4d14a475db1082c1096ed71973e2daa2793e2cf1 (commit)
discards fd16f7ee48f964437406d385b54ebb912e92ea25 (commit)
discards 092bb0461eb91af6bca23e29bda4bdbac316d3ec (commit)
discards 460f059870e591b8da8363f9905a8331352c81ff (commit)
discards 1a16089f970043d54c716705e22f87cde43ce263 (commit)
discards 7b2111843120f318b696b1b79bd2e900a7eeac4b (commit)
discards 58e82cd9f7d25b6aafb2085c4ace86d1819b5e1f (commit)
discards 218a6951a1b0d51f35faf440a0938ffc57e6fc69 (commit)
discards 2290b5c217d1aff34973686b4ca20ac907b088b1 (commit)
discards 3586ef11c3c314352893a9239f16679657d12d5f (commit)
discards 681f2578cf36e5d15de8744b5a7dd92bfdc4fc4c (commit)
discards 1307e9db8d14cfc6dff52604e561b71388e44f58 (commit)
discards 71f26fd56cb0b4ce501d5b268110a7cba2580c26 (commit)
discards ad5614ea5041d342b336310eb72fc632e85d92fe (commit)
discards 125df33ea1757903b9ae2078ff37cda45ab1fc0c (commit)
discards b9a5b97f58655d268aea57a5b3d625f8fedae6ee (commit)
discards d169338813844bac2932789235e76482922b0d5e (commit)
discards 241c2467d08dc42b87d25a93f2606c1d46d835d2 (commit)
discards f5c0ae5a9385033e13a8f7d639f26f7c3114854e (commit)
discards 7e1a2f88f9f363580adf64244448a04b2fed8588 (commit)
discards 31925d2882a55285b496a5efb040875eeceee85e (commit)
discards b15c1b6b4c6eb9cb7dda58a28bb93695feb7c463 (commit)
discards 288d44d51e20f1d602c0b6b2f2d3cadb5cc4ba1d (commit)
discards 4d87541b98ba8e496d125c80c83ad20fbfbb8fb3 (commit)
discards b57d26e949bf2f7993b86a1df34d12c0e27f581d (commit)
discards 17304c0d1e2e0f089a7fba4a319c85c401b78a71 (commit)
discards 5179913a9ef7ad087e49b617e185ea77bef3bd4e (commit)
discards 7c558b5f8ddad2675f221439e6cc05c131c41306 (commit)
discards fe92959d0b991dc4af32354a5aaecebe4a2496e7 (commit)
discards 5fa09b417ceab47852ce77832d504474b37911c0 (commit)
discards b4195d21051065f1793d03ac2fc8473979eb3d85 (commit)
discards f3987ed3d3aa9063ae36e632d59f56c0fed6ef71 (commit)
discards 7570d066d5b6867ec467c65577b856552eb7959f (commit)
discards b98887a266675d0408c9a5e206e01e8c05141350 (commit)
discards 07b0d845a4695de07897a0550f3cf88e90bf71ba (commit)
discards e9bf3efcc6957e3e0d0b37228e0060cee5315c66 (commit)
discards 26fd960b08963a21dcc2b55b6618bc0fb03f1721 (commit)
discards f8c67ca6812d33f6e758d02b52306be5337357ec (commit)
discards 34bcc24494086059cddc9563bfc74d7d41c92062 (commit)
discards 00152b7b89d4690e7e1fe0ac252096d834360917 (commit)
discards 53630924d3586513a4979ad9ba76ec975a7d4d6f (commit)
discards 65586d1b604614ab2072306198b2418b222901e6 (commit)
discards 8adc20194128cd40b88e9d531541067d9c07f90a (commit)
discards e6a836cee6c68ad1fb50e38754ac5c0a0a7c6236 (commit)
discards 993461bf6f0e721d96fd483df3c461a7f37c7ea5 (commit)
discards 60fefaa2e97f9a9dac00d2404fa4ce730cd171b0 (commit)
discards 4b0e1fb92f24d116e8df227786eae369f1b8f615 (commit)
discards 2f0e11309514214cd1be0c8c565183bd001cc1b6 (commit)
discards 224e84a64d1844494f71173a154fbec87927da4b (commit)
discards 81d685024b4321859625cf173903e176cbf6ecbe (commit)
discards 543d805e7b099357ba92802493be73e39a71687c (commit)
discards 2f5f4a438accd7aa52c3ac8d3550b70cef778c0e (commit)
discards 6b6d1440369b9cb9fc31c4453723e179d91ba842 (commit)
discards 98eedea5d6dcf8b4bfc9dfa309b57ce5dcbfd192 (commit)
discards 55a5c879876aa4d7e2b2326f426a3e048b386044 (commit)
discards 15c7c9c6fc5f10005d6965cd819f9d13dac7a8f7 (commit)
discards 79001a91319044fdabf9504d8a4b745824e3e91b (commit)
discards ff4fcc5ac88a15114fa027286af119fb49ae5a08 (commit)
discards 033b24976414aed9461ea4cb7e60e29fe95ff5b3 (commit)
discards ef48505d020f4fd2ba1e89482bf3a2e3a69d2b7c (commit)
discards be8a9483d08855d6475aafbcf6d7b99b4c2e7546 (commit)
discards 76ed491e0693668ef068eef740ea697eb17e9017 (commit)
discards 5d3b9dacc3b50f37a4fb09dd53d45c53dcdd59c4 (commit)
discards 5824c18c8dc04d028fac6a873aeaed17ae00ed07 (commit)
discards d7850dbc2fb6879dceacc355cf5f37f460e09313 (commit)
discards f8b5117d9ebdbb13855bdb4d4dcc1581e7bc82b1 (commit)
discards 9f19274a760e12dc9b2cbe7bdf5bfc9c466af5b8 (commit)
discards 5ca84d197b8742460dfda8b9435a02a79603ab0a (commit)
discards d12e77e06b9cfdb409a36b3f4fb65b09327acfdb (commit)
discards b3416b2f45e4e3ab0e853c2e73f1c670891e5d8d (commit)
discards 3591f2a690fbd20c6caaf51283ba96505e87c0c0 (commit)
discards 76dd7c37346ba9280d586e31b0ff558af2a44d90 (commit)
discards 91b205927506a09d3c921c4980da3b114617775d (commit)
discards 966f8d64839b0d13bdc608ef7f4c4247e984391a (commit)
discards f89278cf5b12300abe45d7bf8eb464c7bdb7fba7 (commit)
discards 3ca05868e71d080d12c18329019b2addbf83bec9 (commit)
discards f819edfc8980df439b1920cadc3893a2f8b4eee6 (commit)
discards ef51cf7f9dc8e6c3f1c064f881cc3b6b429e1c76 (commit)
discards a2d98b12b61ffbd0a4e7addb440888d86d5be8d5 (commit)
discards f5d28e908b41e8003fd401989b74b8c995a93192 (commit)
discards ab515db441e4825dcfb9601c6ac024c614ce1e45 (commit)
discards 6fb53567c35855b2ba1b61b1f9da6aba108a0471 (commit)
discards c7c49e9d4611785b6c4086e7098d684fefd690b8 (commit)
discards 0c7c2800580a76a371845addb361bd20498c396d (commit)
discards 0832aee891ff1c8f78abf0b6f3ce22cda88a258a (commit)
discards 6d82d878bff6d80604a7554a348ef8c1d06464ad (commit)
discards 999e60c6f834a03d4ad636052aca1a785501f673 (commit)
discards d3888a39df55beccc974bf4f556eb50e3b7057cb (commit)
discards 06903f8517a4560f544ccb343f011548011fa95f (commit)
discards ed6a220ec78c88954f73cee7258595b1a697a242 (commit)
discards 7fd561dd32cd4d3a32aa974642da054078513355 (commit)
discards 5c627b019540ecc6dbf4cb21630354289adf6f6b (commit)
discards 85cda080414cc6e05d8ee49246a2171eb7f4fbae (commit)
discards e8373a069ad3b882f9a927c8d318643645069c1e (commit)
discards 4bf89fb72cfe41e98d7df23be2cc79bb37173c39 (commit)
discards a6a8d2a44d746824876f24c53af69f83036ddaf3 (commit)
discards 810f0413346986f6e7fc86f513ee1df28f142418 (commit)
discards 33ffff60e3846bf4499c3eafaa2dfd37791fb4e2 (commit)
discards 31216d34c0c51609cbe6921cd0d285701d583e3b (commit)
discards db55e631a5d4be26186cf58f23d63c9ae8a1a88e (commit)
discards 080134d6115e902c66ee0eb866008d7ad8e161f8 (commit)
discards 40d518005c478e2b5640a04019fdbf84c6858d27 (commit)
discards cbbdf4e015a418723730e0173ae88377ab365f1e (commit)
discards ff15d075512aadb2cfa4e99d36d3fa080809822f (commit)
discards 12ddb9702902e9c12be67d23fad1053e320f151e (commit)
discards b8aaebae9a034fa3b39de284bd2677801bc15471 (commit)
discards cbbbffd5c0c474d94fdab9e79c90e0ea92ec185c (commit)
discards 99e2b8fc744f5ab029cee5c4fa8eb465750101af (commit)
discards 41c82626a63b343f4d54e620c3055c1db6bf91de (commit)
discards 8c069f07986676a26ea14a1daa4e623d75302cbc (commit)
discards ca67a57fcb8149672ea524e5d20cab138c9147d6 (commit)
discards 21af64ad3a6645b7c1e7afa3347ba545911affa1 (commit)
discards 24e4f689ffc6598a646431b8344fe3c7b6c73da5 (commit)
discards 04aef4bf80daa8b02650ad3b2479dfea0bfa666c (commit)
discards 3b8335a122ff4d071759346847666d62c702f2b4 (commit)
discards ff1e5aae555fb905fa33369c85c94b0b0108feaf (commit)
discards c7cb9f3cfb759b353cb92e62c9154c0607b9faa8 (commit)
discards 28453cfc46940eb2fa4e6bf993d0378a97b396a3 (commit)
discards f256a61a4a6aaabab1806c9f644bfd0005c3e857 (commit)
discards 464d58f97a427e842a704e17a6c50ca6a88e11f5 (commit)
discards 9c5c48319714b54f41adc49d4b5417294e8b6079 (commit)
discards 9d7a1cca8578a712714a94258d081b1a4e3d5d95 (commit)
discards a184c8106407ea7b3ce30dc14b1d548ac93813f2 (commit)
discards b826d4152097bfcb1138f05f647862c69f739769 (commit)
discards 32401e08eb7edab00e58069690e7371af8346fdd (commit)
discards 622c2395fcf4ecd00991ba4dfda4eddc49604ba1 (commit)
discards 752d8cae10e26fae6500a073893aa6aad2c85403 (commit)
discards d02047f7f328aa892cb80f57374f3c6ba6a3fdc1 (commit)
discards 8d47be1577e975889b17016f2fda968d79780b57 (commit)
discards 548b72e33fc2b5352a5ca511693a5ae43fd94cba (commit)
discards 11701a0cb30bfb85d57a07a94e88485ebd7c0c4a (commit)
discards 53a98117e4a7985a38bf6b708d99069ba17353aa (commit)
discards b54300a5ba958e308a8ff9edb32f685247999e2a (commit)
discards 6143a5ecb90ebfec07d7f7e4605e086f7bc61f83 (commit)
discards 2c6947d729838521895b4ef091210d1f82ad66fa (commit)
discards 4dad6c9aa0df1dddd07a4fa53cecc05b7287ff4a (commit)
discards d10f1a65daf8af9a90af3c937226f5c4d5b4750a (commit)
discards b1a4d275224ac708a9b05dae7915a27109886cc9 (commit)
discards 9f724b07283be1b79455a1b1a80c87205db7415d (commit)
discards 6adbc43e3b823f9eeb385911e3a47e5ec8c963e9 (commit)
discards 4a19598794bc2ebec9d40f2bdd02afe17e9c4f85 (commit)
discards c5e55142e34779d78be4944489e03949fa03551f (commit)
discards 1c596f64a2ca06f073d0a6d3e37fb334bc5f64c9 (commit)
discards 70ca845540984efeee0654cf989389d19dc9166b (commit)
discards 1f9aa31e2c16defebcda3f4a5689caf779756c2a (commit)
discards 8e0ab28cbc07882bc55a6e633928a7c46be9d018 (commit)
discards 643c15954419858896b0cd759737e7620c541fe8 (commit)
discards 899f6280731edf03ae30f23dcdd4745ecbe9a1f2 (commit)
discards 98cab34716892c5b65385589ab6c3edbd46f9710 (commit)
discards 482527bb90e7b716941dc1a9061a217c7ae8891d (commit)
discards 902b12ce4df4c7292fa491510241c46ca99e9e2b (commit)
discards 79ee98c0d746a92d576c1939f22c43e567807cd4 (commit)
discards 669c38a57b112f921a08ba1a3f0f1054902068f9 (commit)
discards eba3666e5fe1bff4705fe9c98532f51f8173f81f (commit)
discards 0193764da7088997d86ce051decfa76a98389c0f (commit)
discards 0e13f8102f13a50b59aade263e9fe5686f2dc70c (commit)
discards aa0bdee5768b8d6c4da2bfb0829eb083a2cc1d3c (commit)
discards a921ddd44ba3c5f2d17dcfb91d895fbef7604c6c (commit)
discards 6ed67df01362829d95ef961cfc4240851088c71d (commit)
discards 89cccc3f9d23c012b6d68223369da5b7b2166fd0 (commit)
discards bbe58a4163e25ffd7677bdddac47196f4681958a (commit)
discards de162c799ceaff805639868514eaf8889c9f8e49 (commit)
discards 0214776e7a453b8e10ddde889f39b09efa1c2e3a (commit)
discards c59d0eb348d67f1accf519ad9887d3a809d0b5ac (commit)
discards 041d0dc64632eb9aa876f73997fcf9c6ab830736 (commit)
discards 961ba2240c9a2e7fbcf06d7681790e2cecef6d32 (commit)
discards 9799d16b510acb6f010157cf36953d87b483497d (commit)
discards dfd1f9600a8484aabcfdc8bfd09b60bcf8d7194d (commit)
discards e1a1cc378e801f88e043bc1f5434c472359037d1 (commit)
discards 70d61a2d6eb3602df210041397a5bc2b5226aa66 (commit)
discards ef1027240a5c435f8f80d5aebb4cb78667522cd9 (commit)
discards b05629704f959c2e4d122e22b7636f08c1ae018a (commit)
discards 4046dfe6f7bfe217aac73a60bd98481632f28a90 (commit)
discards cae5c85609c8b8d650c8ec13e5fc193b6cb0cc2a (commit)
discards de558e1fd81f8a8677545c7052fdc88d8a3d056a (commit)
discards ec5a4728ec5fb5bc3c7c5bc572d4a2103de6bc7b (commit)
discards 2d5c9e765d41ad16003b43e2b03f716a128f43ca (commit)
discards b8b448283cb2db5e1f10d7d9cc635919f0803ed6 (commit)
discards 1e6a267bc08570326ac13fe4fb4b09dd04090f04 (commit)
discards 3a3cd53c0bc6b67b4a2f2ab91bf53f2d16f04850 (commit)
discards 94a1f48d731bb997e4408e88033d4b1cfceceee9 (commit)
discards cb3ec8ce138e75790da1bee29bf2da1723bf907e (commit)
discards 2f9f294e56199ded1006c540e14eb9565bd4158d (commit)
discards ced2be000f12493790fa6ec3118c13dfd53c3480 (commit)
discards 7db5a17a002477d3dd6075298158c909918b0fce (commit)
discards c803910e9b8fed818e2f6848ceded6b918260bc5 (commit)
discards 7dc506b48a5d9739c8483ada6b7c725c840b5ec8 (commit)
discards a0c8b8d5105ab098893a67e743c1a3f7c64783b0 (commit)
discards 6dc7e4398c3cf9cc466ff9ccebc413f442c91408 (commit)
discards 470ab8590c7a718eca3dc848a381440131b6701e (commit)
discards 8b7c177b17b3e889b03a98c9e7f4812bbf5347d6 (commit)
discards 2082dbe0ad1a8abb2bacba99a718f2d212b56fd1 (commit)
discards a26809dfe97b70d65bb5706a57e57d04c9a26242 (commit)
discards 978d82a0dbae555e2c757cc7202926307d21eb48 (commit)
discards 9455de217fb6aec957c2fd03e8ad8d98e7502a41 (commit)
discards 03f61d76ea140544a2bd47489ca7ea55d2a07047 (commit)
discards 92a937fa891f6391836688d3bccc386ee705a862 (commit)
discards 10172dec0f518f646796bf1cbea1dfc0d84a58ac (commit)
discards 3894a51d36339003e51481be924b4e9d237afac7 (commit)
discards 4e5a8aeaf2226eced55b1b09731f05db646c601a (commit)
discards b955ecf309a0402264c6c4c3187f39772805a492 (commit)
discards b31f2f590205e34352b5726bd39bb5811a9aea83 (commit)
discards 9fca659592f8c07e9ea252124542a32b19d508a7 (commit)
discards 619f727a664642367fcc13d5923cd67565146d75 (commit)
discards ca034dd5be1eb52e5ba698fdaf48441ef9232253 (commit)
discards 7c60810a254871cd3f4b5e64b8ed9d32fbc22039 (commit)
discards 07c83125fbb603e47560f2564c56a4e61f178733 (commit)
discards 7d3cbec0a50867eda87180a8b3e36104570fab70 (commit)
discards 3151875da98c528bd88a47d2baeeef749641e078 (commit)
discards 74ae8cb3d0f20fa8e556637bbfb2ef65f94a2ff7 (commit)
discards 7d4f627f694d972e1b03b9ca961980efaeed964d (commit)
discards 906f2366e804d8c3e216b32d9d95e21962d64bdd (commit)
discards f7773bdb0a5f4a2633db7c417320525307208ce1 (commit)
discards 97aadbd7550bbc30b3233763a199879697ecea42 (commit)
discards f70c8e0acc71d11e3e46e38e23b898da542ad2d9 (commit)
discards 542fcf95dfe69de360defa3c5a50981519ca5473 (commit)
discards 32e461a6b9798f95bc659262aa237af8bd468e22 (commit)
discards 4bfd663cfb87ee5f7d905de4bb426dbbe83a8ec1 (commit)
discards ce6a4248b4d98c34ba5ec5022ae68cc240553dd4 (commit)
discards 706148bd7bd2a1138c2aee91f0e1463540deaa52 (commit)
discards 78149d2acd630f6988e0cbca5682f91213540416 (commit)
discards 2510005ce77741c054e7fc089e075fe280a773ed (commit)
discards 304dee05f683045536596f3f79a8039e0ab385d0 (commit)
discards 9d8c5490e9c010e6ce1694f9190b9b8f32d49580 (commit)
discards 757792dbea67e77dfb75c7b3d703127ef4307669 (commit)
discards 852fd7f7ea50c2ca524b190d8db1e19c24b00cb5 (commit)
discards 749308a78ac92ce127e96a1ec8a61b073ea28dab (commit)
discards 49762301f533222098453e17f547a468e2413b5e (commit)
discards 7395d15706f398f6c44f4579f278ead57bd762bd (commit)
discards 187511199544e904e81f91f7d3924760f4014c87 (commit)
discards f08ca6b0e8ad20a5958fc357933ff3daece9f14c (commit)
discards 68181d1dcd88a9662b326ed6c618f90371c38bb6 (commit)
discards 89cf4eeee292defc65b665d1daa8e20629a3db36 (commit)
discards a7dd8e818e7cfcc8125ef4afcd88de2ba9d1989c (commit)
discards 0a2727d0e2de4059c2610c1fa55293c19e82dde6 (commit)
discards 5c414c5db3cd4ff8d563e20d715faad6fce15dd8 (commit)
This update discarded existing revisions and left the branch pointing at
a previous point in the repository history.
* -- * -- N (eecd7d1ced5f4dfc8d46bccc2edc1dacddbe635e)
\
O -- O -- O (4515a1dc6803595b389196a908ed01c18c63a804)
The removed revisions are not necessarilly gone - if another reference
still refers to them they will stay in the repository.
No new revisions were added by this update.
Summary of changes:
ChangeLog | 130 --
Makefile.am | 4 +-
bootstrap | 11 +-
build-aux/autotroll.mk | 108 -
build-aux/build_unit_test.sh | 201 +--
configure.ac | 307 +---
m4/autotroll.m4 | 565 -----
m4/boost.m4 | 1038 ---------
m4/oln-with-lib.m4 | 12 +-
m4/pkg.m4 | 155 --
milena/ChangeLog | 806 +-------
milena/doc/figures/fill-subdomain-2.ppm | Bin 206 -> 206 bytes
milena/doc/figures/fill-subdomain-3.ppm | Bin 206 -> 206 bytes
milena/doc/figures/labeling-compute-2.ppm | Bin 206 -> 206 bytes
milena/doc/figures/tuto3_colorize-2.ppm | Bin 191 -> 191 bytes
.../figures/tuto4_genericity_and_algorithms-5.ppm | Bin 12406 -> 12406 bytes
milena/doc/tutorial.tex | 4 -
milena/headers.mk | 27 +-
milena/img/BUG_lean_ascii.pgm.gz | Bin 0 -> 75726 bytes
milena/img/picasso.ppm | Bin 244671 -> 0 bytes
milena/mln/accu/center.hh | 14 +-
milena/mln/accu/count_value.hh | 30 +-
milena/mln/accu/internal/base.hh | 4 +-
milena/mln/accu/label_used.hh | 5 +-
milena/mln/accu/math/sum.hh | 3 +-
milena/mln/accu/pair.hh | 26 -
milena/mln/accu/stat/variance.hh | 4 +-
milena/mln/accu/tuple.hh | 13 +-
milena/mln/border/thickness.hh | 4 -
milena/mln/canvas/labeling/blobs.hh | 22 +-
milena/mln/canvas/labeling/video.hh | 8 +-
milena/mln/convert/from_to.hxx | 45 -
milena/mln/convert/impl/from_float_to_value.hh | 10 -
milena/mln/convert/impl/from_unsigned_to_value.hh | 10 -
milena/mln/convert/to_qimage.hh | 300 ---
milena/mln/convert/to_qimage_nocopy.hh | 180 --
milena/mln/core/alias/dpoint1d.hh | 4 -
milena/mln/core/alias/dpoint2d.hh | 4 -
milena/mln/core/alias/dpoint3d.hh | 4 -
milena/mln/core/alias/neighb3d.hh | 42 -
milena/mln/core/alias/window2d.hh | 3 +-
milena/mln/core/concept/function.hh | 43 -
milena/mln/core/concept/gpoint.hh | 2 +-
milena/mln/core/image/image1d.hh | 6 +-
milena/mln/core/image/image3d.hh | 9 +-
milena/mln/core/image/imorph/interpolated.hh | 13 +-
milena/mln/core/image/imorph/labeled_image.hh | 2 -
milena/mln/core/internal/box_impl.hh | 61 +-
milena/mln/core/internal/labeled_image_base.hh | 31 +-
milena/mln/core/point.hh | 164 +--
milena/mln/core/routine/extend.hh | 57 +-
milena/mln/core/site_set/box.hh | 37 +-
milena/mln/data/fill_with_value.hh | 3 +-
milena/mln/data/paste_without_localization.hh | 311 +---
milena/mln/data/split.hh | 99 -
milena/mln/debug/mosaic.hh | 141 --
milena/mln/debug/slices_2d.hh | 15 +-
milena/mln/debug/z_order.hh | 159 --
milena/mln/draw/all.hh | 1 -
milena/mln/draw/box.hh | 5 +-
milena/mln/draw/box_plain.hh | 92 -
milena/mln/draw/dashed_line.hh | 113 -
milena/mln/draw/line.hh | 1 -
milena/mln/fun/all.hh | 2 -
milena/mln/fun/internal/x2x_linear_impl.hh | 20 +-
milena/mln/fun/n2v/all.hh | 51 -
milena/mln/fun/n2v/white_gaussian.hh | 104 -
milena/mln/fun/v2v/all.hh | 1 -
milena/mln/fun/v2v/hsl_to_rgb.hh | 3 -
milena/mln/fun/v2v/qt_rgb_to_int_u.hh | 71 -
milena/mln/fun/v2v/rgb_to_int_u.hh | 69 -
milena/mln/fun/v2v/saturate.hh | 9 +-
milena/mln/fun/x2x/composed.hh | 18 +-
milena/mln/fun/x2x/rotation.hh | 5 +-
milena/mln/fun/x2x/translation.hh | 6 +-
milena/mln/geom/all.hh | 4 +-
milena/mln/geom/horizontal_symmetry.hh | 194 --
milena/mln/geom/max_col.hh | 8 +-
milena/mln/geom/max_row.hh | 8 +-
milena/mln/geom/min_col.hh | 8 +-
milena/mln/geom/min_row.hh | 8 +-
milena/mln/geom/nslices.hh | 68 -
milena/mln/geom/nslis.hh | 68 +
milena/mln/geom/rotate.hh | 107 +-
milena/mln/geom/size3d.hh | 5 +-
milena/mln/geom/vertical_symmetry.hh | 196 --
milena/mln/histo/compute.hh | 15 +-
milena/mln/histo/equalize.hh | 97 -
milena/mln/io/dicom/all.hh | 4 +-
milena/mln/io/dicom/get_header.hh | 114 -
milena/mln/io/dicom/load.hh | 17 +-
milena/mln/io/dump/all.hh | 1 -
milena/mln/io/dump/get_header.hh | 128 --
milena/mln/io/dump/save.hh | 3 -
milena/mln/io/fld/load.hh | 13 +-
milena/mln/io/fld/max_components.hh | 32 +-
milena/mln/io/magick/load.hh | 4 +-
milena/mln/io/magick/save.hh | 7 +-
milena/mln/io/plot/save.hh | 28 +-
milena/mln/io/pnm/load.hh | 3 +-
milena/mln/io/raw/all.hh | 49 -
milena/mln/io/raw/get_header.hh | 136 --
milena/mln/io/raw/load.hh | 226 --
milena/mln/io/raw/save.hh | 177 --
milena/mln/labeling/blobs.hh | 4 +-
milena/mln/labeling/blobs_and_compute.hh | 60 +-
milena/mln/labeling/colorize.hh | 75 +-
milena/mln/labeling/compute.hh | 415 +----
milena/mln/labeling/flat_zones.hh | 34 +-
milena/mln/labeling/pack.hh | 2 +-
milena/mln/labeling/relabel.hh | 23 +-
milena/mln/labeling/value.hh | 16 +-
milena/mln/labeling/value_and_compute.hh | 241 --
milena/mln/linear/ch_convolve.hh | 9 +-
milena/mln/linear/gaussian.hh | 8 +-
milena/mln/linear/gaussian/impl.hh | 13 +-
milena/mln/literal/black.hh | 4 -
milena/mln/literal/colors.hh | 7 +-
milena/mln/literal/identity.hh | 4 -
milena/mln/literal/one.hh | 3 -
milena/mln/literal/origin.hh | 6 +-
milena/mln/literal/white.hh | 4 -
milena/mln/literal/zero.hh | 4 -
milena/mln/make/box3d.hh | 15 +-
milena/mln/make/image.hh | 7 +-
milena/mln/math/diff_abs.hh | 5 +-
milena/mln/registration/icp.hh | 5 +-
milena/mln/subsampling/antialiased.hh | 458 ----
milena/mln/tag/init.hh | 4 -
milena/mln/topo/skeleton/crest.hh | 51 +-
milena/mln/trace/entering.hh | 3 -
milena/mln/trace/quiet.hh | 5 +-
milena/mln/transform/influence_zone_geodesic.hh | 13 +-
milena/mln/value/int_s.hh | 11 +-
milena/mln/value/int_u.hh | 69 +-
milena/mln/value/internal/make_generic_name.hh | 67 -
milena/mln/value/label.hh | 22 +-
milena/mln/value/qt/rgb32.hh | 803 -------
milena/mln/value/rgb.hh | 67 +-
milena/mln/value/sign.hh | 10 +-
milena/mln/win/sline3d.hh | 76 -
milena/mln/world/binary_2d/enlarge.hh | 4 +-
milena/mln/world/inter_pixel/full2image.hh | 4 +-
milena/sandbox/ChangeLog | 601 -----
milena/sandbox/bench/README_CFLAGS | 8 -
milena/sandbox/bench/extract_vertical_lines.cc | 49 -
.../bench/fast_components_and_attributes.cc | 402 ----
milena/sandbox/bench/fast_rows.cc | 247 ---
milena/sandbox/bench/fast_tiles.cc | 140 --
milena/sandbox/bench/fastest.cc | 351 ---
milena/sandbox/bin/labeling/colorize.cc | 24 -
milena/sandbox/bin/pgm_to_pbm.cc | 39 -
milena/sandbox/bin/ppm_negate.cc | 43 -
.../green/bench/transform/distance/Makefile.am | 150 --
.../green/bench/transform/distance/distance.cc | 775 -------
.../sandbox/green/demo/annotating/bic/Makefile.am | 150 --
milena/sandbox/green/demo/annotating/bic/bic.cc | 87 -
.../sandbox/green/demo/annotating/hsv/Makefile.am | 152 --
milena/sandbox/green/demo/annotating/hsv/hsv.cc | 607 -----
.../sandbox/green/demo/annotating/lep/Makefile.am | 150 --
milena/sandbox/green/demo/annotating/lep/lep.cc | 92 -
.../green/demo/annotating/nb_color/Makefile.am | 150 --
.../green/demo/annotating/nb_color/nb_color.cc | 101 -
.../green/demo/annotating/project/Makefile.am | 150 --
.../green/demo/annotating/project/project.cc | 210 --
.../green/demo/annotating/rgb_64/Makefile.am | 150 --
.../sandbox/green/demo/annotating/rgb_64/rgb_64.cc | 47 -
.../green/demo/annotating/rgb_64_9/Makefile.am | 150 --
.../green/demo/annotating/rgb_64_9/rgb_64_9.cc | 97 -
.../green/demo/annotating/stddev_color/Makefile.am | 150 --
.../demo/annotating/stddev_color/stddev_color.cc | 124 --
.../demo/annotating/stddev_color_16/Makefile.am | 150 --
.../annotating/stddev_color_16/stddev_color_16.cc | 178 --
.../green/demo/clustering/kmean_rgb/Makefile.am | 148 --
.../green/demo/clustering/kmean_rgb/kmean_rgb.cc | 91 -
.../demo/labeling/regional_maxima/Makefile.am | 2 -
.../labeling/regional_maxima/regional_maxima.cc | 906 ++------
.../demo/labeling/regional_maxima/thresholds.txt | 42 -
milena/sandbox/green/doc/annotating/class.txt | 42 -
.../green/doc/annotating/syntheseMillet2008.txt | 283 ---
milena/sandbox/green/doc/annotating/testMillet2008 | 69 -
.../doc/regional_maxima/cmp_method/h0_input.pgm.gz | Bin 18078 -> 0 bytes
.../doc/regional_maxima/cmp_method/h2_mean.pgm.gz | Bin 374 -> 0 bytes
.../doc/regional_maxima/cmp_method/h2_merge.pgm.gz | Bin 4491 -> 0 bytes
.../doc/regional_maxima/cmp_method/h3_mean.pgm.gz | Bin 391 -> 0 bytes
.../doc/regional_maxima/cmp_method/h3_merge.pgm.gz | Bin 10188 -> 0 bytes
.../doc/regional_maxima/cmp_method/h4_mean.pgm.gz | Bin 367 -> 0 bytes
.../doc/regional_maxima/cmp_method/h4_merge.pgm.gz | Bin 18078 -> 0 bytes
.../doc/regional_maxima/cmp_method/h5_mean.pgm.gz | Bin 372 -> 0 bytes
.../doc/regional_maxima/cmp_method/h5_merge.pgm.gz | Bin 12777 -> 0 bytes
.../doc/regional_maxima/cmp_method/i2_mean.ppm.gz | Bin 566650 -> 0 bytes
.../doc/regional_maxima/cmp_method/i2_merge.ppm.gz | Bin 1586150 -> 0 bytes
.../doc/regional_maxima/cmp_method/i3_mean.ppm.gz | Bin 573407 -> 0 bytes
.../doc/regional_maxima/cmp_method/i3_merge.ppm.gz | Bin 3050979 -> 0 bytes
.../doc/regional_maxima/cmp_method/i4_mean.ppm.gz | Bin 663621 -> 0 bytes
.../doc/regional_maxima/cmp_method/i4_merge.ppm.gz | Bin 3387044 -> 0 bytes
.../doc/regional_maxima/cmp_method/i5_mean.ppm.gz | Bin 653140 -> 0 bytes
.../doc/regional_maxima/cmp_method/i5_merge.ppm.gz | Bin 3217839 -> 0 bytes
.../doc/regional_maxima/cmp_method/l2_input.pgm.gz | Bin 423612 -> 0 bytes
.../doc/regional_maxima/cmp_method/l3_input.pgm.gz | Bin 420801 -> 0 bytes
.../doc/regional_maxima/cmp_method/l4_input.pgm.gz | Bin 486206 -> 0 bytes
.../doc/regional_maxima/cmp_method/l5_input.pgm.gz | Bin 479055 -> 0 bytes
.../regional_maxima/cmp_method/reponse_theo.eml | 106 -
.../doc/regional_maxima/cmp_method/s2_histo.txt | 31 -
.../doc/regional_maxima/cmp_method/s3_histo.txt | 31 -
.../doc/regional_maxima/cmp_method/s4_histo.txt | 31 -
.../doc/regional_maxima/cmp_method/s5_histo.txt | 31 -
.../doc/regional_maxima/cmp_method/synthese.txt | 223 --
.../doc/regional_maxima/cmp_quant/h0_input.pgm.gz | Bin 18078 -> 0 bytes
.../regional_maxima/cmp_quant/h5_mean_q2.pgm.gz | Bin 247 -> 0 bytes
.../regional_maxima/cmp_quant/h5_mean_q3.pgm.gz | Bin 280 -> 0 bytes
.../regional_maxima/cmp_quant/h5_mean_q4.pgm.gz | Bin 319 -> 0 bytes
.../regional_maxima/cmp_quant/h5_mean_q5.pgm.gz | Bin 375 -> 0 bytes
.../regional_maxima/cmp_quant/h5_mean_q6.pgm.gz | Bin 392 -> 0 bytes
.../regional_maxima/cmp_quant/h5_mean_q7.pgm.gz | Bin 383 -> 0 bytes
.../regional_maxima/cmp_quant/h5_mean_q8.pgm.gz | Bin 470 -> 0 bytes
.../regional_maxima/cmp_quant/h5_merge_q2.pgm.gz | Bin 18081 -> 0 bytes
.../regional_maxima/cmp_quant/h5_merge_q3.pgm.gz | Bin 18081 -> 0 bytes
.../regional_maxima/cmp_quant/h5_merge_q4.pgm.gz | Bin 16358 -> 0 bytes
.../regional_maxima/cmp_quant/h5_merge_q5.pgm.gz | Bin 12780 -> 0 bytes
.../regional_maxima/cmp_quant/h5_merge_q6.pgm.gz | Bin 9694 -> 0 bytes
.../regional_maxima/cmp_quant/h5_merge_q7.pgm.gz | Bin 6211 -> 0 bytes
.../regional_maxima/cmp_quant/h5_merge_q8.pgm.gz | Bin 1564 -> 0 bytes
.../regional_maxima/cmp_quant/i5_mean_q2.ppm.gz | Bin 112779 -> 0 bytes
.../regional_maxima/cmp_quant/i5_mean_q3.ppm.gz | Bin 191264 -> 0 bytes
.../regional_maxima/cmp_quant/i5_mean_q4.ppm.gz | Bin 298062 -> 0 bytes
.../regional_maxima/cmp_quant/i5_mean_q5.ppm.gz | Bin 653143 -> 0 bytes
.../regional_maxima/cmp_quant/i5_mean_q6.ppm.gz | Bin 807617 -> 0 bytes
.../regional_maxima/cmp_quant/i5_mean_q7.ppm.gz | Bin 813222 -> 0 bytes
.../regional_maxima/cmp_quant/i5_mean_q8.ppm.gz | Bin 861711 -> 0 bytes
.../regional_maxima/cmp_quant/i5_merge_q2.ppm.gz | Bin 3387047 -> 0 bytes
.../regional_maxima/cmp_quant/i5_merge_q3.ppm.gz | Bin 3387047 -> 0 bytes
.../regional_maxima/cmp_quant/i5_merge_q4.ppm.gz | Bin 3355365 -> 0 bytes
.../regional_maxima/cmp_quant/i5_merge_q5.ppm.gz | Bin 3217842 -> 0 bytes
.../regional_maxima/cmp_quant/i5_merge_q6.ppm.gz | Bin 3033730 -> 0 bytes
.../regional_maxima/cmp_quant/i5_merge_q7.ppm.gz | Bin 2295150 -> 0 bytes
.../regional_maxima/cmp_quant/i5_merge_q8.ppm.gz | Bin 1319396 -> 0 bytes
.../regional_maxima/cmp_quant/l5_input_q2.pgm.gz | Bin 83951 -> 0 bytes
.../regional_maxima/cmp_quant/l5_input_q3.pgm.gz | Bin 143817 -> 0 bytes
.../regional_maxima/cmp_quant/l5_input_q4.pgm.gz | Bin 220346 -> 0 bytes
.../regional_maxima/cmp_quant/l5_input_q5.pgm.gz | Bin 479058 -> 0 bytes
.../regional_maxima/cmp_quant/l5_input_q6.pgm.gz | Bin 593359 -> 0 bytes
.../regional_maxima/cmp_quant/l5_input_q7.pgm.gz | Bin 600121 -> 0 bytes
.../regional_maxima/cmp_quant/l5_input_q8.pgm.gz | Bin 630760 -> 0 bytes
.../doc/regional_maxima/cmp_quant/s5_histo_q2.txt | 3 -
.../doc/regional_maxima/cmp_quant/s5_histo_q3.txt | 8 -
.../doc/regional_maxima/cmp_quant/s5_histo_q4.txt | 18 -
.../doc/regional_maxima/cmp_quant/s5_histo_q5.txt | 33 -
.../doc/regional_maxima/cmp_quant/s5_histo_q6.txt | 33 -
.../doc/regional_maxima/cmp_quant/s5_histo_q7.txt | 32 -
.../doc/regional_maxima/cmp_quant/s5_histo_q8.txt | 75 -
.../doc/regional_maxima/cmp_quant/synthese.txt | 205 --
.../mp00411c/colormap_all_q4.txt.gz | Bin 187 -> 0 bytes
.../mp00411c/colormap_all_q5.txt.gz | Bin 420 -> 0 bytes
.../mp00411c/colormap_thick_q4.txt.gz | Bin 159 -> 0 bytes
.../mp00411c/colormap_thick_q5.txt.gz | Bin 352 -> 0 bytes
.../mp00411c/colormap_thin_q4.txt.gz | Bin 173 -> 0 bytes
.../mp00411c/colormap_thin_q5.txt.gz | Bin 366 -> 0 bytes
.../regional_maxima/mp00411c/histo_all_q4.dump.gz | Bin 1233 -> 0 bytes
.../regional_maxima/mp00411c/histo_all_q5.dump.gz | Bin 4779 -> 0 bytes
.../mp00411c/histo_thick_q4.dump.gz | Bin 781 -> 0 bytes
.../mp00411c/histo_thick_q5.dump.gz | Bin 2532 -> 0 bytes
.../regional_maxima/mp00411c/histo_thin_q4.dump.gz | Bin 901 -> 0 bytes
.../regional_maxima/mp00411c/histo_thin_q5.dump.gz | Bin 2976 -> 0 bytes
.../doc/regional_maxima/mp00411c/iz_all_q4.dump.gz | Bin 659040 -> 0 bytes
.../doc/regional_maxima/mp00411c/iz_all_q5.dump.gz | Bin 1505619 -> 0 bytes
.../regional_maxima/mp00411c/iz_thick_q4.dump.gz | Bin 482831 -> 0 bytes
.../regional_maxima/mp00411c/iz_thick_q5.dump.gz | Bin 1414258 -> 0 bytes
.../regional_maxima/mp00411c/iz_thin_q4.dump.gz | Bin 647722 -> 0 bytes
.../regional_maxima/mp00411c/iz_thin_q5.dump.gz | Bin 1458415 -> 0 bytes
.../mp00411c/labeled_all_q4.dump.gz | Bin 149 -> 0 bytes
.../mp00411c/labeled_all_q5.dump.gz | Bin 343 -> 0 bytes
.../mp00411c/labeled_thick_q4.dump.gz | Bin 149 -> 0 bytes
.../mp00411c/labeled_thick_q5.dump.gz | Bin 309 -> 0 bytes
.../mp00411c/labeled_thin_q4.dump.gz | Bin 149 -> 0 bytes
.../mp00411c/labeled_thin_q5.dump.gz | Bin 308 -> 0 bytes
.../regional_maxima/mp00411c/mean3_all_q4.ppm.gz | Bin 985276 -> 0 bytes
.../regional_maxima/mp00411c/mean3_all_q5.ppm.gz | Bin 1961577 -> 0 bytes
.../regional_maxima/mp00411c/mean3_thick_q4.ppm.gz | Bin 865034 -> 0 bytes
.../regional_maxima/mp00411c/mean3_thick_q5.ppm.gz | Bin 1831699 -> 0 bytes
.../regional_maxima/mp00411c/mean3_thin_q4.ppm.gz | Bin 958289 -> 0 bytes
.../regional_maxima/mp00411c/mean3_thin_q5.ppm.gz | Bin 1872271 -> 0 bytes
.../regional_maxima/mp00411c/mean4_all_q4.ppm.gz | Bin 772605 -> 0 bytes
.../regional_maxima/mp00411c/mean4_all_q5.ppm.gz | Bin 1852455 -> 0 bytes
.../regional_maxima/mp00411c/mean4_thick_q4.ppm.gz | Bin 559850 -> 0 bytes
.../regional_maxima/mp00411c/mean4_thick_q5.ppm.gz | Bin 1727247 -> 0 bytes
.../regional_maxima/mp00411c/mean4_thin_q4.ppm.gz | Bin 760428 -> 0 bytes
.../regional_maxima/mp00411c/mean4_thin_q5.ppm.gz | Bin 1781495 -> 0 bytes
.../doc/regional_maxima/mp00411c/mp00411c.ppm.gz | Bin 5316204 -> 0 bytes
.../doc/regional_maxima/mp00411c/mp00411c.sh.gz | Bin 636 -> 0 bytes
.../regional_maxima/mp00411c/mp00411c_thick.pbm.gz | Bin 190478 -> 0 bytes
.../regional_maxima/mp00411c/mp00411c_thin.pbm.gz | Bin 248730 -> 0 bytes
.../regional_maxima/mp00411c/opened_all_q4.dump.gz | Bin 1159 -> 0 bytes
.../regional_maxima/mp00411c/opened_all_q5.dump.gz | Bin 4531 -> 0 bytes
.../mp00411c/opened_thick_q4.dump.gz | Bin 747 -> 0 bytes
.../mp00411c/opened_thick_q5.dump.gz | Bin 2351 -> 0 bytes
.../mp00411c/opened_thin_q4.dump.gz | Bin 848 -> 0 bytes
.../mp00411c/opened_thin_q5.dump.gz | Bin 2772 -> 0 bytes
.../regional_maxima/mp00411c/proj1_all_q4.pgm.gz | Bin 343 -> 0 bytes
.../regional_maxima/mp00411c/proj1_all_q5.pgm.gz | Bin 779 -> 0 bytes
.../regional_maxima/mp00411c/proj1_thick_q4.pgm.gz | Bin 312 -> 0 bytes
.../regional_maxima/mp00411c/proj1_thick_q5.pgm.gz | Bin 612 -> 0 bytes
.../regional_maxima/mp00411c/proj1_thin_q4.pgm.gz | Bin 339 -> 0 bytes
.../regional_maxima/mp00411c/proj1_thin_q5.pgm.gz | Bin 718 -> 0 bytes
.../regional_maxima/mp00411c/proj2_all_q4.pgm.gz | Bin 338 -> 0 bytes
.../regional_maxima/mp00411c/proj2_all_q5.pgm.gz | Bin 750 -> 0 bytes
.../regional_maxima/mp00411c/proj2_thick_q4.pgm.gz | Bin 315 -> 0 bytes
.../regional_maxima/mp00411c/proj2_thick_q5.pgm.gz | Bin 606 -> 0 bytes
.../regional_maxima/mp00411c/proj2_thin_q4.pgm.gz | Bin 331 -> 0 bytes
.../regional_maxima/mp00411c/proj2_thin_q5.pgm.gz | Bin 693 -> 0 bytes
.../regional_maxima/mp00411c/proj3_all_q4.ppm.gz | Bin 230 -> 0 bytes
.../regional_maxima/mp00411c/proj3_all_q5.ppm.gz | Bin 401 -> 0 bytes
.../regional_maxima/mp00411c/proj3_thick_q4.ppm.gz | Bin 224 -> 0 bytes
.../regional_maxima/mp00411c/proj3_thick_q5.ppm.gz | Bin 343 -> 0 bytes
.../regional_maxima/mp00411c/proj3_thin_q4.ppm.gz | Bin 229 -> 0 bytes
.../regional_maxima/mp00411c/proj3_thin_q5.ppm.gz | Bin 359 -> 0 bytes
.../regional_maxima/mp00411c/proj4_all_q4.ppm.gz | Bin 252 -> 0 bytes
.../regional_maxima/mp00411c/proj4_all_q5.ppm.gz | Bin 447 -> 0 bytes
.../regional_maxima/mp00411c/proj4_thick_q4.ppm.gz | Bin 221 -> 0 bytes
.../regional_maxima/mp00411c/proj4_thick_q5.ppm.gz | Bin 369 -> 0 bytes
.../regional_maxima/mp00411c/proj4_thin_q4.ppm.gz | Bin 234 -> 0 bytes
.../regional_maxima/mp00411c/proj4_thin_q5.ppm.gz | Bin 415 -> 0 bytes
.../doc/regional_maxima/mp00411c/quant_q4.ppm.gz | Bin 2590062 -> 0 bytes
.../doc/regional_maxima/mp00411c/quant_q5.ppm.gz | Bin 3775184 -> 0 bytes
.../regional_maxima/mp00411c/stats3_all_q4.txt.gz | Bin 292 -> 0 bytes
.../regional_maxima/mp00411c/stats3_all_q5.txt.gz | Bin 701 -> 0 bytes
.../mp00411c/stats3_thick_q4.txt.gz | Bin 244 -> 0 bytes
.../mp00411c/stats3_thick_q5.txt.gz | Bin 584 -> 0 bytes
.../regional_maxima/mp00411c/stats3_thin_q4.txt.gz | Bin 262 -> 0 bytes
.../regional_maxima/mp00411c/stats3_thin_q5.txt.gz | Bin 606 -> 0 bytes
.../regional_maxima/mp00411c/stats4_all_q4.txt.gz | Bin 284 -> 0 bytes
.../regional_maxima/mp00411c/stats4_all_q5.txt.gz | Bin 704 -> 0 bytes
.../mp00411c/stats4_thick_q4.txt.gz | Bin 234 -> 0 bytes
.../mp00411c/stats4_thick_q5.txt.gz | Bin 580 -> 0 bytes
.../regional_maxima/mp00411c/stats4_thin_q4.txt.gz | Bin 255 -> 0 bytes
.../regional_maxima/mp00411c/stats4_thin_q5.txt.gz | Bin 591 -> 0 bytes
.../doc/regional_maxima/mp00411c/synthese.txt.gz | Bin 4062 -> 0 bytes
.../green/exp/annotating/achromastism/Makefile.am | 153 --
.../exp/annotating/achromastism/achromastism.cc | 113 -
.../exp/annotating/achromastism/text-color.txt | 15 -
.../green/exp/annotating/achromastism/text-img.txt | 40 -
.../exp/annotating/achromastism/text-only.txt | 8 -
.../sandbox/green/exp/annotating/bench/Makefile.am | 153 --
milena/sandbox/green/exp/annotating/bench/bench.cc | 1213 ----------
.../sandbox/green/exp/annotating/error/Makefile.am | 153 --
milena/sandbox/green/exp/annotating/error/error.cc | 700 ------
.../sandbox/green/exp/annotating/histo/Makefile.am | 153 --
milena/sandbox/green/exp/annotating/histo/histo.cc | 306 ---
.../sandbox/green/exp/annotating/hsv/Makefile.am | 153 --
milena/sandbox/green/exp/annotating/hsv/hsv.cc | 652 ------
.../sandbox/green/exp/annotating/hue/Makefile.am | 153 --
milena/sandbox/green/exp/annotating/hue/hue.cc | 291 ---
.../green/exp/annotating/hue/text-color.txt | 15 -
.../sandbox/green/exp/annotating/hue/text-img.txt | 40 -
.../sandbox/green/exp/annotating/hue/text-only.txt | 8 -
.../green/exp/annotating/nb_color/Makefile.am | 151 --
.../green/exp/annotating/nb_color/nb_color.cc | 131 --
.../green/exp/annotating/saturation/Makefile.am | 153 --
.../green/exp/annotating/saturation/saturation.cc | 119 -
.../green/exp/annotating/saturation/text-color.txt | 15 -
.../green/exp/annotating/saturation/text-img.txt | 40 -
.../green/exp/annotating/saturation/text-only.txt | 8 -
.../green/exp/annotating/stddev_color/Makefile.am | 151 --
.../exp/annotating/stddev_color/stddev_color.cc | 153 --
.../exp/annotating/stddev_color_16/Makefile.am | 151 --
.../annotating/stddev_color_16/stddev_color_16.cc | 195 --
.../sandbox/green/exp/annotating/value/Makefile.am | 153 --
.../green/exp/annotating/value/text-color.txt | 15 -
.../green/exp/annotating/value/text-img.txt | 40 -
.../green/exp/annotating/value/text-only.txt | 8 -
milena/sandbox/green/exp/annotating/value/value.cc | 316 ---
.../green/exp/labeling/regional_maxima/Makefile.am | 151 --
.../labeling/regional_maxima/regional_maxima.cc | 156 --
milena/sandbox/green/mln/accu/stat/histo1d.hh | 66 +-
milena/sandbox/green/mln/clustering/kmean_rgb.hh | 973 --------
milena/sandbox/green/mln/display/display_histo.hh | 98 +-
milena/sandbox/green/mln/display/project_histo.hh | 443 +----
milena/sandbox/green/mln/fun/p2b/achromatic.hh | 112 -
.../sandbox/green/mln/fun/p2b/component_equals.hh | 99 -
milena/sandbox/green/mln/fun/v2v/achromatism.hh | 64 -
.../sandbox/green/mln/fun/v2v/hue_concentration.hh | 100 -
milena/sandbox/green/mln/fun/v2v/rgb8_to_int_u8.hh | 71 -
.../green/mln/fun/v2v/rgb_to_achromatism_map.hh | 77 -
milena/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh | 149 --
milena/sandbox/green/mln/fun/v2v/rgb_to_hue_map.hh | 96 -
.../green/mln/fun/v2v/rgb_to_saturation_map.hh | 83 -
.../sandbox/green/mln/fun/v2v/rgb_to_value_map.hh | 75 -
milena/sandbox/green/mln/img_path.hh | 221 +--
milena/sandbox/green/mln/math/ceil.hh | 64 -
milena/sandbox/green/mln/math/floor.hh | 64 -
milena/sandbox/green/mln/value/hsv.hh | 424 ----
.../green/tools/annotating/histo/Makefile.am | 150 --
.../sandbox/green/tools/annotating/histo/histo.cc | 143 --
.../sandbox/green/tools/annotating/iz/Makefile.am | 150 --
milena/sandbox/green/tools/annotating/iz/iz.cc | 373 ----
.../green/tools/annotating/opening/Makefile.am | 150 --
.../green/tools/annotating/opening/opening.cc | 111 -
.../green/tools/annotating/regmax/Makefile.am | 150 --
.../green/tools/annotating/regmax/regmax.cc | 328 ---
.../lazzara/scribo/binarization_naive/main.cc | 54 -
.../lazzara/scribo/binarization_naive/toto.cc | 28 -
milena/sandbox/lazzara/scribo/fill_holes/main.cc | 118 -
.../separateurs_materialises/lines_pattern.cc | 69 -
.../sandbox/lazzara/scribo/skeleton_crest/main.cc | 52 -
milena/tests/accu/Makefile.am | 15 +-
milena/tests/convert/Makefile.am | 25 +-
milena/tests/convert/to_qimage.cc | 76 -
milena/tests/convert/to_qimage_nocopy.cc | 56 -
milena/tests/core/alias/box3d.cc | 5 +-
milena/tests/core/image/image3d.cc | 11 +-
milena/tests/core/other/box_runstart_piter.cc | 57 +-
milena/tests/core/site_set/Makefile.am | 2 -
milena/tests/core/site_set/box.cc | 42 -
milena/tests/data/Makefile.am | 4 -
milena/tests/data/paste_without_localization.cc | 81 -
milena/tests/data/split.cc | 54 -
milena/tests/fun/v2v/Makefile.am | 9 -
milena/tests/fun/v2v/qt_rgb_to_int_u.cc | 44 -
milena/tests/geom/Makefile.am | 12 +-
milena/tests/geom/horizontal_symmetry.cc | 50 -
milena/tests/geom/nslices.cc | 38 -
milena/tests/geom/nslis.cc | 37 +
milena/tests/geom/rotate.cc | 16 +-
milena/tests/geom/translate.cc | 5 +-
milena/tests/geom/vertical_symmetry.cc | 49 -
milena/tests/io/magick/save.cc | 5 +-
milena/tests/io/pbms/load.cc | 3 +-
milena/tests/io/pgms/load.cc | 3 +-
milena/tests/io/ppms/load.cc | 3 +-
milena/tests/labeling/blobs_and_compute.cc | 17 +-
milena/tests/labeling/colorize.cc | 6 +-
milena/tests/labeling/flat_zones.cc | 4 +-
milena/tests/labeling/foreground.cc | 4 +-
milena/tests/labeling/relabel.cc | 6 +-
milena/tests/subsampling/Makefile.am | 12 +-
milena/tests/subsampling/antialiased.cc | 74 -
milena/tests/topo/skeleton/crest.cc | 10 +-
.../transform/bench_closest_point_geodesic.cc | 9 +-
milena/tests/unit_test/Makefile.am | 18 +-
.../cond_tests_boost-preprocessor_boost-tuple | 1 -
milena/tests/unit_test/cond_tests_cfitsio | 2 -
milena/tests/unit_test/cond_tests_gdcm | 3 -
milena/tests/unit_test/cond_tests_magickxx | 3 -
milena/tests/unit_test/cond_tests_qt | 2 -
milena/tests/unit_test/cond_tests_tiff | 2 -
milena/tests/unit_test/disabled_tests | 10 +
milena/tests/unit_test/unit-tests.mk | 146 +--
scribo/ChangeLog | 2335 +-------------------
scribo/Makefile.am | 9 +-
scribo/README | 52 -
scribo/all.hh | 51 +
scribo/binarization/binarize.hh | 180 ++
scribo/binarization/sauvola.hh | 192 ++
scribo/binarization/sauvola_threshold.hh | 478 ++++
scribo/binarization/simple.hh | 166 ++
scribo/core/all.hh | 49 +
scribo/{scribo => }/core/central_sites.hh | 0
scribo/{scribo => }/core/concept/link_functor.hh | 0
scribo/core/erase_objects.hh | 87 +
scribo/core/internal/link_functor_base.hh | 119 +
scribo/core/macros.hh | 38 +
scribo/core/object_groups.hh | 140 ++
scribo/core/object_image.hh | 38 +
scribo/core/object_links.hh | 130 ++
scribo/debug/alignment_decision_image.hh | 170 ++
scribo/{scribo => }/debug/all.hh | 0
scribo/debug/decision_image.hh | 176 ++
scribo/debug/links_decision_image.hh | 127 ++
scribo/debug/save_bboxes_image.hh | 87 +
scribo/{scribo => }/debug/save_label_image.hh | 0
scribo/debug/save_linked_bboxes_image.hh | 269 +++
scribo/debug/save_object_diff.hh | 98 +
scribo/{scribo => }/debug/save_table_image.hh | 0
scribo/debug/several_links_decision_image.hh | 185 ++
scribo/debug/usage.hh | 82 +
scribo/demo/Makefile.am | 12 +-
scribo/demo/demat/demat.pro | 42 -
scribo/demo/demat/demat.qrc | 4 -
scribo/demo/demat/src/doc_type.hh | 51 -
scribo/demo/demat/src/main.cc | 31 -
scribo/demo/demat/src/main_window.cc | 266 ---
scribo/demo/demat/src/main_window.hh | 96 -
scribo/demo/demat/src/mln_widgets.cc | 11 -
scribo/demo/demat/src/preprocessing_task.hh | 62 -
scribo/demo/demat/src/process_args.hh | 47 -
scribo/demo/demat/src/runner.cc | 327 ---
scribo/demo/demat/src/runner.hh | 94 -
scribo/demo/demat/ui/main_window.ui | 381 ----
scribo/demo/demo.pro | 16 +
scribo/demo/{review/review.qrc => demo.qrc} | 0
scribo/demo/{review => }/icons/document-open.png | Bin 1550 -> 1550 bytes
scribo/demo/{review => }/icons/edit-find.png | Bin 1636 -> 1636 bytes
.../demo/{review => }/icons/format-indent-more.png | Bin 766 -> 766 bytes
scribo/demo/{review => }/icons/go-next.png | Bin 1219 -> 1219 bytes
scribo/demo/{review => }/icons/image-x-generic.png | Bin 1163 -> 1163 bytes
scribo/demo/{review => }/icons/list-add.png | Bin 601 -> 601 bytes
scribo/demo/{review => }/icons/ocr.png | Bin 14929 -> 14929 bytes
scribo/demo/{review => }/icons/text-x-generic.png | Bin 744 -> 744 bytes
scribo/demo/{review => }/icons/view-refresh.png | Bin 2024 -> 2024 bytes
.../{review => }/icons/x-office-spreadsheet.png | Bin 1518 -> 1518 bytes
scribo/demo/review/Makefile.am | 11 -
scribo/demo/review/review.pro | 16 -
scribo/demo/review/src/main.cc | 49 -
scribo/demo/review/src/mainwindow.cc | 572 -----
scribo/demo/review/src/mainwindow.hh | 138 --
scribo/demo/shared/icons/Symbols-Delete-icon.png | Bin 3704 -> 0 bytes
scribo/demo/shared/icons/accept-icon.png | Bin 4858 -> 0 bytes
scribo/demo/shared/icons/close.gif | Bin 340 -> 0 bytes
scribo/demo/shared/icons/crop-icon.png | Bin 228 -> 0 bytes
scribo/demo/shared/icons/image-add-icon.png | Bin 2917 -> 0 bytes
scribo/demo/shared/icons/image-edit-icon.png | Bin 2305 -> 0 bytes
scribo/demo/shared/icons/image-multi-icon.png | Bin 2033 -> 0 bytes
scribo/demo/shared/icons/image-next-icon.png | Bin 3008 -> 0 bytes
scribo/demo/shared/icons/image-remove-icon.png | Bin 3127 -> 0 bytes
scribo/demo/shared/icons/next-icon.png | Bin 4611 -> 0 bytes
scribo/demo/shared/icons/page-down-icon.png | Bin 3450 -> 0 bytes
scribo/demo/shared/icons/page-search-icon.png | Bin 3101 -> 0 bytes
scribo/demo/shared/icons/rotate_ccw.png | Bin 4200 -> 0 bytes
scribo/demo/shared/icons/rotate_cw.png | Bin 4161 -> 0 bytes
scribo/demo/shared/icons/search-add-icon.png | Bin 4274 -> 0 bytes
scribo/demo/shared/icons/search-remove-icon.png | Bin 4196 -> 0 bytes
scribo/demo/shared/shared.qrc | 20 -
scribo/demo/shared/src/bak/crop_item.cc | 332 ---
scribo/demo/shared/src/bak/crop_item.hh | 100 -
scribo/demo/shared/src/bak/image_viewer.cc | 242 --
scribo/demo/shared/src/bak/image_viewer.hh | 116 -
scribo/demo/shared/src/bak/types.hh | 50 -
scribo/demo/shared/src/browse_widget.cc | 72 -
scribo/demo/shared/src/browse_widget.hh | 78 -
scribo/demo/shared/src/crop_item.cc | 396 ----
scribo/demo/shared/src/crop_item.hh | 119 -
scribo/demo/shared/src/image_viewer.cc | 410 ----
scribo/demo/shared/src/image_viewer.hh | 148 --
scribo/demo/shared/src/image_viewer.hxx | 31 -
.../shared/src/internal.bak/interactive_scene.cc | 286 ---
.../shared/src/internal.bak/interactive_scene.hh | 108 -
.../shared/src/internal.bak/selection_rectangle.cc | 241 --
.../shared/src/internal.bak/selection_rectangle.hh | 91 -
.../demo/shared/src/internal/interactive_scene.cc | 94 -
.../demo/shared/src/internal/interactive_scene.hh | 85 -
.../shared/src/internal/selection_rectangle.cc | 241 --
.../shared/src/internal/selection_rectangle.hh | 91 -
scribo/demo/shared/src/to_mln_image.hh | 77 -
scribo/demo/shared/src/types.hh | 50 -
scribo/demo/shared/ui/browse_widget.ui | 106 -
scribo/demo/shared/ui/crop_widget.ui | 34 -
scribo/demo/shared/ui/image_viewer.ui | 296 ---
scribo/demo/shared/ui/interactive_scene.cc | 143 --
scribo/demo/shared/ui/interactive_scene.hh | 87 -
scribo/demo/shared/ui/rotate_widget.ui | 34 -
scribo/demo/src/main.cc | 42 +
scribo/demo/src/mainwindow.cc | 570 +++++
scribo/demo/src/mainwindow.hh | 138 ++
scribo/demo/tip/gui.pro | 19 -
scribo/demo/tip/gui.qrc | 9 -
scribo/demo/tip/icons/next.png | Bin 3337 -> 0 bytes
scribo/demo/tip/icons/ok.png | Bin 3953 -> 0 bytes
scribo/demo/tip/icons/photos.png | Bin 3750 -> 0 bytes
scribo/demo/tip/icons/prev.png | Bin 3334 -> 0 bytes
scribo/demo/tip/icons/remove.png | Bin 3704 -> 0 bytes
scribo/demo/tip/src/custom_delegate.cc | 105 -
scribo/demo/tip/src/custom_delegate.hh | 81 -
scribo/demo/tip/src/launch_dialog.cc | 94 -
scribo/demo/tip/src/launch_dialog.hh | 63 -
scribo/demo/tip/src/main.cc | 46 -
scribo/demo/tip/src/main_window.cc | 526 -----
scribo/demo/tip/src/main_window.hh | 119 -
scribo/demo/tip/ui/launch_dialog.ui | 117 -
scribo/demo/tip/ui/main_window.ui | 656 ------
scribo/demo/{review => }/ui/mainwindow.ui | 0
scribo/demo/viewer/Makefile.am | 70 -
scribo/demo/viewer/README | 33 -
scribo/demo/viewer/browser_widget.cc | 78 -
scribo/demo/viewer/browser_widget.hh | 42 -
scribo/demo/viewer/common.hh | 38 -
scribo/demo/viewer/domitem.cc | 98 -
scribo/demo/viewer/domitem.hh | 75 -
scribo/demo/viewer/dommodel.cc | 198 --
scribo/demo/viewer/dommodel.hh | 85 -
scribo/demo/viewer/help_dialog.cc | 55 -
scribo/demo/viewer/help_dialog.hh | 32 -
scribo/demo/viewer/image_region.cc | 139 --
scribo/demo/viewer/image_region.hh | 76 -
scribo/demo/viewer/image_region.hxx | 100 -
scribo/demo/viewer/image_scene.cc | 90 -
scribo/demo/viewer/image_scene.hh | 44 -
scribo/demo/viewer/image_view.cc | 78 -
scribo/demo/viewer/image_view.hh | 40 -
scribo/demo/viewer/image_widget.cc | 48 -
scribo/demo/viewer/image_widget.hh | 41 -
scribo/demo/viewer/key_widget.cc | 90 -
scribo/demo/viewer/key_widget.hh | 45 -
scribo/demo/viewer/main.cc | 37 -
scribo/demo/viewer/property_widget.cc | 73 -
scribo/demo/viewer/property_widget.hh | 41 -
scribo/demo/viewer/step_widget.cc | 122 -
scribo/demo/viewer/step_widget.hh | 57 -
scribo/demo/viewer/viewer.cc | 504 -----
scribo/demo/viewer/viewer.hh | 88 -
scribo/demo/viewer/viewer.hxx | 31 -
scribo/demo/viewer/xml_widget.cc | 53 -
scribo/demo/viewer/xml_widget.hh | 41 -
scribo/demo/wizard/images/dematerialization.png | Bin 76309 -> 0 bytes
scribo/demo/wizard/src/crop_page.cc | 48 -
scribo/demo/wizard/src/crop_page.hh | 60 -
scribo/demo/wizard/src/crop_widget.cc | 37 -
scribo/demo/wizard/src/crop_widget.hh | 62 -
scribo/demo/wizard/src/doc_type.hh | 51 -
scribo/demo/wizard/src/doc_type_page.cc | 48 -
scribo/demo/wizard/src/doc_type_page.hh | 61 -
scribo/demo/wizard/src/doc_type_widget.cc | 38 -
scribo/demo/wizard/src/doc_type_widget.hh | 64 -
scribo/demo/wizard/src/load_page.cc | 71 -
scribo/demo/wizard/src/load_page.hh | 67 -
scribo/demo/wizard/src/load_widget.cc | 56 -
scribo/demo/wizard/src/load_widget.hh | 64 -
scribo/demo/wizard/src/main.cc | 28 -
scribo/demo/wizard/src/main_window.cc | 144 --
scribo/demo/wizard/src/main_window.hh | 72 -
scribo/demo/wizard/src/mln_widgets.cc | 7 -
scribo/demo/wizard/src/preprocessing_page.cc | 61 -
scribo/demo/wizard/src/preprocessing_page.hh | 66 -
scribo/demo/wizard/src/preprocessing_task.hh | 61 -
scribo/demo/wizard/src/preprocessing_widget.cc | 93 -
scribo/demo/wizard/src/preprocessing_widget.hh | 65 -
scribo/demo/wizard/src/process_page.cc | 68 -
scribo/demo/wizard/src/process_page.hh | 64 -
scribo/demo/wizard/src/process_widget.cc | 80 -
scribo/demo/wizard/src/process_widget.hh | 71 -
scribo/demo/wizard/src/result_page.cc | 43 -
scribo/demo/wizard/src/result_page.hh | 60 -
scribo/demo/wizard/src/result_widget.cc | 43 -
scribo/demo/wizard/src/result_widget.hh | 58 -
scribo/demo/wizard/src/rotate_page.cc | 45 -
scribo/demo/wizard/src/rotate_page.hh | 60 -
scribo/demo/wizard/src/rotate_widget.cc | 38 -
scribo/demo/wizard/src/rotate_widget.hh | 62 -
scribo/demo/wizard/src/runner.cc | 296 ---
scribo/demo/wizard/src/runner.hh | 84 -
scribo/demo/wizard/src/test.cc | 16 -
scribo/demo/wizard/ui/doc_type_widget.ui | 115 -
scribo/demo/wizard/ui/load_widget.ui | 110 -
scribo/demo/wizard/ui/main_window.ui | 216 --
scribo/demo/wizard/ui/preprocessing_widget.ui | 223 --
scribo/demo/wizard/wizard.pro | 71 -
scribo/demo/wizard/wizard.qrc | 5 -
scribo/{scribo => }/draw/all.hh | 0
scribo/draw/bounding_box_links.hh | 417 ++++
scribo/draw/bounding_boxes.hh | 109 +
scribo/estim/object_groups_v_thickness.hh | 102 +
scribo/filter/all.hh | 53 +
scribo/filter/common/objects_photo.hh | 98 +
scribo/filter/internal/compute.hh | 147 ++
scribo/filter/object_groups_size_ratio.hh | 104 +
scribo/filter/object_groups_small.hh | 98 +
scribo/filter/object_groups_v_thickness.hh | 97 +
scribo/filter/object_links_bbox_h_ratio.hh | 99 +
scribo/filter/object_links_bbox_overlap.hh | 133 ++
scribo/filter/object_links_bbox_ratio.hh | 112 +
scribo/filter/object_links_bbox_w_ratio.hh | 97 +
scribo/filter/object_links_bottom_aligned.hh | 120 +
scribo/filter/object_links_center_aligned.hh | 113 +
scribo/filter/object_links_non_aligned.hh | 138 ++
scribo/filter/object_links_non_aligned_simple.hh | 186 ++
scribo/filter/object_links_non_h_aligned.hh | 109 +
scribo/filter/object_links_non_v_aligned.hh | 122 +
scribo/filter/object_links_top_aligned.hh | 121 +
scribo/filter/objects_h_thick.hh | 196 ++
scribo/filter/objects_h_thin.hh | 192 ++
scribo/filter/objects_large.hh | 198 ++
scribo/filter/objects_size_ratio.hh | 120 +
scribo/filter/objects_small.hh | 160 ++
scribo/filter/objects_thick.hh | 191 ++
scribo/filter/objects_thin.hh | 193 ++
scribo/filter/objects_v_thick.hh | 196 ++
scribo/filter/objects_v_thin.hh | 193 ++
scribo/fun/v2b/objects_small_filter.hh | 129 ++
scribo/headers.mk | 340 ++--
scribo/make/all.hh | 49 +
scribo/{scribo => }/make/debug_filename.hh | 0
scribo/{scribo => }/make/influence_zone_graph.hh | 0
scribo/make/text.hh | 180 ++
scribo/preprocessing/all.hh | 46 +
scribo/preprocessing/split_bg_fg.hh | 340 +++
scribo/preprocessing/unskew.hh | 115 +
scribo/{scribo => }/primitive/all.hh | 0
scribo/primitive/extract/all.hh | 67 +
scribo/{scribo => }/primitive/extract/canvas.hh | 0
scribo/{scribo => }/primitive/extract/cells.hh | 0
scribo/primitive/extract/lines_discontinued.hh | 152 ++
scribo/primitive/extract/lines_h_discontinued.hh | 133 ++
scribo/primitive/extract/lines_h_pattern.hh | 113 +
scribo/primitive/extract/lines_h_single.hh | 203 ++
scribo/primitive/extract/lines_h_thick.hh | 129 ++
.../primitive/extract/lines_h_thick_and_single.hh | 152 ++
scribo/primitive/extract/lines_pattern.hh | 137 ++
scribo/primitive/extract/lines_thick.hh | 138 ++
scribo/primitive/extract/lines_v_discontinued.hh | 131 ++
scribo/primitive/extract/lines_v_pattern.hh | 106 +
scribo/primitive/extract/lines_v_single.hh | 199 ++
scribo/primitive/extract/lines_v_thick.hh | 129 ++
.../primitive/extract/lines_v_thick_and_single.hh | 150 ++
scribo/primitive/extract/objects.hh | 138 ++
scribo/primitive/group/all.hh | 57 +
scribo/primitive/group/apply.hh | 126 ++
scribo/primitive/group/from_double_link.hh | 129 ++
scribo/primitive/group/from_graph.hh | 180 ++
scribo/primitive/group/from_single_link.hh | 108 +
scribo/primitive/internal/all.hh | 60 +
scribo/primitive/internal/find_graph_link.hh | 111 +
scribo/primitive/internal/find_left_link.hh | 108 +
scribo/primitive/internal/find_right_link.hh | 108 +
scribo/primitive/internal/find_root.hh | 71 +
.../primitive/internal/have_link_valid.hh | 0
scribo/primitive/internal/init_link_array.hh | 71 +
scribo/primitive/internal/is_invalid_link.hh | 100 +
scribo/primitive/internal/is_link_valid.hh | 79 +
.../primitive/internal/update_graph_link.hh | 0
scribo/primitive/internal/update_link_array.hh | 105 +
scribo/primitive/link/all.hh | 60 +
scribo/primitive/link/compute.hh | 115 +
scribo/primitive/link/compute_several.hh | 117 +
scribo/primitive/link/internal/anchors_3.hh | 147 ++
scribo/primitive/link/internal/find_link.hh | 116 +
.../primitive/link/internal/find_several_links.hh | 124 ++
.../link/internal/link_center_dmax_base.hh | 179 ++
.../link/internal/link_center_dmax_ratio_base.hh | 175 ++
.../primitive/link/internal/link_functor_base.hh | 518 +++++
.../primitive/link/internal/link_ms_dmax_base.hh | 165 ++
.../link/internal/link_ms_dmax_ratio_base.hh | 168 ++
scribo/primitive/link/merge_double_link.hh | 123 +
scribo/primitive/link/with_graph.hh | 125 ++
scribo/primitive/link/with_rag.hh | 99 +
scribo/primitive/link/with_several_graphes.hh | 128 ++
scribo/primitive/link/with_several_left_links.hh | 166 ++
.../link/with_several_right_closest_links.hh | 215 ++
scribo/primitive/link/with_several_right_links.hh | 169 ++
.../link/with_several_right_links_overlap.hh | 152 ++
scribo/primitive/link/with_single_left_link.hh | 159 ++
.../link/with_single_left_link_dmax_ratio.hh | 167 ++
scribo/primitive/link/with_single_right_link.hh | 158 ++
.../link/with_single_right_link_bottom.hh | 161 ++
.../link/with_single_right_link_dmax_ratio.hh | 167 ++
.../primitive/link/with_single_right_link_top.hh | 161 ++
scribo/sandbox/ChangeLog | 9 -
scribo/sandbox/green/ChangeLog | 264 ---
scribo/sandbox/green/README | 219 --
scribo/sandbox/green/README.green | 416 ----
scribo/sandbox/green/README.img | 124 --
scribo/sandbox/green/README.result | 143 --
.../green/bench/clustering/distance/Makefile.am | 153 --
.../green/bench/clustering/distance/distance.cc | 842 -------
.../green/demo/clustering/kmean1d/Makefile.am | 153 --
.../green/demo/clustering/kmean1d/kmean1d.cc | 258 ---
.../green/demo/clustering/kmean2d/Makefile.am | 153 --
.../green/demo/clustering/kmean2d/kmean2d.cc | 278 ---
.../green/demo/clustering/kmean3d/Makefile.am | 153 --
.../green/demo/clustering/kmean3d/kmean3d.cc | 265 ---
.../green/demo/clustering/kmean_rgb/Makefile.am | 153 --
.../green/demo/clustering/kmean_rgb/kmean_rgb.cc | 239 --
scribo/sandbox/green/gaussian.sh | 12 -
scribo/sandbox/green/gaussian2d.sh | 21 -
scribo/sandbox/green/mln/accu/stat/histo1d.hh | 337 ---
scribo/sandbox/green/mln/accu/stat/histo2d.hh | 346 ---
scribo/sandbox/green/mln/accu/stat/histo3d_hsl.hh | 388 ----
scribo/sandbox/green/mln/accu/stat/histo3d_rgb.hh | 345 ---
scribo/sandbox/green/mln/clustering/k_mean.hh | 785 -------
scribo/sandbox/green/mln/clustering/kmean1d.hh | 1082 ---------
scribo/sandbox/green/mln/clustering/kmean2d.hh | 1344 -----------
scribo/sandbox/green/mln/clustering/kmean3d.hh | 1345 -----------
scribo/sandbox/green/mln/clustering/kmean_rgb.hh | 1042 ---------
scribo/sandbox/green/mln/display/display_histo.hh | 180 --
scribo/sandbox/green/mln/display/project_histo.hh | 536 -----
scribo/sandbox/green/mln/fun/p2b/achromatic.hh | 112 -
.../sandbox/green/mln/fun/p2b/component_equals.hh | 99 -
scribo/sandbox/green/mln/fun/v2v/achromatism.hh | 64 -
.../sandbox/green/mln/fun/v2v/hue_concentration.hh | 100 -
.../green/mln/fun/v2v/int_u16_to_int_u14.hh | 71 -
scribo/sandbox/green/mln/fun/v2v/log.hh | 70 -
scribo/sandbox/green/mln/fun/v2v/rg_to_rgb.hh | 119 -
scribo/sandbox/green/mln/fun/v2v/rgb8_to_int_u8.hh | 71 -
scribo/sandbox/green/mln/fun/v2v/rgb8_to_rgbn.hh | 119 -
.../green/mln/fun/v2v/rgb_to_achromatism_map.hh | 77 -
scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh | 149 --
scribo/sandbox/green/mln/fun/v2v/rgb_to_hue_map.hh | 96 -
scribo/sandbox/green/mln/fun/v2v/rgb_to_rg.hh | 109 -
.../green/mln/fun/v2v/rgb_to_saturation_map.hh | 83 -
.../sandbox/green/mln/fun/v2v/rgb_to_value_map.hh | 75 -
scribo/sandbox/green/mln/img_path.hh | 239 --
scribo/sandbox/green/mln/io/plot/save_image_sh.hh | 1090 ---------
scribo/sandbox/green/mln/math/ceil.hh | 64 -
scribo/sandbox/green/mln/math/floor.hh | 64 -
scribo/sandbox/green/mln/value/hsv.hh | 424 ----
scribo/sandbox/green/mln/value/rg.hh | 175 --
scribo/sandbox/green/ok/mln/accu/histo/histo1d.hh | 334 ---
scribo/sandbox/green/ok/mln/accu/histo/histo2d.hh | 346 ---
scribo/sandbox/green/ok/mln/accu/histo/histo3d.hh | 349 ---
scribo/sandbox/green/ok/mln/img_path.hh | 239 --
.../sandbox/green/ok/test/accu/histo/gaussian.sh | 12 -
scribo/sandbox/green/ok/test/accu/histo/histo1d | Bin 802920 -> 0 bytes
scribo/sandbox/green/ok/test/accu/histo/histo1d.cc | 726 ------
scribo/sandbox/green/test_labelling.cc | 336 ---
scribo/sandbox/green/test_labelling_2.cc | 342 ---
scribo/sandbox/green/test_labelling_3.cc | 463 ----
.../green/tests/accu/stat/histo1d/Makefile.am | 153 --
.../green/tests/accu/stat/histo1d/histo1d.cc | 507 -----
.../green/tests/accu/stat/histo3d_hsl/Makefile.am | 153 --
.../tests/accu/stat/histo3d_hsl/histo3d_hsl.cc | 391 ----
.../green/tests/accu/stat/histo3d_rgb/Makefile.am | 153 --
.../tests/accu/stat/histo3d_rgb/histo3d_rgb.cc | 397 ----
.../green/tests/clustering/k_mean/Makefile.am | 153 --
.../green/tests/clustering/k_mean/k_mean.cc | 547 -----
.../green/tests/clustering/kmean1d/Makefile.am | 148 --
.../green/tests/clustering/kmean1d/kmean1d.cc | 483 ----
.../green/tests/io/plot/save_image_sh/Makefile.am | 153 --
.../tests/io/plot/save_image_sh/save_image_sh.cc | 774 -------
.../green/use/accu/stat/histo1d/Makefile.am | 153 --
.../sandbox/green/use/accu/stat/histo1d/histo1d.cc | 49 -
.../green/use/accu/stat/histo2d/Makefile.am | 153 --
.../sandbox/green/use/accu/stat/histo2d/histo2d.cc | 58 -
.../green/use/accu/stat/histo3d_hsl/Makefile.am | 153 --
.../green/use/accu/stat/histo3d_hsl/histo3d_hsl.cc | 59 -
.../green/use/accu/stat/histo3d_rgb/Makefile.am | 153 --
.../green/use/accu/stat/histo3d_rgb/histo3d_rgb.cc | 57 -
.../green/use/clustering/k_mean/Makefile.am | 153 --
.../sandbox/green/use/clustering/k_mean/k_mean.cc | 55 -
.../green/use/clustering/kmean1d/Makefile.am | 153 --
.../green/use/clustering/kmean1d/kmean1d.cc | 50 -
.../green/use/clustering/kmean2d/Makefile.am | 153 --
.../green/use/clustering/kmean2d/kmean2d.cc | 61 -
.../green/use/clustering/kmean3d/Makefile.am | 153 --
.../green/use/clustering/kmean3d/kmean3d.cc | 63 -
.../green/use/clustering/kmean_rgb/Makefile.am | 153 --
.../green/use/clustering/kmean_rgb/kmean_rgb.cc | 63 -
.../green/use/fun/v2v/rg_to_rgb/Makefile.am | 153 --
.../green/use/fun/v2v/rg_to_rgb/rg_to_rgb.cc | 68 -
.../green/use/fun/v2v/rgb8_to_rgbn/Makefile.am | 153 --
.../green/use/fun/v2v/rgb8_to_rgbn/rgb8_to_rgbn.cc | 57 -
.../green/use/fun/v2v/rgb_to_rg/Makefile.am | 153 --
.../green/use/fun/v2v/rgb_to_rg/rgb_to_rg.cc | 58 -
.../green/use/io/plot/save_image_sh/Makefile.am | 153 --
.../use/io/plot/save_image_sh/save_image_sh.cc | 53 -
scribo/sandbox/green/use/value/rg/Makefile.am | 153 --
scribo/sandbox/green/use/value/rg/rg.cc | 58 -
scribo/sandbox/z/white_spaces/hom_sep.cc | 133 --
.../sandbox/z/white_spaces/white_space_closing.cc | 123 -
scribo/sandbox/z/white_spaces/white_spaces.cc | 842 -------
scribo/scribo.mk | 9 +-
scribo/scribo/all.hh | 53 -
scribo/scribo/binarization/all.hh | 55 -
scribo/scribo/binarization/global_threshold.hh | 90 -
.../scribo/binarization/global_threshold_auto.hh | 168 --
.../binarization/internal/first_pass_functor.hh | 173 --
scribo/scribo/binarization/local_threshold.hh | 218 --
scribo/scribo/binarization/sauvola.hh | 234 --
scribo/scribo/binarization/sauvola_ms.hh | 988 ---------
scribo/scribo/binarization/sauvola_ms_split.hh | 168 --
.../scribo/binarization/sauvola_threshold_image.hh | 616 ------
.../binarization/sauvola_threshold_image_debug.hh | 421 ----
scribo/scribo/canvas/integral_browsing.hh | 422 ----
scribo/scribo/convert/from_qimage.hh | 93 -
scribo/scribo/core/all.hh | 49 -
scribo/scribo/core/component_info.hh | 203 --
scribo/scribo/core/component_set.hh | 606 -----
scribo/scribo/core/concept/dmax_functor.hh | 50 -
scribo/scribo/core/def/lbl_type.hh | 48 -
scribo/scribo/core/erase_objects.hh | 86 -
scribo/scribo/core/init_integral_image.hh | 96 -
scribo/scribo/core/line_info.hh | 959 --------
scribo/scribo/core/line_set.hh | 421 ----
scribo/scribo/core/macros.hh | 64 -
scribo/scribo/core/object_groups.hh | 262 ---
scribo/scribo/core/object_links.hh | 258 ---
scribo/scribo/core/tag/anchor.hh | 68 -
scribo/scribo/core/tag/component.hh | 121 -
scribo/scribo/core/tag/line.hh | 216 --
scribo/scribo/debug/alignment_decision_image.hh | 185 --
scribo/scribo/debug/bboxes_enlarged_image.hh | 136 --
scribo/scribo/debug/char_space_image.hh | 113 -
scribo/scribo/debug/decision_image.hh | 183 --
scribo/scribo/debug/highlight_text_area.hh | 305 ---
scribo/scribo/debug/line_info_image.hh | 123 -
scribo/scribo/debug/links_decision_image.hh | 111 -
.../scribo/debug/looks_like_a_text_line_image.hh | 130 --
scribo/scribo/debug/mean_and_base_lines_image.hh | 149 --
scribo/scribo/debug/save_bboxes_image.hh | 174 --
scribo/scribo/debug/save_comp_diff.hh | 105 -
scribo/scribo/debug/save_linked_bboxes_image.hh | 277 ---
.../scribo/debug/several_links_decision_image.hh | 179 --
scribo/scribo/debug/text_areas_image.hh | 133 --
scribo/scribo/debug/usage.hh | 84 -
scribo/scribo/draw/bounding_box_links.hh | 340 ---
scribo/scribo/draw/bounding_boxes.hh | 117 -
scribo/scribo/draw/groups_bboxes.hh | 93 -
scribo/scribo/estim/object_groups_v_thickness.hh | 106 -
scribo/scribo/filter/all.hh | 50 -
scribo/scribo/filter/common/objects_photo.hh | 98 -
scribo/scribo/filter/internal/alignment_angle.hh | 156 --
scribo/scribo/filter/internal/component_aligned.hh | 114 -
scribo/scribo/filter/internal/compute.hh | 147 --
scribo/scribo/filter/object_groups_size_ratio.hh | 105 -
scribo/scribo/filter/object_groups_small.hh | 100 -
scribo/scribo/filter/object_groups_v_thickness.hh | 99 -
scribo/scribo/filter/object_groups_with_holes.hh | 341 ---
scribo/scribo/filter/object_links_bbox_h_ratio.hh | 95 -
scribo/scribo/filter/object_links_bbox_overlap.hh | 128 --
scribo/scribo/filter/object_links_bbox_ratio.hh | 111 -
scribo/scribo/filter/object_links_bbox_w_ratio.hh | 95 -
.../scribo/filter/object_links_bottom_aligned.hh | 115 -
.../scribo/filter/object_links_center_aligned.hh | 109 -
scribo/scribo/filter/object_links_left_aligned.hh | 118 -
.../filter/object_links_non_aligned_simple.hh | 131 --
scribo/scribo/filter/object_links_right_aligned.hh | 118 -
scribo/scribo/filter/object_links_top_aligned.hh | 114 -
scribo/scribo/filter/objects_h_thick.hh | 192 --
scribo/scribo/filter/objects_h_thin.hh | 196 --
scribo/scribo/filter/objects_large.hh | 106 -
scribo/scribo/filter/objects_size_ratio.hh | 125 --
scribo/scribo/filter/objects_small.hh | 150 --
scribo/scribo/filter/objects_thick.hh | 191 --
scribo/scribo/filter/objects_thin.hh | 191 --
scribo/scribo/filter/objects_v_thick.hh | 192 --
scribo/scribo/filter/objects_v_thin.hh | 196 --
scribo/scribo/filter/objects_with_holes.hh | 466 ----
scribo/scribo/fun/v2b/label_to_bool.hh | 66 -
scribo/scribo/fun/v2b/objects_large_filter.hh | 128 --
scribo/scribo/fun/v2b/objects_small_filter.hh | 128 --
scribo/scribo/io/text_boxes/save.hh | 102 -
scribo/scribo/io/xml/save.hh | 253 ---
scribo/scribo/make/all.hh | 49 -
scribo/scribo/postprocessing/all.hh | 48 -
scribo/scribo/postprocessing/fill_object_holes.hh | 408 ----
scribo/scribo/preprocessing/all.hh | 63 -
scribo/scribo/preprocessing/crop.hh | 84 -
.../preprocessing/crop_without_localization.hh | 99 -
scribo/scribo/preprocessing/denoise.hh | 106 -
scribo/scribo/preprocessing/denoise_bg.hh | 159 --
scribo/scribo/preprocessing/denoise_fg.hh | 118 -
scribo/scribo/preprocessing/deskew.hh | 439 ----
scribo/scribo/preprocessing/deskew_crop.hh | 187 --
.../scribo/preprocessing/homogeneous_contrast.hh | 119 -
scribo/scribo/preprocessing/rotate_90.hh | 163 --
scribo/scribo/preprocessing/split_bg_fg.hh | 341 ---
scribo/scribo/primitive/extract/all.hh | 68 -
scribo/scribo/primitive/extract/components.hh | 147 --
.../primitive/extract/horizontal_separators.hh | 95 -
.../scribo/primitive/extract/lines_discontinued.hh | 152 --
.../primitive/extract/lines_h_discontinued.hh | 133 --
scribo/scribo/primitive/extract/lines_h_pattern.hh | 126 --
scribo/scribo/primitive/extract/lines_h_single.hh | 202 --
scribo/scribo/primitive/extract/lines_h_thick.hh | 129 --
.../primitive/extract/lines_h_thick_and_single.hh | 151 --
scribo/scribo/primitive/extract/lines_pattern.hh | 298 ---
scribo/scribo/primitive/extract/lines_thick.hh | 137 --
.../primitive/extract/lines_v_discontinued.hh | 131 --
scribo/scribo/primitive/extract/lines_v_pattern.hh | 109 -
scribo/scribo/primitive/extract/lines_v_single.hh | 198 --
scribo/scribo/primitive/extract/lines_v_thick.hh | 129 --
.../primitive/extract/lines_v_thick_and_single.hh | 150 --
scribo/scribo/primitive/extract/separators.hh | 98 -
.../primitive/extract/vertical_separators.hh | 95 -
scribo/scribo/primitive/group/all.hh | 58 -
scribo/scribo/primitive/group/apply.hh | 138 --
scribo/scribo/primitive/group/from_double_link.hh | 125 --
scribo/scribo/primitive/group/from_graph.hh | 180 --
scribo/scribo/primitive/group/from_single_link.hh | 111 -
scribo/scribo/primitive/internal/all.hh | 57 -
.../scribo/primitive/internal/find_graph_link.hh | 115 -
scribo/scribo/primitive/internal/find_root.hh | 74 -
scribo/scribo/primitive/internal/is_link_valid.hh | 81 -
scribo/scribo/primitive/internal/rd.hh | 192 --
scribo/scribo/primitive/link/all.hh | 61 -
scribo/scribo/primitive/link/compute.hh | 132 --
scribo/scribo/primitive/link/compute_several.hh | 117 -
.../primitive/link/internal/compute_anchor.hh | 252 ---
.../scribo/primitive/link/internal/dmax_default.hh | 83 -
.../primitive/link/internal/dmax_functor_base.hh | 102 -
.../link/internal/dmax_width_and_height.hh | 98 -
.../primitive/link/internal/dmax_width_only.hh | 95 -
scribo/scribo/primitive/link/internal/find_link.hh | 114 -
.../primitive/link/internal/find_several_links.hh | 137 --
.../primitive/link/internal/link_functor_base.hh | 516 -----
.../link/internal/link_several_dmax_base.hh | 291 ---
.../link/internal/link_single_dmax_base.hh | 167 --
.../link/internal/link_single_dmax_ratio_base.hh | 189 --
scribo/scribo/primitive/link/merge_double_link.hh | 125 --
scribo/scribo/primitive/link/with_graph.hh | 121 -
scribo/scribo/primitive/link/with_rag.hh | 103 -
.../scribo/primitive/link/with_several_graphes.hh | 127 --
.../primitive/link/with_several_left_links.hh | 141 --
.../link/with_several_right_closest_links.hh | 207 --
.../primitive/link/with_several_right_links.hh | 143 --
.../link/with_several_right_links_overlap.hh | 154 --
.../scribo/primitive/link/with_single_down_link.hh | 181 --
.../scribo/primitive/link/with_single_left_link.hh | 160 --
.../link/with_single_left_link_dmax_ratio.hh | 221 --
.../primitive/link/with_single_right_link.hh | 159 --
.../link/with_single_right_link_bottom.hh | 162 --
.../link/with_single_right_link_dmax_ratio.hh | 215 --
.../primitive/link/with_single_right_link_top.hh | 163 --
.../scribo/primitive/link/with_single_up_link.hh | 181 --
.../primitive/regroup/from_single_left_link.hh | 144 --
.../regroup/from_single_left_link_wrt_h_ratio.hh | 153 --
scribo/scribo/primitive/remove/separators.hh | 114 -
scribo/scribo/subsampling/bilinear.hh | 119 -
scribo/scribo/subsampling/integral.hh | 420 ----
scribo/scribo/subsampling/integral_single_image.hh | 460 ----
scribo/scribo/table/align_lines_horizontaly.hh | 106 -
scribo/scribo/table/erase.hh | 99 -
scribo/scribo/table/extract.hh | 118 -
scribo/scribo/table/internal/align_lines.hh | 199 --
scribo/scribo/table/internal/connect_lines.hh | 125 --
scribo/scribo/table/internal/repair_lines.hh | 197 --
scribo/scribo/table/rebuild.hh | 158 --
scribo/scribo/text/clean.hh | 127 --
scribo/scribo/text/clean_inplace.hh | 147 --
scribo/scribo/text/extract_lines.hh | 137 --
scribo/scribo/text/look_like_text_lines.hh | 116 -
scribo/scribo/text/merging.hh | 922 --------
scribo/scribo/text/recognition.hh | 269 ---
scribo/scribo/toolchain/nepomuk/text_extraction.hh | 163 --
scribo/scribo/toolchain/text_in_doc.hh | 294 ---
scribo/scribo/upsampling/bs2x.hh | 147 --
scribo/scribo/upsampling/eagle.hh | 149 --
scribo/src/Makefile.am | 88 +-
scribo/src/README | 39 -
scribo/src/afp/components.hh | 228 --
scribo/src/afp/link.hh | 178 --
scribo/src/afp/regroup.hh | 119 -
scribo/src/binarization/Makefile.am | 80 +-
scribo/src/binarization/fg_sauvola_ms.cc | 108 -
.../src/binarization/pgm_global_threshold_auto.cc | 63 -
scribo/src/binarization/pgm_sauvola.cc | 80 -
scribo/src/binarization/pgm_sauvola_ms.cc | 111 -
scribo/src/binarization/ppm_fg_sauvola_ms.cc | 128 --
scribo/src/binarization/ppm_sauvola.cc | 79 -
scribo/src/binarization/ppm_sauvola_ms.cc | 117 -
scribo/src/binarization/ppm_sauvola_ms_split.cc | 125 --
scribo/src/binarization/sauvola.cc | 43 +-
scribo/src/binarization/sauvola_debug.cc | 116 -
scribo/src/binarization/sauvola_ms.cc | 398 +++-
scribo/src/binarization/sauvola_ms_debug.cc | 147 --
scribo/src/binarization/sauvola_ms_split.cc | 123 -
scribo/src/binarization/sauvola_pgm.cc | 63 +
scribo/src/binarization/simple.cc | 61 +
scribo/src/contest/Makefile.am | 23 -
scribo/src/contest/hdibco-2010/Makefile.am | 25 -
.../src/contest/hdibco-2010/sauvola_ms_hdibco.cc | 85 -
scribo/src/debug/Makefile.am | 39 +-
scribo/src/debug/highlight_text_area.cc | 97 -
.../src/debug/show_info_median_inter_characters.cc | 84 -
scribo/src/debug/show_info_x_height.cc | 79 -
.../src/debug/show_left_right_links_validation.cc | 122 +
scribo/src/debug/show_links_bbox_h_ratio.cc | 24 +-
scribo/src/debug/show_links_bbox_overlap.cc | 19 +-
scribo/src/debug/show_links_bottom_aligned.cc | 30 +-
scribo/src/debug/show_links_center_aligned.cc | 19 +-
.../show_links_left_right_links_validation.cc | 119 -
scribo/src/debug/show_links_non_h_aligned.cc | 25 +-
scribo/src/debug/show_links_several_right.cc | 27 +-
.../src/debug/show_links_several_right_overlap.cc | 79 +-
scribo/src/debug/show_links_single_down.cc | 158 --
.../debug/show_links_single_down_left_aligned.cc | 101 -
.../debug/show_links_single_down_right_aligned.cc | 102 -
scribo/src/debug/show_links_single_left.cc | 40 +-
.../src/debug/show_links_single_left_dmax_ratio.cc | 48 +-
scribo/src/debug/show_links_single_right.cc | 41 +-
.../debug/show_links_single_right_dmax_ratio.cc | 40 +-
scribo/src/debug/show_links_single_up.cc | 160 --
.../src/debug/show_links_single_up_left_aligned.cc | 103 -
.../debug/show_links_single_up_right_aligned.cc | 101 -
scribo/src/debug/show_links_top_aligned.cc | 34 +-
scribo/src/debug/show_objects_large.cc | 27 +-
scribo/src/debug/show_objects_large_small.cc | 41 +-
scribo/src/debug/show_objects_small.cc | 27 +-
scribo/src/debug/show_objects_thick.cc | 26 +-
scribo/src/debug/show_objects_thin.cc | 24 +-
scribo/src/filter/Makefile.am | 6 +-
scribo/src/filter/objects_large.cc | 30 +-
scribo/src/filter/objects_small.cc | 22 +-
scribo/src/filter/objects_thick.cc | 30 +-
scribo/src/filter/objects_thin.cc | 30 +-
scribo/src/filter/objects_with_holes.cc | 75 -
scribo/src/filter/objects_with_holes_pgm.cc | 76 -
scribo/src/misc/negate.cc | 5 +-
scribo/src/misc/superpose.cc | 7 +-
scribo/src/multi_scale/Makefile.am | 22 +
scribo/src/multi_scale/find_lines.cc | 180 ++
scribo/src/pbm_text_in_doc.cc | 130 --
scribo/src/postprocessing/Makefile.am | 26 -
scribo/src/postprocessing/fill_object_holes.cc | 67 -
scribo/src/preprocessing/Makefile.am | 60 +-
scribo/src/preprocessing/denoise_bg.cc | 67 -
scribo/src/preprocessing/denoise_fg.cc | 66 -
scribo/src/preprocessing/homogeneous_contrast.cc | 44 -
scribo/src/preprocessing/preprocess.cc | 27 +-
scribo/src/preprocessing/rotate.cc | 68 -
scribo/src/preprocessing/rotate_90.cc | 77 -
scribo/src/preprocessing/split_bg_fg.cc | 19 +-
scribo/src/preprocessing/subsample.cc | 67 -
scribo/src/preprocessing/to_pgm.cc | 46 -
scribo/src/preprocessing/unskew.cc | 22 +-
.../extract/extract_discontinued_hlines.cc | 26 +-
.../extract/extract_discontinued_lines.cc | 47 +-
.../extract/extract_discontinued_vlines.cc | 27 +-
.../src/primitive/extract/extract_thick_hlines.cc | 25 +-
.../src/primitive/extract/extract_thick_vlines.cc | 25 +-
scribo/src/primitive/extract/lines_pattern.cc | 6 +-
.../src/primitive/find/find_discontinued_lines.cc | 18 +-
scribo/src/primitive/find/find_pattern_lines.cc | 10 +-
scribo/src/primitive/find/find_single_lines.cc | 35 +-
.../primitive/find/find_thick_and_single_lines.cc | 29 +-
scribo/src/primitive/find/find_thick_lines.cc | 20 +-
scribo/src/primitive/group/Makefile.am | 15 +-
.../src/primitive/group/group_from_double_link.cc | 62 +-
.../group/group_from_double_several_links.cc | 34 +-
.../group/group_from_several_left_links.cc | 32 +-
.../src/primitive/group/group_from_single_link.cc | 62 +-
scribo/src/table/erase.cc | 15 +-
scribo/src/table/extract.cc | 7 +-
scribo/src/text/Makefile.am | 28 +-
scribo/src/text/cleantxt.cc | 45 +-
scribo/src/text/pbm_lines_recognition.cc | 107 -
scribo/src/text/pbm_recognition.cc | 75 -
scribo/src/text/recognition.cc | 101 +
scribo/src/text_in_doc.cc | 304 +++
scribo/src/text_in_doc_ppm.cc | 322 +++
scribo/src/text_in_doc_preprocess.cc | 103 -
scribo/src/text_in_photo.cc | 250 +++
scribo/src/text_in_photo_invert.cc | 245 ++
scribo/src/text_in_photo_ppm.cc | 318 +++
scribo/src/text_in_picture.cc | 631 ------
scribo/src/text_recognition_in_picture.cc | 378 ----
scribo/table/align_lines_horizontaly.hh | 101 +
scribo/{scribo => }/table/align_lines_verticaly.hh | 0
scribo/{scribo => }/table/all.hh | 0
.../{scribo => }/table/connect_horizontal_lines.hh | 0
.../{scribo => }/table/connect_vertical_lines.hh | 0
scribo/table/erase.hh | 99 +
scribo/table/extract.hh | 117 +
scribo/table/internal/align_lines.hh | 196 ++
scribo/{scribo => }/table/internal/all.hh | 0
scribo/table/internal/connect_lines.hh | 125 ++
scribo/table/internal/repair_lines.hh | 197 ++
scribo/table/rebuild.hh | 157 ++
.../{scribo => }/table/repair_horizontal_lines.hh | 0
scribo/{scribo => }/table/repair_vertical_lines.hh | 0
scribo/tests/Makefile.am | 8 +-
scribo/tests/binarization/Makefile.am | 30 -
scribo/tests/binarization/global_threshold.cc | 24 -
scribo/tests/binarization/local_threshold.cc | 29 -
scribo/tests/core/Makefile.am | 25 -
scribo/tests/filter/Makefile.am | 3 -
scribo/tests/filter/objects_with_holes.cc | 62 -
scribo/tests/filter/small_and_large_bboxes.cc | 67 +-
scribo/tests/img/text_to_group.pgm | Bin 3053 -> 0 bytes
scribo/tests/img/wildly.pbm | Bin 2208 -> 0 bytes
scribo/tests/preprocessing/Makefile.am | 10 +-
scribo/tests/preprocessing/crop.cc | 52 -
.../preprocessing/crop_without_localization.cc | 56 -
scribo/tests/preprocessing/deskew.cc | 52 -
scribo/tests/preprocessing/rotate_90.cc | 59 -
scribo/tests/preprocessing/unskew.cc | 44 +
scribo/tests/table/extract_lines_with_rank.cc | 5 +-
scribo/tests/table/repair_lines.cc | 5 +-
scribo/tests/tests.mk | 23 +-
scribo/tests/toolchain/Makefile.am | 20 -
scribo/tests/toolchain/nepomuk/Makefile.am | 45 -
scribo/tests/toolchain/nepomuk/text_extraction.cc | 44 -
scribo/tests/unit_test/Makefile.am | 27 +-
scribo/tests/unit_test/build_unit_test.sh | 85 +
scribo/tests/unit_test/cond_tests_qt | 1 -
.../tests/unit_test/cond_tests_qt_tesseract_tiff | 1 -
scribo/tests/unit_test/cond_tests_tesseract_tiff | 1 -
scribo/tests/unit_test/disabled_tests | 3 +-
scribo/tests/unit_test/unit-tests.mk | 248 +--
scribo/{scribo => }/text/all.hh | 0
scribo/text/clean.hh | 156 ++
scribo/text/extract_lines.hh | 152 ++
scribo/text/recognition.hh | 193 ++
scribo/util/all.hh | 46 +
scribo/util/text.hh | 278 +++
1182 files changed, 22428 insertions(+), 110903 deletions(-)
delete mode 100644 build-aux/autotroll.mk
delete mode 100644 m4/autotroll.m4
delete mode 100644 m4/boost.m4
delete mode 100644 m4/pkg.m4
create mode 100644 milena/img/BUG_lean_ascii.pgm.gz
delete mode 100644 milena/img/picasso.ppm
delete mode 100644 milena/mln/convert/to_qimage.hh
delete mode 100644 milena/mln/convert/to_qimage_nocopy.hh
delete mode 100644 milena/mln/data/split.hh
delete mode 100644 milena/mln/debug/mosaic.hh
delete mode 100644 milena/mln/debug/z_order.hh
delete mode 100644 milena/mln/draw/box_plain.hh
delete mode 100644 milena/mln/draw/dashed_line.hh
delete mode 100644 milena/mln/fun/n2v/all.hh
delete mode 100644 milena/mln/fun/n2v/white_gaussian.hh
delete mode 100644 milena/mln/fun/v2v/qt_rgb_to_int_u.hh
delete mode 100644 milena/mln/fun/v2v/rgb_to_int_u.hh
delete mode 100644 milena/mln/geom/horizontal_symmetry.hh
delete mode 100644 milena/mln/geom/nslices.hh
create mode 100644 milena/mln/geom/nslis.hh
delete mode 100644 milena/mln/geom/vertical_symmetry.hh
delete mode 100644 milena/mln/histo/equalize.hh
delete mode 100644 milena/mln/io/dicom/get_header.hh
delete mode 100644 milena/mln/io/dump/get_header.hh
delete mode 100644 milena/mln/io/raw/all.hh
delete mode 100644 milena/mln/io/raw/get_header.hh
delete mode 100644 milena/mln/io/raw/load.hh
delete mode 100644 milena/mln/io/raw/save.hh
delete mode 100644 milena/mln/labeling/value_and_compute.hh
delete mode 100644 milena/mln/subsampling/antialiased.hh
delete mode 100644 milena/mln/value/internal/make_generic_name.hh
delete mode 100644 milena/mln/value/qt/rgb32.hh
delete mode 100644 milena/mln/win/sline3d.hh
delete mode 100644 milena/sandbox/bench/README_CFLAGS
delete mode 100644 milena/sandbox/bench/extract_vertical_lines.cc
delete mode 100644 milena/sandbox/bench/fast_components_and_attributes.cc
delete mode 100644 milena/sandbox/bench/fast_rows.cc
delete mode 100644 milena/sandbox/bench/fast_tiles.cc
delete mode 100644 milena/sandbox/bench/fastest.cc
delete mode 100644 milena/sandbox/bin/labeling/colorize.cc
delete mode 100644 milena/sandbox/bin/pgm_to_pbm.cc
delete mode 100644 milena/sandbox/bin/ppm_negate.cc
delete mode 100644 milena/sandbox/green/bench/transform/distance/Makefile.am
delete mode 100644 milena/sandbox/green/bench/transform/distance/distance.cc
delete mode 100644 milena/sandbox/green/demo/annotating/bic/Makefile.am
delete mode 100644 milena/sandbox/green/demo/annotating/bic/bic.cc
delete mode 100644 milena/sandbox/green/demo/annotating/hsv/Makefile.am
delete mode 100644 milena/sandbox/green/demo/annotating/hsv/hsv.cc
delete mode 100644 milena/sandbox/green/demo/annotating/lep/Makefile.am
delete mode 100644 milena/sandbox/green/demo/annotating/lep/lep.cc
delete mode 100644 milena/sandbox/green/demo/annotating/nb_color/Makefile.am
delete mode 100644 milena/sandbox/green/demo/annotating/nb_color/nb_color.cc
delete mode 100644 milena/sandbox/green/demo/annotating/project/Makefile.am
delete mode 100644 milena/sandbox/green/demo/annotating/project/project.cc
delete mode 100644 milena/sandbox/green/demo/annotating/rgb_64/Makefile.am
delete mode 100644 milena/sandbox/green/demo/annotating/rgb_64/rgb_64.cc
delete mode 100644 milena/sandbox/green/demo/annotating/rgb_64_9/Makefile.am
delete mode 100644 milena/sandbox/green/demo/annotating/rgb_64_9/rgb_64_9.cc
delete mode 100644 milena/sandbox/green/demo/annotating/stddev_color/Makefile.am
delete mode 100644 milena/sandbox/green/demo/annotating/stddev_color/stddev_color.cc
delete mode 100644 milena/sandbox/green/demo/annotating/stddev_color_16/Makefile.am
delete mode 100644 milena/sandbox/green/demo/annotating/stddev_color_16/stddev_color_16.cc
delete mode 100644 milena/sandbox/green/demo/clustering/kmean_rgb/Makefile.am
delete mode 100644 milena/sandbox/green/demo/clustering/kmean_rgb/kmean_rgb.cc
delete mode 100644 milena/sandbox/green/demo/labeling/regional_maxima/thresholds.txt
delete mode 100644 milena/sandbox/green/doc/annotating/class.txt
delete mode 100644 milena/sandbox/green/doc/annotating/syntheseMillet2008.txt
delete mode 100644 milena/sandbox/green/doc/annotating/testMillet2008
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h0_input.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h2_mean.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h2_merge.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h3_mean.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h3_merge.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h4_mean.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h4_merge.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h5_mean.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h5_merge.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i2_mean.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i2_merge.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i3_mean.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i3_merge.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i4_mean.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i4_merge.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i5_mean.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i5_merge.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/l2_input.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/l3_input.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/l4_input.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/l5_input.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/reponse_theo.eml
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/s2_histo.txt
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/s3_histo.txt
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/s4_histo.txt
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/s5_histo.txt
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/synthese.txt
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h0_input.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q2.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q3.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q4.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q5.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q6.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q7.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q8.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q2.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q3.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q4.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q5.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q6.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q7.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q8.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q2.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q3.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q4.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q5.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q6.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q7.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q8.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q2.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q3.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q4.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q5.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q6.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q7.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q8.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q2.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q3.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q4.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q5.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q6.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q7.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q8.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q2.txt
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q3.txt
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q4.txt
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q5.txt
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q6.txt
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q7.txt
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q8.txt
delete mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/synthese.txt
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_all_q4.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_all_q5.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_thick_q4.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_thick_q5.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_thin_q4.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_thin_q5.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_all_q4.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_all_q5.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_thick_q4.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_thick_q5.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_thin_q4.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_thin_q5.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_all_q4.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_all_q5.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_thick_q4.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_thick_q5.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_thin_q4.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_thin_q5.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_all_q4.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_all_q5.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_thick_q4.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_thick_q5.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_thin_q4.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_thin_q5.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_all_q4.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_all_q5.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_thick_q4.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_thick_q5.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_thin_q4.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_thin_q5.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_all_q4.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_all_q5.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_thick_q4.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_thick_q5.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_thin_q4.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_thin_q5.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mp00411c.ppm.gz
delete mode 100755 milena/sandbox/green/doc/regional_maxima/mp00411c/mp00411c.sh.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mp00411c_thick.pbm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mp00411c_thin.pbm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_all_q4.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_all_q5.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_thick_q4.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_thick_q5.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_thin_q4.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_thin_q5.dump.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_all_q4.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_all_q5.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_thick_q4.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_thick_q5.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_thin_q4.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_thin_q5.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_all_q4.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_all_q5.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_thick_q4.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_thick_q5.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_thin_q4.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_thin_q5.pgm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_all_q4.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_all_q5.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_thick_q4.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_thick_q5.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_thin_q4.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_thin_q5.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_all_q4.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_all_q5.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_thick_q4.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_thick_q5.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_thin_q4.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_thin_q5.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/quant_q4.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/quant_q5.ppm.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_all_q4.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_all_q5.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_thick_q4.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_thick_q5.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_thin_q4.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_thin_q5.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_all_q4.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_all_q5.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_thick_q4.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_thick_q5.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_thin_q4.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_thin_q5.txt.gz
delete mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/synthese.txt.gz
delete mode 100644 milena/sandbox/green/exp/annotating/achromastism/Makefile.am
delete mode 100644 milena/sandbox/green/exp/annotating/achromastism/achromastism.cc
delete mode 100644 milena/sandbox/green/exp/annotating/achromastism/text-color.txt
delete mode 100644 milena/sandbox/green/exp/annotating/achromastism/text-img.txt
delete mode 100644 milena/sandbox/green/exp/annotating/achromastism/text-only.txt
delete mode 100644 milena/sandbox/green/exp/annotating/bench/Makefile.am
delete mode 100644 milena/sandbox/green/exp/annotating/bench/bench.cc
delete mode 100644 milena/sandbox/green/exp/annotating/error/Makefile.am
delete mode 100644 milena/sandbox/green/exp/annotating/error/error.cc
delete mode 100644 milena/sandbox/green/exp/annotating/histo/Makefile.am
delete mode 100644 milena/sandbox/green/exp/annotating/histo/histo.cc
delete mode 100644 milena/sandbox/green/exp/annotating/hsv/Makefile.am
delete mode 100644 milena/sandbox/green/exp/annotating/hsv/hsv.cc
delete mode 100644 milena/sandbox/green/exp/annotating/hue/Makefile.am
delete mode 100644 milena/sandbox/green/exp/annotating/hue/hue.cc
delete mode 100644 milena/sandbox/green/exp/annotating/hue/text-color.txt
delete mode 100644 milena/sandbox/green/exp/annotating/hue/text-img.txt
delete mode 100644 milena/sandbox/green/exp/annotating/hue/text-only.txt
delete mode 100644 milena/sandbox/green/exp/annotating/nb_color/Makefile.am
delete mode 100644 milena/sandbox/green/exp/annotating/nb_color/nb_color.cc
delete mode 100644 milena/sandbox/green/exp/annotating/saturation/Makefile.am
delete mode 100644 milena/sandbox/green/exp/annotating/saturation/saturation.cc
delete mode 100644 milena/sandbox/green/exp/annotating/saturation/text-color.txt
delete mode 100644 milena/sandbox/green/exp/annotating/saturation/text-img.txt
delete mode 100644 milena/sandbox/green/exp/annotating/saturation/text-only.txt
delete mode 100644 milena/sandbox/green/exp/annotating/stddev_color/Makefile.am
delete mode 100644 milena/sandbox/green/exp/annotating/stddev_color/stddev_color.cc
delete mode 100644 milena/sandbox/green/exp/annotating/stddev_color_16/Makefile.am
delete mode 100644 milena/sandbox/green/exp/annotating/stddev_color_16/stddev_color_16.cc
delete mode 100644 milena/sandbox/green/exp/annotating/value/Makefile.am
delete mode 100644 milena/sandbox/green/exp/annotating/value/text-color.txt
delete mode 100644 milena/sandbox/green/exp/annotating/value/text-img.txt
delete mode 100644 milena/sandbox/green/exp/annotating/value/text-only.txt
delete mode 100644 milena/sandbox/green/exp/annotating/value/value.cc
delete mode 100644 milena/sandbox/green/exp/labeling/regional_maxima/Makefile.am
delete mode 100644 milena/sandbox/green/exp/labeling/regional_maxima/regional_maxima.cc
delete mode 100644 milena/sandbox/green/mln/clustering/kmean_rgb.hh
delete mode 100644 milena/sandbox/green/mln/fun/p2b/achromatic.hh
delete mode 100644 milena/sandbox/green/mln/fun/p2b/component_equals.hh
delete mode 100644 milena/sandbox/green/mln/fun/v2v/achromatism.hh
delete mode 100644 milena/sandbox/green/mln/fun/v2v/hue_concentration.hh
delete mode 100644 milena/sandbox/green/mln/fun/v2v/rgb8_to_int_u8.hh
delete mode 100644 milena/sandbox/green/mln/fun/v2v/rgb_to_achromatism_map.hh
delete mode 100644 milena/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh
delete mode 100644 milena/sandbox/green/mln/fun/v2v/rgb_to_hue_map.hh
delete mode 100644 milena/sandbox/green/mln/fun/v2v/rgb_to_saturation_map.hh
delete mode 100644 milena/sandbox/green/mln/fun/v2v/rgb_to_value_map.hh
delete mode 100644 milena/sandbox/green/mln/math/ceil.hh
delete mode 100644 milena/sandbox/green/mln/math/floor.hh
delete mode 100644 milena/sandbox/green/mln/value/hsv.hh
delete mode 100644 milena/sandbox/green/tools/annotating/histo/Makefile.am
delete mode 100644 milena/sandbox/green/tools/annotating/histo/histo.cc
delete mode 100644 milena/sandbox/green/tools/annotating/iz/Makefile.am
delete mode 100644 milena/sandbox/green/tools/annotating/iz/iz.cc
delete mode 100644 milena/sandbox/green/tools/annotating/opening/Makefile.am
delete mode 100644 milena/sandbox/green/tools/annotating/opening/opening.cc
delete mode 100644 milena/sandbox/green/tools/annotating/regmax/Makefile.am
delete mode 100644 milena/sandbox/green/tools/annotating/regmax/regmax.cc
delete mode 100644 milena/sandbox/lazzara/scribo/binarization_naive/main.cc
delete mode 100644 milena/sandbox/lazzara/scribo/binarization_naive/toto.cc
delete mode 100644 milena/sandbox/lazzara/scribo/fill_holes/main.cc
delete mode 100644 milena/sandbox/lazzara/scribo/separateurs_materialises/lines_pattern.cc
delete mode 100644 milena/sandbox/lazzara/scribo/skeleton_crest/main.cc
delete mode 100644 milena/tests/convert/to_qimage.cc
delete mode 100644 milena/tests/convert/to_qimage_nocopy.cc
delete mode 100644 milena/tests/core/site_set/box.cc
delete mode 100644 milena/tests/data/paste_without_localization.cc
delete mode 100644 milena/tests/data/split.cc
delete mode 100644 milena/tests/fun/v2v/qt_rgb_to_int_u.cc
delete mode 100644 milena/tests/geom/horizontal_symmetry.cc
delete mode 100644 milena/tests/geom/nslices.cc
create mode 100644 milena/tests/geom/nslis.cc
delete mode 100644 milena/tests/geom/vertical_symmetry.cc
delete mode 100644 milena/tests/subsampling/antialiased.cc
delete mode 100644 milena/tests/unit_test/cond_tests_boost-preprocessor_boost-tuple
delete mode 100644 milena/tests/unit_test/cond_tests_cfitsio
delete mode 100644 milena/tests/unit_test/cond_tests_gdcm
delete mode 100644 milena/tests/unit_test/cond_tests_magickxx
delete mode 100644 milena/tests/unit_test/cond_tests_qt
delete mode 100644 milena/tests/unit_test/cond_tests_tiff
delete mode 100644 scribo/README
create mode 100644 scribo/all.hh
create mode 100644 scribo/binarization/binarize.hh
create mode 100644 scribo/binarization/sauvola.hh
create mode 100644 scribo/binarization/sauvola_threshold.hh
create mode 100644 scribo/binarization/simple.hh
create mode 100644 scribo/core/all.hh
rename scribo/{scribo => }/core/central_sites.hh (100%)
rename scribo/{scribo => }/core/concept/link_functor.hh (100%)
create mode 100644 scribo/core/erase_objects.hh
create mode 100644 scribo/core/internal/link_functor_base.hh
create mode 100644 scribo/core/macros.hh
create mode 100644 scribo/core/object_groups.hh
create mode 100644 scribo/core/object_image.hh
create mode 100644 scribo/core/object_links.hh
create mode 100644 scribo/debug/alignment_decision_image.hh
rename scribo/{scribo => }/debug/all.hh (100%)
create mode 100644 scribo/debug/decision_image.hh
create mode 100644 scribo/debug/links_decision_image.hh
create mode 100644 scribo/debug/save_bboxes_image.hh
rename scribo/{scribo => }/debug/save_label_image.hh (100%)
create mode 100644 scribo/debug/save_linked_bboxes_image.hh
create mode 100644 scribo/debug/save_object_diff.hh
rename scribo/{scribo => }/debug/save_table_image.hh (100%)
create mode 100644 scribo/debug/several_links_decision_image.hh
create mode 100644 scribo/debug/usage.hh
delete mode 100644 scribo/demo/demat/demat.pro
delete mode 100644 scribo/demo/demat/demat.qrc
delete mode 100644 scribo/demo/demat/src/doc_type.hh
delete mode 100644 scribo/demo/demat/src/main.cc
delete mode 100644 scribo/demo/demat/src/main_window.cc
delete mode 100644 scribo/demo/demat/src/main_window.hh
delete mode 100644 scribo/demo/demat/src/mln_widgets.cc
delete mode 100644 scribo/demo/demat/src/preprocessing_task.hh
delete mode 100644 scribo/demo/demat/src/process_args.hh
delete mode 100644 scribo/demo/demat/src/runner.cc
delete mode 100644 scribo/demo/demat/src/runner.hh
delete mode 100644 scribo/demo/demat/ui/main_window.ui
create mode 100644 scribo/demo/demo.pro
rename scribo/demo/{review/review.qrc => demo.qrc} (100%)
rename scribo/demo/{review => }/icons/document-open.png (100%)
rename scribo/demo/{review => }/icons/edit-find.png (100%)
rename scribo/demo/{review => }/icons/format-indent-more.png (100%)
rename scribo/demo/{review => }/icons/go-next.png (100%)
rename scribo/demo/{review => }/icons/image-x-generic.png (100%)
rename scribo/demo/{review => }/icons/list-add.png (100%)
rename scribo/demo/{review => }/icons/ocr.png (100%)
rename scribo/demo/{review => }/icons/text-x-generic.png (100%)
rename scribo/demo/{review => }/icons/view-refresh.png (100%)
rename scribo/demo/{review => }/icons/x-office-spreadsheet.png (100%)
delete mode 100644 scribo/demo/review/Makefile.am
delete mode 100644 scribo/demo/review/review.pro
delete mode 100644 scribo/demo/review/src/main.cc
delete mode 100644 scribo/demo/review/src/mainwindow.cc
delete mode 100644 scribo/demo/review/src/mainwindow.hh
delete mode 100644 scribo/demo/shared/icons/Symbols-Delete-icon.png
delete mode 100644 scribo/demo/shared/icons/accept-icon.png
delete mode 100644 scribo/demo/shared/icons/close.gif
delete mode 100644 scribo/demo/shared/icons/crop-icon.png
delete mode 100644 scribo/demo/shared/icons/image-add-icon.png
delete mode 100644 scribo/demo/shared/icons/image-edit-icon.png
delete mode 100644 scribo/demo/shared/icons/image-multi-icon.png
delete mode 100644 scribo/demo/shared/icons/image-next-icon.png
delete mode 100644 scribo/demo/shared/icons/image-remove-icon.png
delete mode 100644 scribo/demo/shared/icons/next-icon.png
delete mode 100644 scribo/demo/shared/icons/page-down-icon.png
delete mode 100644 scribo/demo/shared/icons/page-search-icon.png
delete mode 100644 scribo/demo/shared/icons/rotate_ccw.png
delete mode 100644 scribo/demo/shared/icons/rotate_cw.png
delete mode 100644 scribo/demo/shared/icons/search-add-icon.png
delete mode 100644 scribo/demo/shared/icons/search-remove-icon.png
delete mode 100644 scribo/demo/shared/shared.qrc
delete mode 100644 scribo/demo/shared/src/bak/crop_item.cc
delete mode 100644 scribo/demo/shared/src/bak/crop_item.hh
delete mode 100644 scribo/demo/shared/src/bak/image_viewer.cc
delete mode 100644 scribo/demo/shared/src/bak/image_viewer.hh
delete mode 100644 scribo/demo/shared/src/bak/types.hh
delete mode 100644 scribo/demo/shared/src/browse_widget.cc
delete mode 100644 scribo/demo/shared/src/browse_widget.hh
delete mode 100644 scribo/demo/shared/src/crop_item.cc
delete mode 100644 scribo/demo/shared/src/crop_item.hh
delete mode 100644 scribo/demo/shared/src/image_viewer.cc
delete mode 100644 scribo/demo/shared/src/image_viewer.hh
delete mode 100644 scribo/demo/shared/src/image_viewer.hxx
delete mode 100644 scribo/demo/shared/src/internal.bak/interactive_scene.cc
delete mode 100644 scribo/demo/shared/src/internal.bak/interactive_scene.hh
delete mode 100644 scribo/demo/shared/src/internal.bak/selection_rectangle.cc
delete mode 100644 scribo/demo/shared/src/internal.bak/selection_rectangle.hh
delete mode 100644 scribo/demo/shared/src/internal/interactive_scene.cc
delete mode 100644 scribo/demo/shared/src/internal/interactive_scene.hh
delete mode 100644 scribo/demo/shared/src/internal/selection_rectangle.cc
delete mode 100644 scribo/demo/shared/src/internal/selection_rectangle.hh
delete mode 100644 scribo/demo/shared/src/to_mln_image.hh
delete mode 100644 scribo/demo/shared/src/types.hh
delete mode 100644 scribo/demo/shared/ui/browse_widget.ui
delete mode 100644 scribo/demo/shared/ui/crop_widget.ui
delete mode 100644 scribo/demo/shared/ui/image_viewer.ui
delete mode 100644 scribo/demo/shared/ui/interactive_scene.cc
delete mode 100644 scribo/demo/shared/ui/interactive_scene.hh
delete mode 100644 scribo/demo/shared/ui/rotate_widget.ui
create mode 100644 scribo/demo/src/main.cc
create mode 100644 scribo/demo/src/mainwindow.cc
create mode 100644 scribo/demo/src/mainwindow.hh
delete mode 100644 scribo/demo/tip/gui.pro
delete mode 100644 scribo/demo/tip/gui.qrc
delete mode 100644 scribo/demo/tip/icons/next.png
delete mode 100644 scribo/demo/tip/icons/ok.png
delete mode 100644 scribo/demo/tip/icons/photos.png
delete mode 100644 scribo/demo/tip/icons/prev.png
delete mode 100644 scribo/demo/tip/icons/remove.png
delete mode 100644 scribo/demo/tip/src/custom_delegate.cc
delete mode 100644 scribo/demo/tip/src/custom_delegate.hh
delete mode 100644 scribo/demo/tip/src/launch_dialog.cc
delete mode 100644 scribo/demo/tip/src/launch_dialog.hh
delete mode 100644 scribo/demo/tip/src/main.cc
delete mode 100644 scribo/demo/tip/src/main_window.cc
delete mode 100644 scribo/demo/tip/src/main_window.hh
delete mode 100644 scribo/demo/tip/ui/launch_dialog.ui
delete mode 100644 scribo/demo/tip/ui/main_window.ui
rename scribo/demo/{review => }/ui/mainwindow.ui (100%)
delete mode 100644 scribo/demo/viewer/Makefile.am
delete mode 100644 scribo/demo/viewer/README
delete mode 100644 scribo/demo/viewer/browser_widget.cc
delete mode 100644 scribo/demo/viewer/browser_widget.hh
delete mode 100644 scribo/demo/viewer/common.hh
delete mode 100644 scribo/demo/viewer/domitem.cc
delete mode 100644 scribo/demo/viewer/domitem.hh
delete mode 100644 scribo/demo/viewer/dommodel.cc
delete mode 100644 scribo/demo/viewer/dommodel.hh
delete mode 100644 scribo/demo/viewer/help_dialog.cc
delete mode 100644 scribo/demo/viewer/help_dialog.hh
delete mode 100644 scribo/demo/viewer/image_region.cc
delete mode 100644 scribo/demo/viewer/image_region.hh
delete mode 100644 scribo/demo/viewer/image_region.hxx
delete mode 100644 scribo/demo/viewer/image_scene.cc
delete mode 100644 scribo/demo/viewer/image_scene.hh
delete mode 100644 scribo/demo/viewer/image_view.cc
delete mode 100644 scribo/demo/viewer/image_view.hh
delete mode 100644 scribo/demo/viewer/image_widget.cc
delete mode 100644 scribo/demo/viewer/image_widget.hh
delete mode 100644 scribo/demo/viewer/key_widget.cc
delete mode 100644 scribo/demo/viewer/key_widget.hh
delete mode 100644 scribo/demo/viewer/main.cc
delete mode 100644 scribo/demo/viewer/property_widget.cc
delete mode 100644 scribo/demo/viewer/property_widget.hh
delete mode 100644 scribo/demo/viewer/step_widget.cc
delete mode 100644 scribo/demo/viewer/step_widget.hh
delete mode 100644 scribo/demo/viewer/viewer.cc
delete mode 100644 scribo/demo/viewer/viewer.hh
delete mode 100644 scribo/demo/viewer/viewer.hxx
delete mode 100644 scribo/demo/viewer/xml_widget.cc
delete mode 100644 scribo/demo/viewer/xml_widget.hh
delete mode 100644 scribo/demo/wizard/images/dematerialization.png
delete mode 100644 scribo/demo/wizard/src/crop_page.cc
delete mode 100644 scribo/demo/wizard/src/crop_page.hh
delete mode 100644 scribo/demo/wizard/src/crop_widget.cc
delete mode 100644 scribo/demo/wizard/src/crop_widget.hh
delete mode 100644 scribo/demo/wizard/src/doc_type.hh
delete mode 100644 scribo/demo/wizard/src/doc_type_page.cc
delete mode 100644 scribo/demo/wizard/src/doc_type_page.hh
delete mode 100644 scribo/demo/wizard/src/doc_type_widget.cc
delete mode 100644 scribo/demo/wizard/src/doc_type_widget.hh
delete mode 100644 scribo/demo/wizard/src/load_page.cc
delete mode 100644 scribo/demo/wizard/src/load_page.hh
delete mode 100644 scribo/demo/wizard/src/load_widget.cc
delete mode 100644 scribo/demo/wizard/src/load_widget.hh
delete mode 100644 scribo/demo/wizard/src/main.cc
delete mode 100644 scribo/demo/wizard/src/main_window.cc
delete mode 100644 scribo/demo/wizard/src/main_window.hh
delete mode 100644 scribo/demo/wizard/src/mln_widgets.cc
delete mode 100644 scribo/demo/wizard/src/preprocessing_page.cc
delete mode 100644 scribo/demo/wizard/src/preprocessing_page.hh
delete mode 100644 scribo/demo/wizard/src/preprocessing_task.hh
delete mode 100644 scribo/demo/wizard/src/preprocessing_widget.cc
delete mode 100644 scribo/demo/wizard/src/preprocessing_widget.hh
delete mode 100644 scribo/demo/wizard/src/process_page.cc
delete mode 100644 scribo/demo/wizard/src/process_page.hh
delete mode 100644 scribo/demo/wizard/src/process_widget.cc
delete mode 100644 scribo/demo/wizard/src/process_widget.hh
delete mode 100644 scribo/demo/wizard/src/result_page.cc
delete mode 100644 scribo/demo/wizard/src/result_page.hh
delete mode 100644 scribo/demo/wizard/src/result_widget.cc
delete mode 100644 scribo/demo/wizard/src/result_widget.hh
delete mode 100644 scribo/demo/wizard/src/rotate_page.cc
delete mode 100644 scribo/demo/wizard/src/rotate_page.hh
delete mode 100644 scribo/demo/wizard/src/rotate_widget.cc
delete mode 100644 scribo/demo/wizard/src/rotate_widget.hh
delete mode 100644 scribo/demo/wizard/src/runner.cc
delete mode 100644 scribo/demo/wizard/src/runner.hh
delete mode 100644 scribo/demo/wizard/src/test.cc
delete mode 100644 scribo/demo/wizard/ui/doc_type_widget.ui
delete mode 100644 scribo/demo/wizard/ui/load_widget.ui
delete mode 100644 scribo/demo/wizard/ui/main_window.ui
delete mode 100644 scribo/demo/wizard/ui/preprocessing_widget.ui
delete mode 100644 scribo/demo/wizard/wizard.pro
delete mode 100644 scribo/demo/wizard/wizard.qrc
rename scribo/{scribo => }/draw/all.hh (100%)
create mode 100644 scribo/draw/bounding_box_links.hh
create mode 100644 scribo/draw/bounding_boxes.hh
create mode 100644 scribo/estim/object_groups_v_thickness.hh
create mode 100644 scribo/filter/all.hh
create mode 100644 scribo/filter/common/objects_photo.hh
create mode 100644 scribo/filter/internal/compute.hh
create mode 100644 scribo/filter/object_groups_size_ratio.hh
create mode 100644 scribo/filter/object_groups_small.hh
create mode 100644 scribo/filter/object_groups_v_thickness.hh
create mode 100644 scribo/filter/object_links_bbox_h_ratio.hh
create mode 100644 scribo/filter/object_links_bbox_overlap.hh
create mode 100644 scribo/filter/object_links_bbox_ratio.hh
create mode 100644 scribo/filter/object_links_bbox_w_ratio.hh
create mode 100644 scribo/filter/object_links_bottom_aligned.hh
create mode 100644 scribo/filter/object_links_center_aligned.hh
create mode 100644 scribo/filter/object_links_non_aligned.hh
create mode 100644 scribo/filter/object_links_non_aligned_simple.hh
create mode 100644 scribo/filter/object_links_non_h_aligned.hh
create mode 100644 scribo/filter/object_links_non_v_aligned.hh
create mode 100644 scribo/filter/object_links_top_aligned.hh
create mode 100644 scribo/filter/objects_h_thick.hh
create mode 100644 scribo/filter/objects_h_thin.hh
create mode 100644 scribo/filter/objects_large.hh
create mode 100644 scribo/filter/objects_size_ratio.hh
create mode 100644 scribo/filter/objects_small.hh
create mode 100644 scribo/filter/objects_thick.hh
create mode 100644 scribo/filter/objects_thin.hh
create mode 100644 scribo/filter/objects_v_thick.hh
create mode 100644 scribo/filter/objects_v_thin.hh
create mode 100644 scribo/fun/v2b/objects_small_filter.hh
create mode 100644 scribo/make/all.hh
rename scribo/{scribo => }/make/debug_filename.hh (100%)
rename scribo/{scribo => }/make/influence_zone_graph.hh (100%)
create mode 100644 scribo/make/text.hh
create mode 100644 scribo/preprocessing/all.hh
create mode 100644 scribo/preprocessing/split_bg_fg.hh
create mode 100644 scribo/preprocessing/unskew.hh
rename scribo/{scribo => }/primitive/all.hh (100%)
create mode 100644 scribo/primitive/extract/all.hh
rename scribo/{scribo => }/primitive/extract/canvas.hh (100%)
rename scribo/{scribo => }/primitive/extract/cells.hh (100%)
create mode 100644 scribo/primitive/extract/lines_discontinued.hh
create mode 100644 scribo/primitive/extract/lines_h_discontinued.hh
create mode 100644 scribo/primitive/extract/lines_h_pattern.hh
create mode 100644 scribo/primitive/extract/lines_h_single.hh
create mode 100644 scribo/primitive/extract/lines_h_thick.hh
create mode 100644 scribo/primitive/extract/lines_h_thick_and_single.hh
create mode 100644 scribo/primitive/extract/lines_pattern.hh
create mode 100644 scribo/primitive/extract/lines_thick.hh
create mode 100644 scribo/primitive/extract/lines_v_discontinued.hh
create mode 100644 scribo/primitive/extract/lines_v_pattern.hh
create mode 100644 scribo/primitive/extract/lines_v_single.hh
create mode 100644 scribo/primitive/extract/lines_v_thick.hh
create mode 100644 scribo/primitive/extract/lines_v_thick_and_single.hh
create mode 100644 scribo/primitive/extract/objects.hh
create mode 100644 scribo/primitive/group/all.hh
create mode 100644 scribo/primitive/group/apply.hh
create mode 100644 scribo/primitive/group/from_double_link.hh
create mode 100644 scribo/primitive/group/from_graph.hh
create mode 100644 scribo/primitive/group/from_single_link.hh
create mode 100644 scribo/primitive/internal/all.hh
create mode 100644 scribo/primitive/internal/find_graph_link.hh
create mode 100644 scribo/primitive/internal/find_left_link.hh
create mode 100644 scribo/primitive/internal/find_right_link.hh
create mode 100644 scribo/primitive/internal/find_root.hh
rename scribo/{scribo => }/primitive/internal/have_link_valid.hh (100%)
create mode 100644 scribo/primitive/internal/init_link_array.hh
create mode 100644 scribo/primitive/internal/is_invalid_link.hh
create mode 100644 scribo/primitive/internal/is_link_valid.hh
rename scribo/{scribo => }/primitive/internal/update_graph_link.hh (100%)
create mode 100644 scribo/primitive/internal/update_link_array.hh
create mode 100644 scribo/primitive/link/all.hh
create mode 100644 scribo/primitive/link/compute.hh
create mode 100644 scribo/primitive/link/compute_several.hh
create mode 100644 scribo/primitive/link/internal/anchors_3.hh
create mode 100644 scribo/primitive/link/internal/find_link.hh
create mode 100644 scribo/primitive/link/internal/find_several_links.hh
create mode 100644 scribo/primitive/link/internal/link_center_dmax_base.hh
create mode 100644 scribo/primitive/link/internal/link_center_dmax_ratio_base.hh
create mode 100644 scribo/primitive/link/internal/link_functor_base.hh
create mode 100644 scribo/primitive/link/internal/link_ms_dmax_base.hh
create mode 100644 scribo/primitive/link/internal/link_ms_dmax_ratio_base.hh
create mode 100644 scribo/primitive/link/merge_double_link.hh
create mode 100644 scribo/primitive/link/with_graph.hh
create mode 100644 scribo/primitive/link/with_rag.hh
create mode 100644 scribo/primitive/link/with_several_graphes.hh
create mode 100644 scribo/primitive/link/with_several_left_links.hh
create mode 100644 scribo/primitive/link/with_several_right_closest_links.hh
create mode 100644 scribo/primitive/link/with_several_right_links.hh
create mode 100644 scribo/primitive/link/with_several_right_links_overlap.hh
create mode 100644 scribo/primitive/link/with_single_left_link.hh
create mode 100644 scribo/primitive/link/with_single_left_link_dmax_ratio.hh
create mode 100644 scribo/primitive/link/with_single_right_link.hh
create mode 100644 scribo/primitive/link/with_single_right_link_bottom.hh
create mode 100644 scribo/primitive/link/with_single_right_link_dmax_ratio.hh
create mode 100644 scribo/primitive/link/with_single_right_link_top.hh
delete mode 100644 scribo/sandbox/ChangeLog
delete mode 100644 scribo/sandbox/green/ChangeLog
delete mode 100644 scribo/sandbox/green/README
delete mode 100644 scribo/sandbox/green/README.green
delete mode 100644 scribo/sandbox/green/README.img
delete mode 100644 scribo/sandbox/green/README.result
delete mode 100644 scribo/sandbox/green/bench/clustering/distance/Makefile.am
delete mode 100644 scribo/sandbox/green/bench/clustering/distance/distance.cc
delete mode 100644 scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
delete mode 100644 scribo/sandbox/green/demo/clustering/kmean1d/kmean1d.cc
delete mode 100644 scribo/sandbox/green/demo/clustering/kmean2d/Makefile.am
delete mode 100644 scribo/sandbox/green/demo/clustering/kmean2d/kmean2d.cc
delete mode 100644 scribo/sandbox/green/demo/clustering/kmean3d/Makefile.am
delete mode 100644 scribo/sandbox/green/demo/clustering/kmean3d/kmean3d.cc
delete mode 100644 scribo/sandbox/green/demo/clustering/kmean_rgb/Makefile.am
delete mode 100644 scribo/sandbox/green/demo/clustering/kmean_rgb/kmean_rgb.cc
delete mode 100755 scribo/sandbox/green/gaussian.sh
delete mode 100755 scribo/sandbox/green/gaussian2d.sh
delete mode 100644 scribo/sandbox/green/mln/accu/stat/histo1d.hh
delete mode 100644 scribo/sandbox/green/mln/accu/stat/histo2d.hh
delete mode 100644 scribo/sandbox/green/mln/accu/stat/histo3d_hsl.hh
delete mode 100644 scribo/sandbox/green/mln/accu/stat/histo3d_rgb.hh
delete mode 100644 scribo/sandbox/green/mln/clustering/k_mean.hh
delete mode 100644 scribo/sandbox/green/mln/clustering/kmean1d.hh
delete mode 100644 scribo/sandbox/green/mln/clustering/kmean2d.hh
delete mode 100644 scribo/sandbox/green/mln/clustering/kmean3d.hh
delete mode 100644 scribo/sandbox/green/mln/clustering/kmean_rgb.hh
delete mode 100644 scribo/sandbox/green/mln/display/display_histo.hh
delete mode 100644 scribo/sandbox/green/mln/display/project_histo.hh
delete mode 100644 scribo/sandbox/green/mln/fun/p2b/achromatic.hh
delete mode 100644 scribo/sandbox/green/mln/fun/p2b/component_equals.hh
delete mode 100644 scribo/sandbox/green/mln/fun/v2v/achromatism.hh
delete mode 100644 scribo/sandbox/green/mln/fun/v2v/hue_concentration.hh
delete mode 100644 scribo/sandbox/green/mln/fun/v2v/int_u16_to_int_u14.hh
delete mode 100644 scribo/sandbox/green/mln/fun/v2v/log.hh
delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rg_to_rgb.hh
delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb8_to_int_u8.hh
delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb8_to_rgbn.hh
delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_achromatism_map.hh
delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh
delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_hue_map.hh
delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_rg.hh
delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_saturation_map.hh
delete mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_value_map.hh
delete mode 100644 scribo/sandbox/green/mln/img_path.hh
delete mode 100644 scribo/sandbox/green/mln/io/plot/save_image_sh.hh
delete mode 100644 scribo/sandbox/green/mln/math/ceil.hh
delete mode 100644 scribo/sandbox/green/mln/math/floor.hh
delete mode 100644 scribo/sandbox/green/mln/value/hsv.hh
delete mode 100644 scribo/sandbox/green/mln/value/rg.hh
delete mode 100644 scribo/sandbox/green/ok/mln/accu/histo/histo1d.hh
delete mode 100644 scribo/sandbox/green/ok/mln/accu/histo/histo2d.hh
delete mode 100644 scribo/sandbox/green/ok/mln/accu/histo/histo3d.hh
delete mode 100644 scribo/sandbox/green/ok/mln/img_path.hh
delete mode 100755 scribo/sandbox/green/ok/test/accu/histo/gaussian.sh
delete mode 100755 scribo/sandbox/green/ok/test/accu/histo/histo1d
delete mode 100644 scribo/sandbox/green/ok/test/accu/histo/histo1d.cc
delete mode 100644 scribo/sandbox/green/test_labelling.cc
delete mode 100644 scribo/sandbox/green/test_labelling_2.cc
delete mode 100644 scribo/sandbox/green/test_labelling_3.cc
delete mode 100644 scribo/sandbox/green/tests/accu/stat/histo1d/Makefile.am
delete mode 100644 scribo/sandbox/green/tests/accu/stat/histo1d/histo1d.cc
delete mode 100644 scribo/sandbox/green/tests/accu/stat/histo3d_hsl/Makefile.am
delete mode 100644 scribo/sandbox/green/tests/accu/stat/histo3d_hsl/histo3d_hsl.cc
delete mode 100644 scribo/sandbox/green/tests/accu/stat/histo3d_rgb/Makefile.am
delete mode 100644 scribo/sandbox/green/tests/accu/stat/histo3d_rgb/histo3d_rgb.cc
delete mode 100644 scribo/sandbox/green/tests/clustering/k_mean/Makefile.am
delete mode 100644 scribo/sandbox/green/tests/clustering/k_mean/k_mean.cc
delete mode 100644 scribo/sandbox/green/tests/clustering/kmean1d/Makefile.am
delete mode 100644 scribo/sandbox/green/tests/clustering/kmean1d/kmean1d.cc
delete mode 100644 scribo/sandbox/green/tests/io/plot/save_image_sh/Makefile.am
delete mode 100644 scribo/sandbox/green/tests/io/plot/save_image_sh/save_image_sh.cc
delete mode 100644 scribo/sandbox/green/use/accu/stat/histo1d/Makefile.am
delete mode 100644 scribo/sandbox/green/use/accu/stat/histo1d/histo1d.cc
delete mode 100644 scribo/sandbox/green/use/accu/stat/histo2d/Makefile.am
delete mode 100644 scribo/sandbox/green/use/accu/stat/histo2d/histo2d.cc
delete mode 100644 scribo/sandbox/green/use/accu/stat/histo3d_hsl/Makefile.am
delete mode 100644 scribo/sandbox/green/use/accu/stat/histo3d_hsl/histo3d_hsl.cc
delete mode 100644 scribo/sandbox/green/use/accu/stat/histo3d_rgb/Makefile.am
delete mode 100644 scribo/sandbox/green/use/accu/stat/histo3d_rgb/histo3d_rgb.cc
delete mode 100644 scribo/sandbox/green/use/clustering/k_mean/Makefile.am
delete mode 100644 scribo/sandbox/green/use/clustering/k_mean/k_mean.cc
delete mode 100644 scribo/sandbox/green/use/clustering/kmean1d/Makefile.am
delete mode 100644 scribo/sandbox/green/use/clustering/kmean1d/kmean1d.cc
delete mode 100644 scribo/sandbox/green/use/clustering/kmean2d/Makefile.am
delete mode 100644 scribo/sandbox/green/use/clustering/kmean2d/kmean2d.cc
delete mode 100644 scribo/sandbox/green/use/clustering/kmean3d/Makefile.am
delete mode 100644 scribo/sandbox/green/use/clustering/kmean3d/kmean3d.cc
delete mode 100644 scribo/sandbox/green/use/clustering/kmean_rgb/Makefile.am
delete mode 100644 scribo/sandbox/green/use/clustering/kmean_rgb/kmean_rgb.cc
delete mode 100644 scribo/sandbox/green/use/fun/v2v/rg_to_rgb/Makefile.am
delete mode 100644 scribo/sandbox/green/use/fun/v2v/rg_to_rgb/rg_to_rgb.cc
delete mode 100644 scribo/sandbox/green/use/fun/v2v/rgb8_to_rgbn/Makefile.am
delete mode 100644 scribo/sandbox/green/use/fun/v2v/rgb8_to_rgbn/rgb8_to_rgbn.cc
delete mode 100644 scribo/sandbox/green/use/fun/v2v/rgb_to_rg/Makefile.am
delete mode 100644 scribo/sandbox/green/use/fun/v2v/rgb_to_rg/rgb_to_rg.cc
delete mode 100644 scribo/sandbox/green/use/io/plot/save_image_sh/Makefile.am
delete mode 100644 scribo/sandbox/green/use/io/plot/save_image_sh/save_image_sh.cc
delete mode 100644 scribo/sandbox/green/use/value/rg/Makefile.am
delete mode 100644 scribo/sandbox/green/use/value/rg/rg.cc
delete mode 100644 scribo/sandbox/z/white_spaces/hom_sep.cc
delete mode 100644 scribo/sandbox/z/white_spaces/white_space_closing.cc
delete mode 100644 scribo/sandbox/z/white_spaces/white_spaces.cc
delete mode 100644 scribo/scribo/all.hh
delete mode 100644 scribo/scribo/binarization/all.hh
delete mode 100644 scribo/scribo/binarization/global_threshold.hh
delete mode 100644 scribo/scribo/binarization/global_threshold_auto.hh
delete mode 100644 scribo/scribo/binarization/internal/first_pass_functor.hh
delete mode 100644 scribo/scribo/binarization/local_threshold.hh
delete mode 100644 scribo/scribo/binarization/sauvola.hh
delete mode 100644 scribo/scribo/binarization/sauvola_ms.hh
delete mode 100644 scribo/scribo/binarization/sauvola_ms_split.hh
delete mode 100644 scribo/scribo/binarization/sauvola_threshold_image.hh
delete mode 100644 scribo/scribo/binarization/sauvola_threshold_image_debug.hh
delete mode 100644 scribo/scribo/canvas/integral_browsing.hh
delete mode 100644 scribo/scribo/convert/from_qimage.hh
delete mode 100644 scribo/scribo/core/all.hh
delete mode 100644 scribo/scribo/core/component_info.hh
delete mode 100644 scribo/scribo/core/component_set.hh
delete mode 100644 scribo/scribo/core/concept/dmax_functor.hh
delete mode 100644 scribo/scribo/core/def/lbl_type.hh
delete mode 100644 scribo/scribo/core/erase_objects.hh
delete mode 100644 scribo/scribo/core/init_integral_image.hh
delete mode 100644 scribo/scribo/core/line_info.hh
delete mode 100644 scribo/scribo/core/line_set.hh
delete mode 100644 scribo/scribo/core/macros.hh
delete mode 100644 scribo/scribo/core/object_groups.hh
delete mode 100644 scribo/scribo/core/object_links.hh
delete mode 100644 scribo/scribo/core/tag/anchor.hh
delete mode 100644 scribo/scribo/core/tag/component.hh
delete mode 100644 scribo/scribo/core/tag/line.hh
delete mode 100644 scribo/scribo/debug/alignment_decision_image.hh
delete mode 100644 scribo/scribo/debug/bboxes_enlarged_image.hh
delete mode 100644 scribo/scribo/debug/char_space_image.hh
delete mode 100644 scribo/scribo/debug/decision_image.hh
delete mode 100644 scribo/scribo/debug/highlight_text_area.hh
delete mode 100644 scribo/scribo/debug/line_info_image.hh
delete mode 100644 scribo/scribo/debug/links_decision_image.hh
delete mode 100644 scribo/scribo/debug/looks_like_a_text_line_image.hh
delete mode 100644 scribo/scribo/debug/mean_and_base_lines_image.hh
delete mode 100644 scribo/scribo/debug/save_bboxes_image.hh
delete mode 100644 scribo/scribo/debug/save_comp_diff.hh
delete mode 100644 scribo/scribo/debug/save_linked_bboxes_image.hh
delete mode 100644 scribo/scribo/debug/several_links_decision_image.hh
delete mode 100644 scribo/scribo/debug/text_areas_image.hh
delete mode 100644 scribo/scribo/debug/usage.hh
delete mode 100644 scribo/scribo/draw/bounding_box_links.hh
delete mode 100644 scribo/scribo/draw/bounding_boxes.hh
delete mode 100644 scribo/scribo/draw/groups_bboxes.hh
delete mode 100644 scribo/scribo/estim/object_groups_v_thickness.hh
delete mode 100644 scribo/scribo/filter/all.hh
delete mode 100644 scribo/scribo/filter/common/objects_photo.hh
delete mode 100644 scribo/scribo/filter/internal/alignment_angle.hh
delete mode 100644 scribo/scribo/filter/internal/component_aligned.hh
delete mode 100644 scribo/scribo/filter/internal/compute.hh
delete mode 100644 scribo/scribo/filter/object_groups_size_ratio.hh
delete mode 100644 scribo/scribo/filter/object_groups_small.hh
delete mode 100644 scribo/scribo/filter/object_groups_v_thickness.hh
delete mode 100644 scribo/scribo/filter/object_groups_with_holes.hh
delete mode 100644 scribo/scribo/filter/object_links_bbox_h_ratio.hh
delete mode 100644 scribo/scribo/filter/object_links_bbox_overlap.hh
delete mode 100644 scribo/scribo/filter/object_links_bbox_ratio.hh
delete mode 100644 scribo/scribo/filter/object_links_bbox_w_ratio.hh
delete mode 100644 scribo/scribo/filter/object_links_bottom_aligned.hh
delete mode 100644 scribo/scribo/filter/object_links_center_aligned.hh
delete mode 100644 scribo/scribo/filter/object_links_left_aligned.hh
delete mode 100644 scribo/scribo/filter/object_links_non_aligned_simple.hh
delete mode 100644 scribo/scribo/filter/object_links_right_aligned.hh
delete mode 100644 scribo/scribo/filter/object_links_top_aligned.hh
delete mode 100644 scribo/scribo/filter/objects_h_thick.hh
delete mode 100644 scribo/scribo/filter/objects_h_thin.hh
delete mode 100644 scribo/scribo/filter/objects_large.hh
delete mode 100644 scribo/scribo/filter/objects_size_ratio.hh
delete mode 100644 scribo/scribo/filter/objects_small.hh
delete mode 100644 scribo/scribo/filter/objects_thick.hh
delete mode 100644 scribo/scribo/filter/objects_thin.hh
delete mode 100644 scribo/scribo/filter/objects_v_thick.hh
delete mode 100644 scribo/scribo/filter/objects_v_thin.hh
delete mode 100644 scribo/scribo/filter/objects_with_holes.hh
delete mode 100644 scribo/scribo/fun/v2b/label_to_bool.hh
delete mode 100644 scribo/scribo/fun/v2b/objects_large_filter.hh
delete mode 100644 scribo/scribo/fun/v2b/objects_small_filter.hh
delete mode 100644 scribo/scribo/io/text_boxes/save.hh
delete mode 100644 scribo/scribo/io/xml/save.hh
delete mode 100644 scribo/scribo/make/all.hh
delete mode 100644 scribo/scribo/postprocessing/all.hh
delete mode 100644 scribo/scribo/postprocessing/fill_object_holes.hh
delete mode 100644 scribo/scribo/preprocessing/all.hh
delete mode 100644 scribo/scribo/preprocessing/crop.hh
delete mode 100644 scribo/scribo/preprocessing/crop_without_localization.hh
delete mode 100644 scribo/scribo/preprocessing/denoise.hh
delete mode 100644 scribo/scribo/preprocessing/denoise_bg.hh
delete mode 100644 scribo/scribo/preprocessing/denoise_fg.hh
delete mode 100644 scribo/scribo/preprocessing/deskew.hh
delete mode 100644 scribo/scribo/preprocessing/deskew_crop.hh
delete mode 100644 scribo/scribo/preprocessing/homogeneous_contrast.hh
delete mode 100644 scribo/scribo/preprocessing/rotate_90.hh
delete mode 100644 scribo/scribo/preprocessing/split_bg_fg.hh
delete mode 100644 scribo/scribo/primitive/extract/all.hh
delete mode 100644 scribo/scribo/primitive/extract/components.hh
delete mode 100644 scribo/scribo/primitive/extract/horizontal_separators.hh
delete mode 100644 scribo/scribo/primitive/extract/lines_discontinued.hh
delete mode 100644 scribo/scribo/primitive/extract/lines_h_discontinued.hh
delete mode 100644 scribo/scribo/primitive/extract/lines_h_pattern.hh
delete mode 100644 scribo/scribo/primitive/extract/lines_h_single.hh
delete mode 100644 scribo/scribo/primitive/extract/lines_h_thick.hh
delete mode 100644 scribo/scribo/primitive/extract/lines_h_thick_and_single.hh
delete mode 100644 scribo/scribo/primitive/extract/lines_pattern.hh
delete mode 100644 scribo/scribo/primitive/extract/lines_thick.hh
delete mode 100644 scribo/scribo/primitive/extract/lines_v_discontinued.hh
delete mode 100644 scribo/scribo/primitive/extract/lines_v_pattern.hh
delete mode 100644 scribo/scribo/primitive/extract/lines_v_single.hh
delete mode 100644 scribo/scribo/primitive/extract/lines_v_thick.hh
delete mode 100644 scribo/scribo/primitive/extract/lines_v_thick_and_single.hh
delete mode 100644 scribo/scribo/primitive/extract/separators.hh
delete mode 100644 scribo/scribo/primitive/extract/vertical_separators.hh
delete mode 100644 scribo/scribo/primitive/group/all.hh
delete mode 100644 scribo/scribo/primitive/group/apply.hh
delete mode 100644 scribo/scribo/primitive/group/from_double_link.hh
delete mode 100644 scribo/scribo/primitive/group/from_graph.hh
delete mode 100644 scribo/scribo/primitive/group/from_single_link.hh
delete mode 100644 scribo/scribo/primitive/internal/all.hh
delete mode 100644 scribo/scribo/primitive/internal/find_graph_link.hh
delete mode 100644 scribo/scribo/primitive/internal/find_root.hh
delete mode 100644 scribo/scribo/primitive/internal/is_link_valid.hh
delete mode 100644 scribo/scribo/primitive/internal/rd.hh
delete mode 100644 scribo/scribo/primitive/link/all.hh
delete mode 100644 scribo/scribo/primitive/link/compute.hh
delete mode 100644 scribo/scribo/primitive/link/compute_several.hh
delete mode 100644 scribo/scribo/primitive/link/internal/compute_anchor.hh
delete mode 100644 scribo/scribo/primitive/link/internal/dmax_default.hh
delete mode 100644 scribo/scribo/primitive/link/internal/dmax_functor_base.hh
delete mode 100644 scribo/scribo/primitive/link/internal/dmax_width_and_height.hh
delete mode 100644 scribo/scribo/primitive/link/internal/dmax_width_only.hh
delete mode 100644 scribo/scribo/primitive/link/internal/find_link.hh
delete mode 100644 scribo/scribo/primitive/link/internal/find_several_links.hh
delete mode 100644 scribo/scribo/primitive/link/internal/link_functor_base.hh
delete mode 100644 scribo/scribo/primitive/link/internal/link_several_dmax_base.hh
delete mode 100644 scribo/scribo/primitive/link/internal/link_single_dmax_base.hh
delete mode 100644 scribo/scribo/primitive/link/internal/link_single_dmax_ratio_base.hh
delete mode 100644 scribo/scribo/primitive/link/merge_double_link.hh
delete mode 100644 scribo/scribo/primitive/link/with_graph.hh
delete mode 100644 scribo/scribo/primitive/link/with_rag.hh
delete mode 100644 scribo/scribo/primitive/link/with_several_graphes.hh
delete mode 100644 scribo/scribo/primitive/link/with_several_left_links.hh
delete mode 100644 scribo/scribo/primitive/link/with_several_right_closest_links.hh
delete mode 100644 scribo/scribo/primitive/link/with_several_right_links.hh
delete mode 100644 scribo/scribo/primitive/link/with_several_right_links_overlap.hh
delete mode 100644 scribo/scribo/primitive/link/with_single_down_link.hh
delete mode 100644 scribo/scribo/primitive/link/with_single_left_link.hh
delete mode 100644 scribo/scribo/primitive/link/with_single_left_link_dmax_ratio.hh
delete mode 100644 scribo/scribo/primitive/link/with_single_right_link.hh
delete mode 100644 scribo/scribo/primitive/link/with_single_right_link_bottom.hh
delete mode 100644 scribo/scribo/primitive/link/with_single_right_link_dmax_ratio.hh
delete mode 100644 scribo/scribo/primitive/link/with_single_right_link_top.hh
delete mode 100644 scribo/scribo/primitive/link/with_single_up_link.hh
delete mode 100644 scribo/scribo/primitive/regroup/from_single_left_link.hh
delete mode 100644 scribo/scribo/primitive/regroup/from_single_left_link_wrt_h_ratio.hh
delete mode 100644 scribo/scribo/primitive/remove/separators.hh
delete mode 100644 scribo/scribo/subsampling/bilinear.hh
delete mode 100644 scribo/scribo/subsampling/integral.hh
delete mode 100644 scribo/scribo/subsampling/integral_single_image.hh
delete mode 100644 scribo/scribo/table/align_lines_horizontaly.hh
delete mode 100644 scribo/scribo/table/erase.hh
delete mode 100644 scribo/scribo/table/extract.hh
delete mode 100644 scribo/scribo/table/internal/align_lines.hh
delete mode 100644 scribo/scribo/table/internal/connect_lines.hh
delete mode 100644 scribo/scribo/table/internal/repair_lines.hh
delete mode 100644 scribo/scribo/table/rebuild.hh
delete mode 100644 scribo/scribo/text/clean.hh
delete mode 100644 scribo/scribo/text/clean_inplace.hh
delete mode 100644 scribo/scribo/text/extract_lines.hh
delete mode 100644 scribo/scribo/text/look_like_text_lines.hh
delete mode 100644 scribo/scribo/text/merging.hh
delete mode 100644 scribo/scribo/text/recognition.hh
delete mode 100644 scribo/scribo/toolchain/nepomuk/text_extraction.hh
delete mode 100644 scribo/scribo/toolchain/text_in_doc.hh
delete mode 100644 scribo/scribo/upsampling/bs2x.hh
delete mode 100644 scribo/scribo/upsampling/eagle.hh
delete mode 100644 scribo/src/README
delete mode 100644 scribo/src/afp/components.hh
delete mode 100644 scribo/src/afp/link.hh
delete mode 100644 scribo/src/afp/regroup.hh
delete mode 100644 scribo/src/binarization/fg_sauvola_ms.cc
delete mode 100644 scribo/src/binarization/pgm_global_threshold_auto.cc
delete mode 100644 scribo/src/binarization/pgm_sauvola.cc
delete mode 100644 scribo/src/binarization/pgm_sauvola_ms.cc
delete mode 100644 scribo/src/binarization/ppm_fg_sauvola_ms.cc
delete mode 100644 scribo/src/binarization/ppm_sauvola.cc
delete mode 100644 scribo/src/binarization/ppm_sauvola_ms.cc
delete mode 100644 scribo/src/binarization/ppm_sauvola_ms_split.cc
delete mode 100644 scribo/src/binarization/sauvola_debug.cc
delete mode 100644 scribo/src/binarization/sauvola_ms_debug.cc
delete mode 100644 scribo/src/binarization/sauvola_ms_split.cc
create mode 100644 scribo/src/binarization/sauvola_pgm.cc
create mode 100644 scribo/src/binarization/simple.cc
delete mode 100644 scribo/src/contest/Makefile.am
delete mode 100644 scribo/src/contest/hdibco-2010/Makefile.am
delete mode 100644 scribo/src/contest/hdibco-2010/sauvola_ms_hdibco.cc
delete mode 100644 scribo/src/debug/highlight_text_area.cc
delete mode 100644 scribo/src/debug/show_info_median_inter_characters.cc
delete mode 100644 scribo/src/debug/show_info_x_height.cc
create mode 100644 scribo/src/debug/show_left_right_links_validation.cc
delete mode 100644 scribo/src/debug/show_links_left_right_links_validation.cc
delete mode 100644 scribo/src/debug/show_links_single_down.cc
delete mode 100644 scribo/src/debug/show_links_single_down_left_aligned.cc
delete mode 100644 scribo/src/debug/show_links_single_down_right_aligned.cc
delete mode 100644 scribo/src/debug/show_links_single_up.cc
delete mode 100644 scribo/src/debug/show_links_single_up_left_aligned.cc
delete mode 100644 scribo/src/debug/show_links_single_up_right_aligned.cc
delete mode 100644 scribo/src/filter/objects_with_holes.cc
delete mode 100644 scribo/src/filter/objects_with_holes_pgm.cc
create mode 100644 scribo/src/multi_scale/Makefile.am
create mode 100644 scribo/src/multi_scale/find_lines.cc
delete mode 100644 scribo/src/pbm_text_in_doc.cc
delete mode 100644 scribo/src/postprocessing/Makefile.am
delete mode 100644 scribo/src/postprocessing/fill_object_holes.cc
delete mode 100644 scribo/src/preprocessing/denoise_bg.cc
delete mode 100644 scribo/src/preprocessing/denoise_fg.cc
delete mode 100644 scribo/src/preprocessing/homogeneous_contrast.cc
delete mode 100644 scribo/src/preprocessing/rotate.cc
delete mode 100644 scribo/src/preprocessing/rotate_90.cc
delete mode 100644 scribo/src/preprocessing/subsample.cc
delete mode 100644 scribo/src/preprocessing/to_pgm.cc
delete mode 100644 scribo/src/text/pbm_lines_recognition.cc
delete mode 100644 scribo/src/text/pbm_recognition.cc
create mode 100644 scribo/src/text/recognition.cc
create mode 100644 scribo/src/text_in_doc.cc
create mode 100644 scribo/src/text_in_doc_ppm.cc
delete mode 100644 scribo/src/text_in_doc_preprocess.cc
create mode 100644 scribo/src/text_in_photo.cc
create mode 100644 scribo/src/text_in_photo_invert.cc
create mode 100644 scribo/src/text_in_photo_ppm.cc
delete mode 100644 scribo/src/text_in_picture.cc
delete mode 100644 scribo/src/text_recognition_in_picture.cc
create mode 100644 scribo/table/align_lines_horizontaly.hh
rename scribo/{scribo => }/table/align_lines_verticaly.hh (100%)
rename scribo/{scribo => }/table/all.hh (100%)
rename scribo/{scribo => }/table/connect_horizontal_lines.hh (100%)
rename scribo/{scribo => }/table/connect_vertical_lines.hh (100%)
create mode 100644 scribo/table/erase.hh
create mode 100644 scribo/table/extract.hh
create mode 100644 scribo/table/internal/align_lines.hh
rename scribo/{scribo => }/table/internal/all.hh (100%)
create mode 100644 scribo/table/internal/connect_lines.hh
create mode 100644 scribo/table/internal/repair_lines.hh
create mode 100644 scribo/table/rebuild.hh
rename scribo/{scribo => }/table/repair_horizontal_lines.hh (100%)
rename scribo/{scribo => }/table/repair_vertical_lines.hh (100%)
delete mode 100644 scribo/tests/binarization/Makefile.am
delete mode 100644 scribo/tests/binarization/global_threshold.cc
delete mode 100644 scribo/tests/binarization/local_threshold.cc
delete mode 100644 scribo/tests/core/Makefile.am
delete mode 100644 scribo/tests/filter/objects_with_holes.cc
delete mode 100644 scribo/tests/img/text_to_group.pgm
delete mode 100644 scribo/tests/img/wildly.pbm
delete mode 100644 scribo/tests/preprocessing/crop.cc
delete mode 100644 scribo/tests/preprocessing/crop_without_localization.cc
delete mode 100644 scribo/tests/preprocessing/deskew.cc
delete mode 100644 scribo/tests/preprocessing/rotate_90.cc
create mode 100644 scribo/tests/preprocessing/unskew.cc
delete mode 100644 scribo/tests/toolchain/Makefile.am
delete mode 100644 scribo/tests/toolchain/nepomuk/Makefile.am
delete mode 100644 scribo/tests/toolchain/nepomuk/text_extraction.cc
create mode 100755 scribo/tests/unit_test/build_unit_test.sh
delete mode 100644 scribo/tests/unit_test/cond_tests_qt
delete mode 100644 scribo/tests/unit_test/cond_tests_qt_tesseract_tiff
delete mode 100644 scribo/tests/unit_test/cond_tests_tesseract_tiff
rename scribo/{scribo => }/text/all.hh (100%)
create mode 100644 scribo/text/clean.hh
create mode 100644 scribo/text/extract_lines.hh
create mode 100644 scribo/text/recognition.hh
create mode 100644 scribo/util/all.hh
create mode 100644 scribo/util/text.hh
hooks/post-receive
--
Olena, a generic and efficient image processing platform
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 next has been updated
via 2520689648f68e6cbd3eb47c375102053af53019 (commit)
via 53a57b1d3275c5b9fb41db4b706342d6a7df992d (commit)
via cd5ea6ecd0a75ad2dbabd704490682aeceac68bd (commit)
via 2925b324b1b9c0427600a0160cdc214a03d5e8ae (commit)
via 04569a2bb109e39ae8d09530aaa526ad9ae2df49 (commit)
via ebad60a1e78715afe0359a2837c5de517fa7a42b (commit)
via 5bd441f8f01071c7c228837ceb8d9e401bc8f974 (commit)
via d6e4a923e32eb749a66490fba62885a69b2fb4dd (commit)
via a4a49108929edc4cd8c2d108da7ca821f6684b45 (commit)
via ed4e74a2f51a69d580a46b155c9d319d7e7f603c (commit)
via 63c77cdaa94cdbfd1ee3591675f729b74cc0371e (commit)
via 621ebe718756448951c4362aa8dc5be8b84025da (commit)
via c3d187edce3a706763c8e2bed355517e22037cf0 (commit)
via a903e8dadd0bc8f76a36c846a6167903aac6c963 (commit)
via 696503dfbe53631c3d16db408d7137a0d5b9c536 (commit)
via b265090ab82ff960a5cd770b863eebb8eeee71be (commit)
via c0c3a98d00d261f0b32c16083030be5dc05e79ff (commit)
via bd5519ba780434acb1a52552f55c5c91806d5931 (commit)
via 4d1677cf6f3b63d78da59159550988f17e61b93a (commit)
via 951bfdd9cb60516e53abc0c961c046851174d37d (commit)
via ca408292a71afa85aa76b568642f91729ebaae05 (commit)
via 00d8fa3b631df334782cc755a0a1bbc3af1e8d35 (commit)
via 6ca68abdb08224a001fbdd838a6bbffb58b902ba (commit)
via a9958fa777ee5686c5a923311aab1caa793ab89a (commit)
via be773a94ff966b4008cb3ce086bdaa3a679cf8a5 (commit)
via 013ef3d7c8f41542dc327c3f86d3741476c61aa5 (commit)
via 6793cca44120828368141b44d52d589d47c72f72 (commit)
via f7bc7e130d7cd61342e2a1bd50433caf8dc251e2 (commit)
via 3c2ce9bb05ba3502ded2bab10d64d19d10607874 (commit)
via d34c8dd49b1cafb412ed6acbc9a7df856e744ada (commit)
via d5c383adedab294cc3158789aae82a358ed9f8b3 (commit)
via 59987833613195d29de390caf60ea67a6d05c63c (commit)
via 6bf37e8533f6fe5e1ccb3db532ac2c75624a3973 (commit)
via 0545aad9399df4de95f731d4ea7ff019e996efb0 (commit)
via 324908fe7cfefc7e54ebab5419c195ba111adecc (commit)
via 5ee999b4a272ce703a8441e19d21914ee24a325c (commit)
via af62462e491439835ff02d83dd051209402b9e15 (commit)
via 8fed6fb92cee676f1b08171261d1c3c3998affca (commit)
via cb1501f56a94071aa6087845f47acbbb4e359487 (commit)
via 4aec8b7df9701854f4a66a5759cba50d417e2477 (commit)
via 6626ff4c9b970161a3afb4771f6b5d5d17cbc054 (commit)
via 5a13b71e549e3e14f56c654c2cf8060668ee651d (commit)
via 8bd912698276dec80d783a2a0d1c45934b7197d6 (commit)
via c05d4df52ff6ff73eab3e75343e39a4bd59c25b6 (commit)
via a0961e1c87e3d8b33fc3f956f4e5eabf1301e3f4 (commit)
via 087715863927fde36a5c856fa87ba071c978a824 (commit)
via 8283ce59a3fbee4679d7d5e6909ac69da6dc9565 (commit)
via 8559cd77490d273ee43ab417b4b666aeb12a3f4b (commit)
via 6b43c06339028b02542e0214c12a976d10f8b8d7 (commit)
via 52112930338d0852964eba2a09f7984c04d3b29e (commit)
via c3c62f2274a751f3cc0846f81d8f54c8c50192fb (commit)
via 26c8584dbd90fb2668efe2cfe260eefc65201055 (commit)
via 332c9acf642b9ab88ed466b1ad0e0500fc2c885c (commit)
via 5ba287436f0ad7ae908f61e666e01ea6fbb546a0 (commit)
via 6270c8c945def50f6fb12b95511567e27b04db24 (commit)
via 290ccbee439ac1cfc9dbd0185b60260d10dbd206 (commit)
via 9fffc8073f5ea86ae99a3b5ddd23d53d10cdb429 (commit)
via aa19b0aaad96157c6cbc41fd92ceb07b8f370063 (commit)
via 984412efeef78be23eb0f83ce6eb50bb36031a6e (commit)
via d4ca44ab91728099a70f29b73f5eb3f83a487736 (commit)
via 2ae99ffe384a9bdf63e59305fe1a77063a7a1c22 (commit)
via e31b70169c431b1196afb6ae2b9eda6b94ec4e26 (commit)
via 9e66b0bc8e1df4154fc7a4c6834a8db7b6c3af46 (commit)
via ee180d60723b0718fa53cd7d936b8260acb93af2 (commit)
via 4d14a475db1082c1096ed71973e2daa2793e2cf1 (commit)
via fd16f7ee48f964437406d385b54ebb912e92ea25 (commit)
via 092bb0461eb91af6bca23e29bda4bdbac316d3ec (commit)
via 460f059870e591b8da8363f9905a8331352c81ff (commit)
via 1a16089f970043d54c716705e22f87cde43ce263 (commit)
via 7b2111843120f318b696b1b79bd2e900a7eeac4b (commit)
via 58e82cd9f7d25b6aafb2085c4ace86d1819b5e1f (commit)
via 218a6951a1b0d51f35faf440a0938ffc57e6fc69 (commit)
via 2290b5c217d1aff34973686b4ca20ac907b088b1 (commit)
via 3586ef11c3c314352893a9239f16679657d12d5f (commit)
via 681f2578cf36e5d15de8744b5a7dd92bfdc4fc4c (commit)
via 1307e9db8d14cfc6dff52604e561b71388e44f58 (commit)
via 71f26fd56cb0b4ce501d5b268110a7cba2580c26 (commit)
via ad5614ea5041d342b336310eb72fc632e85d92fe (commit)
via 125df33ea1757903b9ae2078ff37cda45ab1fc0c (commit)
via b9a5b97f58655d268aea57a5b3d625f8fedae6ee (commit)
via d169338813844bac2932789235e76482922b0d5e (commit)
via 241c2467d08dc42b87d25a93f2606c1d46d835d2 (commit)
via f5c0ae5a9385033e13a8f7d639f26f7c3114854e (commit)
via 7e1a2f88f9f363580adf64244448a04b2fed8588 (commit)
via 31925d2882a55285b496a5efb040875eeceee85e (commit)
via b15c1b6b4c6eb9cb7dda58a28bb93695feb7c463 (commit)
via 288d44d51e20f1d602c0b6b2f2d3cadb5cc4ba1d (commit)
via 4d87541b98ba8e496d125c80c83ad20fbfbb8fb3 (commit)
via b57d26e949bf2f7993b86a1df34d12c0e27f581d (commit)
via 17304c0d1e2e0f089a7fba4a319c85c401b78a71 (commit)
via 5179913a9ef7ad087e49b617e185ea77bef3bd4e (commit)
via 7c558b5f8ddad2675f221439e6cc05c131c41306 (commit)
via fe92959d0b991dc4af32354a5aaecebe4a2496e7 (commit)
via 5fa09b417ceab47852ce77832d504474b37911c0 (commit)
via b4195d21051065f1793d03ac2fc8473979eb3d85 (commit)
via f3987ed3d3aa9063ae36e632d59f56c0fed6ef71 (commit)
via 7570d066d5b6867ec467c65577b856552eb7959f (commit)
via b98887a266675d0408c9a5e206e01e8c05141350 (commit)
via 07b0d845a4695de07897a0550f3cf88e90bf71ba (commit)
via e9bf3efcc6957e3e0d0b37228e0060cee5315c66 (commit)
via 26fd960b08963a21dcc2b55b6618bc0fb03f1721 (commit)
via f8c67ca6812d33f6e758d02b52306be5337357ec (commit)
via 34bcc24494086059cddc9563bfc74d7d41c92062 (commit)
via 00152b7b89d4690e7e1fe0ac252096d834360917 (commit)
via 53630924d3586513a4979ad9ba76ec975a7d4d6f (commit)
via 65586d1b604614ab2072306198b2418b222901e6 (commit)
via 8adc20194128cd40b88e9d531541067d9c07f90a (commit)
via e6a836cee6c68ad1fb50e38754ac5c0a0a7c6236 (commit)
via 993461bf6f0e721d96fd483df3c461a7f37c7ea5 (commit)
via 60fefaa2e97f9a9dac00d2404fa4ce730cd171b0 (commit)
via 4b0e1fb92f24d116e8df227786eae369f1b8f615 (commit)
via 2f0e11309514214cd1be0c8c565183bd001cc1b6 (commit)
via 224e84a64d1844494f71173a154fbec87927da4b (commit)
via 81d685024b4321859625cf173903e176cbf6ecbe (commit)
via 543d805e7b099357ba92802493be73e39a71687c (commit)
via 2f5f4a438accd7aa52c3ac8d3550b70cef778c0e (commit)
via 6b6d1440369b9cb9fc31c4453723e179d91ba842 (commit)
via 98eedea5d6dcf8b4bfc9dfa309b57ce5dcbfd192 (commit)
via 55a5c879876aa4d7e2b2326f426a3e048b386044 (commit)
via 15c7c9c6fc5f10005d6965cd819f9d13dac7a8f7 (commit)
via 79001a91319044fdabf9504d8a4b745824e3e91b (commit)
via ff4fcc5ac88a15114fa027286af119fb49ae5a08 (commit)
via 033b24976414aed9461ea4cb7e60e29fe95ff5b3 (commit)
via ef48505d020f4fd2ba1e89482bf3a2e3a69d2b7c (commit)
via be8a9483d08855d6475aafbcf6d7b99b4c2e7546 (commit)
via 76ed491e0693668ef068eef740ea697eb17e9017 (commit)
via 5d3b9dacc3b50f37a4fb09dd53d45c53dcdd59c4 (commit)
via 5824c18c8dc04d028fac6a873aeaed17ae00ed07 (commit)
via d7850dbc2fb6879dceacc355cf5f37f460e09313 (commit)
via f8b5117d9ebdbb13855bdb4d4dcc1581e7bc82b1 (commit)
via 9f19274a760e12dc9b2cbe7bdf5bfc9c466af5b8 (commit)
via 5ca84d197b8742460dfda8b9435a02a79603ab0a (commit)
via d12e77e06b9cfdb409a36b3f4fb65b09327acfdb (commit)
via b3416b2f45e4e3ab0e853c2e73f1c670891e5d8d (commit)
via 3591f2a690fbd20c6caaf51283ba96505e87c0c0 (commit)
via 76dd7c37346ba9280d586e31b0ff558af2a44d90 (commit)
via 91b205927506a09d3c921c4980da3b114617775d (commit)
via 966f8d64839b0d13bdc608ef7f4c4247e984391a (commit)
via f89278cf5b12300abe45d7bf8eb464c7bdb7fba7 (commit)
via 3ca05868e71d080d12c18329019b2addbf83bec9 (commit)
via f819edfc8980df439b1920cadc3893a2f8b4eee6 (commit)
via ef51cf7f9dc8e6c3f1c064f881cc3b6b429e1c76 (commit)
via a2d98b12b61ffbd0a4e7addb440888d86d5be8d5 (commit)
via f5d28e908b41e8003fd401989b74b8c995a93192 (commit)
via ab515db441e4825dcfb9601c6ac024c614ce1e45 (commit)
via 6fb53567c35855b2ba1b61b1f9da6aba108a0471 (commit)
via c7c49e9d4611785b6c4086e7098d684fefd690b8 (commit)
via 0c7c2800580a76a371845addb361bd20498c396d (commit)
via 0832aee891ff1c8f78abf0b6f3ce22cda88a258a (commit)
via 6d82d878bff6d80604a7554a348ef8c1d06464ad (commit)
via 999e60c6f834a03d4ad636052aca1a785501f673 (commit)
via d3888a39df55beccc974bf4f556eb50e3b7057cb (commit)
via 06903f8517a4560f544ccb343f011548011fa95f (commit)
via ed6a220ec78c88954f73cee7258595b1a697a242 (commit)
via 7fd561dd32cd4d3a32aa974642da054078513355 (commit)
via 5c627b019540ecc6dbf4cb21630354289adf6f6b (commit)
via 85cda080414cc6e05d8ee49246a2171eb7f4fbae (commit)
via e8373a069ad3b882f9a927c8d318643645069c1e (commit)
via 4bf89fb72cfe41e98d7df23be2cc79bb37173c39 (commit)
via a6a8d2a44d746824876f24c53af69f83036ddaf3 (commit)
via 810f0413346986f6e7fc86f513ee1df28f142418 (commit)
via 33ffff60e3846bf4499c3eafaa2dfd37791fb4e2 (commit)
via 31216d34c0c51609cbe6921cd0d285701d583e3b (commit)
via db55e631a5d4be26186cf58f23d63c9ae8a1a88e (commit)
via 080134d6115e902c66ee0eb866008d7ad8e161f8 (commit)
via 40d518005c478e2b5640a04019fdbf84c6858d27 (commit)
via cbbdf4e015a418723730e0173ae88377ab365f1e (commit)
via ff15d075512aadb2cfa4e99d36d3fa080809822f (commit)
via 12ddb9702902e9c12be67d23fad1053e320f151e (commit)
via b8aaebae9a034fa3b39de284bd2677801bc15471 (commit)
via cbbbffd5c0c474d94fdab9e79c90e0ea92ec185c (commit)
via 99e2b8fc744f5ab029cee5c4fa8eb465750101af (commit)
via 41c82626a63b343f4d54e620c3055c1db6bf91de (commit)
via 8c069f07986676a26ea14a1daa4e623d75302cbc (commit)
via ca67a57fcb8149672ea524e5d20cab138c9147d6 (commit)
via 21af64ad3a6645b7c1e7afa3347ba545911affa1 (commit)
via 24e4f689ffc6598a646431b8344fe3c7b6c73da5 (commit)
via 04aef4bf80daa8b02650ad3b2479dfea0bfa666c (commit)
via 3b8335a122ff4d071759346847666d62c702f2b4 (commit)
via ff1e5aae555fb905fa33369c85c94b0b0108feaf (commit)
via c7cb9f3cfb759b353cb92e62c9154c0607b9faa8 (commit)
via 28453cfc46940eb2fa4e6bf993d0378a97b396a3 (commit)
via f256a61a4a6aaabab1806c9f644bfd0005c3e857 (commit)
via 464d58f97a427e842a704e17a6c50ca6a88e11f5 (commit)
via 9c5c48319714b54f41adc49d4b5417294e8b6079 (commit)
via 9d7a1cca8578a712714a94258d081b1a4e3d5d95 (commit)
via a184c8106407ea7b3ce30dc14b1d548ac93813f2 (commit)
via b826d4152097bfcb1138f05f647862c69f739769 (commit)
via 32401e08eb7edab00e58069690e7371af8346fdd (commit)
via 622c2395fcf4ecd00991ba4dfda4eddc49604ba1 (commit)
via 752d8cae10e26fae6500a073893aa6aad2c85403 (commit)
via d02047f7f328aa892cb80f57374f3c6ba6a3fdc1 (commit)
via 8d47be1577e975889b17016f2fda968d79780b57 (commit)
via 548b72e33fc2b5352a5ca511693a5ae43fd94cba (commit)
via 11701a0cb30bfb85d57a07a94e88485ebd7c0c4a (commit)
via 53a98117e4a7985a38bf6b708d99069ba17353aa (commit)
via b54300a5ba958e308a8ff9edb32f685247999e2a (commit)
via 6143a5ecb90ebfec07d7f7e4605e086f7bc61f83 (commit)
via 2c6947d729838521895b4ef091210d1f82ad66fa (commit)
via 4dad6c9aa0df1dddd07a4fa53cecc05b7287ff4a (commit)
via d10f1a65daf8af9a90af3c937226f5c4d5b4750a (commit)
via b1a4d275224ac708a9b05dae7915a27109886cc9 (commit)
via 9f724b07283be1b79455a1b1a80c87205db7415d (commit)
via 6adbc43e3b823f9eeb385911e3a47e5ec8c963e9 (commit)
via 4a19598794bc2ebec9d40f2bdd02afe17e9c4f85 (commit)
via c5e55142e34779d78be4944489e03949fa03551f (commit)
via 1c596f64a2ca06f073d0a6d3e37fb334bc5f64c9 (commit)
via 70ca845540984efeee0654cf989389d19dc9166b (commit)
via 1f9aa31e2c16defebcda3f4a5689caf779756c2a (commit)
via 8e0ab28cbc07882bc55a6e633928a7c46be9d018 (commit)
via 643c15954419858896b0cd759737e7620c541fe8 (commit)
via 899f6280731edf03ae30f23dcdd4745ecbe9a1f2 (commit)
via 98cab34716892c5b65385589ab6c3edbd46f9710 (commit)
via 482527bb90e7b716941dc1a9061a217c7ae8891d (commit)
via 902b12ce4df4c7292fa491510241c46ca99e9e2b (commit)
via 79ee98c0d746a92d576c1939f22c43e567807cd4 (commit)
via 669c38a57b112f921a08ba1a3f0f1054902068f9 (commit)
via eba3666e5fe1bff4705fe9c98532f51f8173f81f (commit)
via 0193764da7088997d86ce051decfa76a98389c0f (commit)
via 0e13f8102f13a50b59aade263e9fe5686f2dc70c (commit)
via aa0bdee5768b8d6c4da2bfb0829eb083a2cc1d3c (commit)
via a921ddd44ba3c5f2d17dcfb91d895fbef7604c6c (commit)
via 6ed67df01362829d95ef961cfc4240851088c71d (commit)
via 89cccc3f9d23c012b6d68223369da5b7b2166fd0 (commit)
via bbe58a4163e25ffd7677bdddac47196f4681958a (commit)
via de162c799ceaff805639868514eaf8889c9f8e49 (commit)
via 0214776e7a453b8e10ddde889f39b09efa1c2e3a (commit)
via c59d0eb348d67f1accf519ad9887d3a809d0b5ac (commit)
via 041d0dc64632eb9aa876f73997fcf9c6ab830736 (commit)
via 961ba2240c9a2e7fbcf06d7681790e2cecef6d32 (commit)
via 9799d16b510acb6f010157cf36953d87b483497d (commit)
via dfd1f9600a8484aabcfdc8bfd09b60bcf8d7194d (commit)
via e1a1cc378e801f88e043bc1f5434c472359037d1 (commit)
via 70d61a2d6eb3602df210041397a5bc2b5226aa66 (commit)
via ef1027240a5c435f8f80d5aebb4cb78667522cd9 (commit)
via b05629704f959c2e4d122e22b7636f08c1ae018a (commit)
via 4046dfe6f7bfe217aac73a60bd98481632f28a90 (commit)
via cae5c85609c8b8d650c8ec13e5fc193b6cb0cc2a (commit)
via de558e1fd81f8a8677545c7052fdc88d8a3d056a (commit)
via ec5a4728ec5fb5bc3c7c5bc572d4a2103de6bc7b (commit)
via 2d5c9e765d41ad16003b43e2b03f716a128f43ca (commit)
via b8b448283cb2db5e1f10d7d9cc635919f0803ed6 (commit)
via 1e6a267bc08570326ac13fe4fb4b09dd04090f04 (commit)
via 3a3cd53c0bc6b67b4a2f2ab91bf53f2d16f04850 (commit)
via 94a1f48d731bb997e4408e88033d4b1cfceceee9 (commit)
via cb3ec8ce138e75790da1bee29bf2da1723bf907e (commit)
via 2f9f294e56199ded1006c540e14eb9565bd4158d (commit)
via ced2be000f12493790fa6ec3118c13dfd53c3480 (commit)
via 7db5a17a002477d3dd6075298158c909918b0fce (commit)
via c803910e9b8fed818e2f6848ceded6b918260bc5 (commit)
via 7dc506b48a5d9739c8483ada6b7c725c840b5ec8 (commit)
via a0c8b8d5105ab098893a67e743c1a3f7c64783b0 (commit)
via 6dc7e4398c3cf9cc466ff9ccebc413f442c91408 (commit)
via 470ab8590c7a718eca3dc848a381440131b6701e (commit)
via 8b7c177b17b3e889b03a98c9e7f4812bbf5347d6 (commit)
via 2082dbe0ad1a8abb2bacba99a718f2d212b56fd1 (commit)
via a26809dfe97b70d65bb5706a57e57d04c9a26242 (commit)
via 978d82a0dbae555e2c757cc7202926307d21eb48 (commit)
via 9455de217fb6aec957c2fd03e8ad8d98e7502a41 (commit)
via 03f61d76ea140544a2bd47489ca7ea55d2a07047 (commit)
via 92a937fa891f6391836688d3bccc386ee705a862 (commit)
via 10172dec0f518f646796bf1cbea1dfc0d84a58ac (commit)
via 3894a51d36339003e51481be924b4e9d237afac7 (commit)
via 4e5a8aeaf2226eced55b1b09731f05db646c601a (commit)
via b955ecf309a0402264c6c4c3187f39772805a492 (commit)
via b31f2f590205e34352b5726bd39bb5811a9aea83 (commit)
via 9fca659592f8c07e9ea252124542a32b19d508a7 (commit)
via 619f727a664642367fcc13d5923cd67565146d75 (commit)
via ca034dd5be1eb52e5ba698fdaf48441ef9232253 (commit)
via 7c60810a254871cd3f4b5e64b8ed9d32fbc22039 (commit)
via 07c83125fbb603e47560f2564c56a4e61f178733 (commit)
via 7d3cbec0a50867eda87180a8b3e36104570fab70 (commit)
via 3151875da98c528bd88a47d2baeeef749641e078 (commit)
via 74ae8cb3d0f20fa8e556637bbfb2ef65f94a2ff7 (commit)
via 7d4f627f694d972e1b03b9ca961980efaeed964d (commit)
via 906f2366e804d8c3e216b32d9d95e21962d64bdd (commit)
via f7773bdb0a5f4a2633db7c417320525307208ce1 (commit)
via 97aadbd7550bbc30b3233763a199879697ecea42 (commit)
via f70c8e0acc71d11e3e46e38e23b898da542ad2d9 (commit)
via 542fcf95dfe69de360defa3c5a50981519ca5473 (commit)
via 32e461a6b9798f95bc659262aa237af8bd468e22 (commit)
via 4bfd663cfb87ee5f7d905de4bb426dbbe83a8ec1 (commit)
via ce6a4248b4d98c34ba5ec5022ae68cc240553dd4 (commit)
via 706148bd7bd2a1138c2aee91f0e1463540deaa52 (commit)
via 78149d2acd630f6988e0cbca5682f91213540416 (commit)
via 2510005ce77741c054e7fc089e075fe280a773ed (commit)
via 304dee05f683045536596f3f79a8039e0ab385d0 (commit)
via 9d8c5490e9c010e6ce1694f9190b9b8f32d49580 (commit)
via 757792dbea67e77dfb75c7b3d703127ef4307669 (commit)
via 852fd7f7ea50c2ca524b190d8db1e19c24b00cb5 (commit)
via 749308a78ac92ce127e96a1ec8a61b073ea28dab (commit)
via 49762301f533222098453e17f547a468e2413b5e (commit)
via 7395d15706f398f6c44f4579f278ead57bd762bd (commit)
via 187511199544e904e81f91f7d3924760f4014c87 (commit)
via f08ca6b0e8ad20a5958fc357933ff3daece9f14c (commit)
via 68181d1dcd88a9662b326ed6c618f90371c38bb6 (commit)
via 89cf4eeee292defc65b665d1daa8e20629a3db36 (commit)
via a7dd8e818e7cfcc8125ef4afcd88de2ba9d1989c (commit)
via 0a2727d0e2de4059c2610c1fa55293c19e82dde6 (commit)
via 5c414c5db3cd4ff8d563e20d715faad6fce15dd8 (commit)
from eecd7d1ced5f4dfc8d46bccc2edc1dacddbe635e (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 -----------------------------------------------------------------
2520689 Merge branch 'exp/scribo-z' into next
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 117 +
Makefile.am | 4 +-
bootstrap | 11 +-
build-aux/autotroll.mk | 108 +
build-aux/build_unit_test.sh | 201 ++-
configure.ac | 286 +++-
m4/autotroll.m4 | 565 +++++
m4/boost.m4 | 1038 +++++++++
m4/oln-with-lib.m4 | 5 +-
m4/pkg.m4 | 155 ++
milena/ChangeLog | 802 +++++++-
milena/doc/figures/fill-subdomain-2.ppm | Bin 206 -> 206 bytes
milena/doc/figures/fill-subdomain-3.ppm | Bin 206 -> 206 bytes
milena/doc/figures/labeling-compute-2.ppm | Bin 206 -> 206 bytes
milena/doc/figures/tuto3_colorize-2.ppm | Bin 191 -> 191 bytes
.../figures/tuto4_genericity_and_algorithms-5.ppm | Bin 12406 -> 12406 bytes
milena/doc/tutorial.tex | 4 +
milena/headers.mk | 27 +-
milena/img/BUG_lean_ascii.pgm.gz | Bin 75726 -> 0 bytes
milena/img/picasso.ppm | Bin 0 -> 244671 bytes
milena/mln/accu/center.hh | 14 +-
milena/mln/accu/count_value.hh | 30 +-
milena/mln/accu/internal/base.hh | 4 +-
milena/mln/accu/label_used.hh | 5 +-
milena/mln/accu/math/sum.hh | 3 +-
milena/mln/accu/pair.hh | 26 +
milena/mln/accu/stat/variance.hh | 4 +-
milena/mln/accu/tuple.hh | 13 +-
milena/mln/border/thickness.hh | 4 +
milena/mln/canvas/labeling/blobs.hh | 22 +-
milena/mln/canvas/labeling/video.hh | 8 +-
milena/mln/convert/from_to.hxx | 45 +
milena/mln/convert/impl/from_float_to_value.hh | 10 +
milena/mln/convert/impl/from_unsigned_to_value.hh | 10 +
milena/mln/convert/to_qimage.hh | 300 +++
milena/mln/convert/to_qimage_nocopy.hh | 180 ++
milena/mln/core/alias/dpoint1d.hh | 4 +
milena/mln/core/alias/dpoint2d.hh | 4 +
milena/mln/core/alias/dpoint3d.hh | 4 +
milena/mln/core/alias/neighb3d.hh | 42 +
milena/mln/core/alias/window2d.hh | 3 +-
milena/mln/core/concept/function.hh | 43 +
milena/mln/core/concept/gpoint.hh | 2 +-
milena/mln/core/image/image1d.hh | 6 +-
milena/mln/core/image/image3d.hh | 9 +-
milena/mln/core/image/imorph/interpolated.hh | 13 +-
milena/mln/core/image/imorph/labeled_image.hh | 2 +
milena/mln/core/internal/box_impl.hh | 61 +-
milena/mln/core/internal/labeled_image_base.hh | 31 +-
milena/mln/core/point.hh | 164 ++-
milena/mln/core/routine/extend.hh | 57 +-
milena/mln/core/site_set/box.hh | 37 +-
milena/mln/data/fill_with_value.hh | 3 +-
milena/mln/data/paste_without_localization.hh | 311 +++-
milena/mln/data/split.hh | 99 +
milena/mln/debug/mosaic.hh | 141 ++
milena/mln/debug/slices_2d.hh | 15 +-
milena/mln/debug/z_order.hh | 159 ++
milena/mln/draw/all.hh | 1 +
milena/mln/draw/box.hh | 5 +-
milena/mln/draw/box_plain.hh | 92 +
milena/mln/draw/dashed_line.hh | 113 +
milena/mln/draw/line.hh | 1 +
milena/mln/fun/all.hh | 2 +
milena/mln/fun/internal/x2x_linear_impl.hh | 20 +-
milena/mln/fun/n2v/all.hh | 51 +
milena/mln/fun/n2v/white_gaussian.hh | 104 +
milena/mln/fun/v2v/all.hh | 1 +
milena/mln/fun/v2v/hsl_to_rgb.hh | 3 +
milena/mln/fun/v2v/qt_rgb_to_int_u.hh | 71 +
milena/mln/fun/v2v/rgb_to_int_u.hh | 69 +
milena/mln/fun/v2v/saturate.hh | 9 +-
milena/mln/fun/x2x/composed.hh | 18 +-
milena/mln/fun/x2x/rotation.hh | 5 +-
milena/mln/fun/x2x/translation.hh | 6 +-
milena/mln/geom/all.hh | 4 +-
milena/mln/geom/horizontal_symmetry.hh | 194 ++
milena/mln/geom/max_col.hh | 8 +-
milena/mln/geom/max_row.hh | 8 +-
milena/mln/geom/min_col.hh | 8 +-
milena/mln/geom/min_row.hh | 8 +-
milena/mln/geom/nslices.hh | 68 +
milena/mln/geom/nslis.hh | 68 -
milena/mln/geom/rotate.hh | 107 +-
milena/mln/geom/size3d.hh | 5 +-
milena/mln/geom/vertical_symmetry.hh | 196 ++
milena/mln/histo/compute.hh | 15 +-
milena/mln/histo/equalize.hh | 97 +
milena/mln/io/dicom/all.hh | 4 +-
milena/mln/io/dicom/get_header.hh | 114 +
milena/mln/io/dicom/load.hh | 17 +-
milena/mln/io/dump/all.hh | 1 +
milena/mln/io/dump/get_header.hh | 128 ++
milena/mln/io/dump/save.hh | 3 +
milena/mln/io/fld/load.hh | 13 +-
milena/mln/io/fld/max_components.hh | 32 +-
milena/mln/io/magick/load.hh | 4 +-
milena/mln/io/magick/save.hh | 7 +-
milena/mln/io/plot/save.hh | 28 +-
milena/mln/io/pnm/load.hh | 3 +-
milena/mln/io/raw/all.hh | 49 +
milena/mln/io/raw/get_header.hh | 136 ++
milena/mln/io/raw/load.hh | 226 ++
milena/mln/io/raw/save.hh | 177 ++
milena/mln/labeling/blobs.hh | 4 +-
milena/mln/labeling/blobs_and_compute.hh | 60 +-
milena/mln/labeling/colorize.hh | 75 +-
milena/mln/labeling/compute.hh | 415 ++++-
milena/mln/labeling/flat_zones.hh | 34 +-
milena/mln/labeling/pack.hh | 2 +-
milena/mln/labeling/relabel.hh | 23 +-
milena/mln/labeling/value.hh | 16 +-
milena/mln/labeling/value_and_compute.hh | 241 ++
milena/mln/linear/ch_convolve.hh | 9 +-
milena/mln/linear/gaussian.hh | 8 +-
milena/mln/linear/gaussian/impl.hh | 13 +-
milena/mln/literal/black.hh | 4 +
milena/mln/literal/colors.hh | 7 +-
milena/mln/literal/identity.hh | 4 +
milena/mln/literal/one.hh | 3 +
milena/mln/literal/origin.hh | 6 +-
milena/mln/literal/white.hh | 4 +
milena/mln/literal/zero.hh | 4 +
milena/mln/make/box3d.hh | 15 +-
milena/mln/make/image.hh | 7 +-
milena/mln/math/diff_abs.hh | 5 +-
milena/mln/registration/icp.hh | 5 +-
milena/mln/subsampling/antialiased.hh | 458 ++++
milena/mln/tag/init.hh | 4 +
milena/mln/topo/skeleton/crest.hh | 51 +-
milena/mln/trace/entering.hh | 3 +
milena/mln/trace/quiet.hh | 5 +-
milena/mln/transform/influence_zone_geodesic.hh | 13 +-
milena/mln/value/int_u.hh | 69 +-
milena/mln/value/internal/make_generic_name.hh | 67 +
milena/mln/value/label.hh | 22 +-
milena/mln/value/qt/rgb32.hh | 803 +++++++
milena/mln/value/rgb.hh | 67 +-
milena/mln/value/sign.hh | 10 +-
milena/mln/win/sline3d.hh | 76 +
milena/mln/world/binary_2d/enlarge.hh | 4 +-
milena/mln/world/inter_pixel/full2image.hh | 4 +-
milena/sandbox/ChangeLog | 601 +++++
milena/sandbox/bench/README_CFLAGS | 8 +
milena/sandbox/bench/extract_vertical_lines.cc | 49 +
.../bench/fast_components_and_attributes.cc | 402 ++++
milena/sandbox/bench/fast_rows.cc | 247 +++
milena/sandbox/bench/fast_tiles.cc | 140 ++
milena/sandbox/bench/fastest.cc | 351 +++
milena/sandbox/bin/labeling/colorize.cc | 24 +
milena/sandbox/bin/pgm_to_pbm.cc | 39 +
milena/sandbox/bin/ppm_negate.cc | 43 +
.../green/bench/transform/distance/Makefile.am | 150 ++
.../green/bench/transform/distance/distance.cc | 775 +++++++
.../sandbox/green/demo/annotating/bic/Makefile.am | 150 ++
milena/sandbox/green/demo/annotating/bic/bic.cc | 87 +
.../sandbox/green/demo/annotating/hsv/Makefile.am | 152 ++
milena/sandbox/green/demo/annotating/hsv/hsv.cc | 607 +++++
.../sandbox/green/demo/annotating/lep/Makefile.am | 150 ++
milena/sandbox/green/demo/annotating/lep/lep.cc | 92 +
.../green/demo/annotating/nb_color/Makefile.am | 150 ++
.../green/demo/annotating/nb_color/nb_color.cc | 101 +
.../green/demo/annotating/project/Makefile.am | 150 ++
.../green/demo/annotating/project/project.cc | 210 ++
.../green/demo/annotating/rgb_64/Makefile.am | 150 ++
.../sandbox/green/demo/annotating/rgb_64/rgb_64.cc | 47 +
.../green/demo/annotating/rgb_64_9/Makefile.am | 150 ++
.../green/demo/annotating/rgb_64_9/rgb_64_9.cc | 97 +
.../green/demo/annotating/stddev_color/Makefile.am | 150 ++
.../demo/annotating/stddev_color/stddev_color.cc | 124 ++
.../demo/annotating/stddev_color_16/Makefile.am | 150 ++
.../annotating/stddev_color_16/stddev_color_16.cc | 178 ++
.../histo2d => clustering/kmean_rgb}/Makefile.am | 0
.../green/demo/clustering/kmean_rgb/kmean_rgb.cc | 91 +
.../demo/labeling/regional_maxima/Makefile.am | 2 +
.../labeling/regional_maxima/regional_maxima.cc | 906 ++++++--
.../demo/labeling/regional_maxima/thresholds.txt | 42 +
milena/sandbox/green/doc/annotating/class.txt | 42 +
.../green/doc/annotating/syntheseMillet2008.txt | 283 +++
milena/sandbox/green/doc/annotating/testMillet2008 | 69 +
.../doc/regional_maxima/cmp_method/h0_input.pgm.gz | Bin 0 -> 18078 bytes
.../doc/regional_maxima/cmp_method/h2_mean.pgm.gz | Bin 0 -> 374 bytes
.../doc/regional_maxima/cmp_method/h2_merge.pgm.gz | Bin 0 -> 4491 bytes
.../doc/regional_maxima/cmp_method/h3_mean.pgm.gz | Bin 0 -> 391 bytes
.../doc/regional_maxima/cmp_method/h3_merge.pgm.gz | Bin 0 -> 10188 bytes
.../doc/regional_maxima/cmp_method/h4_mean.pgm.gz | Bin 0 -> 367 bytes
.../doc/regional_maxima/cmp_method/h4_merge.pgm.gz | Bin 0 -> 18078 bytes
.../doc/regional_maxima/cmp_method/h5_mean.pgm.gz | Bin 0 -> 372 bytes
.../doc/regional_maxima/cmp_method/h5_merge.pgm.gz | Bin 0 -> 12777 bytes
.../doc/regional_maxima/cmp_method/i2_mean.ppm.gz | Bin 0 -> 566650 bytes
.../doc/regional_maxima/cmp_method/i2_merge.ppm.gz | Bin 0 -> 1586150 bytes
.../doc/regional_maxima/cmp_method/i3_mean.ppm.gz | Bin 0 -> 573407 bytes
.../doc/regional_maxima/cmp_method/i3_merge.ppm.gz | Bin 0 -> 3050979 bytes
.../doc/regional_maxima/cmp_method/i4_mean.ppm.gz | Bin 0 -> 663621 bytes
.../doc/regional_maxima/cmp_method/i4_merge.ppm.gz | Bin 0 -> 3387044 bytes
.../doc/regional_maxima/cmp_method/i5_mean.ppm.gz | Bin 0 -> 653140 bytes
.../doc/regional_maxima/cmp_method/i5_merge.ppm.gz | Bin 0 -> 3217839 bytes
.../doc/regional_maxima/cmp_method/l2_input.pgm.gz | Bin 0 -> 423612 bytes
.../doc/regional_maxima/cmp_method/l3_input.pgm.gz | Bin 0 -> 420801 bytes
.../doc/regional_maxima/cmp_method/l4_input.pgm.gz | Bin 0 -> 486206 bytes
.../doc/regional_maxima/cmp_method/l5_input.pgm.gz | Bin 0 -> 479055 bytes
.../regional_maxima/cmp_method/reponse_theo.eml | 106 +
.../doc/regional_maxima/cmp_method/s2_histo.txt | 31 +
.../doc/regional_maxima/cmp_method/s3_histo.txt | 31 +
.../doc/regional_maxima/cmp_method/s4_histo.txt | 31 +
.../doc/regional_maxima/cmp_method/s5_histo.txt | 31 +
.../doc/regional_maxima/cmp_method/synthese.txt | 223 ++
.../doc/regional_maxima/cmp_quant/h0_input.pgm.gz | Bin 0 -> 18078 bytes
.../regional_maxima/cmp_quant/h5_mean_q2.pgm.gz | Bin 0 -> 247 bytes
.../regional_maxima/cmp_quant/h5_mean_q3.pgm.gz | Bin 0 -> 280 bytes
.../regional_maxima/cmp_quant/h5_mean_q4.pgm.gz | Bin 0 -> 319 bytes
.../regional_maxima/cmp_quant/h5_mean_q5.pgm.gz | Bin 0 -> 375 bytes
.../regional_maxima/cmp_quant/h5_mean_q6.pgm.gz | Bin 0 -> 392 bytes
.../regional_maxima/cmp_quant/h5_mean_q7.pgm.gz | Bin 0 -> 383 bytes
.../regional_maxima/cmp_quant/h5_mean_q8.pgm.gz | Bin 0 -> 470 bytes
.../regional_maxima/cmp_quant/h5_merge_q2.pgm.gz | Bin 0 -> 18081 bytes
.../regional_maxima/cmp_quant/h5_merge_q3.pgm.gz | Bin 0 -> 18081 bytes
.../regional_maxima/cmp_quant/h5_merge_q4.pgm.gz | Bin 0 -> 16358 bytes
.../regional_maxima/cmp_quant/h5_merge_q5.pgm.gz | Bin 0 -> 12780 bytes
.../regional_maxima/cmp_quant/h5_merge_q6.pgm.gz | Bin 0 -> 9694 bytes
.../regional_maxima/cmp_quant/h5_merge_q7.pgm.gz | Bin 0 -> 6211 bytes
.../regional_maxima/cmp_quant/h5_merge_q8.pgm.gz | Bin 0 -> 1564 bytes
.../regional_maxima/cmp_quant/i5_mean_q2.ppm.gz | Bin 0 -> 112779 bytes
.../regional_maxima/cmp_quant/i5_mean_q3.ppm.gz | Bin 0 -> 191264 bytes
.../regional_maxima/cmp_quant/i5_mean_q4.ppm.gz | Bin 0 -> 298062 bytes
.../regional_maxima/cmp_quant/i5_mean_q5.ppm.gz | Bin 0 -> 653143 bytes
.../regional_maxima/cmp_quant/i5_mean_q6.ppm.gz | Bin 0 -> 807617 bytes
.../regional_maxima/cmp_quant/i5_mean_q7.ppm.gz | Bin 0 -> 813222 bytes
.../regional_maxima/cmp_quant/i5_mean_q8.ppm.gz | Bin 0 -> 861711 bytes
.../regional_maxima/cmp_quant/i5_merge_q2.ppm.gz | Bin 0 -> 3387047 bytes
.../regional_maxima/cmp_quant/i5_merge_q3.ppm.gz | Bin 0 -> 3387047 bytes
.../regional_maxima/cmp_quant/i5_merge_q4.ppm.gz | Bin 0 -> 3355365 bytes
.../regional_maxima/cmp_quant/i5_merge_q5.ppm.gz | Bin 0 -> 3217842 bytes
.../regional_maxima/cmp_quant/i5_merge_q6.ppm.gz | Bin 0 -> 3033730 bytes
.../regional_maxima/cmp_quant/i5_merge_q7.ppm.gz | Bin 0 -> 2295150 bytes
.../regional_maxima/cmp_quant/i5_merge_q8.ppm.gz | Bin 0 -> 1319396 bytes
.../regional_maxima/cmp_quant/l5_input_q2.pgm.gz | Bin 0 -> 83951 bytes
.../regional_maxima/cmp_quant/l5_input_q3.pgm.gz | Bin 0 -> 143817 bytes
.../regional_maxima/cmp_quant/l5_input_q4.pgm.gz | Bin 0 -> 220346 bytes
.../regional_maxima/cmp_quant/l5_input_q5.pgm.gz | Bin 0 -> 479058 bytes
.../regional_maxima/cmp_quant/l5_input_q6.pgm.gz | Bin 0 -> 593359 bytes
.../regional_maxima/cmp_quant/l5_input_q7.pgm.gz | Bin 0 -> 600121 bytes
.../regional_maxima/cmp_quant/l5_input_q8.pgm.gz | Bin 0 -> 630760 bytes
.../doc/regional_maxima/cmp_quant/s5_histo_q2.txt | 3 +
.../doc/regional_maxima/cmp_quant/s5_histo_q3.txt | 8 +
.../doc/regional_maxima/cmp_quant/s5_histo_q4.txt | 18 +
.../doc/regional_maxima/cmp_quant/s5_histo_q5.txt | 33 +
.../doc/regional_maxima/cmp_quant/s5_histo_q6.txt | 33 +
.../doc/regional_maxima/cmp_quant/s5_histo_q7.txt | 32 +
.../doc/regional_maxima/cmp_quant/s5_histo_q8.txt | 75 +
.../doc/regional_maxima/cmp_quant/synthese.txt | 205 ++
.../mp00411c/colormap_all_q4.txt.gz | Bin 0 -> 187 bytes
.../mp00411c/colormap_all_q5.txt.gz | Bin 0 -> 420 bytes
.../mp00411c/colormap_thick_q4.txt.gz | Bin 0 -> 159 bytes
.../mp00411c/colormap_thick_q5.txt.gz | Bin 0 -> 352 bytes
.../mp00411c/colormap_thin_q4.txt.gz | Bin 0 -> 173 bytes
.../mp00411c/colormap_thin_q5.txt.gz | Bin 0 -> 366 bytes
.../regional_maxima/mp00411c/histo_all_q4.dump.gz | Bin 0 -> 1233 bytes
.../regional_maxima/mp00411c/histo_all_q5.dump.gz | Bin 0 -> 4779 bytes
.../mp00411c/histo_thick_q4.dump.gz | Bin 0 -> 781 bytes
.../mp00411c/histo_thick_q5.dump.gz | Bin 0 -> 2532 bytes
.../regional_maxima/mp00411c/histo_thin_q4.dump.gz | Bin 0 -> 901 bytes
.../regional_maxima/mp00411c/histo_thin_q5.dump.gz | Bin 0 -> 2976 bytes
.../doc/regional_maxima/mp00411c/iz_all_q4.dump.gz | Bin 0 -> 659040 bytes
.../doc/regional_maxima/mp00411c/iz_all_q5.dump.gz | Bin 0 -> 1505619 bytes
.../regional_maxima/mp00411c/iz_thick_q4.dump.gz | Bin 0 -> 482831 bytes
.../regional_maxima/mp00411c/iz_thick_q5.dump.gz | Bin 0 -> 1414258 bytes
.../regional_maxima/mp00411c/iz_thin_q4.dump.gz | Bin 0 -> 647722 bytes
.../regional_maxima/mp00411c/iz_thin_q5.dump.gz | Bin 0 -> 1458415 bytes
.../mp00411c/labeled_all_q4.dump.gz | Bin 0 -> 149 bytes
.../mp00411c/labeled_all_q5.dump.gz | Bin 0 -> 343 bytes
.../mp00411c/labeled_thick_q4.dump.gz | Bin 0 -> 149 bytes
.../mp00411c/labeled_thick_q5.dump.gz | Bin 0 -> 309 bytes
.../mp00411c/labeled_thin_q4.dump.gz | Bin 0 -> 149 bytes
.../mp00411c/labeled_thin_q5.dump.gz | Bin 0 -> 308 bytes
.../regional_maxima/mp00411c/mean3_all_q4.ppm.gz | Bin 0 -> 985276 bytes
.../regional_maxima/mp00411c/mean3_all_q5.ppm.gz | Bin 0 -> 1961577 bytes
.../regional_maxima/mp00411c/mean3_thick_q4.ppm.gz | Bin 0 -> 865034 bytes
.../regional_maxima/mp00411c/mean3_thick_q5.ppm.gz | Bin 0 -> 1831699 bytes
.../regional_maxima/mp00411c/mean3_thin_q4.ppm.gz | Bin 0 -> 958289 bytes
.../regional_maxima/mp00411c/mean3_thin_q5.ppm.gz | Bin 0 -> 1872271 bytes
.../regional_maxima/mp00411c/mean4_all_q4.ppm.gz | Bin 0 -> 772605 bytes
.../regional_maxima/mp00411c/mean4_all_q5.ppm.gz | Bin 0 -> 1852455 bytes
.../regional_maxima/mp00411c/mean4_thick_q4.ppm.gz | Bin 0 -> 559850 bytes
.../regional_maxima/mp00411c/mean4_thick_q5.ppm.gz | Bin 0 -> 1727247 bytes
.../regional_maxima/mp00411c/mean4_thin_q4.ppm.gz | Bin 0 -> 760428 bytes
.../regional_maxima/mp00411c/mean4_thin_q5.ppm.gz | Bin 0 -> 1781495 bytes
.../doc/regional_maxima/mp00411c/mp00411c.ppm.gz | Bin 0 -> 5316204 bytes
.../doc/regional_maxima/mp00411c/mp00411c.sh.gz | Bin 0 -> 636 bytes
.../regional_maxima/mp00411c/mp00411c_thick.pbm.gz | Bin 0 -> 190478 bytes
.../regional_maxima/mp00411c/mp00411c_thin.pbm.gz | Bin 0 -> 248730 bytes
.../regional_maxima/mp00411c/opened_all_q4.dump.gz | Bin 0 -> 1159 bytes
.../regional_maxima/mp00411c/opened_all_q5.dump.gz | Bin 0 -> 4531 bytes
.../mp00411c/opened_thick_q4.dump.gz | Bin 0 -> 747 bytes
.../mp00411c/opened_thick_q5.dump.gz | Bin 0 -> 2351 bytes
.../mp00411c/opened_thin_q4.dump.gz | Bin 0 -> 848 bytes
.../mp00411c/opened_thin_q5.dump.gz | Bin 0 -> 2772 bytes
.../regional_maxima/mp00411c/proj1_all_q4.pgm.gz | Bin 0 -> 343 bytes
.../regional_maxima/mp00411c/proj1_all_q5.pgm.gz | Bin 0 -> 779 bytes
.../regional_maxima/mp00411c/proj1_thick_q4.pgm.gz | Bin 0 -> 312 bytes
.../regional_maxima/mp00411c/proj1_thick_q5.pgm.gz | Bin 0 -> 612 bytes
.../regional_maxima/mp00411c/proj1_thin_q4.pgm.gz | Bin 0 -> 339 bytes
.../regional_maxima/mp00411c/proj1_thin_q5.pgm.gz | Bin 0 -> 718 bytes
.../regional_maxima/mp00411c/proj2_all_q4.pgm.gz | Bin 0 -> 338 bytes
.../regional_maxima/mp00411c/proj2_all_q5.pgm.gz | Bin 0 -> 750 bytes
.../regional_maxima/mp00411c/proj2_thick_q4.pgm.gz | Bin 0 -> 315 bytes
.../regional_maxima/mp00411c/proj2_thick_q5.pgm.gz | Bin 0 -> 606 bytes
.../regional_maxima/mp00411c/proj2_thin_q4.pgm.gz | Bin 0 -> 331 bytes
.../regional_maxima/mp00411c/proj2_thin_q5.pgm.gz | Bin 0 -> 693 bytes
.../regional_maxima/mp00411c/proj3_all_q4.ppm.gz | Bin 0 -> 230 bytes
.../regional_maxima/mp00411c/proj3_all_q5.ppm.gz | Bin 0 -> 401 bytes
.../regional_maxima/mp00411c/proj3_thick_q4.ppm.gz | Bin 0 -> 224 bytes
.../regional_maxima/mp00411c/proj3_thick_q5.ppm.gz | Bin 0 -> 343 bytes
.../regional_maxima/mp00411c/proj3_thin_q4.ppm.gz | Bin 0 -> 229 bytes
.../regional_maxima/mp00411c/proj3_thin_q5.ppm.gz | Bin 0 -> 359 bytes
.../regional_maxima/mp00411c/proj4_all_q4.ppm.gz | Bin 0 -> 252 bytes
.../regional_maxima/mp00411c/proj4_all_q5.ppm.gz | Bin 0 -> 447 bytes
.../regional_maxima/mp00411c/proj4_thick_q4.ppm.gz | Bin 0 -> 221 bytes
.../regional_maxima/mp00411c/proj4_thick_q5.ppm.gz | Bin 0 -> 369 bytes
.../regional_maxima/mp00411c/proj4_thin_q4.ppm.gz | Bin 0 -> 234 bytes
.../regional_maxima/mp00411c/proj4_thin_q5.ppm.gz | Bin 0 -> 415 bytes
.../doc/regional_maxima/mp00411c/quant_q4.ppm.gz | Bin 0 -> 2590062 bytes
.../doc/regional_maxima/mp00411c/quant_q5.ppm.gz | Bin 0 -> 3775184 bytes
.../regional_maxima/mp00411c/stats3_all_q4.txt.gz | Bin 0 -> 292 bytes
.../regional_maxima/mp00411c/stats3_all_q5.txt.gz | Bin 0 -> 701 bytes
.../mp00411c/stats3_thick_q4.txt.gz | Bin 0 -> 244 bytes
.../mp00411c/stats3_thick_q5.txt.gz | Bin 0 -> 584 bytes
.../regional_maxima/mp00411c/stats3_thin_q4.txt.gz | Bin 0 -> 262 bytes
.../regional_maxima/mp00411c/stats3_thin_q5.txt.gz | Bin 0 -> 606 bytes
.../regional_maxima/mp00411c/stats4_all_q4.txt.gz | Bin 0 -> 284 bytes
.../regional_maxima/mp00411c/stats4_all_q5.txt.gz | Bin 0 -> 704 bytes
.../mp00411c/stats4_thick_q4.txt.gz | Bin 0 -> 234 bytes
.../mp00411c/stats4_thick_q5.txt.gz | Bin 0 -> 580 bytes
.../regional_maxima/mp00411c/stats4_thin_q4.txt.gz | Bin 0 -> 255 bytes
.../regional_maxima/mp00411c/stats4_thin_q5.txt.gz | Bin 0 -> 591 bytes
.../doc/regional_maxima/mp00411c/synthese.txt.gz | Bin 0 -> 4062 bytes
.../green/exp/annotating/achromastism/Makefile.am | 153 ++
.../exp/annotating/achromastism/achromastism.cc | 113 +
.../exp/annotating/achromastism/text-color.txt | 15 +
.../green/exp/annotating/achromastism/text-img.txt | 40 +
.../exp/annotating/achromastism/text-only.txt | 8 +
.../sandbox/green/exp/annotating/bench/Makefile.am | 153 ++
milena/sandbox/green/exp/annotating/bench/bench.cc | 1213 ++++++++++
.../sandbox/green/exp/annotating/error/Makefile.am | 153 ++
milena/sandbox/green/exp/annotating/error/error.cc | 700 ++++++
.../sandbox/green/exp/annotating/histo/Makefile.am | 153 ++
milena/sandbox/green/exp/annotating/histo/histo.cc | 306 +++
.../sandbox/green/exp/annotating/hsv/Makefile.am | 153 ++
milena/sandbox/green/exp/annotating/hsv/hsv.cc | 652 ++++++
.../sandbox/green/exp/annotating/hue/Makefile.am | 153 ++
milena/sandbox/green/exp/annotating/hue/hue.cc | 291 +++
.../green/exp/annotating/hue/text-color.txt | 15 +
.../sandbox/green/exp/annotating/hue/text-img.txt | 40 +
.../sandbox/green/exp/annotating/hue/text-only.txt | 8 +
.../green/exp/annotating/nb_color/Makefile.am | 151 ++
.../green/exp/annotating/nb_color/nb_color.cc | 131 ++
.../green/exp/annotating/saturation/Makefile.am | 153 ++
.../green/exp/annotating/saturation/saturation.cc | 119 +
.../green/exp/annotating/saturation/text-color.txt | 15 +
.../green/exp/annotating/saturation/text-img.txt | 40 +
.../green/exp/annotating/saturation/text-only.txt | 8 +
.../green/exp/annotating/stddev_color/Makefile.am | 151 ++
.../exp/annotating/stddev_color/stddev_color.cc | 153 ++
.../exp/annotating/stddev_color_16/Makefile.am | 151 ++
.../annotating/stddev_color_16/stddev_color_16.cc | 195 ++
.../sandbox/green/exp/annotating/value/Makefile.am | 153 ++
.../green/exp/annotating/value/text-color.txt | 15 +
.../green/exp/annotating/value/text-img.txt | 40 +
.../green/exp/annotating/value/text-only.txt | 8 +
milena/sandbox/green/exp/annotating/value/value.cc | 316 +++
.../green/exp/labeling/regional_maxima/Makefile.am | 151 ++
.../labeling/regional_maxima/regional_maxima.cc | 156 ++
milena/sandbox/green/mln/accu/stat/histo1d.hh | 66 +-
milena/sandbox/green/mln/clustering/kmean_rgb.hh | 973 ++++++++
milena/sandbox/green/mln/display/display_histo.hh | 98 +-
milena/sandbox/green/mln/display/project_histo.hh | 443 ++++-
milena/sandbox/green/mln/fun/p2b/achromatic.hh | 112 +
.../sandbox/green/mln/fun/p2b/component_equals.hh | 99 +
milena/sandbox/green/mln/fun/v2v/achromatism.hh | 64 +
.../sandbox/green/mln/fun/v2v/hue_concentration.hh | 100 +
milena/sandbox/green/mln/fun/v2v/rgb8_to_int_u8.hh | 71 +
.../green/mln/fun/v2v/rgb_to_achromatism_map.hh | 77 +
milena/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh | 149 ++
milena/sandbox/green/mln/fun/v2v/rgb_to_hue_map.hh | 96 +
.../green/mln/fun/v2v/rgb_to_saturation_map.hh | 83 +
.../sandbox/green/mln/fun/v2v/rgb_to_value_map.hh | 75 +
milena/sandbox/green/mln/img_path.hh | 221 ++-
milena/sandbox/green/mln/math/ceil.hh | 64 +
milena/sandbox/green/mln/math/floor.hh | 64 +
milena/sandbox/green/mln/value/hsv.hh | 424 ++++
.../green/tools/annotating/histo/Makefile.am | 150 ++
.../sandbox/green/tools/annotating/histo/histo.cc | 143 ++
.../sandbox/green/tools/annotating/iz/Makefile.am | 150 ++
milena/sandbox/green/tools/annotating/iz/iz.cc | 373 ++++
.../green/tools/annotating/opening/Makefile.am | 150 ++
.../green/tools/annotating/opening/opening.cc | 111 +
.../green/tools/annotating/regmax/Makefile.am | 150 ++
.../green/tools/annotating/regmax/regmax.cc | 328 +++
.../lazzara/scribo/binarization_naive/main.cc | 54 +
.../lazzara/scribo/binarization_naive/toto.cc | 28 +
milena/sandbox/lazzara/scribo/fill_holes/main.cc | 118 +
.../separateurs_materialises/lines_pattern.cc | 69 +
.../sandbox/lazzara/scribo/skeleton_crest/main.cc | 52 +
milena/tests/accu/Makefile.am | 15 +-
milena/tests/convert/Makefile.am | 25 +-
milena/tests/convert/to_qimage.cc | 76 +
milena/tests/convert/to_qimage_nocopy.cc | 56 +
milena/tests/core/alias/box3d.cc | 5 +-
milena/tests/core/image/image3d.cc | 11 +-
milena/tests/core/other/box_runstart_piter.cc | 57 +-
milena/tests/core/site_set/Makefile.am | 2 +
milena/tests/core/site_set/box.cc | 42 +
milena/tests/data/Makefile.am | 4 +
milena/tests/data/paste_without_localization.cc | 81 +
milena/tests/data/split.cc | 54 +
milena/tests/fun/v2v/Makefile.am | 9 +
milena/tests/fun/v2v/qt_rgb_to_int_u.cc | 44 +
milena/tests/geom/Makefile.am | 12 +-
milena/tests/geom/horizontal_symmetry.cc | 50 +
milena/tests/geom/nslices.cc | 38 +
milena/tests/geom/nslis.cc | 37 -
milena/tests/geom/rotate.cc | 16 +-
milena/tests/geom/translate.cc | 5 +-
milena/tests/geom/vertical_symmetry.cc | 49 +
milena/tests/io/magick/save.cc | 5 +-
milena/tests/io/pbms/load.cc | 3 +-
milena/tests/io/pgms/load.cc | 3 +-
milena/tests/io/ppms/load.cc | 3 +-
milena/tests/labeling/blobs_and_compute.cc | 17 +-
milena/tests/labeling/colorize.cc | 6 +-
milena/tests/labeling/flat_zones.cc | 4 +-
milena/tests/labeling/foreground.cc | 4 +-
milena/tests/labeling/relabel.cc | 6 +-
milena/tests/subsampling/Makefile.am | 12 +-
milena/tests/subsampling/antialiased.cc | 74 +
milena/tests/topo/skeleton/crest.cc | 10 +-
.../transform/bench_closest_point_geodesic.cc | 9 +-
milena/tests/unit_test/Makefile.am | 18 +-
.../cond_tests_boost-preprocessor_boost-tuple | 1 +
milena/tests/unit_test/cond_tests_cfitsio | 2 +
milena/tests/unit_test/cond_tests_gdcm | 3 +
milena/tests/unit_test/cond_tests_magickxx | 3 +
milena/tests/unit_test/cond_tests_qt | 2 +
milena/tests/unit_test/cond_tests_tiff | 2 +
milena/tests/unit_test/disabled_tests | 10 -
milena/tests/unit_test/unit-tests.mk | 146 ++-
scribo/ChangeLog | 2326 +++++++++++++++++++-
scribo/Makefile.am | 9 +-
scribo/README | 52 +
scribo/all.hh | 51 -
scribo/binarization/binarize.hh | 180 --
scribo/binarization/sauvola.hh | 192 --
scribo/binarization/sauvola_threshold.hh | 478 ----
scribo/binarization/simple.hh | 166 --
scribo/core/all.hh | 49 -
scribo/core/erase_objects.hh | 87 -
scribo/core/internal/link_functor_base.hh | 119 -
scribo/core/macros.hh | 38 -
scribo/core/object_groups.hh | 140 --
scribo/core/object_image.hh | 38 -
scribo/core/object_links.hh | 130 --
scribo/debug/alignment_decision_image.hh | 170 --
scribo/debug/decision_image.hh | 176 --
scribo/debug/links_decision_image.hh | 127 --
scribo/debug/save_bboxes_image.hh | 87 -
scribo/debug/save_linked_bboxes_image.hh | 269 ---
scribo/debug/save_object_diff.hh | 98 -
scribo/debug/several_links_decision_image.hh | 185 --
scribo/debug/usage.hh | 82 -
scribo/demo/Makefile.am | 12 +-
scribo/demo/demat/demat.pro | 42 +
scribo/demo/demat/demat.qrc | 4 +
scribo/demo/demat/src/doc_type.hh | 51 +
scribo/demo/demat/src/main.cc | 31 +
scribo/demo/demat/src/main_window.cc | 266 +++
scribo/demo/demat/src/main_window.hh | 96 +
scribo/demo/demat/src/mln_widgets.cc | 11 +
scribo/demo/demat/src/preprocessing_task.hh | 62 +
scribo/demo/demat/src/process_args.hh | 47 +
scribo/demo/demat/src/runner.cc | 327 +++
scribo/demo/demat/src/runner.hh | 94 +
scribo/demo/demat/ui/main_window.ui | 381 ++++
scribo/demo/demo.pro | 16 -
.../igr/gui => scribo/demo/review}/Makefile.am | 0
scribo/demo/{ => review}/icons/document-open.png | Bin 1550 -> 1550 bytes
scribo/demo/{ => review}/icons/edit-find.png | Bin 1636 -> 1636 bytes
.../demo/{ => review}/icons/format-indent-more.png | Bin 766 -> 766 bytes
scribo/demo/{ => review}/icons/go-next.png | Bin 1219 -> 1219 bytes
scribo/demo/{ => review}/icons/image-x-generic.png | Bin 1163 -> 1163 bytes
scribo/demo/{ => review}/icons/list-add.png | Bin 601 -> 601 bytes
scribo/demo/{ => review}/icons/ocr.png | Bin 14929 -> 14929 bytes
scribo/demo/{ => review}/icons/text-x-generic.png | Bin 744 -> 744 bytes
scribo/demo/{ => review}/icons/view-refresh.png | Bin 2024 -> 2024 bytes
.../{ => review}/icons/x-office-spreadsheet.png | Bin 1518 -> 1518 bytes
scribo/demo/review/review.pro | 16 +
scribo/demo/{demo.qrc => review/review.qrc} | 0
scribo/demo/review/src/main.cc | 49 +
scribo/demo/review/src/mainwindow.cc | 572 +++++
scribo/demo/review/src/mainwindow.hh | 138 ++
scribo/demo/{ => review}/ui/mainwindow.ui | 0
scribo/demo/shared/icons/Symbols-Delete-icon.png | Bin 0 -> 3704 bytes
scribo/demo/shared/icons/accept-icon.png | Bin 0 -> 4858 bytes
scribo/demo/shared/icons/close.gif | Bin 0 -> 340 bytes
scribo/demo/shared/icons/crop-icon.png | Bin 0 -> 228 bytes
scribo/demo/shared/icons/image-add-icon.png | Bin 0 -> 2917 bytes
scribo/demo/shared/icons/image-edit-icon.png | Bin 0 -> 2305 bytes
scribo/demo/shared/icons/image-multi-icon.png | Bin 0 -> 2033 bytes
scribo/demo/shared/icons/image-next-icon.png | Bin 0 -> 3008 bytes
scribo/demo/shared/icons/image-remove-icon.png | Bin 0 -> 3127 bytes
scribo/demo/shared/icons/next-icon.png | Bin 0 -> 4611 bytes
scribo/demo/shared/icons/page-down-icon.png | Bin 0 -> 3450 bytes
scribo/demo/shared/icons/page-search-icon.png | Bin 0 -> 3101 bytes
scribo/demo/shared/icons/rotate_ccw.png | Bin 0 -> 4200 bytes
scribo/demo/shared/icons/rotate_cw.png | Bin 0 -> 4161 bytes
scribo/demo/shared/icons/search-add-icon.png | Bin 0 -> 4274 bytes
scribo/demo/shared/icons/search-remove-icon.png | Bin 0 -> 4196 bytes
scribo/demo/shared/shared.qrc | 20 +
scribo/demo/shared/src/bak/crop_item.cc | 332 +++
scribo/demo/shared/src/bak/crop_item.hh | 100 +
scribo/demo/shared/src/bak/image_viewer.cc | 242 ++
scribo/demo/shared/src/bak/image_viewer.hh | 116 +
scribo/demo/shared/src/bak/types.hh | 50 +
scribo/demo/shared/src/browse_widget.cc | 72 +
scribo/demo/shared/src/browse_widget.hh | 78 +
scribo/demo/shared/src/crop_item.cc | 396 ++++
scribo/demo/shared/src/crop_item.hh | 119 +
scribo/demo/shared/src/image_viewer.cc | 410 ++++
scribo/demo/shared/src/image_viewer.hh | 148 ++
scribo/demo/shared/src/image_viewer.hxx | 31 +
.../shared/src/internal.bak/interactive_scene.cc | 286 +++
.../shared/src/internal.bak/interactive_scene.hh | 108 +
.../shared/src/internal.bak/selection_rectangle.cc | 241 ++
.../shared/src/internal.bak/selection_rectangle.hh | 91 +
.../demo/shared/src/internal/interactive_scene.cc | 94 +
.../demo/shared/src/internal/interactive_scene.hh | 85 +
.../shared/src/internal/selection_rectangle.cc | 241 ++
.../shared/src/internal/selection_rectangle.hh | 91 +
scribo/demo/shared/src/to_mln_image.hh | 77 +
scribo/demo/shared/src/types.hh | 50 +
scribo/demo/shared/ui/browse_widget.ui | 106 +
scribo/demo/shared/ui/crop_widget.ui | 34 +
scribo/demo/shared/ui/image_viewer.ui | 296 +++
scribo/demo/shared/ui/interactive_scene.cc | 143 ++
scribo/demo/shared/ui/interactive_scene.hh | 87 +
scribo/demo/shared/ui/rotate_widget.ui | 34 +
scribo/demo/src/main.cc | 42 -
scribo/demo/src/mainwindow.cc | 570 -----
scribo/demo/src/mainwindow.hh | 138 --
scribo/demo/tip/gui.pro | 19 +
scribo/demo/tip/gui.qrc | 9 +
scribo/demo/tip/icons/next.png | Bin 0 -> 3337 bytes
scribo/demo/tip/icons/ok.png | Bin 0 -> 3953 bytes
scribo/demo/tip/icons/photos.png | Bin 0 -> 3750 bytes
scribo/demo/tip/icons/prev.png | Bin 0 -> 3334 bytes
scribo/demo/tip/icons/remove.png | Bin 0 -> 3704 bytes
scribo/demo/tip/src/custom_delegate.cc | 105 +
scribo/demo/tip/src/custom_delegate.hh | 81 +
scribo/demo/tip/src/launch_dialog.cc | 94 +
scribo/demo/tip/src/launch_dialog.hh | 63 +
scribo/demo/tip/src/main.cc | 46 +
scribo/demo/tip/src/main_window.cc | 526 +++++
scribo/demo/tip/src/main_window.hh | 119 +
scribo/demo/tip/ui/launch_dialog.ui | 117 +
scribo/demo/tip/ui/main_window.ui | 656 ++++++
scribo/demo/viewer/Makefile.am | 70 +
scribo/demo/viewer/README | 33 +
scribo/demo/viewer/browser_widget.cc | 78 +
scribo/demo/viewer/browser_widget.hh | 42 +
scribo/demo/viewer/common.hh | 38 +
scribo/demo/viewer/domitem.cc | 98 +
scribo/demo/viewer/domitem.hh | 75 +
scribo/demo/viewer/dommodel.cc | 198 ++
scribo/demo/viewer/dommodel.hh | 85 +
scribo/demo/viewer/help_dialog.cc | 55 +
scribo/demo/viewer/help_dialog.hh | 32 +
scribo/demo/viewer/image_region.cc | 139 ++
scribo/demo/viewer/image_region.hh | 76 +
scribo/demo/viewer/image_region.hxx | 100 +
scribo/demo/viewer/image_scene.cc | 90 +
scribo/demo/viewer/image_scene.hh | 44 +
scribo/demo/viewer/image_view.cc | 78 +
scribo/demo/viewer/image_view.hh | 40 +
scribo/demo/viewer/image_widget.cc | 48 +
scribo/demo/viewer/image_widget.hh | 41 +
scribo/demo/viewer/key_widget.cc | 90 +
scribo/demo/viewer/key_widget.hh | 45 +
scribo/demo/viewer/main.cc | 37 +
scribo/demo/viewer/property_widget.cc | 73 +
scribo/demo/viewer/property_widget.hh | 41 +
scribo/demo/viewer/step_widget.cc | 122 +
scribo/demo/viewer/step_widget.hh | 57 +
scribo/demo/viewer/viewer.cc | 504 +++++
scribo/demo/viewer/viewer.hh | 88 +
scribo/demo/viewer/viewer.hxx | 31 +
scribo/demo/viewer/xml_widget.cc | 53 +
scribo/demo/viewer/xml_widget.hh | 41 +
scribo/demo/wizard/images/dematerialization.png | Bin 0 -> 76309 bytes
scribo/demo/wizard/src/crop_page.cc | 48 +
scribo/demo/wizard/src/crop_page.hh | 60 +
scribo/demo/wizard/src/crop_widget.cc | 37 +
scribo/demo/wizard/src/crop_widget.hh | 62 +
scribo/demo/wizard/src/doc_type.hh | 51 +
scribo/demo/wizard/src/doc_type_page.cc | 48 +
scribo/demo/wizard/src/doc_type_page.hh | 61 +
scribo/demo/wizard/src/doc_type_widget.cc | 38 +
scribo/demo/wizard/src/doc_type_widget.hh | 64 +
scribo/demo/wizard/src/load_page.cc | 71 +
scribo/demo/wizard/src/load_page.hh | 67 +
scribo/demo/wizard/src/load_widget.cc | 56 +
scribo/demo/wizard/src/load_widget.hh | 64 +
scribo/demo/wizard/src/main.cc | 28 +
scribo/demo/wizard/src/main_window.cc | 144 ++
scribo/demo/wizard/src/main_window.hh | 72 +
scribo/demo/wizard/src/mln_widgets.cc | 7 +
scribo/demo/wizard/src/preprocessing_page.cc | 61 +
scribo/demo/wizard/src/preprocessing_page.hh | 66 +
scribo/demo/wizard/src/preprocessing_task.hh | 61 +
scribo/demo/wizard/src/preprocessing_widget.cc | 93 +
scribo/demo/wizard/src/preprocessing_widget.hh | 65 +
scribo/demo/wizard/src/process_page.cc | 68 +
scribo/demo/wizard/src/process_page.hh | 64 +
scribo/demo/wizard/src/process_widget.cc | 80 +
scribo/demo/wizard/src/process_widget.hh | 71 +
scribo/demo/wizard/src/result_page.cc | 43 +
scribo/demo/wizard/src/result_page.hh | 60 +
scribo/demo/wizard/src/result_widget.cc | 43 +
scribo/demo/wizard/src/result_widget.hh | 58 +
scribo/demo/wizard/src/rotate_page.cc | 45 +
scribo/demo/wizard/src/rotate_page.hh | 60 +
scribo/demo/wizard/src/rotate_widget.cc | 38 +
scribo/demo/wizard/src/rotate_widget.hh | 62 +
scribo/demo/wizard/src/runner.cc | 296 +++
scribo/demo/wizard/src/runner.hh | 84 +
scribo/demo/wizard/src/test.cc | 16 +
scribo/demo/wizard/ui/doc_type_widget.ui | 115 +
scribo/demo/wizard/ui/load_widget.ui | 110 +
scribo/demo/wizard/ui/main_window.ui | 216 ++
scribo/demo/wizard/ui/preprocessing_widget.ui | 223 ++
scribo/demo/wizard/wizard.pro | 71 +
scribo/demo/wizard/wizard.qrc | 5 +
scribo/draw/bounding_box_links.hh | 417 ----
scribo/draw/bounding_boxes.hh | 109 -
scribo/estim/object_groups_v_thickness.hh | 102 -
scribo/filter/all.hh | 53 -
scribo/filter/common/objects_photo.hh | 98 -
scribo/filter/internal/compute.hh | 147 --
scribo/filter/object_groups_size_ratio.hh | 104 -
scribo/filter/object_groups_small.hh | 98 -
scribo/filter/object_groups_v_thickness.hh | 97 -
scribo/filter/object_links_bbox_h_ratio.hh | 99 -
scribo/filter/object_links_bbox_overlap.hh | 133 --
scribo/filter/object_links_bbox_ratio.hh | 112 -
scribo/filter/object_links_bbox_w_ratio.hh | 97 -
scribo/filter/object_links_bottom_aligned.hh | 120 -
scribo/filter/object_links_center_aligned.hh | 113 -
scribo/filter/object_links_non_aligned.hh | 138 --
scribo/filter/object_links_non_aligned_simple.hh | 186 --
scribo/filter/object_links_non_h_aligned.hh | 109 -
scribo/filter/object_links_non_v_aligned.hh | 122 -
scribo/filter/object_links_top_aligned.hh | 121 -
scribo/filter/objects_h_thick.hh | 196 --
scribo/filter/objects_h_thin.hh | 192 --
scribo/filter/objects_large.hh | 198 --
scribo/filter/objects_size_ratio.hh | 120 -
scribo/filter/objects_small.hh | 160 --
scribo/filter/objects_thick.hh | 191 --
scribo/filter/objects_thin.hh | 193 --
scribo/filter/objects_v_thick.hh | 196 --
scribo/filter/objects_v_thin.hh | 193 --
scribo/fun/v2b/objects_small_filter.hh | 129 --
scribo/headers.mk | 340 ++--
scribo/make/all.hh | 49 -
scribo/make/text.hh | 180 --
scribo/preprocessing/all.hh | 46 -
scribo/preprocessing/split_bg_fg.hh | 340 ---
scribo/preprocessing/unskew.hh | 115 -
scribo/primitive/extract/all.hh | 67 -
scribo/primitive/extract/lines_discontinued.hh | 152 --
scribo/primitive/extract/lines_h_discontinued.hh | 133 --
scribo/primitive/extract/lines_h_pattern.hh | 113 -
scribo/primitive/extract/lines_h_single.hh | 203 --
scribo/primitive/extract/lines_h_thick.hh | 129 --
.../primitive/extract/lines_h_thick_and_single.hh | 152 --
scribo/primitive/extract/lines_pattern.hh | 137 --
scribo/primitive/extract/lines_thick.hh | 138 --
scribo/primitive/extract/lines_v_discontinued.hh | 131 --
scribo/primitive/extract/lines_v_pattern.hh | 106 -
scribo/primitive/extract/lines_v_single.hh | 199 --
scribo/primitive/extract/lines_v_thick.hh | 129 --
.../primitive/extract/lines_v_thick_and_single.hh | 150 --
scribo/primitive/extract/objects.hh | 138 --
scribo/primitive/group/all.hh | 57 -
scribo/primitive/group/apply.hh | 126 --
scribo/primitive/group/from_double_link.hh | 129 --
scribo/primitive/group/from_graph.hh | 180 --
scribo/primitive/group/from_single_link.hh | 108 -
scribo/primitive/internal/all.hh | 60 -
scribo/primitive/internal/find_graph_link.hh | 111 -
scribo/primitive/internal/find_left_link.hh | 108 -
scribo/primitive/internal/find_right_link.hh | 108 -
scribo/primitive/internal/find_root.hh | 71 -
scribo/primitive/internal/init_link_array.hh | 71 -
scribo/primitive/internal/is_invalid_link.hh | 100 -
scribo/primitive/internal/is_link_valid.hh | 79 -
scribo/primitive/internal/update_link_array.hh | 105 -
scribo/primitive/link/all.hh | 60 -
scribo/primitive/link/compute.hh | 115 -
scribo/primitive/link/compute_several.hh | 117 -
scribo/primitive/link/internal/anchors_3.hh | 147 --
scribo/primitive/link/internal/find_link.hh | 116 -
.../primitive/link/internal/find_several_links.hh | 124 --
.../link/internal/link_center_dmax_base.hh | 179 --
.../link/internal/link_center_dmax_ratio_base.hh | 175 --
.../primitive/link/internal/link_functor_base.hh | 518 -----
.../primitive/link/internal/link_ms_dmax_base.hh | 165 --
.../link/internal/link_ms_dmax_ratio_base.hh | 168 --
scribo/primitive/link/merge_double_link.hh | 123 -
scribo/primitive/link/with_graph.hh | 125 --
scribo/primitive/link/with_rag.hh | 99 -
scribo/primitive/link/with_several_graphes.hh | 128 --
scribo/primitive/link/with_several_left_links.hh | 166 --
.../link/with_several_right_closest_links.hh | 215 --
scribo/primitive/link/with_several_right_links.hh | 169 --
.../link/with_several_right_links_overlap.hh | 152 --
scribo/primitive/link/with_single_left_link.hh | 159 --
.../link/with_single_left_link_dmax_ratio.hh | 167 --
scribo/primitive/link/with_single_right_link.hh | 158 --
.../link/with_single_right_link_bottom.hh | 161 --
.../link/with_single_right_link_dmax_ratio.hh | 167 --
.../primitive/link/with_single_right_link_top.hh | 161 --
scribo/sandbox/ChangeLog | 9 +
scribo/sandbox/green/ChangeLog | 264 +++
scribo/sandbox/green/README | 219 ++
scribo/sandbox/green/README.green | 416 ++++
scribo/sandbox/green/README.img | 124 ++
scribo/sandbox/green/README.result | 143 ++
.../green/bench/clustering/distance/Makefile.am | 153 ++
.../green/bench/clustering/distance/distance.cc | 842 +++++++
.../green/demo/clustering/kmean1d/Makefile.am | 153 ++
.../green/demo/clustering/kmean1d/kmean1d.cc | 258 +++
.../green/demo/clustering/kmean2d/Makefile.am | 153 ++
.../green/demo/clustering/kmean2d/kmean2d.cc | 278 +++
.../green/demo/clustering/kmean3d/Makefile.am | 153 ++
.../green/demo/clustering/kmean3d/kmean3d.cc | 265 +++
.../green/demo/clustering/kmean_rgb/Makefile.am | 153 ++
.../green/demo/clustering/kmean_rgb/kmean_rgb.cc | 239 ++
.../histo1d => scribo/sandbox/green}/gaussian.sh | 0
.../histo2d => scribo/sandbox/green}/gaussian2d.sh | 0
scribo/sandbox/green/mln/accu/stat/histo1d.hh | 337 +++
scribo/sandbox/green/mln/accu/stat/histo2d.hh | 346 +++
scribo/sandbox/green/mln/accu/stat/histo3d_hsl.hh | 388 ++++
scribo/sandbox/green/mln/accu/stat/histo3d_rgb.hh | 345 +++
scribo/sandbox/green/mln/clustering/k_mean.hh | 785 +++++++
scribo/sandbox/green/mln/clustering/kmean1d.hh | 1082 +++++++++
scribo/sandbox/green/mln/clustering/kmean2d.hh | 1344 +++++++++++
scribo/sandbox/green/mln/clustering/kmean3d.hh | 1345 +++++++++++
scribo/sandbox/green/mln/clustering/kmean_rgb.hh | 1042 +++++++++
scribo/sandbox/green/mln/display/display_histo.hh | 180 ++
scribo/sandbox/green/mln/display/project_histo.hh | 536 +++++
scribo/sandbox/green/mln/fun/p2b/achromatic.hh | 112 +
.../sandbox/green/mln/fun/p2b/component_equals.hh | 99 +
scribo/sandbox/green/mln/fun/v2v/achromatism.hh | 64 +
.../sandbox/green/mln/fun/v2v/hue_concentration.hh | 100 +
.../green/mln/fun/v2v/int_u16_to_int_u14.hh | 0
.../sandbox/green/mln/fun/v2v/log.hh | 0
scribo/sandbox/green/mln/fun/v2v/rg_to_rgb.hh | 119 +
scribo/sandbox/green/mln/fun/v2v/rgb8_to_int_u8.hh | 71 +
scribo/sandbox/green/mln/fun/v2v/rgb8_to_rgbn.hh | 119 +
.../green/mln/fun/v2v/rgb_to_achromatism_map.hh | 77 +
scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh | 149 ++
scribo/sandbox/green/mln/fun/v2v/rgb_to_hue_map.hh | 96 +
scribo/sandbox/green/mln/fun/v2v/rgb_to_rg.hh | 109 +
.../green/mln/fun/v2v/rgb_to_saturation_map.hh | 83 +
.../sandbox/green/mln/fun/v2v/rgb_to_value_map.hh | 75 +
scribo/sandbox/green/mln/img_path.hh | 239 ++
scribo/sandbox/green/mln/io/plot/save_image_sh.hh | 1090 +++++++++
scribo/sandbox/green/mln/math/ceil.hh | 64 +
scribo/sandbox/green/mln/math/floor.hh | 64 +
scribo/sandbox/green/mln/value/hsv.hh | 424 ++++
scribo/sandbox/green/mln/value/rg.hh | 175 ++
scribo/sandbox/green/ok/mln/accu/histo/histo1d.hh | 334 +++
.../sandbox/green/ok/mln/accu/histo}/histo2d.hh | 0
.../sandbox/green/ok/mln/accu/histo/histo3d.hh | 0
scribo/sandbox/green/ok/mln/img_path.hh | 239 ++
.../sandbox/green/ok/test/accu/histo}/gaussian.sh | 0
scribo/sandbox/green/ok/test/accu/histo/histo1d | Bin 0 -> 802920 bytes
scribo/sandbox/green/ok/test/accu/histo/histo1d.cc | 726 ++++++
scribo/sandbox/green/test_labelling.cc | 336 +++
scribo/sandbox/green/test_labelling_2.cc | 342 +++
scribo/sandbox/green/test_labelling_3.cc | 463 ++++
.../green/tests/accu/stat/histo1d/Makefile.am | 153 ++
.../green/tests/accu/stat/histo1d/histo1d.cc | 507 +++++
.../green/tests/accu/stat/histo3d_hsl/Makefile.am | 153 ++
.../tests/accu/stat/histo3d_hsl/histo3d_hsl.cc | 391 ++++
.../green/tests/accu/stat/histo3d_rgb/Makefile.am | 153 ++
.../tests/accu/stat/histo3d_rgb/histo3d_rgb.cc | 397 ++++
.../green/tests/clustering/k_mean/Makefile.am | 153 ++
.../green/tests/clustering/k_mean/k_mean.cc | 547 +++++
.../green/tests/clustering/kmean1d/Makefile.am | 0
.../green/tests/clustering/kmean1d/kmean1d.cc | 0
.../green/tests/io/plot/save_image_sh/Makefile.am | 153 ++
.../tests/io/plot/save_image_sh/save_image_sh.cc | 774 +++++++
.../green/use/accu/stat/histo1d/Makefile.am | 153 ++
.../sandbox/green/use/accu/stat/histo1d/histo1d.cc | 49 +
.../green/use/accu/stat/histo2d/Makefile.am | 153 ++
.../sandbox/green/use/accu/stat/histo2d/histo2d.cc | 58 +
.../green/use/accu/stat/histo3d_hsl/Makefile.am | 153 ++
.../green/use/accu/stat/histo3d_hsl/histo3d_hsl.cc | 59 +
.../green/use/accu/stat/histo3d_rgb/Makefile.am | 153 ++
.../green/use/accu/stat/histo3d_rgb/histo3d_rgb.cc | 57 +
.../green/use/clustering/k_mean/Makefile.am | 153 ++
.../sandbox/green/use/clustering/k_mean/k_mean.cc | 55 +
.../green/use/clustering/kmean1d/Makefile.am | 153 ++
.../green/use/clustering/kmean1d/kmean1d.cc | 50 +
.../green/use/clustering/kmean2d/Makefile.am | 153 ++
.../green/use/clustering/kmean2d/kmean2d.cc | 61 +
.../green/use/clustering/kmean3d/Makefile.am | 153 ++
.../green/use/clustering/kmean3d/kmean3d.cc | 63 +
.../green/use/clustering/kmean_rgb/Makefile.am | 153 ++
.../green/use/clustering/kmean_rgb/kmean_rgb.cc | 63 +
.../green/use/fun/v2v/rg_to_rgb/Makefile.am | 153 ++
.../green/use/fun/v2v/rg_to_rgb/rg_to_rgb.cc | 68 +
.../green/use/fun/v2v/rgb8_to_rgbn/Makefile.am | 153 ++
.../green/use/fun/v2v/rgb8_to_rgbn/rgb8_to_rgbn.cc | 57 +
.../green/use/fun/v2v/rgb_to_rg/Makefile.am | 153 ++
.../green/use/fun/v2v/rgb_to_rg/rgb_to_rg.cc | 58 +
.../green/use/io/plot/save_image_sh/Makefile.am | 153 ++
.../use/io/plot/save_image_sh/save_image_sh.cc | 53 +
scribo/sandbox/green/use/value/rg/Makefile.am | 153 ++
scribo/sandbox/green/use/value/rg/rg.cc | 58 +
scribo/sandbox/z/white_spaces/hom_sep.cc | 133 ++
.../sandbox/z/white_spaces/white_space_closing.cc | 123 +
scribo/sandbox/z/white_spaces/white_spaces.cc | 842 +++++++
scribo/scribo.mk | 9 +-
scribo/scribo/all.hh | 53 +
scribo/scribo/binarization/all.hh | 55 +
scribo/scribo/binarization/global_threshold.hh | 90 +
.../scribo/binarization/global_threshold_auto.hh | 168 ++
.../binarization/internal/first_pass_functor.hh | 173 ++
scribo/scribo/binarization/local_threshold.hh | 218 ++
scribo/scribo/binarization/sauvola.hh | 234 ++
scribo/scribo/binarization/sauvola_ms.hh | 988 +++++++++
scribo/scribo/binarization/sauvola_ms_split.hh | 168 ++
.../scribo/binarization/sauvola_threshold_image.hh | 616 ++++++
.../binarization/sauvola_threshold_image_debug.hh | 421 ++++
scribo/scribo/canvas/integral_browsing.hh | 422 ++++
scribo/scribo/convert/from_qimage.hh | 93 +
scribo/scribo/core/all.hh | 49 +
scribo/{ => scribo}/core/central_sites.hh | 0
scribo/scribo/core/component_info.hh | 203 ++
scribo/scribo/core/component_set.hh | 606 +++++
scribo/scribo/core/concept/dmax_functor.hh | 50 +
scribo/{ => scribo}/core/concept/link_functor.hh | 0
scribo/scribo/core/def/lbl_type.hh | 48 +
scribo/scribo/core/erase_objects.hh | 86 +
scribo/scribo/core/init_integral_image.hh | 96 +
scribo/scribo/core/line_info.hh | 937 ++++++++
scribo/scribo/core/line_set.hh | 421 ++++
scribo/scribo/core/macros.hh | 64 +
scribo/scribo/core/object_groups.hh | 262 +++
scribo/scribo/core/object_links.hh | 258 +++
scribo/scribo/core/tag/anchor.hh | 68 +
scribo/scribo/core/tag/component.hh | 121 +
scribo/scribo/core/tag/line.hh | 216 ++
scribo/scribo/debug/alignment_decision_image.hh | 185 ++
scribo/{ => scribo}/debug/all.hh | 0
scribo/scribo/debug/bboxes_enlarged_image.hh | 136 ++
scribo/scribo/debug/char_space_image.hh | 113 +
scribo/scribo/debug/decision_image.hh | 183 ++
scribo/scribo/debug/highlight_text_area.hh | 305 +++
scribo/scribo/debug/line_info_image.hh | 123 +
scribo/scribo/debug/links_decision_image.hh | 111 +
.../scribo/debug/looks_like_a_text_line_image.hh | 130 ++
scribo/scribo/debug/mean_and_base_lines_image.hh | 149 ++
scribo/scribo/debug/save_bboxes_image.hh | 174 ++
scribo/scribo/debug/save_comp_diff.hh | 105 +
scribo/{ => scribo}/debug/save_label_image.hh | 0
scribo/scribo/debug/save_linked_bboxes_image.hh | 277 +++
scribo/{ => scribo}/debug/save_table_image.hh | 0
.../scribo/debug/several_links_decision_image.hh | 179 ++
scribo/scribo/debug/text_areas_image.hh | 133 ++
scribo/scribo/debug/usage.hh | 84 +
scribo/{ => scribo}/draw/all.hh | 0
scribo/scribo/draw/bounding_box_links.hh | 340 +++
scribo/scribo/draw/bounding_boxes.hh | 117 +
scribo/scribo/draw/groups_bboxes.hh | 93 +
scribo/scribo/estim/object_groups_v_thickness.hh | 106 +
scribo/scribo/filter/all.hh | 50 +
scribo/scribo/filter/common/objects_photo.hh | 98 +
scribo/scribo/filter/internal/alignment_angle.hh | 156 ++
scribo/scribo/filter/internal/component_aligned.hh | 114 +
scribo/scribo/filter/internal/compute.hh | 147 ++
scribo/scribo/filter/object_groups_size_ratio.hh | 105 +
scribo/scribo/filter/object_groups_small.hh | 100 +
scribo/scribo/filter/object_groups_v_thickness.hh | 99 +
scribo/scribo/filter/object_groups_with_holes.hh | 341 +++
scribo/scribo/filter/object_links_bbox_h_ratio.hh | 95 +
scribo/scribo/filter/object_links_bbox_overlap.hh | 128 ++
scribo/scribo/filter/object_links_bbox_ratio.hh | 111 +
scribo/scribo/filter/object_links_bbox_w_ratio.hh | 95 +
.../scribo/filter/object_links_bottom_aligned.hh | 115 +
.../scribo/filter/object_links_center_aligned.hh | 109 +
scribo/scribo/filter/object_links_left_aligned.hh | 118 +
.../filter/object_links_non_aligned_simple.hh | 131 ++
scribo/scribo/filter/object_links_right_aligned.hh | 118 +
scribo/scribo/filter/object_links_top_aligned.hh | 114 +
scribo/scribo/filter/objects_h_thick.hh | 192 ++
scribo/scribo/filter/objects_h_thin.hh | 196 ++
scribo/scribo/filter/objects_large.hh | 106 +
scribo/scribo/filter/objects_size_ratio.hh | 125 ++
scribo/scribo/filter/objects_small.hh | 150 ++
scribo/scribo/filter/objects_thick.hh | 191 ++
scribo/scribo/filter/objects_thin.hh | 191 ++
scribo/scribo/filter/objects_v_thick.hh | 192 ++
scribo/scribo/filter/objects_v_thin.hh | 196 ++
scribo/scribo/filter/objects_with_holes.hh | 466 ++++
scribo/scribo/fun/v2b/label_to_bool.hh | 66 +
scribo/scribo/fun/v2b/objects_large_filter.hh | 128 ++
scribo/scribo/fun/v2b/objects_small_filter.hh | 128 ++
scribo/scribo/io/text_boxes/save.hh | 102 +
scribo/scribo/io/xml/save.hh | 253 +++
scribo/scribo/make/all.hh | 49 +
scribo/{ => scribo}/make/debug_filename.hh | 0
scribo/{ => scribo}/make/influence_zone_graph.hh | 0
scribo/scribo/postprocessing/all.hh | 48 +
scribo/scribo/postprocessing/fill_object_holes.hh | 408 ++++
scribo/scribo/preprocessing/all.hh | 63 +
scribo/scribo/preprocessing/crop.hh | 84 +
.../preprocessing/crop_without_localization.hh | 99 +
scribo/scribo/preprocessing/denoise.hh | 106 +
scribo/scribo/preprocessing/denoise_bg.hh | 159 ++
scribo/scribo/preprocessing/denoise_fg.hh | 118 +
scribo/scribo/preprocessing/deskew.hh | 439 ++++
scribo/scribo/preprocessing/deskew_crop.hh | 187 ++
.../scribo/preprocessing/homogeneous_contrast.hh | 119 +
scribo/scribo/preprocessing/rotate_90.hh | 163 ++
scribo/scribo/preprocessing/split_bg_fg.hh | 341 +++
scribo/{ => scribo}/primitive/all.hh | 0
scribo/scribo/primitive/extract/all.hh | 68 +
scribo/{ => scribo}/primitive/extract/canvas.hh | 0
scribo/{ => scribo}/primitive/extract/cells.hh | 0
scribo/scribo/primitive/extract/components.hh | 147 ++
.../primitive/extract/horizontal_separators.hh | 95 +
.../scribo/primitive/extract/lines_discontinued.hh | 152 ++
.../primitive/extract/lines_h_discontinued.hh | 133 ++
scribo/scribo/primitive/extract/lines_h_pattern.hh | 126 ++
scribo/scribo/primitive/extract/lines_h_single.hh | 202 ++
scribo/scribo/primitive/extract/lines_h_thick.hh | 129 ++
.../primitive/extract/lines_h_thick_and_single.hh | 151 ++
scribo/scribo/primitive/extract/lines_pattern.hh | 298 +++
scribo/scribo/primitive/extract/lines_thick.hh | 137 ++
.../primitive/extract/lines_v_discontinued.hh | 131 ++
scribo/scribo/primitive/extract/lines_v_pattern.hh | 109 +
scribo/scribo/primitive/extract/lines_v_single.hh | 198 ++
scribo/scribo/primitive/extract/lines_v_thick.hh | 129 ++
.../primitive/extract/lines_v_thick_and_single.hh | 150 ++
scribo/scribo/primitive/extract/separators.hh | 98 +
.../primitive/extract/vertical_separators.hh | 95 +
scribo/scribo/primitive/group/all.hh | 58 +
scribo/scribo/primitive/group/apply.hh | 138 ++
scribo/scribo/primitive/group/from_double_link.hh | 125 ++
scribo/scribo/primitive/group/from_graph.hh | 180 ++
scribo/scribo/primitive/group/from_single_link.hh | 111 +
scribo/scribo/primitive/internal/all.hh | 57 +
.../scribo/primitive/internal/find_graph_link.hh | 115 +
scribo/scribo/primitive/internal/find_root.hh | 74 +
.../primitive/internal/have_link_valid.hh | 0
scribo/scribo/primitive/internal/is_link_valid.hh | 81 +
scribo/scribo/primitive/internal/rd.hh | 192 ++
.../primitive/internal/update_graph_link.hh | 0
scribo/scribo/primitive/link/all.hh | 61 +
scribo/scribo/primitive/link/compute.hh | 132 ++
scribo/scribo/primitive/link/compute_several.hh | 117 +
.../primitive/link/internal/compute_anchor.hh | 252 +++
.../scribo/primitive/link/internal/dmax_default.hh | 83 +
.../primitive/link/internal/dmax_functor_base.hh | 102 +
.../link/internal/dmax_width_and_height.hh | 98 +
.../primitive/link/internal/dmax_width_only.hh | 95 +
scribo/scribo/primitive/link/internal/find_link.hh | 114 +
.../primitive/link/internal/find_several_links.hh | 137 ++
.../primitive/link/internal/link_functor_base.hh | 516 +++++
.../link/internal/link_several_dmax_base.hh | 291 +++
.../link/internal/link_single_dmax_base.hh | 167 ++
.../link/internal/link_single_dmax_ratio_base.hh | 189 ++
scribo/scribo/primitive/link/merge_double_link.hh | 125 ++
scribo/scribo/primitive/link/with_graph.hh | 121 +
scribo/scribo/primitive/link/with_rag.hh | 103 +
.../scribo/primitive/link/with_several_graphes.hh | 127 ++
.../primitive/link/with_several_left_links.hh | 141 ++
.../link/with_several_right_closest_links.hh | 207 ++
.../primitive/link/with_several_right_links.hh | 143 ++
.../link/with_several_right_links_overlap.hh | 154 ++
.../scribo/primitive/link/with_single_down_link.hh | 181 ++
.../scribo/primitive/link/with_single_left_link.hh | 160 ++
.../link/with_single_left_link_dmax_ratio.hh | 221 ++
.../primitive/link/with_single_right_link.hh | 159 ++
.../link/with_single_right_link_bottom.hh | 162 ++
.../link/with_single_right_link_dmax_ratio.hh | 215 ++
.../primitive/link/with_single_right_link_top.hh | 163 ++
.../scribo/primitive/link/with_single_up_link.hh | 181 ++
.../primitive/regroup/from_single_left_link.hh | 144 ++
.../regroup/from_single_left_link_wrt_h_ratio.hh | 153 ++
scribo/scribo/primitive/remove/separators.hh | 114 +
scribo/scribo/subsampling/bilinear.hh | 119 +
scribo/scribo/subsampling/integral.hh | 420 ++++
scribo/scribo/subsampling/integral_single_image.hh | 460 ++++
scribo/scribo/table/align_lines_horizontaly.hh | 106 +
scribo/{ => scribo}/table/align_lines_verticaly.hh | 0
scribo/{ => scribo}/table/all.hh | 0
.../{ => scribo}/table/connect_horizontal_lines.hh | 0
.../{ => scribo}/table/connect_vertical_lines.hh | 0
scribo/scribo/table/erase.hh | 99 +
scribo/scribo/table/extract.hh | 118 +
scribo/scribo/table/internal/align_lines.hh | 199 ++
scribo/{ => scribo}/table/internal/all.hh | 0
scribo/scribo/table/internal/connect_lines.hh | 125 ++
scribo/scribo/table/internal/repair_lines.hh | 197 ++
scribo/scribo/table/rebuild.hh | 158 ++
.../{ => scribo}/table/repair_horizontal_lines.hh | 0
scribo/{ => scribo}/table/repair_vertical_lines.hh | 0
scribo/{ => scribo}/text/all.hh | 0
scribo/scribo/text/clean.hh | 127 ++
scribo/scribo/text/clean_inplace.hh | 147 ++
scribo/scribo/text/extract_lines.hh | 137 ++
scribo/scribo/text/look_like_text_lines.hh | 116 +
scribo/scribo/text/merging.hh | 922 ++++++++
scribo/scribo/text/recognition.hh | 269 +++
scribo/scribo/toolchain/nepomuk/text_extraction.hh | 163 ++
scribo/scribo/toolchain/text_in_doc.hh | 294 +++
scribo/scribo/upsampling/bs2x.hh | 147 ++
scribo/scribo/upsampling/eagle.hh | 149 ++
scribo/src/Makefile.am | 57 +-
scribo/src/README | 39 +
scribo/src/afp/components.hh | 228 ++
scribo/src/afp/link.hh | 178 ++
scribo/src/afp/regroup.hh | 119 +
scribo/src/binarization/Makefile.am | 80 +-
scribo/src/binarization/fg_sauvola_ms.cc | 108 +
.../src/binarization/pgm_global_threshold_auto.cc | 63 +
scribo/src/binarization/pgm_sauvola.cc | 80 +
scribo/src/binarization/pgm_sauvola_ms.cc | 111 +
scribo/src/binarization/ppm_fg_sauvola_ms.cc | 128 ++
scribo/src/binarization/ppm_sauvola.cc | 79 +
scribo/src/binarization/ppm_sauvola_ms.cc | 117 +
scribo/src/binarization/ppm_sauvola_ms_split.cc | 125 ++
scribo/src/binarization/sauvola.cc | 43 +-
scribo/src/binarization/sauvola_debug.cc | 116 +
scribo/src/binarization/sauvola_ms.cc | 398 +---
scribo/src/binarization/sauvola_ms_debug.cc | 147 ++
scribo/src/binarization/sauvola_ms_split.cc | 123 +
scribo/src/binarization/sauvola_pgm.cc | 63 -
scribo/src/binarization/simple.cc | 61 -
scribo/src/contest/Makefile.am | 23 +
scribo/src/contest/hdibco-2010/Makefile.am | 25 +
.../src/contest/hdibco-2010/sauvola_ms_hdibco.cc | 85 +
scribo/src/debug/Makefile.am | 39 +-
scribo/src/debug/highlight_text_area.cc | 97 +
.../src/debug/show_info_median_inter_characters.cc | 84 +
scribo/src/debug/show_info_x_height.cc | 79 +
.../src/debug/show_left_right_links_validation.cc | 122 -
scribo/src/debug/show_links_bbox_h_ratio.cc | 24 +-
scribo/src/debug/show_links_bbox_overlap.cc | 19 +-
scribo/src/debug/show_links_bottom_aligned.cc | 30 +-
scribo/src/debug/show_links_center_aligned.cc | 19 +-
.../show_links_left_right_links_validation.cc | 119 +
scribo/src/debug/show_links_non_h_aligned.cc | 25 +-
scribo/src/debug/show_links_several_right.cc | 27 +-
.../src/debug/show_links_several_right_overlap.cc | 79 +-
scribo/src/debug/show_links_single_down.cc | 158 ++
.../debug/show_links_single_down_left_aligned.cc | 101 +
.../debug/show_links_single_down_right_aligned.cc | 102 +
scribo/src/debug/show_links_single_left.cc | 40 +-
.../src/debug/show_links_single_left_dmax_ratio.cc | 48 +-
scribo/src/debug/show_links_single_right.cc | 41 +-
.../debug/show_links_single_right_dmax_ratio.cc | 40 +-
scribo/src/debug/show_links_single_up.cc | 160 ++
.../src/debug/show_links_single_up_left_aligned.cc | 103 +
.../debug/show_links_single_up_right_aligned.cc | 101 +
scribo/src/debug/show_links_top_aligned.cc | 34 +-
scribo/src/debug/show_objects_large.cc | 27 +-
scribo/src/debug/show_objects_large_small.cc | 41 +-
scribo/src/debug/show_objects_small.cc | 27 +-
scribo/src/debug/show_objects_thick.cc | 26 +-
scribo/src/debug/show_objects_thin.cc | 24 +-
scribo/src/filter/Makefile.am | 6 +-
scribo/src/filter/objects_large.cc | 30 +-
scribo/src/filter/objects_small.cc | 22 +-
scribo/src/filter/objects_thick.cc | 30 +-
scribo/src/filter/objects_thin.cc | 30 +-
scribo/src/filter/objects_with_holes.cc | 75 +
scribo/src/filter/objects_with_holes_pgm.cc | 76 +
scribo/src/misc/negate.cc | 5 +-
scribo/src/misc/superpose.cc | 7 +-
scribo/src/multi_scale/Makefile.am | 22 -
scribo/src/multi_scale/find_lines.cc | 180 --
scribo/src/pbm_text_in_doc.cc | 130 ++
scribo/src/postprocessing/Makefile.am | 26 +
scribo/src/postprocessing/fill_object_holes.cc | 67 +
scribo/src/preprocessing/Makefile.am | 60 +-
scribo/src/preprocessing/denoise_bg.cc | 67 +
scribo/src/preprocessing/denoise_fg.cc | 66 +
scribo/src/preprocessing/homogeneous_contrast.cc | 44 +
scribo/src/preprocessing/preprocess.cc | 27 +-
scribo/src/preprocessing/rotate.cc | 68 +
scribo/src/preprocessing/rotate_90.cc | 77 +
scribo/src/preprocessing/split_bg_fg.cc | 19 +-
scribo/src/preprocessing/subsample.cc | 67 +
scribo/src/preprocessing/to_pgm.cc | 46 +
scribo/src/preprocessing/unskew.cc | 22 +-
.../extract/extract_discontinued_hlines.cc | 26 +-
.../extract/extract_discontinued_lines.cc | 47 +-
.../extract/extract_discontinued_vlines.cc | 27 +-
.../src/primitive/extract/extract_thick_hlines.cc | 25 +-
.../src/primitive/extract/extract_thick_vlines.cc | 25 +-
scribo/src/primitive/extract/lines_pattern.cc | 6 +-
.../src/primitive/find/find_discontinued_lines.cc | 18 +-
scribo/src/primitive/find/find_pattern_lines.cc | 10 +-
scribo/src/primitive/find/find_single_lines.cc | 35 +-
.../primitive/find/find_thick_and_single_lines.cc | 29 +-
scribo/src/primitive/find/find_thick_lines.cc | 20 +-
scribo/src/primitive/group/Makefile.am | 15 +-
.../src/primitive/group/group_from_double_link.cc | 62 +-
.../group/group_from_double_several_links.cc | 34 +-
.../group/group_from_several_left_links.cc | 32 +-
.../src/primitive/group/group_from_single_link.cc | 62 +-
scribo/src/table/erase.cc | 15 +-
scribo/src/table/extract.cc | 7 +-
scribo/src/text/Makefile.am | 28 +-
scribo/src/text/cleantxt.cc | 45 +-
scribo/src/text/pbm_lines_recognition.cc | 107 +
scribo/src/text/pbm_recognition.cc | 75 +
scribo/src/text/recognition.cc | 101 -
scribo/src/text_in_doc.cc | 304 ---
scribo/src/text_in_doc_ppm.cc | 322 ---
scribo/src/text_in_doc_preprocess.cc | 103 +
scribo/src/text_in_photo.cc | 250 ---
scribo/src/text_in_photo_invert.cc | 245 --
scribo/src/text_in_photo_ppm.cc | 318 ---
scribo/src/text_in_picture.cc | 631 ++++++
scribo/src/text_recognition_in_picture.cc | 378 ++++
scribo/table/align_lines_horizontaly.hh | 101 -
scribo/table/erase.hh | 99 -
scribo/table/extract.hh | 117 -
scribo/table/internal/align_lines.hh | 196 --
scribo/table/internal/connect_lines.hh | 125 --
scribo/table/internal/repair_lines.hh | 197 --
scribo/table/rebuild.hh | 157 --
scribo/tests/Makefile.am | 8 +-
scribo/tests/binarization/Makefile.am | 30 +
scribo/tests/binarization/global_threshold.cc | 24 +
scribo/tests/binarization/local_threshold.cc | 29 +
scribo/tests/core/Makefile.am | 25 +
scribo/tests/filter/Makefile.am | 3 +
scribo/tests/filter/objects_with_holes.cc | 62 +
scribo/tests/filter/small_and_large_bboxes.cc | 67 +-
scribo/tests/img/text_to_group.pgm | Bin 0 -> 3053 bytes
scribo/tests/img/wildly.pbm | Bin 0 -> 2208 bytes
scribo/tests/preprocessing/Makefile.am | 10 +-
scribo/tests/preprocessing/crop.cc | 52 +
.../preprocessing/crop_without_localization.cc | 56 +
scribo/tests/preprocessing/deskew.cc | 52 +
scribo/tests/preprocessing/rotate_90.cc | 59 +
scribo/tests/preprocessing/unskew.cc | 44 -
scribo/tests/table/extract_lines_with_rank.cc | 5 +-
scribo/tests/table/repair_lines.cc | 5 +-
scribo/tests/tests.mk | 23 +-
scribo/tests/toolchain/Makefile.am | 20 +
scribo/tests/toolchain/nepomuk/Makefile.am | 45 +
scribo/tests/toolchain/nepomuk/text_extraction.cc | 44 +
scribo/tests/unit_test/Makefile.am | 27 +-
scribo/tests/unit_test/build_unit_test.sh | 85 -
scribo/tests/unit_test/cond_tests_qt | 1 +
.../tests/unit_test/cond_tests_qt_tesseract_tiff | 1 +
scribo/tests/unit_test/cond_tests_tesseract_tiff | 1 +
scribo/tests/unit_test/disabled_tests | 3 +-
scribo/tests/unit_test/unit-tests.mk | 248 ++-
scribo/text/clean.hh | 156 --
scribo/text/extract_lines.hh | 152 --
scribo/text/recognition.hh | 193 --
scribo/util/all.hh | 46 -
scribo/util/text.hh | 278 ---
1181 files changed, 109141 insertions(+), 22401 deletions(-)
create mode 100644 build-aux/autotroll.mk
create mode 100644 m4/autotroll.m4
create mode 100644 m4/boost.m4
create mode 100644 m4/pkg.m4
delete mode 100644 milena/img/BUG_lean_ascii.pgm.gz
create mode 100644 milena/img/picasso.ppm
create mode 100644 milena/mln/convert/to_qimage.hh
create mode 100644 milena/mln/convert/to_qimage_nocopy.hh
create mode 100644 milena/mln/data/split.hh
create mode 100644 milena/mln/debug/mosaic.hh
create mode 100644 milena/mln/debug/z_order.hh
create mode 100644 milena/mln/draw/box_plain.hh
create mode 100644 milena/mln/draw/dashed_line.hh
create mode 100644 milena/mln/fun/n2v/all.hh
create mode 100644 milena/mln/fun/n2v/white_gaussian.hh
create mode 100644 milena/mln/fun/v2v/qt_rgb_to_int_u.hh
create mode 100644 milena/mln/fun/v2v/rgb_to_int_u.hh
create mode 100644 milena/mln/geom/horizontal_symmetry.hh
create mode 100644 milena/mln/geom/nslices.hh
delete mode 100644 milena/mln/geom/nslis.hh
create mode 100644 milena/mln/geom/vertical_symmetry.hh
create mode 100644 milena/mln/histo/equalize.hh
create mode 100644 milena/mln/io/dicom/get_header.hh
create mode 100644 milena/mln/io/dump/get_header.hh
create mode 100644 milena/mln/io/raw/all.hh
create mode 100644 milena/mln/io/raw/get_header.hh
create mode 100644 milena/mln/io/raw/load.hh
create mode 100644 milena/mln/io/raw/save.hh
create mode 100644 milena/mln/labeling/value_and_compute.hh
create mode 100644 milena/mln/subsampling/antialiased.hh
create mode 100644 milena/mln/value/internal/make_generic_name.hh
create mode 100644 milena/mln/value/qt/rgb32.hh
create mode 100644 milena/mln/win/sline3d.hh
create mode 100644 milena/sandbox/bench/README_CFLAGS
create mode 100644 milena/sandbox/bench/extract_vertical_lines.cc
create mode 100644 milena/sandbox/bench/fast_components_and_attributes.cc
create mode 100644 milena/sandbox/bench/fast_rows.cc
create mode 100644 milena/sandbox/bench/fast_tiles.cc
create mode 100644 milena/sandbox/bench/fastest.cc
create mode 100644 milena/sandbox/bin/labeling/colorize.cc
create mode 100644 milena/sandbox/bin/pgm_to_pbm.cc
create mode 100644 milena/sandbox/bin/ppm_negate.cc
create mode 100644 milena/sandbox/green/bench/transform/distance/Makefile.am
create mode 100644 milena/sandbox/green/bench/transform/distance/distance.cc
create mode 100644 milena/sandbox/green/demo/annotating/bic/Makefile.am
create mode 100644 milena/sandbox/green/demo/annotating/bic/bic.cc
create mode 100644 milena/sandbox/green/demo/annotating/hsv/Makefile.am
create mode 100644 milena/sandbox/green/demo/annotating/hsv/hsv.cc
create mode 100644 milena/sandbox/green/demo/annotating/lep/Makefile.am
create mode 100644 milena/sandbox/green/demo/annotating/lep/lep.cc
create mode 100644 milena/sandbox/green/demo/annotating/nb_color/Makefile.am
create mode 100644 milena/sandbox/green/demo/annotating/nb_color/nb_color.cc
create mode 100644 milena/sandbox/green/demo/annotating/project/Makefile.am
create mode 100644 milena/sandbox/green/demo/annotating/project/project.cc
create mode 100644 milena/sandbox/green/demo/annotating/rgb_64/Makefile.am
create mode 100644 milena/sandbox/green/demo/annotating/rgb_64/rgb_64.cc
create mode 100644 milena/sandbox/green/demo/annotating/rgb_64_9/Makefile.am
create mode 100644 milena/sandbox/green/demo/annotating/rgb_64_9/rgb_64_9.cc
create mode 100644 milena/sandbox/green/demo/annotating/stddev_color/Makefile.am
create mode 100644 milena/sandbox/green/demo/annotating/stddev_color/stddev_color.cc
create mode 100644 milena/sandbox/green/demo/annotating/stddev_color_16/Makefile.am
create mode 100644 milena/sandbox/green/demo/annotating/stddev_color_16/stddev_color_16.cc
copy milena/sandbox/green/demo/{accu/stat/histo2d => clustering/kmean_rgb}/Makefile.am (100%)
create mode 100644 milena/sandbox/green/demo/clustering/kmean_rgb/kmean_rgb.cc
create mode 100644 milena/sandbox/green/demo/labeling/regional_maxima/thresholds.txt
create mode 100644 milena/sandbox/green/doc/annotating/class.txt
create mode 100644 milena/sandbox/green/doc/annotating/syntheseMillet2008.txt
create mode 100644 milena/sandbox/green/doc/annotating/testMillet2008
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h0_input.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h2_mean.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h2_merge.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h3_mean.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h3_merge.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h4_mean.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h4_merge.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h5_mean.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/h5_merge.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i2_mean.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i2_merge.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i3_mean.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i3_merge.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i4_mean.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i4_merge.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i5_mean.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/i5_merge.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/l2_input.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/l3_input.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/l4_input.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/l5_input.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/reponse_theo.eml
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/s2_histo.txt
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/s3_histo.txt
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/s4_histo.txt
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/s5_histo.txt
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_method/synthese.txt
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h0_input.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q2.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q3.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q4.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q5.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q6.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q7.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_mean_q8.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q2.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q3.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q4.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q5.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q6.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q7.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/h5_merge_q8.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q2.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q3.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q4.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q5.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q6.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q7.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_mean_q8.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q2.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q3.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q4.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q5.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q6.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q7.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/i5_merge_q8.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q2.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q3.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q4.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q5.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q6.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q7.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/l5_input_q8.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q2.txt
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q3.txt
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q4.txt
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q5.txt
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q6.txt
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q7.txt
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/s5_histo_q8.txt
create mode 100644 milena/sandbox/green/doc/regional_maxima/cmp_quant/synthese.txt
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_all_q4.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_all_q5.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_thick_q4.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_thick_q5.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_thin_q4.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/colormap_thin_q5.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_all_q4.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_all_q5.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_thick_q4.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_thick_q5.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_thin_q4.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/histo_thin_q5.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_all_q4.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_all_q5.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_thick_q4.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_thick_q5.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_thin_q4.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/iz_thin_q5.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_all_q4.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_all_q5.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_thick_q4.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_thick_q5.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_thin_q4.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/labeled_thin_q5.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_all_q4.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_all_q5.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_thick_q4.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_thick_q5.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_thin_q4.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean3_thin_q5.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_all_q4.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_all_q5.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_thick_q4.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_thick_q5.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_thin_q4.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mean4_thin_q5.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mp00411c.ppm.gz
create mode 100755 milena/sandbox/green/doc/regional_maxima/mp00411c/mp00411c.sh.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mp00411c_thick.pbm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/mp00411c_thin.pbm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_all_q4.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_all_q5.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_thick_q4.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_thick_q5.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_thin_q4.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/opened_thin_q5.dump.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_all_q4.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_all_q5.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_thick_q4.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_thick_q5.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_thin_q4.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj1_thin_q5.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_all_q4.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_all_q5.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_thick_q4.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_thick_q5.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_thin_q4.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj2_thin_q5.pgm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_all_q4.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_all_q5.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_thick_q4.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_thick_q5.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_thin_q4.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj3_thin_q5.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_all_q4.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_all_q5.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_thick_q4.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_thick_q5.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_thin_q4.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/proj4_thin_q5.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/quant_q4.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/quant_q5.ppm.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_all_q4.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_all_q5.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_thick_q4.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_thick_q5.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_thin_q4.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats3_thin_q5.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_all_q4.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_all_q5.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_thick_q4.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_thick_q5.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_thin_q4.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/stats4_thin_q5.txt.gz
create mode 100644 milena/sandbox/green/doc/regional_maxima/mp00411c/synthese.txt.gz
create mode 100644 milena/sandbox/green/exp/annotating/achromastism/Makefile.am
create mode 100644 milena/sandbox/green/exp/annotating/achromastism/achromastism.cc
create mode 100644 milena/sandbox/green/exp/annotating/achromastism/text-color.txt
create mode 100644 milena/sandbox/green/exp/annotating/achromastism/text-img.txt
create mode 100644 milena/sandbox/green/exp/annotating/achromastism/text-only.txt
create mode 100644 milena/sandbox/green/exp/annotating/bench/Makefile.am
create mode 100644 milena/sandbox/green/exp/annotating/bench/bench.cc
create mode 100644 milena/sandbox/green/exp/annotating/error/Makefile.am
create mode 100644 milena/sandbox/green/exp/annotating/error/error.cc
create mode 100644 milena/sandbox/green/exp/annotating/histo/Makefile.am
create mode 100644 milena/sandbox/green/exp/annotating/histo/histo.cc
create mode 100644 milena/sandbox/green/exp/annotating/hsv/Makefile.am
create mode 100644 milena/sandbox/green/exp/annotating/hsv/hsv.cc
create mode 100644 milena/sandbox/green/exp/annotating/hue/Makefile.am
create mode 100644 milena/sandbox/green/exp/annotating/hue/hue.cc
create mode 100644 milena/sandbox/green/exp/annotating/hue/text-color.txt
create mode 100644 milena/sandbox/green/exp/annotating/hue/text-img.txt
create mode 100644 milena/sandbox/green/exp/annotating/hue/text-only.txt
create mode 100644 milena/sandbox/green/exp/annotating/nb_color/Makefile.am
create mode 100644 milena/sandbox/green/exp/annotating/nb_color/nb_color.cc
create mode 100644 milena/sandbox/green/exp/annotating/saturation/Makefile.am
create mode 100644 milena/sandbox/green/exp/annotating/saturation/saturation.cc
create mode 100644 milena/sandbox/green/exp/annotating/saturation/text-color.txt
create mode 100644 milena/sandbox/green/exp/annotating/saturation/text-img.txt
create mode 100644 milena/sandbox/green/exp/annotating/saturation/text-only.txt
create mode 100644 milena/sandbox/green/exp/annotating/stddev_color/Makefile.am
create mode 100644 milena/sandbox/green/exp/annotating/stddev_color/stddev_color.cc
create mode 100644 milena/sandbox/green/exp/annotating/stddev_color_16/Makefile.am
create mode 100644 milena/sandbox/green/exp/annotating/stddev_color_16/stddev_color_16.cc
create mode 100644 milena/sandbox/green/exp/annotating/value/Makefile.am
create mode 100644 milena/sandbox/green/exp/annotating/value/text-color.txt
create mode 100644 milena/sandbox/green/exp/annotating/value/text-img.txt
create mode 100644 milena/sandbox/green/exp/annotating/value/text-only.txt
create mode 100644 milena/sandbox/green/exp/annotating/value/value.cc
create mode 100644 milena/sandbox/green/exp/labeling/regional_maxima/Makefile.am
create mode 100644 milena/sandbox/green/exp/labeling/regional_maxima/regional_maxima.cc
create mode 100644 milena/sandbox/green/mln/clustering/kmean_rgb.hh
create mode 100644 milena/sandbox/green/mln/fun/p2b/achromatic.hh
create mode 100644 milena/sandbox/green/mln/fun/p2b/component_equals.hh
create mode 100644 milena/sandbox/green/mln/fun/v2v/achromatism.hh
create mode 100644 milena/sandbox/green/mln/fun/v2v/hue_concentration.hh
create mode 100644 milena/sandbox/green/mln/fun/v2v/rgb8_to_int_u8.hh
create mode 100644 milena/sandbox/green/mln/fun/v2v/rgb_to_achromatism_map.hh
create mode 100644 milena/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh
create mode 100644 milena/sandbox/green/mln/fun/v2v/rgb_to_hue_map.hh
create mode 100644 milena/sandbox/green/mln/fun/v2v/rgb_to_saturation_map.hh
create mode 100644 milena/sandbox/green/mln/fun/v2v/rgb_to_value_map.hh
create mode 100644 milena/sandbox/green/mln/math/ceil.hh
create mode 100644 milena/sandbox/green/mln/math/floor.hh
create mode 100644 milena/sandbox/green/mln/value/hsv.hh
create mode 100644 milena/sandbox/green/tools/annotating/histo/Makefile.am
create mode 100644 milena/sandbox/green/tools/annotating/histo/histo.cc
create mode 100644 milena/sandbox/green/tools/annotating/iz/Makefile.am
create mode 100644 milena/sandbox/green/tools/annotating/iz/iz.cc
create mode 100644 milena/sandbox/green/tools/annotating/opening/Makefile.am
create mode 100644 milena/sandbox/green/tools/annotating/opening/opening.cc
create mode 100644 milena/sandbox/green/tools/annotating/regmax/Makefile.am
create mode 100644 milena/sandbox/green/tools/annotating/regmax/regmax.cc
create mode 100644 milena/sandbox/lazzara/scribo/binarization_naive/main.cc
create mode 100644 milena/sandbox/lazzara/scribo/binarization_naive/toto.cc
create mode 100644 milena/sandbox/lazzara/scribo/fill_holes/main.cc
create mode 100644 milena/sandbox/lazzara/scribo/separateurs_materialises/lines_pattern.cc
create mode 100644 milena/sandbox/lazzara/scribo/skeleton_crest/main.cc
create mode 100644 milena/tests/convert/to_qimage.cc
create mode 100644 milena/tests/convert/to_qimage_nocopy.cc
create mode 100644 milena/tests/core/site_set/box.cc
create mode 100644 milena/tests/data/paste_without_localization.cc
create mode 100644 milena/tests/data/split.cc
create mode 100644 milena/tests/fun/v2v/qt_rgb_to_int_u.cc
create mode 100644 milena/tests/geom/horizontal_symmetry.cc
create mode 100644 milena/tests/geom/nslices.cc
delete mode 100644 milena/tests/geom/nslis.cc
create mode 100644 milena/tests/geom/vertical_symmetry.cc
create mode 100644 milena/tests/subsampling/antialiased.cc
create mode 100644 milena/tests/unit_test/cond_tests_boost-preprocessor_boost-tuple
create mode 100644 milena/tests/unit_test/cond_tests_cfitsio
create mode 100644 milena/tests/unit_test/cond_tests_gdcm
create mode 100644 milena/tests/unit_test/cond_tests_magickxx
create mode 100644 milena/tests/unit_test/cond_tests_qt
create mode 100644 milena/tests/unit_test/cond_tests_tiff
create mode 100644 scribo/README
delete mode 100644 scribo/all.hh
delete mode 100644 scribo/binarization/binarize.hh
delete mode 100644 scribo/binarization/sauvola.hh
delete mode 100644 scribo/binarization/sauvola_threshold.hh
delete mode 100644 scribo/binarization/simple.hh
delete mode 100644 scribo/core/all.hh
delete mode 100644 scribo/core/erase_objects.hh
delete mode 100644 scribo/core/internal/link_functor_base.hh
delete mode 100644 scribo/core/macros.hh
delete mode 100644 scribo/core/object_groups.hh
delete mode 100644 scribo/core/object_image.hh
delete mode 100644 scribo/core/object_links.hh
delete mode 100644 scribo/debug/alignment_decision_image.hh
delete mode 100644 scribo/debug/decision_image.hh
delete mode 100644 scribo/debug/links_decision_image.hh
delete mode 100644 scribo/debug/save_bboxes_image.hh
delete mode 100644 scribo/debug/save_linked_bboxes_image.hh
delete mode 100644 scribo/debug/save_object_diff.hh
delete mode 100644 scribo/debug/several_links_decision_image.hh
delete mode 100644 scribo/debug/usage.hh
create mode 100644 scribo/demo/demat/demat.pro
create mode 100644 scribo/demo/demat/demat.qrc
create mode 100644 scribo/demo/demat/src/doc_type.hh
create mode 100644 scribo/demo/demat/src/main.cc
create mode 100644 scribo/demo/demat/src/main_window.cc
create mode 100644 scribo/demo/demat/src/main_window.hh
create mode 100644 scribo/demo/demat/src/mln_widgets.cc
create mode 100644 scribo/demo/demat/src/preprocessing_task.hh
create mode 100644 scribo/demo/demat/src/process_args.hh
create mode 100644 scribo/demo/demat/src/runner.cc
create mode 100644 scribo/demo/demat/src/runner.hh
create mode 100644 scribo/demo/demat/ui/main_window.ui
delete mode 100644 scribo/demo/demo.pro
copy {milena/sandbox/lazzara/igr/gui => scribo/demo/review}/Makefile.am (100%)
rename scribo/demo/{ => review}/icons/document-open.png (100%)
rename scribo/demo/{ => review}/icons/edit-find.png (100%)
rename scribo/demo/{ => review}/icons/format-indent-more.png (100%)
rename scribo/demo/{ => review}/icons/go-next.png (100%)
rename scribo/demo/{ => review}/icons/image-x-generic.png (100%)
rename scribo/demo/{ => review}/icons/list-add.png (100%)
rename scribo/demo/{ => review}/icons/ocr.png (100%)
rename scribo/demo/{ => review}/icons/text-x-generic.png (100%)
rename scribo/demo/{ => review}/icons/view-refresh.png (100%)
rename scribo/demo/{ => review}/icons/x-office-spreadsheet.png (100%)
create mode 100644 scribo/demo/review/review.pro
rename scribo/demo/{demo.qrc => review/review.qrc} (100%)
create mode 100644 scribo/demo/review/src/main.cc
create mode 100644 scribo/demo/review/src/mainwindow.cc
create mode 100644 scribo/demo/review/src/mainwindow.hh
rename scribo/demo/{ => review}/ui/mainwindow.ui (100%)
create mode 100644 scribo/demo/shared/icons/Symbols-Delete-icon.png
create mode 100644 scribo/demo/shared/icons/accept-icon.png
create mode 100644 scribo/demo/shared/icons/close.gif
create mode 100644 scribo/demo/shared/icons/crop-icon.png
create mode 100644 scribo/demo/shared/icons/image-add-icon.png
create mode 100644 scribo/demo/shared/icons/image-edit-icon.png
create mode 100644 scribo/demo/shared/icons/image-multi-icon.png
create mode 100644 scribo/demo/shared/icons/image-next-icon.png
create mode 100644 scribo/demo/shared/icons/image-remove-icon.png
create mode 100644 scribo/demo/shared/icons/next-icon.png
create mode 100644 scribo/demo/shared/icons/page-down-icon.png
create mode 100644 scribo/demo/shared/icons/page-search-icon.png
create mode 100644 scribo/demo/shared/icons/rotate_ccw.png
create mode 100644 scribo/demo/shared/icons/rotate_cw.png
create mode 100644 scribo/demo/shared/icons/search-add-icon.png
create mode 100644 scribo/demo/shared/icons/search-remove-icon.png
create mode 100644 scribo/demo/shared/shared.qrc
create mode 100644 scribo/demo/shared/src/bak/crop_item.cc
create mode 100644 scribo/demo/shared/src/bak/crop_item.hh
create mode 100644 scribo/demo/shared/src/bak/image_viewer.cc
create mode 100644 scribo/demo/shared/src/bak/image_viewer.hh
create mode 100644 scribo/demo/shared/src/bak/types.hh
create mode 100644 scribo/demo/shared/src/browse_widget.cc
create mode 100644 scribo/demo/shared/src/browse_widget.hh
create mode 100644 scribo/demo/shared/src/crop_item.cc
create mode 100644 scribo/demo/shared/src/crop_item.hh
create mode 100644 scribo/demo/shared/src/image_viewer.cc
create mode 100644 scribo/demo/shared/src/image_viewer.hh
create mode 100644 scribo/demo/shared/src/image_viewer.hxx
create mode 100644 scribo/demo/shared/src/internal.bak/interactive_scene.cc
create mode 100644 scribo/demo/shared/src/internal.bak/interactive_scene.hh
create mode 100644 scribo/demo/shared/src/internal.bak/selection_rectangle.cc
create mode 100644 scribo/demo/shared/src/internal.bak/selection_rectangle.hh
create mode 100644 scribo/demo/shared/src/internal/interactive_scene.cc
create mode 100644 scribo/demo/shared/src/internal/interactive_scene.hh
create mode 100644 scribo/demo/shared/src/internal/selection_rectangle.cc
create mode 100644 scribo/demo/shared/src/internal/selection_rectangle.hh
create mode 100644 scribo/demo/shared/src/to_mln_image.hh
create mode 100644 scribo/demo/shared/src/types.hh
create mode 100644 scribo/demo/shared/ui/browse_widget.ui
create mode 100644 scribo/demo/shared/ui/crop_widget.ui
create mode 100644 scribo/demo/shared/ui/image_viewer.ui
create mode 100644 scribo/demo/shared/ui/interactive_scene.cc
create mode 100644 scribo/demo/shared/ui/interactive_scene.hh
create mode 100644 scribo/demo/shared/ui/rotate_widget.ui
delete mode 100644 scribo/demo/src/main.cc
delete mode 100644 scribo/demo/src/mainwindow.cc
delete mode 100644 scribo/demo/src/mainwindow.hh
create mode 100644 scribo/demo/tip/gui.pro
create mode 100644 scribo/demo/tip/gui.qrc
create mode 100644 scribo/demo/tip/icons/next.png
create mode 100644 scribo/demo/tip/icons/ok.png
create mode 100644 scribo/demo/tip/icons/photos.png
create mode 100644 scribo/demo/tip/icons/prev.png
create mode 100644 scribo/demo/tip/icons/remove.png
create mode 100644 scribo/demo/tip/src/custom_delegate.cc
create mode 100644 scribo/demo/tip/src/custom_delegate.hh
create mode 100644 scribo/demo/tip/src/launch_dialog.cc
create mode 100644 scribo/demo/tip/src/launch_dialog.hh
create mode 100644 scribo/demo/tip/src/main.cc
create mode 100644 scribo/demo/tip/src/main_window.cc
create mode 100644 scribo/demo/tip/src/main_window.hh
create mode 100644 scribo/demo/tip/ui/launch_dialog.ui
create mode 100644 scribo/demo/tip/ui/main_window.ui
create mode 100644 scribo/demo/viewer/Makefile.am
create mode 100644 scribo/demo/viewer/README
create mode 100644 scribo/demo/viewer/browser_widget.cc
create mode 100644 scribo/demo/viewer/browser_widget.hh
create mode 100644 scribo/demo/viewer/common.hh
create mode 100644 scribo/demo/viewer/domitem.cc
create mode 100644 scribo/demo/viewer/domitem.hh
create mode 100644 scribo/demo/viewer/dommodel.cc
create mode 100644 scribo/demo/viewer/dommodel.hh
create mode 100644 scribo/demo/viewer/help_dialog.cc
create mode 100644 scribo/demo/viewer/help_dialog.hh
create mode 100644 scribo/demo/viewer/image_region.cc
create mode 100644 scribo/demo/viewer/image_region.hh
create mode 100644 scribo/demo/viewer/image_region.hxx
create mode 100644 scribo/demo/viewer/image_scene.cc
create mode 100644 scribo/demo/viewer/image_scene.hh
create mode 100644 scribo/demo/viewer/image_view.cc
create mode 100644 scribo/demo/viewer/image_view.hh
create mode 100644 scribo/demo/viewer/image_widget.cc
create mode 100644 scribo/demo/viewer/image_widget.hh
create mode 100644 scribo/demo/viewer/key_widget.cc
create mode 100644 scribo/demo/viewer/key_widget.hh
create mode 100644 scribo/demo/viewer/main.cc
create mode 100644 scribo/demo/viewer/property_widget.cc
create mode 100644 scribo/demo/viewer/property_widget.hh
create mode 100644 scribo/demo/viewer/step_widget.cc
create mode 100644 scribo/demo/viewer/step_widget.hh
create mode 100644 scribo/demo/viewer/viewer.cc
create mode 100644 scribo/demo/viewer/viewer.hh
create mode 100644 scribo/demo/viewer/viewer.hxx
create mode 100644 scribo/demo/viewer/xml_widget.cc
create mode 100644 scribo/demo/viewer/xml_widget.hh
create mode 100644 scribo/demo/wizard/images/dematerialization.png
create mode 100644 scribo/demo/wizard/src/crop_page.cc
create mode 100644 scribo/demo/wizard/src/crop_page.hh
create mode 100644 scribo/demo/wizard/src/crop_widget.cc
create mode 100644 scribo/demo/wizard/src/crop_widget.hh
create mode 100644 scribo/demo/wizard/src/doc_type.hh
create mode 100644 scribo/demo/wizard/src/doc_type_page.cc
create mode 100644 scribo/demo/wizard/src/doc_type_page.hh
create mode 100644 scribo/demo/wizard/src/doc_type_widget.cc
create mode 100644 scribo/demo/wizard/src/doc_type_widget.hh
create mode 100644 scribo/demo/wizard/src/load_page.cc
create mode 100644 scribo/demo/wizard/src/load_page.hh
create mode 100644 scribo/demo/wizard/src/load_widget.cc
create mode 100644 scribo/demo/wizard/src/load_widget.hh
create mode 100644 scribo/demo/wizard/src/main.cc
create mode 100644 scribo/demo/wizard/src/main_window.cc
create mode 100644 scribo/demo/wizard/src/main_window.hh
create mode 100644 scribo/demo/wizard/src/mln_widgets.cc
create mode 100644 scribo/demo/wizard/src/preprocessing_page.cc
create mode 100644 scribo/demo/wizard/src/preprocessing_page.hh
create mode 100644 scribo/demo/wizard/src/preprocessing_task.hh
create mode 100644 scribo/demo/wizard/src/preprocessing_widget.cc
create mode 100644 scribo/demo/wizard/src/preprocessing_widget.hh
create mode 100644 scribo/demo/wizard/src/process_page.cc
create mode 100644 scribo/demo/wizard/src/process_page.hh
create mode 100644 scribo/demo/wizard/src/process_widget.cc
create mode 100644 scribo/demo/wizard/src/process_widget.hh
create mode 100644 scribo/demo/wizard/src/result_page.cc
create mode 100644 scribo/demo/wizard/src/result_page.hh
create mode 100644 scribo/demo/wizard/src/result_widget.cc
create mode 100644 scribo/demo/wizard/src/result_widget.hh
create mode 100644 scribo/demo/wizard/src/rotate_page.cc
create mode 100644 scribo/demo/wizard/src/rotate_page.hh
create mode 100644 scribo/demo/wizard/src/rotate_widget.cc
create mode 100644 scribo/demo/wizard/src/rotate_widget.hh
create mode 100644 scribo/demo/wizard/src/runner.cc
create mode 100644 scribo/demo/wizard/src/runner.hh
create mode 100644 scribo/demo/wizard/src/test.cc
create mode 100644 scribo/demo/wizard/ui/doc_type_widget.ui
create mode 100644 scribo/demo/wizard/ui/load_widget.ui
create mode 100644 scribo/demo/wizard/ui/main_window.ui
create mode 100644 scribo/demo/wizard/ui/preprocessing_widget.ui
create mode 100644 scribo/demo/wizard/wizard.pro
create mode 100644 scribo/demo/wizard/wizard.qrc
delete mode 100644 scribo/draw/bounding_box_links.hh
delete mode 100644 scribo/draw/bounding_boxes.hh
delete mode 100644 scribo/estim/object_groups_v_thickness.hh
delete mode 100644 scribo/filter/all.hh
delete mode 100644 scribo/filter/common/objects_photo.hh
delete mode 100644 scribo/filter/internal/compute.hh
delete mode 100644 scribo/filter/object_groups_size_ratio.hh
delete mode 100644 scribo/filter/object_groups_small.hh
delete mode 100644 scribo/filter/object_groups_v_thickness.hh
delete mode 100644 scribo/filter/object_links_bbox_h_ratio.hh
delete mode 100644 scribo/filter/object_links_bbox_overlap.hh
delete mode 100644 scribo/filter/object_links_bbox_ratio.hh
delete mode 100644 scribo/filter/object_links_bbox_w_ratio.hh
delete mode 100644 scribo/filter/object_links_bottom_aligned.hh
delete mode 100644 scribo/filter/object_links_center_aligned.hh
delete mode 100644 scribo/filter/object_links_non_aligned.hh
delete mode 100644 scribo/filter/object_links_non_aligned_simple.hh
delete mode 100644 scribo/filter/object_links_non_h_aligned.hh
delete mode 100644 scribo/filter/object_links_non_v_aligned.hh
delete mode 100644 scribo/filter/object_links_top_aligned.hh
delete mode 100644 scribo/filter/objects_h_thick.hh
delete mode 100644 scribo/filter/objects_h_thin.hh
delete mode 100644 scribo/filter/objects_large.hh
delete mode 100644 scribo/filter/objects_size_ratio.hh
delete mode 100644 scribo/filter/objects_small.hh
delete mode 100644 scribo/filter/objects_thick.hh
delete mode 100644 scribo/filter/objects_thin.hh
delete mode 100644 scribo/filter/objects_v_thick.hh
delete mode 100644 scribo/filter/objects_v_thin.hh
delete mode 100644 scribo/fun/v2b/objects_small_filter.hh
delete mode 100644 scribo/make/all.hh
delete mode 100644 scribo/make/text.hh
delete mode 100644 scribo/preprocessing/all.hh
delete mode 100644 scribo/preprocessing/split_bg_fg.hh
delete mode 100644 scribo/preprocessing/unskew.hh
delete mode 100644 scribo/primitive/extract/all.hh
delete mode 100644 scribo/primitive/extract/lines_discontinued.hh
delete mode 100644 scribo/primitive/extract/lines_h_discontinued.hh
delete mode 100644 scribo/primitive/extract/lines_h_pattern.hh
delete mode 100644 scribo/primitive/extract/lines_h_single.hh
delete mode 100644 scribo/primitive/extract/lines_h_thick.hh
delete mode 100644 scribo/primitive/extract/lines_h_thick_and_single.hh
delete mode 100644 scribo/primitive/extract/lines_pattern.hh
delete mode 100644 scribo/primitive/extract/lines_thick.hh
delete mode 100644 scribo/primitive/extract/lines_v_discontinued.hh
delete mode 100644 scribo/primitive/extract/lines_v_pattern.hh
delete mode 100644 scribo/primitive/extract/lines_v_single.hh
delete mode 100644 scribo/primitive/extract/lines_v_thick.hh
delete mode 100644 scribo/primitive/extract/lines_v_thick_and_single.hh
delete mode 100644 scribo/primitive/extract/objects.hh
delete mode 100644 scribo/primitive/group/all.hh
delete mode 100644 scribo/primitive/group/apply.hh
delete mode 100644 scribo/primitive/group/from_double_link.hh
delete mode 100644 scribo/primitive/group/from_graph.hh
delete mode 100644 scribo/primitive/group/from_single_link.hh
delete mode 100644 scribo/primitive/internal/all.hh
delete mode 100644 scribo/primitive/internal/find_graph_link.hh
delete mode 100644 scribo/primitive/internal/find_left_link.hh
delete mode 100644 scribo/primitive/internal/find_right_link.hh
delete mode 100644 scribo/primitive/internal/find_root.hh
delete mode 100644 scribo/primitive/internal/init_link_array.hh
delete mode 100644 scribo/primitive/internal/is_invalid_link.hh
delete mode 100644 scribo/primitive/internal/is_link_valid.hh
delete mode 100644 scribo/primitive/internal/update_link_array.hh
delete mode 100644 scribo/primitive/link/all.hh
delete mode 100644 scribo/primitive/link/compute.hh
delete mode 100644 scribo/primitive/link/compute_several.hh
delete mode 100644 scribo/primitive/link/internal/anchors_3.hh
delete mode 100644 scribo/primitive/link/internal/find_link.hh
delete mode 100644 scribo/primitive/link/internal/find_several_links.hh
delete mode 100644 scribo/primitive/link/internal/link_center_dmax_base.hh
delete mode 100644 scribo/primitive/link/internal/link_center_dmax_ratio_base.hh
delete mode 100644 scribo/primitive/link/internal/link_functor_base.hh
delete mode 100644 scribo/primitive/link/internal/link_ms_dmax_base.hh
delete mode 100644 scribo/primitive/link/internal/link_ms_dmax_ratio_base.hh
delete mode 100644 scribo/primitive/link/merge_double_link.hh
delete mode 100644 scribo/primitive/link/with_graph.hh
delete mode 100644 scribo/primitive/link/with_rag.hh
delete mode 100644 scribo/primitive/link/with_several_graphes.hh
delete mode 100644 scribo/primitive/link/with_several_left_links.hh
delete mode 100644 scribo/primitive/link/with_several_right_closest_links.hh
delete mode 100644 scribo/primitive/link/with_several_right_links.hh
delete mode 100644 scribo/primitive/link/with_several_right_links_overlap.hh
delete mode 100644 scribo/primitive/link/with_single_left_link.hh
delete mode 100644 scribo/primitive/link/with_single_left_link_dmax_ratio.hh
delete mode 100644 scribo/primitive/link/with_single_right_link.hh
delete mode 100644 scribo/primitive/link/with_single_right_link_bottom.hh
delete mode 100644 scribo/primitive/link/with_single_right_link_dmax_ratio.hh
delete mode 100644 scribo/primitive/link/with_single_right_link_top.hh
create mode 100644 scribo/sandbox/ChangeLog
create mode 100644 scribo/sandbox/green/ChangeLog
create mode 100644 scribo/sandbox/green/README
create mode 100644 scribo/sandbox/green/README.green
create mode 100644 scribo/sandbox/green/README.img
create mode 100644 scribo/sandbox/green/README.result
create mode 100644 scribo/sandbox/green/bench/clustering/distance/Makefile.am
create mode 100644 scribo/sandbox/green/bench/clustering/distance/distance.cc
create mode 100644 scribo/sandbox/green/demo/clustering/kmean1d/Makefile.am
create mode 100644 scribo/sandbox/green/demo/clustering/kmean1d/kmean1d.cc
create mode 100644 scribo/sandbox/green/demo/clustering/kmean2d/Makefile.am
create mode 100644 scribo/sandbox/green/demo/clustering/kmean2d/kmean2d.cc
create mode 100644 scribo/sandbox/green/demo/clustering/kmean3d/Makefile.am
create mode 100644 scribo/sandbox/green/demo/clustering/kmean3d/kmean3d.cc
create mode 100644 scribo/sandbox/green/demo/clustering/kmean_rgb/Makefile.am
create mode 100644 scribo/sandbox/green/demo/clustering/kmean_rgb/kmean_rgb.cc
copy {milena/sandbox/green/tests/accu/stat/histo1d => scribo/sandbox/green}/gaussian.sh (100%)
copy {milena/sandbox/green/tests/accu/stat/histo2d => scribo/sandbox/green}/gaussian2d.sh (100%)
create mode 100644 scribo/sandbox/green/mln/accu/stat/histo1d.hh
create mode 100644 scribo/sandbox/green/mln/accu/stat/histo2d.hh
create mode 100644 scribo/sandbox/green/mln/accu/stat/histo3d_hsl.hh
create mode 100644 scribo/sandbox/green/mln/accu/stat/histo3d_rgb.hh
create mode 100644 scribo/sandbox/green/mln/clustering/k_mean.hh
create mode 100644 scribo/sandbox/green/mln/clustering/kmean1d.hh
create mode 100644 scribo/sandbox/green/mln/clustering/kmean2d.hh
create mode 100644 scribo/sandbox/green/mln/clustering/kmean3d.hh
create mode 100644 scribo/sandbox/green/mln/clustering/kmean_rgb.hh
create mode 100644 scribo/sandbox/green/mln/display/display_histo.hh
create mode 100644 scribo/sandbox/green/mln/display/project_histo.hh
create mode 100644 scribo/sandbox/green/mln/fun/p2b/achromatic.hh
create mode 100644 scribo/sandbox/green/mln/fun/p2b/component_equals.hh
create mode 100644 scribo/sandbox/green/mln/fun/v2v/achromatism.hh
create mode 100644 scribo/sandbox/green/mln/fun/v2v/hue_concentration.hh
copy {milena => scribo}/sandbox/green/mln/fun/v2v/int_u16_to_int_u14.hh (100%)
copy {milena => scribo}/sandbox/green/mln/fun/v2v/log.hh (100%)
create mode 100644 scribo/sandbox/green/mln/fun/v2v/rg_to_rgb.hh
create mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb8_to_int_u8.hh
create mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb8_to_rgbn.hh
create mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_achromatism_map.hh
create mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_hsv.hh
create mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_hue_map.hh
create mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_rg.hh
create mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_saturation_map.hh
create mode 100644 scribo/sandbox/green/mln/fun/v2v/rgb_to_value_map.hh
create mode 100644 scribo/sandbox/green/mln/img_path.hh
create mode 100644 scribo/sandbox/green/mln/io/plot/save_image_sh.hh
create mode 100644 scribo/sandbox/green/mln/math/ceil.hh
create mode 100644 scribo/sandbox/green/mln/math/floor.hh
create mode 100644 scribo/sandbox/green/mln/value/hsv.hh
create mode 100644 scribo/sandbox/green/mln/value/rg.hh
create mode 100644 scribo/sandbox/green/ok/mln/accu/histo/histo1d.hh
copy {milena/sandbox/green/mln/accu/stat => scribo/sandbox/green/ok/mln/accu/histo}/histo2d.hh (100%)
copy milena/sandbox/green/mln/accu/stat/histo3d_rgb.hh => scribo/sandbox/green/ok/mln/accu/histo/histo3d.hh (100%)
create mode 100644 scribo/sandbox/green/ok/mln/img_path.hh
copy {milena/sandbox/green/tests/accu/stat/histo1d => scribo/sandbox/green/ok/test/accu/histo}/gaussian.sh (100%)
create mode 100755 scribo/sandbox/green/ok/test/accu/histo/histo1d
create mode 100644 scribo/sandbox/green/ok/test/accu/histo/histo1d.cc
create mode 100644 scribo/sandbox/green/test_labelling.cc
create mode 100644 scribo/sandbox/green/test_labelling_2.cc
create mode 100644 scribo/sandbox/green/test_labelling_3.cc
create mode 100644 scribo/sandbox/green/tests/accu/stat/histo1d/Makefile.am
create mode 100644 scribo/sandbox/green/tests/accu/stat/histo1d/histo1d.cc
create mode 100644 scribo/sandbox/green/tests/accu/stat/histo3d_hsl/Makefile.am
create mode 100644 scribo/sandbox/green/tests/accu/stat/histo3d_hsl/histo3d_hsl.cc
create mode 100644 scribo/sandbox/green/tests/accu/stat/histo3d_rgb/Makefile.am
create mode 100644 scribo/sandbox/green/tests/accu/stat/histo3d_rgb/histo3d_rgb.cc
create mode 100644 scribo/sandbox/green/tests/clustering/k_mean/Makefile.am
create mode 100644 scribo/sandbox/green/tests/clustering/k_mean/k_mean.cc
copy {milena => scribo}/sandbox/green/tests/clustering/kmean1d/Makefile.am (100%)
copy {milena => scribo}/sandbox/green/tests/clustering/kmean1d/kmean1d.cc (100%)
create mode 100644 scribo/sandbox/green/tests/io/plot/save_image_sh/Makefile.am
create mode 100644 scribo/sandbox/green/tests/io/plot/save_image_sh/save_image_sh.cc
create mode 100644 scribo/sandbox/green/use/accu/stat/histo1d/Makefile.am
create mode 100644 scribo/sandbox/green/use/accu/stat/histo1d/histo1d.cc
create mode 100644 scribo/sandbox/green/use/accu/stat/histo2d/Makefile.am
create mode 100644 scribo/sandbox/green/use/accu/stat/histo2d/histo2d.cc
create mode 100644 scribo/sandbox/green/use/accu/stat/histo3d_hsl/Makefile.am
create mode 100644 scribo/sandbox/green/use/accu/stat/histo3d_hsl/histo3d_hsl.cc
create mode 100644 scribo/sandbox/green/use/accu/stat/histo3d_rgb/Makefile.am
create mode 100644 scribo/sandbox/green/use/accu/stat/histo3d_rgb/histo3d_rgb.cc
create mode 100644 scribo/sandbox/green/use/clustering/k_mean/Makefile.am
create mode 100644 scribo/sandbox/green/use/clustering/k_mean/k_mean.cc
create mode 100644 scribo/sandbox/green/use/clustering/kmean1d/Makefile.am
create mode 100644 scribo/sandbox/green/use/clustering/kmean1d/kmean1d.cc
create mode 100644 scribo/sandbox/green/use/clustering/kmean2d/Makefile.am
create mode 100644 scribo/sandbox/green/use/clustering/kmean2d/kmean2d.cc
create mode 100644 scribo/sandbox/green/use/clustering/kmean3d/Makefile.am
create mode 100644 scribo/sandbox/green/use/clustering/kmean3d/kmean3d.cc
create mode 100644 scribo/sandbox/green/use/clustering/kmean_rgb/Makefile.am
create mode 100644 scribo/sandbox/green/use/clustering/kmean_rgb/kmean_rgb.cc
create mode 100644 scribo/sandbox/green/use/fun/v2v/rg_to_rgb/Makefile.am
create mode 100644 scribo/sandbox/green/use/fun/v2v/rg_to_rgb/rg_to_rgb.cc
create mode 100644 scribo/sandbox/green/use/fun/v2v/rgb8_to_rgbn/Makefile.am
create mode 100644 scribo/sandbox/green/use/fun/v2v/rgb8_to_rgbn/rgb8_to_rgbn.cc
create mode 100644 scribo/sandbox/green/use/fun/v2v/rgb_to_rg/Makefile.am
create mode 100644 scribo/sandbox/green/use/fun/v2v/rgb_to_rg/rgb_to_rg.cc
create mode 100644 scribo/sandbox/green/use/io/plot/save_image_sh/Makefile.am
create mode 100644 scribo/sandbox/green/use/io/plot/save_image_sh/save_image_sh.cc
create mode 100644 scribo/sandbox/green/use/value/rg/Makefile.am
create mode 100644 scribo/sandbox/green/use/value/rg/rg.cc
create mode 100644 scribo/sandbox/z/white_spaces/hom_sep.cc
create mode 100644 scribo/sandbox/z/white_spaces/white_space_closing.cc
create mode 100644 scribo/sandbox/z/white_spaces/white_spaces.cc
create mode 100644 scribo/scribo/all.hh
create mode 100644 scribo/scribo/binarization/all.hh
create mode 100644 scribo/scribo/binarization/global_threshold.hh
create mode 100644 scribo/scribo/binarization/global_threshold_auto.hh
create mode 100644 scribo/scribo/binarization/internal/first_pass_functor.hh
create mode 100644 scribo/scribo/binarization/local_threshold.hh
create mode 100644 scribo/scribo/binarization/sauvola.hh
create mode 100644 scribo/scribo/binarization/sauvola_ms.hh
create mode 100644 scribo/scribo/binarization/sauvola_ms_split.hh
create mode 100644 scribo/scribo/binarization/sauvola_threshold_image.hh
create mode 100644 scribo/scribo/binarization/sauvola_threshold_image_debug.hh
create mode 100644 scribo/scribo/canvas/integral_browsing.hh
create mode 100644 scribo/scribo/convert/from_qimage.hh
create mode 100644 scribo/scribo/core/all.hh
rename scribo/{ => scribo}/core/central_sites.hh (100%)
create mode 100644 scribo/scribo/core/component_info.hh
create mode 100644 scribo/scribo/core/component_set.hh
create mode 100644 scribo/scribo/core/concept/dmax_functor.hh
rename scribo/{ => scribo}/core/concept/link_functor.hh (100%)
create mode 100644 scribo/scribo/core/def/lbl_type.hh
create mode 100644 scribo/scribo/core/erase_objects.hh
create mode 100644 scribo/scribo/core/init_integral_image.hh
create mode 100644 scribo/scribo/core/line_info.hh
create mode 100644 scribo/scribo/core/line_set.hh
create mode 100644 scribo/scribo/core/macros.hh
create mode 100644 scribo/scribo/core/object_groups.hh
create mode 100644 scribo/scribo/core/object_links.hh
create mode 100644 scribo/scribo/core/tag/anchor.hh
create mode 100644 scribo/scribo/core/tag/component.hh
create mode 100644 scribo/scribo/core/tag/line.hh
create mode 100644 scribo/scribo/debug/alignment_decision_image.hh
rename scribo/{ => scribo}/debug/all.hh (100%)
create mode 100644 scribo/scribo/debug/bboxes_enlarged_image.hh
create mode 100644 scribo/scribo/debug/char_space_image.hh
create mode 100644 scribo/scribo/debug/decision_image.hh
create mode 100644 scribo/scribo/debug/highlight_text_area.hh
create mode 100644 scribo/scribo/debug/line_info_image.hh
create mode 100644 scribo/scribo/debug/links_decision_image.hh
create mode 100644 scribo/scribo/debug/looks_like_a_text_line_image.hh
create mode 100644 scribo/scribo/debug/mean_and_base_lines_image.hh
create mode 100644 scribo/scribo/debug/save_bboxes_image.hh
create mode 100644 scribo/scribo/debug/save_comp_diff.hh
rename scribo/{ => scribo}/debug/save_label_image.hh (100%)
create mode 100644 scribo/scribo/debug/save_linked_bboxes_image.hh
rename scribo/{ => scribo}/debug/save_table_image.hh (100%)
create mode 100644 scribo/scribo/debug/several_links_decision_image.hh
create mode 100644 scribo/scribo/debug/text_areas_image.hh
create mode 100644 scribo/scribo/debug/usage.hh
rename scribo/{ => scribo}/draw/all.hh (100%)
create mode 100644 scribo/scribo/draw/bounding_box_links.hh
create mode 100644 scribo/scribo/draw/bounding_boxes.hh
create mode 100644 scribo/scribo/draw/groups_bboxes.hh
create mode 100644 scribo/scribo/estim/object_groups_v_thickness.hh
create mode 100644 scribo/scribo/filter/all.hh
create mode 100644 scribo/scribo/filter/common/objects_photo.hh
create mode 100644 scribo/scribo/filter/internal/alignment_angle.hh
create mode 100644 scribo/scribo/filter/internal/component_aligned.hh
create mode 100644 scribo/scribo/filter/internal/compute.hh
create mode 100644 scribo/scribo/filter/object_groups_size_ratio.hh
create mode 100644 scribo/scribo/filter/object_groups_small.hh
create mode 100644 scribo/scribo/filter/object_groups_v_thickness.hh
create mode 100644 scribo/scribo/filter/object_groups_with_holes.hh
create mode 100644 scribo/scribo/filter/object_links_bbox_h_ratio.hh
create mode 100644 scribo/scribo/filter/object_links_bbox_overlap.hh
create mode 100644 scribo/scribo/filter/object_links_bbox_ratio.hh
create mode 100644 scribo/scribo/filter/object_links_bbox_w_ratio.hh
create mode 100644 scribo/scribo/filter/object_links_bottom_aligned.hh
create mode 100644 scribo/scribo/filter/object_links_center_aligned.hh
create mode 100644 scribo/scribo/filter/object_links_left_aligned.hh
create mode 100644 scribo/scribo/filter/object_links_non_aligned_simple.hh
create mode 100644 scribo/scribo/filter/object_links_right_aligned.hh
create mode 100644 scribo/scribo/filter/object_links_top_aligned.hh
create mode 100644 scribo/scribo/filter/objects_h_thick.hh
create mode 100644 scribo/scribo/filter/objects_h_thin.hh
create mode 100644 scribo/scribo/filter/objects_large.hh
create mode 100644 scribo/scribo/filter/objects_size_ratio.hh
create mode 100644 scribo/scribo/filter/objects_small.hh
create mode 100644 scribo/scribo/filter/objects_thick.hh
create mode 100644 scribo/scribo/filter/objects_thin.hh
create mode 100644 scribo/scribo/filter/objects_v_thick.hh
create mode 100644 scribo/scribo/filter/objects_v_thin.hh
create mode 100644 scribo/scribo/filter/objects_with_holes.hh
create mode 100644 scribo/scribo/fun/v2b/label_to_bool.hh
create mode 100644 scribo/scribo/fun/v2b/objects_large_filter.hh
create mode 100644 scribo/scribo/fun/v2b/objects_small_filter.hh
create mode 100644 scribo/scribo/io/text_boxes/save.hh
create mode 100644 scribo/scribo/io/xml/save.hh
create mode 100644 scribo/scribo/make/all.hh
rename scribo/{ => scribo}/make/debug_filename.hh (100%)
rename scribo/{ => scribo}/make/influence_zone_graph.hh (100%)
create mode 100644 scribo/scribo/postprocessing/all.hh
create mode 100644 scribo/scribo/postprocessing/fill_object_holes.hh
create mode 100644 scribo/scribo/preprocessing/all.hh
create mode 100644 scribo/scribo/preprocessing/crop.hh
create mode 100644 scribo/scribo/preprocessing/crop_without_localization.hh
create mode 100644 scribo/scribo/preprocessing/denoise.hh
create mode 100644 scribo/scribo/preprocessing/denoise_bg.hh
create mode 100644 scribo/scribo/preprocessing/denoise_fg.hh
create mode 100644 scribo/scribo/preprocessing/deskew.hh
create mode 100644 scribo/scribo/preprocessing/deskew_crop.hh
create mode 100644 scribo/scribo/preprocessing/homogeneous_contrast.hh
create mode 100644 scribo/scribo/preprocessing/rotate_90.hh
create mode 100644 scribo/scribo/preprocessing/split_bg_fg.hh
rename scribo/{ => scribo}/primitive/all.hh (100%)
create mode 100644 scribo/scribo/primitive/extract/all.hh
rename scribo/{ => scribo}/primitive/extract/canvas.hh (100%)
rename scribo/{ => scribo}/primitive/extract/cells.hh (100%)
create mode 100644 scribo/scribo/primitive/extract/components.hh
create mode 100644 scribo/scribo/primitive/extract/horizontal_separators.hh
create mode 100644 scribo/scribo/primitive/extract/lines_discontinued.hh
create mode 100644 scribo/scribo/primitive/extract/lines_h_discontinued.hh
create mode 100644 scribo/scribo/primitive/extract/lines_h_pattern.hh
create mode 100644 scribo/scribo/primitive/extract/lines_h_single.hh
create mode 100644 scribo/scribo/primitive/extract/lines_h_thick.hh
create mode 100644 scribo/scribo/primitive/extract/lines_h_thick_and_single.hh
create mode 100644 scribo/scribo/primitive/extract/lines_pattern.hh
create mode 100644 scribo/scribo/primitive/extract/lines_thick.hh
create mode 100644 scribo/scribo/primitive/extract/lines_v_discontinued.hh
create mode 100644 scribo/scribo/primitive/extract/lines_v_pattern.hh
create mode 100644 scribo/scribo/primitive/extract/lines_v_single.hh
create mode 100644 scribo/scribo/primitive/extract/lines_v_thick.hh
create mode 100644 scribo/scribo/primitive/extract/lines_v_thick_and_single.hh
create mode 100644 scribo/scribo/primitive/extract/separators.hh
create mode 100644 scribo/scribo/primitive/extract/vertical_separators.hh
create mode 100644 scribo/scribo/primitive/group/all.hh
create mode 100644 scribo/scribo/primitive/group/apply.hh
create mode 100644 scribo/scribo/primitive/group/from_double_link.hh
create mode 100644 scribo/scribo/primitive/group/from_graph.hh
create mode 100644 scribo/scribo/primitive/group/from_single_link.hh
create mode 100644 scribo/scribo/primitive/internal/all.hh
create mode 100644 scribo/scribo/primitive/internal/find_graph_link.hh
create mode 100644 scribo/scribo/primitive/internal/find_root.hh
rename scribo/{ => scribo}/primitive/internal/have_link_valid.hh (100%)
create mode 100644 scribo/scribo/primitive/internal/is_link_valid.hh
create mode 100644 scribo/scribo/primitive/internal/rd.hh
rename scribo/{ => scribo}/primitive/internal/update_graph_link.hh (100%)
create mode 100644 scribo/scribo/primitive/link/all.hh
create mode 100644 scribo/scribo/primitive/link/compute.hh
create mode 100644 scribo/scribo/primitive/link/compute_several.hh
create mode 100644 scribo/scribo/primitive/link/internal/compute_anchor.hh
create mode 100644 scribo/scribo/primitive/link/internal/dmax_default.hh
create mode 100644 scribo/scribo/primitive/link/internal/dmax_functor_base.hh
create mode 100644 scribo/scribo/primitive/link/internal/dmax_width_and_height.hh
create mode 100644 scribo/scribo/primitive/link/internal/dmax_width_only.hh
create mode 100644 scribo/scribo/primitive/link/internal/find_link.hh
create mode 100644 scribo/scribo/primitive/link/internal/find_several_links.hh
create mode 100644 scribo/scribo/primitive/link/internal/link_functor_base.hh
create mode 100644 scribo/scribo/primitive/link/internal/link_several_dmax_base.hh
create mode 100644 scribo/scribo/primitive/link/internal/link_single_dmax_base.hh
create mode 100644 scribo/scribo/primitive/link/internal/link_single_dmax_ratio_base.hh
create mode 100644 scribo/scribo/primitive/link/merge_double_link.hh
create mode 100644 scribo/scribo/primitive/link/with_graph.hh
create mode 100644 scribo/scribo/primitive/link/with_rag.hh
create mode 100644 scribo/scribo/primitive/link/with_several_graphes.hh
create mode 100644 scribo/scribo/primitive/link/with_several_left_links.hh
create mode 100644 scribo/scribo/primitive/link/with_several_right_closest_links.hh
create mode 100644 scribo/scribo/primitive/link/with_several_right_links.hh
create mode 100644 scribo/scribo/primitive/link/with_several_right_links_overlap.hh
create mode 100644 scribo/scribo/primitive/link/with_single_down_link.hh
create mode 100644 scribo/scribo/primitive/link/with_single_left_link.hh
create mode 100644 scribo/scribo/primitive/link/with_single_left_link_dmax_ratio.hh
create mode 100644 scribo/scribo/primitive/link/with_single_right_link.hh
create mode 100644 scribo/scribo/primitive/link/with_single_right_link_bottom.hh
create mode 100644 scribo/scribo/primitive/link/with_single_right_link_dmax_ratio.hh
create mode 100644 scribo/scribo/primitive/link/with_single_right_link_top.hh
create mode 100644 scribo/scribo/primitive/link/with_single_up_link.hh
create mode 100644 scribo/scribo/primitive/regroup/from_single_left_link.hh
create mode 100644 scribo/scribo/primitive/regroup/from_single_left_link_wrt_h_ratio.hh
create mode 100644 scribo/scribo/primitive/remove/separators.hh
create mode 100644 scribo/scribo/subsampling/bilinear.hh
create mode 100644 scribo/scribo/subsampling/integral.hh
create mode 100644 scribo/scribo/subsampling/integral_single_image.hh
create mode 100644 scribo/scribo/table/align_lines_horizontaly.hh
rename scribo/{ => scribo}/table/align_lines_verticaly.hh (100%)
rename scribo/{ => scribo}/table/all.hh (100%)
rename scribo/{ => scribo}/table/connect_horizontal_lines.hh (100%)
rename scribo/{ => scribo}/table/connect_vertical_lines.hh (100%)
create mode 100644 scribo/scribo/table/erase.hh
create mode 100644 scribo/scribo/table/extract.hh
create mode 100644 scribo/scribo/table/internal/align_lines.hh
rename scribo/{ => scribo}/table/internal/all.hh (100%)
create mode 100644 scribo/scribo/table/internal/connect_lines.hh
create mode 100644 scribo/scribo/table/internal/repair_lines.hh
create mode 100644 scribo/scribo/table/rebuild.hh
rename scribo/{ => scribo}/table/repair_horizontal_lines.hh (100%)
rename scribo/{ => scribo}/table/repair_vertical_lines.hh (100%)
rename scribo/{ => scribo}/text/all.hh (100%)
create mode 100644 scribo/scribo/text/clean.hh
create mode 100644 scribo/scribo/text/clean_inplace.hh
create mode 100644 scribo/scribo/text/extract_lines.hh
create mode 100644 scribo/scribo/text/look_like_text_lines.hh
create mode 100644 scribo/scribo/text/merging.hh
create mode 100644 scribo/scribo/text/recognition.hh
create mode 100644 scribo/scribo/toolchain/nepomuk/text_extraction.hh
create mode 100644 scribo/scribo/toolchain/text_in_doc.hh
create mode 100644 scribo/scribo/upsampling/bs2x.hh
create mode 100644 scribo/scribo/upsampling/eagle.hh
create mode 100644 scribo/src/README
create mode 100644 scribo/src/afp/components.hh
create mode 100644 scribo/src/afp/link.hh
create mode 100644 scribo/src/afp/regroup.hh
create mode 100644 scribo/src/binarization/fg_sauvola_ms.cc
create mode 100644 scribo/src/binarization/pgm_global_threshold_auto.cc
create mode 100644 scribo/src/binarization/pgm_sauvola.cc
create mode 100644 scribo/src/binarization/pgm_sauvola_ms.cc
create mode 100644 scribo/src/binarization/ppm_fg_sauvola_ms.cc
create mode 100644 scribo/src/binarization/ppm_sauvola.cc
create mode 100644 scribo/src/binarization/ppm_sauvola_ms.cc
create mode 100644 scribo/src/binarization/ppm_sauvola_ms_split.cc
create mode 100644 scribo/src/binarization/sauvola_debug.cc
create mode 100644 scribo/src/binarization/sauvola_ms_debug.cc
create mode 100644 scribo/src/binarization/sauvola_ms_split.cc
delete mode 100644 scribo/src/binarization/sauvola_pgm.cc
delete mode 100644 scribo/src/binarization/simple.cc
create mode 100644 scribo/src/contest/Makefile.am
create mode 100644 scribo/src/contest/hdibco-2010/Makefile.am
create mode 100644 scribo/src/contest/hdibco-2010/sauvola_ms_hdibco.cc
create mode 100644 scribo/src/debug/highlight_text_area.cc
create mode 100644 scribo/src/debug/show_info_median_inter_characters.cc
create mode 100644 scribo/src/debug/show_info_x_height.cc
delete mode 100644 scribo/src/debug/show_left_right_links_validation.cc
create mode 100644 scribo/src/debug/show_links_left_right_links_validation.cc
create mode 100644 scribo/src/debug/show_links_single_down.cc
create mode 100644 scribo/src/debug/show_links_single_down_left_aligned.cc
create mode 100644 scribo/src/debug/show_links_single_down_right_aligned.cc
create mode 100644 scribo/src/debug/show_links_single_up.cc
create mode 100644 scribo/src/debug/show_links_single_up_left_aligned.cc
create mode 100644 scribo/src/debug/show_links_single_up_right_aligned.cc
create mode 100644 scribo/src/filter/objects_with_holes.cc
create mode 100644 scribo/src/filter/objects_with_holes_pgm.cc
delete mode 100644 scribo/src/multi_scale/Makefile.am
delete mode 100644 scribo/src/multi_scale/find_lines.cc
create mode 100644 scribo/src/pbm_text_in_doc.cc
create mode 100644 scribo/src/postprocessing/Makefile.am
create mode 100644 scribo/src/postprocessing/fill_object_holes.cc
create mode 100644 scribo/src/preprocessing/denoise_bg.cc
create mode 100644 scribo/src/preprocessing/denoise_fg.cc
create mode 100644 scribo/src/preprocessing/homogeneous_contrast.cc
create mode 100644 scribo/src/preprocessing/rotate.cc
create mode 100644 scribo/src/preprocessing/rotate_90.cc
create mode 100644 scribo/src/preprocessing/subsample.cc
create mode 100644 scribo/src/preprocessing/to_pgm.cc
create mode 100644 scribo/src/text/pbm_lines_recognition.cc
create mode 100644 scribo/src/text/pbm_recognition.cc
delete mode 100644 scribo/src/text/recognition.cc
delete mode 100644 scribo/src/text_in_doc.cc
delete mode 100644 scribo/src/text_in_doc_ppm.cc
create mode 100644 scribo/src/text_in_doc_preprocess.cc
delete mode 100644 scribo/src/text_in_photo.cc
delete mode 100644 scribo/src/text_in_photo_invert.cc
delete mode 100644 scribo/src/text_in_photo_ppm.cc
create mode 100644 scribo/src/text_in_picture.cc
create mode 100644 scribo/src/text_recognition_in_picture.cc
delete mode 100644 scribo/table/align_lines_horizontaly.hh
delete mode 100644 scribo/table/erase.hh
delete mode 100644 scribo/table/extract.hh
delete mode 100644 scribo/table/internal/align_lines.hh
delete mode 100644 scribo/table/internal/connect_lines.hh
delete mode 100644 scribo/table/internal/repair_lines.hh
delete mode 100644 scribo/table/rebuild.hh
create mode 100644 scribo/tests/binarization/Makefile.am
create mode 100644 scribo/tests/binarization/global_threshold.cc
create mode 100644 scribo/tests/binarization/local_threshold.cc
create mode 100644 scribo/tests/core/Makefile.am
create mode 100644 scribo/tests/filter/objects_with_holes.cc
create mode 100644 scribo/tests/img/text_to_group.pgm
create mode 100644 scribo/tests/img/wildly.pbm
create mode 100644 scribo/tests/preprocessing/crop.cc
create mode 100644 scribo/tests/preprocessing/crop_without_localization.cc
create mode 100644 scribo/tests/preprocessing/deskew.cc
create mode 100644 scribo/tests/preprocessing/rotate_90.cc
delete mode 100644 scribo/tests/preprocessing/unskew.cc
create mode 100644 scribo/tests/toolchain/Makefile.am
create mode 100644 scribo/tests/toolchain/nepomuk/Makefile.am
create mode 100644 scribo/tests/toolchain/nepomuk/text_extraction.cc
delete mode 100755 scribo/tests/unit_test/build_unit_test.sh
create mode 100644 scribo/tests/unit_test/cond_tests_qt
create mode 100644 scribo/tests/unit_test/cond_tests_qt_tesseract_tiff
create mode 100644 scribo/tests/unit_test/cond_tests_tesseract_tiff
delete mode 100644 scribo/text/clean.hh
delete mode 100644 scribo/text/extract_lines.hh
delete mode 100644 scribo/text/recognition.hh
delete mode 100644 scribo/util/all.hh
delete mode 100644 scribo/util/text.hh
hooks/post-receive
--
Olena, a generic and efficient image processing platform
2
1

last-svn-commit-199-g0448a2b Add more documentation on the detach procedure.
by Roland Levillain 01 Sep '10
by Roland Levillain 01 Sep '10
01 Sep '10
* mln/make/detachment.hh: Here.
Typo.
* mln/topo/detach.hh: Typo.
---
milena/ChangeLog | 8 ++++++++
milena/mln/make/detachment.hh | 10 ++++++++--
milena/mln/topo/detach.hh | 10 +++++-----
3 files changed, 21 insertions(+), 7 deletions(-)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index f83deda..ebcec24 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,3 +1,11 @@
+2010-09-01 Roland Levillain <roland(a)lrde.epita.fr>
+
+ Add more documentation on the detach procedure.
+
+ * mln/make/detachment.hh: Here.
+ Typo.
+ * mln/topo/detach.hh: Typo.
+
2010-08-18 Roland Levillain <roland(a)lrde.epita.fr>
* mln/topo/skeleton/breadth_first_thinning.hh: Reindent.
diff --git a/milena/mln/make/detachment.hh b/milena/mln/make/detachment.hh
index 16f4954..16a8c92 100644
--- a/milena/mln/make/detachment.hh
+++ b/milena/mln/make/detachment.hh
@@ -41,7 +41,7 @@ namespace mln
{
/** \brief Compute the detachment of the cell corresponding to the
- facet \a f to the image \a ima.
+ facet \a f from the image \a ima.
\pre \a f is a facet (it does not belong to any face of higher
dimension).
@@ -53,7 +53,13 @@ namespace mln
couprie.08.pami). We use the following (equivalent) definition:
an N-face F in CELL is not in the detachment of CELL from IMA if
it is adjacent to at least an (N-1)-face or an (N+1)-face that
- does not belong to CELL. */
+ does not belong to CELL.
+
+ Moreover, the term detachment does not correspond to the
+ complex resulting from the collapsing of CELL onto IMA, but
+ the part that is removed, i.e., the detached part CELL -
+ ATTACHMENT. It would be wise to rename this routine to
+ something else. */
template <unsigned D, typename G, typename V>
p_set< complex_psite<D, G> >
detachment(const complex_psite<D, G>& f,
diff --git a/milena/mln/topo/detach.hh b/milena/mln/topo/detach.hh
index b310423..6218739 100644
--- a/milena/mln/topo/detach.hh
+++ b/milena/mln/topo/detach.hh
@@ -27,7 +27,7 @@
# define MLN_TOPO_DETACH_HH
/// \file
-/// \brief Detachin a cell from a binary complex-based image.
+/// \brief Detaching a cell from a binary complex-based image.
# include <mln/core/site_set/p_set.hh>
# include <mln/core/image/complex_image.hh>
@@ -41,10 +41,10 @@ namespace mln
{
/** Detach the cell corresponding to \a f from \a ima.
-
- \pre \a f is a facet (it does not belong to any face of higher
- dimension).
- \pre \a ima is an image of Boolean values. */
+
+ \pre \a f is a facet (it does not belong to any face of higher
+ dimension).
+ \pre \a ima is an image of Boolean values. */
template <unsigned D, typename G>
void
detach(const complex_psite<D, G>& f, complex_image<D, G, bool>& ima);
--
1.5.6.5
1
0