【问题标题】:What Blur Algorithm Does Flash Use Internally In Their Blur FilterFlash 在其模糊滤镜内部使用什么模糊算法
【发布时间】:2015-10-01 23:58:10
【问题描述】:

我正在尝试将用 AS3 编写的内容转换为 JavaScript,而 AS3 应用程序使用 Flash 的内置 Blur Filter

有谁知道这使用了什么模糊算法或如何在 JavaScript 中复制它?

谢谢

【问题讨论】:

    标签: javascript algorithm actionscript-3 flash blur


    【解决方案1】:

    就像他们在文档中所说的那样,这是一种Gaussian 风格模糊:

    当质量属性设置为高时,它近似于高斯 模糊滤镜

    它是高斯滤波器/魏尔斯特拉斯变换风格的高度优化版本,尤其是在使用 2 x/y 偏移的幂时,因为您可以将其实时应用于视频,因此您不会得到准确的结果是一个非 Flash 应用程序,但您可以真正接近,没有人会知道其中的区别。

    在 html/css/javascript 中有 很多 方法可以进行高斯模糊。有一些方法通过 CSS 中花哨的阴影技术,使用 HTML5 画布并应用自定义过滤器,通过字节数组对位图进行 javascript 处理等......有些具有基于跨浏览器的限制,有些具有 CPU 处理问题等。 google/bing 是您搜索人们已经开发的不同技术以及他们遇到的优缺点的朋友。

    我为一个快速的 HTML5 项目抓取了以下一个:

    Mario Klingemann 创建了一个“几乎 JavaScript 中的高斯模糊算法。

    http://www.quasimondo.com/StackBlurForCanvas/StackBlurDemo.html http://badassjs.com/post/1298940200/stackblur

    以下是我用来比较自己的图像,它与我使用的 Flash 的 BlurFilter “足够接近”。 (StackBlur 生成的图像稍微暗一点,假设他跳过了一些会导致例程变慢的归一化)

    我的 Air 版本;质量设置为 HIGH,x/y 过滤器偏移设置为 10:

    这里将 StackBlur 设置为半径 10:

    这是原始位图:

    【讨论】:

    • 不幸的是,我需要一个几乎完全一样的 Flash 副本,因为我正在转换的应用程序是一个在线绘图应用程序,它可以记录/重放画廊中绘制的内容。如果 JavaScript 版本不像 Flash 过滤器那样模糊,那么回放将不准确并且看起来不像最终图像。当然,对于整个图像上的单通道模糊,它可能已经足够接近了。但是,我的用例需要增加精度。 :/ 速度也是一个问题,因为它会被用作笔触。
    • 除非 Adob​​e 开源 Flash 播放器,否则不会真正复制精确的算法,即使像他们自己的 PhotoShop 这样的工具也不匹配 Flash(PhotoShop 不必产生 CPU 周期'实时优化算法)。祝你好运
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    相关资源
    最近更新 更多