Kinect

2024-10-01

Kinect(共9篇)

Kinect 篇1

物体识别一直是机器人学科,计算机视觉和人机交互领域里的一个基础性工作。物体识别按表示方式主要可以分成两大类:基于部件模型的物体识别[3,4]和基于外观的物体识别[5,6]。从2007年开始,基于部件模型的物体识别技术日趋主流。

尽管基于部件模型的物体识别系统取得了很大的成功,但是绝大多数部件模型都有两个前提:一是的模型结构特征是事先指定的;二是训练样本中需要对物体的位置做出标记,并且告知物体的类型。虽然这种有监督的学习方式也是人类认知世界的一个过程,但是人类同样也可通过无监督学习的方式来认知这个世界。

随着2010年Kinect出现,获取场景的深度信息成为可能,物体和场景的分离变得更加容易。新技术的出现,给物体识别技术带来新的方法和视角。我们设计的物体识别系统就基于场景的2.5D信息。

我们设计了一个全新的无监督,增量式物体识别框架,利用场景中的点云信息来识别物体。它可被用于机器人中,用于探索未知的环境,模仿人类认识现实环境。

我们把场景中物体分为支撑体和被支撑体,比如桌面和桌面上的物体。主要步骤包括以下几个:

1)物体提取。首先我们用RANSAC提取场景平面,删除场景平面中的支持平面,再用空间欧式距离聚类的方法,分割中出被支撑物体。

2)对每个被支撑物体用基于基元(三维球体,圆柱体,平面)的多层次分割方法建立物体模型。

3)利用前面的分割结果构建物体的图模型[2]。

4)用度量多维标度法把该图模型转化到二维向量空间中,获取每个物体的向量模型。

5)用扩展陆地移动距离算法估计物体的向量模型间的距离,以此作为物体间的相识度。

1 物体提取

我们可以利用深度信息来把物体分成支撑体如桌面和挂着很多画的墙壁,被支撑体比如桌面上得物体和墙上的画。

我们用Kinect摄像头获取数据,并通过OpenNI接口得到数据的点云信息。然后用随机样本一致性算法从场景中提取所有的平面,对任意平面,用空洞的数量(因被支撑物和平面的分离产生)来判定该平面是否是支撑面。

在支撑物被抽取后,会造成被支撑物在空间上的分离。这时我们可以用基于空间欧式距离的聚类方法,把和支撑面连接的每个物体提取出来,为进一步的处理做准备。图2中绿色部分为支撑平面,红色部分为提取到的在空间上分离的物体。

2 物体模型构建

2.1 物体分割

基于部件的物体结构分解和人类看待物体的方式有很多共同之处。我们采用的分割方法基于Marco的层次几何基元拟合分割,分别用了三种基元:平面,球体,圆柱体。我们通过设置最终的分割部件的数目β来控制分割结果。

2.2 图模型构建

对于任意的物体x,我们先用一个无向图来描述一个物体。x首先被逐层的分割成不同的部件。然后用[2]中的图结构来记录模型的拓扑结构和几何特征。图中的边表示部件间的父子关系或则兄弟关系。和节点相关的属性包括:该点和父节点的相对距离和方向,该节点的几何形状信息如外形类别,大小比例等。

由EMD的距离公式可知,权重接近的点之间如果相对距离越小,计算出来的EMD距离就越小。由于扩展EMD只对点集进行整体的移动,不会改变点集内部的相对位置。为了保证来自不同点集的权重相似的点尽可能的对齐,要求图模型到点集的嵌入过程要产生稳定的相对位置。否则EMD计算出来的距离不能稳定和真实的反映物体间的相似度。考虑如下两个图结构:

当它们被转化到向量空间后,一个好的对齐会是R-r,A-a,B-b,C-c,D-d。如果我们设置上述图中的边权重为常数1,那么在上述图在映射到向量空间后,可能有错位对齐。证明:假设图模型(b),映射到向量空间中的点集V,点集的数量|V|=n+1,对于特定点集中的某个点x,它的相对距离向量dx=(dxy1,...,dxyn)中的每个元素表示该点到集合V上其它点yi的距离,其中(1≤i≤n)。如果存在某个点z,它的相对距离向量为dz=(dzy1,...,dzyn),且dxyk=dzuk,(1≤k≤n)。那么dx=dz,意味着这两个点在向量空间中的位置是可交换的,这是由图嵌入(见4.1)过程决定的。所以对齐的时候就可能出现B-c,C-b。因为c和b在向量空间中的相对距离向量相同。而这显然不是最佳的对齐方式。为了保证点集内部点间相对位置的更加稳定,对于图模型中的任意父节点p,我们让父子边(部件的层次分割)的权重由1开始随子节点重量(其属性和基点属性的距离)的递增方向递增,增量为1。兄弟边(部件间的相邻关系)的权重为常量1。此外我们保证兄弟节点的重量不同。这样避免了同一个图中存在两个不同节点在嵌入到向量空间时由于位置可交换导致内部结构不稳定,从而可能发生错位对齐。

3 图嵌入和匹配

3.1 图嵌入到向量空间

图嵌入是一种图匹配的有效手段。它能把图信息转化成向量空间上的点集合,其中每个点对应于图中的一个节点,点之间的欧式距离对应于图中相应图节点间的距离,这里我们用最短路径表示图节点间的距离。考虑一个物体的图模型G有节点集{vij|i≤j≤n},那么它的差异矩阵为{Dij=sh ort_pa th(vi,vj)|1≤i,j≤n}。我们用Johnsom算法来计算节点对间的最短距离,其时间复杂度为O(2V log V+VE)。接着我们用度量多维标度法来把图嵌入到一个二维的向量空间中。对于任意两个图节点vi和vj间的最短路径dij,其在向量空间中的对应节点间的欧式距离为f(δij),度量多维标度法保证Fs最小。

3.2 点集匹配

当图被嵌入到一个向量空间以后,图匹配问题就转化为向量空间中点集合的匹配问题。

陆地移动距离(EMD)源于运输问题,在图像处理中被广泛的用于解决这类带有权重的点集合间的匹配问题。两个点集间的移动距离越小,表示它们之间越相似。假设P={(p1,wp1),...,(pm,wpm)}为供应者,接收者Q={(q1,wq1),...,(qn,wqn)},其中m>n。pi和qi表示点在向量空间中的坐标,wpi和wqi表示点的重量,这里我们用该点特征向量和基点向量的距离来表示,我们用根节点对应的特征向量最为基点向量。D=[dij]为距离矩阵,dij表示pi到qj的距离。我们要找出流F=[fij],使运输总代价EMD(P,Q)最小。这里fij表示pi到qj的流量。

距离公式为:

并且满足以下约束:

1)表示只能由供应者流向消费者。2)表示pi的流出量不能超过该点的重量。3)qj的接受量不能超过其容量限制。4)总的流量为两堆土中的最小值。

前面描述的EMD要求两个向量集合在空间上对齐。为了解决这个问题Cohen和Guibas[11]扩展了EMD算法,动态的在匹配的过程中对点集进行整体移动调整,从而找出最佳的匹配结果,我们称此为扩展EMD算法。Cohen和Guibas用迭代的方式计算陆地移动距离的最小值。首先从一个最初的位置开始,扩展EMD计算最优的流向Fk,在此流向的前提下计算一个更优化的空间坐标转化矩阵Gk,应用此转化于其中一个点集,使其整体发生移动或旋转,进而使EMD距离减小。在Gk的前提下,计算出最优的Fk+1,如此迭代,直到EMD值达到稳定值。图5是玩具狮子和老虎在向量空间中的扩展EMD匹配结果,我们可以看到两个点集在空间位置上有比较好的对齐结果,在此基础上计算出来的陆地移动距离能更好的体现两个点集间的距离,即图像间的相似度。

5 实验结果

我们采集了每个物体20个视角的2.5D照片。设置分割结果部件参数β=6。考虑两个物体A和B间的距离,对于A的任何一个视角的2.5D照片,计算出它与B的所有视角照片间的距离,其中最小的那个为A到B的单视角最小距离。A和B所有视角最小距离的和,以灰度度量的形式表示为图6灰度表中的格子。图6中任意一个格子对应于物体间的所有视角最小距离和。灰度越深的格子表示对应的两个物体越相似,白色的相反。为了了解物体视角对识别的影响,我们选择狮子奥特曼和狮子分别在在0∘,30∘,60∘度视角下的2.5D照片,来比较它们间相似度。由图7可看出,同类物体间视角差别越小,相似度越高。非同类物体间的视角差别对识别的影响比较不稳定,这可能是因为从Kinect获取的数据有误差,不能准确反映物体的几何模型数据。

6 结论

当今2D图像识别技术的识别率不高的很大一个原因是2D图片无法提供足够的背景和前景的信息。我们借助从Kinect获取的2.5D信息,设计了一个全新的无监督图像识别系统,该系统利用深度信息提取场景中的前景物体,然后再计算物体间的相似度。这样避免了背景信息对前景物体识别的干扰,有效的提高了识别率。该系统的缺点是假设所有的物体在空间上是分离的,这样如果有两个物体是相挨的,那么会被当做一个物体处理。从理论上说,无论是我们采用的图模型还是扩展EMD都有部分匹配的特性,对于物体的缩放,旋转也有一定的鲁棒性。如果部分匹配能取得好的效果,那么可以在一定程度上解决前面所述的不足。我们将在接下来的工作中探索的数据误差对鲁棒性和部分匹配的影响。

摘要:现有的物体识别方法大都是有监督学习,而且主要处理的是2D图像数据,由于这类数据给出的背景信息和物体信息少于2.5D场景中的信息,传统有监督的学习方法对于非特定物体的识别效果还是不尽如人意,更别说基于无监督学习的识别系统了。随着Kinect设别的出现,获取场景的2.5D信息变得很容易。设计了一个全新的基于无监督物体识别系统。首先用平面拟合和空间聚合把物体从场景中分离以后。然后用几何基元拟合分割技术把物体分割为不同部件,在此基础上构建物体的图模型,最后把图模型嵌入为向量空间上的点集合,使用扩展陆地移动距离算法计算物体间的相似度。从实验结果来看效果不错。

关键词:2.5D,物体识别,kinect,无监督,几何基元拟合,扩展陆地移动距离

参考文献

[1]Shokoufandeh A,Dickinson S,J nsson C,et al.On the representation and matching of qualitative shape at multiple scales[J].ComputerVision—ECCV 2002,2002:6-14.

[2]Dickinson S J,Pentland A P,Rosenfeld A.From volumes to views:An approach to 3-D object recognition[J].CVGIP:Image Understand ing,1992,55(2):130-154.

[3]Felzenszwalb P F,Girshick R B,McAllester D,et al.Object detection with discriminatively trained part-based models[J].Pattern Analy sis and Machine Intelligence,IEEE Transactions on,2010,32(9):1627-1645.

[4]Leonardis A,Bischof H.Dealing with occlusions in the eigenspace approach[C]//Computer Vision and Pattern Recognition,1996.Pro ceedings CVPR'96,1996 IEEE Computer Society Conference on.IEEE,1996:453-458.

[5]Turk M,Pentland A.Eigenfaces for recognition[J].Journal of cognitive neuroscience,1991,3(1):71-86.

[6]Attene M,Falcidieno B,Spagnuolo M.Hierarchical mesh segmentation based on fitting primitives[J].The Visual Computer,2006,22(3):181-193.

[7]Demirci M F,Shokoufandeh A,Keselman Y,et al.Object recognition as many-to-many feature matching[J].International Journal of Com puter Vision,2006,69(2):203-222.

[8]Cox M,Cox T.Multidimensional Scaling[M].Chapman and Hall,London,1994.

[9]Rubner Y,Tomasi C,Guibas L J.A metric for distributions with applications to image databases[C]//Computer Vision,1998.Sixth Interna tional Conference on.IEEE,1998:59-66.

[10]Rubner Y,Tomasi C,Guibas L J.The earth mover's distance as a metric for image retrieval[J].International Journal of Computer Vision,2000,40(2):99-121.

[11]Cohen S,Guibasm L.The earth mover's distance under transformation sets[C]//Computer Vision,1999.The Proceedings of the SeventhIEEE International Conference on.IEEE,1999,2:1076-1083.

[12]Fischler M A,Bolles R C.Random sample consensus:a paradigm for model fitting with applications to image analysis and automated car tography[J].Communications of the ACM,1981,24(6):381-395.

Kinect 篇2

摘要:使用Kinect采集的深度数据,进行了轴类零件三维重建算法的研究。首先借助Kinect获取深度和彩色数据,通过坐标转换将深度信息转换成三维点云数据;其次提取出感兴趣目标的点云数据,根据点云数据的噪声特点,并对其进行滤波降噪处理;然后进行点云分割获得点云集,最后对各点云集进行结构参数化分析。实验结果表明,本文算法能够精确、高效地实现轴类零件的重建。

关键词:Kinect;三维重建;三维点云;点云分割

中图分类号:TP391文献标识码:A

1引言

三维重建技术是指通过计算机数字化手段,对客观世界中的三维实体建立数学模型的过程,它是计算机视觉、人工智能、虚拟现实等前沿领域的热点和难点。随着立体视觉技术的发展,激光雷达和三维扫描仪等设备逐渐出现,常见有手持激光系统和TOF相机,手持激光系统发射激光感测距离值,需多次扫描获取数据,且通常需要搭配额外装置。TOF相机通过时间换算得到深度数据,但价格昂贵、数据计算量过大。

微软推出的Kinect[1]深度传感器采用光编码技术通过红外定位获取物体的RGBD信息,由于其拥有广泛的应用潜力而在近两年备受人们关注,许多学者利用Kinect对三维重建技术展开了深入研究。2011年微软官方驱动Kinect for Windows SDK1.7[2]中引入了Kinect Fusion[3-4]功能,在支持GPU加速的开发环境中,该技术可以对物体进行三维建模,实时性强。通过手持Kinect对物体环绕一周扫描,几秒钟后就能创建足够平滑的重建的静态场景,产生点阵云以及3D表面模型。Chatterjee[5]创建了一个基于Kinect的几何一致的三维模型系统,首先利用双边滤波器平滑深度图,采用ICP全局配准实现对视角数据的拼接,最后求解符号距离函数完成完整的三维模型。2013年,Daniela[6]提出了重建3D数字化模型的解决方案,利用Kinect获取数据,基于HIS的颜色分析算法分割数据,基于数据的形状特征与组件库里的虚拟元件比较识别3D对象,从而创建一个可靠地3D模型。在国内,刘鑫[7]等人提出了一种基于Kinect并借助GPU的全自动快速物体重建方法。叶日藏[8]利用Kinect对数据获取、预处理、多视角配准、点云融合进行了理论分析,完成了对日常生活物品的数字化重建。然而,由于Kinect本身获取数据的精度不高,噪声大,质量低,其数据的不完整性和二义性往往不能满足机械类零件重建的要求。

本文通过 Kinect 深度传感器采集深度信息,并将其应用于机械轴类零件扫描重建,针对过程中出现的数据噪声问题,本文采用一种快速双边滤波器将其对二维图像处理扩展到对三维点云数据进行去噪操作。针对聚类分割不适于具有相似形状的轴类零件,点云分割误差大这一不足,本文通过计算点云数据的法向矢量及曲率,对聚类分割算法进行改进,将轴类零件点云数据分割成不同点云集,提高了算法性能并使结果更加精确。针对Kinect的精度问题,本文对分割后的各个点云集进行结构参数化分析与识别,从而重建出完整的三维模型。

2总体设计方案

本文利用Kinect深度传感器作为输入设备,对三维重建流程中的数据获取、预处理、点云分割、结构分析进行了研究及理论分析,提出了一个基于Kinect深度传感器的三维重建方案:首先,借助 Kinect 获取深度和彩色数据,通过坐标转换获得目标物体表面每个点的三维空间坐标,以此形成一个点的集合—点云。其次,根据图像内容的属性和特点,将图像分割成各个区域,并提取出感兴趣目标的点云数据。并根据深度数据的噪声特点,分析比较几种滤波算法,优化选择一种双边滤波算法对三维点云数据进行降噪平滑处理。然后,估计过滤后点云的表面法线并计算每个点云的曲率,进而实现基于法线和曲率的点云分割。最后对轴类零件的各个点云集进行结构参数化分析并显示。三维重建流程如下图:

3三维点云数据获取与预处理

3.1深度图像与彩色图像的获取

Kinect传感器通过发射红外光利用彩色和深度摄像头采集原始数据,两种数据结合生成三维数据。由于Kinect内部已对深度摄像头和彩色摄像头进行了径向畸变的矫正处理,则可以将捕捉的深度数据和彩色信息直接应用于生成三维点云数据。从深度摄像头获取的红外数据,分别代表深度图像坐标系统的 X、Y、Z 坐标,Z坐标值表示某点到镜头的深度值。图2显示由 Kinect 获取的彩色图像和原始深度图像。

由于深度摄像头和彩色摄像头在Kinect中的位置不同,两者采集数据的角度不同,得到的原始数据的坐标在水平方向存在一定的偏差。通过 OpenNI 的校正函数可修正两个相机产生的视差问题,使得目标物两种图像对齐到相同的位置,为后续的点云处理提供可靠数据。校准后的两图像视角一致,如图3所示:

通过与之前未校准的结果相比,可以发现校准后的结果周围的黑边明显比较大,同时也有一些几何上的修正(四边有稍微内凹),这是因为将深度摄像头的视角调整为彩色摄像头的视角,这样两幅图像的内容就完全一致,没有偏差。

6实验结果与分析

本文使用c++编程对聚类分割进行了改进,实现了基于法线和曲率特征的分割算法,比较两种算法的实验结果图9和图11可知,在处理具有相似特征的大数据时,聚类分割算法粗糙,分割结果误差大。本文算法通过对点云数据的法线估计与曲率计算,将轴类零件精确分割成四部分如图11(a)(b)(c)(d),本文算法在分割性能与精度上远远优于原始聚类分割算法。针对分割后的零件各点云集,本文对其分别进行结构参数分析,结果如下:

由表1结果看出,与轴类零件实际测量结果相比,本文算法得到的实验结果误差在毫米级,与实际偏差很小,尚在允许范围内,满足工业需求。至此本文将轴类零件分割成4个点云集,并识别其模型类型和参数计算,准确进行了结构分析,将最初采集的单视角、噪声大、误差大的不完整数据转化为平滑且高质量的完整的点云数据,为后续三维重建提供可靠保证的点云集。

7结论

本文利用kinect实现了轴类零件的三维重建技术。由于kinect自身技术原因,采集的三维点云数据精度低噪声大且不完整。首先利用双边滤波算法对数据进行降噪平滑处理,然后针对现有的聚类分割,提出了一种改进的分割算法。新算法分析了点云的法线和曲率特征,结合聚类思想将零件数据精确分割为4个点云集。实验表明新算法的分割性能远远优于原始聚类分割算法。最后本文对各部件进行结构参数化分析与识别,提高了数据质量和精度,从而重建出完整可靠地轴类零件。

参考文献

[1]Microsoft Kinect[EB/OL].http://www.xbox.com /en-us/kinect.

[2]Introducing Kinect for Windows[EB/OL]. (2013)[2013-8-20].http:// www.k4w.cn/.

[3]Newcombe R A,Izadi S,Hilliges O,et al. KinectFusion: Real-time dense surface mapping and tracking:Proceedings of the 2011 10th IEEE International Symposium on Mixed and Augmented Reality,2011[C].IEEE Computer Society.

[4]余涛.Kinect应用开发实战用最自然的方式与机器对话[M].北京: 机械工业出版社, 2013.

[5]Chatterjee A,Jain S,Govindu V M.A pipeline for building 3D models using depth cameras:Proceedings of the Eighth Indian Conference on Computer Vision,Graphics and Image Processing,Mumbai,India,2012[C].ACM.

[6]Daniela Alexandra,Esteves Gil Borges.3D Object Reconstruction Using Kinect[J].2013.

[7]刘鑫,许华荣,胡占义.基于GPU和Kinect的快速物体重建[J].自动化学报,2012(08);1288-1297.

[8]叶日藏.基于Kinect深度传感器的三维重建技术应用研究[D].广州:华南理工大学, 2013.

[9]TOMASIC,MANDUCHI R.Bilateral filtering for gray and color image[C]//Proc of the 6th International Conference on Computer Vision.1998:839-846.

[10]Rusu R.Semantic 3D Object Maps for Everyday Manipulation in Human Living Environments[J].KI-Kunstliche Intelligenz,2010,24(4):345-348.

Kinect 篇3

随着立体显示技术的发展,多视点成像技术已经受到了来自各方面不同领域( 例如3DTV,三维重建) 越来越多的关注。一般的多视点成像技术主要分为两类: 第一种是直接使用多相机阵列; 另一种使用单路的深度相机配合单路彩色相机的方法合成多个虚拟视点。

前者容易得到高质量的多视点成像,但往往由于价格昂贵,系统复杂操作不易,数据传输量大等各种原因,其实际应用往往受到限制[1,2]。对比起来,第二种基于DIBR的技术更为轻便简单易用。许多基于该方法的技术是使用TOF深度相机结合一个彩色相机[3,4]。然而TOF相机价格昂贵,其获取的深度图分辨率低,比如,176 × 144 或者200 × 200,这往往限制了它在这方面的应用。Kinect是微软研发的能同时获取场景深度和彩色信息的相机,主要用于人机交互和3D场景重建。Kinect的价格便宜,图像分辨率高,但由于Kinect的成像机理,从Kinect获取的深度图质量差: 图中包含了许多噪声和信息缺失,尤其在场景边缘处出现大面积的像素点丢失。当前存在解决该问题的方法主要是基于图像修复技术。

图像修复是数字图像处理领域的一个关键技术,其通常作为图像分割,特征提取等其他算法的预处理。目前对于Kinect该类纹理信息不丰富的深度图,主要存在空域和时域两种修复方法。Matyunin[5]通过连续帧图像时域信息相互填充的方法对Kinect的深度图进行帧间填补得到无空洞的深度图; Lai[6]迭代使用中值滤波实现空域填补,但在大面积的空洞处会遗留模糊。使用空域修复的方法较为经典的方法之一是Criminisi[7]的Exemlar - Based方法。其充分利用了图像内的结构信息和不同平面的纹理信息。

由于Kinect的彩色图纹理信息较差,图像中会存在伪彩色,尤其在色彩交错的纹理复杂区。再加上Kinect深度图边缘存在波动,同时随着距离,深度值精度会下降等问题,传统的图像修复方法不管是在前期深度图修复还是后期视点合成的彩色图修复问题都很难得到理想效果。

1 深度图修复

Kinect深度图的信息丢失可以分为三种: 第一种分布在前后景交接的边缘处,该种缺失信息稳定,面积大; 第二种分布在透明或者光滑的平面上; 第三种属于随机噪声分布在背景中。后两种所占的比率往往远低于第一种。大部分深度缺失跨越了深度出现跳变的领域。我们方法是基于彩色边缘引导的从外而内的空洞收缩方法。

Kinect的边缘是不稳定的,部分深度信息错误越界,原来属于背景的像素可能会被前景像素填充,而原来属于背景的像素可能会被前景填充。如果直接使用原始的深度图则丢失点的预测会受到错误像素影响。对此,对深度图的空洞进行了一个形态学的球形膨胀,使得空洞能够完整覆盖其附近错误的边缘,如图1( c) 。

对于每个不同的空洞,采取Telea[8]中FMM方法从空洞边缘开始收集丢失的像素点( 在这里,Ω表示空洞丢失处, 表示空洞的边缘) :

公式中的解T就是 Ω 内像素点至 的距离,FMM能够保证 上的像素点被处理的顺序是由外至里的一个收缩顺序,也就是 上的点是最先被填补。

令D为处理中的深度图,I为对应的彩色图,E为从I中提取的边缘信息,在点p的深度值表示为Dp,在p点的彩色值表示为Ip。

这里引用的Fast Marching Method来收集Ω 上的点并存于堆栈中。在收集点的过程中,使用一个标记数组f,将其初始化为0,如果找到一个点p处于深度不连续处,将f( p) 置1,在空洞收缩的过程中若再次搜索至该点,将该点放入堆栈中进行插值。如果点E( p) 值为0,则直接使用公式对该点进行插值,如果E( p) 值为1,则将f( p) 值置1,在第二次搜索至该点的时候判断f( p) 值为1 同时E( p) 值为1,则使用公式填补。

上述方法保证了空洞的填补是向边界收缩的,而不是顺序随机地填补。如此保证了填补的准确性,前景信息不会出现在背景,反之亦然。当空洞填补收缩第一次遇到边缘处的时候会停止该方向的修复,取而代之是反方向的收缩填补。图1 中的( g) - ( i) 为详细图示。

对栈中丢失点填补的方法采用三边滤波的方法。G( .)为高斯核,W为等于所有权重和的正交化因子。Gλ为空域距离项,Gξ为深度差项,G为彩色差别项。

整个修复过程如图1 所示。当边缘像素点被填补过后,重复以上方法继续进行填补修复。直至没有空洞存在算法结束。

(a)和(b)表示原始彩色图和深度图;(d)为使用canny算子求出的边缘图;(c)为空洞膨胀后的深度图;(e)为(c)和(d)叠加图;(g)-(i)为空洞填补

2 视差图生成以及预处理

在得到修复后的深度图Dr后,根据公式得到视差图R。b为Kinect的IR发射器和接收器的距离( 基线距离) ,F为Kinect的焦距,b的值参考官方数据为7. 5cm。F通过对Kinect标定为582,此数值根据不同的设备上下波动小段范围。

根据DIBR,使用公式( 6) ( fact表示不同尺度大小的图的量化因子,默认为1) 通过平移原始彩色图像每一点像素,平移距离和每点的视差成比例。这里的( x,y)表示一个点具体的横纵坐标值由此得到原始的N个带着量化噪声和背景信息丢失的虚拟视点。i表示第几个虚拟视点。

对于当前生成的虚拟视点,有两种彩色信息缺失。第一种属于像素点平移时产生的量化误差,该种缺失面积小,分布零散。第二种属于视差带来的,这种缺失是因为在原图中就看不见的背景,在平移后显示了出来,该种缺失面积大,主要分布在前景和背景交临的地方。对于前者,采用简单而有效的填补方法,检测到其位置后,通过使用周围像素进行均值插值填补。

3 彩色图修复

对于背景存在的背景缺失Criminisi[7],提供了一种基于图像纹理结构有效的图像修复方法。该算法沿着彩色图像中的空洞边缘计算每一块的优先级,优先级的计算是通过数据项C( p) 和自信项D( p) 计算得到的。使用基于Crimini方法修改的方法,C( p)表示块的自信度,如果块所拥有的原始像素越多,该值越大。D( p) 表示块的计算优先级,位于边缘处的块的D( p)大于位于平滑区域处的块的D( p) 值。R( p) 表示深度限制项,在深度跳变的地方R( p) 值为0,在深度平滑处,和目标块的平均深度值差的小的块R( p)值大。深度限制项的计算取决于虚拟视点图对应的深度。

在以下公式实行之前,需要得到虚拟视点深度图Ddr。同样的,通过公式( 6) 计算出对应的深度图( 将公式中的I换成D) ,只不过对于深度图中存在的背景空缺信息,使用最近邻像素点进行填补,左视点中存在的空缺使用背景中的像素从右向左填补,右视点中存在的空缺使用背景像素从左往右填补。在得到虚拟视点深度图后,如果块处于深度跳变的区域,其深度限制项的值被赋为0,继而整个块的优先级都为0,根据上述的赋值,在彩色图中处于背景和前景交界的地方的块是最后填补的,如此确定了虚拟视点中的修复顺序,从背景向前景填补。

三个项的计算公式如下( Ψp表示点p所在的块,|Ψp|是表示块的大小,Φ 表示无空洞区域,α 表示正交化因子,⊥表示正交化算子,np表示垂直于Ω 的单位向量) :

R( p) 项决定了不同深度层面的块的优先级。|Zp|表示块中所有的深度值的和, 表示块的平均值,和 Ψp处于同一深度层次的块的优先级更高。下面的公式判断点是否处于深度跳变的区域( θ 为度量单位,ε∈[10,30],具体大小根据深度图决定) :

通过公式计算出块的优先级后P( p),找到P( p) 最大的以p为中心的块进行优先填补。填补方法是在一个W × W的区域内搜索相似块,利用公式判断和目标块在深度和彩色域差别最小的块,找到之后使用块整体进行填补目标块的丢失信息。

分别为彩色图和深度图中对块与块间做SSD计算的值。η 和 β 分别为彩色通道和深度通道的加权因子。填补过后,目标块的自信项更新为:

当虚拟视点背景中不在有空洞缺失,算法结束。

4 实验结果

为了验证本文深度恢复方法的有效性和虚拟视点成像质量,在该部分分两个实验进行对比验证。第一个实验是对比深度恢复的效果,第二个实验是对比虚拟视点绘制效果。所有实验是基于Open NI开发环境C ++ 实现,硬件设施: Intel 2. 8GHz CPU和4GB RAM。

深度对比实验结果如图2 所示,使用了三种深度修复的方法和本文方法进行对比,该三种算法分别为: 双边滤波,中值滤波,FMM。实验过程中,每个算法的各个参数固定。实验的三组原始数据皆从Kinect中获取。从图中看出,该方法保边效果优秀,边缘不会出现抖动,也不会出现填补越界。

(a)表示原始的深度图,位于深度图角上的表示对应的彩色图。(b)表示本文深度恢复的方法修复的结果;(c)-(e)分别表示Bilateral Filter,Median Filter,Telea[8]三种深度修复的方法。

虚拟视点恢复实验结果如图3,两组为Kinect原始数据,一组为标准测试序列。对比的4 个方法分别为: Bertlmio[9],Exemplar[7],Local Optimisation[10],Telea[8]。从实验结果中观察得到,本文方法有效地分割了前后景,同时将背景的纹理结构较为准确修复。而Kinect的伪彩色对其他4 种方法影响较大。

5 结束语

本文提供了一种基于微软Kinect的多视点成像的计算方法。原始深度图的质量通过边缘引导的收缩插值算法得到极大改善。生成虚拟多视点的纹理由块优先级和深度导图得到修复。实验结果展示我们的深度恢复方法和虚拟视点成像质量都比以往类似的方法要优秀,所得到的三维成像效果显著。

一共三组数据,第一行和第二行为Kinect采集数据,第三行为标准测试序列数据。第一列中的每个小图表示生成的虚拟视点。每一列表示了不同算法的修复效果。第一列表示本文的算法效果,第二至第五列分别表示以下算法效果:Bertlmio,Exemplar,Local Optimisation,Telea.

该方法无论在虚拟视点修复还是深度图的插值过程中都利用彩色图和深度图,这也是Kinect优于其他成像系统的一个要点。在以后的研究中,除思考如何提高算法的效率外,还会继续致力如何提高深度图恢复质量进行高质量的视点绘制。

摘要:传统的多视点生成方法是基于多相机阵列系统的关键技术。现提出了基于Kinect的多视点成像计算方法。首先对Kinect的深度图使用三边滤波器进行平滑,根据修复好的深度图配合彩色图,利用DIBR技术生成多个存在空缺信息的彩色视点;最后结合彩色图的纹理结构信息和深度图的背景信息对有丢失信息的彩色图进行修复。实验结果表明,文中提出的深度修复方法能够有效地修补Kinect的深度图,生成的虚拟视点图在3DTV上效果明显,立体视觉效果显著。

Kinect 篇4

关键词:机器视觉;轮廓提取;特征点;体尺测量;Kinect

中图分类号: S818文献标志码: A文章编号:1002-1302(2015)11-0495-04

收稿日期:2014-11-19

基金项目:内蒙古科技大学大学生科技创新基金(编号:2012NCL027)。

作者简介:赵建敏(1982—),男,内蒙古包头人,硕士,讲师,主要从事人机交互、模式识别研究。E-mail:zhao479059413@163.com。

通信作者:赵忠鑫,硕士研究生,主要从事机器视觉、图像处理研究。E-mail:zhao479059413@163.com。基于机器视觉的家畜体尺测量是非接触式测量手段。刘同海等利用背景减法、去除噪声算法去除背景干扰,寻找猪体体尺测点[1]。刘波等将自动阈值分割与形态学处理相结合,进行轮廓分割[2]。江杰等利用基于灰度的背景差分法提取羊体轮廓[3]。以上基于机器视觉的家畜体尺测量研究均在无干扰环境下利用背景差法或阈值分割法提取家畜轮廓。实际应用中,当背景与家畜颜色相近时,彩色图像差分结果残缺,阈值难以确定,导致无法单纯分割出目标家畜。此外,以往研究往往忽略了家畜与像平面夹角,对体尺计算造成很大误差。为解决这些问题,本研究采用Kinect传感器,将彩色、深度图像多元信息相融合,提取羊体轮廓线,保证羊体轮廓完整的同时,利用传感器深度信息建立轮廓点三维坐标,通过拟合平面对羊体与像平面夹角进行计算,进行体尺纠偏后得到更加准确的体尺数据,旨在为精确测量家畜体尺提供依据。

1轮廓提取

为克服单一镜头抗干扰能力差的问题,本研究利用Kinect传感器,采用彩色与深度图像相结合的方法提取羊体轮廓。Kinect传感器可同时采集彩色、深度图像,利用连续光(近红外光)对测量空间进行照射编码,再通过CMOS感应器得到编码后的光线,将数据传给ps1080系统级芯片SoC进行解码运算,最终得到具有深度的图像[4]。本研究利用NuiInitialize(NUI_INITIALIZE_FLAG_USES_COLOR )、NuiInitialize(NUI_INITIALIZE_FLAG_USES_DEPTH)函数对彩色、深度视频流进行初始化,采用逐帧读取视频流的方法,通过CvCapture结构体保存图像捕获的信息。CvCapture自动获取下一帧的位置,每获取一帧,这些信息立即更新,获取下一帧回复,通过截取深度、彩色数据流获得现场图像(图1)。

Kinect传感器获取的羊体彩色与深度图像如图2所示,标记羊A为目标羊,其所处环境背景复杂,提取轮廓时,单一彩色图像中背部存在颜色干扰,单一深度图像中腿部深度差不明显。为准确提取目标羊A轮廓,将彩色图像单独阈值分割后,与深度图像同时进行轮廓提取,经过去除噪声干扰,采用膨胀法得到羊体闭合轮廓线。

1.1预处理

本研究采用8邻域窗口对图像进行平滑处理[5]。滤波时,遍历原始彩色图像像素点,把其灰度值设置成8邻域中灰度值的中值。根据局部自适应阈值算法将图2-a二值化,成功地将羊A腿部色差较大部分完整分割出来。采用Canny边缘检测算子对彩色图像阈值分割后的结果及深度图像进行边缘检测,结果如图3所示。

为去除干扰,规定8邻域连通区域面积(像素点个数)小于20时为干扰。首先标记8连通区域,分别计算每个连通区域面积,若小于阈值则将其颜色更改为背景色。图4-a、图4-b 分别为彩色、深度图像轮廓提取去除干扰后的结果。

图2、图4表明:彩色图像中,羊A背部轮廓由于位于其身后羊体干扰导致缺失,彩色图像无法进行恢复,深度图像同一位置处不受干扰;深度图像中,由于蹄部与地面之间深度差距小,导致前蹄、后蹄区域轮廓损失严重,但彩色图像中此处轮廓完好。因此,借助彩色、深度图像结合的方法可以克服上述问题,准确提取目标羊体A的轮廓线。

1.2闭合轮廓线提取

图4中轮廓线处像素点灰度为255,其余部分灰度为0。在目标羊A处生成1个灰度值为200的标记点。规定与像素点a有公共边的像素为其邻位,如b1、b2、b3、b4为a邻位(图5)。

若灰度值为200的像素点a邻位存在灰度值为0的像素点,则称a为奇异点。定义奇异点的膨胀操作为将邻位中灰度值为0的位置灰度改变为200。闭合轮廓提取算法流程如图6。算法以标记点开始膨胀,在判断无奇异点的情况下,羊体A区域被灰度值为200的像素点填充,轮廓提取算法中取阈值T=200,此处阈值分割公式如下:

分割后图像被二值化(图7),再经Canny算子提取轮廓,最终得到羊体闭合轮廓。闭合轮廓线利用彩色、深度图像的各自优势,提取过程克服了单一镜头信息不足的缺点,得到了

目标羊体闭合轮廓线。

2羊体特征点提取

根据传统羊体测量方法,得知羊体体尺特征点包括臀部特征点、前后蹄点、耆点[6]。本研究采用羊体侧面轮廓线提取各特征点(图8)。

2.1臀部特征点检测

由于羊体臀部骨骼突起,造成其轮廓在一定范围内曲率最大,且臀部位置与羊的移动关系较小,曲率不会发生较大变化。背部轮廓线属于离散曲线[7],故本研究采用U弦长曲率[8]寻找臀部特征点。

nlc202309021428

由约束条件:

确定。其中U>0,需初始设定,为任意两像素点间欧式距离,即:

数字化曲线具有离散性,故上述结果只可近似满足约束条件公式(3),根据参考文献[9]中的隐式精化数字曲线策略提高其准确性,使公式(2) 能被精确地满足,令

根据条件,‖pipif‖=U,求出待定系数u的值,从而确定领域前端点pif,同理可得领域后端点pib,此时领域被调整。

计算曲线曲率时,利用与支持领域前、后臂矢量夹角相关的某一余弦值作为离散曲率。本研究取角∠pifpipib的余弦值为离散曲率(图9)。以轮廓上Pi点为中心,以U为半径的支持领域,逐步迭代计算曲率。

Pi点离散曲率:

cosθ=‖pipib‖2+‖pipif‖2-‖pibpif‖22×‖pipib‖×‖pipif‖。(6)

臀部特征点位于羊体上轮廓线后半部分,因此分解出羊体上轮廓线,保留后半部分。在有可能出现臀部特征点的一定区域内逐点计算轮廓线曲率。经过筛选,得到曲率最大值所对应的点为臀部特征点。研究结果表明,U在6~20范围内结果较好。

2.2前蹄、后蹄点检测

前蹄、后蹄点处于所得的图像中最下方位置,根据此关系,采用逐点扫描的方法,由最底行向上,由最左列向右遍历各点,第1个像素值非零点即为一蹄点。图像空间分辨率为640×480,在可疑区域内搜索另一蹄点,可疑区域为:

式中:x为行数,y为列数,px(top)为轮廓最上端像素点对应的行数,py(d)为检测到的第1个蹄点像素点列数。

2.3耆点检测

根据前蹄点像素点位置,沿着行数减小的方向寻找,耆点与前足点列坐标相同。设fy为前足点所在列,因此耆点也在第fy列。找出轮廓线上所有列数为fy的点,所在行数分别为T1、T2、T3,…,Tn。最终根据限定条件:

坐标(x,y)即为耆点坐标。

2.4特征点检测结果

图10为获取的部分羊体上轮廓线,共186个轮廓点。

根据公式(6)依次计算获取上轮廓线上各个点所对应的曲率角余弦值,选定支撑领域半径U=9,结果如图11所示。

横坐标为轮廓像素点的点数,纵坐标为对应的余弦值。横坐标x=43所对应的轮廓点余弦值最大,即此点处曲率最大,经计算其值为-0.791。轮廓线左起半径U=9范围内的9个点不参与计算余弦值,所以轮廓线左起第52个点,即图10中K点为臀部特征点,其对应的坐标为(264,262)。按上述前蹄点、后蹄点、耆点寻找方法对样本羊体轮廓进行检测,得其特征点的坐标值(表1)。

3站姿纠偏

实际测量中,由于羊体站姿存在一定随机性,导致羊体中心线与测量平台中心线并不平行,存在一定的角度θ(图12)。

二维图像中测量得到的体尺数据L′ 为真实体尺L在二维图像平面上的投影长度。若不考虑特征点深度值则测量结果会产生一定误差,因此结合深度信息进行测量。

3.1建立空间直角坐标系

由羊体二值化轮廓线坐标结合深度图像中获得的深度值可以构成羊体空间轮廓线。本研究以x、y轴表征轮廓点位置,z轴表征深度信息,建立三维直角坐标系。

3.2空间分辨率

体尺测量中,需要确定空间分辨率,即确定图像上2个像素点的距离所代表的实际尺寸。每个像素(u,v)在x轴与y轴方向上的物理尺寸为dx、dy,则图像中任一像素的坐标为:

实际操作时,摄像头与羊体监控位置保持不变,根据墙面标记点A、B标定摄像头,已知AB距离为2 m,A、B处于同一行,相隔469个像素,故可确定dx=dy=0.427 cm(图13)。

羊体深度图像由Kinect获取,本研究选用的深度图像灰度值为0~255,根据Kinect相关信息,深度值分辨率为1.6 cm。

3.3剔除不可信点

考虑到计算量等因素,将随机采样空间轮廓线上部分点表示到三维直角坐标系中。获取深度信息时,由于深度传感器Kinect自身的因素,对羊体边缘部分的深度测量存在许多随机误差与不确定的结果,而且往往由于深度干扰,会出现虚假边缘的判定,这些点的深度信息不可靠,应将其剔除。求出采样轮廓点深度值的均值:

di为第i个采样点的深度值,设定阈值:

dmax为采样点中的最大深度值。利用阈值对采样点进行限制,满足条件:|di-d|

3.4拟合平面

得到较为可信的羊体空间轮廓点之后,根据各个点的坐标位置可基本确定羊体在空间中的站位姿态,为了更加精确表征羊体站姿状态,采用最小二乘法,对可信的空间轮廓线采样点进行拟合运算得到拟合平面。空间平面的一般表达式为:

对于空间中分布的n(n≥3)个点,坐标为(xi,yi,zi),根据最小二乘法则,用这n个点拟合上述平面方程。部分轮廓采样点坐标见表2。

利用最小二乘法对轮廓采样点进行平面拟合,得到采样点拟合平面的一般表达式的各个参数A=-0.000 797 2,B=0.000 265 7,C=-0.005 4。因此拟合平面的一般方程为:-0.000 797 若M′、N′为2特征点坐标,将特征点坐标沿z轴映射到拟合平面上,得点M(x1,y1)、N(x2,y2)。在不考虑深度坐标时,测量得到的羊体体尺长度L′为真实体尺长度L在xoy坐标平面的投影长度。所以线段L(MN)的长度为体尺数据的真实值(图16)。

将体尺计算由二维平面转入三维空间,对克服羊体站姿问题有一定帮助。

4试验结果

本研究基于VS2010软件,结合微软公司提供的SDK,搭建羊体尺测量系统,主界面如图17所示。

5结论

本研究采用Kinect传感器采集羊体彩色、深度图像,采用彩色、深度图像融合的方法分割得到羊体轮廓线,有效克服了现场背景复杂、光线及羊体站姿变化的干扰,在实地测量中,所得体尺数据相对误差在4.3%之内,对机器视觉技术在家畜体尺测量方面的应用具有积极意义。

参考文献:

[1]刘同海,滕光辉,付为森,等. 基于机器视觉的猪体体尺测点提取算法与应用[J]. 农业工程学报,2013,29(2):161-168.

[2]刘波,朱伟兴,霍冠英. 生猪轮廓红外与光学图像的融合算法[J]. 农业工程学报,2013,29(17):113-120.

[3]江杰,周丽娜,李刚. 基于机器视觉的羊体体尺测量[J]. 计算机应用,2014,34(3):846-850,887.

[4]赵建敏,许晓伟,贾慧媛. 基于Kinect体感传感器的心理宣泄系统的实现[J]. 传感器与微系统,2014,33(8):119-122.

[5]王琰滨,蒋龙泉,冯瑞. 一种低图像质量车辆牌照的字符分割方法[J]. 计算机应用与软件,2013,30(3):108-110,117.

[6]田亚磊,高腾云,白继武,等. 河南小尾寒羊体尺与体重的相关性分析[J]. 中国畜牧兽医,2009,36(11):200-202.

[7]王德超,涂亚庆,张铁楠. 一种多尺度Harris角点检测方法[J]. 计算机应用与软件,2008,25(12):242-243,262.

[8]郭娟娟,钟宝江. U弦长曲率:一种离散曲率计算方法[J]. 模式识别与人工智能,2014,27(8):683-691.

[9]钟宝江,廖文和. 基于精化曲线累加弦长的角点检测技术[J]. 计算机辅助设计与图形学学报,2004,16(7):939-943.许健才. 一种非下采样轮廓波变换域水果图像预处理方法[J]. 江苏农业科学,2015,43(11:499-501.

Kinect 篇5

关键词:人机交互,kinect,模拟鼠标

一、引言

计算机交互界面的发展从起初不得不迁就效率而是使用的命令行式的机器语言,到微软公司创建的图形化用户界面GUI(Graphical User Interface),科技的进步把我们从枯燥繁琐的机器语言中解放了出来,鼠标和键盘成了后来几十年间人们再也熟悉不过的交互设备,不难看出在人类与计算机沟通方式的变革中,技术正逐步帮助人类取得“优势”地位。随着2010年微软发布的Kinect,标志着电脑适应人类、用户主导交互的NUI(Natural user interface)交互时代的开始。

二、Kinect v2.0简介

2014年,微软发布了Kinect V2,第二代Kinect从硬件上对做了很大改进。感应器具备了更高的分辨率和色彩识别度,使识别更加精准,为开发者制作更精良的画面提供了良好支持。Kinect V2拥有“三只眼睛”和“四只耳朵”。“三只眼睛”分别是彩色摄像头(RGB Camera);位于彩色摄像头右侧的深度传感器(Depth Sensor)以及位于面板中央的红外发射器(IR Emitters);“四只耳朵”则是四元线性麦克风阵列,声音从4个麦克风采集,内置数字信号处理器DSP等组件,同时过滤背景噪声,可定位声源方向。

三、基于Kinect的虚拟鼠标控制系统的设计

3.1系统运行设计

本应用程序使用Kinect for Windows SDK 2.0配合C#语言进行开发,这个新的开发包提供了多种接口,简化了开发过程。整个程序的运行过程主要分为以下几个部分:

(1)初始化并接收数据

初始化Kinect到接收数据帧其实是Kinect完成数据引用的过程大致是source->reader->frame->data,其中一种数据源(source)可以有多种阅读器(reader),而这里我们用到的就是Body Frame Source这个源。关键代码如下:

(2)注册帧到达事件

Kinect以每秒接收30帧的速度进行来进行人体和规定动作的识别,因此对于是否识别到人体以及后续的动作捕捉来说注册帧到达事件是前提,具体实现如下:

(3)获取右手坐标和状态

当确认追踪到人体信息后,Kinect会将获取到的帧数据进行处理,形成一个完整的人体Body信息,我们所需要做的就是获取追踪到的人体右手信息,进而来模拟鼠标的操作。其中关键代码如下:

新的SDK提供了新的三种手势状态接口分别是Open,Closed,Lasso三种手势状态,利用这三种状态,可以设置对应的鼠标事件:Hand State.Open-Mouse Left Up(鼠标移动),Hand State.Closed-Mouse Lef Down(左键按下),Hand State.Lasso-Mouse Right Down(右键按下)

其中对应的鼠标响应事件我们需要用到位于user32.dll这个库文件里面的mouse_event函数,所以只需在程序之前先声明引用即可。

3.2 Kinect与计算机之间坐标系的转换

在程序实际运行的过程中,直接利用kinect得到的用户手部坐标往往无法很好的模拟鼠标的移动,而模拟鼠标移动的原理是使用Kinect捕捉用户左手或者右手的空间坐标,之后再将获得坐标的XY平面坐标部分映射为屏幕坐标。但是由于鼠标移动的绝对坐标系和屏幕坐标系又不完全移植,鼠标绝对坐标系的X轴、Y轴的点坐标为Int型,值范围是(0~65535),因此中间还需要做一次转换,如图1所示。

关于坐标转换的核心代码如下:

四、结束语

本文利用Kinect的特性追踪人体的特定部位,运用空间坐标到平面坐标之前的转换完成了模拟计算机鼠标移动的功能,又利用了新一代SDK提供的手势状态接口模拟了鼠标的点击,完成了虚拟“空气鼠标”的程序开发。基于Kinect的虚拟鼠标的交互可以运用到教育、娱乐等多个领域中去,它的应用前景将会越来越广。就像微软公司著名的发明家Alex kipman所说的那样,Kinect的诞生或将成为下一代人机交互的革命的原点。

参考文献

[1]邵浩,侯文利.Kinect用于其他应用时坐标系转换问题研究[J].现代计算机(专业版).2014(2):40-42.

[2]张诗潮,钱冬明.体感技术现状和发展研究[J].华东师范大学学报(自然科学版).2014.2:40-42.

[3]余涛.kinect开发实战:用最自然的方式与及其对话[M].北京:机械工业出版社,2012:21-23.

Kinect 篇6

随着显示技术的发展,2D技术下,显示器尺寸,分辨率,ppi等已经接近发展的极限。3D技术无一例外成为了未来的主流发展方向。3D技术首先要解决3D信息的问题,即用什么 方式来描 述3D内容,一种方法是用摄像机阵列依次拍摄同一场景,通过传输端传输所有视角的信息并在终端显示。另一种方法是采用一定的技术获取场景的景深信息,通过传输端和场景信息一起传输。

虽然第一种方式获取的三维数据能够给用户带来不错的立体视觉感受。但是,由于每个视点都是由固定位置的摄像机事先拍摄好的,多摄像机之间的同步、校准以及不同角度视频内容之间的颜色均衡问题是需要克服的难点。

另外,场景的深度信息不能根据显示设备的类型和尺寸来调整,三维视频的景深深度增强三维视频系统流程效果不具备尺度伸缩性。并且,解码端输出的视点数量有限,无法提供自由视点视频的“环视”效果。而第二种方式则具备操作性强,节省带宽,视点自由等优点,成为主流的三维重建方法。该方法最重要的部分则是景深提取。

景深提取有很多实现途径,主流的方法有以下几种,1)基于双目视觉提取景深[1],用摄像机对同一场景在不同角度进行拍摄,获取两幅有视差的图像,在进行摄像机标定,图像预处理之后,通过对两幅图像进行立体匹配获取图像间的视差信息,再结合摄像机标定的数据,将视差信息转化成真实世界的深度数据。这种方法操作性强,在关键的匹配技术上,有基于区域,基于特征和基于相位等多种方法可供选择。算法灵活性大。2)利用测距设备获取深度信息,即TOF(timeofflight)技术[2],通过发射光线并接收反射光实现深度信息的实时提取。这种方法原理简单,测距速度高,又可避免阴影和遮挡等问题,但对信号处理系统的时间分辨有较高要求。为了提高测量精度,实际的飞行时间测量系统往往采用时间调制光束,例如采用正弦调制的激光束,然后比较发射光束和接收光束之间的位相,计算出距离[3]。

在这两种方法之外,我们瞄准立体视觉的一个新的实现途径,即采用微软的Kinect实现三维景深提取。Kinect的成像原理是基于一种光编码(lightcoding)技术[4]。不同于传统的ToF或者结构光测量技术,lightcoding使用的是连续的照明(而非脉冲),也不需要特 制的感光 芯片,而只需要 普通的CMOS感光芯片,这让方案的成本大大降低。

Lightcoding,顾名思义就是用光源照明给需要测量的空间编上码。但与传统的结构光方法不同的是,他的光源打出去的并不是一副周期性变化的二维的图像编码,而是一个具有三维纵深的“体编码”。这种光源叫做激光散斑(laserspeckle),是当激光照射到粗糙物体或穿透毛玻璃后形成的随机衍射斑点。

这些散斑具有高度的随机性,而且会随着距离的不同变换图案。也就是说空间中任意两处的散斑图案都是不同的。只要在空间中打上这样的结构光,整个空间就都被做了标记,把一个物体放进这个空间,只要看看物体上面的散斑图案,就可以知道这个物体在什么位置了。当然,在这之前要把整个空间的散斑图案都记录下来,所以要先做一次光源的标定。标定的方法是这样的:每隔一段距离,取一个参考平面,把参考平面上的散斑图案记录下来。假设用户活动空间是距离电视机1米到4米的范围,每隔10cm取一个参考平面,那么标定下来我们就已经保存了30幅散斑图像。需要进行测量的时候,拍摄一副待测场景的散斑图像,将这幅图像和我们保存下来的30幅参考图像依次做互相关运算,这样我们会得到30幅相关度图像,而空间中有物体存在的位置,在相关度图像上就会显示出峰值。把这些峰值一层层叠在一起,再经过一些插值,就会得到整个场景的三维形状了。

本文将主要探讨Kinectforwindows在三维重建上的应用,通过对KinectforwindowsSDK进行接口编程,获取场景的图像信息以及深度信息。为了验证我们算法的质量,通过输入2D+Z格式,在基于光栅的3D显示器上显示,最后获得了不错的显示效果。

1算法框架

1.1获取场景图像信息和深度信息

Kinect自带的主摄像头可以获取在每秒30帧的情况下最高640×480的分辨率,景深摄像头也能获得最高640×480的分辨率,故我们通过KinectSDK编程,让主摄像头和景深摄像头均采集相同分辨率的图像,以达到图像信息和深度信息的匹配。

在每一个像素点上,景深摄像头采集的数据是一个16位的二进制数据,如图1所示,其中最末三位代表玩家信息,舍弃不用。另外13位表示深度信息,可以表征大概0.8米到4米的深度范围。对于在这个范围之外太近或是太远的区域,Kinect都检测不到其深度信息。在获取深度图的时候,对于13位深度信息,我们将最末五位舍去,将高八位同时赋给R,G,B通道。由于最末五位最多只能表达大概三厘米的深度信息,故这种舍弃不会造成很大的误差。

同时由于Kinect的显示原理是基于激光散斑,我们通过大量实验发现,这种显示技术在物体的轮廓边缘和镜面反射比较强的部分容易出现检测不到的情况,我们把检测不到的区域用红色(255,0,0)表示,近于检测距离的区域赋绿色(0,255,0),远于检测距离的区域赋蓝色(0,0,255),如图2,人的边缘和桌缘均无法检测,图3,电脑屏幕和主机以及地面等镜面反射强的区域无法检测,另外在深度图像左侧也会固定出现矩形的无法检测区域。

1.2图像的对齐和裁切处理

对于拍摄到的RGB图像和深度图像,由于主摄像头和景深摄像头之间存在一定的距离,导致两幅图像之间的像素点并不是完全对齐的。用sobel边缘提取函数获得深 度图像的 边缘轮廓,将该轮廓 加在RGB图像上(如图4,图5),可以明显看出镜头之间的不对齐。故需要先对图像作对齐和裁切处理[5]。

接下来,我们拍摄了大量不同场景的RGB图像以及对应的深度图像,发现都存在不对齐的现象,经过大量的实验表明,深度图像的左半部分和上半部分存在一定量的拉伸。且拉伸量只与镜头有关,与拍摄场景无关。故我们只需对图像作固定量的伸缩和裁切处理即 可。处理之后,深度图像 轮廓加在RGB图像上效果如图6,图7所示:

1.3基于中值插值的图像补偿算法

在采集图像的时候我们尽量避免少拍摄到Kinect检测区域之外的部分。在采集之后,必须进行预处理,特别是图像中的红绿蓝错误部分,前文提到对于过近不能检测和过远不能检测的区域我们分别赋成绿色和蓝色,这里对绿色部分的像素我们给R,G,B三通道0值;相应的蓝色部分像素,给R,G,B三通道255值,分别表征最近和最远。对于红色部分,只能依靠临近像素的灰度值恢复其灰度信息。

我们首先选择基于中值插值的图像补偿算法,在裁切掉图像左侧固定矩形大小的红色区域之后,依次检测图像中剩余的红点,检测到红点P之后,以该点为中心选取33×33大小的矩形区块,依次检测该区块内的非 红色点,非红色的 点总个数 计为sum,并把这些点的灰度值N(i)作叠加,然后作中值插值,则P点的灰度值:

从该算法的思路来看,我们用红点附近一定区域内具有深度信息的点的灰度平均值来表征该点的灰度值,具有一定的合理性。但是从实验结果图8来看,由于无法检测的红色区域主要出现在物体的边缘,故该算法的处理结果会在物体边缘出现很明显的渐变区域,不符合真实的图像内容。由此我们在该算法基础上作一些改进。

由于我们在前文中已经对RGB图像和深度图像作了对齐处理。故假设深度图像中有一点P,其在RGB图像中的对应点是Q,则两点的横坐标PX,QX和纵坐标PY,QY基本重合,不会有大的误差。由此我们的算法思路是:当检测到红点P(PX,PY)时,直接在RGB图中找到坐标(PX,PY)对应的点Q2,用Q2代替Q,并记录该点的R,G,B三通道灰度信息。然后对于以P点为中心的矩形区域,依次查找非红色点N(i),对于每一个N(i),查找其在RGB图像上坐标相同的点N2(i),比较该点的颜色信息和Q2点的差异,若差异过大,抛弃该点,不对其作累加。经过算法改进之后,效果如图9所示,物体边缘无法检测的区域已经根据其实际位置融入了背景中。

裸眼3D在近几年蓬勃发展,但是大多还处于研发阶段,主要应用在工业商用显示市场,大众消费者接触的不多。柱状透镜裸眼3D技术作为主流的一种,显示效果好[6]。在获得同一场景的RGB图像和深度图像后,为了验证深度提取的效果,我们先对深度图像作对比度扩展,使其能够有更好的深度效果,然后按照柱状 透镜裸眼3D显示器的 要求,将RGB图像和深度图像合成特定格式,即一种2D+depth的格式,如图10。最后在显示器上获得了较好的显示效果,如图11。

2结论

Kinect掀起了人机 交互的新 革命,我们利用Kinect的主摄像头和景深摄像头提取出同一场景的图像信息和深度信息,对两张图作伸缩和裁剪,使它们对齐。并且运用改正的中值插值算法解决了Kinect在物体边缘和镜面反射较强处无法获取深度的问题,最后获得了较好的深度图像,在裸眼3D显示器上呈现了不错的效果。

Kinect 篇7

1设计方案

将Kinect与电脑相连接,借助微软官方的SDK采集到人体的动作的基本数据流信息,然后上位机通过骨骼识别技术和景深图像处理技术,对人体动作信息进一步的处理,通过对人体手臂不同位置的分析与判断来实现特定动作的识别,当到达特定动作后,触发计算机特定键位信息,来实现对特定键位的替代。而鼠标的移动则是通过对人体手部的特定识别,实现鼠标随着人手部的移动而移动。

1.1软件开发环境

可以使用C#与.NETFramework 4.0来进行开发。SDK主要是针对Windows7设计,内含Kinect电脑端驱动程序以及参考例程。SDK可以使用的语言为C++、C#或Visual Basic语言并搭配Microsoft Visual Studio2010工具。

1.2景深数据处理与应用

Kinect能够产生三维数据,通过这些数据我们能够得到物体距Kinect的距离。Kinect红外传感器能够探测人体以及非人体对象。

本文提供的思路是利用Kinect的感知距离的功能应用在体检上,由于Kinect能够感知距离并在距离的基础上准确的判断出高度,那么在检测人的身高时,只要人站在Kinect的基础的视野范围内,便能够在短时间内准确的得到人体的身高信息,这算是Kinect单单在景深质疑功能上的基本应用。

1.3骨骼跟踪原理

由上一段可知Kinect产生的深度数据只能起到有限作用,要利用Kinect创建更深层次的人机交互,还需要其他数据。这就是骨骼追踪技术,也是人机交互中潜力最大的地方。骨骼追踪技术通过处理深度数据来建立人体各个关节的点,骨骼追踪能够确定人体的各个部分,如哪部分是手,哪部分是头部,哪部分是身体,还能确定他们所在的位置。在Kinect里面,是通过20个关节点来表示一个人体的骨架,具体由图1可以看到。当进入Kinect的视野范围的时候,Kinect就可以准确的把20个关节点找到,位置通过(x,y,z)坐标来表示。那么展现在我们面前的便是如图1一样接近完美的人体骨骼数据,在这个骨骼基础上进行数据分析时无疑是直观并且相当方便的。当我们成功地得到这些数据时我们能进行的处理无疑是天马行空般的,在这个基础上进行的人机交互也必然是最有潜力的。那么我们便可以实现上文中说的控制特别键位的目的,比如当我们的左手保持水平,右手高举时我们便可以通过在z轴上数据比较相当简单地实现一个条件的触发,也就自然的实现了控制特别键位这一功能。而通过手部控制鼠标的移动也是同样的方法,只是在跟踪手部数据的同时通过比例的放大或者缩小体现在鼠标的移动上。

2应用前景

通过Kinect在电脑端实现高效准确的人体识别,使人机交互技术智能系统的开发更加便利。随着生活质量的提高以及智能家居的发展,人们对人机交互的要求越来越高,而这种全新的人机交互方式,实现了人和计算机之间的无缝连接,最大限度地缩小了人类和计算机系统对任务的认知模式和理解方式之间的差异,而Kinect的应用使我们有了更好的人机交互体验。这种交互界面更具智能化和人性化,而使用的动作识别和语音识别,使人和计算机系统以更加舒服、更加自然、更加有效率的方式交互,便于人们接受。

参考文献

[1]Garcia J,Valencia E S,Zalevsky Z,et al.Range Mapping Using Speckle Decorrelation[P].US.2007216894.

[2]贾永红.数字图像处理[M].武汉:武汉大学出版社,2003.

[3]Marr D,Hildreth E.Theory of Edge Detection[J/OL].Proceedings of the Royal.www.cs.ubc.ca/2013-10-03.

Kinect 篇8

根据冯·诺依曼 (John von Neumann, 1903~1957) 的计算机体系结构, 计算机分为五大部分——运算器、控制器、存储器、输入设备、输出设备。现在大多数计算机仍是冯·诺依曼计算机的组织结构, 只是做了一些改进而已, 并没有从根本上突破冯·诺依曼体系结构的束缚。对于计算机的研究和使用人员来说, 计算机的发展最终需要解决的问题就是输入和输出的问题。如何对计算机进行高效准确的输入, 以及如何让计算机通过算法, 进行准确的计算, 输出人们想要的结果, 一直是计算机研究的一个重要课题。

随着计算机的发展, 自然的用户界面 (NUI) 随之出现。相对于传统的用户输入方式——鼠标键盘, 自然的用户界面显得更加人性化。比如语音输入, 手势识别等。显然, 自然的用户界面更加符合人们的行为习惯。自然的用户界面更加健康, 它可以让对计算机的输入变成与一个人的交流, 让用户可以有更加身临其境的感觉。

1 现实生活中体感手势的运用

人们在日常的交际中, 经常会用到一些手势, 来使得对问题的表述更加具有表现力。这些手势不仅仅只是手指的动作, 也不能理解为手部的动作。手势是一个广泛的概念, 它包含了有含义、有意义的肢体动作。这也就是说, 一个踢腿的动作, 也可以被定义为手势。敲击键盘不是一个手势, 因为手指快速的按下某一个按键既不容易被观察到, 也不能直观地表达其含义。

然而, 手势不只是用在交际表达中, 人们在日常的生活中, 也无处不用到手势。例如, 在拧开饮料瓶盖的时候, 需要用手握紧瓶盖, 另一只抓紧瓶身, 通过手腕、手臂的共同协作, 完成拧下瓶盖的动作。拧下瓶盖的动作, 就是一个手势。我们可以忽略在完成这些动作过程中所使用到、接触到的实际存在的物体, 而把注意力转移到肢体本身。假设物体并不存在的, 让你笔画着空气来完成一个拧瓶盖的动作, 让另外一个人去猜你现在正在做的动作, 是否他一眼就能看出你正在演示拧瓶盖的动作呢?

2 基于Kinect体感设备的篮球系统

2.1 手势的识别

如果“猜”出你所做手势的是一台计算机, 那么就涉及到计算机的手势识别技术。让计算机去完成一个手势的识别、判断是非常困难的。首先, 我们要设法获取人体的相关信息, 这涉及到图形、图像识别技术、深度数据挖掘技术。通过微软研制的Kinect, 其摄像头在收集了人体的视频信息之后, 通过算法的处理, 可以把人的肢体信息凝练为20 个骨骼节点。它可以准确标定人体的这20 个关键点, 并对这20 个点的位置进行实时追踪。在程序及算法设计中, 人的肢体运动, 会使得身体各个骨骼节点的三维坐标值发生改变。通过设置合理的数值, 当骨骼节点的坐标差值超过某个设定值的时候, 触发某一个状态位或一系列状态位的改变, 从而完成一个手势或者一系列手势的判定。例如, 完成一个完整的投篮手势, 需要先抬起手臂。以右手为例, 抬起右手意味着右手腕节点的y坐标值超过了右肩膀节点的y坐标值, 也就是实际空间中的右手高度, 高于右肩膀高度。此时, 应该触发抬手状态位的改变, 告诉系统, 投掷者的手臂已经抬起, 准备进行下一步的判断与计算。

当然, 在手臂放下之后, 要把抬手状态位还原, 告诉系统, 投掷者的手臂已经放下, 不能继续进行投掷算法, 不然系统会出现错误投掷判断。由此, 抬手状态的触发就相当于投掷算法的第一个开关, 整个投篮手势也是由一系列手势构成的。

2.2 运动轨迹的计算

篮球在空间中的运动, 是一个球体的物理运动, 需要物理引擎来提供物理算法, 通常的游戏引擎都会带有物理引擎, 我们使用Unity3D游戏引擎中的物理引擎, 来完成篮球运动轨迹的计算。这样, 我们只需要把篮球被抛出时的方向和速度提供给物理引擎, 就可以完成篮球运动轨迹的计算了。

现实中, 人完成投篮动作, 就是给篮球一个加速度。通过手部用力, 让篮球和手拥有相同的速度。当手部停止加速, 开始减速, 篮球也就不再加速, 并且脱离手部, 不再和手有接触。篮球拥有了初始速度, 就开始抛物运动。这里我们忽略空气阻力的作用。在三维空间中, 需要把加速度及速度分解到相互垂直的三个方向上, 也就是三维坐标系中, 计算三个方向上的加速度, 最终提交给Unity3D的物理引擎, 形成一个和速度进行计算。手部三个方向上的加速度, 可以通过速度计算公式获得。Kinect提供给我们每秒30 帧的骨骼节点三维坐标位置变化, 一个方向上坐标的差值除以时间, 就可以得到此方向上的速度, 进一步就可以得到此方向上的加速度。

2.3 模型的构建

最后, 我们在Unity3D中创建场景, 添加篮球架的模型, 并添加脚本判断篮球是否投进, 进行计分, 并给篮球和篮框添加碰撞器, 当篮球碰触篮框时, 进行碰撞的检测和碰撞结果的计算, 模拟真实的投篮环境, 构成一个完整的投篮系统。

参考文献

[1]沈绪榜, 刘泽响, 王茹.计算机体系结构的统一模型[J].计算机学报, 2007, 30 (05) :731-736.

[2]张茫茫, 傅红.基于实体用户界面与自然用户界面结合的产品设计[J].研究论文, 2013, 31 (28) :99-102.

[3]曹雏清, 李瑞峰, 赵立军.基于深度图像技术的手势识别方法[J].计算机工程, 2012, 38 (08) :16-21.

Kinect 篇9

在人机交互的研究领域里, 其传统模式是通过指示装置、窗口、菜单、图标等为大家所熟知, 但随着技术的发展它们在操作上的限制就变得愈加明显, 人们更期待用自然的方式进行人机交互, 这种更直接的方式称作“自然”交互[1]。自然人机交互能够让人用最轻松最简单的方式和计算机进行交流, 从而人们的注意力可以更多地关注问题本身, 而不是繁琐的人机交互。

自然交互方式包括语言、姿势、手势等方式, 其中姿势是日常生活中相对常见的沟通方式, 同时也是人与其他物体的主要区别。人们通常采取不同的姿势来表达不同的想法和信息, 因此寻找一个良好的算法对人体姿势识别的研究是非常有必要的。近年来基于Kinect体感设备的人体动作识别在医学领域表现出巨大的应用价值, 国内外很多机构都在开展相关研究。为了提高人体姿势识别的准确率和精确度, 本文提出一种人体关节点角度测量的姿势识别算法。

2 Kinect简介

摄像机技术在近几年飞速发展, 具备3D摄像功能的摄像机逐渐进入了人们的视野。20 世纪90 年代出现的TOF摄像机的原理是根据光的飞行时间对物体深度信息进行计算, 和传统2D摄像机相对比,TOF摄像机可以很轻松地分离被摄场景中的前后景, 因此TOF摄像机在特定目标的追踪与识别方面具有2D摄像机无法赶超的优势。但是TOF摄像机价格昂贵、分辨率相对较低的缺点影响了它的发展[2]。

2010 年11 月, 微软首次推出了一款体感外设Kinect, 可实现实时的全身和骨骼跟踪、运动捕捉以及麦克风输入功能, 并能够识别一系列的动作, 人们可以站在Kinect前通过各种手势来与计算机进行交互, 这种方式告别了以往在身体上佩戴传感器的尴尬, 并大幅度降低操作成本。因此, 基于Kinect的自然人机交互的开发研究顺理成章地成为目前的研究热点。

Kinect拥有能够感知外界的CMOS红外传感器,使得Kinect有别于普通摄像头。该传感器主要通过黑白光谱的方式对环境进行感知: 纯白图谱代表无穷近,纯黑图谱代表无穷远, 黑白间的灰色地带根据不同的灰度对应物体之间的物理距离。它能够敏锐地感知到设备视野内的空间, 形成一幅能够代表周围环境远近的灰度景深图像。传感器以每秒30 帧的频率生成深度图像流,将周围环境进行实时地3D再现。Kinect将侦测到的3D深度图像, 转换到骨架追踪系统。该系统可以追踪操作者的20 个骨骼节点, 包含躯干、四肢、手指等, 以达成全身体感操作。为了看懂使用者的动作, 微软采用机器学习技术, 建立庞大的图像资料库, 形成智慧辨识能力, 尽可能理解使用者的肢体动作所代表的含义。

2014 年6 月微软公司又推出了Kinect的升级产品——Kinect2.0, 其实物图和原理图如图1 所示。相比于第一代Kinect产品, 本文采用的Kinect2.0 增强了深度传感能力, 通过更高的深度保真和大幅改进的噪声基底, 能够分辨出更小的物体; 视频分辨率由VGA级别升级至1080p级别, 提供全高清视频效果和流畅的场景体验, 数据处理量可达2GB/s; 采用全新的USB3.0 接口, 令Kinect2.0 的延迟降低至2 帧/s; 微软还用读取深度“飞行时间计算”的方法来替代了现有的“光照测量”的测算方法, 使得Kinect2.0 比第一代更快、更准确;Kinect2.0 的视野提高了60%, 可支持6 人同时操作,并可同时追踪每个人的25 个骨骼节点, 优化了跟踪算法, 令跟踪的姿势更为精确和稳定; 提升红外线的侦测性能, 可以在黑暗中识别动作; 除此之外,Kinect2.0 还提供了拇指追踪、手指末端追踪、打开和收缩的手势识别等功能, 使更多的细节元素可以被加入到未来的体感应用中。

3 姿势识别

3.1 姿势识别

姿势是身体各个部分之间的一种静态位置关系。身体主要是各个关节点的相对位置形成了姿势, 即关节点之间的相对位置能够唯一确定某一个姿势, 姿势的复杂度直接影响了识别算法的复杂度。姿势的识别可以通过关节点位置的交叉情况, 相互角度等信息进行识别。姿势识别在三维虚拟实验中有着重要的作用, 其作用体现在通过特定的姿势, 控制程序准确地响应某一个操作来完成所对应的实验中的特定功能[3]。

3.2 骨骼捕获

骨骼识别的特点是将人体测量学和步态识别学相融合, 综合人体的生理特征和行为特征进行识别。具体地说, 骨骼识别系统先是通过Kinect摄像机的骨骼跟踪功能来提取出人体的静态骨骼信息; 然后再利用双腿关节角度或3D运动人体轮廓描述步态特征; 最后, 综合二者的识别结果来完成身份的鉴定。

图2(a) 是三个人的实际图像, 图2(b) 是Kinect捕获到人体骨骼节点。通过对比两图可知Kinect准确地捕获到了三个人的所有骨骼节点, 并用不同颜色对人体进行区分, 其中节点均以绿色表示。

由于Kinect产生的景深数据能够表达的信息是有限的, 要利用Kinect创建真正意义上的有趣和难忘的应用, 还需要除深度数据之外的一些其他信息。这也就是骨骼跟踪技术的初衷。骨骼跟踪技术通过深度数据建立人体各个关节点的坐标, 并确定关节点的重要信息, 骨骼跟踪能够确定人体的主要部分, 比如识别头和手等。骨骼跟踪技术通过Kinect所产生的深度数据来确定这些骨骼点。骨骼跟踪系统采用的景深图像处理技术使用更复杂的算法如矩阵变换, 机器学习及其他方式来确定骨骼点的坐标[4]。

Kinect最多可以追踪25 个骨骼节点, 目前Kinect还只能追踪人体, 对于其他物体的追踪暂时还无法实现[5]。图3 介绍了Kinect能够捕获的人体骨骼节点的分布情况:

4 算法实现

Kinect捕获到人体骨骼模型上的14 个对应点, 并包含各个点的三维位置信息数据。表1 中的11 个向量主要用来表示身体姿势的角度特征。

向量Vi和Vj之间的角度 θi-j可以表示为

如图4 中的角度 θ1-2、θ3-4、θ2-5、θ3-6、θ5-8、θ6-10、θ8-10、θ7-8、θ7-10、θ8-9和 θ10-11可由式1 和式2 计算得出。

抽取出的角度信息是独立于人和位置的特征, 因为角度并不受线段长度和位置的影响。这种包含11 个角度组件的特征向量可以被用来训练一个多项式核函数支撑向量机, 以用来识别姿势。

图5 展示了一个人体姿态检测和识别系统的框图。一系列的角度特征, 由公式(1) 并归一化到-1 和+1 之间, 便可以得到角度特征集[6]。在训练阶段, 训练支撑向量机分类器使用上述特征值, 在测试阶段, 用训练后的支撑向量机分类器对姿态进行分类。为了检测姿态,需要计算姿态样本的多类概率估计值。概率估计值的最大值经二值化可以得到姿态检测的结果[7]

Q是布尔变量, 分别不同的状态代表姿态的出现和消失,Pi样本概率估计值( 类别i中),Pth用于检测姿态的概率阈值。伴随着Pth值的增加, 算法精确率也随之提高。整个系统的流程架构亦如图5。

5 验证测试

本文硬件采用微软Kinect 2.0 和Think Pad T440计算机, 软件基于Windows 8 系统和Visual Studio2012开发环境。针对不同形体的人的相同姿势进行识别,以检验算法准确性。在验证过程中我们主要对手和头的向量进行了标定和识别, 在识别过程中主要用到了(1)和(2) 式, 尤其对于坐标点进行了充分的计算, 以便在后续进行位置比对时将坐标进行代入比较。

本文用6 种不同基本姿态来测试姿态检测和识别算法。这6 种姿态分类包括: 左手高于头部, 左手低于头部, 左手握拳, 右手高于头部, 右手低于头部, 右手握拳。并请10 位测试人员( 包含不同身材特征) 分别摆出6 种不同姿态, 共计60 种样本信息, 用来测试算法的精确性和健壮性。上述算法的姿势识别率如表2 所示。

当通过Kinect准确识别人体三维坐标数据的时候,可以定向获取关键部位的坐标信息, 例如头、手的坐标信息。比较头和手的Y轴坐标就可以知道手和头的相对高低, 从而可以进行姿势识别, 头、手坐标比较的关键代码如下:

本文对人左右手的位置进行了测试, 分别包括左手高于头、左手低于头、左手握拳和右手高于头、右手低于头、右手握拳。图6 是对右手进行测试的情况。

左列三幅图片是Kinect捕获到三种状态下的人体骨骼信息, 其中我们设定Kinect用不同颜色对右手姿势进行区分; 中列三幅图片是手部姿势实拍图;右列三幅图片是Kinect捕捉到三种状态下深度信息的显示。

实验表明, 姿势识别算法能够很好地进行简单的姿势识别, 并能够实时反馈出和姿势相符的结果。

6 结束语

本文利用搭建Kinect的体感识别平台, 成功实现了姿势识别算法, 并获得良好的姿势识别率。实验表明:该方法能够实时检测人体骨骼结点之间的角度, 并根据角度准确识别人体姿势。该算法可靠, 准确率较高, 对背景没有过多要求。尽管Kinect的识别率较高, 能够准确给出人体坐标, 但是对于关节点重合的情况不能够很好的解决, 所以在姿势识别上还应该努力进行骨骼重叠校正方面的研究, 进一步提高姿势识别率。另外对于细微的动作还无法做到准确识别, 如果能够开发出足够快的硬件和足够强的算法,将可以挑战更细微的姿势识别,例如对于手指动作的识别、眼部动作的识别等。

参考文献

[1]谢亮,廖宏建,杨玉宝.基于Kinect的姿势识别与应用研究[J].计算机技术与发展,2013,23(5):258-260.

[2]张毅,张烁,罗元.基于Kinect深度图像信息的手势轨迹识别及应用[J].计算机应用研究,2012,29(9):3547-3550.

[3]战荫伟,于芝枝,蔡俊.基于Kinect角度测量的姿势识别算法[J].传感器与微系统,2014,33(7):130-131.

[4]WEBB J,ASHLEY J.Beginning Kinect Programming with the Microsoft Kinect SDK[M].[s.l.]:Apress,2012.

[5]ZHENG XIAO,FU MENGYIN,YANG YI.3D Human Postures Recognition Using Kinect[C].2012 4th International Conference on Intelligent Human-Machine Systems and Cybernetics,2012:344-346.

[6]PRAMOD KUMAR,PISHARADY,MARTIN SAERBECK.Kinect based Body Posture Detection and Recognition System[C].4th International Conference on Graphic and Image Processing(ICGIP),2013,8768:87687F-3.

[7]WU,T.-F.,LIN,C.-J.,WENG,R.C.Proba bility Estimates for MULTI-class Classification by Pairwise Coupling[J].Journal of Machine Learning Research,2004:78-79.

【Kinect】推荐阅读:

上一篇:高职汽修下一篇:干熄焦循环气体

本站热搜

    相关推荐