比较分水岭和抓取

Comparing watershed and grabcut

我知道分水岭和抓取算法都是图像分割的常用工具。它们似乎都依赖于预定义的标记来形成类似源汇系统的东西,然后使用图像的梯度来找到边界。

我观察到的最大区别是 grabcut 使用梯度转换为边缘权重的图形结构,而分水岭通过向梯度图像缓慢添加水来直观地工作。但对我来说,它们似乎会产生相似的结果?

我的问题是这两种算法之间的相对优势和劣势是什么?我什么时候应该使用一个而不是另一个?

我不知道 GraphCut,但对于 Watershed,主要弱点是 "leaking"。事实上,如果你的标记没有被完美定义,一旦找到允许传播的像素,分水岭就会泄漏。所以它必须受到标记的高度限制。

分水岭(开发的不错,看SMIL库)貌似比图切快

供日后参考,

opencv的具体情况和我所经历的,

Grabcut只分离前景和背景(即只支持2个标签),watershed支持多标签分割

Grabcut 比 watershed 慢得多,我没有硬性统计数据,但 watershed 能够近乎实时地处理 grabcut 需要大约 5 秒才能处理的图像