33

我需要cv::FindContours()在程序中使用,我必须知道其背后的算法。

openCV用什么算法来寻找轮廓?

它是如何工作的?

4

2 回答 2

31

如果您阅读文档,则提到此函数实现了以下算法:

Suzuki, S. 和 Abe, K.,通过边界跟踪对数字化二进制图像进行拓扑结构分析。CVGIP 30 1,第 32-46 页(1985 年)

OpenCV 是开源的,如果你想看看它是如何实现的,只需要阅读代码: https ://github.com/opencv/opencv/blob/master/modules/imgproc/src/contours.cpp#L1655

该问题的答案之一是相关论文的链接,该链接已失效,并且该论文位于付费墙后面,也许谷歌可以帮助找到免费副本。

于 2012-05-03T09:05:20.177 回答
5

截至 2018 年 9 月,该论文可通过Google Scholar获得。尽管如此,如果论文被删除,这里是摘要:

提出了两种边界跟随算法用于数字化二值图像的拓扑分析。第一个确定二值图像边界之间的环绕关系。由于外边界和孔边界分别与 l 像素的连通分量和孔具有一一对应的关系,因此所提出的算法产生了二进制图像的表示,可以从中提取某种特征而不重建图像。第二种算法是第一种算法的修改版本,它只遵循最外边界(即,没有被孔包围的外边界)。当使用顺序数字计算机时,这些算法可以有效地用于二进制图像的分量计数、收缩和拓扑结构分析。

于 2018-08-27T13:16:05.690 回答