-1

我正在寻找 MATLAB 或 C++ 中优化的 4-connectivity 或 8-connectivity Connected Component Labeling 源代码。我在 MATLAB 中看到了许多连接组件标记(4 连接)的实现。

运行速度更快的实现之一是此处解释的递归实现:http: //www.mathworks.com/matlabcentral/fileexchange/38010-connected-component-labeling-like-bwlabel

MATLAB 有一个内置的 bwlabeln 或 bwlabel,它的优化程度要高得多。他们声称使用 Sedgewick's Algorithms in C, Addison-Wesley 中描述的两遍算法中的 union-find 方法。但是,很难找到它的任何源代码。有人知道吗?确实需要优化的代码。

4

1 回答 1

1

您确实可以通过按扫描线顺序扫描图像并在遇到组件时对其进行种子填充来工作。

您将在 Graphics GEMS 1 中找到两种高效(且非常相似)的算法:

  • 种子填充算法,Paul S. Heckbert

  • 在帧缓冲区中填充区域,Ken Fishkin

并稍微努力一些实现。(论文给出了易于翻译的类似 Pascal 的代码。)

它们以线性时间运行,使用显式堆栈并且不需要联合查找。

于 2016-04-08T22:45:55.723 回答