0

我正在为我目前正在进行的项目实施洪水填充算法。我将它用于正常目的,图像编辑。我对基本算法没有问题,但我想要一个更好看的填充。

在许多情况下,我的图像区域将具有主要是一种颜色的区域,但它们的边界是稍亮或稍暗的像素。我想知道一种不会留下这些边界像素的“模糊”洪水填充算法。我试图用原始像素的两个不同的简单距离度量来填充所有像素:

  1. 所有 3 个颜色分量上的曼哈顿距离:红色、绿色和蓝色
  2. 颜色分量之间的最大距离。

这些都不能解决问题,通常会留下边界,偶尔会填充视觉上不同但“接近”颜色的相邻区域。

我认为没有灵丹妙药可以解决我的问题,但我有兴趣了解任何我可能会尝试获得更好结果的算法,或者甚至是我可能有用地寻找此类算法的地方。环顾网络,我发现了一种称为“模糊洪水填充均值偏移算法”的参考,但我不确定这是否是同一回事。

4

3 回答 3

0

也许您可以尝试使用本地像素而不是原始像素的质量。你可以做一个很像各向异性扩散过滤器的效果。如果当前像素(在填充中)和相邻像素之间的梯度足够低,则将相邻像素排入队列。

于 2011-02-04T03:14:33.760 回答
0

您不应该使用单个数字而是使用范围来设置容差。比如说,从 20% 到 50% 意味着当色差为 20% 时,您会完全改变这个像素的颜色。当它大于 50% 时,您不会填充此像素。当差异在 20% 到 50% 的范围内时,您将旧颜色与新颜色以 (d-t_min)/(t_max-t_min) 的比率混合,其中 d 是色差,t_max 和 t_min 是您的容差范围(以 0...1 表示)。我从未见过这样的算法被实现过;也许我只是发明了它。

于 2013-07-01T10:37:26.057 回答
0

使用实际距离似乎很自然: D = Sqrt(R^2 + G^2 + B^2)

然后定义一个容差参数,该参数指定测试像素与原始像素(在色彩空间中)的最大距离。如果它大于该值,则不要从该像素向外泛滥。

将容差从 0 调整到 Sqrt(255^2 + 255^2 + 255^2),直到看到所需的效果。

于 2011-02-04T02:20:09.423 回答