$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
cells.hh
1
// Copyright (C) 2009, 2011, 2014 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
#ifndef SCRIBO_PRIMITIVE_EXTRACT_CELLS_HH
28
# define SCRIBO_PRIMITIVE_EXTRACT_CELLS_HH
29
33
34
# include <mln/core/concept/image.hh>
35
# include <mln/core/concept/neighborhood.hh>
36
# include <mln/core/site_set/box.hh>
37
38
# include <mln/accu/shape/bbox.hh>
39
40
# include <mln/util/couple.hh>
41
# include <mln/util/array.hh>
42
43
# include <mln/labeling/compute.hh>
44
45
# include <scribo/table/rebuild.hh>
46
# include <scribo/table/erase.hh>
47
48
# include <scribo/primitive/extract/lines_discontinued.hh>
49
50
# include <scribo/make/debug_filename.hh>
51
52
53
namespace
scribo
54
{
55
56
namespace
primitive
57
{
58
59
namespace
extract
60
{
61
62
using namespace
mln;
63
72
//
73
template
<
typename
I,
typename
N,
typename
V>
74
mln::util::couple<mln::util::array<box<mln_site(I)>
>,
75
mln::util::array<box<mln_site(I)>
> >
76
cells
(
const
Image<I>
& input,
77
const
Neighborhood<N>
& nbh,
const
V& label_type);
78
79
80
# ifndef MLN_INCLUDE_ONLY
81
82
template
<
typename
I,
typename
N,
typename
V>
83
inline
84
mln::util::couple<mln::util::array<box<mln_site(I)>
>,
85
mln::util::array<box<mln_site(I)>
> >
86
cells
(
const
Image<I>
& input_,
87
const
Neighborhood<N>
& nbh_,
const
V&
/* label_type */
)
88
{
89
mln_trace(
"scribo::primitive::cells"
);
90
91
const
I& input =
exact
(input_);
92
const
N&
nbh
=
exact
(nbh_);
93
mln_precondition(input.is_valid());
94
mln_precondition(nbh.is_valid());
95
mlc_equal(mln_value(I),
bool
)::check();
96
97
typedef
mln::util::array< box<mln_site(I)>
> boxarray_t;
98
99
V ncells;
100
win::line<mln_grid(I::site), 0, mln_coord(I::site)>
vline(51);
101
win::line<mln_grid(I::site), 1, mln_coord(I::site)>
hline(51);
102
boxarray_t
103
vlines =
primitive::extract::lines_discontinued
(input, nbh,
104
ncells, vline, 6),
105
hlines =
primitive::extract::lines_discontinued
(input, nbh,
106
ncells, hline, 6);
107
108
typedef
mln_ch_value
(I,V) cells_ima_t;
109
110
cells_ima_t
111
cells
= scribo::table::rebuild(input, mln::make::couple(vlines,hlines),
112
30, ncells).first();
113
mln::util::array<
box
<mln_site(I)> >
114
cellbboxes =
labeling
::
compute
(accu::meta::shape::
bbox
(),
cells
, ncells);
115
116
return cellbboxes;
117
}
118
119
# endif // ! MLN_INCLUDE_ONLY
120
121
}
// end of namespace scribo::primitive::extract
122
123
}
// end of namespace scribo::primitive
124
125
}
// end of namespace scribo
126
127
#endif // ! SCRIBO_PRIMITIVE_EXTRACT_CELLS_HH
scribo
scribo
primitive
extract
cells.hh
Copyright (C) 2012 EPITA Research and Development Laboratory (LRDE)