APP下载

基于ROS平台的运动物体跟踪识别系统的研究

2021-06-16贾余晋蔡红专戴浩邢世波

电子制作 2021年2期
关键词:斑点灰度摄像头

贾余晋,蔡红专,戴浩,邢世波

(西京学院理学院,陕西西安,710000)

0 引言

ROS(Robot Operating System) 是 Willow Garage公司开发的一个适用于机器人的开源的元操作系统。ROS是一种目前广泛使用的机器人操作与控制系统软件框架,该框架使用了当前最流行的面向服务(SOA)的软件技术,通过网络协议将节点间数据通信解耦,这样就能轻松地集成不同语言功能的代码。同时,简单快捷的消息传递方式也能使系统进行有效的分布式控制。

本文以ROS作为开发环境,通过OpenCV库对采集的图像集进行处理,并使用Python语言进行编程,设计了一个运动物体跟踪系统,具有能够实时定位移动物体的功能。该系统具有良好的稳定性和抗干扰性,能够快速准确的识别到选定物体并能够实时判定选定物体的位置。

1 图像采集和图像处理

■1.1 图像采集

本文图像采集使用的是外接USB摄像头,利用usb_cam功能包将摄像头采集的图像转换为ROS图像,通过话题进行发布,使其他各个节点能够接收到图像信息。当节点接收到图像数据后,可以使用OpenCV的接口功能包Cv_Bridge。Cv_Bridge不仅可以实现图像在OpenCV格式与ROS格式之间的转换,还可以通过调用OpenCV库对图像进行各种处理。最后将处理后的数据发布话题,使其他节点接收到处理后的图像数据。

图1 Cv_Bridge和usb_cam功能包的作用

(1)安装usb_cam功能包:

$sudo apt-get install ros-kinetic-usb-cam

(2)启动摄像头:

$roslaunch usb_cam usb_cam-test.launch

图2 usb_cam运行计算图

图3 usb_cam运行效果图

■1.2 图像处理

在进行运动物体跟踪时,首先要将采集到的彩色图像进行灰度化处理,这是因为黑白照片数据量小,更容易提取图像中的特征点,在算法实现时能减少运算量[1]。对RGB图像进行灰度化,实际上就是对图像RGB三个分量进行加权平均得到最终的灰度值,其公式为:

灰度化处理后,对跟踪目标物体进行斑点特征提取。斑点通常是指与周围有着颜色和灰度差别的区域,它比角点特征更加稳定,同时也具有更好的抗噪能力,更适用于运动物体跟踪系统。斑点特征提取使用的是SURF算法,该算法使用了基于Hessian行列式(DoH)的近似Harr小波方法来提取斑点特征[2]。这种方法的主要目的是使二阶微分模板的构建构建更加简单,同时提高尺度空间上的检测效率,从不同尺度上的积分图像计算出近似Harr小波值可以满足这种要求。通过上述方法对每个尺度上的每个像素点进行检测,构建出的Hessian矩阵及其行列式的值分别为:

Dxx,Dxy和Dyy是盒子滤波器得到的近似卷积值。当c(x,y,σ) 的值超过了设置的门限值,则该像素点为关键点,反之则为不相关点[3]。得到关键点后,对其3×3×3范围内的像素邻域进行非极大值抑制,最后再对斑点特征进行插值运算,就可以得到特征点的精准定位了。

2 物体跟踪系统

■2.1 物体跟踪系统流程

本次物体跟踪系统设计基于外接USB摄像头实现,本次系统设计算法流程图如图4所示。

图4 运动物体跟踪系统流程

首先使用Cv_Bridge将USB摄像头采集到的ROS图像数据转换成OpenCV的图像格式,然后创建灰度图像并提取图像中的斑点特征。提取完特征点后,对前后两帧图像进行灰度值对比,估计出当前帧中跟踪物体的特征点在下一帧图像中的位置,过滤掉两帧图片中无变化的特征点,余下的点就是跟踪物体在第二帧图像中的特征点,特征点聚集的位置就是跟踪物体的位置。最后检测移动物体的区域,如果检测到的区域小于设置值,则忽略;如果检测到的区域在设置值内,则在画面上框出识别到的物体,并在画面上标出当前状态和时间戳信息[4]。

■2.2 CamShift算法

框选移动物体使用的是CamShift算法,可以在跟踪的过程中随着目标的变化实时调整搜索窗口大小。对于图像序列中的每一帧还是采用MeanShift来寻找最优迭代结果,并通过对算法中零阶矩的判断实现自动调整窗口大小。在算法中寻找搜索窗口的质心用到窗口的零阶矩M00和一阶矩M10,M01:

零阶矩是搜索窗口内所有像素的积分,即所有像素值之和,物理上的意义是计算搜索窗口的尺寸。经过目标的H分量直方图反向投影后,目标区域的搜索窗口大部分像素值归一化后应该是最大值255,如果计算出来零阶矩大于某一阈值,可以认为此时目标铺满了整个搜索窗口[5]。有理由认为在搜索窗口之外的区域还存在目标区域,需要增大搜索窗口的尺寸;反之,当零矩阵比某一阈值小的时候,搜索窗口的尺寸将会变小。这样的话,无论目标在镜头中的大小如何变化,CamShift算法都可以自适应的调整目标区域进行跟踪。

■2.3 物体跟踪系统

在ROS环境下建立robot_vision功能包,在功能包script文件中建立motiong_detector.py文件,再在laun ch文件夹中建立motion_detector.launch文件。最后在三个不同终端中运行以下指令:

$roslaunch robot_vision usb_cam.launch

$roslaunch robot_vision motion_detector.launch

$rqt_image_view

即可运行物体跟踪系统,在画面中移动识别物体,即可看到矩形框标识出了运动物体的实时位置,效果如图5所示。

图5 物体跟踪的运行效果

3 结语

随着社会的发展,机器视觉已经融入到了生活的各个角落中,人们的生活更加便利、身处的环境也更加智能。同时,机器视觉的发展为其他行业提供了诸多可能性,比如在当下十分流行的自动驾驶研究领域中,可以通过运动物体跟踪识别来识别公路上的地线,让自动驾驶汽车接收到更丰富、更有价值的传感器信息;在工业生产中,运动物体跟踪识别也能让工业机械臂更加精准的定位产品位置,使其工作更加稳定高效。运动物体跟踪识别作为机器视觉的其中一环,它的成熟发展也为更复杂的机器视觉应用研究提供了思路。

猜你喜欢

斑点灰度摄像头
浙江首试公路非现场执法新型摄像头
航空滤光片阵列多光谱图像条带灰度调整算法
摄像头连接器可提供360°视角图像
斑点豹
天津港智慧工作平台灰度发布系统和流程设计
Arduino小车巡线程序的灰度阈值优化方案
Finding beauty in your scars Alexandra Heather Foss
摆脱病毒
无法开启摄像头的解决方案
一种基于灰度分割的调焦评价函数