毕业论文-基于Kinect的室内人体跟踪技术研究_第1页
毕业论文-基于Kinect的室内人体跟踪技术研究_第2页
毕业论文-基于Kinect的室内人体跟踪技术研究_第3页
毕业论文-基于Kinect的室内人体跟踪技术研究_第4页
毕业论文-基于Kinect的室内人体跟踪技术研究_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖南大学毕业设计(论文)第页湖南大学毕业设计(论文)第PAGEREFOLE_LINK1\*ROMANPAGE\*Arabic1页1绪论1.1课题背景及目的最近这几年来,在快速增长的国民经济、不断增强的国力和快速进步的社会背景下,银行、交通和军事等领域对安全设施和现场危险报警系统的需求逐渐增多,同时对此也与日俱增,视频监控在生产和生活的各个方面的应用非常广泛。传统的视频监控是基于二维平面的,场景[1]的动态变化,如天气、光线、阴影和背景杂波的干扰,的干扰,会使得运动目标检测和分割变得相当困难。当运动目标面积较大,颜色一致时,容易在目标内部产生空洞,无法完整地提取运动目标。三维图像在二维图像的基础上多了深度数据,可避免场景变化对图像判断的影响,视频场景经常很复杂[1],但是由于背景是固定的,每帧中差异不大,通常不太关心,通常在室内运动的行人是关注的重点。使用三维深度信息,对图像中运动目标的分割和识别比较准确,可降低多目标相互遮挡等干扰因素的影响,从而达到精确识别前景运动目标的目的。Kinect最早是在2009年6月1日时首次公布,用于体感游戏中对玩家肢体信息的捕捉,使玩家能够玩游戏的过程中感受更真实。由于Kinect集成了多个传感器,可同时获得彩色图像、3D深度图像以及声音信号。随后Kinect出色表现引起了众多学者的关注,纷纷在Kinect发售之后进行开发。令人印象深刻的DEMO来自OliverKreylos,那是一个3D摄像头的演示,展示了Kinect的技术潜能。这是一个具有突破性的实验,结合了传统RGB摄像头的图像与纵深数据,将Kinect变成一个具有纵深感知力的3D摄像头,可用于精确地测量和跟踪物体。由于Kinect在国内发售较晚,且由于Kinect在测量距离上的限制,近可以用于4m之内室内环境下的三维信息获取,因此基于Kinect的图像监控跟踪系统在国内研究较少。但是随着技术的飞速发展,三维信息获取必将取得巨大突破,并将极大的改变目前二维信息为主导的技术应用局面。人类虽然拥有非常优秀的视觉系统,同是也可以从复杂的场景中获取有效信息。但是无法长期保留影像,况且,人体是高自由度的,即使一个简单的移动也可以有无限种变化,所以以Kinect为主体在室内对人体跟踪的研究是一项艰巨的任务。1.2国内外研究状况本课题是在VS2010环境下基于Kinect平台从而进行室内的人体跟踪,如今,国内外对运动物体的检测与跟踪研究不胜枚举,方法繁多,使用的硬件和软件平台也不相同,其中,对人体目标的检测与跟踪技术研究形成了一种潮流。1.2.1Kinect的研究状况Kinect是由微软公司负责开发的一款具有便捷、经济、信息量大等优点的体感外设,,彩色摄像机、红外线发射器和红外线CMOS摄影机组成了Kinect传感器的核心设备。和激光传感器作比较,Kinect传感器的优势是可以快速获得场景彩色图像和深度的信息,同时不会受可见光谱的干扰,成本更低[2],适用于室内导航精度不高的情况。自微软Kinect红外深度感应器发布以来,国外对其技术和应用上的研究都取得了比较多且富有创造性的成果。Kinect感应器最初是作为微软XBOX游戏机的体感外设发布的,后经开发者将其驱动破解并建立起OpenNI的软件框架,Kinect在计算机方面的研究和应用才逐步获得了较大的影响力。现阶段微软已经为此款深度感应器发布了官方的驱动程序及SDK,这更进一步推动了体感技术的开发应用。

