filterByInertia の意味がわかりません...ドキュメントの小さな説明もわかりません:
最小慣性と最大慣性との比率による。抽出されたブロブは、minInertiaRatio
(包括的) とmaxInertiaRatio
(排他的) の間でこの比率になります。
filterByInertia の意味がわかりません...ドキュメントの小さな説明もわかりません:
最小慣性と最大慣性との比率による。抽出されたブロブは、minInertiaRatio
(包括的) とmaxInertiaRatio
(排他的) の間でこの比率になります。
. 上の画像は、さまざまなフィルターパラメーターが何をするかをほとんど説明しています。SimpleBlobDetector は、円形のブロブが検出されたときに最も満足度が高く、さまざまなフィルターを使用して円形からのさまざまな逸脱を除外します。
慣性は、ブロブの短軸と長軸の比率を測定します。
この図は、真円度と慣性の違いも示しています。LearnOpenCV.comのブロブ検出チュートリアルからこの図をコピーしました。
私もしばらくの間、これについて疑問に思っていました。ブロブの検出に関しては、OpenCV のドキュメントはあまり役に立ちません。
他のブロブ アナライザーの説明に基づくと、ブロブの慣性は「主軸を中心とした回転に対するブロブの慣性抵抗」です。それは、ブロブの質量(この場合は面積だと思います)がブロブの形状全体にどのように分布しているかによって異なります。
数学的なことがたくさんありますが、そのほとんどは方法を覚えていませんが、このページの下部にあるバイナリ イメージのプロパティに関する結果は、かなりうまくまとめられています (ブロブの検出は、一連のバイナリ イメージへの入力イメージ):
比率から、オブジェクトがどの程度丸くなっているかがわかります。この比率は、線の場合は 0、円の場合は 1 になります。
したがって、基本的には、指定することminInertiaRatio
でmaxInertiaRatio
、ブロブの長さに基づいてブロブをフィルタリングできます。慣性比 0 では細長いブロブ (線に近い) が生成され、慣性比 1 では領域が中心に向かって集中している (円に近い) ブロブが生成されます。
物理的な解釈は次のとおりです。
カードの塊を切り取ると、その重心を見つけ、この点を横切って軸を取り付け (軸はカードと平行)、回転させて、そのモーメントを測定できます。慣性の。形状によっては、軸の置き方によって異なる値が得られる場合があります。楕円の場合、車軸が長 (主) 軸に沿って取り付けられている場合に最小値が得られ、車軸が短軸に沿って配置されている場合に最大値が得られます (したがって、より多くのカードが車軸から離れています)。もちろん、円の慣性は常に同じです。
異なる値が存在する場合、ある向きでは常に「最大」の慣性があり、「最大」から 90 度離れた位置に車軸がある場合の「最小」があります。慣性比は、単にこれらの慣性間の比、最小/最大です。
楕円ではない形状の場合、メトリックは、形状全体がほぼ細長いか、またはすべての方向でほぼ同じサイズであるかを示します。境界の凹凸や切れ目や凹み(丸みや凸みが見えるもの)は特に気にせずに。
数学的には、次のようになります。