如何实现最快的 Gaussian blur算法?
我打算用Java实现它,所以GPU排除解决方案。我的申请,planetGenesis , 是跨平台的,所以我不想要 JNI .
最佳答案
您应该使用高斯核是可分离的这一事实,即。 e.您可以将 2D 卷积表示为两个 1D 卷积的组合。
如果滤波器很大,使用空间域中的卷积等价于频域(傅立叶)域中的乘法这一事实也可能有意义。这意味着您可以对图像和滤波器进行傅里叶变换,将(复数)结果相乘,然后进行傅里叶逆变换。 FFT(快速傅里叶变换)的复杂度为 O(n log n),而卷积的复杂度为 O(n^2)。此外,如果您需要使用相同的滤镜对多张图像进行模糊处理,您只需对滤镜进行一次 FFT。
如果您决定使用 FFT,FFTW library是个不错的选择。
关于java - 最快的高斯模糊实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/98359/