多目相机系统的最优视角选择方法和三维人体骨骼检测方法与流程

文档序号:19933285发布日期:2020-02-14 22:16阅读:593来源:国知局
多目相机系统的最优视角选择方法和三维人体骨骼检测方法与流程

本发明涉及三维图形技术领域,具体地说是一种多目相机系统的最优视角选择方法和三维人体骨骼检测方法。



背景技术:

在三维重建领域,常用的输入设备为单目相机、单目深度相机、双目相机和多目相机系统。由于拍摄的物体可能存在遮挡,尤其是拍摄人体时人体四肢可能出现自遮挡,单目(深度)相机受限于视角范围往往不能实施有效的骨骼识别,而双目相机也无法覆盖全部的视角,因此多目相机系统最适合这一任务。

但是,多目相机系统的相机数量、相机位置都是需要考虑的问题。理论上来说相机越多,覆盖的视角更多,效果应该更好。但是相机越多,越容易因为相机的标定误差造成更大的错误。目前,传统的方法是利用随机抽样一致性(randomsampleconsensus)算法排除异常点然后再做三角化(triangulation),但这个方法没有考虑到相机的空间位置信息,因此效果并不好。



技术实现要素:

本发明为解决现有的问题,旨在提供一种多目相机系统的最优视角选择方法和三维人体骨骼检测方法。

为了达到上述目的,本发明采用的技术方案提供一种三维人体骨骼检测中多目相机系统的最优视角选择方法,多目相机系统获得二维关键点,每个相机视角vi对应设关键点检测di和一个置信度si;置信度si为关键点的0、1标记值,关键点在该相机视角vi中不可见则为0;可见则为1;

根据置信度si建立初始的最优相机集合作为初始化,并将置信度si大于等于阈值γ的关键点对应的相机视角集合作为初始最优视角组合。

其中,阈值γ∈[0.5,0.9]。

其中,将置信度si为0的相机视角抛弃;并选取与最优视角组合的平均距离大的相机。

其中,相机视角设为节点,相连成边,并构成图并通过如下函数给节点标记0、1值:ei,j:=eu(vi→li)+λeb(vi→li,vj→lj);其中v表示相机集合,ε表示连接关系集合。

其中,其中eu是相似性能量函数,用来衡量将标记li给相机vi的代价,公式如下:

其中i,j∈1,2,...,n。

其中,二元项eb是对选出的相机位置及视角方向的一个约束,定义如下:

eb(vi,vj)=d(ci,cj)+θ(ci,cj)

d(ci,cj)是相机i和相机j之间的欧式距离,θ(ci,cj)是两个相机的视角方向(lookatdirection)的夹角归一化后的值。

本发明还提供一种三维人体骨骼检测方法:

步骤一,数据采集,即利用多目相机系统采集若干人体图片,

步骤二,获得人体图片的二维关键点及对应的置信度;

步骤三,根据置信度和相机空间信息建立视角图,依据上述的最优视角选择方法选择出最优相机视角;

步骤四,根据选出的最佳视角组合做二维点到三维的三角化与集束调整,最终生成三维骨骼点。

其中,所述多目相机系统包括穹幕,所述穹幕内设有72个阵列分布的相机,且相机视角均指向穹幕中心。

步骤二中,通过深度神经网络openpose获得每帧图像上的人体二维关键点,即从每帧图像中识别出人体的二维骨骼点,包括身体上25个点和手上21个点。步骤四中,给定每个相机vi下都可见的一个二维骨骼点及相机投影矩阵列出如下公式:

axi=0

xi代表需要求的三维点位置。

步骤四中,接着利用集束调整来进一步优化结果,集束调整公式为:

给定最优视角集合下的图像v1,v2,...,vn,xij表示网络在vi上检测出的序号j的骨骼点,sij为网络对xij的置信度,pvi表示vi的投影矩阵。

