本发明涉及图像处理技术领域,尤其涉及一种基于人体骨架检测的多相机人员定位跟踪显示方法。
背景技术:
由于单目相机视野有限,而且单目定位不准确,因此在实际的目标定位跟踪系统中,更多的是采用多摄像机系统,多摄像机系统能有利于解决遮挡,环境光照突变情况下的运动目标跟踪等问题,但是它也引入了新的难题,主要包括:多摄像机间的时间同步问题,多目标间的匹配问题。传统多相机目标定位跟踪主要思想为:对相机进行内外参标定,然后使用传统方法提取目标,比如背景建模,帧差等方式,再将数据进行配准融合得到属于同一个目标的物体,然后进行定位跟踪。
传统方法目标检测的困难性主要表现在:抗光照变化,抗抖动,抗背景扰动,抗阴影,抗颜色相似等不鲁棒,目标检测效果比较差,基于传统特征融合的方法来进行目标匹配鲁棒性比较差,综合两方面因素,导致多相机跟踪效果很差。
技术实现要素:
本发明提供了一种基于人体骨架检测的多相机人员定位跟踪显示方法,通过将检测到的人体姿态点根据相机的内参映射到空间上得到点对应的射线,使用空间两条直线最近距离得到的值作为代价矩阵,结合匹配算法计算得到匹配结果,再对结果进行定位跟踪,以解决传统方法进行目标检测出现的检测效果和鲁棒性差的技术问题,从而提升目标检测效果和增加鲁棒性,进而实现提升多相机跟踪效果。
为了解决上述技术问题,本发明实施例提供了一种基于人体骨架检测的多相机人员定位跟踪显示方法,包括:
通过对目标区域内的多个相机进行标定,得到每个相机的内参数和外参数并进行保存;
对每个相机前后采集的两帧图像的前景进行计算得到前景变化值,当每个相机的前景变化值均大于预设的前景阈值时,确定相机同步;
在确定相机同步后,通过数学模型对相机采集的目标人物图像进行识别并提取人体骨架点,通过相机的内参数和外参数对所述人体骨架点进行映射得到空间射线,并通过匹配算法对所述空间射线进行匹配;
匹配完成后,根据每个目标人物在世界坐标系中的位置,分别计算所有点的空间平均坐标,将所述空间平均坐标作为跟踪点,通过跟踪方法进行跟踪目标,并将得到的匹配后的目标人物进行显示。
作为优选方案,所述通过对目标区域内的多个相机进行标定,具体包括:
在每个相机的视野范围内分别采集多张图像,将采集的图像输入标定工具,得到每个相机的内参数;
在多个相机的采集公共区域中选取角点作为世界坐标系的点与采集图像中的角点坐标作为一对映射点,将所述映射点输入开源工具,得到各相机的外参数。
作为优选方案,所述内参数包括相机的焦距和主点坐标;所述外参数为相机在世界坐标系中的参数。
作为优选方案,所述前景变化值的计算步骤,具体包括:
将前后采集的两帧图像转化为灰度图并进行高斯滤波平滑处理,得到两帧处理图像;
对两帧处理图像作差运算,并对作差后的两帧处理图像进行二值化处理,得到两帧二值化图像;
分别计算两帧二值化图像的前景变化占整幅图像的比例值,将该比例值作为该帧图像的前景变化值。
作为优选方案,所述得到空间射线的具体步骤,包括:
将所述人体骨架点转化为相机坐标系的点;
将相机坐标系的主点坐标和所述人体骨架点转化的坐标点转换到世界坐标系,得到空间射线。
作为优选方案,所述通过匹配算法对所述空间射线进行匹配的步骤,具体包括:
计算第一相机和第二相机采集图像中每个人的空间直线间的距离,将该距离作为损失值,当损失值超过预定的损失阈值时,将所述损失值的数值扩大一倍;
将损失值作为输入参数,通过匹配算法进行计算预测,得到匹配结果。
作为优选方案,所述匹配算法为匈牙利最大匹配算法。
作为优选方案,所述跟踪方法为欧式距离跟踪方法。
作为优选方案,所述将得到的匹配后的目标人物进行显示的步骤,具体包括:
设置显示的模型矩阵、投影矩阵和视口矩阵;
将空间平均坐标以及检测的人体骨架点作为对应点进行连线连接;
对跟踪点进行设置id,以显示跟踪点位置;
通过对所述跟踪点进行交互操作,以实现从不同角度观察目标人物。
作为优选方案,所述交互操作包括旋转、缩放或者平移。
相比于现有技术,本发明实施例具有如下有益效果:
本发明通过将检测到的人体姿态点根据相机的内参映射到空间上得到点对应的射线,使用空间两条直线最近距离得到的值作为代价矩阵,结合匹配算法计算得到匹配结果,再对结果进行定位跟踪,以解决传统方法进行目标检测出现的检测效果和鲁棒性差的技术问题,从而提升目标检测效果和增加鲁棒性,进而实现提升多相机跟踪效果。
附图说明
图1:为本发明实施例中的基于人体骨架检测的多相机人员定位跟踪显示方法步骤流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图1,本发明优选实施例提供了一种基于人体骨架检测的多相机人员定位跟踪显示方法,包括:
s1,通过对目标区域内的多个相机进行标定,得到每个相机的内参数和外参数并进行保存;在本实施例中,所述步骤s1具体包括:
s11,在每个相机的视野范围内分别采集多张图像,将采集的图像输入标定工具,得到每个相机的内参数;s12,在多个相机的采集公共区域中选取角点作为世界坐标系的点与采集图像中的角点坐标作为一对映射点,将所述映射点输入开源工具,得到各相机的外参数。在本实施例中,所述内参数包括相机的焦距和主点坐标;所述外参数为相机在世界坐标系中的参数。
本方法实施例中采用3个摄像机监控同一块区域,相机位置安装方式为俯视安装,并且摄像机位置在安装在墙壁两侧,这样可以达到有效解决人员遮挡带来漏匹配问题,实现多目标定位与匹配跟踪。具体地,分别对每个相机标定,得到每个相机的内参和外参,保存后续使用。具体标定过程:(1)使用预先制作后的5*6棋盘格在每个摄像机视野范围内各个角度,远近不同各采集图像约40张,使用opencv标定工具得到每个相机内参,并保存。考虑到应用环境的特殊性,我们对三个相机的公共区域进行手动选取地板上瓷砖间的角点作为世界坐标系的点与图像中的角点的坐标作为一对对映射点,每个相机将采集的点使用opencv工具求得各自相机的外参数,并保存,从而完成相机的内外参标定过程。
相机的内参数指的是相机自身的相关参数,主要包括相机的焦距,主点坐标,畸变参数;此处畸变参数我们不需要处理,因此可以忽略。内参矩阵描述为:
其中,fx,fy表示为相机的焦距,cx和cy表示主点坐标。
标定工具得到内参过程:需要为每个相机都分别标定内参,使用6*5的棋盘格在相机不同位置和距离分别采集约40张左右的图像;将采集到的图像先转为灰度图,然后调用opencv开源工具函数cv2.findchessboardcorners函数获取棋盘格上的角点(棋盘格相邻的对角正方形交点),之后调用cv2.calibratecamera函数将获得的角点坐标传入,返回相机的内参数。
相机的外参指:相机在世界坐标系中的参数,外参数确定了相机在某个三维空间中的位置和朝向。外参主要包括旋转矩阵r和平移矩阵t。外参标定的结果比较特殊,主要利用室内环境下,部分共有的区域进行标定外参。
s2,对每个相机前后采集的两帧图像的前景进行计算得到前景变化值,当每个相机的前景变化值均大于预设的前景阈值时,确定相机同步;在本实施例中,所述前景变化值的计算步骤,具体包括:
s21,将前后采集的两帧图像转化为灰度图并进行高斯滤波平滑处理,得到两帧处理图像;s22,对两帧处理图像作差运算,并对作差后的两帧处理图像进行二值化处理,得到两帧二值化图像;s23,分别计算两帧二值化图像的前景变化占整幅图像的比例值,将该比例值作为该帧图像的前景变化值。
具体地,由于相机在使用过程中,各相机可能时间不对齐,导致定位不准确情况,因此相机同步十分重要,目前通过手动方式对齐,,主要原理是通过室内开关灯方法对齐,分别计算每个相机的前后两幅图像的前景变化,当该相机前后前景变化大于某个阈值时,等待其他相机其他前景变化也大于该阈值时,认为三个相机同步了。前景变化计算原理步骤:(1)计算前后两帧图像,将图像转为灰度图,使用高斯滤波平滑,(2)对两幅图像作差运算,(3)对作差后的的图像二值化处理,(4)计算前景变化占整幅图像的比例,与设定的阈值比较。
本方法适用于室内定位,简单方便的方法是通过开光灯一次,通过计算图像灰度在关灯时变化较大的特征来判断同步的。
s3,在确定相机同步后,通过数学模型对相机采集的目标人物图像进行识别并提取人体骨架点,通过相机的内参数和外参数对所述人体骨架点进行映射得到空间射线,并通过匹配算法对所述空间射线进行匹配;
在本实施例中,所述得到空间射线的具体步骤,包括:将所述人体骨架点转化为相机坐标系的点;将相机坐标系的主点坐标和所述人体骨架点转化的坐标点转换到世界坐标系,得到空间射线。
在本实施例中,所述通过匹配算法对所述空间射线进行匹配的步骤,具体包括:计算第一相机和第二相机采集图像中每个人的空间直线间的距离,将该距离作为损失值,当损失值超过预定的损失阈值时,将所述损失值的数值扩大一倍;将损失值作为输入参数,通过匹配算法进行计算预测,得到匹配结果。
在本实施例中,所述匹配算法为匈牙利最大匹配算法。
具体地,使用深度学习openpose模型分别提取三个相机的图像中人体骨架信息,并将信息存入队列,匹配算法从队列中取骨架信息用于匹配。需要对三个相机的骨架信息点进行匹配,匹配的原则是求局部最优,策略是:1号相机跟2号相机匹配,2号相机跟3号相机匹配,得到最终匹配结果进行融合并输出。
然后计算每个人的骨架点对应的空间射线,匹配算法以人为单位进行匹配,将每个相机中的人的pose出的骨架点通过相机的内外参映射成空间的射线,简单描述原理:先将图像中的点转为摄像机坐标系下的点,记为p,再将摄像机坐标系点(0,0,0)和p转换到世界坐标系,从而得到空间的射线。摄像机坐标系以相机的光心,以光轴为z轴建立的三维直角坐标系,其x轴和y轴与图像的x,y轴平行。
对每个相机以人为单位的空间射线进行匹配,给相机编号为1,2,3,匹配方法,并给每个相机的人进行分配id,匹配方法是求局部最优解,只求1号相机与2号相机匹配,2号与3号相机匹配,最后求得人员目标。匹配算法原理如下(以相机1和2匹配为说明):
1.求相机1中每个人与相机2中每个人的空间直线间的距离,这样相机1中每个人与相机2中的所有人都有一个对应的距离,将距离作为损失值,对距离太大的损失进行惩罚。
这里描述的匹配是指以人为单位的空间距离匹配,求每个人的所有点与其他人的所有点的空间直线距离最近作为匹配的结果。将人的点通过相机内外参映射成空间的射线,具体操作为:假设图像中的一点p(u,v),则转换到相机坐标系公式为:
其中(fx,fy.cx,cy)为相机标定得到的内参,z为某个大于0的数值。则得到相机坐标系下该点坐标pm(x,y,z),相机坐标系原点为pn(0,0,0),将pm和pn转为世界坐标系的点,通过以下公式求解:
pw=[r|t]-1*pc;
其中pw为世界坐标系的点坐标,pc为摄像机坐标系坐标点,r和t为相机标定得到的外参。
根据此方法求得每个相机中每个人的空间直线,然后以人为单位求空间两两直线的距离,并对距离进行累加,作为损失值。对于损失值太大的,我们需要进行惩罚,损失值越大代表在不同相机中此两人不是同一个目标的可能性越大,因此在损失值大于50cm时,则应该对该两人的匹配作惩罚,即将它们的损失值扩大1倍。
2.如果在相机1中的某个人,记为p1,与相机2中某几个人损失值都比较小,假设相机2中有两人的损失值与p1较小,记为p2,p3,为了提升算法的鲁棒性,增加额外的处理.处理方法描述:假设p1与p2的所有空间直线距离之和为loss12,p1与p3的所有点空间直线距离之和为loss13,假设已知人的每个关节点的高度,根据相机内外参可以求得每个高度下对应的二维坐标(xc,yc)位置的世界坐标位置(x_w,y_w,z_w),,并计算这些点的三维坐标平均值,记为(x,y,z),以(x,y)为中心做一个高斯权重分布,求出p1和p2与该分布的得分,取p1和p2分布得分之和的平均值作为第二次p1与p2的损失值计算结果,记录为loss12_1,同理求p1和p3与该高斯分布的得分.则p1与p2的最终损失值用公式表示为:
loss=a*loss12+b*loss12_1,其中a=0.75,b=0.25;
其中,高斯分布分公式如下:
其中ux,uy为高斯函数原点。计算得分的时候以人为单位将人的将每个点的(x,y)值带入公式,求得每个点的高斯分布概率密度,然后求此人所有点的高斯分布概率密度之和,记为sum,再用每个点的概率密度除以sum,得到该人每个点的高斯分布得分,记该人一个点的高斯分布得分为pscore。然后计算该人的所有点的空间坐标(xp,yp,zp)与上述的根据人的高度估算出对应点的空间坐标(x_w,y_w,z_w)取x和y轴方向进行求欧式距离作为真实点与估算点的差距,记为dist,则该点最终的距离为:d=dist*pscore。将所以点都通过上述方法计算,最终相加得到该人的高斯分布下距离损失。
3.将loss损失值作为参数,使用匈牙利最大匹配算法进行预测,得到匹配的结果,匹配得到的是匹配的人对应的id号对。id其实就是给人分配一个标识符,以区别于其他人。
4.对2相机与3相机做同样的处理,得到匹配的结果。
最后,对1和2相机以及2和3相机的匹配结果进行融合。匹配融合举例如下:假设相机1画面中共有2人,id号分别为1,2,相机2中画面人数也为2人,id号分别为10,20,相机3画面中人数也为2人,id号为100,200,假设匹配后,相机1中的id号为1的人与相机2中id号为20的人匹配,相机2中id号为20的人与相机3中的id号为100的人匹配,则id为1,20,100的标号为同一个人。剩余id为2,10,200的人,如果他们id2与id10匹配,并且id10与id200匹配,则他们属于同一个人,如果id2与id10匹配,但是id10与id200不匹配则,说明2与10是同一个人,而id200作为相机3中的单独另外一个人处理。
s4,匹配完成后,根据每个目标人物在世界坐标系中的位置,分别计算所有点的空间平均坐标,将所述空间平均坐标作为跟踪点,通过跟踪方法进行跟踪目标,并将得到的匹配后的目标人物进行显示。在本实施例中,所述跟踪方法为欧式距离跟踪方法。
在本实施例中,所述将得到的匹配后的目标人物进行显示的步骤,具体包括:s41,设置显示的模型矩阵、投影矩阵和视口矩阵;s42,将空间平均坐标以及检测的人体骨架点作为对应点进行连线连接;s43,对跟踪点进行设置id,以显示跟踪点位置;s44,通过对所述跟踪点进行交互操作,以实现从不同角度观察目标人物。
在本实施例中,所述交互操作包括旋转、缩放或者平移。
具体地,匹配完成后,根据每个人在世界坐标系中的位置,分别计算所有点的空间平均坐标,记为(xu,yu,zu),将该点作为跟踪点,使用基于欧式距离跟踪的方法进行跟踪目标。将得到的匹配后的人的空间点使用opengl显示。显示步骤如下:(1)设置好opengl显示的模型矩阵和投影矩阵以及视口矩阵;(2)将空间的点坐标(x,y,z)根据检测的人体关键点对应点连线进行连接起来,使用的函数为glbegin(gl_lines)和glend(),(3)使用glrasterpos3f设置跟踪id的显示位置,使用glutbitmapcharacter函数显示人员跟踪的id;(4)提供简单交互功能,使用glrotatef旋转,使用glscalef缩放,使用gltranslatef平移,从而实现从不同角度观察物体。
本发明主改进传统算法中目标提取受各种因素引起的提取效果不佳的技术问题,同时改进使用传统特征融合的算法进行匹配效果不好的问题;使用深度学习与匹配算法相结合的思想来完成多相机的目标定位与跟踪算法,使得算法更加鲁棒和准确。本发明结合深度学习的人体姿态检测,将检测到的人体姿态点根据相机的内参映射到空间上得到点对应的射线,使用空间两条直线最近距离得到的值作为代价矩阵,送到匈牙利匹配算法得到匹配结果,在对结果进行定位跟踪.使用深度学习姿态检测的方法可以有效抗光照变化,抗抖动,抗背景扰动,抗阴影,抗颜色相似等,目标检测提取大大优于传统方法检测,同时使用使用空间直线距离作为代价矩阵,用匈牙利算法进行最大二分匹配,结果优于传统的特征提取融合方法。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步的详细说明,应当理解,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围。特别指出,对于本领域技术人员来说,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。