当前位置:首页 期刊杂志

基于Android平台的夜间图像增强软件的设计与实现

时间:2024-05-04

李向辉,张菲菲,邹浩然,曾钰琦,李杰伦,林伟龙,黄誉戈,杨振宇,李俊贤,王明谦

(广东第二师范学院计算机学院,广州 510303)

0 引言

随着智能手机的普及,人们对手机上获取图像的成像质量和成像速度提出越来越高的要求,因此在移动互联网应用中,面向移动终端的图像处理技术越来越重要[1]。当前大多数智能手机在夜视环境下拍摄的图像存在信噪比低、对比度差等问题,拍摄的图像不能满足用户需求。目前,国内外针对夜间图像的增强算法主要包括三种:直方图均衡化的方法、Retinex理论的方法以及深度学习的方法。其中Retinex理论的方法由于其优异的处理效果,得到最多的关注和研究。本文采用带色彩恢复的多尺度Retinex(multi-scale retinex with color restoration,MSRCR)算法[2-3]来对夜间图像进行增强。目前Android系统虽是主要的手机操作系统,但在Android平台上实现夜间图像的增强技术并不多。因此,基于Android的夜间图像增强软件未来社会发展具有很高的应用价值。鉴于此,本文结合MSRCR算法和专业的开源图像处理库OpenCV,研究在Android平台开发一款夜视图像增强软件来满足夜视场景的清晰化成像。

1 夜视图像清晰化应用框架体系

1.1 系统业务流程

本系统的逻辑流程如图1所示。

图1 系统逻辑流程

首先,启动软件之后,会进入首页面,首页面具备两个功能:登录、注册。其中在登录框输入的账号密码与数据库匹配,则点击登录将成功进入拍照相册页;另外,用户可点击注册进入注册账号页面填写信息,系统会将符合要求的注册信息写入到数据库中。

然后在拍照相册页面中首次点击会申请权限,点击拍照按钮会调用相机拍照,拍照按钮按下后则会在处理图像页面显示拍下的照片;点击相册按钮则会打开相册,当用户选择照片后,则会在图像页面显示选择后的图片。

在处理图像页面中,点击处理图像按钮则会对图像进行增强处理,点击保存按钮则会将图像保存至本地相册然后跳转到拍照相册页面。

1.2 各个模块之间的调用关系

本软件的架构关系如图2所示。

图2 软件架构关系

在该软件的交互开发中,通过调用Android平台提供的SQLite数据库实现了用户的注册和登录,通过Android平台的XML文件进行布局,实现各个界面的交互。最后通过常用的相册相机调用方式,实现所需增强的图像导入功能。

在图像增强的开发中,通过Android平台的JNI方式去调用CMake,CMake执行图像处理算法,同时该算法调用OpenCV库所提供的方法,实现图像增强后再通过JNI返回结果[4]。

本项目不直接使用OpenCV库的原因是由于C语言在算法中具有高效的优势,同时OpenCV库的底层语言亦为C语言,因此通过CMake方式能够提高软件执行效率。

2 各模块设计

2.1 登录注册账户的实现

已有账户的用户可通过输入账号与密码,点击登录进入图像获取页面。点击登录时,软件会匹配数据库中的内容,若输入的账号密码不正确,则弹出提示账号密码不正确,正确则进入下一个活动页。

首次使用的用户可点击注册按钮进入注册页面,填写账号与密码进行注册。其中,登录页面的密码出错。注册页面主要有两个按钮,一个是注册,一个是返回主页面。注册按钮通过获取输入框的string值,判断三个输入框密码是否为空,以及两个密码框输入的密码是否一致,如果其中一项不符合标准则弹出错误提示,如果成功,则写入数据库。

2.2 不同途径的图像获取实现

2.2.1 通过拍照获得照片

首先活动页处创建一个file对象,然后根据安卓的版本大小,执行相应的拍照获取图片操作。如果安卓版本小于7.0则将file对象封装Uri,如果大于7.0则file对象转换成Uri对象再从这个对象获得图片的真实路径,然后进行动态权限申请。最后要在AndroidManif.xml中申请相应的权限。

2.2.2 通过相册获得照片

相册获取图像是在调用的部分重写startAc⁃tivityForResult()方法开启Intent的回调实现。方法根据不同类型的图像使用不同的处理。Docu⁃ment类型的uri通过document id处理;content类型的uri使用普通方式处理,File类型的uri则直接获取图片路径。最后在界面上的显示框呈现。

