我正在寻找MATLAB或C++中优化的4连通性或8连通性连接组件标签源代码。我在MATLAB中看到了许多连接组件标记(4-连通性)的实现。
工作速度更快的实现之一是这里解释的递归实现:http://www.mathworks.com/matlabcentral/fileexchange/38010-connected-component-labeling-like-bwlabel
MATLAB有一个内置的bwlabeln或bwlabel,它的优化程度要高得多。他们声称使用了来自Sedgewick在C,Addison-Wesley中的算法中描述的两遍算法的并集求法。然而,很难找到它的任何源代码。有人知道吗?确实需要一个优化的代码。
您确实可以按照扫描线顺序扫描图像,当您遇到组件种子时,将其填充。
您将在Graphics GEMS 1:中找到两种高效(且非常相似)的算法
-
种子填充算法,Paul S.Heckbert
-
填充帧缓冲区,Ken Fishkin
以及一些实现方式。(论文给出了类似Pascal的代码,很容易翻译。)
它们以线性时间运行,使用显式堆栈,不需要联合查找。