基于机器视觉的嵌入式智能喷水感应系统设计

2019-11-11 13:14丁旭东过奕任李秋洁
电脑知识与技术 2019年27期
关键词:斜率轮廓水流

丁旭东 过奕任 李秋洁

摘要:该文主要阐述了基于机器视觉的嵌入式智能喷水感应统设计方法,包括硬件构成和软件算法,利用树莓派和python的组合,实现通过视觉识别的水流检测。该文简明阐述了系统的外观结构,详细介绍了图像处理中的各个环节。文章最后作了数据分析,验证了该系统符合设计要求。

关键词:图像处理;水流检测边缘检测系统设计分析

中图分类号:TP311        文献标识码:A

文章编号:1009-3044(2019)27-0179-03

水流是充满变化的,不稳定的水的运动状态,水从一定的方向自由射出,受环境影响,往往具有不确定性。通过对不确定的运动进行视觉识别,有助于深入理解图像识别的过程,由此可以推广其在生产生活中的应用。

本文主要介绍针对固定口喷射水流的识别系统设计,详细介绍了水流从产生到识别的每个过程。本系统通过树莓派进行图像捕捉和识别,实现对水流的检测,并将数据存储下来,通过局域网的方式传输至电脑,方便比对、统计、分析。

1 识别系统的结构设计

识别系统基本包括水流发生装置,识别装置和支撑结构,具体结构如下示意图(图1)。

其中,图中指示灯亮表示识别到水流,灭表示未识别到水流。

根据满足功能,简洁节约的原则,水流由人力控制水枪产生,水枪支架为绘制定做的亚克力板,平台支架由轻木板和短木柱构成,摄像头和水流的隔离用全透明鱼缸代替,鱼缸亦可以存放射出的水流,保持实验过程中模拟环境的整洁。其中,水流的喷射结果尽量和鱼缸轮廓平行,且位居摄像头视野中间,摄像头的视场也尽量和鱼缸轮廓平行,方便图像的后期处理。

2 识别系统的算法设计

树莓派的处理速度相较于普通常见的ARM开发设备,运行速度快,同時有着结构精简,应用范围广,网络连接方便的特点。因此在均衡算法的执行效率和代码复杂度后,本系统采用了Python语言。Python语言具有扩展功能强大,完成同样内容代码量低等诸多优秀特点,非常适合本项目的开发需求,在实际的开发过程中也实质上解决了程序设计中核心代码难于编写的问题。

2.1 图像的获取

主要利用opencv关于python的组件,通过python调用opencv的图像处理指令实现图像的获取。

图像由树莓派所连接的摄像头,通过连续拍摄的方式得到,从而不断获取动态水流的图像信息。文件通过逐帧读取的方法获得实时拍摄的图像,即识别所需要的水流图形,如图2所示。算法中,利用python函数[capture.read()]读取图像信息,并取图片中心的120x160个像素,以PNG文件格式保存下来。

2.2 图像的预处理

2.2.1 灰度化

根据图2所示,水流的图形状态相较于周边背景的主要不同点在于,水流由于光的折射和反射,产生了明度的变化,在图像的颜色上,主要表现为水流处比背景更偏向于白色。因此可以得出一个初步的结论,图像的颜色对于水流来讲是弱相关的,这一结论决定了下面的处理操作。为了减少处理的时间,根据颜色弱相关的结论,对图像进行灰度化(图3),程序中利用语句[gray=cv.cvtColor(roi, cv.COLOR_BGR2GRAY])来实现灰度化的功能。此处的灰度化为平均权重,即:

2.3 水流识别

为了得到较好的水流识别效果,使得处理机构能够准确地在由水流时判断出水流直线,在没有水流时,不作正判响应,识别系统针对2.2中灰度图进行了进一步的处理。算法在设计时,首先使用2.2中灰度化后的图像先后做降噪和轮廓提取,然后再进行直线拟合,判断水流的存在。

2.3.1降噪与轮廓提取

对于运动目标的轮廓获取,首先需要对相邻的两帧图像求差分,即帧间差分法,从而得到在相邻帧的时间内,目标运动的变化状态。同时,两帧作差可以大范围地消除背景静噪声带来的处理干扰,背景噪声对于运动物体的轮廓干扰往往是致命的。对于本设计而言,即要获取运动的水流在两帧之间的位移变化。与一般的刚体运动物体不同,水流在自由运动时会改变相对结构状态,但是其外部轮廓由于张力大致不变,适用于帧间差分法。将图3中的图片与各自前帧作差,利用python函数

在本设计中,高斯核在X,Y方向上的取值均为3,避免由于形态变化以及未能在差分中去除的背景噪声对于轮廓提取的影响,同时尽量保存图片信息,减少由于模糊带来的图像信息失真。处理后的图像如图5所示。

2.3.2针对降噪的必要性分析

由2.2.1,本系统在抓取水流的轮廓前,做了两步降噪操作,并且从处理后得到的轮廓来看,当前数据的轮廓清晰简洁,水流线周围噪声在可接受的范围内,背景底噪基本被去除。为了进一步证明降噪的必要性,在得出轮廓后,添加了对比实验,两组对照组分别为完全不降噪直接取轮廓和仅作差分后再提取轮廓,具体对比如表1所示。

由表得出,每一步的降噪对最终轮廓的获取都有较大的影响,每一步的降噪操作都是必要的。两步降噪最终实现了对特定的水流轮廓的提取,为后续的直线拟合打下了良好的基础。

2.3.3直线拟合

经过上面各个步骤的处理,水流的轮廓已经被提取出来,图像的信息也被压缩成了二值化之后的结果,此时采用霍夫变换,得到图像中主直线的斜率,并在图像中绘制出来,如图7所示,每一张图都有自己的主直线,该直线即可以大致表示成水流在图像中的方向。

根据系统的结构设计,要求摄像头视场和水流方向均与鱼缸轮廓大致平行,由此排除直线斜率偏差过大的情况。在实验中,为了方便数据的记录和传输,将正负斜率统一取绝对值计算,将纠正后的斜率转化为倾斜角显示,并256等分,记0-255,为了区别斜率避免误解,此处将修正后的斜率结果称为斜率值。斜率值只能取0-255这256个整数。其中,0表示和X轴平行,255表示和X轴垂直,1-254分别对应其中的等分(图8)。由于实验模拟环境的干扰,以及摄像头视场并不能完全正好与水流平行,系统把大于200的斜率值都记为识别成功结果,即识别为水流,把不大于200的斜率值记为识别失败,即没有识别到水流。

2.4结果呈现

根据直线拟合的结果,系统在得到识别成功的结果后,指示灯点亮,表示识别出该摄像头上方有水流经过,否则指示灯为熄灭状态。

3 识别结果分析

3.1 识别结果和原数据的比对

为了验证识别结果的准确性,把图7中的直线拟合结果代入原图中,得到图9。根据图片的显示,直线拟合的结果和水流的运动方向大致吻合得到的拟合结果,大致满足系统的设计需要。

3.2 系统功能的达标性检测

验证本项目系统的达标性,是评判一个系统是否满足了设计之初要求的必要的论证过程,帮助寻找系统中存在的漏洞和不足之处,具有科研的严谨性。

从多组实验数据中,选择了一组相对接近实际情况,且外界干扰适中的实验结果进行分析,并以此为代表尝试针对系统做出评估。数据统计的结果如下表所示:

由F1的值得出解论,本系统的设计结果大致满足了设计要求,能够良好地完成识别判断任务。

4 总结

本文主要介绍了水流检测的视觉识别方法,实现了对水流的隔离检测,对于视觉识别的应用进行了对于水流水柱方向的扩展。同时,系统设计和验证期间积累的经验对以后的类似设计具有积极意义。

参考文献:

[1] 赵军. 视觉显著性直线的检测算法研究[D].华中师范大学,2015.

[2] 张月圆,曾庆化,刘建业,等.基于Canny的改进图像边缘检测算法[J].导航与控制,2019,18(1):84-90.

[3] 郭佳. 基于光照不均匀图像的自适应二值化方法研究[D].武汉科技大学,2013.

[4] 郭逸伦.基于OpenCV的边缘检测算法效率分析[J].科学技术创新,2019(1):87-88.

【通联编辑:代影】

猜你喜欢
斜率轮廓水流
OPENCV轮廓识别研究与实践
物理图像斜率的变化探讨
基于实时轮廓误差估算的数控系统轮廓控制
求斜率型分式的取值范围
基于子孔径斜率离散采样的波前重构
MMC-MTDC输电系统新型直流电压斜率控制策略
在线学习机制下的Snake轮廓跟踪
创造早秋新轮廓