北方工业大学 侯昊 王广硕 李永杰 杜春来
实时的运动检测和跟踪技术是一项融入图像处理、计算机视觉、网络传输等多学科的技术,在生物医学、工业自动化生产、智能机器人等多个领域都有着非常广泛的应用。所谓实时的运动检测与跟踪技术就是将实时采集的图像信息进行检测,提取有用信息,识别目标参数特征,过滤噪声并锁定目标[1],而实现运动物体的检测和跟踪依赖于对物体的识别,所以利用机器视觉技术对目标进行快速自动地识别别成为了关键。但现在大多数运动检测系统基于PC 机等大型且计算能力较强的设备,基于卷积神经网络(CNN)的机器学习算法已经在很多领域中进行了探索和应用[2]。而某些识别中,进行目标的识别检测并不需要准确的识别出是目标种类,只是要求快速识别且灵活部署在某些小型嵌入式系统中[3]。
因此本文设计并实现了一种基于HALCON 的轻量级物体识别方法,寻求在较为干净的深度图像下,克服复杂光线变化对实验结果的影响。在完成识别以后,搭配Realsense D 相机的测距功能可实现对运动的待测目标实时检测和跟踪。在本文实验中的摄像头是标定的。
HALCON 是德国MVtec 公司开发的一套完善的标准的机器视觉算法包,拥有应用广泛的机器视觉集成开发环境,其灵活的架构便于机器视觉,医学图像和图像分析应用的快速开发。在欧洲以及日本的工业界已经是公认具有最佳效能的Machine Vision 软件。
RealSense 深度相机是使用立体视觉来计算深度,立体视觉实现包括左成像仪、右成像仪和可选的红外投影仪。红外投影仪投影不可见静态红外图像,以提高低纹理场景的深度精度。左右影像捕捉现场,将原始图像数据发送到视觉处理器,它计算图像中每个像素的深度值关联点左边图像正确的图像,并通过转变之间的点左边的图像和图像,处理深度像素值以生成深度帧,随后的深度帧创建深度视频流。
本节重点阐述基于HALCON 的轻量级物体识别算法及所使用的重要HALCON 算子。
因为运动的待识别目标的颜色会随着距离Realsense相机的远近发生变化,所以具有明显的颜色特征。同时待识别目标运动到最高点时及过最高点后,因其大小与周围物体差别较大,有明显的轮廓信息,所以可以借此提取目标。首先选择阈值分割来做初步识别,然后结合待识别目标轮廓信息,通过筛选面积大小来对运动的待识别目标进行识别,最后结合视觉测距对运动的待测目标实现实时跟踪。识别算法的整体框架如算法1所示。
算法1 整体识别算法
输入:实时图像采集帧
输出:标记运动物体轮廓
1:function RecogniseImages(Image)
2:read_image() //图像采集
3:gen_rectangle1() //创建ROI
4:rgb1_to_gray()
5:threshold() //对图像进行处理
6:connection() //分割不相连区域
7:select_shape() //筛选大小获得待识别目标
8:if AREA > 0 then
9:disp_rectangle2() //标记物体
10:else
11:find_scaled_shape_model //模板匹配算法
12:end if
13:return result
14:end function
本文主要应用的HALCON 算子,其主要的识别算子分述如表1 所示。
表1 主要算子Tab.1 Main operators
首先获取初始图像,对图像获取初步信息并显示出来,通过取ROI 来缩小图像处理的范围,从而加快图像处理的速度。再对ROI 进行图像预处理从而获取大概的目标区域。预处理以后的ROI 如图1 中灰色线条圈出部分所示。
图1 预处理以后的ROI 部分Fig.1 ROI section after preprocessing
如算法2 所示:
算法2 预处理算法
输入:实时图像采集帧
1:function PRETREATMENT(Image)
2:gen_rectanglel() //创建矩形平行于坐标轴
3:rgb1_to-gray() //创建ROI
4:threshold() //对图像进行处理
5:end function
在图像识别过程中并不是所有的轮廓都是由待识别目标产生,有些是由噪声产生的轮廓或是待识别目标的子轮廓。所以必须对轮廓进行筛选,从而淘汰掉非目标轮廓。在通过预处理以后图像明显看到待识别目标与周围分割开来。此时通过筛选面积的大小提取识别到的目标如图2 所示,图像中间所形成的封闭轮廓就是待识别目标。
图2 筛选面积后得到的待识别目标Fig.2 Target to be identified after filtering the area
如算法3 所示:
算法3 筛选算法
输入:被分割的不相连区域
输出:筛选大小获得的待识别目标
1:function SCREEN(ConnrctedRegions)
2:connection() //分割不相连区域
3:select_shape() //筛选大小获得待识别目标
4:if AREA > 0 then
5:disp_rectangle2() //标记物体
6:else
7:find_scaled_shape_model //模板匹配算法
8:end if
9:return result
10:end function
为了提高识别算法的鲁棒性,增添了模板匹配算法,这种算法是基于边缘方向梯度的匹配。如果通过以上的处理不能提取目标的时候,采取模板匹配算法。然后通过干净的模板来匹配处理好的ROI 中的目标,匹配的结果如图3 所示。
图3 在ROI 中进行模板匹配Fig.3 Template matching in ROI
如算法4 所示:
算法4 匹配算法
输入:特定区域ROI
输出:标记运动物体的轮廓
1:function MAtcH(ImageReduced)
2:set_system() //模板匹配设置
3:read_image() //读入模板图像
4:gen_circle()
5:reducedomain() //获得特定区域ROI
6:create_scaled_shapemodel() //创建模板
7:get_shape_model_contour() //获取模板轮廓
8:find_scaled_shape_model() //匹配模板
//进行放射变换
9:for MatchingObjIdx := 0 to ModelScore 1 by 1 do
10:hommat2d_identity()
11:hom_mat2d_scale()
12:hom_mat2d_rotate()
13:hom_mat2d_translate()
14:affine_trans_contour_rld()
15:end for
16:end function
进行模板匹配以后可以得到较为清晰的识别目标,如图4 所示,可知此时待识别目标的轮廓已经匹配成功并且提取到了。
图4 模板匹配匹配到的待识别目标Fig.4 The target to be identified matched by the template
本文实验的数据来自Realsense D 相机拍摄。相机置于离地10cm 高度,斜45°角摆放。实验中使用机械臂抛掷橄榄球来模拟待识别的运动物体。
本识别算法基于HALCON 软件进行分析识别,对输入帧进行处理和模板匹配学习后,通过修改筛选面积的大小和模板匹配的参照物可以对一部分飞行中的物体进行识别。研究过程对2 组飞行物体进行学习,8 份数据进行测试,测试结果都获得成功。
通过与基于OpenCV 编写的帧差法识别运动物体的结果对比,可以发现两种方法都能识别出运动中的物体。但在实际应用中搭配Realsense D 相机使用的本文提出的算法可以在识别目标后同时获取目标距离相机的距离。而基于OpenCV 编写的识别算法则不能得出此距离,仅能够跟踪目标。本文针对两种识别方式的结果,进行比较后整理如表2 所示。
表2 两种识别方式结果Tab.2 Results of two recognition modes
利用HALCON 的图像分析技术可以较为快速地识别出运动的物体,此功能可以运用到某些需要快速识别到运动物体的工作中,配合后续的跟踪检测工作。
本文提出了一个基于Realsense D 相机和HALCON 的图像处理分析的轻量级物体识别方法。针对基于OpenCV的帧差法进行了对比试验,以及进行了多组实验,验证了该算法的可行性、可靠性,并且增加了模板匹配算法以增强鲁棒性。充分利用HALCON 的便捷性和Realsense D相机的深度图像功能,满足了小型化、灵活化的需求。
综上所述,利用HALCON 的图像分析对运动中的物体进行识别,技术上可以实行,并且减少对计算机CPU的使用,从而使得识别算法可搭配其他更复杂的跟踪算法。下一步将开展更多的研究与实验以提高算法的泛化性和准确性。