#162: Implement windows, neighborhoods, and corresponding iterators for complex-
based images
-----------------------+----------------------------------------------------
Reporter: levill_r | Owner: levill_r
Type: task | Status: assigned
Priority: major | Milestone: Olena 1.0
Component: Milena | Version: 1.0
Resolution: | Keywords:
-----------------------+----------------------------------------------------
Old description:
For a given (fixed) dimension ''n''
and a psite ''p'' on a ''n''-face,
implement windows/neighborhoods (and corresponding iterators) returning
the following elements.
~~`complex_lower_window`~~:: ~~the set of (''n''-1)-faces adjacent to
''p''~~ (done in r2459, r2460, and r2514);
~~`complex_higher_window`~~:: ~~the set of (''n''+1)-faces adjacent to
''p''~~ (done in r2459, r2460 and r2517);
~~`complex_lower_higher_window`~~:: ~~the set of (''n''-1)- and
(''n''+1)-faces adjacent to ''p''~~ (done in r2496 and
r2518);
`complex_m_lower_window`:: for ''m'' < ''n''
(''m'' being dynamic), the
set of ''m''-faces « transitively adjacent » to ''p'';
`complex_m_higher_window`:: for ''m'' > ''n''
(''m'' being dynamic), the
set of ''m''-faces « transitively adjacent » to ''p'';
~~`complex_lower_dim_connected_window`~~:: ~~the set of ''n''-faces
sharing a (''n''-1)-face with ''p''~~ (done in r2605 and
r2606);
~~`complex_higher_dim_connected_window`~~:: ~~the set of ''n''-faces
sharing a (''n''+1)-face with ''p''~~ (done in r2605 and
r2606);
`complex_cell_window`:: the set of the faces in the « cell » including
''p'' (named « ''p''-hat » in
couprie.08.pami), i.e. the set of all ''m''-faces transitively
adjacent
to ''p'',
where ''m'' is in [0, ''n''-1].[[BR]]
In that definition, ''p'' is said adjacent to an
''m''-face ''q'' if
there is a sequence (''m,,1,,'', ''m,,2,,'', ...,
''m,,k,,'') of faces so
that
* ''m,,1,,'' is an (''n''-1)-face adjacent to
''p'' ;
* ''m,,2,,'' is an (''n''-2)-face adjacent to
''m,,1,,'' ;
* ... (and so on)
* ''m,,k,,'' is an (''m''+1)-face adjacent to
''q''.
`complex_boundary_cell_window`:: Likewise, but excluding ''p'' (named
«
''p''-hat* » in couprie.08.pami).
And maybe:
`complex_lower_dims_connected_window`:: the set of ''n''-faces sharing
a
(''n''-1)-face or (''n''-2)-face etc. (by transitivity)
with ''p'' (is it
useful?);
`complex_higher_dims_connected_window`:: the set of ''n''-faces
sharing
a (''n''+1)-face or (''n''+2)-face etc. (by transitivity)
with ''p'' (is
it useful?);
* what else?
As in #139,
* we might want to factor things using implementation classes:
* ``mln::internal::complex_vicinity``
* ``mln::internal::complex_vicinity_piter``
(we might even be able to factor them with graph-based ones);
* we could have one or several generic classes, using static or dynamic
predicates, to implement those windows and neighborhoods.
Note that some of these iterators might implement operators on complexes,
see
http://en.wikipedia.org/wiki/Simplicial_complex#Closure.2C_star.2C_and_link.
New description:
For a given (fixed) dimension ''n'' and a psite ''p'' on
a ''n''-face,
implement windows/neighborhoods (and corresponding iterators) returning
the following elements.
~~`complex_lower_window`~~:: ~~the set of (''n''-1)-faces adjacent to
''p''~~ (done in r2459, r2460, and r2514);
~~`complex_higher_window`~~:: ~~the set of (''n''+1)-faces adjacent to
''p''~~ (done in r2459, r2460 and r2517);
~~`complex_lower_higher_window`~~:: ~~the set of (''n''-1)- and
(''n''+1)-faces adjacent to ''p''~~ (done in r2496 and
r2518);
~~`complex_m_face_window`~~:: ~~for a given ''m'' (being dynamic), the
set of ''m''-faces « transitively adjacent » to ''p''~~
(done in r2630 and
r2631);
~~`complex_lower_dim_connected_window`~~:: ~~the set of ''n''-faces
sharing a (''n''-1)-face with ''p''~~ (done in r2605 and
r2606);
~~`complex_higher_dim_connected_window`~~:: ~~the set of ''n''-faces
sharing a (''n''+1)-face with ''p''~~ (done in r2605 and
r2606);
`complex_cell_window`:: the set of the faces in the « cell » including
''p'' (named « ''p''-hat » in
couprie.08.pami), i.e. the set of all ''m''-faces transitively
adjacent
to ''p'',
where ''m'' is in [0, ''n''-1].[[BR]]
In that definition, ''p'' is said adjacent to an
''m''-face ''q'' if
there is a sequence (''m,,1,,'', ''m,,2,,'', ...,
''m,,k,,'') of faces so
that
* ''m,,1,,'' is an (''n''-1)-face adjacent to
''p'' ;
* ''m,,2,,'' is an (''n''-2)-face adjacent to
''m,,1,,'' ;
* ... (and so on)
* ''m,,k,,'' is an (''m''+1)-face adjacent to
''q''.
`complex_boundary_cell_window`:: Likewise, but excluding ''p'' (named
«
''p''-hat* » in couprie.08.pami).
And maybe:
`complex_lower_dims_connected_window`:: the set of ''n''-faces sharing
a
(''n''-1)-face or (''n''-2)-face etc. (by transitivity)
with ''p'' (is it
useful?);
`complex_higher_dims_connected_window`:: the set of ''n''-faces sharing
a
(''n''+1)-face or (''n''+2)-face etc. (by transitivity)
with ''p'' (is it
useful?);
* what else?
As in #139,
* we might want to factor things using implementation classes:
* ``mln::internal::complex_vicinity``
* ``mln::internal::complex_vicinity_piter``
(we might even be able to factor them with graph-based ones);
* we could have one or several generic classes, using static or dynamic
predicates, to implement those windows and neighborhoods.
Note that some of these iterators might implement operators on complexes,
see
http://en.wikipedia.org/wiki/Simplicial_complex#Closure.2C_star.2C_and_link.
Comment (by levill_r):
Kill done items.
--
Ticket URL: <https://trac.lrde.org/olena/ticket/162#comment:10>
Olena <http://olena.lrde.epita.fr>
Olena, a generic and efficient C++ image processing library.