除了HuMoment之外还有其他形状属性缩放 - 旋转不变?

时间:2013-01-18 15:23:22

标签: python image-processing opencv scikit-image

WeightedNormalizedMoments,WeightedHuMoments和HuMoments之间的区别是什么? (http://scikit-image.org/docs/0.6/api/skimage.measure.html

除HuMoment外,还有其他形状属性缩放 - 旋转不变吗?有一些例子告诉我如何实现它们?我在c ++ OpenCV(C): calculating moments FROM contour中找到了这个例子,但我更喜欢在python

中工作

2 个答案:

答案 0 :(得分:1)

总是在局部图像特征上计算/求和矩,这需要首先进行分段和标记。以下公式适用于加权和非加权情况:

m_ji = sum{ array(x, y) * x^j * y^i }

scikit-image(以及一般情况下)加权和非加权时刻之间的实际差异如下:

non-weighted:  array(x, y) is a binary image
weighted:      array(x, y) is a grey-level image (each point/pixel is weighted by its grey-level)

这些时刻只是翻译不变的。为了使它们在尺度上不变,我们需要使用以下公式对它们进行标准化:

nu_ji = mu_ji / m_00^[(i+j)/2 + 1]

不变性是指几何变换。

有关时刻及其应用的更多信息,您还可以查看skimage.measure.regionprops函数中的链接引用。

答案 1 :(得分:0)

您需要的所有内容都写在这里,包括如何计算自己的时刻的定义。这是一个简单且低于100行的代码实现。 http://en.wikipedia.org/wiki/Image_moment

当然,你只想总结轮廓内的像素,所以PointPolygonTest会对你有用。