针对移动机器人的人体目标检测和跟踪系统的实现

本文介绍了一个在简单生活环境中的移动机器人系统,该系统能检测和实时跟踪单个人体目标,主要通过人脸检测定位,采用Camshift算法进行跟踪,并通过形态学检测减少背景干扰。当目标丢失时,系统能重新检测并恢复跟踪。核心算法包括seetaFace人脸检测和改进的Camshift跟踪算法,控制逻辑由C#编写。
摘要由CSDN通过智能技术生成

预期效果

机器人可以在较为简单的生活环境背景中,实现对单个人体目标的检测和实时跟踪,做出前进、后退、左转和右转等基本操作。

运行环境

  1. Windows7、 Visual Studio 2013
  2. EmguCv2.4.9
  3. 小R科技-51duino WiFi视频智能小车机器人(更换加强版的路由模块)

基本思路

检测:我们要利用智能小车并不优秀的硬件设备来实现对人体目标的检测和实时跟踪,检测部分我们使用人脸来定位人体,虽然这样使得智能小车只能识别并跟踪正面人体,但是由于智能小车视角的原因(视角很低)并且摄像头和路由模块传输速率有限,没办法传输高分辨率的图像,这些外部因素使得我们最终确定使用人脸检测定位人体目标。但是如果硬件允许的话,这个完全可以将人脸替换成人体目标的检测。seetaFace引擎是一个开源项目,它的人脸检测模块较为准确,并且速度很快。

跟踪:跟踪主要是要满足实时跟踪,经过对比粒子滤波、Camshift、KCF算法等的优势和缺点,最终决定选择Camshift算法。Camshift算法基于颜色概率分布图进行选择,所以如果背景颜色和目标颜色很接近的时候会造成一定的干扰。算法的跟踪算法也可以随着目标的大小而变化,这对我们通过智能车摄像头来判断目标物体的运动状态是至关重要的。另外,针对我们的具体需求,对算法进行了优化和改进。

  • 为了减少背景色对目标物体的干扰,我们加入了形态学检测,我们人脸的轮廓长宽比是有一定限制的,在这个比例区间内我们认为跟踪是成功的,一旦跟踪目标的矩形区域长宽比例超过这个阈值,我们先暂时忽略掉这一帧,继续用上一帧更新跟踪窗口。

    仅使用Camshift算法:
    这里写图片描述

    加上形态学检测:
    这里写图片描述

  • 如果接连几帧都超过了阈值,我们就认为跟踪目标已经丢失,便暂时停止跟踪,重新检测定位目标再进行跟踪。(检测部分使用seetaFace的检测模块,平均检测时间为十几ms)

        public 
  • 9
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值