Namespaces | Classes | Functions

mln::geom Namespace Reference

Namespace of all things related to geometry. More...

Namespaces

namespace  impl
 

Implementation namespace of geom namespace.


namespace  internal

Classes

class  complex_geometry
 A functor returning the sites of the faces of a complex where the locations of each 0-face is stored. More...

Functions

template<typename S >
box< typename S::site > bbox (const Site_Set< S > &pset)
 Compute the precise bounding box of a point set pset.
template<typename I >
box< typename I::site > bbox (const Image< I > &ima)
 Compute the precise bounding box of a point set pset.
template<typename W >
box< typename W::psite > bbox (const Window< W > &win)
 Compute the precise bounding box of a window win.
template<typename W >
box< typename W::psite > bbox (const Weighted_Window< W > &win)
 Compute the precise bounding box of a weighted window win.
template<typename I , typename W >
mln::trait::ch_value< I,
unsigned >::ret 
chamfer (const Image< I > &input_, const W &w_win_, unsigned max=mln_max(unsigned))
 Apply chamfer algorithm to a binary image.
template<typename W >
unsigned delta (const Window< W > &win)
 Compute the delta of a window win.
template<typename W >
unsigned delta (const Weighted_Window< W > &wwin)
 Compute the delta of a weighted window wwin.
template<typename N >
unsigned delta (const Neighborhood< N > &nbh)
 Compute the delta of a neighborhood nbh.
template<typename I >
mln::trait::concrete< I >::ret horizontal_symmetry (const Image< I > &input)
 Perfoms a horizontal symmetry.
template<typename I >
I::site::coord max_col (const Image< I > &ima)
 Give the maximum column of an image.
template<typename B >
B::site::coord max_col (const Box< B > &b)
 Give the maximum col of an box 2d or 3d.
template<typename I >
I::site::coord max_ind (const Image< I > &ima)
 Give the maximum ind of an image.
template<typename I >
I::site::coord max_row (const Image< I > &ima)
 Give the maximum row of an image.
template<typename B >
B::site::coord max_row (const Box< B > &b)
 Give the maximum row of an box 2d or 3d.
template<typename I >
I::site::coord max_sli (const Image< I > &ima)
 Give the maximum sli of an image.
std::pair< complex_image
< 2, mln::space_2complex_geometry,
algebra::vec< 3, float >
>, complex_image
< 2, mln::space_2complex_geometry,
float > > 
mesh_corner_point_area (const p_complex< 2, space_2complex_geometry > &mesh)
 Compute the area ``belonging'' to normals at vertices.
std::pair< complex_image
< 2, mln::space_2complex_geometry,
float >, complex_image
< 2, mln::space_2complex_geometry,
float > > 
mesh_curvature (const p_complex< 2, space_2complex_geometry > &mesh)
 Compute the principal curvatures of a surface at vertices.
complex_image
< 2, mln::space_2complex_geometry,
algebra::vec< 3, float > > 
mesh_normal (const p_complex< 2, space_2complex_geometry > &mesh)
 Compute normals at vertices.
template<typename I >
I::site::coord min_col (const Image< I > &ima)
 Give the minimum column of an image.
template<typename B >
B::site::coord min_col (const Box< B > &b)
 Give the minimum column of an box 2d or 3d.
template<typename I >
I::site::coord min_ind (const Image< I > &ima)
 Give the minimum ind of an image.
template<typename I >
I::site::coord min_row (const Image< I > &ima)
 Give the minimum row of an image.
template<typename B >
B::site::coord min_row (const Box< B > &b)
 Give the minimum row of an box 2d or 3d.
template<typename I >
I::site::coord min_sli (const Image< I > &ima)
 Give the minimum sli of an image.
template<typename I >
unsigned ncols (const Image< I > &ima)
 Give the number of columns of an image.
template<typename B >
unsigned ncols (const Box< B > &b)
 Give the number of cols of a box 2d or 3d.
template<typename I >
unsigned ninds (const Image< I > &ima)
 Give the number of inds of an image.
template<typename I >
unsigned nrows (const Image< I > &ima)
 Give the number of rows of an image.
template<typename B >
unsigned nrows (const Box< B > &b)
 Give the number of rows of a box 2d or 3d.
template<typename I >
unsigned nsites (const Image< I > &input)
 Compute the number of sites of the image input.
template<typename I >
unsigned nslis (const Image< I > &ima)
 Give the number of slices of an image.
template<typename S >
void pmin_pmax (const Site_Set< S > &s, typename S::site &pmin, typename S::site &pmax)
 Compute the minimum and maximum points, pmin and max, of point set s.
