如何比较两个轮廓相互转换的位置?

时间:2014-02-17 09:04:05

标签: opencv image-processing

图像:http://answers.opencv.org/upfiles/1392627645523812.jpg 大家好,
      我想比较两个轮廓&找到它们之间的hausdorff距离,找出两个轮廓之间的相似性。当我将右侧的模板轮廓作为参考模板轮廓从左侧找到相似的轮廓时,由于场景轮廓点从模板轮廓点转换而出现错误。实际上我直接从两幅图像中取出轮廓点。如您所见,我不能仅裁剪轮廓区域,因为它会影响相邻的轮廓。

我是否应该使用场景图像尺寸制作空图像并使我的模板轮廓在场景图像上滑动以找到匹配?或者还有其他更好的方法吗? 问候, Balaji.R

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

  1. 检测原始图像中的轮廓。
  2. 获取每个轮廓的轮廓序列/点。例如,假设第一个开始在contour-1中存储为point-1,point-2,point-3等(只是一个粗略的例子)。
  3. 然后找到每个轮廓的最小和最大x和y坐标。
  4. 对于每个轮廓width = max_x - min_xheight = max_y - min_y
  5. 然后通过

    为每个轮廓创建单独的图像

    regionOfInterest = Rect(min_x,min_y,width,height) templateImage = originalImage(regionOfInterest);

  6. 现在,执行matchTemplate();在每个单独的模板图像(从每个轮廓创建)和原始图像之间,然后您可以找到最大焦化的位置。

  7. 如果您认为模板图片的比例也可能不同,那么您可以在模板图片上pryUp()pryDown()