基于边缘计算的AGV视觉跟踪改进Camshift算法
张同坡1 · 聂晓凯1 · 朱旭2 · 林恩吉1 · 马飞1 · 余立民1
2021年6月23日接受 © 作者(们),专有许可授予施普林格·自然 2021 施普林格科学与商业媒体有限责任公司
自摘动要导引车(AGV)是物联网机器人,由具有分布式智能的中央控制平台引导,实现自动导航。针对自动导引车视觉跟踪应用,已有多种方法被提出。然而,基于视觉的跟踪在自动导引车中通常面临由于图像处理算法复杂度导致的时间延迟问题。为了在算法复杂度、硬件成本和性能之间取得平衡,实际部署中通常会牺牲精度和鲁棒性。本文提出了一种视觉跟踪系统的原型设计。该设计采用边缘计算,将计算密集型图像处理迁移至本地计算机。基于树莓派的AGV通过摄像头捕获实时图像,通过WiFi连接将图像发送到计算机,并接收其处理结果。本文开发并实现了一种改进的Camshift算法。基于该算法,自动导引车在首次检测到物体后,可对目标区域内的像素进行收敛预测,从而在更短时间内更准确地定位目标的相对坐标。实验结果表明,该系统架构和新算法在跟踪过程中实现了降低的硬件成本、更少的时间延迟、改进的鲁棒性以及更高的精度。
关键词 Camshift算法 · 自动导引车 · 视觉跟踪 · 边缘计算
1 引言
自主导引车(AGV)是能够将物品从一个地点运送到另一个地点的自动装卸设备。随着现代工厂环境的发展,对自动导引车的需求不断增长,这就要求自动导引车具备更高的效率和可靠性[1]。不同已提出多种方法用于自动导引车应用。特别是,由于基于视觉的信号处理技术的发展,自动导引车视觉跟踪应用已成为热门研究课题。同时,自动导引车也是物联网(IoT)机器人。根据爱立信的报告,预计到2025[2]将有超过249亿台物联网设备。自动导引车的使用预计将快速增长。为了在时间延迟平衡的前提下弥补自动导引车计算能力的不足,边缘计算提供了一个自然的解决方案。
然而,基于边缘计算的自动导引车视觉跟踪领域仍存在许多问题需要解决。由于时间延迟、环境影响和图像噪声等因素,实时跟踪技术仍然是一个具有挑战性的问题。尽管研究人员在理论上解决了视觉跟踪问题方面取得了巨大进展,但自动导引车视觉跟踪的实际应用仍存在诸多待填补的空白[3]。
均值漂移算法作为一种轻量级的目标跟踪算法,结合基于密度的聚类方法已被广泛应用[4]。作为对均值漂移算法在目标跟踪方面的改进,Camshift(连续自适应均值漂移)算法根据目标的尺寸自适应调整搜索窗口大小,并能精确定位尺寸变化的目标[5]。该算法已应用于人体运动追踪和面部跟踪领域。
然而,在计算目标模板的直方图分布时,Camshift算法未使用核函数进行加权,导致目标区域内的每个像素在目标模型中具有相同的权重[6]。因此,Camshift算法的抗噪能力低于均值漂移跟踪算法。同时,Camshift算法未定义候选目标,而是直接使用目标模板进行跟踪[7]。此外,Camshift算法主要参考HSV颜色空间的色调分量,仅依赖于目标的颜色信息进行跟踪。在这种情况下,当目标与背景颜色相近时,Camshift会自动执行,跟踪窗口将被不断扩展,有时甚至超过整个视频跟踪窗口大小,从而导致目标定位不准确、持续跟踪误差以及目标丢失[8]。同时,如何在边缘计算环境中高效地实现Camshift算法于自动导引车视觉跟踪中,仍需仔细考虑。
本文提出了一种基于边缘计算系统架构的自动导引车视觉跟踪改进Camshift算法。构建了一个基于树莓派的AGV原型,它通过摄像头捕获实时图像,并作为终端节点。图像被传回服务器计算机进行处理,该服务器被视为边缘。边缘采用基于改进Camshift算法的动态视觉跟踪方法,对采集到的图像进行多尺度检测,以跟踪指定目标。通过在实时图像中锁定目标,可以获得其相对坐标。随后,边缘将操控指令回传给终端节点。
本文组织如下。第2节介绍硬件设计和提出的改进的Camshift算法。第3节详细说明实验设置,并对实验结果进行分析。第4节进一步讨论设计问题。结论在第5节中给出。
2 原型的硬件与软件设计
2.1 自动导引车原型
自动导引车(AGV)是物联网(IoT)机器人,由具备分布式智能的中央控制平台引导,实现自动导航[9]。在此设计中,使用带有摄像头的树莓派来构建自动导引车的原型。尽管该原型的功能不如实际工业用自动导引车强大,但仍被用于测试设计理念和算法。
本文中,树莓派的型号为3B+[10]<style id='4>。它被用作自动导引车原型的CPU。L298N是一种专用驱动IC,属于H桥IC的一部分。L298N的输入端可直接与微控制器单元(MCU)连接,因此非常便于由MCU进行控制[11]。
在驱动直流电机时,通过改变输入端的逻辑电平,可直接控制步进电机的正转和反转。为了防止电机对单片机产生干扰,该模块增加了光耦实现光电隔离,从而使系统能够稳定可靠地工作。因此,L298N特别适用于智能小车的驱动模块,并被应用于自动导引车原型中。
HC-SR04[12]是一种用于避障的超声波传感器。它通过在自动导引车原型中触发返回信号来实现测距。该模块会自动发送八个40kHz的方波,然后检测信号的返回。通过周期性的测量值,实现测距和避障。
2.2 边缘计算环境
边缘计算环境的出现为自动导引车视觉跟踪应用的发展提供了理想机遇[13, 14]。
本文中,将自动导引车原型视为终端节点,将平台(设计中使用的笔记本电脑)视为边缘。由于树莓派的计算能力有限,其微控制器无法在短时间内承担密集的图像处理任务,这会导致连续帧之间出现不可接受的延迟。在这种情况下,采用高性能的服务器来替代树莓派作为控制器是一个合理的解决方案。树莓派负责捕获实时图像,并使用Unicode对图像进行编码。编码后的信息通过UDP协议传输到PC服务器。一旦通过阈值提取并确定目标信息,自动导引车原型的内部驱动指令便通过UDP协议从PC服务器传回树莓派。UDP作为一种无连接的传输层协议,不提供可靠性保证,而是简单地将应用程序传递的数据报发送至IP层[15]。通过避免在传输数据报之前建立客户端与服务器之间的连接,UDP能够保持快速传输速度,满足本应用的需求。
在我们的应用中,边缘环境可以分为四层:硬件层、操作系统(OS)层、数据评估层和服务迁移层
如图 1[16]所示。硬件层包含所设计的自动导引车原型、传感器、树莓派、摄像头及其他硬件部件。笔记本电脑可被视为操作系统(OS)层,用于监控硬件层各类资源的使用情况 [16]。数据评估层用于评估边缘节点的消耗情况。边缘评估依据所设计的改进的Camshift算法进行。服务迁移层用于迁移边缘服务,被视为系统中设计的程序,是边缘环境的核心。如果一个实际的自动导引车系统架构相对简单,例如AGV终端节点数量有限且跟踪精度要求不高,则服务可局限于单一平台。在这种情况下,服务迁移层仅限于数据迁移。
2.3 Camshift算法
本节回顾了原始Camshift(连续自适应均值偏移算法)。改进的Camshift算法在第2.4节中详细说明。Camshift是对均值漂移算法的改进,它根据目标尺寸更新搜索窗口大小,并准确识别尺寸变化的目标[17]。同时,它也能够在视频流中跟踪尺寸变化的目标。其基本原理与每个视频帧中移动物体的颜色信息相关。该信息作为输入图像的特征,分别在每帧输入图像上执行均值漂移操作。
随后,以前一帧的目标中心和搜索窗口大小作为均值
下一帧的shift算法。这样就可以实现连续的目标跟踪。由于搜索窗口的位置和大小接近于前一状态,且运动目标通常位于该区域附近,因此缩短了搜索时间。因此,如果在两组图像上使用Camshift算法,则会得到两组对应的中心点。理论上,这些点在世界坐标系中的位置是相同的。这意味着可以利用这两组点来计算空间坐标[18]。
Camshift算法采用HSV(色调、饱和度、明度)颜色模式,而不是使用 R(红)、G(绿)和B(蓝)三原色的RGB模型。RGB颜色模型无法充分反映图像的形态特征,仅从光学原理上表示颜色的分布[12]。Camshift算法将图像从RGB色彩空间转换到HSV的原因在于,HSV颜色模型相比RGB颜色模型受光照强度变化的影响更小[20]。该算法利用H分量为跟踪目标建立直方图模型,并对得到的结果进行归一化处理,以0∼255。通过将图像中每个像素的值替换为其颜色出现的概率,生成颜色概率分布图。然后设定合适的阈值,对颜色概率分布图进行二值化。
通过迭代,Camshift算法根据方向[21–23]更新搜索窗口大小。目标的方向信息由搜索窗口的二阶矩M11, M20和M02反映,公式如下:
(1) M11=∑x∑yI(x, y)xy
(2) M20=∑x∑y I(x, y)x2
(3) M02=∑x∑yI(x, y)y 2
(4) a= M 20/M 00 − x c 2
(5) b= 2( M 11/M 00 − x cyc)
(6) c= M 02/M 00 − yc 2
下一帧搜索窗口的初始大小为[19–22]:
(7) = 1/2 tan−1(b/(a− c))
(8) I= √((a+ c)+ √(b²+(a− c)²))/2
(9) w= √((a+ c) − √(b²+(a− c)²))/2
(10) width= max(|cos|, w|sin|)
(11) Height= max(|sin|, w|cos|)
Camshift算法改进了均值漂移跟踪算法的第二个缺陷。在跟踪过程中,它根据目标尺寸更新搜索窗口大小,从而精确定位尺寸发生变化的目标[17]。
然而,在计算目标模板的直方图分布时,Camshift算法未使用核函数进行加权,导致目标区域内的每个像素在目标模型中具有相同的权重。因此,Camshift算法的抗噪能力低于均值漂移跟踪算法。同时,Camshift算法未定义候选目标,而是直接使用目标模板进行跟踪。此外,Camshift算法利用HSV颜色空间的H分量和目标直方图框架,这使其在跟踪过程中高度依赖目标信息的颜色。在这种情况下,当目标颜色与背景颜色相近时,Camshift将自动执行并扩大跟踪窗口。有时该扩大的跟踪窗口可能超出整个视频帧大小,导致目标定位不准确、持续跟踪错误以及目标丢失。本文提出了一种改进的Camshift算法,并在第2.4节中进行了详细说明。
2.4 将卡尔曼滤波算法与Camshift及窗口化相结合
卡尔曼滤波算法被认为是最著名的贝叶斯滤波理论之一,是一种线性最优状态估计方法[24]。对于实时目标的跟踪,只要定义了关键参数,卡尔曼滤波算法就能为不同的实时跟踪对象提供最优的跟踪解决方案。卡尔曼滤波器能够基于现有数据,在系统参数和测量值的统计特性可确认的情况下,确保理想的估计结果[25]。卡尔曼滤波器的常见变体包括扩展卡尔曼滤波(EKF)和无迹卡尔曼滤波器(UKF)。
本文中,采用传统卡尔曼滤波来预测跟踪目标。该跟踪算法考虑了背景的动态特性。它减少环境因素(如光照和相似背景)带来的负面影响,以提高跟踪性能。该方法与Camshift算法相结合,用于边缘计算环境下的实时自动导引车视觉跟踪系统。关键算法总结如下。
- 步骤 参数的初始值被预先定义。例如,测量值和估计值的高斯白噪声协方差被认为在一段时间内保持稳定,而跟踪过程中的帧正在不断变化。这与卡尔曼滤波算法的概念相兼容 [26]。
- 步骤 通过手动选择指定的跟踪目标,我们获得所选跟踪区域的中心点坐标 (x, y)、帧窗口宽度 w 和长度 h。
- 步骤 3 :开始测量。使用卡尔曼滤波器预测目标窗口的位置。将跟踪过程的当前帧定义为k。基于跟踪过程的前一帧,可以预测跟踪过程的当前帧。
- 步骤 4 在帧被预测后,是时候收集当前的测量帧了。根据收敛后的预测结果,图像被裁剪至预定的窗口尺寸(w 和 h)。结合预测帧和带窗口的测量帧,应用Camshift算法计算在时刻 k 目标的最佳位置和大小。
- 步骤 5 更新在状态 k 下的协方差。系统随后从 k 到 k 进行递归操作+1。
第 3 节详细介绍了改进的Camshift算法的实现。
3 实验结果
3.1 系统工作流程
该原型系统包含一个摄像头、树莓派3B+、预设程序以及避障传感器。一台笔记本电脑被用作模拟边缘环境中的平台。图像由自动导引车节点的摄像头采集,通过无线数据传输(无线网络)发送至平台(边缘)。在边缘端,这些图像由改进的Camshift算法进行分析,随后将跟踪动作的决策发送至自动导引车终端节点以控制其运动。整个过程可总结于图 2。
3.2 目标跟踪实验
实验涉及对特定物体的检测与识别。刚性物体用于表征运动过程中像素的恒定特性。针对每一帧,计算目标像素的收敛区域视频流。然后获得目标像素聚合的中心区域,实现实时跟踪。
在跟踪功能开始时,PC服务器需要设置接收模式并等待树莓派传输图像,如图3所示。
通过使用自动导引车原型进行实验,测试了所设计的改进的Camshift算法的精度和鲁棒性。另一辆自动导引车被视为跟踪目标(戴蓝色遮罩者)。场景中增加了一辆具有相似蓝色的自动导引车作为干扰,以模拟动态环境因素。
除了结合卡尔曼滤波器与Camshift算法外,改进的算法还采用了选择窗口方法。基于跟踪目标确定一个选定的跟踪区域,该区域在第一帧中被选取。一旦在初始阶段定义了该区域,其余区域将被涂成白色或深色,从而降低背景环境的干扰。经过调整并带有简单预处理的算法在此单目标自动导引车跟踪问题中表现良好。图4和5以图形方式展示了原始Camshift与改进的Camshift跟踪方案的不同跟踪性能。图4c和d显示了不准确跟踪的情况。图5展示了在运动过程中实现准确跟踪的结果。底部附有带窗口化图像的中间步骤,以供说明。
更多数值分析结果详见表 1、表 2 和图 6。表 1 显示了15帧中各帧中心的真实坐标点与预测的坐标点,展示了改进的Camshift算法的精度。所指出的 x和y坐标点是帧中跟踪区域的中心点。为确保跟踪区域为像素构成的矩形,预测的像素点数值已向下取整。根据表 1 中的数据可得出结论:改进的 Camshift算法在跟踪中具有高精度。
实验还表明,跟踪过程中的时间延迟减少且稳定性提高,如图6和表2所示。传统Camshift算法处理摄像头捕获的整幅图像,计算得到的图像信息熵约为 6.49856。所设计的采用窗口函数的改进的Camshift算法则聚焦于图像的一部分。预处理后更新的图像信息熵降低至1.80633。窗口化节省了处理时间通过减少收敛时间,从而实现更少的时间延迟。降低的熵使得帧间时间延迟更加稳定,如图 6所示:原始Camshift与改进算法的时间延迟对比。表2以20帧为例,从数值上比较了两种算法的差异。
如表2所示,原始Camshift算法的平均时间延迟约为6.6406 ms。改进的 Camshift算法的平均时间延迟为5.9879 ms。 其平均时间延迟减少了12.94%。同时,改进的Camshift算法更加稳定,时间延迟的变化减少了51.74%,如图 5所示。
| 表1 改进的Camshift下真实点与预测点对比 |
|---|
| 真实点数 (X) |
| 666.16364 |
| 666.75586 |
| 667.10645 |
| 666.3836 |
| 667.3559 |
| 667.9055 |
| 667.3961 |
| 667.02045 |
| 666.3877 |
| 666.74384 |
| 668.0377 |
| 668.94934 |
| 668.93286 |
| 669.26434 |
| 669.26154 |
| 表2 Camshift与改进的Camshift的时间延迟 |
|---|
| Camshift(秒) |
| 0.0060108 |
| 0.0065796 |
| 0.0058773 |
| 0.0071038 |
| 0.0065556 |
| 0.0060031 |
| 0.0061896 |
| 0.0071239 |
| 0.0057074 |
| 0.0083375 |
| 0.0065432 |
| 0.0074492 |
| 0.0067949 |
| 0.0054191 |
| 0.0065373 |
| 0.0065373 |
| 0.0058312 |
| 0.0074398 |
| 0.0052974 |
| 0.0094735 |
| 统计量 | Camshift | 改进的Camshift |
|---|---|---|
| Mean | 0.006877671 | 0.005987875 |
| 方差 | 9.56119E‐7 | 4.61390E‐7 |
4 讨论
实验中的关键特征和改进总结如下。
首先定义关键参数,包括语句编号、自动导引车速度、观测量、系统测量矩阵、状态转移矩阵和噪声协方差。
- 启动摄像头后,基于改进的Camshift算法的程序开始运行。在传统 Camshift算法中,下一帧通过均值漂移算法从前一帧的检测中心进行检测。然而,目标处于运动状态,当背景颜色与目标颜色重叠时,跟踪可能发生偏移。因此,改进的算法采用卡尔曼滤波器来预测运动目标的坐标,并预测目标在下一帧中的位置。
通过在预测的坐标周围设置选择窗口,可以去除目标周围的背景像素,从而降低错误跟踪转移的可能性。结合卡尔曼滤波器和窗口算法,使跟踪时间延迟减少了12%。由于复杂背景干扰的减少,目标跟踪的稳定性和鲁棒性得到提升,性能增益达到51.74%。
从测试结果可以看出,在边缘识别目标后,可将目标的颜色信息作为收敛区域的条件。通过每帧的收敛计算,可以锁定目标在图像中的坐标,并向终端节点发送相应指令。此外,通过比较识别出的目标区域大小与预设值,树莓派自动导引车能够保持与目标的指定距离。
由于目标自动导引车的速度在移动过程中会发生变化,原型跟踪自动导引车与目标之间的距离、跟踪目标的形状和颜色以及背景的复杂性都会影响跟踪性能。为了进一步明确性能变化,进行了额外的实验。被跟踪的目标对象是如图5所示的蓝色自动导引车。被跟踪对象具有预设的初始速度。在跟踪过程中会发生形变和尺度变化。因此,基于改进的Camshift算法,跟踪自动导引车对目标的最大可达速度会因不同的预设跟踪距离而变化。针对不同的跟踪距离和预设窗口大小进行了测试,结果如表3所示。
在实验中,目标的最大速度为 40 cm/s,帧率为 30 f/s,处理时间接近 0.06 s。测试中的最大速度需小于实际宽度的一半。计算公式如下所示。
(12) processing frame= fps× processing time ≈ 2 frame
(13) Max speed× 2 ⩽ actual width
因此,当需要跟踪快速移动物体时,可以设置较小的默认窗口以延长跟踪距离。此外,如果需要沿指定路线行驶,则应设置较大的默认窗口以实现近距离跟踪。
5 结论
构建了一个原型自动导引车跟踪系统,并在边缘计算环境中进行了测试。提出了一种新的跟踪算法,该算法基于结合了Camshift、卡尔曼滤波器和窗口算法的改进的Camshift算法。所设计的系统解决了原始Camshift算法在自动导引车跟踪中存在的若干未解决问题,包括自适应颜色跟踪、动态背景下的干扰抑制以及恒定跟踪距离的维持。
实验结果表明,跟踪时间延迟减少了12%。目标跟踪的稳定性和鲁棒性性能提升了51.74%。该系统架构为解决单个自动导引车计算能力有限与自动导引车跟踪中计算密集型图像处理需求之间的平衡问题提供了方案。实验结果还揭示了当前自动导引车跟踪系统设计中存在的挑战,包括速度限制以及目标颜色/形状的复杂性,这些问题值得进一步研究。
| 表3 跟踪中的测试数据 |
|---|
| 距离(厘米) |
| 105 |
| 90 |
| 75 |
| 45 |
222

被折叠的 条评论
为什么被折叠?