template<typename S >
std::pair< typename S::site,
typename S::site > 
pmin_pmax (const Site_Set< S > &s)
 Compute the minimum and maximum points of point set s.
template<typename I >
std::pair< typename I::site,
typename I::site > 
pmin_pmax (const Site_Iterator< I > &p)
 Compute the minimum and maximum points when browsing with iterator p.
template<typename I >
void pmin_pmax (const Site_Iterator< I > &p, typename I::site &pmin, typename I::site &pmax)
 Compute the minimum and maximum points, pmin and max, when browsing with iterator p.
template<typename I , typename Ext >
mln::trait::concrete< I >::ret rotate (const Image< I > &input, double angle, const Ext &extension)
template<typename B >
rotate (const Box< B > &box, double angle)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. The rotation center ref is set to box.pcenter().
template<typename I , typename Ext , typename S >
mln::trait::concrete< I >::ret rotate (const Image< I > &input, double angle, const Ext &extension, const Site_Set< S > &output_domain)
 Perform a rotation from the center of an image.
template<typename I >
mln::trait::concrete< I >::ret rotate (const Image< I > &input, double angle)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Use literal::zero as default value for the extension.
template<typename B >
rotate (const Box< B > &box_, double angle, const typename B::site &ref)
 Rotate a box.
template<typename I , typename N >
mln::trait::concrete< I >::ret seeds2tiling (const Image< I > &ima_, const Neighborhood< N > &nbh)
 Take a labeled image ima_ with seeds and extend them until creating tiles.
template<typename I , typename V , typename Ext , typename S >
mln::trait::concrete< I >::ret translate (const Image< I > &input, const algebra::vec< I::site::dim, V > &ref, const Ext &extension, const Site_Set< S > &output_domain)
 Perform a translation from the center of an image.
template<typename I , typename V >
mln::trait::concrete< I >::ret translate (const Image< I > &input, const algebra::vec< I::site::dim, V > &ref)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Use literal::zero as default value for the extension.
template<typename I , typename V , typename Ext >
mln::trait::concrete< I >::ret translate (const Image< I > &input, const algebra::vec< I::site::dim, V > &ref, const Ext &extension)
template<typename I >
mln::trait::concrete< I >::ret vertical_symmetry (const Image< I > &input)
 Perfoms a vertical symmetry.

template<typename I , typename N >
seeds2tiling_roundness (Image< I > &ima_, const w_window2d_int &w_win, unsigned max, const Neighborhood< N > &nbh_)
 Take a labeled image ima_ with seeds and extend them until creating tiles rounder than the primary version.

Detailed Description

Namespace of all things related to geometry.

Namespace of essential things related to geometry.


Function Documentation

template<typename S >
box< typename S::site > mln::geom::bbox ( const Site_Set< S > &  pset  )  [inline]
template<typename I >
box< typename I::site > mln::geom::bbox ( const Image< I > &  ima  ) 

Compute the precise bounding box of a point set pset.

Definition at line 133 of file geom/bbox.hh.

References bbox(), and mln::exact().

template<typename W >
box< typename W::psite > mln::geom::bbox ( const Window< W > &  win  ) 

Compute the precise bounding box of a window win.

Definition at line 143 of file geom/bbox.hh.

References mln::exact(), mln::literal::origin, and mln::accu::shape::bbox< P >::take().

template<typename W >
box< typename W::psite > mln::geom::bbox ( const Weighted_Window< W > &  win  ) 

Compute the precise bounding box of a weighted window win.

Definition at line 156 of file geom/bbox.hh.

References bbox(), and mln::exact().

template<typename I , typename W >
mln::trait::ch_value< I, unsigned >::ret mln::geom::chamfer ( const Image< I > &  input_,
const W &  w_win_,
unsigned  max = mln_max(unsigned) 
)

Apply chamfer algorithm to a binary image.

Definition at line 113 of file geom/chamfer.hh.

References mln::trace::entering(), mln::exact(), and mln::trace::exiting().

Referenced by mln::geom::impl::seeds2tiling_roundness().

template<typename W >
unsigned mln::geom::delta ( const Window< W > &  win  ) 
template<typename W >
unsigned mln::geom::delta ( const Weighted_Window< W > &  wwin  ) 

Compute the delta of a weighted window wwin.

Definition at line 105 of file delta.hh.

References delta(), and mln::exact().

template<typename N >
unsigned mln::geom::delta ( const Neighborhood< N > &  nbh  ) 

