比较opencv中的两个二进制图像

时间:2015-03-18 08:50:35

标签: opencv image-processing euclidean-distance binary-image

我有两个手的二进制图像几乎相同。我怎么比较它们才能知道它们是否代表几乎相同的形状。我试过找到两个图像之间的欧几里德距离但是如果图像是稍微改变或移动到左或右或略微减小尺寸。我也尝试过opencv中的HOG描述符仍然无法得到正确答案如果我比较多个图像。什么是比较两个二进制图像的最佳方法基于形状或任何特征,以了解几乎匹配的图像,而不考虑图像的大小。图像的链接是http://postimg.org/image/w20tuuzmv/http://postimg.org/image/jndr4br9x/

2 个答案:

答案 0 :(得分:0)

我认为广义霍夫变换可能是一个很好的解决方案。 Here是一个关于它的教程。

或者,您可以尝试从一个图像切割手(仅使用轮廓边界矩形),然后将其用作模板并使用模板匹配技术在第二个图像中搜索它 - here您可以阅读更多信息。当您找到具有最高相关值的点时,您需要确定它是否足够大 - 您需要自己找到阈值。

答案 1 :(得分:0)

图像是否只是旋转,翻译和缩放?如果是这样,你可以使用PCA计算图像的主要成分,然后旋转图像,使第一个成分处于某个方向(例如总是垂直),然后你可以计算图像的质心并将它们转换成总是在相同的位置(例如图像的中心),要始终使用相同的比例,您可以调整图像的大小,使每个白色像素与质心之间的距离之和在两个图像中相同。现在可以轻松比较图像,例如score = np.sum(A==B)