2011-08-19 128 views
3

我有这个保证只包含一种颜色的BufferedImage对象。我使用它来显示示例图像以显示大小,并在绘画工具中塑造一个笔刷的硬度&。我已经尝试了几种不同的模糊实现来获得硬度...最新的,这似乎工作得很好,这是由罗曼盖伊编写的Stack FilterAlpha通道模糊

我有2个问题。

  1. 上比4?:无模糊过滤器我试过的1路快似乎相当足够快的速度......我意识到这个问题之前已经被要求(和我不是很准备尝试从C中拉出FFTW,但是我想知道是否有一种方法仅使用alpha通道位来执行模糊处理?图像只包含一种颜色,因此无论如何其他位都不会改变,我认为这会将模糊的计算数量减少到整个模糊操作的约25%,我认为这可能会导致性能明显提高?我一直无法找到任何关于正在通过网络搜索尝试的信息。

  2. 消除暗晕:每次我尝试不同的模糊算法,我最终不得不重写它摆脱周围由来自无色像素中的“黑”模糊这里什么事都没有形状的深色阴影还没有画过。我已经阅读了关于这个,我正在使用(据我所知)INT_ARGB_PRE图像类型,我记得这是读取这个问题的解决方案。我在该解决方案中错过了些什么?我是否需要以某种方式预先格式化图像,以便将所有空像素解释为白色而不是黑色?

谢谢!

回答

3

您可能会发现这个有趣的: http://www.jhlabs.com/ip/blurring.html

的晕暗的问题进行了讨论,所有的源代码可以作为就我记忆所及,它仅使用标准的Java SE的东西。

+0

谢谢G.是的,约翰的网站是我读到关于使用int_argb_pre的地方 - 至少这是我从阅读他的简短评论中得到的结果......但他的解释非常简洁,所以我很确定我是错过了一步。 –

+0

也许代码可以澄清一点。我一直在尝试卷积,但还不足以为你准备好直接的答案。我假设,如果通过alpha预乘来消除光环,就会失去模糊alpha通道的可能性。尽管我不确定这是否会起作用。模糊需要多快?也许你可以预渲染一些东西并缓存它? –

+0

嗯,我不知道它的速度有多快......我在开发这个应用程序的时候很早,我知道当我把硬度降低的时候刷子变得非常粘稠,所以我现在在做什么工作效果不佳......它需要对用户比较流畅......我开始认为我可能会推迟模糊,直到中风完成。我相信用户会喜欢它在绘图时发生,但是由于他们已经有了撤销历史记录,所以事后模糊应该没问题。我有一种关于加速模糊的方法,但还没有尝试过。谢谢,G. –