和现有技术相比,本发明能够简便快捷地从多目相机系统中选择出最佳的视角组合做三角化,从而得到更加精确的三维人体骨骼;克服了目前多目相机系统因为相机过多导致的误差问题,在传统算法的基础上引入了相机的空间位置信息,提高了视角选择的鲁棒性与准确性。

附图说明

图1为多目相机系统的结构示意图;

图2a为openpose检测人体二维骨骼点的示意图;

图2b为用全部视角做三角化后与点云匹配后得到的结果的示意图;

图2c为经过视角选择后做三角化与点云匹配的结果的示意图。

具体实施方式

参见图1至图2c,图1展示的是本发明的一个实施例,是一种三维人体骨骼检测方法,具体阐述如下。

步骤一,数据采集。参见图1,本发明实施例采用了一个直径8米,高5米的穹幕(dome)多相机系统,其中72个相机分布在穹幕内且相机均指向穹幕中心,具体相机分布位置如图1所示。图1中,每个白色相机图标表示相机的三维位置,半透明矩形表示相机的像平面,本实施例中所采用的相机分辨率均在2000×2000以上。本实施例还使用一个棋盘格纹理的人体模型,利用传统算法对这个多相机系统进行了标定。

在数据采集过程中,采集对象在穹幕(dome)中心做自由动作,相机以30帧每秒的帧率采集动态视频,接下来本实施例对动态视频的每一帧做单独操作。

步骤二,人体二维关键点获取。本发明利用现有的深度神经网络openpose获得每帧的72个图像上的人体二维关键点。openpose是一种人体姿态估计算法,基于卷积神经网络和监督学习并以caffe为框架写成的开源库,可以实现人的面部表情、躯干和四肢甚至手指的跟踪,该算法基于深度学习从大量的数据中学习出了一个人体姿态估计模型。openpose不仅适用于单人也适用于多人,同时具有较好的鲁棒性。该模型能够从单张图像中识别出人体的二维骨骼点,包括身体上25个点和手上21个点,此外openpose还能够对识别的结果提供一个0到1的浮点数表示该二维骨骼点的置信度。参见图2a,图中的线为关键点连线。

步骤三,建立视角图(viewgraph),并采用本发明的最优视角选择方法。在得到人体二维关键点之后,现有技术通常是将所有72张图片中关键点位置和相机参数一起做三角化(triangulation)得到三维关键点。但实际操作中发现有些图片的检测结果非常差,会对最后的三维结果产生影响。因此,本发明中增加图片视角的选择这一步骤,图片视角选择的目的是排除检测错误的视角,并且保证选择出来的视角能够使得三角化后三维点更加准确。

本实施例将这个最佳视角选择的问题定义为一个0、1标记(binarylabelling)问题。即给定现有的相机集合v={v1,v2,...vn},每个相机视角vi都对应一个关键点检测di和一个置信度si。

其中,置信度表示当前检测的可信程度,数值越高表示网络对于检测的结果越有信心,也就表示检测结果越准确。当该关键点在图中不可见(图片只拍了半身)或者由于遮挡没有被检测出来时,置信度为0。本实施例可以根据置信度建立一个初始的最优相机集合作为初始化。

本实施例将置信度大于等于阈值γ的关键点对应的相机视角集合作为初始最优视角组合。阈值γ的选择一般在0.5到0.9之间,具体可以根据选择出来的相机个数进行调整,保证最优视角组合中相机个数至少占全部相机个数的10%以上。对于置信度等于0的关键点对应的相机视角,本实施例将其作为初始不选择的视角组合。

接下来,本实施例将每个相机视角看作一个节点(node),将节点两两相连作为边(edge),而点集和边集可以构成一个图(graph)其中v表示相机集合,ε表示连接关系集合。本实施例通过最小化一个能量函数,来给每个节点一个0、1标记li∈{选择(=1),抛弃(=0)}。本实施例为这个能量函数分别定义了一元项(unaryterm)和二元项(binaryterm)。

ei,j:=eu(vi→li)+λeb(vi→li,vj→lj)

一元项eu是相似性能量(likelihoodenergy)函数,用来衡量将标记li给相机vi的代价,公式如下:

其中i,j∈1,2,...,n。

根据上述公式,本实施例将置信度为0的相机视角强制抛弃,即选择标记li=1的能量(eu(vi=1)=∞)为无穷大,而选择标记li=0的能量(eu(vi=0)=0)为0。对于置信度大于等于γ的点强制选择,同理选择标记li=1的能量(eu(vi=1)=0)为0,而选择标记li=0的能量(eu(vi=0)=∞)为无穷大。

公式中的是视角vi到初始最优视角组合的平均距离,是视角vi到初始不选择的视角组合的平均距离。第三行公式的意思是,对于置信度大于0且小于γ的点,本实施例选择的依据是相机到已知视角集合的距离。距离最优视角组合的平均距离越大,就越大,相应的根据公式选择该点的能量就越小。同理距离初始不选择的视角组合的平均距离越大,就越大,根据公式标记该点为0的能量就越大。这两个公式意味着,本实施例倾向于选择与最优视角组合的平均距离大的相机点,这样的相机组合位置更加分散,能够覆盖整个场景。

二元项eb是对选出的相机位置及视角方向的一个约束,具体定义如下:

eb(vi,vj)=d(ci,cj)+θ(ci,cj)

其中d(ci,cj)是相机i和相机j之间的欧式距离,θ(ci,cj)是两个相机的视角方向(lookatdirection)的夹角归一化后的值。本发明中,本实施例将二元项的权重λ设置为0.1。两个相机距离小,d(ci,cj)就越小,相机视角方向越相近,θ(ci,cj)就越小。也就是说,距离近、视角相似的一对相机,他们的eb(vi,vj)会越小。那么在图割算法中,他们就越容易被分成不同的标记。也就是说二元项保证了距离近、视角相似的相机被赋予不同的标记,那么本实施例根据二元项的约束,本实施例选出来的相机可以看到更多不同的角度,也就能够获取更多的信息。

本实施例用图割算法(graphcut)最小化能量函数ei,j来求解上述问题,最终本实施例就能得到一个相机集合满足关键点检测置信度高、相机距离远且视角不相似。满足这些条件的相机集合在三角化(triangulation)时就能够得到更加准确的结果。

步骤四,三维骨骼点生成。根据以上的算法,本实施例对每一个关键点都建立视角图(viewgraph),选出最优视角集合,然后运用三角化(triangulation)和集束调整(bundleadjustment)算法恢复出较为精确的人体三维骨骼点。三角化使多目相机恢复三维的手段如下:给定每个相机vi下都可见的一个二维骨骼点及相机投影矩阵本实施例可以列出如下公式,其中xi代表需要求的三维点位置:

axi=0

求解这个线性方程组在就可以得到该关键点的三维位置xi。通过对每一个关键点做三角化,本实施例就可以得到一个完整的三维骨骼,其中包括身体25个点以及每只手上21个点。接下来本实施例还利用集束调整来进一步优化结果,目的就是为了利用上openpose的置信度,使得结果更加准确。

集束调整公式可表达为:

给定最优视角集合下的图像v1,v2,...,vn,xij表示网络在vi上检测出的序号j的骨骼点,sij为网络对xij的置信度,pvi表示vi的投影矩阵。本实施例算法优化的目标是使所有67个(身体25个,每只手21个)三维骨骼点x1,x2,...,x67在经过每个视角的重投影变换pvi后,与网络的二维骨骼点xij尽可能接近。

通过上述的三角化和集束调整,本实施例最终能够得到一组非常准确的人体三维骨骼点。

对动态视频的每一帧都做上述操作,本实施例就能得到一组准确的三维动态骨骼。

上面结合附图及实施例描述了本发明的实施方式,实施例给出的并不构成对本发明的限制,本领域内熟练的技术人员可依据需要做出调整,在所附权利要求的范围内做出各种变形或修改均在保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1