OpenCV 4.5.3(日本語機械翻訳)
公開メンバ関数 | 全メンバ一覧
cv::Moments クラス

struct returned by cv::moments [詳解]

#include <types.hpp>

公開メンバ関数

Moments ()
デフォルトコンストラクタ
Moments (double m00, double m10, double m01, double m20, double m11, double m02, double m30, double m21, double m12, double m03)
フルコンストラクタ

公開変数類

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

詳解

が返す構造体cv::moments

空間モーメントは$\texttt{Moments::m}_{ji}$は次のように計算されます。

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

中心モーメント$\texttt{Moments::mu}_{ji}$は次のように計算されます。

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

ここで$(\bar{x}, \bar{y})$は,質量中心です.

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

規格化された中心モーメント$\texttt{Moments::nu}_{ij}$は次のように計算されます。

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

覚え書き
$\texttt{mu}_{00}=\texttt{m}_{00}$,$\texttt{nu}_{00}=1$ $\texttt{nu}_{10}=\texttt{mu}_{10}=\texttt{mu}_{01}=\texttt{mu}_{10}=0$となり、値は保存されません。

輪郭のモーメントも同様に定義されますが、グリーンの式を用いて計算されます(以下を参照)。http://en.wikipedia.org/wiki/Green_theorem). そのため、ラスタの解像度が限られているため、輪郭に対して計算されたモーメントは、同じラスタライズされた輪郭に対して計算されたモーメントとは若干異なります。

覚え書き
輪郭のモーメントは Green の公式を用いて計算されているため,自己交差のある輪郭の場合,例えば,蝶形の輪郭の場合,面積がゼロ(m00)になるなど,一見奇妙な結果になることがあります。

このクラス詳解は次のファイルから抽出されました: