基于微信小程序的数字图像处理平台的研究和实现

2021-06-16 09:35王柳涛李家敏陈兴松郭鸿伟欧武略
电子技术与软件工程 2021年7期
关键词:调用图像处理编码

王柳涛 李家敏 陈兴松 郭鸿伟 欧武略

(广东技术师范大学 广东省广州市 510665)

1 引言

随着信息技术及网络社交兴起、深度学习和图像处理技术的技术的成熟以及智能手机的普及,人们对图像处理类软件产品的需求也日益增加。微信小程序搭配数字图像处理技术和深度神经网络,开发图像处理平台,解决用户在图像处理上的多样化需求具有很大的研究价值。

2 平台系统架构

2.1 前端部分

前端框架分为三部分:逻辑层、视图层和系统层,采用vue.js框架开发,为用户使用小程序提供了登录页面、注册页面、图像处理页面。

2.2 后端结构

2.2.1 云开发控制台

云开发控制台提供数据库和云储存两大功能,数据库管理用户的个人数据;云存储为存放用户的个人图像文件。

2.2.2 Django 服务端

Django 服务器端存放图像处理视图函数,用户通过小程序向服务器发起一个http 请求(request),不同的请求对应不同的视图函数。函数在语言上基于python 开发,在算法的设计上基于opencv 的图像处理库和深度神经网络,实现了负责接收前端的不同post 请求,并根据不同的请求地址调用相应的图像处理算法的功能,对post 请求的图像数据进行处理并返回结果。

3 平台可行性分析

不同于市面的大多数图像处理软件,本平台开发了多种图像特效处理功能(图1)+人脸识别的功能。平台的特点:简洁美观的界面、实用多样的功能、简单方便的操作等,因此能基本满足不同类型的人群的需求,具有广阔的前景。

4 数字图像处理算法实现

4.1 人脸识别

小程序用户在前端注册页面进行个人信息注册时,需进行个人头像照的上传并被存储到云储存中。小程序在用户登陆时调用摄像头模块获取用户实时照片并转成base64 码,再将注册所用头像图像转成base64 码,两个base64 码上传到Django 服务器。Django 服务器则调用opencv 运行人脸识别算法,对两个64 编码进行对比匹配,并将匹配结果返回前端[1]。人脸识别算法实现过程如下:

(1)获取每个图像中人脸的位置。将post 请求中两个不同的64 编码转成numpy 图像矩阵,再调用face_recognition 库对图像矩阵进行处理,求出每个图像的人脸位置location=[(top,right,bottom,le ft)]。

图1:功能图

图2:GAN 网络结构

图3:animeGAN 效果(原图:左;效果图:右)

(2)求出两张图像的脸部编码列表face_encoding。调用face_recognition 库的脸部编码函数,以两个图像的人脸位置location 为参数,转换得到两个图像的脸部编码列表。

(3)对两个脸部编码列表进行比较。调用face_recognition 的compare_faces 函数,对两个脸部编码列表进行对比,将对比结果返回前端,前端根据对比结果进行登录认证。

4.2 图像动漫化

4.2.1 GAN

GAN(生成对抗网络)被广泛应用于图像风格转移和高质量图像合成,尤其在图像动漫化的领域,已经取得了很好的成果[2]。GAN 由两大部分组成,一是图像生成器Generator,二是判定器Discriminator。GAN 网络结构如图2 所示。Generator 和Dicriminator 均由深度神经网络CNN 组成,Generator 负责接收程序生成的高斯噪音,并将噪音转换到另一特征空间,即生成假图像fake,Dicriminator 负责鉴定fake 的真伪,两者不断对抗博弈,最终达到纳什均衡[3]。在数学上,GAN 最终要达到的状态可以由目标函数表示:

4.2.2 animeGAN

animeGAN 是以DCGAN 为基本模型,以动漫图像为训练集的GAN 的变种[4]。DCGAN 在网络架构上用CNN 代替了原始GAN 的全连接层,保留了图像在多层次下的特征;在每一层中加入了Batch Normalization(BN)层,提高了模型的稳定性;在Generator 中的各层中(除了输出层使用tanh 函数)使用relu 函数,在Discriminator 各层中使用LeakyReLU 激活函数,有效防止了模型在训练过程中出现梯度消失或爆炸。

当用户发起请求并将待处理图像的base64 编码上传到django时,后端使用animeGAN 模型进行图像处理并将处理后的图像返回到小程序前端。

animeGAN 效果如图3 所示。

4.3 文字提取

后端接收前端传输的图像数据,通过调用darknet-ocr 算法模型将图像文本区域的文字提取出来。该算法模型基于darknet 开源深度网络,基于图像识别以及自然语言模型的核心技术,达到了CNN+CTCOCR 文字识别的目的。

4.4 磨皮美白

(1)对前端传输过来的图像进行灰度处理,得到灰度图片;

(2)双边滤波;

(3)将图像矩阵转回3 通道彩色图像并返回前端。

4.5 抠图

(1)引入paddlehub 库加载图像模型module;

(2)module 调用segmentation 函数切割图像;

(3)将切割过后的图像返回前端。

4.6 马赛克

(1)用户通过手划的方式引起触发事件,将要进行马赛克的图片局域矩阵locations(x1,x2,y1,y2)和图像base64 编码传输到后端;

(2)将前端传输过来的图像转成灰度图像;

(3)中值滤波;

(4)遍历图像locations 位置的所有像素(i,j),并将点(i,j)的像素值赋给距离点(i,j)为10 的其他像素点;

(5)将图像数据返回前端。

4.7 素描化

不同于传统图像处理方法,平台后端调用双分支GAN 算法模型[5],对前端传输过来的图像进行高质量的素描图像生成,将生成的图像以base64 码的格式返回前端。

4.8 水彩

后端程序调用opencv 库的内部函数stylization()对图像进行水彩风格化处理,并返回前端。

4.9 修复

图像修复即图像去噪,后端算法使用残差网络(ResNet)模型进行图像的去噪操作,ResNet 在图像特征表达能力方面效果较好,尤其能充分提取浅层次的特征,在图像去噪方面被广泛应用。

5 结语

采用数字图像处理和深度神经网络开发的微信小程序平台,前端UI 简约大方,后端使用云开发控制台以及Django 搭建,算法上使用基于python语言的opencv图像处理库以及深度神经网络模型,使用方法简单,效果上能满足用户的多样化需求,在商业推广和技术上都具有很高的可行性。

猜你喜欢
调用图像处理编码
基于SAR-SIFT和快速稀疏编码的合成孔径雷达图像配准
《全元诗》未编码疑难字考辨十五则
子带编码在图像压缩编码中的应用
核电项目物项调用管理的应用研究
基于图像处理的机器人精确抓取的设计与实现
LabWindows/CVI下基于ActiveX技术的Excel调用
Genome and healthcare
机器学习在图像处理中的应用
基于系统调用的恶意软件检测技术研究
基于图像处理的定位器坡度计算