据我所知,七个hu不变矩用于对象的平移,旋转和比例变化,以便独立地识别这些因素。
这就是为什么我使用OpenCV中的“时刻”函数来提取中心矩,然后我使用函数HuMoments来获得下面二值化图像的七个不变矩:
我的第一个问题是关于使用OpenCV的“时刻”功能。第二个参数是“binaryImage”,我将其设置为true,因为它是二进制图像,可以吗?
我的第二个疑问是关于“HuMoments”功能的输出:七个hu不变的时刻。我不明白这些数据。什么数据与轮换,翻译什么以及规模变化有关?
非常感谢!,干杯!
答案 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)
并且新月也给了同样的东西,这不会那么有用。虽然有七个时刻,但至少有一些时刻可能会有很大的变化,因为我们可能会考虑形状的重要特征。
希望这有帮助。