3 夜视图像增强算法的实现

3.1 MSRCR算法的原理

本软件采用的夜视图像增强算法是带色彩恢复 的 多 尺 度Retinex算 法[3-4](multi-scale retinex with color restoration,MSRCR)。根据Retinex理论,图像上某一像素点的观测值为该点的光照分量与反射分量的乘积,即:

式中,(x,y)表示像素点的位置;I(x,y)表示观测值;L(x,y)表示该点邻域的亮度,并且与材质无关;R(x,y)表示反射分量,表示材质的反射系数,与物体的本身的材质相关,而与邻域的光量无关。因此为而获得反映物体真实面貌的反射分量R(x,y),可通过Retinex的图像增强算法排除光照分量L(x,y)的影响。同时根据人的视觉观感的特点,对数形式更接近人眼观感的舒适区,因此基于Retinex算法的图像增强算法都是将图像转到对数域进行处理,Jobson等人运用高斯环绕函数对观测图像进行卷积估算得到光照分量,由此提出了经典的单尺度Retinex(single-scale retinex,SSR)算法,其计算公式如下所示

式中,F(x,y)表示高斯环绕函数;*表示卷积运算;I i(x,y)为第i个颜色通道的输入图像;Ri(x,y)为第i个颜色通道的输出图像。由于SSR算法在细节增强与色彩保真之间难以达到平衡,Jobson等人提出将多个不同尺度的SSR处理结果进行简单加权得到多尺度Retinex(multi-scale ret⁃inex,MSR)算法:

式中R M i(x,y)表示第i个颜色通道经过MSR处理而得到的输出图像,n表示尺度个数,W n为第n个尺度的权重,满足,一般情况下,取大、中、小三个尺度,即N=3,W1=W2=W3=1/3。

由于SSR算法和MSR算法在处理RGB彩色图像时,都是分别对R、G、B通道进行单独地增强,导致增强过程可能会改变各像素点在各颜色通道中的像素值比例,从而淡化图像的全局或者特定区域物体的真实颜色。为此,Jobson等人又提出带色彩恢复的多尺度Retinex(MSRCR)算法。MSRCR算法的基本原理是:将原始图像中的比例关系引入三个颜色通道来对MSR结果进行后处理,从而优化图像的颜色,避免颜色不饱和及失真,使图像具有更好的颜色呈现[5]。

式中,C i(x,y)表示第i个颜色通道的色彩恢复系数,作用是对3个颜色通道的比例进行调节。C i(x,y)中参数β为增益常量,α控制非线性的程度。

3.2 MSRCR算法在Andr oi d平台上的实现

图像增强的实现是在点击按钮中创建一个方法,这个方法通过JNI接口调用CMake,CMake执行算法处理图像,并且返回结果。当用户选取图像之后,图像将会在图像控件上呈现。点击增强按钮之后,会对图像进行算法处理呈现,并将图像覆盖原来的在图像控件中的图像。在Android中通过CMake的方式调用OpenCV库实现MSRCR算法来增强图像,MSRCR算法实现分为五步,其中流程如图3所示。

图3 MSRCR方法的实现流程

创建一维的高斯核。然后把该高斯核封装成一个类浮点类型的整数类型高速高斯核。实现对目标图像的核计算高斯卷积,接着使用图像金字塔对图像进行多尺度表达,从而与分离滤波器连续对使用高斯卷积滤波。最后将原图像和一系列被滤波的图像转换到对数域,并与带权重的原图像做减法运算,同时加入颜色修复。

图4显示了经本软件处理前的夜视图像以及处理后的结果图像,对图像进行增强处理后,点击保存图像将使用数据输入输出流,将增强处理后的图像写入相册,同时申请权限。根据结果图像显示,本软件能够对夜间低照度图像进行增强,能够高保真地恢复原图像中的细节和色彩,提高了图像的清晰度。

图4 图像处理

4 结语

本文开发了一款低成本的夜间图像增强软件,软件提供了用户登录与注册的功能,通过CMake调用OpenCV库的方式实现MSRCR算法来对夜视图像进行增强。通过对该软件的图像采集、夜视图像增强处理等功能进行测试,结果表明软件功能易用、有效,能够对夜视图像进行较好的增强处理。未来的工作考虑增加多曝光图像融合的功能来对夜视图像进行增强,进一步提升软件的性能。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!