APP下载

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

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

现代计算机 2021年34期
关键词:夜视图像增强调用

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

(广东第二师范学院计算机学院,广州 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算法来对夜视图像进行增强。通过对该软件的图像采集、夜视图像增强处理等功能进行测试,结果表明软件功能易用、有效,能够对夜视图像进行较好的增强处理。未来的工作考虑增加多曝光图像融合的功能来对夜视图像进行增强,进一步提升软件的性能。

猜你喜欢

夜视图像增强调用
通过图像增强与改进Faster-RCNN网络的重叠鱼群尾数检测
一种基于轻量级深度网络的无参考光学遥感图像增强算法
基于非下采样剪切波变换与引导滤波结合的遥感图像增强
基于Android Broadcast的短信安全监听系统的设计和实现
基于双树四元数小波变换的图像降噪增强
夜视能力药水
利用RFC技术实现SAP系统接口通信
C++语言中函数参数传递方式剖析
OIP公司获得夜视瞄具定货合同