APP下载

基于智能手机的食用油快速检测试纸分析平台的构建

2024-03-19朱锐刘永辉梁荆璞易阳

食品工业 2024年2期
关键词:试纸食用油灰度

朱锐,刘永辉,梁荆璞,易阳

1.长江大学文理学院 (荆州 434020);2.武汉轻工大学食品科学与工程学院 (武汉430023)

随着人们对食用油的需求逐年增加,食用油的品质安全正面临巨大挑战,因此食用油的检测方受到的压力也日渐上升[1]。传统的试纸目测比色的食用油检测方法存在成本高、耗时长、采样慢等诸多缺点,且受到检测人员的主观判断影响结果准确性。为更好推进食用油相关指标快速检测的便捷化和系统化,特别是当前轻量便携且搭载许多传感器的智能手机已相当普及,在手机上设计一款人机交互友好的试纸分析平台具有重要的研究意义[2-3]。

一般的比色检测原理是使用一定量的食用油,根据其中检测对象的含量不同,检测区域的相关物质发生反应后显色颜色不一,所以可通过显色结果与标准比色卡进行对比,通过肉眼快速判断出相对结果。本质上,只要确定检测对象浓度同反应显色颜色数据之间的关系,即可利用图像处理技术实现同比色卡相同的效果,且结果更客观具体[4-6]。因此,试验所针对的试纸产品无需额外提供比色卡,只需按照不同的检测对象测出相应的标准曲线,通过APP即可实现相对客观的结果比对。

通过设计检测的图像处理算法,搭建由手机APP客户端与Web端后台管理系统,实现具备小规模应用的条件的食用油快速检测试纸分析平台。

1 检测原理

1.1 检测对象

检测对象为如图1所示的一类特殊试纸。以试纸放置方向作为正向,可见试纸具有2个颜色区域。试纸上方颜色区域为检测结果,记为目标区域A;下方颜色区域用于对照,记为对照区域B。图1(a)与图1(b)的对照区域B颜色有黄色和灰色之分,因此对于区域B的图像处理需要特别注意。此外,试纸颜色区域大小和间距都具有大致相同的规格比例,对检测的影响不大。

图1 作为检测对象的试纸

1.2 图像分析与处理流程

1.2.1 图像预处理

图像预处理需要经历灰度变换、平滑降噪、边缘检测、Hough变换、倾斜矫正5个过程。

利用灰度变换将RGB彩色图像信息转换为单通道的灰度图像,使用滤波的方法消除图像内的噪点进行平滑降噪,使用OpenCV的高斯滤波功能实现。降噪完成后,使用Canny算法进行边缘检测,提取图像不同区域的边界信息,作为分割的依据。这一边界信息并非连续,而是由一系列点所组成,此时需要进一步使用Hough变换,将边界信息中存在明显的排列成一行直线的点,在Hough空间内映射出相应的聚集点。聚集点确定后,即可根据直线的倾角θ对图像进行倾斜矫正。当θ>45°时予以竖直矫正,否则进行水平矫正,并对试纸的方向进行记录。

1.2.2 目标区域查找

目标区域查找过程包括颜色分割、目标区域形状筛选、目标区域的查找3个步骤。

将彩色通道原图像RGB空间使用的红(R)、绿(G)、蓝(B)三色的亮度信息转换到HSV空间,依照色度(H)、饱和度(S)、明暗度(V)信息表示图像,在HSV空间中进行颜色分割。由于颜色特征是查找目标区域的主要依据,而在HSV空间中,色度H能够更好用于区分黄、绿、蓝等颜色,故相比于RGB空间,HSV空间能够更好追踪图像的颜色信息[7]。结合OpenCV的颜色空间转换功能,试纸上目标区域A可能显示的颜色大致为黄、绿、青3类,目标区域A的颜色依照表1进行判定。

表1 HSV颜色空间检测阈值判定依据

由于提前进行过图像预处理,因此目标区域轮廓的边缘可近似为无倾斜、无旋转的矩形,偏差与边缘噪声可通过内缩进行消除,使得最终的目标区域为仅包含单一颜色信息的矩形。由于试纸样品被测目标区域近似为正方形,因此可根据矩形区域的宽高比及面积大小综合判断是否为目标区域。宽高比与1的相对误差在10%以上,或者区域面积过小,均应予以排除。

若对照区域B属于有色类型,则区域B会与区域A同时被检出。但对于灰色类型的区域B,则需使用已分割出的区域A所在的位置作为基础,在一定的范围内进行查找。此处使用对图像每一行的灰度求均值的降维处理方法,将行平均灰度值进行归一化分类,依照对区域A的内缩处理方法对区域B进行处理[8]。考虑到部分噪声行的影响,还需要对数值连续在一定范围内的行进行统计,以精确定位区域边界。行平均灰度值归一化处理的结果如图2所示,横坐标代表所在的行,纵坐标为归一化的平均灰度值,要查找的区域B在图中是明显连续的一段灰度值较低的区间。

