【发布时间】:2014-03-29 20:27:40
【问题描述】:
我正在寻找一种算法来查找我的二进制图像中的所有连通分量。
如果我们把图像想象成一个矩阵,它看起来像:
[ 0 0 0 0 ...
0 0 0 0 ...
0 1 1 1 ...
0 1 0 1 ...
0 1 0 0 ...
...
]
我想找到所有接触的(对角线也是如此)。在此示例中,只有一个组件 - 但图像中可能有数百个独特的组件。
Image => ALGORITHM => [ [(x,y)], ... ]
# list of lists of coordinates (each shape is a list)
我查看了 Wikipedia 上的 two pass labelling 算法,但我不相信它会返回实际的组件 - 它只是标记不同的组件。 (或者这个是一样的吗?)
如果可能,这应该能够针对视频流实时运行。
【问题讨论】:
-
两遍就好了。将它们全部标记后,只需遍历它们并按标签将它们添加到单独的列表中。本质上,让它三遍:)
-
我的想法是连接组件标签(CCL)很好,@Geobits 是对的,一旦你得到了这些组件的标签,后处理就不是问题(就复杂性而言)。我在想的是,实际上CCL似乎有点矫枉过正..不是一个简单的DFS可以标记所有具有相同复杂性的组件吗?
-
@shole DFS,你的意思是深度优先搜索?如何将图像放入图表以执行 DFS?
-
@JimMischel 如何为多个组件执行泛洪填充?
标签: algorithm language-agnostic computer-vision image-recognition