OpenCV  4.1.0
Open Source Computer Vision
Public Member Functions | List of all members

struct returned by cv::moments More...

#include <opencv2/core/types.hpp>

Public Member Functions

 Moments ()
 the default constructor
 
 Moments (double m00, double m10, double m01, double m20, double m11, double m02, double m30, double m21, double m12, double m03)
 the full constructor
 

Public Attributes

spatial moments
double m00
 
double m10
 
double m01
 
double m20
 
double m11
 
double m02
 
double m30
 
double m21
 
double m12
 
double m03
 
central moments
double mu20
 
double mu11
 
double mu02
 
double mu30
 
double mu21
 
double mu12
 
double mu03
 
central normalized moments
double nu20
 
double nu11
 
double nu02
 
double nu30
 
double nu21
 
double nu12
 
double nu03
 

Detailed Description

struct returned by cv::moments

The spatial moments \(\texttt{Moments::m}_{ji}\) are computed as:

\[\texttt{m} _{ji}= \sum _{x,y} \left ( \texttt{array} (x,y) \cdot x^j \cdot y^i \right )\]

The central moments \(\texttt{Moments::mu}_{ji}\) are computed as:

\[\texttt{mu} _{ji}= \sum _{x,y} \left ( \texttt{array} (x,y) \cdot (x - \bar{x} )^j \cdot (y - \bar{y} )^i \right )\]

where \((\bar{x}, \bar{y})\) is the mass center:

\[\bar{x} = \frac{\texttt{m}_{10}}{\texttt{m}_{00}} , \; \bar{y} = \frac{\texttt{m}_{01}}{\texttt{m}_{00}}\]

The normalized central moments \(\texttt{Moments::nu}_{ij}\) are computed as:

\[\texttt{nu} _{ji}= \frac{\texttt{mu}_{ji}}{\texttt{m}_{00}^{(i+j)/2+1}} .\]

Note
\(\texttt{mu}_{00}=\texttt{m}_{00}\), \(\texttt{nu}_{00}=1\) \(\texttt{nu}_{10}=\texttt{mu}_{10}=\texttt{mu}_{01}=\texttt{mu}_{10}=0\) , hence the values are not stored.

The moments of a contour are defined in the same way but computed using the Green's formula (see http://en.wikipedia.org/wiki/Green_theorem). So, due to a limited raster resolution, the moments computed for a contour are slightly different from the moments computed for the same rasterized contour.

Note
Since the contour moments are computed using Green formula, you may get seemingly odd results for contours with self-intersections, e.g. a zero area (m00) for butterfly-shaped contours.

Constructor & Destructor Documentation

cv::Moments::Moments ( )

the default constructor

cv::Moments::Moments ( double  m00,
double  m10,
double  m01,
double  m20,
double  m11,
double  m02,
double  m30,
double  m21,
double  m12,
double  m03 
)

the full constructor

Member Data Documentation

double cv::Moments::m00
double cv::Moments::m01
double cv::Moments::m02
double cv::Moments::m03
double cv::Moments::m10
double cv::Moments::m11
double cv::Moments::m12
double cv::Moments::m20
double cv::Moments::m21
double cv::Moments::m30
double cv::Moments::mu02
double cv::Moments::mu03
double cv::Moments::mu11
double cv::Moments::mu12
double cv::Moments::mu20
double cv::Moments::mu21
double cv::Moments::mu30
double cv::Moments::nu02
double cv::Moments::nu03
double cv::Moments::nu11
double cv::Moments::nu12
double cv::Moments::nu20
double cv::Moments::nu21
double cv::Moments::nu30

The documentation for this class was generated from the following file: