【发布时间】:2015-10-25 00:31:15
【问题描述】:
假设你有一张任意的黑白图片,以下面的图片为例:
........... ...........
........... ...........
........... ...........
.OOO...O... ...........
X...O.O.OOY XOOO...OOOY
.....O..... ...........
........... ...........
........... ...........
........... ...........
其中"." 代表黑色像素,"O"、"X"、"Y" 代表白色像素
左图的X 和Y 像素沿着O 的路径相互连接(以Moore's neighbourhood 而言)。而右侧图片X 和Y 像素断开连接。通过拥有任意黑白图像,我需要高性能算法来回答某些像素组是否连接到另一组像素的问题。我很确定这个问题必须有完善的解决方案,因为这个问题看起来很常见,但我似乎找不到适合我的解决方案。顺便说一句,我知道 Flood Fill 算法,但目前我没有考虑它,因为它比回答最初的问题所需的工作更多。
我希望参考主题方向的任何信息,
附言
以防万一您回答了原始问题,也许您可能会回答以下问题:
...........
...........
...........
.OOO...O...
X...O.O.OOY
.....O.....
..........Z
..........U
..........V
如果能以下列形式回答最初的问题,也很好(但不是必须的):
像素X连接到像素Y,
像素X未连接到像素Z,
像素X未连接到像素U,
像素X未连接到像素V,
提前谢谢你!
【问题讨论】:
-
深度优先或广度优先搜索(如链接问题中所示)将有效地回答任何这些问题。
-
最佳算法取决于您的用例。您是否要拥有一张图像,然后在该图像上测试大量像素对?还是每次都是不同的图像?
-
连接组件标签以最好的方式解决了我的问题,谢谢
标签: algorithm