是否可以通过图像伪造模糊?


9

我正在将libGDX用于Android游戏;据我所知,它没有用于模糊处理的API。

在Wikipedia上阅读,似乎是通过将每个像素RGB值设置为所有相邻值的平均值来形成模糊的。在libGDX中似乎不容易实现-设置像素数据。

所以我的问题很简单:

仅使用图像就可以伪造(像样的)模糊吗?

我可以叠加多个(数量,透明度,类型)图像;但是我可以像这样创建令人信服的模糊吗?

我很想说“不”,但也许其他人也取得了类似的成就。为了清楚起见,我希望可以在任何图像之上渲染一组1+个普通图像,以产生类似模糊的效果。


好问题!我自己也想到过同样的事情!
丹尼尔说,请

@DantheMan在哪个平台上?
ashes999 2011年

Unity3d或CG阴影语言。
丹尼尔说,请

您建议将透明图像彼此重叠。如果您稍微偏移它们,则将平均像素,实现模糊
Jeff

1
@ ashes999,如果您正在寻找可以覆盖在事物上以使其看起来模糊的“魔术图像”,则该属性不存在。抱歉,Alpha混合(叠加)与模糊并不完全相同。
内森·里德

Answers:


7

如果您能够同时添加图像并将其乘以一个常数,则可以进行模糊处理。您无需对附近的像素求平均,而可以对数个彼此偏移了少量像素的图像进行平均。或更笼统地说,您可以通过控制权重来进行高斯模糊或任何类型的模糊-也就是说,将图像的每个置换副本乘以一个常数,然后再将其添加到其余部分。

从算法上看,它看起来像这样:

clear output_image to 0
foreach offset, weight in filter_kernel:
    output_image += input_image * weight, shifted by offset

您将使用与进行模糊处理的标准方式相同的偏移量和权重。例如,网络上有很多文章介绍如何为高斯模糊生成权重。


+1个不错的答案。就我而言,我没有加法能力。
ashes999 2011年

0

模糊可能是一项昂贵的操作,也许可以使用其他方法,例如:

  1. 存储在几个不同方向(例如45度的倍数)模糊的图像的多个副本,然后在运行时显示最匹配的图像。这将以内存使用为代价提供最高的性能。
  2. 缩小图像,然后使用抗锯齿/平滑功能将其恢复到原尺寸。通常,这可以通过图形硬件完成,而对性能的影响很小。

它不起作用,因为它必须是动态的,即我无法提前知道屏幕的确切设置。
ashes999 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.