opencv:检测最小矩形的时间复杂度

时间:2015-03-17 13:18:54

标签: c++ opencv contour rectangles

我开始学习使用opencv进行最小矩形检测。我需要计算时间复杂度,但仍然对这些方法感到困惑:

  1. findContours()。
  2. minAreaRect()
  3. 任何人都可以帮助我

    1. 这些方法如何运作?
    2. 这些方法的时间复杂度是多少?
    3. 任何参考文献都很明显

1 个答案:

答案 0 :(得分:4)

cv::findContours()使用算法(link)从二进制图像中检索轮廓:

  

Suzuki,S。和Abe,K。,数字化的拓扑结构分析   边界的二进制图像跟随。 CVGIP 30 1,pp 32-46(1985)

该算法的基本概念包括通过考虑拓扑分析来跟踪边缘。因此,提取了内边缘和外边缘之间的关系。实际上,算法会区分外边框和内边框,并对它们进行分层次分类,因此如果轮廓围绕轮廓,则轮廓被视为另一个轮廓的“父”。

另一方面,cv::minAreaRect()找到包含一组点的定向最小边界框。它是一种边界体积。找到物体凸壳的最小封闭盒就足够了。对于凸多边形,已知用于最小面积包围矩形的线性时间算法。基于观察结果,最小区域封闭框的一侧必须与凸多边形的一侧共线(参见[1])。可以使用称为rotating calipers的方法在线性时间内枚举此类方框。

相关问题