我开始学习使用opencv进行最小矩形检测。我需要计算时间复杂度,但仍然对这些方法感到困惑:
任何人都可以帮助我
任何参考文献都很明显
答案 0 :(得分:4)
cv::findContours()
使用算法(link)从二进制图像中检索轮廓:
Suzuki,S。和Abe,K。,数字化的拓扑结构分析 边界的二进制图像跟随。 CVGIP 30 1,pp 32-46(1985)
该算法的基本概念包括通过考虑拓扑分析来跟踪边缘。因此,提取了内边缘和外边缘之间的关系。实际上,算法会区分外边框和内边框,并对它们进行分层次分类,因此如果轮廓围绕轮廓,则轮廓被视为另一个轮廓的“父”。
另一方面,cv::minAreaRect()
找到包含一组点的定向最小边界框。它是一种边界体积。找到物体凸壳的最小封闭盒就足够了。对于凸多边形,已知用于最小面积包围矩形的线性时间算法。基于观察结果,最小区域封闭框的一侧必须与凸多边形的一侧共线(参见[1])。可以使用称为rotating calipers的方法在线性时间内枚举此类方框。