huInvariants: Calculate Seven Hu Moments Invariants

View source: R/shape.R

huInvariantsR Documentation

Calculate Seven Hu Moments Invariants

Description

huInvariants calculates the seven original Hu moments invariants plus an additional one discovered by Suk & Flusser (2011), from the moments of a polygon or rasterized shape.

Usage

huInvariants(moments)

Arguments

moments

A data frame as produced by moments.

Value

A data frame with 2 columns:

  • "invariant": the name of the invariant See Note below.

  • "value": the value of the invariant.

Note

The Hu invariants are defined as:

  • \texttt{Hu1}= \eta _{20}+ \eta _{02}

  • \texttt{Hu2}= ( \eta _{20}- \eta _{02})^{2}+4 \eta _{11}^{2}

  • \texttt{Hu3}= ( \eta _{30}-3 \eta _{12})^{2}+ (3 \eta _{21}- \eta _{03})^{2}

  • \texttt{Hu4}= ( \eta _{30}+ \eta _{12})^{2}+ ( \eta _{21}+ \eta _{03})^{2}

  • \texttt{Hu5}= ( \eta _{30}-3 \eta _{12})( \eta _{30}+ \eta _{12})[( \eta _{30}+ \eta _{12})^{2}-3( \eta _{21}+ \eta _{03})^{2}]+(3 \eta _{21}- \eta _{03})( \eta _{21}+ \eta _{03})[3( \eta _{30}+ \eta _{12})^{2}-( \eta _{21}+ \eta _{03})^{2}]

  • \texttt{Hu6}= ( \eta _{20}- \eta _{02})[( \eta _{30}+ \eta _{12})^{2}- ( \eta _{21}+ \eta _{03})^{2}]+4 \eta _{11}( \eta _{30}+ \eta _{12})( \eta _{21}+ \eta _{03})

  • \texttt{Hu7}= (3 \eta _{21}- \eta _{03})( \eta _{21}+ \eta _{03})[3( \eta _{30}+ \eta _{12})^{2}-( \eta _{21}+ \eta _{03})^{2}]-( \eta _{30}-3 \eta _{12})( \eta _{21}+ \eta _{03})[3( \eta _{30}+ \eta _{12})^{2}-( \eta _{21}+ \eta _{03})^{2}]

  • \texttt{Hu8}= \eta_ {11}[(\eta_ {30}+ \eta_ {12})^{2}-(\eta_ {03}+ \eta_ {21})^{2}]- (\eta_ {20}+ \eta_ {02})(\eta_ {30}+ \eta_ {12})(\eta_ {03}+ \eta_ {21})

where \eta_{ji} corresponds to the normalized central moments as computed by moments.

Author(s)

Simon Garnier, garnier@njit.edu

See Also

findContours, moments

Examples

dots <- image(system.file("sample_img/dots.jpg", package = "Rvision"))
dots_gray <- changeColorSpace(dots, "GRAY")
dots_bin <- dots_gray < 200
contours <- findContours(dots_bin)
contour0 <- contours$contours[contours$contours[, 1] == 0, 2:3]
m <- moments(contour0)
huInvariants(m)


swarm-lab/Rvision documentation built on Feb. 7, 2024, 4:59 a.m.