填充字符图像中的白洞的算法

信息处理 图像处理 matlab Python 算法 图像分割
2022-02-06 04:25:27

我有这个退化的图像:

在此处输入图像描述

在 Windows 应用程序中使用paintbucket工具Paint.NET,我将字符图像填充为黑色。

在此处输入图像描述

我的问题是:

  1. 我们可以使用什么算法来填补字符图像中的漏洞?
  2. Python中是否有相应的内置函数来填补字符图像中的白洞?
  3. Paint.Net 中的油漆桶工具使用什么可能的算法?

谢谢。

1个回答

根据博客文章 - Paint.Net 4.0 中的油漆桶(视频),我可以看出它使用一些边缘检测来处理分段平滑区域内的相似颜色。油漆桶工具文档
中提供了更多信息

通常它可以实现的方式是通过定义颜色度量。一种颜色与另一种颜色的距离。如果在公差范围内,则在掩码范围内。

  1. 形态学操作可以填补小洞。
  2. 我不确定,但实现类似的东西不会太难。
  3. 可能他们将 RGB 数据转换为HSL/HSV 颜色模型然后只需根据参考点与周围颜色之间的距离创建一个蒙版。现在掩码创建一个要填充的逻辑(黑白)掩码。
    Paint.NET的情况下,算法应该类似于Flood Fill

所以步骤是:

  1. 将图像转换为选择的颜色模型(HSV / HSL 甚至 LAB)。
  2. 使用颜色模型上的颜色相似度(距离函数)生成蒙版。距离函数由某个阈值参数参数化。
  3. 使用类似 Flood Fill 的算法使用目标颜色填充蒙版中的像素。掩码基本上是 Flood Fill 操作的停止条件。

在 MATLAB 中,您有imfill()Flood Fill
对于更高级的东西,您可以使用自适应形态功能,例如Active ContoursMorphological Snakes