Compute the delta of a neighborhood nbh.

Definition at line 112 of file delta.hh.

References delta(), and mln::exact().

template<typename I >
mln::trait::concrete< I >::ret mln::geom::horizontal_symmetry ( const Image< I > &  input  ) 
template<typename I >
I::site::coord mln::geom::max_col ( const Image< I > &  ima  )  [inline]
template<typename B >
B::site::coord mln::geom::max_col ( const Box< B > &  b  )  [inline]

Give the maximum col of an box 2d or 3d.

Definition at line 67 of file max_col.hh.

References mln::exact().

template<typename I >
I::site::coord mln::geom::max_ind ( const Image< I > &  ima  )  [inline]

Give the maximum ind of an image.

Definition at line 51 of file max_ind.hh.

References mln::trace::entering(), mln::exact(), and mln::trace::exiting().

Referenced by ninds().

template<typename I >
I::site::coord mln::geom::max_row ( const Image< I > &  ima  )  [inline]
template<typename B >
B::site::coord mln::geom::max_row ( const Box< B > &  b  )  [inline]

Give the maximum row of an box 2d or 3d.

Definition at line 68 of file max_row.hh.

References mln::exact().

template<typename I >
I::site::coord mln::geom::max_sli ( const Image< I > &  ima  )  [inline]

Give the maximum sli of an image.

Definition at line 53 of file max_sli.hh.

References bbox(), mln::exact(), and mln::box< P >::pmax().

Referenced by mln::linear::impl::generic_filter_(), nslis(), and mln::bkd_pixter3d< I >::start_().

std::pair< complex_image< 2, mln::space_2complex_geometry, algebra::vec<3, float> >, complex_image< 2, mln::space_2complex_geometry, float > > mln::geom::mesh_corner_point_area ( const p_complex< 2, space_2complex_geometry > &  mesh  )  [inline]

Compute the area ``belonging'' to normals at vertices.

Inspired from the method Trimesh::need_pointareas of the Trimesh library.

See also:
http://www.cs.princeton.edu/gfx/proj/trimesh2/

From the documentation of Trimesh:

``Compute the area "belonging" to each vertex or each corner of a triangle (defined as Voronoi area restricted to the 1-ring of a vertex, or to the triangle).''

Psites of 0-faces transitively adjacent to F.

The should be exactly three vertices adjacent to F.

Definition at line 249 of file misc.hh.

References mln::data::fill(), mln::norm::l2(), mln::norm::sqr_l2(), mln::algebra::vprod(), and mln::literal::zero.

Referenced by mesh_curvature().

std::pair< complex_image< 2, mln::space_2complex_geometry, float >, complex_image< 2, mln::space_2complex_geometry, float > > mln::geom::mesh_curvature ( const p_complex< 2, space_2complex_geometry > &  mesh  )  [inline]

Compute the principal curvatures of a surface at vertices.

These princpal curvatures are names kappa_1 and kappa_2 in

Sylvie Philipp-Foliguet, Michel Jordan Laurent Najman and Jean Cousty. Artwork 3D Model Database Indexing and Classification.

Parameters:
[in] mesh The surface (triangle mesh) on which the curvature is to be computed.

Psites of 0-faces transitively adjacent to F.

The should be exactly three vertices adjacent to F.

Definition at line 486 of file misc.hh.

References mln::geom::internal::diagonalize_curv(), mln::algebra::ldlt_decomp(), mln::algebra::ldlt_solve(), mesh_corner_point_area(), mesh_normal(), mln::geom::internal::next(), mln::geom::internal::prev(), mln::geom::internal::proj_curv(), mln::algebra::vprod(), and mln::literal::zero.

complex_image< 2, mln::space_2complex_geometry, algebra::vec<3, float> > mln::geom::mesh_normal ( const p_complex< 2, space_2complex_geometry > &  mesh  )  [inline]

Compute normals at vertices.

Inspired from the method Trimesh::need_normals of the Trimesh library.

See also:
http://www.cs.princeton.edu/gfx/proj/trimesh2/

For simplicity purpose, and contrary to Trimesh, this routine only compute normals from a mesh, not from a cloud of points.

Psites of 0-faces transitively adjacent to F.

The should be exactly three vertices adjacent to F.

Definition at line 161 of file misc.hh.

References mln::data::fill(), mln::norm::sqr_l2(), mln::algebra::vprod(), and mln::literal::zero.

Referenced by mesh_curvature().

