第二章基于视觉的增强现实系统框架2.1系统框架2.2系统的模块介绍2.3图像采集与处理模块2.4三维模型绘制模块2.5标识识别模块2.6三维注册模块2.7深度检测模块2.8虚实融合模块2.9动作交互模块2.1系统框架2.2系统的模块介绍系统由9个主要的子模块组成:图像采集子模块数字图像处理子模块注册定位子模块标识识别子模块,深度检测子模块图形渲染子模块用户交互子模块虚实融合子模块多媒体控制子模块2.2系统的模块介绍图像采集子模块从图像输入设备中采集视频流,从视频流中获取视频图像。数字图像处理子模块为三维注册子模块和虚实结合子模块提供非常重要的基础数据。它的具体功能是通过图像分割,边缘检测等图像处理方法对采集的图像进行处理,从工作环境背景中识别出预先在环境中设置的用于定位的标志。标识识别子模块根据模式匹配算法,使系统从摄像机的视频图像中正确的识别出预先设计好的标记物,同时给出标记物的ID号码,作为系统中图形显示子模块输入参数的一部分,以使得图形显示子模块将预先设计好的三维模型正确的显示在特定的位置上。2.2系统的模块介绍注册定标子模块以图像检测模块的输出结果为数据的输入,通过相机标定内部参数的算法和相机标定的外部参数的算法,将程序中所用到标记的三维位置和姿态计算出来,最后相机的外部参数作为输出结果输入到虚实结合子模块,用openGL等软件中的虚拟相机模拟真实世界中的相机,产生良好的虚实环境无缝融合的场景。深度检测子模块检测特定空间点的深度信息。为了判断系统中渲染的虚拟物体与真实环境中物体的遮挡关系,系统中需要计算虚拟物体与真实场景中物体的深度信息,通过比较它们的深度信息,确定虚拟物体与真实场景中物体的遮挡关系,实现系统中真实场景与虚拟物体遮挡一致性,同时通过检测真实场景中用户的手势等交互动作,完成用户与场景中虚拟物体的自然交互。2.2系统的模块介绍图形绘制子模块实现对虚拟三维模型实时动态的渲染。虚实融合模块主要完成前景和虚景融合、遮挡处理、边缘融合等工作。额外的视觉效果,如光照、前景色彩增加等也在模块中实现。为了达到逼真的虚实融合的效果,正确显示虚拟物体和真实物体的遮挡关系,需要将深度检测模块的输出结果作为输入传入虚实结合子模快,虚实结合子模块根据真实场景中的物体与虚拟物体的遮挡关系进行虚拟场景与真实场景的无缝融合。用户交互子模块为用户提供两种与虚拟三维模型进行直接交互的方式。多媒体控制模块模拟系统环境中产生的各种各样的声音元素,同时把视频文件播放出来。2.3图像采集与处理模块图像采集模块主要功能是从图像输入设备中采集视频流,从视频流中获取视频图像。增强现实系统图像的采集应该满足实时性、精确性的要求。目前性能较高的CCD摄像头都可以满足系统对图像精度和获取速度的要求。微软DirectX开发包中的Direetshow模块,是微软公司发布的在Windows环境下运行的一种流媒体处理体系,是DirectX的组成部分之一。Directshow支持很多种多媒体格式,包括常用的ASF,MPEG,AVI,MP3,WAV等。当系统安装有硬件加速设备的时候,Directshow可以自动检测并使用硬件加速设备。同样,它也支持没有硬件加速设备的系统。2.3图像采集与处理模块2.3图像采集与处理模块在基于计算机视觉的系统工程中,数字图像处理子模块为三维注册子模块和虚实结合子模块提供非常重要的基础数据。它的具体功能是通过图像分割、边缘检测等图像处理方法对采集的图像进行处理,从工作环境背景中识别出预先在环境中设置的用于定位的标志。数字图像处理子模块的性能优劣直接影响系统在三维注册阶段的实时性和虚拟结合模块中无缝融合的精确性。数字图像处理子模块的三个主要过程是图像预处理与图像分割,边缘检测和提取系统感兴趣的特征点。2.3图像采集与处理模块具体实现在第三章详细介绍2.4三维模型绘制模块可以用DirectX、游戏引擎中的绘制三维模型语句和渲染语句来绘制三维模型,但所绘制的模型相对简单。用3DsMAX、Maya来绘制三维模型,然后导出到增强现实程序开发环境。三维模型的运动控制由增强现实程序开发环境中的程序实现,但人物运动序列等看可以在3DsMAX、Maya中建好后导出。模型的复制可以用程序实现。具体绘制方法在第四章中详细介绍2.5标识识别模块在增强现实系统中,经过图像分割、边缘检测和轮廓提取之后,我们就可以把以上步骤的结果用于标识识别子模块根据模式匹配算法,使系统从摄像机的视频图像中正确的识别出预先设计好的标识,同时给出标识的ID号码,作为系统中图形显示子模块输入参数的一部分,以使得图形显示子模块将预先设计好的三维模型正确的显示在特定的标记上,实现对真实环境的增强。标识分为两类,一类是人工设定好的标识,一类是场景中自然具备的。人工设定好的标识一般由具有一定宽度的黑色封闭的矩形框和内部的各种图形或文字两部分构成。2.5标识识别模块对于人工设定好的标识通过对视频中的每一帧图像运用图像分割、边缘提取、连通区域检测、轮廓提取等过程判断视频图像中是否含有封闭的黑色矩形框。匹配连通区域中的四边形结构,记录视频图像中所有标识所在区域和坐标。分别提取各个标识四边形的边缘像素坐标,找出四边形标识四个顶点坐标,计算出标识边缘的直线方程(屏幕坐标)。由于系统中使用的标识记是事先设计的有规则的标识,所以能够快速获得检测结果。2.5标识识别模块对于人工设定好的标识标识所代表的具体信息用标识内部的图形或文字表示,如表示何种目标或在此应显示何种虚拟物体。具体的标识内部图像可以根据需要手动选择任意的图像作为标识物,可以通过几种图元的组合自动生成工程中所需要标识。进行模板匹配,来实现标识识别。在做标识匹配前,需要进行图像正规化。2.5标识识别模块图像正规化系统中采集图像的摄像头在采集图像的时候处于随机的位置,即从任何角度任何位置拍摄都可以,那么,摄像头镜面不一定与标识物的平面是平行的,摄像头的光轴也并不一定是垂直于标识物。所以采集到的图像也是不规则的,标识物的外轮廓发生了一定的变形,这些变形包括平移、旋转、缩放仿射变形等。为了用预先制作的模版和图像进行匹配,从而识别标识物的ID号码,需要对图像进行几何变换,使图像正规化2.5标识识别模块图像正规化将从摄像头获取的标识图像转变为摄像头和图像是正对着的,摄像头的光心垂直于标识物时拍摄的视频图像。一般情况下,由于由摄像机引起的这种图像变换是仿射变换。通常情况下,这种变换是线性的,即能够保持线段的直线性、距离化、平行性不变。在图像线性变形的假设条件下,变形图像点的坐标(X,Y)与原图像上点的坐标(x,y)之间的关系是:2.5标识识别模块其中,C为3*3的矩阵,这个矩阵的第三列对平面图像没有影响,所以只要确定了变形图像上的3个点以及在没有变形图像上与它们对应的3个点的坐标,就可以代入方程组,求出方程中的六个未知数。也就是求得了变形图像和未变形图像之间的对应关系。2.5标识识别模块模板匹配图像匹配技术是数字图像处理领域的一项重要研究。根据已知模式(模板图),到另一幅图中搜索相匹配的子图像的过程,称为模板匹配。模板就是一幅已知的小图像,具体地说模板匹配的过程是在一幅大图像中搜寻目标,己知该图中有要找的目标,通过一定的算法可以在图中找到目标,确定其坐标位置。图像的模板匹配技术可以分成直接基于灰度值的方法以及基于特征提取的方法两大类。2.5标识识别模块一幅图像与另一幅图像接近的程度需要一个尺度来描述,在数学上常用向量的范数做为一个尺度。假设输入图像为M,已知图像为T,它们之间的相似度可以用下式衡量:其中,d是一个距离标量,表示两个向量之间的距离。通过在图像中寻找使d值最小的区域,确定被寻找的图像T在输入图像中的位置等信息。为了防止出现匹配错误的情况,一般会在应用中设置一个阀值,当d小于某个阀值时,认为两幅图像有一定可比的相似度,当d大于某个阀值时,认为两幅图像不具有可比的相似度,不参与d值的比较。2.5标识识别模块由于在拍摄图像的时候,会因为光照强度不同,获取的图像在灰度级的分布上会不同,这种情况使得两张原本形状相似的图像被检测为不相似。为了避免这种情况,实际应用中使用两个向量的夹角这个标准来衡量两个图像的相似度,公式如下:系统中采用标准相似度来进行模版匹配。所采用的特征是图像的标识物区域的面积比几何特征。面积比计算比较简单,实时性好;同时在图像进行线性变换的过程中面积比特征不会改变。在对系统的标识物事先设定好的情况下会有较高的精度。2.6三维注册模块增强现实系统必须能够实时地检测出观测者(或摄像机)相对于真实场景的位置和方向角,以及成像系统(摄像机)的内部参数(焦距和像元高宽比等)根据这些信息来实时确定所要添加的虚拟信息在真实空间中的映射位置,并将这些信息实时显示在图象中的正确位置。在用户看来,无论从任何角度观察,都应该使虚拟物体与真实场景保持三维欧氏空间的几何一致性。这就是AR中的虚实注册(Registration)所要完成的任务。2.6三维注册模块三维注册子模块以图像检测模块的输出结果为数据的输入,通过相机标定内部参数的算法和相机标定的外部参数的算法,将程序中所用到标记的三维位置和姿态计算出来。相机的外部参数作为输出结果输入到虚实融合子模块,用DirectX或openGL中的虚拟相机模拟真实世界中的相机,产生良好的虚实环境无缝融合的场景。将三维的虚拟动画模型渲染到特定的标识物上,实现增强现实的效果。该模块的详细设计和具体的算法在第五章有详细的讨论。2.7深度检测模块为了判断系统中渲染的虚拟物体与真实环境中物体的遮挡关系,系统中需要计算虚拟物体与真实场景中物体的深度信息,通过比较它们的深度信息,确定虚拟物体与真实场景中物体的遮挡关系,实现系统中真实场景与虚拟物体遮挡一致性由计算机视觉的相机标定技术可以知道,一幅图像中的一个点确定空间中一条直线与这个点相对应,为了在系统中求取图像上一点的深度信息,需要两幅图像或多幅图像。计算一个点在多幅图像上深度信息的直线方程,然后联方程,用最小二乘法计算出图像点的深度信息。2.7深度检测模块深度检测模块的流程图2.8虚实融合模块虚实融合模块主要完成前景和虚景融合、遮挡处理、边缘融合等工作。额外的视觉效果,如光照、前景色彩增加等也在模块中实现。在系统中,为了达到逼真的虚实融合的效果,正确显示虚拟物体和真实物体的遮挡关系,需要将深度检测模块的输出结果作为输入传入虚实结合子模快,虚实结合子模块根据真实场景中的物体与虚拟物体的遮挡关系进行虚拟场景与真实场景的无缝融合。虚实融合模块处理虚拟物体与真实物体之间的遮挡关系的具体步骤如下:2.8虚实融合模块如果物体在监控区域,将物体的深度信息和监控区域中虚拟物体的深度信息进行比较。如果真实场景中物体的深度大于虚拟投影三维模型的深度信息,从固定摄像机的视角看,真实场景中的物体与虚拟物体的空间位置关系是真实场景的物体在后,虚拟物体在前,那么就直接将三维虚拟的模型投影在标记物上。如果真实场景中物体的深度小于虚拟投影的三维模型的深度信息,真实场景的物体在前,虚拟物体在后,那么就将三维虚拟的模型投影在标记物上之后,将高斯抠图得到的真实物体的图像渲染到虚拟三维模型之上,显示真实物体与虚拟物体的遮挡关系。2.8虚实融合模块虚实融合模块要将光照、阴影、前景色彩增强等视觉效果根据环境的需要和真实世界的场景加入到系统中,使得增强现实系统中的场景更加逼真。2.9动作交互模块动作交互模块为用户提供与虚拟三维模型进行直接交互的方式。用户动作通过两种方式取得,一种是通过Kinect、扇形传感器等硬件设备取得,一种是通过对视频信号的识别直接取得手部等的肢体动作信号。把动作信息以输入参数的形式传给动作交互模块,动作交互模块分析参数后输出交互的语义信号,并把这个信号以参数的形式传给图像渲染模块的动画控制函数,触发一段预先设定好的动画。