• 欢迎加“百元导航”为主页,windows8风格,0.3s极速加载
  • 王柏元的博客专用搜索引擎:极客人,就用“极客搜”!
  •    8个月前 (01-16)  算法语言 |   1 条评论  232 
    文章评分 0 次,平均分 0.0
    [收起] 文章目录

    最近看到了一篇关于图片“去霾算法”的文章,一下子就有了兴趣,所以想着能不能实现。由于数学能力捉急,无法理解文章的思想和相关论文。于是在Github上找到了相关的Java代码,算法的效果十分明显:

    【图片去霾算法实践】NDK下二维数组的传递

    去霾前的图片

    【图片去霾算法实践】NDK下二维数组的传递

    去霾算法处理后的图片

    不知道是不是算法太复杂,还是Java效率相对较低的缘故,一个3M的JPG图片处理下来需要近20秒的时间。

    效果明显的算法让我萌生了开发一款去霾相机的想法,为了获得更快的处理速度,在研究Java去霾算法代码后,我决定将其写成C++代码,然后通过NDK(Android原生开发)移植到Android平台。

    项目的基本思想是在Android/Java下获得图片的Bitmap将其像素点转成二维的int二维数组,然后将int二维数组传入JNI层,交给NDK层C++代码处理,NDK层处理完毕后返回去霾后的int二维数组,由Java层转成Bitmap重新显示或保存。

    经过一天的奋斗,我终于实现了用C++代码实现“去霾”算法并顺利移植到Android原生开发中。效果已实现,目前还有很多BUG,图片大小稍大时算法耗费的时间和内存过大.

    【图片去霾算法实践】NDK下二维数组的传递

    Android 图片去霾

    本文预计会写一个系列,后续根据情况可能会开源。如果你对去霾算法实践感兴趣,可以关注我的简书和博客:http://wangbaiyuan.cn ,后续将持续更新

    本篇文章介绍NDK和Java层怎样互传二维数组

    NDK->C++

    ndkArray[mHeight][mWidth]->cppArray[mHeight][mWidth]

     

    C++->NDK

    cppArray[mHeight][mWidth]->ndkArray[mHeight][mWidth]

     

     

    本文已在版权印备案,受著作权法律保护,未经允许不得转载!如需转载请联系作者或访问版权印获取授权,如果你觉得这篇文章对你有用,可以点击下面的“赞助作者”打赏作者!

    转载注明原文出处:王柏元的博客>>http://wangbaiyuan.cn/practice-photo-haze-algorithm-under-ndk-two-dimensional-array.html

    关于
    记录生活,镌刻心路;泼洒文墨,分享技术!王柏元的博客致力于IT经验交流,并原创翻译引进外文文章,打开IT国际化视野

    发表评论

    格式
    1. 厉害,佩服

      企业咨询 评论达人 LV.1 7个月前 (02-17) [0] [0]

    登录

    忘记密码 ?

    您也可以使用第三方帐号快捷登录

    切换登录

    注册