七个Hu不变矩的意义来自OpenCV

时间:2012-07-08 01:11:00

标签: c++ image-processing opencv computer-vision

据我所知,七个hu不变矩用于对象的平移,旋转和比例变化,以便独立地识别这些因素。

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

enter image description here

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

我的第二个疑问是关于“HuMoments”功能的输出:七个hu不变的时刻。我不明白这些数据。什么数据与轮换,翻译什么以及规模变化有关?

非常感谢!,干杯!

2 个答案:

答案 0 :(得分:13)

第一个问题:

由于图像中有单个对象,因此可以这样做。如果有更多的物体,并希望找到每个物体的时刻,请使用等高线。访问:http://opencvpython.blogspot.in/2012/06/contours-3-extraction.html

第二个问题:

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

胡锦涛先生在1962年的论文“Visual Pattern Recognition by Moment Invariants”中揭露了胡锦涛。

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

他声明:

  

定理:中心时刻是翻译中的不变量。

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

的文档

在第4-C节末尾,胡锦涛指出,在七个关系(Visit here to see them)中,前六个对翻译,大小和轮换都是不变的,而seventh one is skew invariant, which helps to distinguish mirror images.

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

加里·布拉兹基先生的OpenCV“学习OpenCV”经典着作提供了一些见解,告诉我们要探索更多。 (Refer page 254)

答案 1 :(得分:3)

回答你的第二个问题:

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

你听起来像你想知道的那种意思:

  

哪些数据与轮换相关,翻译什么以及规模变化?

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

  

哪些数据与角数,圆度或宽高比有关?

在这里,我认为很明显,这些时刻与任何想要与之相关的任意属性无关,所以答案再次没有意义。

那么我们离开了哪里?有了这个:如果我们想要比较两个对象来判断它们的“形状”是否相似(并且“形状”意味着我们不关心旋转,平移和尺度变化),我们可以计算出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)

并且新月也给了同样的东西,这不会那么有用。虽然有七个时刻,但至少有一些时刻可能会有很大的变化,因为我们可能会考虑形状的重要特征。

希望这有帮助。