$extrastylesheet
Olena  User documentation 2.1
An Image Processing Platform
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
mln::neighb3d Class Reference

#include <mln/core/alias/neighb3d.hh>

Public Member Functions

void change_window (const W &new_win)
unsigned delta () const
const W::dpsite & dp (unsigned i) const
W & hook_win_ ()
bool is_valid () const
unsigned size () const
const W & win () const

Public Types

typedef neighb_bkd_niter
< window3d
bkd_niter
typedef Neighborhood< void > category
typedef W::dpsite dpsite
typedef E exact_t
typedef neighb_fwd_niter
< window3d
fwd_niter
typedef fwd_niter niter
typedef W::psite psite
typedef W::site site
typedef W window

Related Functions

(Note that these are not member functions.)

template<typename I , typename N >
util::array< intnegative_offsets_wrt (const Image< I > &ima, const Neighborhood< N > &nbh)
template<typename I , typename N >
util::array< intoffsets_wrt (const Image< I > &ima, const Neighborhood< N > &nbh)
template<typename N >
std::ostream & operator<< (std::ostream &ostr, const Neighborhood< N > &nbh)
template<typename L , typename R >
bool operator== (const Neighborhood< L > &lhs, const Neighborhood< R > &rhs)
template<typename I , typename N >
util::array< intpositive_offsets_wrt (const Image< I > &ima, const Neighborhood< N > &nbh)

Detailed Description

Type alias for a neighborhood defined on the 3D square grid with integer coordinates.

A neigh3d can be constructed from a window3d. Compared to a window, a neighborhood does not include the central point.

window3d     neighb3d
  . o .        . o .
 o o o        o o o
. o .        . o .

  o o o        o o o
 o o o  -->   o x o
o o o        o o o

  . o .        . o .
 o o o        o o o
. o .        . o .

Common 3D neighborhoods are predefined and can be used directly: mln::c2_3d_sli(), mln::c4_3d(), mln::c8_3d(), mln::c18(), mln::c26(). An exhaustive list can be found in section 3D neighborhoods.

The list of dpoint3d included in a neighb3d is accessible from window3d::std_vector() method or simply by iterating over this list:

neighb3d nbh = c4_3d();
for (int i = 0; i < nbh.win().size(); ++i)
std::cout << nbh.win().dp(i) << std::endl;

Iterating over the neighbors of a specific point is performed thanks to n-iterators, as follows:

point3d p(2,2,2);
neighb3d nbh = c4_3d();
mln_niter(neighb3d) n(nbh, p);
for_all(n)
// n is a point3d, neighbor of p.
std::cout << n << std::endl;

It also works while iterating the sites of an image domain:

image3d<bool> ima(4,4,4);
neighb3d nbh = c4_3d();
mln_piter(image3d<bool>) p(ima.domain());
mln_niter(neighb3d) n(nbh, p);
for_all(p)
for_all(n)
// n is a point3d, neighbor of the current p.
std::cout << n << std::endl;
See Also
make::neighb3d, dpoint3d, window3d

Definition at line 6 of file neighb3d.dox.

Member Function Documentation

template<typename W, typename E>
void mln::internal::neighb_base< W, E >::change_window ( const W &  new_win)
inherited

Change the corresponding window.

template<typename W, typename E>
unsigned mln::internal::neighborhood_impl< W, E >::delta ( ) const
inherited

Give the maximum coordinate gap between the neighborhood center and a neighboring point.

template<typename W, typename E>
const W ::dpsite& mln::internal::neighborhood_impl< W, E >::dp ( unsigned  i) const
inherited

Give the maximum coordinate gap between the neighborhood center and a neighboring point.

template<typename W, typename E>
W& mln::internal::neighb_base< W, E >::hook_win_ ( )
inherited

INTERNAL_API

Hook to the window.

template<typename W, typename E>
bool mln::internal::neighborhood_base< W, E >::is_valid ( ) const
inherited

Return true by default.

template<typename W, typename E>
unsigned mln::internal::neighborhood_impl< W, E >::size ( ) const
inherited

Give the neighborhood size, i.e., the number of elements it contains.

template<typename W, typename E>
const W& mln::internal::neighb_base< W, E >::win ( ) const
inherited

Get the corresponding window.

Friends And Related Function Documentation

template<typename I , typename N >
util::array< int > negative_offsets_wrt ( const Image< I > &  ima,
const Neighborhood< N > &  nbh 
)
related
template<typename I , typename N >
util::array< int > offsets_wrt ( const Image< I > &  ima,
const Neighborhood< N > &  nbh 
)
related
template<typename N >
std::ostream & operator<< ( std::ostream &  ostr,
const Neighborhood< N > &  nbh 
)
related
template<typename L , typename R >
bool operator== ( const Neighborhood< L > &  lhs,
const Neighborhood< R > &  rhs 
)
related
template<typename I , typename N >
util::array< int > positive_offsets_wrt ( const Image< I > &  ima,
const Neighborhood< N > &  nbh 
)
related

Member Typedef Documentation

Backward site iterator associated type.

Definition at line 69 of file neighb.hh.

template<typename E>
typedef Neighborhood<void> mln::Neighborhood< E >::category
inherited

Definition at line 69 of file core/concept/neighborhood.hh.

template<typename W, typename E>
typedef W ::dpsite mln::internal::neighborhood_base< W, E >::dpsite
inherited

Dpsite associated type.

Definition at line 129 of file neighborhood_base.hh.

template<typename E>
typedef E mln::Object< E >::exact_t
inherited

Definition at line 105 of file object.hh.

Forward site iterator associated type.

Definition at line 66 of file neighb.hh.

typedef fwd_niter mln::neighb< window3d >::niter
inherited

Site iterator associated type.

Definition at line 72 of file neighb.hh.

template<typename W, typename E>
typedef W ::psite mln::internal::neighborhood_base< W, E >::psite
inherited

Psite associated type.

Definition at line 132 of file neighborhood_base.hh.

template<typename W, typename E>
typedef W ::site mln::internal::neighborhood_base< W, E >::site
inherited

Site associated type.

Definition at line 135 of file neighborhood_base.hh.

template<typename W, typename E>
typedef W mln::internal::neighborhood_base< W, E >::window
inherited

Window associated type.

Definition at line 126 of file neighborhood_base.hh.