我知道分水岭和抓取算法都是图像分割的常用工具。它们似乎都依赖于预定义的标记来形成类似于源-汇系统的东西,然后使用图像的梯度来找到边界。
我观察到的最大区别是,grabcut 使用了一种图形结构,其中梯度转换为边缘权重,而分水岭直观地通过向梯度图像缓慢添加水来工作。但对我来说,他们似乎会产生类似的结果?
我的问题是这两种算法之间的相对优势和劣势是什么?我什么时候应该使用一个而不是另一个?
我知道分水岭和抓取算法都是图像分割的常用工具。它们似乎都依赖于预定义的标记来形成类似于源-汇系统的东西,然后使用图像的梯度来找到边界。
我观察到的最大区别是,grabcut 使用了一种图形结构,其中梯度转换为边缘权重,而分水岭直观地通过向梯度图像缓慢添加水来工作。但对我来说,他们似乎会产生类似的结果?
我的问题是这两种算法之间的相对优势和劣势是什么?我什么时候应该使用一个而不是另一个?
备查,
在 opencv 的具体情况和我所经历的情况下,
Grabcut 仅将前景与背景分开(即仅支持 2 个标签),而分水岭支持使用多个标签进行分割
Grabcut 比 watershed 慢得多,我没有硬性统计数据,但 watershed 能够近乎实时地处理图像,grabcut 需要大约 5 秒来处理