cv.moments - MATLAB File Help |
Calculates all of the moments up to the third order of a polygon or rasterized shape
mo = cv.moments(array)
mo = cv.moments(array, 'OptionName', optionValue, ...)
int32
or single
type) of the form
{[x,y], ...}
.The function computes moments, up to the 3rd order, of a vector shape or a
rasterized shape. The results are returned in the moments struct mo
.
The spatial moments m_ji
are computed as:
m_ji = sum_{x,y} (array(x,y) * x^j * y^i)
The central moments mu_ji
are computed as:
mu_ji = sum_{x,y} (array(x,y) * (x - xbar)^j * (y - ybar)^i)
where (xbar, ybar)
is the mass center:
xbar = m10/m00, ybar = m01/m00
The normalized central moments nu_ji
are computed as:
nu_ji = mu_ji / m00^((i+j)/2+1)
NOTE: mu00 = m00
, nu00 = 1
, nu10 = mu10 = mu01 = mu10 = 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. 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.