1. ホーム
  2. c++

[解決済み】opencvのモーメント関数を理解する

2022-02-08 10:28:06

質問

OpenCVでモーメントを使って中心座標を求める場合、その点を求めるには

Point(moment[i].m10/moment[i].m00,moment[i].m01/moment[i].m00);

どなたかこの部分を説明していただけませんか?

どのように解決するのですか?

画像処理におけるモーメントの定義は、物理学から借用したものです。画像中の各画素は、その強度に等しい重みを持つと仮定します。このとき、定義された点は画像の重心(centroid)である。

I(x,y)は画像中の画素(x,y)の強度であるとする。そして、m(i,j)は、すべての可能なxとyの和である。I(x,y) * (x^i) * (y^j) のすべての可能な x と y の合計です。

ここで をクリックすると、OpenCV で使用されているモーメントのドキュメントを読むことができます。これらは生のモーメントと呼ばれます。

そして こちら には、あらゆる種類の画像モーメント (生のモーメント、中心モーメント、スケール/回転不変モーメントなど) についての wiki の記事があります。とても良い記事なので、ぜひ読んでみてください。