图2 平均灰度值归一化处理结果

对区域B的查找结果如图3所示,右侧图中的黑色横线是定位到的区域B的边界,后续依照区域A进行内缩操作。

图3 B区域的查找结果

1.2.3 区域校验

为保证查找到的区域的正确性,针对目标区域A进行校验。校验方法:根据目标区域A所在的位置,按照试纸方向,将区域A进行上下或左右按一定值(例如1.5倍区域宽度)进行偏移,对空白区域进行采样,一般可采集到2个区域,一个在区域A和B之间(记为区域C),另一个在区域A的另一侧(记为区域D)。2个区域均为空白区域,计算出2个区域所在各行的均值,若分布均匀即认为区域A位置有效。区域D可能会在图像范围以外,在处理过程中出现指针越界,此时可舍弃区域D,仅对区域C进行校验。

1.2.4 结果处理

所有处理过程完成后,将原图重新提取出进行显示。其中,过程处理数据及检测结果进行整理存档,所有临时数据(如内存中的图片数据)全部释放,对内存进行回收。

2 平台搭建

2.1 检测平台系统架构

检测系统由Web端后台管理系统与手机APP客户端共同组成,均使用独立的后端应用提供接口服务。Web前端采用Vue框架和ElementUI库等开发实现,APP基于Flutter开发,为支持离线模式使用的C/S架构,本地数据库采用SQLite,后端接口服务由Spring-Boot应用提供,如图4所示。

图4 检测平台系统架构

系统的开发环境为Windows 10,部署环境为腾讯云CentOS7.5,开发IDE使用Android Studio 4.2.1,构建工具使用Maven 3.6、Gradle 6.7、npm 6.14.5,版本管理工具使用Git 2.21.0。

2.2 系统功能模块

系统平台根据实际需求,衍生出2种类型用户,分别为普通用户和管理员用户,对应APP端应用和Web端管理系统,功能模块如图5所示。

图5 系统功能模块

2.3 APP端平台构建

平台的APP端主要面向目标用户,基于Flutter框架开发,采用C/S架构支持离线模式使用,界面精美,操作流畅,且在UI上具备一定的跨平台特性。

用户模块提供用户注册、登录及个人信息修改等功能。出于数据安全考虑,登录操作禁止多设备同时登录;用户密码至少要求6位,并在传输过程中通过RSA公钥进行加密传输,后端落库通过SpringSecurity提供的BCryptPasswordEncoder进行加密。界面如图6(a)所示。系统功能模块提供系统设置、意见反馈、关于、通知和更新等APP系统相关功能,从首页“我的”界面中进入,界面如图6(b)所示。历史数据模块对试验记录数据的管理尤为重要,在APP端为用户提供历史数据的展示、同步和搜索功能,其中展示在APP首页的“历史”中,以日历卡片形式按月度视图进行展示。历史数据记录详情界面如图6(c)所示。

图6 用户、系统、历史界面

试验操作模块作为系统平台的核心功能,包含对试验元信息的录入、试纸图像的输入和处理及处理结果的分析和展示功能,为提高检测效率,试纸图像的处理算法在Android本地直接供APP调用。基本操作逻辑:第一步,输入或扫码录入标准曲线;第二步,调用系统相机拍摄或从相册选择待测试纸照片;第三步,进行图像处理过程,给出处理结果并上传记录。操作截图示例如图7所示。

图7 试验数据处理

2.4 Web端后台构建

Web端是前后端分离式的后台管理系统,主要面向管理员用户,采用Vue+ElementUI实现,利用Axios进行网络请求的封装,并使用Echarts进行图表可视化展示,包括信息汇总、用户管理、记录管理、系统管理等模块。其中,核心的数据记录管理模块提供对同步到服务器的试验记录信息管理,检测对象管理和标准曲线管理三大功能,可逐一查阅检测结果,如图8所示。

图8 Web后台管理

3 结论

使用OpenCV图像处理算法、基于Flutter开发的Android应用程序及基于Vue开发的后台管理系统,构建出由APP端与Web端共同组成的食用油检测系统平台,主要针对快速检测比色试纸进行便捷分析,并系统化处理试验记录数据。基于智能手机的分析平台是介于人工比色分析和高精度仪器分析之间的一种具备高性价比、便携灵活、客观实际的试纸分析解决方案,系统针对单指标试纸的识别功能已经基本完成,系统各项功能均符合预期,系统的识别结果精确且稳定,已具备小规模应用的条件。

猜你喜欢

试纸食用油灰度
采用改进导重法的拓扑结构灰度单元过滤技术
基于灰度拉伸的图像水位识别方法研究
废食用油改性沥青性能研究
血糖试纸保存方法及注意事项
开封后的食用油应该怎么存放
2019上海食用油展、食用油包装展览会
2019上海食用油展、食用油包装展览
血糖试纸不要放进冰箱
基于最大加权投影求解的彩色图像灰度化对比度保留算法
基于灰度线性建模的亚像素图像抖动量计算