【发布时间】:2011-02-02 22:45:50
【问题描述】:
我正在为我目前正在进行的项目实施洪水填充算法。我将它用于正常目的,图像编辑。我对基本算法没有问题,但我想要更好看的填充。
在许多情况下,我的图像区域中的区域大多是一种颜色,但其边界是稍亮或稍暗的像素。我想知道一种不会留下这些边界像素的“模糊”洪水填充算法。我试图用原始像素的两个不同的、简单的距离度量来填充所有像素:
- 所有 3 个颜色分量的曼哈顿距离:红色、绿色和蓝色
- 颜色分量之间的最大距离。
这些都不能解决问题,通常会留下边界,偶尔会用视觉上不同但“接近”的颜色填充相邻区域。
我认为没有什么灵丹妙药可以解决我的问题,但我有兴趣了解我可能会尝试获得更好结果的任何算法,或者甚至是我可能有用地寻找此类算法的地方。环顾网络,我发现了一种称为“模糊洪水填充均值偏移算法”的参考,但我不确定这是否是同一回事。
【问题讨论】:
-
您是否尝试使用 alpha 边框,以便相似的像素不会更改为填充颜色,而是更改为现有颜色、区域先前颜色和填充颜色?
-
听起来你想在边界上做一些抗锯齿。我怀疑 RGB 不是合适的工作空间,因为它会导致一些非常奇怪的效果。您可能会考虑改用 HSV。
-
Peter Taylor - 我没有想到这个特殊的策略,但我可能想尝试一下。谢谢你。 Jim Mischel - 我可以将它翻译成 HSV,但我不确定在那之后我会做什么。希望这会减少相邻区域的填充,但即使有各种距离指标,我也不确定这是否有助于消除我拥有的大量 alpha-d 边框(我在 RGB 0xFFFFFF 到 0x808080 到 0x000000 的 3 个像素左右移动,填充后留下丑陋的灰色边框)。我不能忽略这么大的价值差异。不过感谢您的建议。
标签: algorithm graphics flood-fill