Visual Servoing Platform  version 3.1.0
vpImageMorphology Class Reference

#include <visp3/core/vpImageMorphology.h>

Public Types

enum  vpConnexityType { CONNEXITY_4, CONNEXITY_8 }
 

Static Public Member Functions

template<class Type >
static void erosion (vpImage< Type > &I, Type value, Type value_out, vpConnexityType connexity=CONNEXITY_4)
 
template<class Type >
static void dilatation (vpImage< Type > &I, Type value, Type value_out, vpConnexityType connexity=CONNEXITY_4)
 
static void erosion (vpImage< unsigned char > &I, const vpConnexityType &connexity=CONNEXITY_4)
 
static void dilatation (vpImage< unsigned char > &I, const vpConnexityType &connexity=CONNEXITY_4)
 

Detailed Description

Various mathematical morphology tools, erosion, dilatation...

Author
Fabien Spindler (Fabie.nosp@m.n.Sp.nosp@m.indle.nosp@m.r@ir.nosp@m.isa.f.nosp@m.r) Irisa / Inria Rennes

Definition at line 67 of file vpImageMorphology.h.

Member Enumeration Documentation

◆ vpConnexityType

Type of connexity 4, or 8.

Enumerator
CONNEXITY_4 

For a given pixel 4 neighbors are considered (left, right, up, down)

CONNEXITY_8 

For a given pixel 8 neighbors are considered (left, right, up, down, and the 4 pixels located on the diagonal)

Examples:
tutorial-connected-components.cpp.

Definition at line 73 of file vpImageMorphology.h.

Member Function Documentation

◆ dilatation() [1/2]

template<class Type >
void vpImageMorphology::dilatation ( vpImage< Type > &  I,
Type  value,
Type  value_out,
vpConnexityType  connexity = CONNEXITY_4 
)
static

Dilate a binary image using a structuring element of size one.

Parameters
I: Image to process.
value: Values of the pixels to dilate.
value_out: Value to set if dilatation is done.
connexity: Type of connexity: 4 or 8.

To dilate a black area in an unsigned char image with one element mask, set value to 0 and value_out to 255.

To dilate a white area in an unsigned char image with one element mask, set value to 255 and value_out to 0.

See also
erosion()
Examples:
testImageMorphology.cpp, and tutorial-count-coins.cpp.

Definition at line 178 of file vpImageMorphology.h.

References vpImage< Type >::getHeight(), vpImage< Type >::getSize(), and vpImage< Type >::getWidth().

Referenced by vp::reconstruct().

◆ dilatation() [2/2]

void vpImageMorphology::dilatation ( vpImage< unsigned char > &  I,
const vpConnexityType connexity = CONNEXITY_4 
)
static

Dilate a grayscale image using the given structuring element.

The gray-scale dilatation of $ A \left( x, y \right) $ by $ B \left (x, y \right) $ is defined as:

\[ \left ( A \oplus B \right ) \left( x,y \right) = \textbf{max} \left \{ A \left ( x-x', y-y' \right ) + B \left ( x', y'\right ) | \left ( x', y'\right ) \subseteq D_B \right \} \]

where $ D_B $ is the domain of the structuring element $ B $ and $ A \left( x,y \right) $ is assumed to be $ - \infty $ outside the domain of the image.

In our case, gray-scale erosion is performed with a flat structuring element $ \left( B \left( x,y \right) = 0 \right) $. Gray-scale erosion using such a structuring element is equivalent to a local-maximum operator:

\[ \left ( A \oplus B \right ) \left( x,y \right) = \textbf{max} \left \{ A \left ( x-x', y-y' \right ) | \left ( x', y'\right ) \subseteq D_B \right \} \]

Parameters
I: Image to process.
connexity: Type of connexity: 4 or 8.
See also
erosion(vpImage<unsigned char> &, const vpConnexityType &)

Definition at line 200 of file vpImageMorphology.cpp.

References vpImage< Type >::bitmap, vpCPUFeatures::checkSSE2(), CONNEXITY_4, vpImage< Type >::getHeight(), vpImage< Type >::getSize(), and vpImage< Type >::getWidth().

◆ erosion() [1/2]

template<class Type >
void vpImageMorphology::erosion ( vpImage< Type > &  I,
Type  value,
Type  value_out,
vpConnexityType  connexity = CONNEXITY_4 
)
static

Erode a binary image using a structuring element of size one.

Parameters
I: Image to process.
value: Values of the pixels to erode.
value_out: Value to set if erosion is done.
connexity: Type of connexity: 4 or 8.

To erode a black area in an unsigned char image, set value to 0 and value_out to 255.

To erode a white area in an unsigned char image with one element mask, set value to 255 and value_out to 0.

See also
dilatation()
Examples:
testImageMorphology.cpp, and tutorial-count-coins.cpp.

Definition at line 110 of file vpImageMorphology.h.

References vpImage< Type >::getHeight(), vpImage< Type >::getSize(), and vpImage< Type >::getWidth().

◆ erosion() [2/2]

void vpImageMorphology::erosion ( vpImage< unsigned char > &  I,
const vpConnexityType connexity = CONNEXITY_4 
)
static

Erode a grayscale image using the given structuring element.

The gray-scale erosion of $ A \left( x, y \right) $ by $ B \left (x, y \right) $ is defined as:

\[ \left ( A \ominus B \right ) \left( x,y \right) = \textbf{min} \left \{ A \left ( x+x', y+y' \right ) - B \left ( x', y'\right ) | \left ( x', y'\right ) \subseteq D_B \right \} \]

where $ D_B $ is the domain of the structuring element $ B $ and $ A \left( x,y \right) $ is assumed to be $ + \infty $ outside the domain of the image.

In our case, gray-scale erosion is performed with a flat structuring element $ \left( B \left( x,y \right) = 0 \right) $. Gray-scale erosion using such a structuring element is equivalent to a local-minimum operator:

\[ \left ( A \ominus B \right ) \left( x,y \right) = \textbf{min} \left \{ A \left ( x+x', y+y' \right ) | \left ( x', y'\right ) \subseteq D_B \right \} \]

Parameters
I: Image to process.
connexity: Type of connexity: 4 or 8.
See also
dilatation(vpImage<unsigned char> &, const vpConnexityType &)

Definition at line 70 of file vpImageMorphology.cpp.

References vpImage< Type >::bitmap, vpCPUFeatures::checkSSE2(), CONNEXITY_4, vpImage< Type >::getHeight(), vpImage< Type >::getSize(), and vpImage< Type >::getWidth().