Olena-patches
Threads by month
- ----- 2025 -----
- November
- October
- 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-782-g7d8b116 Make use of mln::fun::v2v::rgb_to_luma.
by Guillaume Lazzara 29 Mar '11
by Guillaume Lazzara 29 Mar '11
29 Mar '11
* scribo/toolchain/internal/text_in_doc_preprocess_functor.hh,
* src/binarization/ppm_sauvola.cc,
* src/binarization/ppm_sauvola_ms.cc,
* src/binarization/ppm_sauvola_ms_fg.cc,
* src/binarization/ppm_sauvola_ms_split.cc,
* src/binarization/sauvola.cc,
* src/binarization/sauvola_debug.cc,
* src/binarization/sauvola_ms.cc,
* src/binarization/sauvola_ms_debug.cc,
* src/binarization/sauvola_ms_fg.cc,
* src/text_in_picture.cc,
* src/text_in_picture_neg.cc,
* src/text_recognition_in_picture.cc: Here.
---
scribo/ChangeLog | 18 ++++++++++++++++++
.../internal/text_in_doc_preprocess_functor.hh | 7 ++++---
scribo/src/binarization/ppm_sauvola.cc | 9 +++++----
scribo/src/binarization/ppm_sauvola_ms.cc | 9 +++++----
scribo/src/binarization/ppm_sauvola_ms_fg.cc | 8 ++++----
scribo/src/binarization/ppm_sauvola_ms_split.cc | 5 ++---
scribo/src/binarization/sauvola.cc | 4 ++--
scribo/src/binarization/sauvola_debug.cc | 8 ++++----
scribo/src/binarization/sauvola_ms.cc | 9 +++++----
scribo/src/binarization/sauvola_ms_debug.cc | 9 +++++----
scribo/src/binarization/sauvola_ms_fg.cc | 8 ++++----
scribo/src/text_in_picture.cc | 7 ++++---
scribo/src/text_in_picture_neg.cc | 5 ++---
scribo/src/text_recognition_in_picture.cc | 9 +++++----
14 files changed, 69 insertions(+), 46 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index 7d766e9..9abe919 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,5 +1,23 @@
2011-03-01 Guillaume Lazzara <z(a)lrde.epita.fr>
+ Make use of mln::fun::v2v::rgb_to_luma.
+
+ * scribo/toolchain/internal/text_in_doc_preprocess_functor.hh,
+ * src/binarization/ppm_sauvola.cc,
+ * src/binarization/ppm_sauvola_ms.cc,
+ * src/binarization/ppm_sauvola_ms_fg.cc,
+ * src/binarization/ppm_sauvola_ms_split.cc,
+ * src/binarization/sauvola.cc,
+ * src/binarization/sauvola_debug.cc,
+ * src/binarization/sauvola_ms.cc,
+ * src/binarization/sauvola_ms_debug.cc,
+ * src/binarization/sauvola_ms_fg.cc,
+ * src/text_in_picture.cc,
+ * src/text_in_picture_neg.cc,
+ * src/text_recognition_in_picture.cc: Here.
+
+2011-03-01 Guillaume Lazzara <z(a)lrde.epita.fr>
+
* scribo/io/xml/load.hh: New XML loader.
2011-03-01 Guillaume Lazzara <z(a)lrde.epita.fr>
diff --git a/scribo/scribo/toolchain/internal/text_in_doc_preprocess_functor.hh b/scribo/scribo/toolchain/internal/text_in_doc_preprocess_functor.hh
index 6a9506b..6c0dd5a 100644
--- a/scribo/scribo/toolchain/internal/text_in_doc_preprocess_functor.hh
+++ b/scribo/scribo/toolchain/internal/text_in_doc_preprocess_functor.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +30,7 @@
#include <mln/core/concept/image.hh>
#include <mln/data/transform.hh>
#include <mln/data/convert.hh>
-#include <mln/fun/v2v/rgb_to_int_u.hh>
+#include <mln/fun/v2v/rgb_to_luma.hh>
#include <mln/subsampling/antialiased.hh>
#include <scribo/binarization/sauvola.hh>
@@ -208,7 +209,7 @@ namespace scribo
on_new_progress_label("Convert to gray-scale image");
image2d<value::int_u8>
intensity_ima = mln::data::transform(input_rgb,
- mln::fun::v2v::rgb_to_int_u<8>());
+ mln::fun::v2v::rgb_to_luma<value::int_u8>());
on_progress();
diff --git a/scribo/src/binarization/ppm_sauvola.cc b/scribo/src/binarization/ppm_sauvola.cc
index f0cd355..4732a02 100644
--- a/scribo/src/binarization/ppm_sauvola.cc
+++ b/scribo/src/binarization/ppm_sauvola.cc
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -27,7 +27,7 @@
#include <mln/io/ppm/load.hh>
#include <mln/io/pbm/save.hh>
#include <mln/data/transform.hh>
-#include <mln/fun/v2v/rgb_to_int_u.hh>
+#include <mln/fun/v2v/rgb_to_luma.hh>
#include <scribo/binarization/sauvola.hh>
#include <scribo/debug/usage.hh>
@@ -74,7 +74,8 @@ int main(int argc, char *argv[])
// Convert to Gray level image.
image2d<value::int_u8>
- input_gl = data::transform(input, mln::fun::v2v::rgb_to_int_u<8>());
+ input_gl = data::transform(input,
+ mln::fun::v2v::rgb_to_luma<value::int_u8>());
// Binarize
image2d<bool> out = scribo::binarization::sauvola(input_gl, w, k);
diff --git a/scribo/src/binarization/ppm_sauvola_ms.cc b/scribo/src/binarization/ppm_sauvola_ms.cc
index eb694c2..cff28f9 100644
--- a/scribo/src/binarization/ppm_sauvola_ms.cc
+++ b/scribo/src/binarization/ppm_sauvola_ms.cc
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,7 @@
#include <mln/io/ppm/load.hh>
#include <mln/io/pbm/save.hh>
#include <mln/data/transform.hh>
-#include <mln/fun/v2v/rgb_to_int_u.hh>
+#include <mln/fun/v2v/rgb_to_luma.hh>
#include <scribo/binarization/sauvola_ms.hh>
#include <scribo/debug/usage.hh>
@@ -110,7 +110,8 @@ int main(int argc, char *argv[])
// Convert to Gray level image.
image2d<value::int_u8>
- input_1_gl = data::transform(input_1, mln::fun::v2v::rgb_to_int_u<8>());
+ input_1_gl = data::transform(input_1,
+ mln::fun::v2v::rgb_to_luma<value::int_u8>());
// Binarize
image2d<bool>
diff --git a/scribo/src/binarization/ppm_sauvola_ms_fg.cc b/scribo/src/binarization/ppm_sauvola_ms_fg.cc
index 20f237f..a17ce9f 100644
--- a/scribo/src/binarization/ppm_sauvola_ms_fg.cc
+++ b/scribo/src/binarization/ppm_sauvola_ms_fg.cc
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -31,7 +31,7 @@
#include <mln/io/ppm/load.hh>
#include <mln/io/pbm/save.hh>
#include <mln/data/transform.hh>
-#include <mln/fun/v2v/rgb_to_int_u.hh>
+#include <mln/fun/v2v/rgb_to_luma.hh>
#include <scribo/binarization/sauvola_ms.hh>
#include <scribo/preprocessing/split_bg_fg.hh>
@@ -122,7 +122,7 @@ int main(int argc, char *argv[])
// Convert to Gray level image.
image2d<value::int_u8>
- fg_gl = data::transform(fg, mln::fun::v2v::rgb_to_int_u<8>());
+ fg_gl = data::transform(fg, mln::fun::v2v::rgb_to_luma<value::int_u8>());
// Binarize
image2d<bool>
diff --git a/scribo/src/binarization/ppm_sauvola_ms_split.cc b/scribo/src/binarization/ppm_sauvola_ms_split.cc
index bb98b38..92a0817 100644
--- a/scribo/src/binarization/ppm_sauvola_ms_split.cc
+++ b/scribo/src/binarization/ppm_sauvola_ms_split.cc
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,6 @@
#include <mln/io/ppm/load.hh>
#include <mln/io/pbm/save.hh>
#include <mln/data/transform.hh>
-#include <mln/fun/v2v/rgb_to_int_u.hh>
#include <scribo/binarization/sauvola_ms_split.hh>
#include <scribo/debug/usage.hh>
diff --git a/scribo/src/binarization/sauvola.cc b/scribo/src/binarization/sauvola.cc
index 0273071..e8047ab 100644
--- a/scribo/src/binarization/sauvola.cc
+++ b/scribo/src/binarization/sauvola.cc
@@ -29,7 +29,7 @@
#include <mln/io/magick/load.hh>
#include <mln/io/pbm/save.hh>
#include <mln/data/transform.hh>
-#include <mln/fun/v2v/rgb_to_int_u.hh>
+#include <mln/fun/v2v/rgb_to_luma.hh>
#include <scribo/binarization/sauvola.hh>
#include <scribo/debug/usage.hh>
@@ -77,7 +77,7 @@ int main(int argc, char *argv[])
// Convert to Gray level image.
image2d<value::int_u8>
- input_1_gl = data::transform(input, mln::fun::v2v::rgb_to_int_u<8>());
+ input_1_gl = data::transform(input, mln::fun::v2v::rgb_to_luma<value::int_u8>());
image2d<bool> out = scribo::binarization::sauvola(input_1_gl, w, k);
diff --git a/scribo/src/binarization/sauvola_debug.cc b/scribo/src/binarization/sauvola_debug.cc
index f723851..0c335a8 100644
--- a/scribo/src/binarization/sauvola_debug.cc
+++ b/scribo/src/binarization/sauvola_debug.cc
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -32,7 +32,7 @@
#include <mln/data/convert.hh>
#include <mln/data/saturate.hh>
-#include <mln/fun/v2v/rgb_to_int_u.hh>
+#include <mln/fun/v2v/rgb_to_luma.hh>
#include <scribo/binarization/local_threshold.hh>
#include <scribo/binarization/sauvola.hh>
@@ -116,7 +116,7 @@ int main(int argc, char *argv[])
image2d<value::int_u8>
gima = data::transform(input,
- mln::fun::v2v::rgb_to_int_u<8>());
+ mln::fun::v2v::rgb_to_luma<value::int_u8>());
image2d<bool>
diff --git a/scribo/src/binarization/sauvola_ms.cc b/scribo/src/binarization/sauvola_ms.cc
index 541b9e5..6d60ab4 100644
--- a/scribo/src/binarization/sauvola_ms.cc
+++ b/scribo/src/binarization/sauvola_ms.cc
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -31,7 +31,7 @@
#include <mln/io/magick/load.hh>
#include <mln/io/pbm/save.hh>
#include <mln/data/transform.hh>
-#include <mln/fun/v2v/rgb_to_int_u.hh>
+#include <mln/fun/v2v/rgb_to_luma.hh>
#include <scribo/binarization/sauvola_ms.hh>
#include <scribo/debug/usage.hh>
@@ -115,7 +115,8 @@ int main(int argc, char *argv[])
// Convert to Gray level image.
image2d<value::int_u8>
- input_1_gl = data::transform(input_1, mln::fun::v2v::rgb_to_int_u<8>());
+ input_1_gl = data::transform(input_1,
+ mln::fun::v2v::rgb_to_luma<value::int_u8>());
// Binarize
image2d<bool>
diff --git a/scribo/src/binarization/sauvola_ms_debug.cc b/scribo/src/binarization/sauvola_ms_debug.cc
index 6bf9837..70c1a9a 100644
--- a/scribo/src/binarization/sauvola_ms_debug.cc
+++ b/scribo/src/binarization/sauvola_ms_debug.cc
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -29,7 +29,7 @@
#include <mln/io/magick/load.hh>
#include <mln/io/pbm/save.hh>
#include <mln/data/transform.hh>
-#include <mln/fun/v2v/rgb_to_int_u.hh>
+#include <mln/fun/v2v/rgb_to_luma.hh>
#include <scribo/binarization/sauvola_ms.hh>
#include <scribo/debug/usage.hh>
@@ -124,7 +124,8 @@ int main(int argc, char *argv[])
// Convert to Gray level image.
image2d<value::int_u8>
- input_1_gl = data::transform(input_1, mln::fun::v2v::rgb_to_int_u<8>());
+ input_1_gl = data::transform(input_1,
+ mln::fun::v2v::rgb_to_luma<value::int_u8>());
// Binarize.
diff --git a/scribo/src/binarization/sauvola_ms_fg.cc b/scribo/src/binarization/sauvola_ms_fg.cc
index 4227db4..7ff9321 100644
--- a/scribo/src/binarization/sauvola_ms_fg.cc
+++ b/scribo/src/binarization/sauvola_ms_fg.cc
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -31,7 +31,7 @@
#include <mln/io/magick/load.hh>
#include <mln/io/pbm/save.hh>
#include <mln/data/transform.hh>
-#include <mln/fun/v2v/rgb_to_int_u.hh>
+#include <mln/fun/v2v/rgb_to_luma.hh>
#include <scribo/binarization/sauvola_ms.hh>
#include <scribo/preprocessing/split_bg_fg.hh>
@@ -102,7 +102,7 @@ int main(int argc, char *argv[])
// Convert to Gray level image.
image2d<value::int_u8>
- fg_gl = data::transform(fg, mln::fun::v2v::rgb_to_int_u<8>());
+ fg_gl = data::transform(fg, mln::fun::v2v::rgb_to_luma<value::int_u8>());
// Binarize
image2d<bool>
diff --git a/scribo/src/text_in_picture.cc b/scribo/src/text_in_picture.cc
index e2f30de..77cf7b6 100644
--- a/scribo/src/text_in_picture.cc
+++ b/scribo/src/text_in_picture.cc
@@ -40,7 +40,7 @@
#include <mln/value/rgb8.hh>
#include <mln/value/label_16.hh>
-#include <mln/fun/v2v/rgb_to_int_u.hh>
+#include <mln/fun/v2v/rgb_to_luma.hh>
#include <mln/subsampling/antialiased.hh>
@@ -236,7 +236,8 @@ int main(int argc, char* argv[])
std::cout << "** Using split_bg_fg" << std::endl;
image2d<value::rgb8>
fg = preprocessing::split_bg_fg(input_rgb, lambda, 32).second();
- intensity_ima = data::transform(fg, mln::fun::v2v::rgb_to_int_u<8>());
+ intensity_ima = data::transform(fg,
+ mln::fun::v2v::rgb_to_luma<value::int_u8>());
t_ = timer_;
std::cout << "Foreground extracted. " << t_ << std::endl;
@@ -253,7 +254,7 @@ int main(int argc, char* argv[])
timer_.start();
std::cout << "** Using data::transform(intensity)" << std::endl;
intensity_ima = data::transform(input_rgb,
- mln::fun::v2v::rgb_to_int_u<8>());
+ mln::fun::v2v::rgb_to_luma<value::int_u8>());
t_ = timer_;
std::cout << "Intensity image " << t_ << std::endl;
}
diff --git a/scribo/src/text_in_picture_neg.cc b/scribo/src/text_in_picture_neg.cc
index c1a4317..8d818e0 100644
--- a/scribo/src/text_in_picture_neg.cc
+++ b/scribo/src/text_in_picture_neg.cc
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -48,8 +49,6 @@
#include <mln/value/rgb8.hh>
#include <mln/value/label_16.hh>
-#include <mln/fun/v2v/rgb_to_int_u.hh>
-
#include <mln/data/wrap.hh>
#include <mln/draw/box.hh>
diff --git a/scribo/src/text_recognition_in_picture.cc b/scribo/src/text_recognition_in_picture.cc
index a5f93a7..8b76f48 100644
--- a/scribo/src/text_recognition_in_picture.cc
+++ b/scribo/src/text_recognition_in_picture.cc
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -51,7 +51,7 @@
#include <mln/value/rgb8.hh>
#include <mln/value/label_16.hh>
-#include <mln/fun/v2v/rgb_to_int_u.hh>
+#include <mln/fun/v2v/rgb_to_luma.hh>
#include <mln/data/wrap.hh>
@@ -253,7 +253,8 @@ int main(int argc, char* argv[])
// Extract foreground
image2d<value::rgb8>
fg = preprocessing::split_bg_fg(input_rgb, lambda, 32).second();
- intensity_ima = data::transform(fg, mln::fun::v2v::rgb_to_int_u<8>());
+ intensity_ima = data::transform(fg,
+ mln::fun::v2v::rgb_to_luma<value::int_u8>());
// // Perform an initial rotation if needed.
// // input_rgb = geom::rotate(input_rgb, -45, literal::black);
--
1.5.6.5
1
0
last-svn-commit-783-gb3c289f scribo/text/extract_lines.hh: Update code.
by Guillaume Lazzara 29 Mar '11
by Guillaume Lazzara 29 Mar '11
29 Mar '11
---
scribo/ChangeLog | 4 ++
scribo/scribo/text/extract_lines.hh | 68 ++++++++++++++++++++++------------
2 files changed, 48 insertions(+), 24 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index 9abe919..c41b0bb 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,5 +1,9 @@
2011-03-01 Guillaume Lazzara <z(a)lrde.epita.fr>
+ * scribo/text/extract_lines.hh: Update code.
+
+2011-03-01 Guillaume Lazzara <z(a)lrde.epita.fr>
+
Make use of mln::fun::v2v::rgb_to_luma.
* scribo/toolchain/internal/text_in_doc_preprocess_functor.hh,
diff --git a/scribo/scribo/text/extract_lines.hh b/scribo/scribo/text/extract_lines.hh
index 1a25cc8..b81cb79 100644
--- a/scribo/scribo/text/extract_lines.hh
+++ b/scribo/scribo/text/extract_lines.hh
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -33,13 +33,14 @@
# include <mln/core/concept/image.hh>
-# include <mln/value/label_16.hh>
+# include <mln/value/int_u16.hh>
# include <scribo/core/line_set.hh>
# include <scribo/primitive/extract/components.hh>
# include <scribo/primitive/link/merge_double_link.hh>
+# include <scribo/primitive/link/internal/dmax_width_and_height.hh>
# include <scribo/primitive/link/with_single_left_link_dmax_ratio.hh>
# include <scribo/primitive/link/with_single_right_link_dmax_ratio.hh>
@@ -65,11 +66,18 @@ namespace scribo
/*!
** \param[in] input A binary image.
** \param[in] nbh A neighborhood used for labeling.
+ ** \param[in] seps A binary image with separator information.
**
** \return A set of lines.
*/
template <typename I, typename N>
- line_set<mln_ch_value(I,value::label_16)>
+ line_set<mln_ch_value(I,value::int_u16)>
+ extract_lines(const Image<I>& input_, const Neighborhood<N>& nbh_,
+ const mln_ch_value(I,bool)& separators);
+
+ /// \overload
+ template <typename I, typename N>
+ line_set<mln_ch_value(I,value::int_u16)>
extract_lines(const Image<I>& input, const Neighborhood<N>& nbh);
@@ -77,8 +85,18 @@ namespace scribo
template <typename I, typename N>
- line_set<mln_ch_value(I,value::label_16)>
- extract_lines(const Image<I>& input_, const Neighborhood<N>& nbh_)
+ line_set<mln_ch_value(I,value::int_u16)>
+ extract_lines(const Image<I>& input, const Neighborhood<N>& nbh)
+ {
+ mln_ch_value(I,bool) seps;
+ return extract_lines(input, nbh, seps);
+ }
+
+
+ template <typename I, typename N>
+ line_set<mln_ch_value(I,value::int_u16)>
+ extract_lines(const Image<I>& input_, const Neighborhood<N>& nbh_,
+ const mln_ch_value(I,bool)& separators)
{
trace::entering("scribo::text::extract_lines");
@@ -88,44 +106,46 @@ namespace scribo
mln_precondition(input.is_valid());
mln_precondition(nbh.is_valid());
- typedef mln_ch_value(I,value::label_16) L;
-
/// Finding comps.
- value::label_16 ncomps;
+ typedef mln_ch_value(I,value::int_u16) L;
+ value::int_u16 ncomps;
component_set<L>
- comps = scribo::primitive::extract::components(input, nbh, ncomps);
+ comps = scribo::primitive::extract::components(input, c8(), ncomps);
/// First filtering.
- component_set<L> filtered_comps
- = scribo::filter::components_small(comps, 6);
+ comps = scribo::filter::components_small(comps, 3);
+
+ /// Use separators.
+ if (exact(separators).is_valid())
+ comps.add_separators(separators);
/// Linking potential comps
object_links<L> left_link
- = primitive::link::with_single_left_link_dmax_ratio(filtered_comps);
+ = primitive::link::with_single_left_link_dmax_ratio(comps,
+ primitive::link::internal::dmax_width_and_height(1),
+ anchor::MassCenter);
object_links<L> right_link
- = primitive::link::with_single_right_link_dmax_ratio(filtered_comps);
-
+ = primitive::link::with_single_right_link_dmax_ratio(comps,
+ primitive::link::internal::dmax_width_and_height(1),
+ anchor::MassCenter);
// Validating left and right links.
object_links<L>
merged_links = primitive::link::merge_double_link(left_link,
- right_link);
+ right_link);
- // Remove links if bboxes have too different sizes.
- object_links<L> hratio_filtered_links
- = filter::object_links_bbox_h_ratio(merged_links, 2.0f);
+ object_links<L> hratio_filtered_links
+ = filter::object_links_bbox_h_ratio(merged_links, 2.5f);
object_groups<L>
groups = primitive::group::from_single_link(hratio_filtered_links);
-
- line_set<L> line = scribo::make::line_set(groups);
- line = text::merging(line);
-
+ line_set<L> lines(groups);
+ lines = text::merging(lines);
trace::exiting("scribo::text::extract_lines");
- return line;
+ return lines;
}
# endif // ! MLN_INCLUDE_ONLY
--
1.5.6.5
1
0
* scribo/src/debug/Makefile.am: New targets.
* scribo/src/debug/show_separators.cc,
* scribo/src/debug/show_stoppers.cc,
* scribo/src/debug/show_text_lines.cc: New.
---
scribo/ChangeLog | 10 ++
scribo/src/debug/Makefile.am | 12 ++-
.../lines_pattern.cc => debug/show_separators.cc} | 74 +++++++++-----
scribo/src/debug/show_stoppers.cc | 104 ++++++++++++++++++++
.../show_text_lines.cc} | 100 +++++++++++--------
5 files changed, 225 insertions(+), 75 deletions(-)
copy scribo/src/{primitive/extract/lines_pattern.cc => debug/show_separators.cc} (50%)
create mode 100644 scribo/src/debug/show_stoppers.cc
copy scribo/src/{text/pbm_lines_recognition.cc => debug/show_text_lines.cc} (52%)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index c41b0bb..1eb71a3 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,5 +1,15 @@
2011-03-01 Guillaume Lazzara <z(a)lrde.epita.fr>
+ Add new debug tools.
+
+ * scribo/src/debug/Makefile.am: New targets.
+
+ * scribo/src/debug/show_separators.cc,
+ * scribo/src/debug/show_stoppers.cc,
+ * scribo/src/debug/show_text_lines.cc: New.
+
+2011-03-01 Guillaume Lazzara <z(a)lrde.epita.fr>
+
* scribo/text/extract_lines.hh: Update code.
2011-03-01 Guillaume Lazzara <z(a)lrde.epita.fr>
diff --git a/scribo/src/debug/Makefile.am b/scribo/src/debug/Makefile.am
index d203f5c..cdb1f30 100644
--- a/scribo/src/debug/Makefile.am
+++ b/scribo/src/debug/Makefile.am
@@ -1,5 +1,5 @@
-# Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-# (LRDE).
+# Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+# Laboratory (LRDE).
#
# This file is part of Olena.
#
@@ -20,6 +20,7 @@ include $(top_srcdir)/scribo/scribo.mk
noinst_PROGRAMS = \
show_info_x_height \
show_info_median_inter_characters \
+ show_separators \
show_links_left_right_links_validation \
show_links_bbox_h_ratio \
show_links_bbox_overlap \
@@ -43,11 +44,14 @@ noinst_PROGRAMS = \
show_objects_large_small \
show_objects_small \
show_objects_thick \
- show_objects_thin
+ show_objects_thin \
+ show_stoppers \
+ show_text_lines
show_info_x_height_SOURCES = show_info_x_height.cc
show_info_median_inter_characters_SOURCES = show_info_median_inter_characters.cc
+show_separators_SOURCES = show_separators.cc
show_links_left_right_links_validation_SOURCES = show_links_left_right_links_validation.cc
show_links_bbox_h_ratio_SOURCES = show_links_bbox_h_ratio.cc
show_links_bbox_overlap_SOURCES = show_links_bbox_overlap.cc
@@ -72,6 +76,8 @@ show_objects_large_small_SOURCES = show_objects_large_small.cc
show_objects_small_SOURCES = show_objects_small.cc
show_objects_thick_SOURCES = show_objects_thick.cc
show_objects_thin_SOURCES = show_objects_thin.cc
+show_stoppers_SOURCES = show_stoppers.cc
+show_text_lines_SOURCES = show_text_lines.cc
if HAVE_MAGICKXX
diff --git a/scribo/src/primitive/extract/lines_pattern.cc b/scribo/src/debug/show_separators.cc
similarity index 50%
copy from scribo/src/primitive/extract/lines_pattern.cc
copy to scribo/src/debug/show_separators.cc
index cb56b36..ef80da6 100644
--- a/scribo/src/primitive/extract/lines_pattern.cc
+++ b/scribo/src/debug/show_separators.cc
@@ -1,5 +1,4 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2011 EPITA Research and Development Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -14,33 +13,25 @@
//
// 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.
#include <mln/core/image/image2d.hh>
+#include <mln/core/alias/box2d.hh>
+#include <mln/core/alias/neighb2d.hh>
#include <mln/io/pbm/all.hh>
-#include <mln/pw/all.hh>
-#include <mln/data/fill.hh>
-#include <mln/core/image/dmorph/image_if.hh>
+#include <mln/arith/plus.hh>
+#include <mln/labeling/foreground.hh>
#include <scribo/primitive/extract/lines_h_pattern.hh>
#include <scribo/primitive/extract/lines_v_pattern.hh>
#include <scribo/debug/usage.hh>
+#include <scribo/debug/save_bboxes_image.hh>
const char *args_desc[][2] =
{
- { "input.pbm", "A binary image." },
- { "length", " Minimum line length. (Common value : 51)" },
+ { "length", " Minimum line length. (default: 101)" },
{ "delta", " Distance between the object pixel and the background pixel"
- "(Common value : 4)" },
+ "(default: 4)" },
{0, 0}
};
@@ -49,10 +40,10 @@ int main(int argc, char *argv[])
{
using namespace mln;
- if (argc != 5)
+ if (argc != 7 && argc != 5)
return scribo::debug::usage(argv,
- "Extract horizontal lines patterns",
- "input.pbm length delta output.pbm",
+ "Extract horizontal and vertical lines patterns",
+ "input.pbm output.pbm input_wo_seps.pbm output.ppm length delta",
args_desc);
trace::entering("main");
@@ -60,19 +51,46 @@ int main(int argc, char *argv[])
image2d<bool> input;
io::pbm::load(input, argv[1]);
+ // Set default option value
+ unsigned
+ length = 101,
+ delta = 4;
+ if (argc > 5)
+ {
+ length = atoi(argv[5]);
+ delta = atoi(argv[6]);
+ }
+
+ util::timer t;
+ t.start();
+
image2d<bool>
- h_lines = scribo::primitive::extract::lines_h_pattern(input,
- atoi(argv[2]),
- atoi(argv[3]));
+ h_lines = scribo::primitive::extract::lines_h_pattern(input, length, delta);
image2d<bool>
- v_lines = scribo::primitive::extract::lines_v_pattern(input,
- atoi(argv[2]),
- atoi(argv[3]));
+ v_lines = scribo::primitive::extract::lines_v_pattern(input, length, delta);
+
+ v_lines += h_lines;
+
+ t.stop();
+ std::cout << t << "s" << std::endl;
+
+ // Save binary image.
+ io::pbm::save(v_lines, argv[2]);
- data::fill((v_lines | pw::value(h_lines)).rw(), true);
+ // Save input without separators
+ {
+ image2d<bool> in_wo_seps = duplicate(input);
+ data::fill((in_wo_seps | pw::value(v_lines)).rw(), false);
+ io::pbm::save(in_wo_seps, argv[3]);
+ }
- io::pbm::save(v_lines, argv[4]);
+ // Save bbox image
+ value::int_u8 nlabels;
+ image2d<value::int_u8> lbl = labeling::foreground(v_lines, c4(), nlabels);
+ mln::util::array<box2d>
+ bbox = labeling::compute(accu::shape::bbox<point2d>(), lbl, nlabels);
+ scribo::debug::save_bboxes_image(input, bbox, argv[4], literal::red);
trace::exiting("main");
}
diff --git a/scribo/src/debug/show_stoppers.cc b/scribo/src/debug/show_stoppers.cc
new file mode 100644
index 0000000..a108da1
--- /dev/null
+++ b/scribo/src/debug/show_stoppers.cc
@@ -0,0 +1,104 @@
+// Copyright (C) 2011 EPITA Research and Development Laboratory (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/>.
+
+#include <mln/core/image/image2d.hh>
+#include <mln/core/alias/box2d.hh>
+#include <mln/core/alias/neighb2d.hh>
+#include <mln/io/pbm/all.hh>
+#include <mln/arith/plus.hh>
+#include <mln/labeling/foreground.hh>
+
+#include <scribo/primitive/extract/lines_h_pattern.hh>
+#include <scribo/primitive/extract/lines_v_pattern.hh>
+#include <scribo/primitive/extract/separators_nonvisible.hh>
+#include <scribo/debug/usage.hh>
+#include <scribo/debug/save_bboxes_image.hh>
+
+
+const char *args_desc[][2] =
+{
+ { "length", " Minimum line length. (default: 101)" },
+ { "delta", " Distance between the object pixel and the background pixel"
+ "(default: 4)" },
+ {0, 0}
+};
+
+
+int main(int argc, char *argv[])
+{
+ using namespace mln;
+
+ if (argc != 7 && argc != 5)
+ return scribo::debug::usage(argv,
+ "Extract horizontal, vertical lines and stoppers",
+ "input.pbm output.pbm input_wo_seps.pbm output.ppm length delta",
+ args_desc);
+
+ trace::entering("main");
+
+ image2d<bool> input;
+ io::pbm::load(input, argv[1]);
+
+ // Set default option value
+ unsigned
+ length = 101,
+ delta = 4;
+ if (argc > 5)
+ {
+ length = atoi(argv[5]);
+ delta = atoi(argv[6]);
+ }
+
+ util::timer t;
+
+ t.start();
+ image2d<bool>
+ h_lines = scribo::primitive::extract::lines_h_pattern(input, length, delta);
+
+ image2d<bool>
+ v_lines = scribo::primitive::extract::lines_v_pattern(input, length, delta);
+
+ v_lines += h_lines;
+
+ t.stop();
+
+ // Save input without separators
+ {
+ image2d<bool> in_wo_seps = duplicate(input);
+ data::fill((in_wo_seps | pw::value(v_lines)).rw(), false);
+ io::pbm::save(in_wo_seps, argv[3]);
+ }
+
+ // Save bbox image
+ value::int_u8 nlabels;
+ image2d<value::int_u8> lbl = labeling::foreground(v_lines, c4(), nlabels);
+ mln::util::array<box2d>
+ bbox = labeling::compute(accu::shape::bbox<point2d>(), lbl, nlabels);
+ scribo::debug::save_bboxes_image(input, bbox, argv[4], literal::red);
+
+ t.resume();
+
+ // Non visible separators
+ v_lines += scribo::primitive::extract::separators_nonvisible(input);
+
+ t.stop();
+ std::cout << t << "s" << std::endl;
+
+ // Save binary image.
+ io::pbm::save(v_lines, argv[2]);
+
+ trace::exiting("main");
+}
diff --git a/scribo/src/text/pbm_lines_recognition.cc b/scribo/src/debug/show_text_lines.cc
similarity index 52%
copy from scribo/src/text/pbm_lines_recognition.cc
copy to scribo/src/debug/show_text_lines.cc
index 3451449..a031072 100644
--- a/scribo/src/text/pbm_lines_recognition.cc
+++ b/scribo/src/debug/show_text_lines.cc
@@ -1,4 +1,4 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2011 EPITA Research and Development Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -23,15 +23,15 @@
// exception does not however invalidate any other reasons why the
// executable file might be covered by the GNU General Public License.
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
#include <iostream>
#include <mln/core/image/image2d.hh>
#include <mln/io/pbm/load.hh>
#include <mln/value/int_u16.hh>
+#include <mln/draw/box_plain.hh>
+#include <mln/pw/all.hh>
+#include <mln/core/image/dmorph/image_if.hh>
+#include <mln/data/convert.hh>
#include <scribo/text/recognition.hh>
@@ -41,19 +41,15 @@
#include <scribo/core/object_links.hh>
#include <scribo/core/object_groups.hh>
-#include <scribo/text/merging.hh>
-#include <scribo/primitive/extract/components.hh>
-#include <scribo/primitive/link/with_single_left_link_dmax_ratio.hh>
-#include <scribo/primitive/group/from_single_link.hh>
+#include <scribo/text/extract_lines.hh>
#include <scribo/io/text_boxes/save.hh>
+#include <scribo/debug/save_bboxes_image.hh>
+
const char *args_desc[][2] =
{
- { "input.pbm", "A binary image. 'True' for objects, 'False'\
-for the background." },
- { "lang", "Must be set to \"eng\", \"fra\", \"deu\", \"spa\", \"ita\" (Default \"fra\")" },
{0, 0}
};
@@ -64,10 +60,10 @@ int main(int argc, char* argv[])
using namespace scribo;
using namespace mln;
- if (argc != 2 && argc != 3 && argc != 4)
+ if (argc != 6)
return scribo::debug::usage(argv,
- "Text recognition",
- "input.pbm [lang] [file]",
+ "Show text lines",
+ "input.pbm input_seps.pbm out.ppm out.pbm comps.pbm",
args_desc);
trace::entering("main");
@@ -75,37 +71,53 @@ int main(int argc, char* argv[])
image2d<bool> input;
mln::io::pbm::load(input, argv[1]);
- typedef image2d<value::int_u16> L;
- value::int_u16 ncomps;
- component_set<L>
- comps = scribo::primitive::extract::components(input, c8(), ncomps);
- std::cout << "ncomps = " << ncomps << std::endl;
-
- object_links<L>
- links = scribo::primitive::link::with_single_left_link_dmax_ratio(comps, 2);
-
- object_groups<L>
- groups = scribo::primitive::group::from_single_link(links);
+ image2d<bool> input_seps;
+ mln::io::pbm::load(input_seps, argv[2]);
- line_set<L> lines(groups);
- lines = text::merging(lines);
+ util::timer t;
+ t.start();
- std::string str = argv[2];
- const char *lang;
- if (argc < 3 || (str != "eng" && str != "fra"
- && str != "deu" && str != "spa"
- && str != "ita"))
- lang = "fra";
- else
- lang = argv[2];
-
- char *output = 0;
- if (argc >= 4)
- output = argv[3];
-
- scribo::text::recognition(lines, lang);
-
- scribo::io::text_boxes::save(lines, output);
+ typedef image2d<value::int_u16> L;
+ line_set<L> lines = text::extract_lines(input, c8(), input_seps);
+
+ t.stop();
+ std::cout << t << "s" << std::endl;
+
+ // Color image with line bboxes.
+ {
+ image2d<value::rgb8> output = data::convert(value::rgb8(), input);
+ for_all_lines(l, lines)
+ if (lines(l).is_textline())
+ mln::draw::box(output, lines(l).bbox(), literal::red);
+ mln::io::ppm::save(output, argv[3]);
+ }
+
+ // Binary image with line bboxes.
+ {
+ image2d<bool> output;
+ initialize(output, input);
+ data::fill(output, false);
+ for_all_lines(l, lines)
+ if (lines(l).is_textline())
+ mln::draw::box_plain(output, lines(l).bbox(), true);
+ mln::io::pbm::save(output, argv[4]);
+ }
+
+ {
+ image2d<bool> output;
+ initialize(output, input);
+ data::fill(output, false);
+ for_all_lines(l, lines)
+ if (lines(l).is_textline())
+ {
+ const util::array<component_id_t>& comps = lines(l).components();
+ const L& lbl = lines.components().labeled_image();
+ for_all_elements(c, comps)
+ data::fill((output | lines.components()(comps(c)).bbox()).rw(),
+ ((input | lines.components()(comps(c)).bbox()) | (pw::value(lbl) == comps(c))));
+ }
+ mln::io::pbm::save(output, argv[5]);
+ }
trace::exiting("main");
}
--
1.5.6.5
1
0
last-svn-commit-785-g4d0483d scribo/primitive/extract/non_text.hh: Remove debug.
by Guillaume Lazzara 29 Mar '11
by Guillaume Lazzara 29 Mar '11
29 Mar '11
---
scribo/ChangeLog | 4 ++++
scribo/scribo/primitive/extract/non_text.hh | 21 ---------------------
2 files changed, 4 insertions(+), 21 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index 1eb71a3..9914b73 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,5 +1,9 @@
2011-03-01 Guillaume Lazzara <z(a)lrde.epita.fr>
+ * scribo/primitive/extract/non_text.hh: Remove debug.
+
+2011-03-01 Guillaume Lazzara <z(a)lrde.epita.fr>
+
Add new debug tools.
* scribo/src/debug/Makefile.am: New targets.
diff --git a/scribo/scribo/primitive/extract/non_text.hh b/scribo/scribo/primitive/extract/non_text.hh
index a017f1f..8528782 100644
--- a/scribo/scribo/primitive/extract/non_text.hh
+++ b/scribo/scribo/primitive/extract/non_text.hh
@@ -58,10 +58,6 @@
# include <mln/clustering/kmean_rgb.hh>
# include <mln/fun/v2v/rgb8_to_rgbn.hh>
-# include <mln/util/timer.hh>
-
-# include <mln/io/pbm/save.hh>
-
namespace scribo
{
@@ -139,16 +135,9 @@ namespace scribo
image2d<t_rgb5>
img_rgb5 = mln::data::transform(doc.image(), t_rgb8_to_rgb5());
- // DEBUG
- io::pbm::save(content, "text_area.pbm");
-
- mln::util::timer t;
- t.start();
img_lbl8 =
mln::clustering::kmean_rgb<double,5>((img_rgb5 | pw::value(content)), 3, 10, 10).unmorph_();
data::fill((img_lbl8 | !pw::value(content)).rw(), 0u);
- t.stop();
- std::cout << t << std::endl;
mln::util::array<unsigned>
card = mln::labeling::compute(accu::math::count<value::label_8>(),
@@ -178,19 +167,9 @@ namespace scribo
data::fill(elts, false);
data::fill((elts | (pw::value(img_lbl8) != pw::cst(0))).rw(), true);
- // DEBUG
- data::fill((elts | (pw::value(doc.line_seps()) != pw::cst(0))).rw(),
- false);
- // END OF DEBUG
-
-
scribo::def::lbl_type nlabels;
elts = filter::components_small(elts, c8(), nlabels, 40);
- // DEBUG
- io::pbm::save(elts, "elements.pbm");
- // END OF DEBUG
-
output = primitive::extract::components(elts, c8(), nlabels);
}
--
1.5.6.5
1
0
* scribo/headers.mk,
* scribo/tests/unit_test/unit-tests.mk: Regen.
* scribo/tests/unit_test/cond_tests_qt: Add scribo/io/xml/load.hh.
---
scribo/ChangeLog | 9 +++++++++
scribo/headers.mk | 13 ++++++++++++-
scribo/tests/unit_test/cond_tests_qt | 1 +
scribo/tests/unit_test/unit-tests.mk | 30 +++++++++++++++++++++++++++---
4 files changed, 49 insertions(+), 4 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index 9914b73..a300b37 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,3 +1,12 @@
+2011-03-02 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Regen mk files.
+
+ * scribo/headers.mk,
+ * scribo/tests/unit_test/unit-tests.mk: Regen.
+
+ * scribo/tests/unit_test/cond_tests_qt: Add scribo/io/xml/load.hh.
+
2011-03-01 Guillaume Lazzara <z(a)lrde.epita.fr>
* scribo/primitive/extract/non_text.hh: Remove debug.
diff --git a/scribo/headers.mk b/scribo/headers.mk
index 7603f8a..0b21a3f 100644
--- a/scribo/headers.mk
+++ b/scribo/headers.mk
@@ -14,17 +14,22 @@ scribo/binarization/sauvola_ms.hh \
scribo/binarization/sauvola_ms_split.hh \
scribo/binarization/sauvola_threshold_image.hh \
scribo/canvas/integral_browsing.hh \
+scribo/convert/from_base64.hh \
scribo/convert/from_qimage.hh \
+scribo/convert/to_base64.hh \
scribo/core/all.hh \
scribo/core/central_sites.hh \
scribo/core/component_info.hh \
scribo/core/component_set.hh \
scribo/core/concept/dmax_functor.hh \
scribo/core/concept/link_functor.hh \
+scribo/core/concept/serializable.hh \
+scribo/core/concept/serialize_visitor.hh \
scribo/core/def/lbl_type.hh \
scribo/core/document.hh \
scribo/core/erase_objects.hh \
scribo/core/init_integral_image.hh \
+scribo/core/internal/doc_xml_serializer.hh \
scribo/core/line_info.hh \
scribo/core/line_links.hh \
scribo/core/line_set.hh \
@@ -93,6 +98,12 @@ scribo/fun/v2b/label_to_bool.hh \
scribo/fun/v2b/objects_large_filter.hh \
scribo/fun/v2b/objects_small_filter.hh \
scribo/io/text_boxes/save.hh \
+scribo/io/xml/internal/extended_page_xml_visitor.hh \
+scribo/io/xml/internal/full_xml_visitor.hh \
+scribo/io/xml/internal/page_xml_visitor.hh \
+scribo/io/xml/internal/print_box_coords.hh \
+scribo/io/xml/internal/print_page_preambule.hh \
+scribo/io/xml/load.hh \
scribo/io/xml/save.hh \
scribo/make/all.hh \
scribo/make/debug_filename.hh \
@@ -115,7 +126,6 @@ scribo/primitive/extract/all.hh \
scribo/primitive/extract/canvas.hh \
scribo/primitive/extract/cells.hh \
scribo/primitive/extract/components.hh \
-scribo/primitive/extract/elements.hh \
scribo/primitive/extract/horizontal_separators.hh \
scribo/primitive/extract/lines_discontinued.hh \
scribo/primitive/extract/lines_h_discontinued.hh \
@@ -130,6 +140,7 @@ scribo/primitive/extract/lines_v_pattern.hh \
scribo/primitive/extract/lines_v_single.hh \
scribo/primitive/extract/lines_v_thick.hh \
scribo/primitive/extract/lines_v_thick_and_single.hh \
+scribo/primitive/extract/non_text.hh \
scribo/primitive/extract/separators.hh \
scribo/primitive/extract/separators_nonvisible.hh \
scribo/primitive/extract/vertical_separators.hh \
diff --git a/scribo/tests/unit_test/cond_tests_qt b/scribo/tests/unit_test/cond_tests_qt
index 5428215..577f9e6 100644
--- a/scribo/tests/unit_test/cond_tests_qt
+++ b/scribo/tests/unit_test/cond_tests_qt
@@ -1 +1,2 @@
scribo/convert/from_qimage.hh
+scribo/io/xml/load.hh
diff --git a/scribo/tests/unit_test/unit-tests.mk b/scribo/tests/unit_test/unit-tests.mk
index 6a8f29d..71b0b5b 100644
--- a/scribo/tests/unit_test/unit-tests.mk
+++ b/scribo/tests/unit_test/unit-tests.mk
@@ -19,11 +19,15 @@ endif HAVE_MAGICKXX
# Starting a conditional unit test list.
if HAVE_QT
check_PROGRAMS += \
-scribo_convert_from_qimage
+scribo_convert_from_qimage \
+scribo_io_xml_load
scribo_convert_from_qimage_CPPFLAGS= ${QT_CPPFLAGS} ${AM_CPPFLAGS}
scribo_convert_from_qimage_LDFLAGS= ${QT_LDFLAGS} ${AM_LDFLAGS}
scribo_convert_from_qimage_SOURCES = scribo_convert_from_qimage.cc
+scribo_io_xml_load_CPPFLAGS= ${QT_CPPFLAGS} ${AM_CPPFLAGS}
+scribo_io_xml_load_LDFLAGS= ${QT_LDFLAGS} ${AM_LDFLAGS}
+scribo_io_xml_load_SOURCES = scribo_io_xml_load.cc
endif HAVE_QT
# Starting a conditional unit test list.
@@ -79,16 +83,21 @@ scribo_binarization_sauvola_ms \
scribo_binarization_sauvola_ms_split \
scribo_binarization_sauvola_threshold_image \
scribo_canvas_integral_browsing \
+scribo_convert_from_base64 \
+scribo_convert_to_base64 \
scribo_core_all \
scribo_core_central_sites \
scribo_core_component_info \
scribo_core_component_set \
scribo_core_concept_dmax_functor \
scribo_core_concept_link_functor \
+scribo_core_concept_serializable \
+scribo_core_concept_serialize_visitor \
scribo_core_def_lbl_type \
scribo_core_document \
scribo_core_erase_objects \
scribo_core_init_integral_image \
+scribo_core_internal_doc_xml_serializer \
scribo_core_line_info \
scribo_core_line_links \
scribo_core_line_set \
@@ -157,6 +166,11 @@ scribo_fun_v2b_label_to_bool \
scribo_fun_v2b_objects_large_filter \
scribo_fun_v2b_objects_small_filter \
scribo_io_text_boxes_save \
+scribo_io_xml_internal_extended_page_xml_visitor \
+scribo_io_xml_internal_full_xml_visitor \
+scribo_io_xml_internal_page_xml_visitor \
+scribo_io_xml_internal_print_box_coords \
+scribo_io_xml_internal_print_page_preambule \
scribo_io_xml_save \
scribo_make_all \
scribo_make_debug_filename \
@@ -179,7 +193,6 @@ scribo_primitive_extract_all \
scribo_primitive_extract_canvas \
scribo_primitive_extract_cells \
scribo_primitive_extract_components \
-scribo_primitive_extract_elements \
scribo_primitive_extract_horizontal_separators \
scribo_primitive_extract_lines_discontinued \
scribo_primitive_extract_lines_h_discontinued \
@@ -194,6 +207,7 @@ scribo_primitive_extract_lines_v_pattern \
scribo_primitive_extract_lines_v_single \
scribo_primitive_extract_lines_v_thick \
scribo_primitive_extract_lines_v_thick_and_single \
+scribo_primitive_extract_non_text \
scribo_primitive_extract_separators \
scribo_primitive_extract_separators_nonvisible \
scribo_primitive_extract_vertical_separators \
@@ -286,16 +300,21 @@ scribo_binarization_sauvola_ms_SOURCES = scribo_binarization_sauvola_ms.cc
scribo_binarization_sauvola_ms_split_SOURCES = scribo_binarization_sauvola_ms_split.cc
scribo_binarization_sauvola_threshold_image_SOURCES = scribo_binarization_sauvola_threshold_image.cc
scribo_canvas_integral_browsing_SOURCES = scribo_canvas_integral_browsing.cc
+scribo_convert_from_base64_SOURCES = scribo_convert_from_base64.cc
+scribo_convert_to_base64_SOURCES = scribo_convert_to_base64.cc
scribo_core_all_SOURCES = scribo_core_all.cc
scribo_core_central_sites_SOURCES = scribo_core_central_sites.cc
scribo_core_component_info_SOURCES = scribo_core_component_info.cc
scribo_core_component_set_SOURCES = scribo_core_component_set.cc
scribo_core_concept_dmax_functor_SOURCES = scribo_core_concept_dmax_functor.cc
scribo_core_concept_link_functor_SOURCES = scribo_core_concept_link_functor.cc
+scribo_core_concept_serializable_SOURCES = scribo_core_concept_serializable.cc
+scribo_core_concept_serialize_visitor_SOURCES = scribo_core_concept_serialize_visitor.cc
scribo_core_def_lbl_type_SOURCES = scribo_core_def_lbl_type.cc
scribo_core_document_SOURCES = scribo_core_document.cc
scribo_core_erase_objects_SOURCES = scribo_core_erase_objects.cc
scribo_core_init_integral_image_SOURCES = scribo_core_init_integral_image.cc
+scribo_core_internal_doc_xml_serializer_SOURCES = scribo_core_internal_doc_xml_serializer.cc
scribo_core_line_info_SOURCES = scribo_core_line_info.cc
scribo_core_line_links_SOURCES = scribo_core_line_links.cc
scribo_core_line_set_SOURCES = scribo_core_line_set.cc
@@ -364,6 +383,11 @@ scribo_fun_v2b_label_to_bool_SOURCES = scribo_fun_v2b_label_to_bool.cc
scribo_fun_v2b_objects_large_filter_SOURCES = scribo_fun_v2b_objects_large_filter.cc
scribo_fun_v2b_objects_small_filter_SOURCES = scribo_fun_v2b_objects_small_filter.cc
scribo_io_text_boxes_save_SOURCES = scribo_io_text_boxes_save.cc
+scribo_io_xml_internal_extended_page_xml_visitor_SOURCES = scribo_io_xml_internal_extended_page_xml_visitor.cc
+scribo_io_xml_internal_full_xml_visitor_SOURCES = scribo_io_xml_internal_full_xml_visitor.cc
+scribo_io_xml_internal_page_xml_visitor_SOURCES = scribo_io_xml_internal_page_xml_visitor.cc
+scribo_io_xml_internal_print_box_coords_SOURCES = scribo_io_xml_internal_print_box_coords.cc
+scribo_io_xml_internal_print_page_preambule_SOURCES = scribo_io_xml_internal_print_page_preambule.cc
scribo_io_xml_save_SOURCES = scribo_io_xml_save.cc
scribo_make_all_SOURCES = scribo_make_all.cc
scribo_make_debug_filename_SOURCES = scribo_make_debug_filename.cc
@@ -386,7 +410,6 @@ scribo_primitive_extract_all_SOURCES = scribo_primitive_extract_all.cc
scribo_primitive_extract_canvas_SOURCES = scribo_primitive_extract_canvas.cc
scribo_primitive_extract_cells_SOURCES = scribo_primitive_extract_cells.cc
scribo_primitive_extract_components_SOURCES = scribo_primitive_extract_components.cc
-scribo_primitive_extract_elements_SOURCES = scribo_primitive_extract_elements.cc
scribo_primitive_extract_horizontal_separators_SOURCES = scribo_primitive_extract_horizontal_separators.cc
scribo_primitive_extract_lines_discontinued_SOURCES = scribo_primitive_extract_lines_discontinued.cc
scribo_primitive_extract_lines_h_discontinued_SOURCES = scribo_primitive_extract_lines_h_discontinued.cc
@@ -401,6 +424,7 @@ scribo_primitive_extract_lines_v_pattern_SOURCES = scribo_primitive_extract_line
scribo_primitive_extract_lines_v_single_SOURCES = scribo_primitive_extract_lines_v_single.cc
scribo_primitive_extract_lines_v_thick_SOURCES = scribo_primitive_extract_lines_v_thick.cc
scribo_primitive_extract_lines_v_thick_and_single_SOURCES = scribo_primitive_extract_lines_v_thick_and_single.cc
+scribo_primitive_extract_non_text_SOURCES = scribo_primitive_extract_non_text.cc
scribo_primitive_extract_separators_SOURCES = scribo_primitive_extract_separators.cc
scribo_primitive_extract_separators_nonvisible_SOURCES = scribo_primitive_extract_separators_nonvisible.cc
scribo_primitive_extract_vertical_separators_SOURCES = scribo_primitive_extract_vertical_separators.cc
--
1.5.6.5
1
0
* scribo/convert/from_base64.hh: Remove guards HAVE_QT.
* scribo/core/document.hh: Initialize ImageMagick.
* scribo/io/xml/internal/html_markups_replace.hh: Remove. Move code...
* scribo/core/line_info.hh: ... here.
* scribo/core/line_links.hh: Make use of is_textline method.
* scribo/core/paragraph_info.hh: Add nlines method.
* scribo/core/paragraph_set.hh: Add a construction routine using a
line_set.
* scribo/io/xml/internal/extended_page_xml_visitor.hh,
* scribo/io/xml/internal/print_box_coords.hh,
* scribo/io/xml/internal/print_page_preambule.hh,
* src/primitive/extract/separators_nonvisible.cc: Fix includes.
* scribo/io/xml/save.hh: Add a precondition.
* scribo/text/extract_lines.hh,
* src/debug/show_info_median_inter_characters.cc,
* src/debug/show_info_x_height.cc,
* src/debug/show_text_lines.cc: Fix label type.
---
scribo/ChangeLog | 30 ++++++
scribo/scribo/convert/from_base64.hh | 8 --
scribo/scribo/core/document.hh | 1 +
scribo/scribo/core/line_info.hh | 45 ++++++++-
scribo/scribo/core/line_links.hh | 5 +-
scribo/scribo/core/paragraph_info.hh | 9 ++
scribo/scribo/core/paragraph_set.hh | 28 ++++++
.../io/xml/internal/extended_page_xml_visitor.hh | 2 -
.../scribo/io/xml/internal/html_markups_replace.hh | 97 --------------------
scribo/scribo/io/xml/internal/print_box_coords.hh | 3 +
.../scribo/io/xml/internal/print_page_preambule.hh | 5 +
scribo/scribo/io/xml/save.hh | 2 +
scribo/scribo/text/extract_lines.hh | 16 ++--
.../src/debug/show_info_median_inter_characters.cc | 12 +-
scribo/src/debug/show_info_x_height.cc | 12 +-
scribo/src/debug/show_text_lines.cc | 2 +-
.../src/primitive/extract/separators_nonvisible.cc | 2 +-
17 files changed, 143 insertions(+), 136 deletions(-)
delete mode 100644 scribo/scribo/io/xml/internal/html_markups_replace.hh
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index a300b37..da0d095 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,3 +1,33 @@
+2011-03-03 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ Small fixes in Scribo.
+
+ * scribo/convert/from_base64.hh: Remove guards HAVE_QT.
+
+ * scribo/core/document.hh: Initialize ImageMagick.
+
+ * scribo/io/xml/internal/html_markups_replace.hh: Remove. Move code...
+ * scribo/core/line_info.hh: ... here.
+
+ * scribo/core/line_links.hh: Make use of is_textline method.
+
+ * scribo/core/paragraph_info.hh: Add nlines method.
+
+ * scribo/core/paragraph_set.hh: Add a construction routine using a
+ line_set.
+
+ * scribo/io/xml/internal/extended_page_xml_visitor.hh,
+ * scribo/io/xml/internal/print_box_coords.hh,
+ * scribo/io/xml/internal/print_page_preambule.hh,
+ * src/primitive/extract/separators_nonvisible.cc: Fix includes.
+
+ * scribo/io/xml/save.hh: Add a precondition.
+
+ * scribo/text/extract_lines.hh,
+ * src/debug/show_info_median_inter_characters.cc,
+ * src/debug/show_info_x_height.cc,
+ * src/debug/show_text_lines.cc: Fix label type.
+
2011-03-02 Guillaume Lazzara <z(a)lrde.epita.fr>
Regen mk files.
diff --git a/scribo/scribo/convert/from_base64.hh b/scribo/scribo/convert/from_base64.hh
index 8c14a0f..5eeeb53 100644
--- a/scribo/scribo/convert/from_base64.hh
+++ b/scribo/scribo/convert/from_base64.hh
@@ -82,13 +82,9 @@ namespace scribo
Image<I>& output);
-# if defined HAVE_QT
-
template <typename I>
void from_base64(const QString& data64, Image<I>& output_);
-# endif // ! HAVE_QT
-
# ifndef MLN_INCLUDE_ONLY
@@ -191,8 +187,6 @@ namespace scribo
}
-# if defined HAVE_QT
-
template <typename I>
void
from_base64(const QString& data64, Image<I>& output_)
@@ -205,8 +199,6 @@ namespace scribo
trace::exiting("scribo::convert::to_base64");
}
-# endif // ! HAVE_QT
-
# endif // ! MLN_INCLUDE_ONLY
diff --git a/scribo/scribo/core/document.hh b/scribo/scribo/core/document.hh
index 372f0a4..689d0e3 100644
--- a/scribo/scribo/core/document.hh
+++ b/scribo/scribo/core/document.hh
@@ -160,6 +160,7 @@ namespace scribo
void
document<L>::open()
{
+ Magick::InitializeMagick(0);
mln::io::magick::load(image_, filename_);
}
diff --git a/scribo/scribo/core/line_info.hh b/scribo/scribo/core/line_info.hh
index 33a1529..46ba720 100644
--- a/scribo/scribo/core/line_info.hh
+++ b/scribo/scribo/core/line_info.hh
@@ -35,9 +35,10 @@
/// from the x_height and the baseline.
///
/// \fixme The way the meanline and the baseline are computed is not
-/// optimal and does not work is the components are too high (because
+/// optimal and does not work if the components are too high (because
/// of the median accumulator and int_u12 overflows).
+# include <map>
# include <mln/core/alias/box2d.hh>
# include <mln/core/alias/point2d.hh>
@@ -53,8 +54,6 @@
# include <scribo/core/line_set.hh>
# include <scribo/core/component_set.hh>
-# include <scribo/io/xml/internal/html_markups_replace.hh>
-
# include <scribo/core/concept/serializable.hh>
@@ -287,6 +286,42 @@ namespace scribo
namespace internal
{
+ // INTERNAL TOOLS
+
+ static inline std::map<char, std::string> init_map()
+ {
+ std::map<char, std::string> html_map;
+ html_map['\"'] = """;
+ html_map['<'] = "<";
+ html_map['>'] = ">";
+ html_map['&'] = "&";
+ return html_map;
+ }
+
+
+ inline
+ std::string
+ html_markups_replace(const std::string& input)
+ {
+ static std::map<char, std::string> map = init_map();
+
+ std::string output = input;
+ for (unsigned i = 0; i < input.size(); ++i)
+ {
+ std::map<char, std::string>::iterator it = map.find(output.at(i));
+ if (it != map.end())
+ {
+ output.replace(i, 1, it->second);
+ i += it->second.size() - 1;
+ }
+ }
+ return output;
+ }
+
+
+
+ // LINE INFO DATA
+
template <typename L>
line_info_data<L>::line_info_data()
{
@@ -641,7 +676,7 @@ namespace scribo
line_info<L>::update_text(const std::string& str)
{
data_->text_ = str;
- data_->html_text_ = scribo::io::xml::internal::html_markups_replace(str);
+ data_->html_text_ = scribo::internal::html_markups_replace(str);
}
@@ -869,6 +904,8 @@ namespace scribo
ref_line = mln::math::min(comp_set(c).bbox().pmin().row(), ref_line);
}
+ // FIXME: compute font color!
+
for_all_elements(i, data_->components_)
{
unsigned c = data_->components_(i);
diff --git a/scribo/scribo/core/line_links.hh b/scribo/scribo/core/line_links.hh
index fdd09a5..ab36a73 100644
--- a/scribo/scribo/core/line_links.hh
+++ b/scribo/scribo/core/line_links.hh
@@ -215,9 +215,8 @@ namespace scribo
line_links<L>::init()
{
for (unsigned i = 0; i < nelements(); ++i)
- if (! data_->lines_(i).is_valid()
- || data_->lines_(i).is_hidden()
- || data_->lines_(i).type() != line::Text)
+ if (!data_->lines_(i).is_valid()
+ || !data_->lines_(i).is_textline())
{
data_->line_to_link_(i) = 0;
}
diff --git a/scribo/scribo/core/paragraph_info.hh b/scribo/scribo/core/paragraph_info.hh
index 17f847f..f4b1309 100644
--- a/scribo/scribo/core/paragraph_info.hh
+++ b/scribo/scribo/core/paragraph_info.hh
@@ -52,6 +52,8 @@ namespace scribo
const mln::util::array<line_id_t>& line_ids() const;
+ unsigned nlines() const;
+
bool is_valid() const;
private:
@@ -106,6 +108,13 @@ namespace scribo
}
template <typename L>
+ unsigned
+ paragraph_info<L>::nlines() const
+ {
+ return line_ids_.nelements();
+ }
+
+ template <typename L>
bool
paragraph_info<L>::is_valid() const
{
diff --git a/scribo/scribo/core/paragraph_set.hh b/scribo/scribo/core/paragraph_set.hh
index 5451069..f081472 100644
--- a/scribo/scribo/core/paragraph_set.hh
+++ b/scribo/scribo/core/paragraph_set.hh
@@ -215,6 +215,7 @@ namespace scribo
} // end of namespace scribo::make::internal
+ // FIXME: move that code into paragraph_set constructor?
template <typename L>
scribo::paragraph_set<L>
paragraph(const line_links<L>& llinks)
@@ -241,6 +242,33 @@ namespace scribo
return parset;
}
+
+ // FIXME: move that code into paragraph_set constructor?
+ template <typename L>
+ scribo::paragraph_set<L>
+ paragraph(const scribo::line_set<L>& lines)
+ {
+ line_links<L> links(lines);
+ links.init();
+
+ unsigned npars;
+ mln::fun::i2v::array<unsigned>
+ par_ids = mln::make::relabelfun(links.line_to_link(),
+ links.nelements() - 1, npars);
+ paragraph_set<L> parset(links, npars);
+
+ for_all_links(l, links)
+ if (links(l))
+ {
+ value::int_u16 par_id = par_ids(l);
+ parset(par_id).add_line(lines(l));
+ }
+
+ return parset;
+ }
+
+
+
} // end of namespace scribo::make
diff --git a/scribo/scribo/io/xml/internal/extended_page_xml_visitor.hh b/scribo/scribo/io/xml/internal/extended_page_xml_visitor.hh
index 5d8a672..4da0755 100644
--- a/scribo/scribo/io/xml/internal/extended_page_xml_visitor.hh
+++ b/scribo/scribo/io/xml/internal/extended_page_xml_visitor.hh
@@ -40,8 +40,6 @@
# include <scribo/core/line_links.hh>
# include <scribo/core/line_info.hh>
-# include <scribo/convert/to_base64.hh>
-
# include <scribo/io/xml/internal/print_box_coords.hh>
# include <scribo/io/xml/internal/print_page_preambule.hh>
diff --git a/scribo/scribo/io/xml/internal/html_markups_replace.hh b/scribo/scribo/io/xml/internal/html_markups_replace.hh
deleted file mode 100644
index 76f8107..0000000
--- a/scribo/scribo/io/xml/internal/html_markups_replace.hh
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright (C) 2011 EPITA Research and Development Laboratory (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.
-
-#ifndef SCRIBO_IO_XML_INTERNAL_HTML_MARKUPS_REPLACE_HH
-# define SCRIBO_IO_XML_INTERNAL_HTML_MARKUPS_REPLACE_HH
-
-/// \file
-///
-/// \brief Replace HTML markups characters by their corresponding
-/// markups.
-
-
-namespace scribo
-{
-
- namespace io
- {
-
- namespace xml
- {
-
- namespace internal
- {
-
- /*! \brief Replace HTML markups characters by their corresponding
- markups.
- */
- inline
- std::string
- html_markups_replace(std::string& input);
-
-
-# ifndef MLN_INCLUDE_ONLY
-
- static inline std::map<char, std::string> init_map()
- {
- std::map<char, std::string> html_map;
- html_map['\"'] = """;
- html_map['<'] = "<";
- html_map['>'] = ">";
- html_map['&'] = "&";
- return html_map;
- }
-
-
- inline
- std::string
- html_markups_replace(const std::string& input)
- {
- static std::map<char, std::string> map = init_map();
-
- std::string output = input;
- for (unsigned i = 0; i < input.size(); ++i)
- {
- std::map<char, std::string>::iterator it = map.find(output.at(i));
- if (it != map.end())
- {
- output.replace(i, 1, it->second);
- i += it->second.size() - 1;
- }
- }
- return output;
- }
-
-# endif // ! MLN_INCLUDE_ONLY
-
- } // end of namespace scribo::io::xml::internal
-
- } // end of namespace scribo::io::xml
-
- } // end of namespace scribo::io
-
-} // end of namespace scribo
-
-#endif // ! SCRIBO_IO_XML_INTERNAL_HTML_MARKUPS_REPLACE_HH
diff --git a/scribo/scribo/io/xml/internal/print_box_coords.hh b/scribo/scribo/io/xml/internal/print_box_coords.hh
index d3aeedf..ad84709 100644
--- a/scribo/scribo/io/xml/internal/print_box_coords.hh
+++ b/scribo/scribo/io/xml/internal/print_box_coords.hh
@@ -30,6 +30,7 @@
///
/// \brief Prints box2d coordinates to XML data.
+# include <fstream>
# include <mln/core/alias/box2d.hh>
namespace scribo
@@ -44,6 +45,8 @@ namespace scribo
namespace internal
{
+ using namespace mln;
+
/*! \brief Prints box2d coordinates to XML data.
*/
void
diff --git a/scribo/scribo/io/xml/internal/print_page_preambule.hh b/scribo/scribo/io/xml/internal/print_page_preambule.hh
index b5ae891..3ee29be 100644
--- a/scribo/scribo/io/xml/internal/print_page_preambule.hh
+++ b/scribo/scribo/io/xml/internal/print_page_preambule.hh
@@ -30,7 +30,9 @@
///
/// \brief Print PAGE XML format preambule.
+# include <fstream>
# include <mln/core/alias/box2d.hh>
+# include <scribo/core/document.hh>
namespace scribo
{
@@ -44,6 +46,9 @@ namespace scribo
namespace internal
{
+ using namespace mln;
+
+
/// \brief Print PAGE XML format preambule.
template <typename L>
void print_PAGE_preambule(std::ofstream& output,
diff --git a/scribo/scribo/io/xml/save.hh b/scribo/scribo/io/xml/save.hh
index 30579d0..7428e5d 100644
--- a/scribo/scribo/io/xml/save.hh
+++ b/scribo/scribo/io/xml/save.hh
@@ -121,6 +121,8 @@ namespace scribo
{
trace::entering("scribo::io::xml::save");
+ mln_precondition(doc.is_open());
+
// Open file
std::ofstream output(output_name.c_str());
if (! output)
diff --git a/scribo/scribo/text/extract_lines.hh b/scribo/scribo/text/extract_lines.hh
index b81cb79..9949d09 100644
--- a/scribo/scribo/text/extract_lines.hh
+++ b/scribo/scribo/text/extract_lines.hh
@@ -33,8 +33,8 @@
# include <mln/core/concept/image.hh>
-# include <mln/value/int_u16.hh>
+# include <scribo/core/def/lbl_type.hh>
# include <scribo/core/line_set.hh>
# include <scribo/primitive/extract/components.hh>
@@ -71,13 +71,13 @@ namespace scribo
** \return A set of lines.
*/
template <typename I, typename N>
- line_set<mln_ch_value(I,value::int_u16)>
+ line_set<mln_ch_value(I,scribo::def::lbl_type)>
extract_lines(const Image<I>& input_, const Neighborhood<N>& nbh_,
const mln_ch_value(I,bool)& separators);
/// \overload
template <typename I, typename N>
- line_set<mln_ch_value(I,value::int_u16)>
+ line_set<mln_ch_value(I,scribo::def::lbl_type)>
extract_lines(const Image<I>& input, const Neighborhood<N>& nbh);
@@ -85,7 +85,7 @@ namespace scribo
template <typename I, typename N>
- line_set<mln_ch_value(I,value::int_u16)>
+ line_set<mln_ch_value(I,scribo::def::lbl_type)>
extract_lines(const Image<I>& input, const Neighborhood<N>& nbh)
{
mln_ch_value(I,bool) seps;
@@ -94,7 +94,7 @@ namespace scribo
template <typename I, typename N>
- line_set<mln_ch_value(I,value::int_u16)>
+ line_set<mln_ch_value(I,scribo::def::lbl_type)>
extract_lines(const Image<I>& input_, const Neighborhood<N>& nbh_,
const mln_ch_value(I,bool)& separators)
{
@@ -107,10 +107,10 @@ namespace scribo
mln_precondition(nbh.is_valid());
/// Finding comps.
- typedef mln_ch_value(I,value::int_u16) L;
- value::int_u16 ncomps;
+ typedef mln_ch_value(I,scribo::def::lbl_type) L;
+ scribo::def::lbl_type ncomps;
component_set<L>
- comps = scribo::primitive::extract::components(input, c8(), ncomps);
+ comps = scribo::primitive::extract::components(input, nbh, ncomps);
/// First filtering.
comps = scribo::filter::components_small(comps, 3);
diff --git a/scribo/src/debug/show_info_median_inter_characters.cc b/scribo/src/debug/show_info_median_inter_characters.cc
index b55079d..2ba240e 100644
--- a/scribo/src/debug/show_info_median_inter_characters.cc
+++ b/scribo/src/debug/show_info_median_inter_characters.cc
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -35,7 +35,7 @@
#include <mln/io/ppm/save.hh>
#include <mln/value/rgb8.hh>
-#include <mln/value/label_16.hh>
+#include <mln/value/int_u16.hh>
#include <mln/draw/box.hh>
#include <mln/draw/line.hh>
@@ -71,14 +71,14 @@ int main(int argc, char* argv[])
image2d<bool> input;
- io::pbm::load(input, argv[1]);
+ mln::io::pbm::load(input, argv[1]);
- typedef image2d<value::label_16> L;
+ typedef image2d<scribo::def::lbl_type> L;
line_set<L> line = scribo::text::extract_lines(input, c8());
image2d<value::rgb8> output = scribo::debug::char_space_image(input, line);
- io::ppm::save(output, argv[2]);
+ mln::io::ppm::save(output, argv[2]);
trace::exiting("main");
}
diff --git a/scribo/src/debug/show_info_x_height.cc b/scribo/src/debug/show_info_x_height.cc
index e5ff8d2..2997230 100644
--- a/scribo/src/debug/show_info_x_height.cc
+++ b/scribo/src/debug/show_info_x_height.cc
@@ -1,5 +1,5 @@
-// Copyright (C) 2009, 2010 EPITA Research and Development Laboratory
-// (LRDE)
+// Copyright (C) 2009, 2010, 2011 EPITA Research and Development
+// Laboratory (LRDE)
//
// This file is part of Olena.
//
@@ -35,8 +35,8 @@
#include <mln/io/ppm/save.hh>
#include <mln/value/rgb8.hh>
-#include <mln/value/label_16.hh>
+#include <scribo/core/def/lbl_type.hh>
#include <scribo/text/extract_lines.hh>
#include <scribo/debug/line_info_image.hh>
#include <scribo/debug/usage.hh>
@@ -66,14 +66,14 @@ int main(int argc, char* argv[])
image2d<bool> input;
- io::pbm::load(input, argv[1]);
+ mln::io::pbm::load(input, argv[1]);
- typedef image2d<value::label_16> L;
+ typedef image2d<scribo::def::lbl_type> L;
line_set<L> line = scribo::text::extract_lines(input, c8());
image2d<value::rgb8> output = scribo::debug::line_info_image(input, line);
- io::ppm::save(output, argv[2]);
+ mln::io::ppm::save(output, argv[2]);
trace::exiting("main");
}
diff --git a/scribo/src/debug/show_text_lines.cc b/scribo/src/debug/show_text_lines.cc
index a031072..368f375 100644
--- a/scribo/src/debug/show_text_lines.cc
+++ b/scribo/src/debug/show_text_lines.cc
@@ -77,7 +77,7 @@ int main(int argc, char* argv[])
util::timer t;
t.start();
- typedef image2d<value::int_u16> L;
+ typedef image2d<scribo::def::lbl_type> L;
line_set<L> lines = text::extract_lines(input, c8(), input_seps);
t.stop();
diff --git a/scribo/src/primitive/extract/separators_nonvisible.cc b/scribo/src/primitive/extract/separators_nonvisible.cc
index 82d4787..d50cc73 100644
--- a/scribo/src/primitive/extract/separators_nonvisible.cc
+++ b/scribo/src/primitive/extract/separators_nonvisible.cc
@@ -27,7 +27,7 @@
#include <mln/io/pbm/all.hh>
#include <mln/data/convert.hh>
-#include <scribo/primitive/extract/separators_nonvisible2.hh>
+#include <scribo/primitive/extract/separators_nonvisible.hh>
#include <scribo/debug/usage.hh>
const char *args_desc[][2] =
--
1.5.6.5
1
0
29 Mar '11
* scribo/scribo/io/xml/internal/full_xml_visitor.hh,
* scribo/scribo/io/xml/load.hh: Here.
---
scribo/ChangeLog | 7 ++++
scribo/scribo/io/xml/internal/full_xml_visitor.hh | 34 ++++++++++++++------
scribo/scribo/io/xml/load.hh | 12 +++++--
3 files changed, 39 insertions(+), 14 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index da0d095..52da198 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,5 +1,12 @@
2011-03-03 Guillaume Lazzara <z(a)lrde.epita.fr>
+ Compress image data in XML output.
+
+ * scribo/scribo/io/xml/internal/full_xml_visitor.hh,
+ * scribo/scribo/io/xml/load.hh: Here.
+
+2011-03-03 Guillaume Lazzara <z(a)lrde.epita.fr>
+
Small fixes in Scribo.
* scribo/convert/from_base64.hh: Remove guards HAVE_QT.
diff --git a/scribo/scribo/io/xml/internal/full_xml_visitor.hh b/scribo/scribo/io/xml/internal/full_xml_visitor.hh
index 9c5bd1d..2b09b3a 100644
--- a/scribo/scribo/io/xml/internal/full_xml_visitor.hh
+++ b/scribo/scribo/io/xml/internal/full_xml_visitor.hh
@@ -31,6 +31,9 @@
/// XML serializer Visitor.
# include <fstream>
+
+# include <QByteArray>
+
# include <scribo/core/internal/doc_xml_serializer.hh>
# include <scribo/core/document.hh>
# include <scribo/core/component_set.hh>
@@ -40,11 +43,12 @@
# include <scribo/core/line_links.hh>
# include <scribo/core/line_info.hh>
-# include <scribo/convert/to_base64.hh>
-
# include <scribo/io/xml/internal/print_box_coords.hh>
# include <scribo/io/xml/internal/print_page_preambule.hh>
+// Compression level 0-9. 9 is the best but is slow.
+// 5 seems to be a good compromise.
+# define COMPRESSION_LEVEL 5
namespace scribo
{
@@ -273,15 +277,20 @@ namespace scribo
<< "\" width=\"" << lbl.domain().width() << "\">"
<< "<![CDATA[";
- util::array<unsigned char> lbl64;
- convert::to_base64(lbl, lbl64);
- output.write((const char *)lbl64.std_vector().data(),
- lbl64.nelements());
+ // FIXME: Try to avoid that!
+ border::resize(lbl, 0);
+ QByteArray lbl64((const char *)lbl.buffer(),
+ lbl.nelements() * sizeof(mln_value(L)));
+ lbl64 = qCompress(lbl64, COMPRESSION_LEVEL);
+ lbl64 = lbl64.toBase64();
+
+ output.write(lbl64.data(), lbl64.size());
output << "]]></labeled_image>" << std::endl;
}
// Save separators image
+ if (comp_set.has_separators())
{
const mln_ch_value(L,bool)& seps = comp_set.separators();
output << "<separators_image "
@@ -289,10 +298,13 @@ namespace scribo
<< "\" width=\"" << seps.domain().width() << "\">"
<< "<![CDATA[";
- util::array<unsigned char> seps64;
- convert::to_base64(seps, seps64);
- output.write((const char *)seps64.std_vector().data(),
- seps64.nelements());
+ border::resize(seps, 0);
+ QByteArray seps64((const char *)seps.buffer(),
+ seps.nelements() * sizeof(bool));
+ seps64 = qCompress(seps64, COMPRESSION_LEVEL);
+ seps64 = seps64.toBase64();
+
+ output.write(seps64.data(), seps64.size());
output << "]]></separators_image>" << std::endl;
}
@@ -453,4 +465,6 @@ namespace scribo
} // end of namespace scribo
+# undef COMPRESSION_LEVEL
+
#endif // SCRIBO_IO_XML_INTERNAL_FULL_XML_VISITOR_HH
diff --git a/scribo/scribo/io/xml/load.hh b/scribo/scribo/io/xml/load.hh
index e0f4548..8042c75 100644
--- a/scribo/scribo/io/xml/load.hh
+++ b/scribo/scribo/io/xml/load.hh
@@ -50,8 +50,6 @@
# include <scribo/core/line_set.hh>
# include <scribo/core/line_info.hh>
-# include <scribo/convert/from_base64.hh>
-
namespace scribo
{
@@ -405,13 +403,19 @@ namespace scribo
{
case LabeledImage:
{
- scribo::convert::from_base64(ch, comp_set_data->ima_);
+ QByteArray data = ch.toAscii();
+ data = QByteArray::fromBase64(data);
+ data = qUncompress(data);
+ memcpy((char *) comp_set_data->ima_.buffer(), data.data(), data.size());
}
break;
case SeparatorsImage:
{
- scribo::convert::from_base64(ch, comp_set_data->separators_);
+ QByteArray data = ch.toAscii();
+ data = QByteArray::fromBase64(data);
+ data = qUncompress(data);
+ memcpy((char *) comp_set_data->separators_.buffer(), data.data(), data.size());
}
break;
--
1.5.6.5
1
0
last-svn-commit-789-g8461438 scribo/toolchain/internal/content_in_doc_functor.hh: Make OCR step optional.
by Guillaume Lazzara 29 Mar '11
by Guillaume Lazzara 29 Mar '11
29 Mar '11
---
scribo/ChangeLog | 8 ++++++--
.../toolchain/internal/content_in_doc_functor.hh | 19 ++++++++++++-------
2 files changed, 18 insertions(+), 9 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index 52da198..f4a56fd 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,9 +1,13 @@
+2011-03-04 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * scribo/toolchain/internal/content_in_doc_functor.hh: Make OCR step optional.
+
2011-03-03 Guillaume Lazzara <z(a)lrde.epita.fr>
Compress image data in XML output.
- * scribo/scribo/io/xml/internal/full_xml_visitor.hh,
- * scribo/scribo/io/xml/load.hh: Here.
+ * scribo/io/xml/internal/full_xml_visitor.hh,
+ * scribo/io/xml/load.hh: Here.
2011-03-03 Guillaume Lazzara <z(a)lrde.epita.fr>
diff --git a/scribo/scribo/toolchain/internal/content_in_doc_functor.hh b/scribo/scribo/toolchain/internal/content_in_doc_functor.hh
index dcbb4f7..40f013c 100644
--- a/scribo/scribo/toolchain/internal/content_in_doc_functor.hh
+++ b/scribo/scribo/toolchain/internal/content_in_doc_functor.hh
@@ -111,6 +111,7 @@ namespace scribo
bool enable_denoising;
bool enable_line_seps;
bool enable_whitespace_seps;
+ bool enable_ocr;
bool enable_debug;
bool save_doc_as_xml;
scribo::io::xml::Format xml_format;
@@ -136,6 +137,7 @@ namespace scribo
: enable_denoising(true),
enable_line_seps(true),
enable_whitespace_seps(true),
+ enable_ocr(true),
enable_debug(false),
save_doc_as_xml(false),
xml_format(scribo::io::xml::PageExtended),
@@ -373,11 +375,14 @@ namespace scribo
// Text recognition
- on_new_progress_label("Recognizing text");
- scribo::text::recognition(lines, ocr_language.c_str());
+ if (enable_ocr)
+ {
+ on_new_progress_label("Recognizing text");
- on_progress();
+ scribo::text::recognition(lines, ocr_language.c_str());
+ on_progress();
+ }
// Link text lines
on_new_progress_label("Linking text lines");
@@ -390,7 +395,7 @@ namespace scribo
image2d<value::rgb8> debug = data::convert(value::rgb8(), original_image);
for_all_lines(l, lines)
{
- if (! lines(l).is_valid() || lines(l).is_hidden() || lines(l).type() != line::Text)
+ if (! lines(l).is_textline())
continue;
mln::draw::box(debug, lines(l).bbox(), literal::blue);
@@ -427,7 +432,7 @@ namespace scribo
mln::util::array<accu::shape::bbox<point2d> > nbbox(llinks.nelements());
for_all_lines(i, lines)
{
- if (! lines(i).is_valid() || lines(i).is_hidden() || lines(i).type() != line::Text)
+ if (! lines(i).is_textline())
continue;
mln::draw::box(debug, lines(i).bbox(), literal::red);
@@ -497,8 +502,8 @@ namespace scribo
int
content_in_doc_functor<I>::nsteps() const
{
- return 11 + enable_denoising + enable_line_seps
- + enable_whitespace_seps + save_doc_as_xml;
+ return 10 + enable_denoising + enable_line_seps
+ + enable_whitespace_seps + enable_ocr + save_doc_as_xml;
}
--
1.5.6.5
1
0
29 Mar '11
* demo/viewer/Makefile.am: Add new files.
* demo/viewer/config.cc,
* demo/viewer/config.hh: Add OCR settings.
* demo/viewer/toolchain_options.cc,
* demo/viewer/toolchain_options.hh,
* demo/viewer/toolchain_options.ui: Remove.
* demo/viewer/ocr_options.cc,
* demo/viewer/ocr_options.hh,
* demo/viewer/ocr_options.ui,
* demo/viewer/preprocessing_options.cc,
* demo/viewer/preprocessing_options.hh,
* demo/viewer/preprocessing_options.ui,
* demo/viewer/segmentation_options.cc,
* demo/viewer/segmentation_options.hh,
* demo/viewer/segmentation_options.ui: New option widgets.
* demo/viewer/preferences_dialog.cc: Insert new widgets.
* demo/viewer/runner.cc: Take OCR settings into account.
---
scribo/ChangeLog | 30 +++++++-
scribo/demo/viewer/Makefile.am | 20 ++++-
scribo/demo/viewer/config.cc | 28 ++++++-
scribo/demo/viewer/config.hh | 11 ++-
scribo/demo/viewer/ocr_options.cc | 74 ++++++++++++++++
scribo/demo/viewer/ocr_options.hh | 40 +++++++++
scribo/demo/viewer/ocr_options.ui | 62 ++++++++++++++
scribo/demo/viewer/preferences_dialog.cc | 26 +++++-
scribo/demo/viewer/preprocessing_options.cc | 66 +++++++++++++++
scribo/demo/viewer/preprocessing_options.hh | 38 +++++++++
scribo/demo/viewer/preprocessing_options.ui | 76 +++++++++++++++++
scribo/demo/viewer/runner.cc | 3 +-
scribo/demo/viewer/segmentation_options.cc | 56 ++++++++++++
scribo/demo/viewer/segmentation_options.hh | 37 ++++++++
scribo/demo/viewer/segmentation_options.ui | 52 ++++++++++++
scribo/demo/viewer/toolchain_options.cc | 75 -----------------
scribo/demo/viewer/toolchain_options.hh | 37 --------
scribo/demo/viewer/toolchain_options.ui | 121 ---------------------------
18 files changed, 605 insertions(+), 247 deletions(-)
create mode 100644 scribo/demo/viewer/ocr_options.cc
create mode 100644 scribo/demo/viewer/ocr_options.hh
create mode 100644 scribo/demo/viewer/ocr_options.ui
create mode 100644 scribo/demo/viewer/preprocessing_options.cc
create mode 100644 scribo/demo/viewer/preprocessing_options.hh
create mode 100644 scribo/demo/viewer/preprocessing_options.ui
create mode 100644 scribo/demo/viewer/segmentation_options.cc
create mode 100644 scribo/demo/viewer/segmentation_options.hh
create mode 100644 scribo/demo/viewer/segmentation_options.ui
delete mode 100644 scribo/demo/viewer/toolchain_options.cc
delete mode 100644 scribo/demo/viewer/toolchain_options.hh
delete mode 100644 scribo/demo/viewer/toolchain_options.ui
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index f4a56fd..2af84c0 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,6 +1,34 @@
2011-03-04 Guillaume Lazzara <z(a)lrde.epita.fr>
- * scribo/toolchain/internal/content_in_doc_functor.hh: Make OCR step optional.
+ Make OCR step optional in viewer.
+
+ * demo/viewer/Makefile.am: Add new files.
+
+ * demo/viewer/config.cc,
+ * demo/viewer/config.hh: Add OCR settings.
+
+ * demo/viewer/toolchain_options.cc,
+ * demo/viewer/toolchain_options.hh,
+ * demo/viewer/toolchain_options.ui: Remove.
+
+ * demo/viewer/ocr_options.cc,
+ * demo/viewer/ocr_options.hh,
+ * demo/viewer/ocr_options.ui,
+ * demo/viewer/preprocessing_options.cc,
+ * demo/viewer/preprocessing_options.hh,
+ * demo/viewer/preprocessing_options.ui,
+ * demo/viewer/segmentation_options.cc,
+ * demo/viewer/segmentation_options.hh,
+ * demo/viewer/segmentation_options.ui: New option widgets.
+
+ * demo/viewer/preferences_dialog.cc: Insert new widgets.
+
+ * demo/viewer/runner.cc: Take OCR settings into account.
+
+2011-03-04 Guillaume Lazzara <z(a)lrde.epita.fr>
+
+ * scribo/toolchain/internal/content_in_doc_functor.hh: Make OCR
+ step optional.
2011-03-03 Guillaume Lazzara <z(a)lrde.epita.fr>
diff --git a/scribo/demo/viewer/Makefile.am b/scribo/demo/viewer/Makefile.am
index 2c5e4cf..09d9ecc 100644
--- a/scribo/demo/viewer/Makefile.am
+++ b/scribo/demo/viewer/Makefile.am
@@ -30,7 +30,9 @@ scribo_viewer_SOURCES = viewer.cc \
image_region.cc \
help_dialog.cc \
step_widget.cc \
- toolchain_options.cc \
+ preprocessing_options.cc\
+ segmentation_options.cc \
+ ocr_options.cc \
runner.cc \
preprocess.cc \
process.cc \
@@ -65,8 +67,12 @@ BUILT_SOURCES = viewer.moc.cc \
image_region.moc.cc \
help_dialog.ui.h \
step_widget.moc.cc \
- toolchain_options.moc.cc \
- toolchain_options.ui.h \
+ preprocessing_options.moc.cc \
+ preprocessing_options.ui.h \
+ segmentation_options.moc.cc \
+ segmentation_options.ui.h \
+ ocr_options.moc.cc \
+ ocr_options.ui.h \
runner.moc.cc \
preprocess.moc.cc \
process.moc.cc \
@@ -91,7 +97,9 @@ noinst_HEADERS = viewer.hh \
common.hh \
help_dialog.hh \
step_widget.hh \
- toolchain_options.hh \
+ preprocessing_options.hh\
+ segmentation_options.hh\
+ ocr_options.hh \
runner.hh \
preprocess.hh \
process.hh \
@@ -121,7 +129,9 @@ EXTRA_DIST = \
general_options.ui \
preferences_dialog.ui \
README \
- toolchain_options.ui \
+ preprocessing_options.ui\
+ segmentation_options.ui \
+ ocr_options.ui \
help_dialog.ui \
demodir.hh.in
diff --git a/scribo/demo/viewer/config.cc b/scribo/demo/viewer/config.cc
index bf12e95..6bdcd35 100644
--- a/scribo/demo/viewer/config.cc
+++ b/scribo/demo/viewer/config.cc
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -108,6 +109,31 @@ void config::set_segmentation_find_seps(int seps)
}
+// OCR
+
+bool config::ocr_enabled()
+{
+ return value("ocr/enabled", true).toBool();
+}
+
+void config::set_ocr_enabled(bool b)
+{
+ setValue("ocr/enabled", b);
+}
+
+
+
+QString config::ocr_language()
+{
+ return value("ocr/language", 0).toString();
+}
+
+void config::set_ocr_language(const QString& lang)
+{
+ setValue("ocr/language", lang);
+}
+
+
// General options
diff --git a/scribo/demo/viewer/config.hh b/scribo/demo/viewer/config.hh
index 07d193c..74dab3b 100644
--- a/scribo/demo/viewer/config.hh
+++ b/scribo/demo/viewer/config.hh
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -49,6 +50,14 @@ public:
void set_segmentation_find_seps(int seps);
+ // OCR
+ bool ocr_enabled();
+ void set_ocr_enabled(bool b);
+
+ QString ocr_language();
+ void set_ocr_language(const QString& lang);
+
+
// General options
bool general_save_xml_enabled();
void set_general_save_xml_enabled(bool b);
diff --git a/scribo/demo/viewer/ocr_options.cc b/scribo/demo/viewer/ocr_options.cc
new file mode 100644
index 0000000..0ff09d9
--- /dev/null
+++ b/scribo/demo/viewer/ocr_options.cc
@@ -0,0 +1,74 @@
+// Copyright (C) 2011 EPITA Research and Development Laboratory (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/>.
+
+#include "defs.hh"
+#include "ocr_options.hh"
+#include "config.hh"
+
+// Defines enum of binarization algorithms
+# include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh>
+
+using namespace scribo::toolchain::internal;
+
+
+static const char *language[][2] = {
+ { "English", "eng" },
+ { "French", "fra" },
+ { 0, 0 }
+};
+
+
+ocr_options::ocr_options(QWidget *parent)
+ : OptionWidget(parent)
+{
+ setupUi(this);
+
+ for (unsigned i = 0; language[i][0]; ++i)
+ ocr_language->insertItem(i, language[i][0]);
+
+ load_config();
+}
+
+ocr_options::~ocr_options()
+{
+}
+
+
+int ocr_options::find_index(const QString& lang)
+{
+ for (unsigned i = 0; language[i][0]; ++i)
+ if (lang == language[i][1])
+ return i;
+ return 0;
+}
+
+
+void ocr_options::load_config()
+{
+ config * const conf = config::get_instance();
+
+ enable_ocr->setChecked(conf->ocr_enabled());
+ ocr_language->setCurrentIndex(find_index(conf->ocr_language()));
+}
+
+
+void ocr_options::save_config()
+{
+ config * const conf = config::get_instance();
+
+ conf->set_ocr_enabled(enable_ocr->isChecked());
+ conf->set_ocr_language(language[ocr_language->currentIndex()][1]);
+}
diff --git a/scribo/demo/viewer/ocr_options.hh b/scribo/demo/viewer/ocr_options.hh
new file mode 100644
index 0000000..67ab4ef
--- /dev/null
+++ b/scribo/demo/viewer/ocr_options.hh
@@ -0,0 +1,40 @@
+// Copyright (C) 2011 EPITA Research and Development Laboratory (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/>.
+
+#ifndef SCRIBO_DEMO_VIEWER_OCR_OPTIONS_HH
+# define SCRIBO_DEMO_VIEWER_OCR_OPTIONS_HH
+
+# include <QtGui>
+# include <ocr_options.ui.h>
+# include "option_widget.hh"
+
+class ocr_options : public OptionWidget, private Ui::OcrOptions
+{
+ Q_OBJECT;
+
+public:
+ ocr_options(QWidget *parent = 0);
+ ~ocr_options();
+
+ void load_config();
+ void save_config();
+
+private:
+ int find_index(const QString& lang);
+
+};
+
+#endif // ! SCRIBO_DEMO_VIEWER_OCR_OPTIONS_HH
diff --git a/scribo/demo/viewer/ocr_options.ui b/scribo/demo/viewer/ocr_options.ui
new file mode 100644
index 0000000..d001c64
--- /dev/null
+++ b/scribo/demo/viewer/ocr_options.ui
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>OcrOptions</class>
+ <widget class="QWidget" name="OcrOptions">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>366</width>
+ <height>112</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QGroupBox" name="enable_ocr">
+ <property name="title">
+ <string>Enable OCR</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ <property name="flat">
+ <bool>true</bool>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="1" column="1">
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Language</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QComboBox" name="ocr_language"/>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/scribo/demo/viewer/preferences_dialog.cc b/scribo/demo/viewer/preferences_dialog.cc
index dfd6061..1eb80a7 100644
--- a/scribo/demo/viewer/preferences_dialog.cc
+++ b/scribo/demo/viewer/preferences_dialog.cc
@@ -1,4 +1,5 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE)
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (LRDE)
//
// This file is part of Olena.
//
@@ -15,8 +16,10 @@
// along with Olena. If not, see <http://www.gnu.org/licenses/>.
#include "preferences_dialog.hh"
-#include "toolchain_options.hh"
#include "general_options.hh"
+#include "ocr_options.hh"
+#include "preprocessing_options.hh"
+#include "segmentation_options.hh"
@@ -41,7 +44,7 @@ preferences_dialog::~preferences_dialog()
void preferences_dialog::load_option_list()
{
- static const char *options[] = { "General", "Toolchain", 0 };
+ static const char *options[] = { "General", "Preprocessing", "Segmentation", "OCR", 0 };
int i;
for (i = 0; options[i]; ++i)
@@ -66,19 +69,32 @@ void preferences_dialog::select_option_widget(int row)
if (!widgets_[row])
{
+ QWidget *widget = 0;
+
switch (row)
{
case 0:
- widgets_[0] = new general_options(this);
+ widget = new general_options(this);
break;
case 1:
- widgets_[1] = new toolchain_options(this);
+ widget = new preprocessing_options(this);
+ break;
+
+ case 2:
+ widget = new segmentation_options(this);
+ break;
+
+ case 3:
+ widget = new ocr_options(this);
break;
default:
qDebug() << "select_option_widget - Hu? Something wrong...";
}
+
+ if (widget)
+ widgets_[row] = widget;
}
if (horizontalLayout_2->count() == 2)
diff --git a/scribo/demo/viewer/preprocessing_options.cc b/scribo/demo/viewer/preprocessing_options.cc
new file mode 100644
index 0000000..2d55fea
--- /dev/null
+++ b/scribo/demo/viewer/preprocessing_options.cc
@@ -0,0 +1,66 @@
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (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/>.
+
+#include "defs.hh"
+#include "preprocessing_options.hh"
+#include "config.hh"
+
+// Defines enum of binarization algorithms
+# include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh>
+
+using namespace scribo::toolchain::internal;
+
+preprocessing_options::preprocessing_options(QWidget *parent)
+ : OptionWidget(parent)
+{
+ setupUi(this);
+
+ bin_algoCbox->insertItem(Convert, "Violent convert");
+ bin_algoCbox->insertItem(Sauvola, "Local threshold");
+ bin_algoCbox->insertItem(SauvolaMs,
+ "Local threshold multiscale");
+
+ load_config();
+}
+
+preprocessing_options::~preprocessing_options()
+{
+}
+
+
+void preprocessing_options::load_config()
+{
+ config * const conf = config::get_instance();
+
+ subsampleCb->setChecked(conf->preprocessing_subsample());
+ remove_bgCb->setChecked(conf->preprocessing_remove_bg());
+ deskewCb->setChecked(conf->preprocessing_deskew());
+ remove_noiseCb->setChecked(conf->preprocessing_remove_noise());
+ bin_algoCbox->setCurrentIndex(conf->preprocessing_bin_algo());
+}
+
+
+void preprocessing_options::save_config()
+{
+ config * const conf = config::get_instance();
+
+ conf->set_preprocessing_subsample(subsampleCb->isChecked());
+ conf->set_preprocessing_remove_bg(remove_bgCb->isChecked());
+ conf->set_preprocessing_deskew(deskewCb->isChecked());
+ conf->set_preprocessing_remove_noise(remove_noiseCb->isChecked());
+ conf->set_preprocessing_bin_algo(bin_algoCbox->currentIndex());
+}
diff --git a/scribo/demo/viewer/preprocessing_options.hh b/scribo/demo/viewer/preprocessing_options.hh
new file mode 100644
index 0000000..c676880
--- /dev/null
+++ b/scribo/demo/viewer/preprocessing_options.hh
@@ -0,0 +1,38 @@
+// Copyright (C) 2010, 2011 EPITA Research and Development Laboratory
+// (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/>.
+
+#ifndef SCRIBO_DEMO_VIEWER_PREPROCESSING_OPTIONS_HH
+# define SCRIBO_DEMO_VIEWER_PREPROCESSING_OPTIONS_HH
+
+# include <QtGui>
+# include <preprocessing_options.ui.h>
+# include "option_widget.hh"
+
+class preprocessing_options : public OptionWidget, private Ui::PreprocessingOptions
+{
+ Q_OBJECT;
+
+public:
+ preprocessing_options(QWidget *parent = 0);
+ ~preprocessing_options();
+
+ void load_config();
+ void save_config();
+
+};
+
+#endif // ! SCRIBO_DEMO_VIEWER_PREPROCESSING_OPTIONS_HH
diff --git a/scribo/demo/viewer/preprocessing_options.ui b/scribo/demo/viewer/preprocessing_options.ui
new file mode 100644
index 0000000..962cf49
--- /dev/null
+++ b/scribo/demo/viewer/preprocessing_options.ui
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>PreprocessingOptions</class>
+ <widget class="QWidget" name="PreprocessingOptions">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>466</width>
+ <height>198</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Configure toolchain</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Binarization method:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="bin_algoCbox"/>
+ </item>
+ </layout>
+ </item>
+ <item row="1" column="0">
+ <widget class="QCheckBox" name="subsampleCb">
+ <property name="text">
+ <string>Run on subsampled image</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QCheckBox" name="remove_bgCb">
+ <property name="text">
+ <string>Remove background (slow)</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QCheckBox" name="deskewCb">
+ <property name="text">
+ <string>Deskew</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QCheckBox" name="remove_noiseCb">
+ <property name="text">
+ <string>Remove noise</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>48</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/scribo/demo/viewer/runner.cc b/scribo/demo/viewer/runner.cc
index a3cc883..e923db7 100644
--- a/scribo/demo/viewer/runner.cc
+++ b/scribo/demo/viewer/runner.cc
@@ -156,7 +156,8 @@ void runner::process(const image2d<value::rgb8>& original_ima,
|| find_seps == defs::LinesAndWhitespaces);
f.enable_whitespace_seps = (find_seps == defs::Whitespaces
|| find_seps == defs::LinesAndWhitespaces);
-
+ f.enable_ocr = conf->ocr_enabled();
+ f.ocr_language = conf->ocr_language().toAscii().data();
f.xml_format = scribo::io::xml::PageExtended;
diff --git a/scribo/demo/viewer/segmentation_options.cc b/scribo/demo/viewer/segmentation_options.cc
new file mode 100644
index 0000000..c120879
--- /dev/null
+++ b/scribo/demo/viewer/segmentation_options.cc
@@ -0,0 +1,56 @@
+// Copyright (C) 2011 EPITA Research and Development Laboratory (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/>.
+
+#include "defs.hh"
+#include "segmentation_options.hh"
+#include "config.hh"
+
+// Defines enum of binarization algorithms
+# include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh>
+
+using namespace scribo::toolchain::internal;
+
+segmentation_options::segmentation_options(QWidget *parent)
+ : OptionWidget(parent)
+{
+ setupUi(this);
+
+ find_sepsCbox->insertItem(defs::Lines, "Lines");
+ find_sepsCbox->insertItem(defs::Whitespaces, "Whitespaces");
+ find_sepsCbox->insertItem(defs::LinesAndWhitespaces, "Lines and whitespaces");
+
+ load_config();
+}
+
+segmentation_options::~segmentation_options()
+{
+}
+
+
+void segmentation_options::load_config()
+{
+ config * const conf = config::get_instance();
+
+ find_sepsCbox->setCurrentIndex(conf->segmentation_find_seps());
+}
+
+
+void segmentation_options::save_config()
+{
+ config * const conf = config::get_instance();
+
+ conf->set_segmentation_find_seps(find_sepsCbox->currentIndex());
+}
diff --git a/scribo/demo/viewer/segmentation_options.hh b/scribo/demo/viewer/segmentation_options.hh
new file mode 100644
index 0000000..bdf65f9
--- /dev/null
+++ b/scribo/demo/viewer/segmentation_options.hh
@@ -0,0 +1,37 @@
+// Copyright (C) 2011 EPITA Research and Development Laboratory (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/>.
+
+#ifndef SCRIBO_DEMO_VIEWER_SEGMENTATION_OPTIONS_HH
+# define SCRIBO_DEMO_VIEWER_SEGMENTATION_OPTIONS_HH
+
+# include <QtGui>
+# include <segmentation_options.ui.h>
+# include "option_widget.hh"
+
+class segmentation_options : public OptionWidget, private Ui::SegmentationOptions
+{
+ Q_OBJECT;
+
+public:
+ segmentation_options(QWidget *parent = 0);
+ ~segmentation_options();
+
+ void load_config();
+ void save_config();
+
+};
+
+#endif // ! SCRIBO_DEMO_VIEWER_SEGMENTATION_OPTIONS_HH
diff --git a/scribo/demo/viewer/segmentation_options.ui b/scribo/demo/viewer/segmentation_options.ui
new file mode 100644
index 0000000..485e448
--- /dev/null
+++ b/scribo/demo/viewer/segmentation_options.ui
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>SegmentationOptions</class>
+ <widget class="QWidget" name="SegmentationOptions">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Form</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Find separators</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QComboBox" name="find_sepsCbox">
+ <property name="editable">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="1" column="0">
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>258</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/scribo/demo/viewer/toolchain_options.cc b/scribo/demo/viewer/toolchain_options.cc
deleted file mode 100644
index 6024ff3..0000000
--- a/scribo/demo/viewer/toolchain_options.cc
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (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/>.
-
-#include "defs.hh"
-#include "toolchain_options.hh"
-#include "config.hh"
-
-// Defines enum of binarization algorithms
-# include <scribo/toolchain/internal/text_in_doc_preprocess_functor.hh>
-
-using namespace scribo::toolchain::internal;
-
-toolchain_options::toolchain_options(QWidget *parent)
- : OptionWidget(parent)
-{
- setupUi(this);
-
- bin_algoCbox->insertItem(Convert, "Violent convert");
- bin_algoCbox->insertItem(Sauvola, "Local threshold");
- bin_algoCbox->insertItem(SauvolaMs,
- "Local threshold multiscale");
-
- find_sepsCbox->insertItem(defs::Lines, "Lines");
- find_sepsCbox->insertItem(defs::Whitespaces, "Whitespaces");
- find_sepsCbox->insertItem(defs::LinesAndWhitespaces, "Lines and whitespaces");
-
- load_config();
-}
-
-toolchain_options::~toolchain_options()
-{
-}
-
-
-void toolchain_options::load_config()
-{
- config * const conf = config::get_instance();
-
- // Preprocessing
- subsampleCb->setChecked(conf->preprocessing_subsample());
- remove_bgCb->setChecked(conf->preprocessing_remove_bg());
- deskewCb->setChecked(conf->preprocessing_deskew());
- remove_noiseCb->setChecked(conf->preprocessing_remove_noise());
- bin_algoCbox->setCurrentIndex(conf->preprocessing_bin_algo());
-
- // Page segmentation
- find_sepsCbox->setCurrentIndex(conf->segmentation_find_seps());
-}
-
-
-void toolchain_options::save_config()
-{
- config * const conf = config::get_instance();
-
- conf->set_preprocessing_subsample(subsampleCb->isChecked());
- conf->set_preprocessing_remove_bg(remove_bgCb->isChecked());
- conf->set_preprocessing_deskew(deskewCb->isChecked());
- conf->set_preprocessing_remove_noise(remove_noiseCb->isChecked());
- conf->set_preprocessing_bin_algo(bin_algoCbox->currentIndex());
-
- conf->set_segmentation_find_seps(find_sepsCbox->currentIndex());
-}
diff --git a/scribo/demo/viewer/toolchain_options.hh b/scribo/demo/viewer/toolchain_options.hh
deleted file mode 100644
index afad3e7..0000000
--- a/scribo/demo/viewer/toolchain_options.hh
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright (C) 2010 EPITA Research and Development Laboratory (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/>.
-
-#ifndef SCRIBO_DEMO_VIEWER_TOOLCHAIN_OPTIONS_HH
-# define SCRIBO_DEMO_VIEWER_TOOLCHAIN_OPTIONS_HH
-
-# include <QtGui>
-# include <toolchain_options.ui.h>
-# include "option_widget.hh"
-
-class toolchain_options : public OptionWidget, private Ui::ToolchainOptions
-{
- Q_OBJECT;
-
-public:
- toolchain_options(QWidget *parent = 0);
- ~toolchain_options();
-
- void load_config();
- void save_config();
-
-};
-
-#endif // ! SCRIBO_DEMO_VIEWER_TOOLCHAIN_OPTIONS_HH
diff --git a/scribo/demo/viewer/toolchain_options.ui b/scribo/demo/viewer/toolchain_options.ui
deleted file mode 100644
index 748696d..0000000
--- a/scribo/demo/viewer/toolchain_options.ui
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>ToolchainOptions</class>
- <widget class="QWidget" name="ToolchainOptions">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>492</width>
- <height>264</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Configure toolchain</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_3">
- <item>
- <widget class="QGroupBox" name="groupBox">
- <property name="title">
- <string>Preprocessing</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <widget class="QCheckBox" name="subsampleCb">
- <property name="text">
- <string>Run on subsampled image</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="remove_bgCb">
- <property name="text">
- <string>Remove background (slow)</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="deskewCb">
- <property name="text">
- <string>Deskew</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="remove_noiseCb">
- <property name="text">
- <string>Remove noise</string>
- </property>
- </widget>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_3">
- <item>
- <widget class="QLabel" name="label_3">
- <property name="text">
- <string>Binarization method:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QComboBox" name="bin_algoCbox"/>
- </item>
- </layout>
- </item>
- <item>
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QGroupBox" name="groupBox_2">
- <property name="title">
- <string>Page segmentation</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_2">
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
- <widget class="QLabel" name="label">
- <property name="text">
- <string>Find separators</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QComboBox" name="find_sepsCbox"/>
- </item>
- </layout>
- </item>
- <item>
- <spacer name="verticalSpacer_2">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
--
1.5.6.5
1
0
last-svn-commit-791-g79532c9 scribo/io/xml/internal/full_xml_visitor.hh: Do not copy image data.
by Guillaume Lazzara 29 Mar '11
by Guillaume Lazzara 29 Mar '11
29 Mar '11
---
scribo/ChangeLog | 5 +++++
scribo/scribo/io/xml/internal/full_xml_visitor.hh | 11 ++++++-----
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/scribo/ChangeLog b/scribo/ChangeLog
index 2af84c0..3f17098 100644
--- a/scribo/ChangeLog
+++ b/scribo/ChangeLog
@@ -1,5 +1,10 @@
2011-03-04 Guillaume Lazzara <z(a)lrde.epita.fr>
+ * scribo/io/xml/internal/full_xml_visitor.hh: Do not copy image
+ data.
+
+2011-03-04 Guillaume Lazzara <z(a)lrde.epita.fr>
+
Make OCR step optional in viewer.
* demo/viewer/Makefile.am: Add new files.
diff --git a/scribo/scribo/io/xml/internal/full_xml_visitor.hh b/scribo/scribo/io/xml/internal/full_xml_visitor.hh
index 2b09b3a..8576c27 100644
--- a/scribo/scribo/io/xml/internal/full_xml_visitor.hh
+++ b/scribo/scribo/io/xml/internal/full_xml_visitor.hh
@@ -279,8 +279,9 @@ namespace scribo
// FIXME: Try to avoid that!
border::resize(lbl, 0);
- QByteArray lbl64((const char *)lbl.buffer(),
- lbl.nelements() * sizeof(mln_value(L)));
+ QByteArray
+ lbl64 = QByteArray::fromRawData((const char *)lbl.buffer(),
+ lbl.nelements() * sizeof(mln_value(L)));
lbl64 = qCompress(lbl64, COMPRESSION_LEVEL);
lbl64 = lbl64.toBase64();
@@ -299,8 +300,9 @@ namespace scribo
<< "<![CDATA[";
border::resize(seps, 0);
- QByteArray seps64((const char *)seps.buffer(),
- seps.nelements() * sizeof(bool));
+ QByteArray
+ seps64 = QByteArray::fromRawData((const char *)seps.buffer(),
+ seps.nelements() * sizeof(bool));
seps64 = qCompress(seps64, COMPRESSION_LEVEL);
seps64 = seps64.toBase64();
@@ -346,7 +348,6 @@ namespace scribo
break;
}
-
default:
case component::Image:
{
--
1.5.6.5
1
0