将边缘检测转换为蒙版

Convert Edge Detection to Mask

给一张我应用了边缘检测滤镜的图像,有什么方法(希望 efficient/performant 是一种方法)来获得标记段中点“总和”的掩码?

图片说明:

提前致谢。

更新:

添加了较亮图像的示例 (https://imgur.com/a/MN0t3pH)。 正如您将在下图中看到的,我们假设当用户标记一个区域 (ROI) 时,将会有一个对象从其背景中“脱颖而出”。我们的最终目标是获得该对象最准确的“掩码”,以便我们可以将其用于 ML 处理。

根据您上传的两个示例,我可以假设您正在根据 color/intensity 的差异进行阈值处理- 我可以建议将 grabcut 作为基本的前景分离 - 使用遮罩中的边缘ROI 作为算法的输入。 更好的是 - 如果您的阈值处理与第一张图像一样好,只需跳过边缘检测部分,这将是 grabcut 的输入。

======= 编辑 =======

@RoiMulia如果你需要生产级别我建议你完全离开阈值+边缘检测方向并尝试背景去除技术(SOTA目前是神经网络如Background Matting: The World is Your Green Screen (example))。

您也可以尝试一些现成的后台删除 API,例如 https://www.remove.bg/ or https://clippingmagic.com/

1.
鉴于您拥有的“投资回报率”监督,我强烈建议您探索 GrabCut(由 提议):
Rother C, Kolmogorov V, Blake A. "GrabCut" interactive foreground extraction using iterated graph cuts。 ACM 图形交易 (TOG)。 2004.

要了解其工作原理,您可以使用 power-point 的“背景删除”工具:

这是基于GrabCut算法。

这是它在 powerpoint 中的样子:

GrabCut 主要根据 foreground/background 颜色分布在选定的 ROI 中分割前景对象,较少 edge/boundary 信息,但可以将这些额外信息整合到公式中。

opencv 似乎有 GrabCut 的基本实现,参见 here


2.
如果您正在寻找一种仅使用边界信息的方法,您可能会发现 this answer 很有用。


3.
另一种方法是使用 NCuts: Shi J, Malik J. Normalized cuts and image segmentation. IEEE 交易模式分析和机器智能。 2000.

如果你有非常可靠的边缘图,你可以将NCuts使用的“亲和矩阵”修改为二进制矩阵

         0  if there is a boundary between i and j
w_ij =   1  if there is no boundary between i and j
         0  if i and j are not neighbors of each other

NCuts 可以被视为一种估计“稳健连通分量”的方法。