【问题标题】:flood fill performance issue on iPadiPad上的洪水填充性能问题
【发布时间】:2013-10-28 03:20:41
【问题描述】:

我正在使用 4-Way Floodfill 算法。

我有一个带有黑色线条的透明图像。

那是凝视点图像(没有颜色)。

在这张图片中填充颜色后,它看起来像这样

请帮助我,让我知道我该怎么做才能正确填充。

【问题讨论】:

标签: ios ipad cocoa-touch core-graphics flood-fill


【解决方案1】:

我在其他项目中使用并实现了自己的 FloodFill,该算法贯穿整个绘制过程,寻找封闭空间,然后在它们内部(或外部)绘制。

你的问题发生在世界上每个填充平局的工具上,问题是一样的,空间不是 100% 封闭的。

floodfill 算法逐个像素地进行,当它检测到黑色像素时,它会停止。例如,水肺司机的手臂不够粗或上面有洞,洪水填充算法设法通过它而不会将其检测为空白空间。

除非我们接受您的项目并对其进行分析,否则这里没有人能告诉您原因,所以我能提供的最好的就是关于您的错误可能在哪里的指南。

【讨论】:

  • 但是当我使用白色背景时,它工作正常。但根据我的要求,我需要为此使用透明图像。所以在 5 到 6 次点击/填充后,此图像看起来一样。跨度>
【解决方案2】:

我用一个图像周围有一个非常精确定义的边框 (from here) 尝试了代码,它似乎可以与该图像一起工作。我可能建议,如果您放大图像,边缘周围会有一些灰色混叠,不会被填充。也许该算法有一个可以调整的阈值函数?

尝试设置 andTolerance 值(我尝试了 4,这似乎改进了我的示例)。

//Call function to flood fill and get new image with filled color
    UIImage *image1 = [self.image floodFillFromPoint:tpoint withColor:newcolor andTolerance:4];

【讨论】:

  • 阈值函数是什么意思?
  • 在上面查看我编辑的答案(阈值是 andTolerance 部分)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 2013-01-16
相关资源
最近更新 更多