与Kinect相似,华硕和PrimeSense公司在2011年发布了另一款深度感应器-Xtion,此款感应器在体积上更小,功能上更精简,支持OpenNI的开源函数库,目前也获得了较多开发者的青睐。随着Kinect传感器技术的不断提高,将会有更多的应用面世,我们除了可以体验游戏给我们带来的生活乐趣,同时也可以真正体会到Kinect为我们提供了实际的价值。事实上,在现实中,Kinect早已被用于在手术室,它曾被加拿大多伦多的“Sunnybrook”医院用于辅助治疗,效果极好,而Kinect传感器的具体应用将在第二章中详细介绍。1.2.2人体跟踪技术研究状况动作是时变的,准确的人体运动跟踪是动作识别的前提。对人体跟踪而言,目前常用的跟踪方法可分为四种:基于区域的跟踪、基于特征的跟踪、基于模型的跟踪和基于活动的跟踪。第一种是基于区域的跟踪是根据人体的各部分区域的特征,按照一定的比例进行的跟踪。如人体是由头、手臂、腿和其他部分组成的,如果对每个人体部位进行跟踪,然后再和各个部位的跟踪比例对整个人体进行跟踪,,这种跟踪经常用于分析人类的行为,理解肢体动作的具体含义,因此这种跟踪更多地是关注人体组成的各个部位的运动信息。第二种是基于特征的跟踪,这种跟踪通常分为两个部分分别是特征提取和特征匹配,可以利用区域形状、颜色和边缘等特征来进行跟踪。第三种是基于模型的跟踪,是一种把人体看作一定的几何模型形状进行的跟踪,如线图法,二维轮廓法和立体模型法等。其目的是在测试场景中来确定人体目标的位置,进一步还可预测目标的运动方向、速度、趋势和轨迹。例如,在公共场所监测系统中,我们经常能够看到用椭圆或矩形框包围的跟踪目标。这种跟踪技术相对简单,通常由单目摄像机获得图像序列,再通过图像处理技术就可以实现跟踪效果。最后一种是基于活动轮廓的跟踪,这种跟踪主要是根据事先定义的封闭曲线轮廓来表示和跟踪运动的人体。但是这样的跟踪需要在初始化的时候需要确定人的初始人体轮廓,但是这样的工作通常是很有难度的。随着计算机视觉理论、数据图像处理和模式识别等技术方面的发展,人体跟踪技术已经开始从理论研究走向实用化了。特别是已经在室内环境下的多运动人体跟踪的研究取得了不错的成绩。国外在对多人体运动跟踪方面发展的比国内要快:国外可以通过跟踪空间[6](二维或三维)、跟踪人数[7,8](单人、多人、人群)、传感器的状态[9](运动或固定)等方面进行分类研究。和国外相比,国内情况显然没有国外发展迅速。比如说,浙大人工智能研究所曾对人体没有出现被遮挡部位的动作采用单目视觉进行跟踪,但是由于此方法是基于单目视觉,所以无法准确估计被遮挡部位的位置,手工干预较多。1.3课题研究方法考虑识别范围、三维数据获取,确定采用微软推出的kinect摄像头。运用其红外传感辅助捕捉图像的三维信息并将这些信息存入数据库,根据需要输入信息筛选出目标并进行目标锁定及跟踪,通过获取的三维数据在VisualC平台上得到目标路径图。(1)图像捕捉:运用kincet摄像头,捕捉室内图像,获取人体三维数据并存入数据库。(2)目标识别与锁定:输入需要监控的人的信息筛选出目标并进行锁定。(3)目标跟踪:对锁定的目标进行跟踪,读入时时的位置数据信息。(4)目标行动识别及路径报告:目标跟踪结束,根据目标在跟踪阶段得到的三维位置信息,输出其在室内的路径报告图。kinectkinect三维摄像的室内人体跟踪系统读出三维数据图像捕捉目标跟踪目标行动识别及路径报告数据库图1.1操作流程图目标识别与锁定1.4论文构成及研究内容本文基于Kinect摄像机为工具,研究基于三维图像信息的室内人体跟踪系统,并在整个过程中在VS2010平台下用MFC搭建界面,完成kinect摄像头接入,获取彩色图像和深度图像和实时跟踪获取的运动目标序列,完成人体目标在室内场景中精确的室内路径轨迹图。本文基本构成和研究内容主要包括以下几个方面:(1)第1章是本文的绪论,主要阐述了本文的课题背景以及目的,并简要论述了Kinect的研究状况和人体跟踪技术研究状况在国内外的研究现状和研究成果以及课题研究的方法。(2)第2章介绍了Kinect传感器的硬件组成和功能,阐述了Kinect连接入控件中,Kinect的工作原理及Kinect的应用。(3)第3章介绍了Kinect三维信息采集与图像预处理,其中重点阐述了Kinect获取彩色数据采集和深度信息的原理以及对彩色数据采集和深度信息的运用,同时介绍对单帧的图像进行修复的算法。(4)第4章介绍了人体跟踪技术,这是本文的重点部分。包括对骨骼追踪技术的理论知识及,Kinect关节点运动数据的获取原理。(5)第5章为实验结果与分析,这一章主要对实现基于Kinect的室内人体跟踪技术实验结果与分析,以此验证基于Kinect的室内人体跟踪技术系统的可行性。(6)第6章为总结和展望部分,总结了本文完成的主要工作和尚未解决的问题,同时指出算法的不足之处,以及今后工作的努力方向。2.Kinect传感器介绍在介绍了Kinect传感器研究背景和国内外研究现状的情况下,本章主要介绍Kinect的工作原理和数据采集,从而证明了在研究室内人体跟踪系统时运用Kinect传感器的优势,同时着重介绍了骨骼数据采集,为后文的进一步分析打下基础。2.1Kinect简介Kinect传感器是微软公司于2010年的一款体感外设,是微软公司对XBOX360体感外设对外公布的名字,是以巴西城市“Natal”命名的,在英语中有“初生”之意。Kinect之所以受消费者的欢迎是因为价廉物美。事实上,Kinect最开始是为室内3D体感游戏提供服务的,它是一种结合多种感知技术的3D体感摄像机。如图2.1所示,它是由4元麦克风阵列、1个红外线(IR)投射器、1个RGB摄像头和1个单色的CMOS红外线接收器组成。其中,RGB摄像头可以获取分辨率达到640×480的彩色图像,每秒钟最多获取30帧图像;IR摄像头是负责发送红外投影仪和记录反射回来的红外线散斑,再透过晶片计算成具有3D深度的图像,其分辨率可以达到320*240。它是通过及时的人体骨骼跟踪,手势识别,图像识别,语音识别技术,可以让玩家通过手势和语音控制来随心所欲的玩游戏,并不需要借用任何游戏操纵杆或者其他形式的游戏操作手柄[24]。图2.1Kinect传感器Kinect的操作空间范围与其他体感装置相比,更加显得严格,其最佳探测距离为1.2米到3.5米,水平视角是57度,垂直视角为43度。此外,Kinect还配备了追焦系统即可以使Kinect[25]左右旋转27度位于底座上的转动机。同时,Kinect传感器可以接收三种数据流,其中包括深度数据流、彩色图像数据流和音频数据流,如图2.2所示。彩色图像数据流应用开发NUI库应用开发NUI库深度数据流音频数据流图2.2Kinect提供三种数据流供研究人员开发2.2NUI介绍从上节可知,Kinect应用则通过与NUI类库中的接口进行交互,来获取所需的数据。NUI(NaturalUserInterface,自然用户界面)是指一类无形的用户界面。“自然”一词是相对图形用户界面(GUI)而言的,GUI要求用户必须先学习软件开发者预先设置好的操作,而NUI则只需要人们以最自然的交流方式(如语言和文字与机器互动。直观地说,使用NUI的计算机不需要键盘或鼠标。KinectforWindowsAPI的核心是NUIAPI,NUI负责从Kinect设备捕获音频流和彩色、深度数据流,而且能够控制Kinect设备,同时也能够支持基本图像和设备管理特性。NUIAPI的主要功能如下:可以访问已经连接到电脑的Kinect传感器;从Kinect图像传感器获得彩色图像与深度图像能够传送已经处理的彩色图像和深度数据;利用彩色图像和深度数据来进行骨骼跟踪;可以用麦克风组来获得音频数据。2.3Kinect应用传统计算机视觉处理的方法都是基于灰度图像或者彩色图像,所以此算法是有局限性,Kinect的诞生让我们进入一个崭新的时代,同时也涌现了一系列优秀的算法使得Kinect的领域也越来越广泛,其中包括了图像分割、视频人体目标跟踪、手势识别、三维空间建模、外科手术应用、遥控机器人等等,以下简要的介绍了Kinect的几个典型的应用领域。[4](1)虚拟购物最成功的应用案例莫过于“虚拟试衣间”,而英国著名的服装店“Topshop”应该是首先安装此个“虚拟试衣问”。相信大部分人已经厌烦了这种在更衣室里一件件的穿衣脱衣反复换装的方式,而“虚拟试衣间”的出现改变了人们购买衣物方式。其实这种“虚拟试衣间”使用了两种先进的技术:一个是增强现实(augmentedreality,AR),另一个是微软Kinect传感器。“虚拟试衣间”的原理是Kinect传感器通过识别顾客的身形,利用AR技术完成虚拟试衣镜,而顾客也只需要对商品做出选择,显示器就会呈现出换装后的画面效果,这样顾客就能轻松的换上一整套衣物,这就解决了网上购物不能试穿的一大弊端。(2)3D雕塑通过国外研究小组的实验,多台Kinect传感器可以用来作为3D摄像机从而进行3D建模。有一个叫BlablabLAB的小组做过一次街头实验,他们首先是用三台Kinect传感器为路人进行了扫描建模,随后用RepRap3D打印机根据Kinect扫描建模制作出了迷你的雕塑。同时制作3D雕塑所花费的时间很少,只需要路人站在特定的区域完成扫描,3D打印机就能够按照扫描的模型进行制作。其中,3D打印机是一种可以“打印”出真实3D物体的设备,功能是和激光成型技术一样的,均是采用分层加工、迭加成形的方式即经过层层叠加材料来制作出3D实体,这是与传统的去除材料加工技术完全不同的。同时,快速的3D建模技术是可以用在许多虚拟现实、仿真技术等领域中。(3)医疗应用Kinect在医学领域中的应用已经得到实现而非是处在理论阶段。比如说,Kinect传感器可以帮助医生进行尸检,此应用运用的是非触摸的体感方式,这不仅节省了时间,同时又达到了不错的效果。就目前而言,为了更加准确安全的手术,Kinect上的传感器还需要一些改造,这些尚处在实验阶段。Kinect体感控制看片,第四军医大学西京医院骨科的医生们将kinect应用在手术室,在术中,手术者可以通过体感控制查看患者的影像资料。这不仅方便了医生手术,同时也减少了手术室人员的流动。再例如智能轮椅通过手势控制系统,利用Kinect深度传感器所获取的图像深度信息实现手部从背景中的分割,对手势目标进行识别,最后把得到的识别结果转换成控制指令通过Ad-Hoc网络传送给智能轮椅,实现运动控制等等。Kinect在医学领域,医学实验中的应用前景也很丰富。3.Kinect三维信息采集与图像预处理3.1Kinect数据采集3.1.1Kinect彩色数据采集Kinect同时具有跟普通摄像头相同的基本功能,即可获得彩色数据[27]。图像的质量取决于从Kinect传感器数据的速度发送到PC机的速度,图像数据返回给应用程序代码的编码格式是RGB编码或YUV编码取决于图像格式的选择。(1)Kinect图像质量。传感器阵列是由USB接口发送数据给PC机,因为高质量图像每帧都需要发送大量的数据流,所以定期更新高质量图像,才可以避免因压缩图像而带来的损失。当传感器准备传送数据之时,Bayer彩色数据会提前将数据压缩转换为RGB格式,这样可以让传送数据的速率达到每秒30帧,不过弊端则是有可能会让图像失真。如果为了获得高质量,让数据不经过压缩,传送速率将会不超过每秒15帧。相反,如果数据没有压缩,那么NUI系统必需要分配缓冲区是比较大的。所以,目前所面临的问题则是要确定打底需要何种形式的彩色数据。(2)Kinect数据格式。下面格式可供彩色数据使用:RGB提供32bit,线性X8R8G888-formattedcolor位图,要使用RGB数据格式,应用程序应该指定为彩色类型。YUV提供16bit,校正线性UYVY-formattedcolor位图,因为使用的是YUV格式数据,所以该流每帧的像素是16位,只占用较少的内存和缓冲区。YUV数据仅用于640×480分辨率,帧速率为每秒15帧。要获得Kinect彩色图像,首先需要打开Kinect的彩色信息通道,随后并上colorStreamHandle来保存该彩色数据流的句柄,从而方便读取数据:hr=NuilmageStreamOpen(NUI_IMAGE_TYPE_COLOR,NUUMAGE_RESOLUTION_640x480,NULL,4,colorEvent,&colorStreamHandle);本论文中所使用的彩色数据格式是RGB格式,分辨率为640*480,数据传输率为每秒30帧。3.1.2Kinect深度数据采集利用深度图像[28]进行的人体跟踪可以克服光线,阴影的干扰,原因在于深度图像具有空间颜色无关性是不会受到光线、阴影等因素的影响。在深度图像中,像素的灰度值是和摄像头到人体目标的距离有关的,故需要在一定的空间范围内进行图像的采集,空间位置可以直接获取目标人体与Kinect之间的距离。人体目标在3D空间中的坐标可以由深度的灰度值与图像的横纵坐标结合在一起来表示,继而可以确认人体空间区域的初始位置,再由通过Kinect获得的深度图计算出初始目标的深度直方图。深度数据的有效范围是:0.8~3.84米,如果超出该范围,值则为0。深度数据流一共有三种分辨率,分别是:640*480像素、320*240像素、80*60像素,本论文使用的分辨率为320*240。要获取Kinect深度图像,是需要打开Kinect的深度信息通道,并epthStreamHandle来保存深度信息流的句柄:hr=NuilmageStreamOpen(NUI_IMAGE_TYPE_DEPTH_AND_PLAYER_INDEX,NUI_IMAGE_RESOLUTION_320x240,NULL,2,depthEvent,&depthStreamHandle);本论文是将一个像素点用2个字节来表示[33],深度摄像头到最近对象的距离是以毫米为单位,用每个像素的高13位来代表;低3位字节用来表示被跟踪人体的索引。如果人体索引值为0则说明用户的位置并没有被找到,当用值为1或2等数值时,则表示找到人体并确定了其位置。为了显示出深度图像,需要将深度数据全部归一化,把获得的深度信息设置给像素的3个通道值(r,g,b)。目前,深度数据最多可以检测到6名玩家。玩家分段数据常用来隔离特定的玩家,或是从原始的彩色深度图像中分离出感兴趣的区域室内人体跟踪系统中获取深度图像的部分代码如下:constNUIIMAGEFRAME4depthFrame=NULL;//深度图像帧NuilmageStreamGetNextFrame(depthStreamHandle,0,&depthFrame);INuiFrameTexture.pTexture=depthFrame一>pFrameTexture;NUILOCKEDRECTLockedRect;//将数据帧提取到LockedRectpTexture一>LockRect(0,&LockedRect,NULL,0);//锁定数据3.1.3Kinect骨骼数据采集KinectYZXXY游戏者的各关节点位置用(x,y,z)坐标表示。不同于深度图像空间坐标,这些空间坐标单位是米。坐标轴x,y,z则是深度感应器实体的空间x,y,z坐标轴。这个骨骼空间坐标系是右手螺旋的,Kinect感应器位于原点上,z坐标轴则和Kinect感应器的方向一致。y轴正半轴向上延伸,x轴正半轴(从Kinect感应器的视角来看)向左延伸,如图3.1KinectYZXXY图3.1骨骼空间(坐标)Kinect摆放的位置会影响图像的形成。例如,Kinect可能会被放置在非水平面上或者可在垂直方向上进行旋转调整从而优化视觉范围。在这种情况下,y轴不是垂直于地面,或平行于重力方向的。在这种情况下,y轴就往往不是相对地面垂直的,或者不与重力方向平行。最后得到的图像中,虽然人是笔直地站立,但是在图像中也会显示出是倾斜的。3.2Kinect图像预处理3.2.1基于双边滤波算法的方法双边滤波方法(Bilateralfiltering)[32]是基于Gauss滤波方法提出的,可以看作是一种加权的非线性高斯滤波。双边滤波器有两个核函数,将Gauss权系数直接与图像信息作卷积运算进行图像滤波的原理,使图像在正常Gauss滤波后很模糊的边缘得以保持清晰,并使图像边缘变得更平滑。此方法可适用于彩色和灰度图像的滤波,经过这样处理过的图像,不仅能滤除噪声也能够保持图像的边缘信息。图像滤波[32]可用式(3.1)表示:Ix,y=1其中:I(x,y)是滤除噪声后的清晰图像,n(i,j)是需要滤波处理的含噪声图像,Ω是像素的邻域,w(i,j)是滤波器在点(i,j)处的权。wp是一个标准量,可用式(3.2)表示:wp=i,jϵ那么,对于高斯滤波来说,权值w(i,j)和像素的空间距离线性相关,距离越近相关性越大,权值也越大,其滤波核函数可以定义如下:wki,j=其中σk是高斯函数标准差。高斯滤波只关注像素的空间距离而忽略了像素值的变化(图像灰度的改变),滤除噪声的同时也平滑了边缘。双边滤波在上面权值的基础上增加了一个衡量像素值变化的权,计算公式如式(3.4wAi,j=exp⁡(-其中σA双边滤波的权值w是wk(i,j)和wAi,j的乘积,图像边图3.2基于双边滤波的预处理结果3.2.2基于黑洞修复的算法当人体目标存于的环境中,如果有像玻璃之类的透明等高反射的物体出现的话,或者是因为物理的深度过大,Kinect传感器获取到的深度图像是会出现黑洞现象[31],这最根本的原因在于在这类区域内Kinect所发射的散斑图案是无法形成的。不管是采集时,Kinect自己本身产生的随机噪声,还是在采集目标或者是因为环境而造成的黑洞,这都将会影响深度信息从深度图像中的准确提取,从而导致人物目标的跟踪失败。根据第二章的内容所介绍,我们可以从中得知Kinect传感器是可以同时采集到彩色的RGB图像和深度图像,本文提出基于黑洞修复的改进算法,就是为了提高滤波质量,从而实现深度图像的快速有效滤波和修复。图3.3Kinect获取的深度图图3.4黑洞修复方法的深度图其中,图3.3为基于Kinect获取的深度图,图3.4为使用黑洞修复方法后进行的人体区域黑洞进行图像修复,通过图3.5可以明显的看出使用了黑洞修复算法后,可以较好的去除人体区域边缘的噪声点使得人体区域更加平滑,能较完整的显示人体区域。表3.1黑洞修复算法Kinect图像黑洞修复算法1:img=imread('Depth0003-副本.png');2:fori=23:4653:forj=17:6014:ifimg(i,j)==05:img(i,j)=img(i,j-1);6:i7:end8:end9:end10:%imshow(img);11:imwrite(uint16(img),'depth000_xiufu.png');

4.人体跟踪技术在前两章的对Kinect简介及三维信息的采集与预处理的基础上,本章将首先介绍人体跟踪方法分析,主要分析了波门跟踪和相关跟踪两大类,着重介绍了本文采用的波门跟踪的原理,接着介绍了Kinect关节点运动数据的获取原理,最后着重分析骨骼跟踪技术。4.1人体跟踪方法分析一般情况下,如果想对目标跟踪定位,所用的方法分为两类,分别是波门跟踪和相关跟踪[18,19,20]两大类。1.波门跟踪波门跟踪方法是一种简单、实用、易于实现的方法,它用于目标与背景的对比度较高的情况。波门跟踪通常是选取某一个部分为跟踪对象,而不考虑波门外的图像信息。这种方法可以减少跟踪过程中的运算量,提高跟踪效率。根据跟踪系统对跟踪精度的不同要求,波门跟踪方法一般分为两类分别是质心跟踪[23,24]及边缘跟踪,。质心跟踪质心跟踪可以认为也是形心跟踪的原因在于图像是均匀二值图像。质心是一个用来标志运动目标位置的特征参数。所以说,质心才是均匀二值图像中心。设质心的坐标为(X,Y),如式4.1和式x=i=0n-1j=0m-1y=i=0n-1上述公示中,A表示是目标面积。其最大优点则是其增益是一定不变的,所以当遇到大面积目标需要跟踪时可以使用此种方法。边缘跟踪边缘跟踪共有两种方法分别是普通的边缘跟踪和双边缘跟踪。普通的边缘跟踪确定波门的大小主要是根据运动目标的四个边缘点即上、下、左、右的位置来确定;而双边缘跟踪则只是利用四个边缘的中心点确定目标位置。虽然以上两种方法实现都很简单,但是由于受图像质量和噪声影响,容易受干扰,所以跟踪效率比较低。2.相关跟踪相关跟踪首先要提前选择合适的匹配模板[21,22],然后根据相关性计算,让模板自己找到匹配的区域,同时定位其目标的位置。相关跟踪不仅适合目标对比度和背景较低的情况,同样也适用于当小目标处于远距离的跟踪。相关跟踪的条件共有两条,第一是运动目标需要有基本不变的参数值,比如说它的灰度值不能有太大的变化,第二则是目标与背景需要有很大的差异,或者人体目标需要有固定的纹理特征等。但是若运动目标变化过大,则此方法就不能使用了。由于在室内采集到的图像可能会导致因传感器倾斜致使人体运动过程中身体面积不断变化,或者运动目标没有固定不变的特征参数作为相关跟踪的匹配模板。基于以上原因,本文在室内人体跟踪过程中选用的是第一种方法,即波门跟踪法。4.2骨骼跟踪技术4.2.1骨骼技术的介绍骨骼追踪技术通过处理景深数据来建立人体各个关节的坐标,骨骼追踪能够确定人体的各个部分,如哪部分是手、头等身体部位。它是Kinect的核心技术,可以准确的标定人体的20个关键点,并能对这20个点的位置进行实时跟踪。利用这项技术,可以开发出各种机遇体感人机交互的有趣应用。其中,UI骨骼API提供关于游戏者距离Kinect传感器详细的位置和方向信息。这些应用中提供的数据是一个点集,共20个关节点构成骨骼位置,简称骨架,如图2.4所示。人体骨架表示当前人体目标的位置和构成,应用程序可以使用骨骼信息来初始化跟踪骨骼和NUI。图4.1人体骨骼点位置完成骨骼跟踪系统初始化完成骨骼跟踪系统初始化连接Kinect人体目标进入Kinect摄像范围内点击Link键没有跟踪到跟踪到根据跟踪的估计到Kinect将图像读取入界面中继续检测人体的识别根据深度图像确定人体的部位分类根据SDK获得骨骼关节点是否图4.2人体骨骼提取流程图4.2.2人体骨架提取的原理Kinect利用深度摄像机获取深度数据流,在产生的深度图像中每个像素点都包含了特定的距离信息即三维空间的深度信息。接着Kinect从深度信息中排除噪声,辨识出人体各个关节点的位置,从而提取出了人体的骨架,在整个过程中主要经过三个环节,分别是:人体的识别、人体部位的分类以及关节数据提取[25]。人体的识别人体的识别也可以叫做是用户数据的分割,主要任务就是将噪声像素点从人体周围过滤,从而使人体区域出完整的从深度图像中分离。因为深度相机受到环境光影响比较小,所以在此过程中,Kinect将人体轮廓从深度图像中提取的会比从彩色图像中提取的结果更好。当Kinect识别人体轮廓时,首先根据体编码的结构判断离Kinect近的区域,以人体结构自身特征和Kinect内置的人体分析算法特点为依据,然后让Kinect逐点的扫描区域内深度像素点,最后运用数字图像技术,从而判别这些像素点是不是属于人体的一部分,达到将人体轮廓可以从深度图像中分离出来的目的。两个字节来存储深度图像的每个像素点,其中深度信息高是由13位表示,而低3位比特则表示现在正在跟踪的人体编号索引,所以编号只能表示0到7之间任意的整数。当索引号为0时,则表示在此位置上是没有人存在的。所以,我们在采集深度数据时,只需要根据人体索引号便可以将在深度图像中的人体区域快速的分离出来,从而可以实现人体的识别[26]。(2)人体部位的分类上一环节是从深度图像中将人体区域识别出,所以就可以从深度图像中识别出人体的每个部分了,但是每个部位具体是人体的哪个部位,又因为人体行为多样化,所以不能仅仅依靠人体行为对每个部位进行分类,所以在分类识别过程中,通过机器学习算法,用特征值记录并识别人体的各种行为,并快速分类和定位人体的部位。在此过程中,Kinect是以RGB摄像头所采集的数据作为分类的依据,,最终的分类是根据RGB摄像头与深度摄像机所得的权值进行考虑[26]。(3)关节数据提取在不同部位的人体识别后,Kinect需要从人体的各个方面和角度去分析,采用机器学习的方法,根据每一个可能的像素点来确定关节点。本次实验采用的是基于Windows的KinectSDK,因此根据SDK提供的骨骼跟踪功能,便可以获的人体20个关节点运动数据,同时利用SDK提供的用来表示各关节点的枚举常量,即可提取关节点数据[27]。5.室内人体跟踪系统设计本文是在室内环境下,通过硬件平台使用Kinect传感器来采集视频图像,并对图像数据进行处理,随后在VisualStudio2010软件平台上,用C语言编程和Opencv函数库从而实现人体目标的跟踪。整个开发环境主要由硬件部分和软件部分构成。5.1系统设计5.1.1软件系统设计实现系统功能的根本途径是软件编程,只有通过软件编程各种算法才能具体实现。本小节将对算法的软件系统进行介绍。以下是室内人体跟踪系统的软件配置:软件配置:(1)PC机操作系统:Windows7操作系统;(2)Opencv2.4.3版本;(3)VisualStudio2010版;(4)Kinect传感器驱动:PrimeSense公司官方版本SensorKinect。实验中Kinect彩色图像的分辨率为640*480,深度图像的分辨率为320*240,另外设定Kinect的室内可视范围为:1.5米~3.5米。OpenCV是Intel的开源计算机视觉库。它由一系列C函数和少量C++类构建成的,实现了图像处理和计算机视觉方面的很多通用算法。本软件系统是在VisualStudio2010

编程环境下实现的,VisualStudio2010

是一套完整的开发工具,用于生成ASP.NETWeb应用程序、XMLWebservices、桌面应用程序和移动应用程序。VisualStudio2010

由编辑器、调试器、编译器以及程序向导、类向导等开发工具组成,通过一个名为DeveloperStudio的组件集这些组件组成了开发环境。VisualStudio2010

采用C++语言编写,并支持面向对象设计方法,使用基础类库MFC。之所以用VisualStudio2010

开发软件的原因在于,其做出来的软件,稳定性好、可移植性强。VisualStudio2010

中C++语言编程最大特点是支持面向对象程序设计,它引入了类、继承、多态和重载等面向对象的新机制。采用上述的目标检测与跟踪算法,在VisualC++编程环境下实现了系统功能,在如图4.1所示的基于Kinect的室内人体跟踪系统界面下,可以进行连接监控视频、载入视频、目标检测、目标跟踪、保存图像等操作。图4.1基于Kinect的室内人体跟踪系统界面5.1.2硬件系统设计室内人体跟踪系统是以计算机为核心,结合传感器技术、多媒体技术以及数字视频压缩技术的一种远程监控技术。以下是室内人体跟踪的硬件配置:硬件配置:(1)计算机系统:包括计算机硬件系统和软件系统。计算机为普通PC机,双核CPU,主频2.5GHZ,内存4G。(2)Kinect传感器一台,包括USB连接线和电源。室内人体跟踪系统早已经由早期的模拟信号采集系统发展到现今的数字视频信号采集系统,实现了图像采集的数字化、网络化和智能化。本系统是基于Kinect传感器来设计的,以下是Kinect传感器的简要参数[30]:传感器参数传感器参数指标感应范围0-4米视角垂直43°,水平57°机械倾角范围(垂直)±27°帧率(深度及色彩)每秒30帧(FPS)深度图像分辨率VGA(320×240)色彩图像分辨率VGA(640×480)音频格式16kHz,16bit单声道脉冲编码调制(PCM)音频输入4个24为模数转换麦克风组,Kinect驻波信号处理(回声消除、噪声抑制)表4.1Kinect传感器参数指标5.2实验结果运行程序后,将会在出现基于Kinect的室内人体跟踪系统界面,如图4.1所示。随后点击Link键,连接Kinect摄像头。当单人进入Kinect传感器的监视范围内时,Kinect会识别出单个人体,同时会显示人体骨骼及以设定为黄色的中心质点,如图4.2所示。当人体走动后,将会出现人体的跟踪路径图,如图4.3所示。在Kinect运行的时候,Kinect会以每20帧为单位各保存一张彩色图像和深度图像

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论