18

我理解七胡不变矩是针对物体的平移、旋转和尺度变化,以便独立识别物体这些因素。

这就是为什么我使用 OpenCV 中的“矩”函数来提取中心矩,然后我使用函数 HuMoments 来获取以下二值化图像的七个不变矩:

在此处输入图像描述

我的第一个问题是关于使用 OpenCV 中的“时刻”功能。第二个参数是“binaryImage”,我设置为true,因为它是二进制图像,可以吗?

我的第二个疑问是关于函数“HuMoments”的输出:七个 hu 不变矩。我不明白这个数据。哪些数据与旋转有关,哪些数据与平移有关,哪些数据与规模变化有关?

非常感谢!,干杯!

4

2 回答 2

16

第一个问题:

这样做是可以的,因为您在图像中有单个对象。如果有更多对象,并且想为每个对象找到时刻,请使用轮廓。访问: http: //opencvpython.blogspot.in/2012/06/contours-3-extraction.html

第二个问题:

(看到你的问题我也在想)

HuMoments 是胡明奎先生在 1962 年发表的论文《通过 Moment Invariants 进行视觉模式识别》中提出的。

在那篇论文中,他解释了它们(当然,在高数学内容的帮助下)。如果需要,您可以检查它。

他说:

定理:中心矩在平移下是不变量。

当您使用 moment() 函数找到矩时,它会返回三种类型的矩,spatial moments (Mji), Central Moments (MUji) and Central Normalized Moments ( NUji). 查看文档了解片刻()

在第 4-C 节的末尾,胡指出,在七个关系中(请访问此处查看它们),前六个对于平移、大小和旋转是不变的,而seventh one is skew invariant, which helps to distinguish mirror images.

我搜索了很多关于 Hu Moments 价值观的含义。但是所有的论文都说同样的对话:" Seven Hu Moments are calculated from Central Moments which are invariant to size, position and orientation ".他们没有说明个人价值观的含义。

而Gary Bradsky先生的OpenCV经典著作《Learning OpenCV》给出了一些见解,告诉我们要进一步探索。(参见第 254 页)

于 2012-07-08T08:02:09.843 回答
4

回答你的第二个问题:

我认为不变的时刻没有任何意义。无论它如何移动、旋转或缩放,它们都可以保证对于给定的形状是恒定的。

你听起来像你想知道的那种含义:

哪些数据与旋转有关,哪些数据与平移有关,哪些数据与规模变化有关?

不太有意义,因为根据定义,它们都与旋转、平移和缩放无关。但是,一旦对于其他属性,可以很容易地提出类似的问题,例如:

什么数据是相关的角数、圆度或宽高比?

在这里,我认为很明显,这些时刻与人们希望与之相关的任何任意属性都没有关系,所以答案再次是没有意义。

那么,我们将何去何从?有了这个:如果我们想比较两个对象来判断它们的“形状”是否相似(“形状”是指我们不关心旋转、平移和缩放变化),我们可以计算 hu 不变矩并比较它们。如果这些值“大致”相等,那么您可以说形状“大致”相同。然后人们会希望这些时刻在不同的形状之间有很大的不同——它们是否会是一个有趣的问题,也许其他人可以回答。

例如,假设我们计算正方形的一些矩(为简单起见,仅显示三个,范围为 0 到 1):

(0.5, 0.5, 0.5)

然后我们希望一个圆圈给出类似的东西:

(0.5, 1, 0.5)

还有一个椭圆:

(0.5, 1, 0.7)

这可以让您比较这些形状。如果计算未知形状的矩并得到:

(0.51, 0.98, 0.47)

它可能(希望)是一个圆圈。然而,如果一颗星给了你:

(0.2, 0.6, 0.9)

和一个新月也给了同样的东西,那不会那么有用。虽然有 7 个时刻,但至少有一些时刻有很大的潜力会因我们可能认为的形状的重要特征而发生显着变化。

希望这可以帮助。

于 2014-01-24T19:41:45.273 回答