一种基于计算机视觉的学生跟踪方法和装置
技术领域
本发明涉及计算机视觉领域,具体为一种基于计算机视觉的学生跟踪方法和装置。
背景技术
计算机视觉的研究起源于二十世纪六十年代,近年来计算机视觉技术逐渐被应用到智能录播系统中,通过边缘检测、目标检测等模式识别的方法理解图像,使录播系统自动定位感兴趣目标,辅助导播画面自动切换。常用的运动目标检测算法有帧间差分法,背景差分法,光流法等等。帧间差分法是一种通过对视频图像序列中相邻两帧作差分运算来获得运动目标轮廓的方法。该方法原理简单,易于实现,而且由于相邻帧的时间间隔比较小,对缓慢变化的环境光不敏感。这种方法的缺点是只能在静态背景下分析,且检测到的目标的轮廓并不精确。基于运动历史图像(MHI)视频分割识别的方法可以对视频中运动目标进行姿态识别,该方法利用了连续图像中目标轮廓在空间上的相关性,通过每帧图像对应的不同时刻将连续图像加权叠加形成运动历史图像,然后再进行分割以得到最终目标,且可以记录该目标各个部位的运动方向,从而用于目标的姿态识别。
发明内容
本发明的目的在于提供一种基于计算机视觉的学生跟踪方法和装置,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种基于计算机视觉的学生跟踪方法,包括以下步骤:
S1:计算差分图像;差分运算需要在灰度图像中进行,取值范围为0~255;
具体计算方式为:设G为图像中某一点当前的灰度值,G′为上一帧中相同位置的灰度值,那么差分值absDiff=|G-G′|;
S2:更新HMI和Mask图像,根据步骤S1的差分结果,对每一个像素点采用如下公式更新HMI:
在更新HMI图像的同时,直接更新Mask,其中,Mask更新公式为:
S3:对步骤S2中的Mask进行轮廓跟踪,轮廓跟踪由以下几个子步骤构成:
子步骤(1):首先按从上到下,从左到右的顺序扫描图像,寻找没有被标记过的第一个边界点A1,定义一个扫描方向变量dir用于记录上一个边界点到当前边界点的移动方向,该变量取值为0~7,分别对应右、右上、上、左上、左、左下、下、右下8个方向,根据边界点类型不同,初始化取值分别为:
若边界点A1是0→1的类型,为外轮廓边界点,dir取4;
若边界点A1是1→0的类型,为孔边界点,dir取0;
子步骤(2):按顺时针方向搜索当前象素的3*3邻域,若在领域中搜索到非0的像素点,则添加该点A0为边界点,设置dir为A0到A1的方向,当前像素依旧为A1,进入子步骤s3;否则,标记A1点为已扫描,重新回到子步骤s1;
子步骤(3):按逆时针方向搜索当前象素的3*3邻域,其起始搜索方向设定如下:
dir=(dir+5)mod 7;
在3*3邻域中搜索到非0的像素点便为新的边界点An,标记当前点,更新变量dir为新的方向值;
子步骤(4):如果An等于边界点A1且前一个边界点An-1等于边界点A0,则停止搜索,结束跟踪,否则重复子步骤s3继续搜索;
子步骤(5):由边界点A0、A1、A2、……、An-2构成一个完成的轮廓,将该轮廓添加到链表里边回到子步骤1,直至将整幅图像扫描完毕;
进一步地,对轮廓链表中的每一个轮廓求最外界矩形,求出的每一个矩形ROI作为候选目标;
S4:对候选目标进行筛选和匹配,根据目标物理距离的不同,在图像上的位置与大小不同,设置与图像坐标相关的尺寸阈值,过滤小于该尺寸的目标,尺寸阈值采取如下设置方法:在图像上选取学生离相机最近位置与最远位置,在这两个位置上分别设置尺寸阈值T1和T2,在两个位置中间采用线性插值或二次插值;
S5:完成匹配过程后,对所有跟踪目标ROI区域在HMI图像计算运动方向,包括如下子步骤:
子步骤(1):计算x方向的运动速度大小,按照由左至右的方向,逐行扫描HMI图像,当发现一个非0点时,记该点坐标为startX,HMI值为lastV;
子步骤(2):继续向右扫描,直至HMI值与lastV不相等,该点坐标为k,值为currV,计算当前位置像素的运动速度为:
Vn=(k-startX)/(currV-lastV);
更新startX为k,lastV为currV,重复子步骤(2);
子步骤(3):根据所有像素的运动速度,计算该ROI区域的x方向的平均速度Vx;
特别的,对于y方向的速度计算,与x方向相同,只需改成逐列,从上往下扫描;
计算出x和y方向的速度后,根据如下公式求目标的运动方向:
Angle=atan(Vx,Vy);
atan是反三角函数,Angle取值范围为0~360;
完成全部目标的角度计算后,将角度按照30为间隔分成12个区间进行统计,根据Anglel落入的区间,统计目标的运动方向信息;
S6:对目标进行动作分析:
先判断目标是否是起立,判定规则为:在12个区间中,若有某一区间计数大于15,则根据目标的位置判断该区间是否符合起立的方向,如果符合,则判定该目标起立;
若目标不是起立,则计算目标当前位置与起始位置的距离,距离大于设定阈值时,可判定该目标是行走目标;
若目标已经起立,则需判断目标是否在坐下的方向的区间统计计数大于15,若大于,则判定目标已经坐下,反之则保持起立状态;
S7:对步骤S6分析结果进行验证:
为保证起立与坐下的判断的有效性,需对步骤S6的结果进行验证,本方法提出使用一个循环链表,保存历史图像作为背景,通过计算目标区域当前帧与背景的差值变化,对起立与坐下动作进行验证,循环链表实施方式如下:
子步骤(1):创建一个包含k张图像的循环链表,初始化所有像素值为0,设置一个统计帧数的变量count,初始化为0;k=15;
子步骤(2):算法每接收一帧,count累加1,当count是a的倍数时,把当前图像添加到循环链表首位里;其中a根据图像处理的帧率来决定,对于30fps的处理速率,a设为4;
S8:返回跟踪目标状态和坐标,把所有目标的坐标和状态返回。
一种基于计算机视觉的学生跟踪装置,该装置包括候选运动目标检测模块,所述候选运动目标检测模块的输出端与运动目标筛选与匹配模块的输入端信号连接,运动目标筛选与匹配模块的输出端与目标动作分析与判定模块的输入端信号连接,目标动作分析与判定模块的输出端与目标动作验证模块的输入端信号连接,目标动作验证模块的输出端与结果输出模块的输入端信号连接。
优选的,所述目标动作分析与判定模块包括运动目标方向计算模块和运动方向统计模块。
与现有技术相比,本发明的有益效果是:本发明不需要对跟踪目标有特殊要求,学生无需佩戴定位设备,且对本发明进行简单的限制即可满足对老师目标的跟踪。本发明算法实现难度小,不依赖其他计算机视觉处理库,可以方便的移植到各种平台中,因本发明算法时间复杂度低,可以满足嵌入式系统中处理实时性要求高的目标跟踪产品。
附图说明
图1为本发明提出的基于计算机视觉的学生跟踪方法流程图;
图2为本发明提出的基于计算机视觉的学生跟踪装置原理框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-2,本发明提供一种技术方案:一种基于计算机视觉的学生跟踪方法,包括以下步骤:
S1:计算差分图像;
在具体实现中,可以采用隔帧差分或相邻帧差分,在本实施例中采用的是相邻帧差分。在每一个处理周期中,都要保存当前的帧数据用于下一处理周期中的差分计算,隔帧差分需保存两帧数据。差分运算需要在灰度图像中进行,取值范围为0~255。如果输入的源图像是RGB格式的,需先进行图像灰度转换。YUV格式图像由于其排列方式,YUV420SP格式直接选取其Y数据进行计算。
具体计算方式为:设G为图像中某一点当前的灰度值,G′为上一帧中相同位置的灰度值,那么差分值absDiff=|G-G′|。
S2:更新HMI和Mask图像,根据步骤S1的差分结果,对每一个像素点采用如下公式更新HMI:
其中,dth主要用于过滤一些小的波动,使算法对噪声有一定免疫,但是该值不能设置过大,设置过大会使真实的运动被过滤,漏检测运动目标,一般该值在10~15之间,本实施例中该值选用13。dur用于去除长时间未运动的像素,本实施例中该值为230。在更新HMI图像的同时,直接更新Mask,其中,Mask更新公式为:
thr是过滤阈值,其大小影响目标运动轮廓的时效性,在本实施例中该值为240。
S3:对步骤S2中的Mask进行轮廓跟踪,轮廓跟踪由以下几个子步骤构成:
子步骤(1):首先按从上到下,从左到右的顺序扫描图像,寻找没有被标记过的第一个边界点A1,定义一个扫描方向变量dir用于记录上一个边界点到当前边界点的移动方向,该变量取值为0~7,分别对应右、右上、上、左上、左、左下、下、右下8个方向,根据边界点类型不同,初始化取值分别为:
若边界点A1是0→1的类型,为外轮廓边界点,dir取4;
若边界点A1是1→0的类型,为孔边界点,dir取0;
子步骤(2):按顺时针方向搜索当前象素的3*3邻域,若在领域中搜索到非0的像素点,则添加该点A0为边界点,设置dir为A0到A1的方向,当前像素依旧为A1,进入子步骤s3。否则,标记A1点为已扫描,重新回到子步骤s1;
子步骤(3):按逆时针方向搜索当前象素的3*3邻域,其起始搜索方向设定如下:
dir=(dir+5)mod 7;
在3*3邻域中搜索到非0的像素点便为新的边界点An,标记当前点,更新变量dir为新的方向值;
子步骤(4):如果An等于边界点A1且前一个边界点An-1等于边界点A0,则停止搜索,结束跟踪,否则重复子步骤s3继续搜索。
子步骤(5):由边界点A0、A1、A2、……、An-2构成一个完成的轮廓,将该轮廓添加到链表里边回到子步骤1,直至将整幅图像扫描完毕;
进一步地,对轮廓链表中的每一个轮廓求最外界矩形,求出的每一个矩形ROI作为候选目标;
S4:对候选目标进行筛选和匹配,根据目标物理距离的不同,在图像上的位置与大小不同,设置与图像坐标相关的尺寸阈值,过滤小于该尺寸的目标,尺寸阈值采取如下设置方法:
在图像上选取学生离相机最近位置与最远位置,在这两个位置上分别设置尺寸阈值T1和T2,在两个位置中间采用线性插值或二次插值,本实施例中采用了二次插值。
匹配过程:采用KNN最邻近匹配,计算候选目标与原有跟踪目标的距离,选取最邻近的候选目标更新原目标位置cPos,完成匹配过程,若目标无法匹配,则认为是一个新的跟踪目标,记录其初始位置坐标oPos。
S5:完成匹配过程后,对所有跟踪目标ROI区域在HMI图像计算运动方向。具体实施方式如下:
子步骤(1):计算x方向的运动速度大小,按照由左至右的方向,逐行扫描HMI图像,当发现一个非0点时,记该点坐标为startX,HMI值为lastV;
子步骤(2):继续向右扫描,直至HMI值与lastV不相等,该点坐标为k,值为currV,计算当前位置像素的运动速度为:
Vn=(k-startX)/(currV-lastV);
更新startX为k,lastV为currV,重复子步骤(2);
子步骤(3):根据所有像素的运动速度,计算该ROI区域的x方向的平均速度Vx;
特别的,对于y方向的速度计算,与x方向相同,只需改成逐列,从上往下扫描,在此不再赘述;
计算出x和y方向的速度后,根据如下公式求目标的运动方向:
Angle=atan(Vx,Vy);
atan是反三角函数,Angle取值范围为0~360,表示目标的运动方向。
完成全部目标的角度计算后,将角度按照30为间隔分成12个区间进行统计,根据Anglel落入的区间,统计目标的运动方向信息。
S6:对目标进行动作分析:
先判断目标是否是起立,判定规则为:在12个区间中,若有某一区间计数大于15,则根据目标的位置判断该区间是否符合起立的方向,如果符合,则判定该目标起立;
若目标不是起立,则计算目标当前位置与起始位置的距离,距离大于设定阈值时,可判定该目标是行走目标;
若目标已经起立,则需判断目标是否在坐下的方向的区间统计计数大于15,若大于,则判定目标已经坐下,反之则保持起立状态;
S7:对步骤S6分析结果进行验证:
为保证起立与坐下的判断的有效性,需对步骤S6的结果进行验证,本方法提出使用一个循环链表,保存历史图像作为背景,通过计算目标区域当前帧与背景的差值变化,对起立与坐下动作进行验证,循环链表实施方式如下:
子步骤(1):创建一个包含k张图像的循环链表,初始化所有像素值为0,设置一个统计帧数的变量count,初始化为0,k是一个经验值,本实施例中k=15;
子步骤(2):算法每接收一帧,count累加1,当count是a的倍数时,把当前图像添加到循环链表首位里;其中a根据图像处理的帧率来决定,对于30fps的处理速率,a设为4。
验证过程:根据当前count值,选取链表往前推第b张图像作为背景差分的图像,b是一个经验值,对于30fps速率,本实施例中b取9,且b<k。选定背景图像后,在目标区域与当前图像进行差分,确定该区域的运动情况,计算区域中的运动像素个数与区域面积的比值Ratio。当该比值大于设定阈值rThr时,则认为步骤S6的分析结果是可靠的,否则,重置该目标的状态为无动作状态。本实施例中阈值rThr设为0.5。
S8:返回跟踪目标状态和坐标,把所有目标的坐标和状态返回。
一种基于计算机视觉的学生跟踪装置,该装置包括候选运动目标检测模块,所述候选运动目标检测模块的输出端与运动目标筛选与匹配模块的输入端信号连接,运动目标筛选与匹配模块的输出端与目标动作分析与判定模块的输入端信号连接,目标动作分析与判定模块的输出端与目标动作验证模块的输入端信号连接,目标动作验证模块的输出端与结果输出模块的输入端信号连接。
候选运动目标检测模块,用于提取候选的跟踪目标;运动目标筛选与匹配模块,用于筛选候选的跟踪目标,以及与上一帧的目标进行匹配实现跟踪;目标动作分析与判定模块,用于判定目标是起立,坐下或者是走动状态;目标动作验证模块,用于验证目标动作的有效性;结果输出模块,将跟踪定位结果输出反馈到主机。
目标动作分析与判定模块包括运动目标方向计算模块和运动方向统计模块。运动目标方向计算模块,计算目标整体运动方向;运动方向统计模块,统计目标在跟踪过程中各个运动方向的次数,当某个方向的运动次数大于固定阈值时,才判定为起立或者坐下动作;当目标与初始位置的偏移量大于固定阈值时,则认为是走动目标。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。