2012-03-22 124 views
4

我有这两个图像。什么是CvMatchShapes返回?

small size

而且...... larger size

我让他们到graysclae图像,然后通过两个图像cvMatchImages像这样

Double someValue = cvMatchShapes(grayImage, grayImage2, CV_CONTOURS_MATCH_I2, 0); 
    System.out.println(someValue); 

这是由印刷了系统输出的值1.465496453484283。这个值代表什么?我如何使用它来匹配其他图像,以及我怎样才能拒绝那些没有的图像?

回答

2

该值表示两个物体有多么不同,它表示两个形状之间的胡矩特征距离。它越小,两个物体越相似。 阈值可用于执行匹配,如下所示:如果输出值小于阈值,则两个对象匹配,或两个对象不同。 至于如何选择一个阈值,这取决于。 你可以使用一些实例来训练阈值。 我强烈建议您将图像中的对象标准化为相似的尺寸。这样会提高您的准确度

+0

因此,返回的值是翻译的一个因素吗? – prometheuspk 2012-03-23 07:16:43

+0

如果这些图像大小相同,将返回什么值? 0? – prometheuspk 2012-03-23 07:40:05

+0

可以这么说,但它是两个物体的特征之间的距离,距离可能是欧几里德距离或类似的东西 – zhijie 2012-03-23 07:42:17