$extrastylesheet
Olena
User documentation 2.1
An Image Processing Platform
Scribo
Modules
Namespaces
Classes
All
Classes
Namespaces
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Groups
Pages
global_threshold.cc
1
// Copyright (C) 2011, 2012, 2013 EPITA Research and Development
2
// Laboratory (LRDE)
3
//
4
// This file is part of Olena.
5
//
6
// Olena is free software: you can redistribute it and/or modify it under
7
// the terms of the GNU General Public License as published by the Free
8
// Software Foundation, version 2 of the License.
9
//
10
// Olena is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
// General Public License for more details.
14
//
15
// You should have received a copy of the GNU General Public License
16
// along with Olena. If not, see <http://www.gnu.org/licenses/>.
17
//
18
// As a special exception, you may use this file as part of a free
19
// software project without restriction. Specifically, if other files
20
// instantiate templates or use macros or inline functions from this
21
// file, or you compile this file and link it with other files to produce
22
// an executable, this file does not by itself cause the resulting
23
// executable to be covered by the GNU General Public License. This
24
// exception does not however invalidate any other reasons why the
25
// executable file might be covered by the GNU General Public License.
26
27
#include <mln/core/image/image2d.hh>
28
#include <mln/value/int_u8.hh>
29
#include <mln/io/magick/load.hh>
30
#include <mln/io/pbm/save.hh>
31
#include <mln/data/transform.hh>
32
#include <mln/fun/v2v/rgb_to_luma.hh>
33
34
#include <scribo/binarization/global_threshold.hh>
35
#include <scribo/debug/option_parser.hh>
36
#include <scribo/debug/logger.hh>
37
38
static
const
scribo::debug::arg_data
arg_desc[] =
39
{
40
{
"input.*"
,
"An image."
},
41
{
"threshold_value"
,
"Global threshold to apply."
},
42
{
"output.pbm"
,
"A binary image."
},
43
{0, 0}
44
};
45
46
47
// --enable/disable-<name>
48
static
const
scribo::debug::toggle_data
toggle_desc[] =
49
{
50
// name, description, default value
51
{0, 0,
false
}
52
};
53
54
55
// --<name> <args>
56
static
const
scribo::debug::opt_data
opt_desc[] =
57
{
58
// name, description, arguments, check args function, number of args, default arg
59
{
"debug-prefix"
,
"Enable debug image outputs. Prefix image name with that "
60
"given prefix."
,
"<prefix>"
, 0, 1, 0 },
61
{
"verbose"
,
"Enable verbose mode (mute, time, low, medium, full)"
,
62
"<mode>"
, scribo::debug::check_verbose_mode, 1,
"mute"
},
63
{0, 0, 0, 0, 0, 0}
64
};
65
66
67
68
int
main(
int
argc,
char
*argv[])
69
{
70
using namespace
mln;
71
72
scribo::debug::option_parser
options(arg_desc, toggle_desc, opt_desc);
73
74
if
(!options.parse(argc, argv))
75
return
1;
76
77
// Enable debug output.
78
if
(options.is_set(
"debug-prefix"
))
79
{
80
scribo::debug::logger
().
set_filename_prefix
(options.opt_value(
"debug-prefix"
).c_str());
81
scribo::debug::logger
().
set_level
(scribo::debug::All);
82
}
83
84
mln_trace(
"main"
);
85
86
unsigned
threshold
= atoi(options.arg(
"threshold_value"
));
87
88
scribo::debug::logger
() <<
"Using threshold="
<<
threshold
<< std::endl;
89
90
image2d<value::rgb8>
input;
91
io::magick::load
(input, options.arg(
"input.*"
));
92
93
// Convert to Gray level image.
94
image2d<value::int_u8>
95
input_1_gl =
data::transform
(input,
mln::fun::v2v::rgb_to_luma<value::int_u8>
());
96
97
image2d<bool>
out =
scribo::binarization::global_threshold
(input_1_gl,
threshold
);
98
99
io::pbm::save
(out, options.arg(
"output.pbm"
));
100
101
}
scribo
src
binarization
global_threshold.cc
Copyright (C) 2012 EPITA Research and Development Laboratory (LRDE)