项目地址,欢迎star
https://github.com/ly85206559/recursiveBlur
对图像模糊的算法主要分为两种
1.均值模糊(Box blur)
2.高斯模糊
这里使用了高斯模糊算法
高斯模糊的优化算法也有很多
这里的优化主要有两方面
1.针对传统的高斯模糊进行降维计算(这里主要是基于二维高斯模糊可以转换成两个一维高斯模糊计算)
2.采用递归高斯模糊(这种算法与模糊半径无关,所以时间复杂度紧与图片像素有关)
这里实现了这两种模糊算法,并且比较了这两种模糊算法的耗时,模糊效果
上图:分别模糊半径为3,10,25,对比耗时(图片的分辨率是216*284)
可以看出递归高斯模糊的耗时跟模糊半径无关,耗时也很短,不过看模糊效果跟传统高斯模糊还是有点区别,项目中使用也比较简单
//传统高斯模糊调用方法
public static Bitmap gaussBlurNatively(Bitmap original, int radius, boolean canReuseInBitmap)
//递归高斯模糊调用方法
public static Bitmap recursiveBlurNatively(Bitmap original, int radius, boolean canReuseInBitmap)
JNI部分的代码是用的C,至于高斯模糊和递归高斯模糊的具体公式,网上有很多参考,这里主要是对android的一层封装和算法的一些优化