template<typename I >
I::site::coord mln::geom::min_col ( const Image< I > &  ima  )  [inline]
template<typename B >
B::site::coord mln::geom::min_col ( const Box< B > &  b  )  [inline]

Give the minimum column of an box 2d or 3d.

Definition at line 68 of file min_col.hh.

References mln::exact().

template<typename I >
I::site::coord mln::geom::min_ind ( const Image< I > &  ima  )  [inline]

Give the minimum ind of an image.

Definition at line 51 of file min_ind.hh.

References mln::trace::entering(), mln::exact(), and mln::trace::exiting().

Referenced by ninds().

template<typename I >
I::site::coord mln::geom::min_row ( const Image< I > &  ima  )  [inline]
template<typename B >
B::site::coord mln::geom::min_row ( const Box< B > &  b  )  [inline]

Give the minimum row of an box 2d or 3d.

Definition at line 71 of file min_row.hh.

References mln::exact().

template<typename I >
I::site::coord mln::geom::min_sli ( const Image< I > &  ima  )  [inline]

Give the minimum sli of an image.

Definition at line 53 of file min_sli.hh.

References bbox(), mln::exact(), and mln::box< P >::pmin().

Referenced by mln::linear::impl::generic_filter_(), nslis(), and mln::fwd_pixter3d< I >::start_().

template<typename I >
unsigned mln::geom::ncols ( const Image< I > &  ima  )  [inline]
template<typename B >
unsigned mln::geom::ncols ( const Box< B > &  b  ) 

Give the number of cols of a box 2d or 3d.

Definition at line 67 of file ncols.hh.

References max_col(), min_col(), and ncols().

template<typename I >
unsigned mln::geom::ninds ( const Image< I > &  ima  )  [inline]
template<typename I >
unsigned mln::geom::nrows ( const Image< I > &  ima  )  [inline]
template<typename B >
unsigned mln::geom::nrows ( const Box< B > &  b  ) 

Give the number of rows of a box 2d or 3d.

Definition at line 66 of file nrows.hh.

References max_row(), min_row(), and nrows().

template<typename I >
unsigned mln::geom::nsites ( const Image< I > &  input  )  [inline]
template<typename I >
unsigned mln::geom::nslis ( const Image< I > &  ima  )  [inline]

Give the number of slices of an image.

Definition at line 53 of file nslis.hh.

References mln::exact(), max_sli(), and min_sli().

Referenced by mln::linear::gaussian::impl::generic_filter_(), and mln::linear::impl::generic_filter_().

template<typename S >
std::pair< typename S::site, typename S::site > mln::geom::pmin_pmax ( const Site_Set< S > &  s  )  [inline]

Compute the minimum and maximum points of point set s.

Definition at line 157 of file pmin_pmax.hh.

References mln::exact(), and nsites().

Referenced by pmin_pmax(), and mln::geom::impl::pmin_pmax_().

template<typename S >
void mln::geom::pmin_pmax ( const Site_Set< S > &  s,
typename S::site &  pmin,
typename S::site &  pmax 
) [inline]

Compute the minimum and maximum points, pmin and max, of point set s.

Definition at line 148 of file pmin_pmax.hh.

References mln::exact(), nsites(), and mln::geom::impl::pmin_pmax_().

template<typename I >
std::pair< typename I::site, typename I::site > mln::geom::pmin_pmax ( const Site_Iterator< I > &  p  )  [inline]

Compute the minimum and maximum points when browsing with iterator p.

Definition at line 106 of file pmin_pmax.hh.

References pmin_pmax().

template<typename I >
void mln::geom::pmin_pmax ( const Site_Iterator< I > &  p,
typename I::site &  pmin,
typename I::site &  pmax 
) [inline]

Compute the minimum and maximum points, pmin and max, when browsing with iterator p.

Definition at line 84 of file pmin_pmax.hh.

References mln::exact().

