点击上方“程序IT圈”,选择“置顶公众号”
关键时刻,第一时间送达!
本文来源读者烟雨浮尘的投稿毕业论文
摘要
液体杂质检测在医药、食品等行业一直有着广泛的应用,这些行业对于液体的纯净度都有着一定的要求。而目前,对于液体中的杂质检测,大多数研究只限于单帧图像,漏检率高,难于获得较好的结果。我们设计一种新的基于运动分析的液体杂质检测系统,具有重要意义。
该系统先通过CCD摄像头进行图像序列的采集,然后对这些序列图像进行运动分析,从而检测到液体中的杂质。我们分别介绍了二帧差分法和三帧差分法的原理和实现方法,比较实验效果选用三帧差分法进行运动目标的提取,具有实时性好、检测率高的特点。然后介绍了形态学腐蚀和膨胀算法原理,并对差分后的图像序列进行滤波处理,去除图像中的噪声干扰,得到较为准确的运动目标。在提取和分割出运动目标后采用camshift算法的运动模型计算候选窗口,提取运动区域的灰度直方图分布特征和面积特征进行目标的跟踪。最后根据目标的运动状态信息判别液体中是否含有液体杂质,取得了较好的实验效果。我们以python作为编程语言,调用用opencv等库,搭建并设计程序系统。
关键词:智能检测,运动检测,opencv
1. 绪论
计算机视觉是使用计算机及相关设备对生物视觉的一种模拟。它的主要任务就是通过对采集的图片或视频进行处理以获得相应场景的三维信息,就像人类和许多其他类生物每天所做的那样。
本课题的任务是研究液体中杂质的自动检测。液体中的杂质检测在工业生产中有着非比寻常的意义。液体杂质检测在医药、食品等行业一直有着广泛的应用,这些行业对于液体的纯净度都有着一定的要求。化学或生物的方法进行抽样检查,并不能完全保证产品的合格率,并或多或少地损坏样品,造成资源的浪费,提高成本。但在过去大多采用人工检测的方式进行工作,费时费力并且效果并不理想。因此就需要一种科学的系统的方法来进行这项工作。
2. 液体图像运动目标的提取分割
2.1基于帧间差阈值法的运动目标检测
运动目标检测是指将运动区域从视频图像中分割出来。运动目标检测从视频图像序列中检测出运动目标,减小图像处理计算量,得到所需的目标信息,为后续的识别和跟踪奠定基础。
2.2三帧差分法
三帧差分算法是相邻两帧差分算法的一种改进方法,它选取连续三帧视频图像进行差分运算,消除由于运动而显露背景影响,从而提取精确的运动目标轮廓信息[11]。该算法的基本原理是是先选取视频图像序列中连续三帧图像并分别计算相邻两帧的差分图像,然后将差分图像通过选取适当的阈值进行二值化处理,得到二值化图像,最后在每一个像素点得到的二值图像进行逻辑与运算,获取共同部分,从而获得运动目标的轮廓信息。设第k-1帧、第k帧与第k+1帧图像像素在(x,y)分别为Ik-1(x,y)、Ik(x,y) 与Ik+1(x,y) ,二值化阈值为T1和T2
三帧差分法流程如图1:
图1
2.2数学形态学
数学形态学是由一组形态学的代数运算子组成的,它的基本运算有4个: 膨胀(或扩张)、腐蚀(或侵蚀)、开启和闭合,它们在二值图像和灰度图像中各有特点。基于这些基本运算还可推导和组合成各种数学形态学实用算法,用它们可以进行图像形状和结构的分析及处理,包括图像分割、特征抽取、边缘检测、 图像滤波、图像增强和恢复等。
3.液体图像运动目标的跟踪
由于液体中存在杂质的数目是不确定的,而且其位置不同,所以需要对多个不同目标进行跟踪。液体中的杂质有多种,其运动方式也是多样的,有固体性的小颗粒、漂絮状物质,或者是两种运动形式兼而有之的纤维物质。这就需要跟踪算法能适应多种运动情况。
(1) 经典目标跟踪方法
(2) 跟踪相结合的方法
(3) 基于相关滤波的跟踪算法
(4) 基于深度学习的跟踪方法
(5) 特定目标的跟踪
3.1基于 Kalman滤波的目标跟踪算法
卡尔曼滤波应用广泛且功能强大,它可以估计信号的过去和当前状态,甚至能估计将来的状态,即使并不知道模型的确切性质。其基本思想是:以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型,利用前一时刻的估计值和当前时刻的观测值来更新对状态变量的估计,求出当前时刻的估计值,算法根据建立的系统方程和观测方程对需要处理的信号做出满足最小均方误差的估计。
卡尔曼滤波器包括两个主要过程:预估与校正。预估过程主要是利用时间更新方程建立对当前状态的先验估计,及时向前推算当前状态变量和误差协方差估计的值,以便为下一个时间状态构造先验估计值;校正过程负责反馈,利用测量更新方程在预估过程的先验估计值及当前测量变量的基础上建立起对当前状态的改进的后验估计。
3.2基于Camshift的目标跟踪算法
Camshift算法:
Camshift利用目标的颜色直方图模型将图像转换为颜色概率分布图,初始化一个搜索窗的大小和位置,并根据上一帧得到的结果自适应调整搜索窗口的位置和大小,从而定位出当前图像中目标的中心位置。分为三个部分:
1)色彩投影图(反向投影):将图像从RGB空间转换到HSV空间,得到了颜色概率分布图。这个过程就叫反向投影,颜色概率分布图是一个灰度图像。
2)meanshift:meanshift算法是密度函数梯度估计的非参数方法,通过迭代寻优找到概率分布的极值来定位目标。
3)camshaft:将meanshift算法扩展到连续图像序列。将视频的所有帧做meanshift运算,并将上一帧的结果,即搜索窗的大小和中心,作为下一帧meanshift算法搜索窗的初始值。如此迭代下去,就可以实现对目标的跟踪。
Camshift能有效解决目标变形和遮挡的问题,对系统资源要求不高,时间复杂度低,在简单背景下能够取得良好的跟踪效果。Camshift的核心步骤仍然是Meanshift,只是在距离相似性度量的基础之上,又增加了图像灰度相似性的度量。两者共同作用,实现了目标的跟踪。我们在此基础上添加目标的面积大小限制,因为在跟踪过程中,跟踪块的面积不会发生太大变化,我们计算上一帧的目标大小,然后在当前帧摒弃远超过其面积大小的运动目标。
3.3基于目标速度的杂质判定
如果运动目标跟踪的结果表明图像序列中存在运动目标,但有可能运动目标存在气泡或噪声。由于噪声是无规律性出现的,所以无法形成完整的运动轨迹,在跟踪过程中就会被丢弃,而气泡虽然可以有完整的运动轨迹,但其特性是有往水面运动的趋势,而外来液体杂质是有往下运动的趋势,所以根据这一特性,用运动目标的速度特征V来判断是否为液体杂质,V为
其中,V为该运动目标的平均速度。气泡的速度方向和杂质的速度方向相反,我们设置一定的阈值进行判断即可。
4. 实验效果
4.1 黑块杂质检测
1. 原始图像如下图:
2. 运动目标提取:
方法:三帧差法+形态学腐蚀和膨胀运算
我尝试了二帧差法实验,如下图:
可见在速度较低情况下,容易产生空洞现象。而采取三帧率差法解决空洞问题,并且能够加大杂质的尺寸,滤除一部分噪声。
我们利用三帧差法进行实验:
3. 运动目标跟踪:
方法:meanshift算法+相似度函数(灰度直方图分布和目标面积大小的组合):
4. 杂质目标的判别
方法:运动目标的位置和速度信息:
框位置信息 | 中心位置(像素) | 速度(像素/帧) |
track_1(328, 87, 337, 94) | (332.5,90.5) | (0,0) |
track_2(318, 90, 330, 98) | (324,94) | (8.5,-3.5) |
track_3(311, 92, 324, 101) | (317.5,96.5) | (6.5,-2.5) |
track_4(312, 94, 321, 103) | (316.5,98.5) | (1,-2) |
平均速度为(5.3,-2.7)像素/帧
超过TF阈值,判定为杂质。
4.2纤维杂质检测
1. 原始图像如图12所示:
2.运动目标提取:
方法:三帧差法+形态学腐蚀和膨胀运算
3.运动目标跟踪
方法:meanshift算法+相似度函数(灰度直方图分布和目标面积大小的组合):
4.杂质目标的判别
方法:运动目标的位置和速度信息:
框位置信息 | 中心位置(像素) | 速度(像素/帧) |
track_1(275, 99, 284, 106) | (279.5,102.5) | (0,0) |
track_2(289, 90, 295, 102) | (292,96) | (12.5,-6.5) |
track_3(294, 89, 301, 101) | (297.5,95) | (5.5,-1) |
track_4(300, 88, 307, 100) | (303.5,94) | (6,-1) |
track_5(307, 87, 315, 98) | (311,92.5) | (7.5,-1.5) |
track_5(315, 86, 321, 97) | (318,91.5) | (7,-1) |
track_6(321, 86, 328, 97) | (324.5,91.5) | (6.5,0) |
track_7(326, 86, 333, 97) | (329.5,91.5) | (5,0) |
track_8(338, 86, 342, 97) | (340,91.5) | (11.5,0) |
track_10(343, 86, 350, 98) | (346.5,92) | (6.5,-0.5) |
平均速度为(7.6,-1.3)像素/帧
超过TF阈值,判定为杂质。
5. 总结和展望
基于图像处理技术的液体杂质自动检测方法与传统的液体杂质检测方法相比有明显的优点,有自动化程度高,速度快,可靠性高,非接触的特点。图像处理的检测方法能快速检测液体的液面及杂质,大大节约了费用开支,提高了效率,减少了工作量。
本文主要研究了液体杂质检测术。论文的主要任务是设计一个瓶装液体液面及杂质的软件检测系统,满足杂质检测的精度要求。纵览全文,完成的工作主要有:
1.运动目标提取:比较二帧差法、三帧差法等,选用分割效果较好的算法,进而进行滤波和阈值分割去除噪声,实现对运动目标的提取;
2.运动目标跟踪:计算运动目标的特征,标后采用camshift算法的运动模型计算候选窗口,提取运动区域的灰度直方图分布特征和面积特征进行目标的跟踪;
3.杂质判别:根据目标的运动状态信息实现对杂质目标的判别。
本文较好的解决了液面高度和液体杂质检测的问题。在对杂质检测时,也可以尝试使用深度学习方法。由于图像处理的运算量很大,在以后的实际应用中也需要专用硬件支持,这是论文在现阶段还未涉及到的。本文对液体杂质检测进行了研究,解决了一些问题,具有一定的参考价值。
喜欢本篇文章,可以关注一下公众号:大数据AI之家