我需要在程序中使用cv::FindContours()
,我必须知道背后的算法。
openCV 使用什么算法来查找轮廓?
它是如何运作的?
答案 0 :(得分:25)
如果您阅读documentation,则提及此函数实现以下算法:
Suzuki,S。和Abe,K。,数字化的拓扑结构分析 边界的二进制图像跟随。 CVGIP 30 1,pp 32-46(1985)
OpenCV是开源的,如果你想看看它是如何实现的,只需要阅读代码: https://github.com/opencv/opencv/blob/master/modules/imgproc/src/contours.cpp#L1655
this question的答案之一有the paper in question 的链接,该链接已经死亡且论文在付费墙后面,也许谷歌可以帮助找到一个免费副本。
答案 1 :(得分:1)
截至2018年9月,可通过Google Scholar获得该论文。尽管如此,以下是摘录的摘要:
针对拓扑提出了两种边界跟随算法 数字化二进制图像的分析。第一个决定 二进制图像边界之间的周围关系。自从 外边界和孔边界与一一对应 l像素的连接分量和与孔的连接, 所提出的算法从 可以在不重构特征的情况下提取某种特征 图片。第二种算法是第一种算法的修改版本, 仅遵循最外边界(即 没有被孔包围)。这些算法可以有效地用于 的组件计数,收缩和拓扑结构分析 使用顺序数字计算机时的二进制图像。