通过检查三阶矩来获得blob偏斜?

时间:2018-03-17 12:34:02

标签: opencv computer-vision

我一直在阅读Image Moments,看起来它们对于有效描述blob非常有用。显然,三阶矩代表/可以告诉我一个blob的偏斜(这是正确的吗?)。

  • 如何在OpenCV中获得第三顺序时刻?你有可以指点我的计算/公式吗?

    时刻m =时刻(轮廓,假);
    //其中任何一个都是三阶时刻吗? m.m03;
    m.mu03;
    m.nu03;

1 个答案:

答案 0 :(得分:0)

OpenCV docs for moments()中所述:

  

计算多边形或栅格化形状的所有力矩直至三阶

是的,moments()确实会返回您所追求的内容。

您提到的三个数量m03mu03nu03都是第三个或当时的不同类型。

  • m03是第三顺序
  • mu03是三阶中心力矩,即与m03相同,但如果blob以(0,0)为中心
  • nu03是平均移位和标准化的,即与mu03相同但除以某个区域。

假设你想要描述一个形状,但是对于它在图像中的大小或位置是不可知的。然后,您将使用均值移位和规范化描述符nu03。但是,如果您希望将大小保留为说明的一部分,那么您将使用mu03。如果您还想保留位置信息,请使用m03

您可以像对待一般的分布一样考虑它。假设我在正态分布中有一个x = 500的样本,平均值为450,标准差为25,这与我在正态分布中的x = 2样本的平均值为0和std dev基本相同1.有时您可能想要根据它的实际参数(平均450,标准差25)来讨论分布,有时您可能想要讨论分布,就好像它的中心(平均0,标准差25),以及有时候谈论它就好像它是标准的高斯(平均0,标准差1)。

This excellent answer讨论了如何手动计算时刻,与上面给出的“基本”描述相结合,应该使moments()的OpenCV文档中的公式更加舒适。 / p>