9

我正在寻找一种比使用GaussianBlur更快的方法来模糊图像。我正在寻找 的解决方案可以是命令行解决方案,但我更喜欢 perl 表示法的代码。

实际上,我们使用 Perl image magick API 来模糊图像:

# $image is our Perl object holding a imagemagick perl image
# level is a natural number between 1 and 10
$image->GaussianBlur('x' . $level);

这很好用,但随着关卡高度的增加,它所消耗的时间似乎呈指数增长。

问题:如何提高模糊操作所用的时间?还有另一种更快的方法来模糊图像吗?

4

3 回答 3

11

我发现建议的调整图像大小以模拟模糊的方法会使输出看起来非常像素化,因为 sigma 值非常大,例如 25 或更大。所以我终于想到了 downscale-blur-enlarge 的想法,它产生了非常好的结果(几乎无法与大 sigma 的简单模糊区分开来):

# plain slow blur
convert -blur 0x25 sample.jpg blurred_slow.jpg
# much faster
convert -scale 10% -blur 0x2.5 -resize 1000% sample.jpg blurred_fast.jpg

在我的 i5 2.7Ghz 上,它显示高达 10 倍的速度。

于 2018-01-25T12:55:30.730 回答
6

该文档谈到了BlurGaussianBlur之间的区别

关于哪个运算符“-blur”或“-gaussian-blur”更适合模糊图像,存在一些混淆。首先,“-blur”更快,但它使用两阶段技术来做到这一点。首先在一个轴上,然后在另一个轴上。另一方面,“-gaussian-blur”运算符在数学上更正确,因为它同时在所有方向上模糊。两者之间的速度成本可能是巨大的,高达 10 倍或更多,具体取决于所涉及的模糊量。

[...]

总而言之,这两个运算符略有不同,但差异很小。因为“-blur”要快得多,所以使用它。我几乎在所有涉及模糊的示例中都这样做。大的

那只是:

$image->Blur( 'x' . $level );

但是Perl ImageMagick 文档Blur在和GaussianBlur(强调我的)上都有相同的文本。我现在无法尝试,您必须自己进行基准测试。

模糊:使用给定半径和标准偏差 (sigma) 的高斯算子降低图像噪声并降低细节级别。

GaussianBlur:使用给定半径和标准偏差 (sigma) 的高斯算子降低图像噪声并降低细节级别。

文档还列出的另一种方法是将图像调整为非常小,然后再次放大。

使用大 sigma 值进行图像模糊非常慢。但是 onw 技术可以用来加速这个过程。然而,这只是一种粗略的方法,可以使用一些数学上的严谨性来改进结果。本质上,大模糊速度慢的原因是因为您需要一个大窗口或“内核”来将图像中的每个像素的大量像素合并在一起。然而,调整大小(使图像更小)做同样的事情,但在此过程中生成的像素更少。该技术基本上是缩小图像,然后再次放大以产生严重模糊的结果。高斯滤波器对此特别有用,因为您可以直接指定高斯西格玛定义。

示例命令行代码是这样的:

convert  rose: -blur 0x5   rose_blur_5.png
convert rose: -filter Gaussian -resize 50% \
      -define filter:sigma=2.5 -resize 200%  rose_resize_5.png
于 2016-02-26T11:01:46.803 回答
4

不确定我是否仍然可以帮助 OP,但我最近尝试了同样的方法来处理模糊的锁屏图片。我发现省略 -blur部分可以节省更多的计算时间,并且仍然可以为 4K 图片提供出色的结果:

convert in.png -scale 2.5% -resize 4000% out.png
# real: 0.174s user: 0.144s size: 1.2MiB

convert in.png -scale 10% -blur 0x2.5 -resize 1000% out.png
# real: 0.136s user: 2.117s size: 1.2MiB

convert in.png -blur 0x25 out.png
# real: 2.425s user: 21.408s size: 1KiB

但是,对于 3840x2160,您不能低于 2.5%。它将调整图像的大小。我猜其他尺寸的图片的 eps 值会有所不同。

应该注意的是,生成的图像大小明显不同!

于 2019-05-18T14:48:09.040 回答