假设您有vector<vector<bool>>
(方形区域),其中1对应于“已填充”框。有没有什么方法可以在O(n)时间内找到整个区域?例如,此向量将具有两个完整区域:
0 0 1 1 1 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0
0 1 0 0 1 0 0 0
0 0 1 0 1 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0
答案 0 :(得分:3)
这称为8连接region growing。它是图像处理中的标准技术,您选择种子像素并“增长”。这可以使用BFS在像素数的线性时间内完成:
区域列表包含一个区域,设置为零。找到另一颗种子然后再跑,直到你找不到种子。