高斯模糊(Android应用)

项目地址,欢迎star

https://github.com/ly85206559/recursiveBlur

对图像模糊的算法主要分为两种
1.均值模糊(Box blur)
2.高斯模糊

这里使用了高斯模糊算法

高斯模糊的优化算法也有很多
这里的优化主要有两方面
1.针对传统的高斯模糊进行降维计算(这里主要是基于二维高斯模糊可以转换成两个一维高斯模糊计算)
2.采用递归高斯模糊(这种算法与模糊半径无关,所以时间复杂度紧与图片像素有关)

这里实现了这两种模糊算法,并且比较了这两种模糊算法的耗时,模糊效果

上图:分别模糊半径为3,10,25,对比耗时(图片的分辨率是216*284)

高斯模糊(Android应用)_第1张图片
模糊半径为3.jpg
高斯模糊(Android应用)_第2张图片
模糊半径为10.jpg
高斯模糊(Android应用)_第3张图片
模糊半径为25.jpg

可以看出递归高斯模糊的耗时跟模糊半径无关,耗时也很短,不过看模糊效果跟传统高斯模糊还是有点区别,项目中使用也比较简单

//传统高斯模糊调用方法
public static Bitmap gaussBlurNatively(Bitmap original, int radius, boolean canReuseInBitmap)
//递归高斯模糊调用方法
public static Bitmap recursiveBlurNatively(Bitmap original, int radius, boolean canReuseInBitmap)

JNI部分的代码是用的C,至于高斯模糊和递归高斯模糊的具体公式,网上有很多参考,这里主要是对android的一层封装和算法的一些优化

你可能感兴趣的:(高斯模糊(Android应用))