我不明白filterByInertia是什么意思...我也不理解文档的小描述:
通过最小惯性与最大惯性的比率。提取的blob将具有minInertiaRatio
(包括)和maxInertiaRatio
之间的此比率(不包括)。
答案 0 :(得分:10)
。上面的图像几乎解释了不同的滤波器参数的作用。 SimpleBlobDetector在看到圆形斑点时最开心,而不同的滤镜会过滤掉与圆形形状不同的偏差孩子。
惯性衡量一个blob的次轴和长轴的比率。
该图还显示了圆度和惯性之间的差异。我在Blob Detection Tutorial
复制了LearnOpenCV.com的这个数字答案 1 :(得分:9)
我一直想知道这一点;在blob检测方面,OpenCV文档不是很有用。
根据other blob analyzers的描述,斑点的惯性是“斑点围绕其主轴旋转的惯性阻力”。这取决于blob的质量(我猜在这种情况下是区域)如何分布在整个blob的形状中。
涉及很多肮脏的东西 - 其中大多数我不记得怎么做 - 但是this page on the properties of binary images底部的结果总结得相当好(blob检测是通过转换来完成的输入图像到一系列二进制图像):
比率让我们了解对象的圆形程度。对于一行,此比率为0,对于一个圆,该比率为1.
基本上,通过指定minInertiaRatio
和maxInertiaRatio
,您可以根据斑点的长度来过滤斑点。惯性比为0将产生细长的斑点(更接近线),惯性比为1将产生斑点,其中面积更集中于中心(更接近圆圈)。
答案 2 :(得分:2)
这是一种物理解释:
如果你在一张卡片上切掉斑点,你可以找到它的重心,然后在它上面连接一个轴,穿过这个点(轴是平行到卡片上) ,然后旋转它,并测量它的惯性矩。根据形状的不同,您可能会根据轴的放置方式获得不同的值。对于椭圆,当轴沿长(主)轴连接时,您获得最低值;当沿着短轴放置轴时,获得最大值(因此更多的卡远离轴)。当然,对于一个圆,惯性总是相同的。
如果存在不同的值,则在某个方向上始终存在“最大”惯性,并且“轴”与“最大”位置相距90度。惯量比只是这些惯性之间的比率,min / max。
对于不是椭圆形的形状,该指标会告诉您整体形状是否大致拉长,或者在所有方向上的大小大致相同;没有特别关注不均匀的边界或切口和凹陷(圆度和凸度看)。
在数学上,它做了类似的事情: