卷积函数:在高斯滤波器中应用不同的半径

时间:2016-01-16 08:18:00

标签: delphi gaussian convolution

swissdelphicenter.ch中存在卷积函数,你设置内核并且生成的图像会模糊,但是除非多次调用函数(没有预期的性能问题),否则没有参数可以应用更多模糊。

如何对Photoshop高斯滤镜中的Radius参数应用更多模糊效果?

我正在使用这个内核来应用高斯滤波器:

1 2 1
2 4 2
1 2 1

1 个答案:

答案 0 :(得分:1)

你可以制作更大的高斯内核 - 5x5,7x7等。但是性能会随着大小^ 2而减小。对于某些内核大小,使用基于FFT的卷积方法会更快。

修改
基于FFT的卷积:你有数据数组A,内核值为K的数组(长度相同,零填充)。

Conv(A, K) = BackFFT (FFT(A) * FFT(K))

要进行卷积,可以

find Fourier transform of data
find Fourier transform of kernel
multiply them element-by-element (note that numbers are complex)
make inverse Fourier transform of product
get real part of it

查看wiki中的快速卷积算法部分和Numerical recipes的第13.1部分(几乎是实用手册)

如果您对快速处理许多图像非常感兴趣,我建议您使用一些专用库。例如,OpenCV非常快(2.4.11版本为Delphi wrapper exists),Graphics32,ImageEn等。