template<typename I >
mln::trait::concrete< I >::ret mln::geom::rotate ( const Image< I > &  input,
double  angle 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Use literal::zero as default value for the extension.

Definition at line 197 of file rotate.hh.

References rotate(), and mln::literal::zero.

template<typename I , typename Ext >
mln::trait::concrete< I >::ret mln::geom::rotate ( const Image< I > &  input,
double  angle,
const Ext &  extension 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 185 of file rotate.hh.

References rotate().

template<typename B >
B mln::geom::rotate ( const Box< B > &  box,
double  angle 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. The rotation center ref is set to box.pcenter().

Definition at line 252 of file rotate.hh.

References mln::exact(), and rotate().

template<typename I , typename Ext , typename S >
mln::trait::concrete< I >::ret mln::geom::rotate ( const Image< I > &  input,
double  angle,
const Ext &  extension,
const Site_Set< S > &  output_domain 
)

Perform a rotation from the center of an image.

Parameters:
[in] input An image.
[in] angle An angle in degrees.
[in] extension Function, image or value which will be used as extension. This extension allows to map values to sites which where not part of the domain before the rotation.
[in] output_domain The domain of the output image. An invalid domain, causes the routine to use a domain large enough to display the whole original image.
Returns:
An image with the same domain as input.

Definition at line 123 of file rotate.hh.

References bbox(), mln::compose(), mln::duplicate(), mln::trace::entering(), mln::exact(), mln::trace::exiting(), mln::initialize(), mln::mln_exact(), mln::literal::origin, mln::data::paste(), mln::box< P >::pcenter(), mln::math::pi, and mln::transposed_image().

Referenced by rotate().

template<typename B >
B mln::geom::rotate ( const Box< B > &  box_,
double  angle,
const typename B::site &  ref 
)

Rotate a box.

FIXME: the return type may be too generic and may lead to invalid covariance.

Definition at line 205 of file rotate.hh.

References mln::compose(), mln::trace::entering(), mln::exact(), mln::trace::exiting(), mln::literal::origin, mln::math::pi, mln::accu::shape::bbox< P >::take(), and mln::accu::shape::bbox< P >::to_result().

template<typename I , typename N >
mln::trait::concrete< I >::ret mln::geom::seeds2tiling ( const Image< I > &  ima_,
const Neighborhood< N > &  nbh 
) [inline]

Take a labeled image ima_ with seeds and extend them until creating tiles.

Parameters:
[in,out] ima_ The labeled image with seed.
[in] nbh The neighborhood to use on this algorithm.
Returns:
A tiled image.
Precondition:
ima_ has to be initialized.

Definition at line 136 of file seeds2tiling.hh.

References mln::trace::entering(), mln::exact(), mln::trace::exiting(), and mln::geom::impl::seeds2tiling().

template<typename I , typename N >
I mln::geom::seeds2tiling_roundness ( Image< I > &  ima_,
const w_window2d_int &  w_win,
unsigned  max,
const Neighborhood< N > &  nbh_ 
) [inline]

Take a labeled image ima_ with seeds and extend them until creating tiles rounder than the primary version.

Parameters:
[in,out] ima_ The labeled image with seed.
[in] w_win The weight window using by geom::chamfer to compute distance.
[in] max Unsigned using by geom::chamfer to compute the distance.
[in] nbh_ The neighborhood to use on this algorithm.
Precondition:
ima_ has to be initialized.

Definition at line 128 of file seeds2tiling_roundness.hh.

References mln::trace::entering(), mln::exact(), mln::trace::exiting(), and mln::geom::impl::seeds2tiling_roundness().

template<typename I , typename V >
mln::trait::concrete< I >::ret mln::geom::translate ( const Image< I > &  input,
const algebra::vec< I::site::dim, V > &  ref 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Use literal::zero as default value for the extension.

Definition at line 146 of file translate.hh.

References translate(), and mln::literal::zero.

template<typename I , typename V , typename Ext , typename S >
mln::trait::concrete< I >::ret mln::geom::translate ( const Image< I > &  input,
const algebra::vec< I::site::dim, V > &  ref,
const Ext &  extension,
const Site_Set< S > &  output_domain 
)

Perform a translation from the center of an image.

Parameters:
[in] input An image.
[in] ref The translation vector.
[in] extension Function, image or value which will be used as extension. This extension allows to map values to sites which where not part of the domain before the translation.
[in] output_domain The domain of the output image. An invalid domain, causes the routine to use the translated input_ domain.
Returns:
An image with the same domain as input.

Definition at line 99 of file translate.hh.

References mln::trace::entering(), mln::exact(), mln::trace::exiting(), mln::extend(), mln::data::fill(), and mln::mln_exact().

Referenced by mln::morpho::tree::impl::dual_hqueue(), mln::morpho::tree::impl::generic::dual_union_find(), and translate().

template<typename I , typename V , typename Ext >
mln::trait::concrete< I >::ret mln::geom::translate ( const Image< I > &  input,
const algebra::vec< I::site::dim, V > &  ref,
const Ext &  extension 
)

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 132 of file translate.hh.

References translate().

template<typename I >
mln::trait::concrete< I >::ret mln::geom::vertical_symmetry ( const Image< I > &  input  )