1.使用分离卷积
先对x方向做一维高斯模糊,再对y方向做一维高斯模糊,所得结果跟二维高斯模糊效果一样,因为一个二维矩阵就是可以拆解成一个行向量和一个列向量相乘。
算法复杂度由n*n*k变为2*k*n。k为像素个数,n为高斯模糊半径。算法是间复杂度从O(n^2)提高到了O(n)。
2.用多次均值等效高斯模糊
一维均值模糊的曲线是一个矩形框,经过三次均值模糊后,逐渐接近正态分布,也既高斯分布。经过4次均值模糊后,其结果跟高斯模糊只有4%的误差。通常是采用3次均值模糊来等效高斯模糊。这样每个像素只用一次乘法,时间复杂度缩小到O(C)。
3.用StackBlur
StackBlur用CPU计算,内核形状介于高斯模糊和均值模糊之间,但处理速度比CPU版的高斯模糊快得多,图像质量又比均值模糊好得多,肉眼基本分辨不出和高斯模糊有区别。StackBlur耗时和半径无关,在大半径模糊的情况下,速度甚至快于GPU加速的高斯模糊。