在研究生阶段,我的研究课题是立体双目视觉的研究与应用。本文将从下面几个方面进行讨论。
1. 题目内容
2. 扩展题目、研究的意义及达到的目标
3. 技术难点
4. 大体计划
获取空间三维场景的距离信息是计算机视觉研究中最基础的内容。获取距离信息的方法和技术很多。立体视觉是计算机被动测距方法中最重要的距离感知技术,它直接模拟了人类视觉处理景物的方式,可以在多种条件下灵活的测量景物的立体信息,其作用是其它计算机视觉方法所不能取代的。对它的研究,无论是从视觉心理的角度还是在工程应用中都具有十分重要的意义。
立体视觉是由多幅图像(一般两幅)获取物体三维几何信息的方法。在计算机视觉系统中,可以用双摄像机,从不同角度同时获取周围景物的两幅数字图像,然后通过一系列图像的处理,由计算机重建周围景物的三维形状与位置。
三维重建的先决条件是要建立两幅图像的对应关系。
用立体视觉进行三维重建,在计算机视觉中是指由两幅或多幅图像恢复物体三维几何形状的方法。
综上可知,双目视觉是立体视觉的一种,其目的是通过拍到的两幅图像,经过图像处理,目标识别,目标匹配,最后经过对应的计算关系得到物体在空间中的位置或者是恢复物体的三维几何形状。
一个完整的立体视觉系统通常可分为图像获取、摄像机标定、特征提取、立体匹配及内插等6大部分。
项目中使用的是usb摄像头,所以有一个图像的获取的问题。
现在有两种方法可以通过usb摄像头获取视频流,一种是vfw,一种是用directshow技术。在windows桌面操作系统下,这两种方法都可以获得usb摄像头的视频流,并截取每一帧的图像,为下一步的图像处理作准备。这里我选用的是directshow技术。
如果是进行实时的处理,也就是双目视觉应用在一个运动的环境中,就会有两个摄像头同步获取图像的问题。也就是说,最后图像处理中进行处理的图像数据应该是同一时刻获得的。
这两部分工作,现在基本已经完成,但两个摄像头同步获取图像的工作还没有通过实验验证。不过应该不难。
除了这些以外,由于是要进行双目视觉的工作,所以,两个摄像机的摆放位置关系还是要考虑的。分析表明,基线长度越长,得到的空间中点的位置的相对误差越小,但是基线长度不可太长,否则,由于物体各部分的相互遮挡,两个摄像机可能不能同时观察到一点。另外,两个摄像机之间的摆角也是要考虑的。这样才能尽可能的减少视觉上的死区。一些论文讨论了摆角和可见区域的关系。不过这部分,我也只是有个概念,但还没有具体考虑。
三维计算机视觉系统应能从摄像机获取的图像信息出发,计算三维环境物体的位置、形状等几何信息,并由此识别环境中的物体。图像上的每一点的亮度反映了空间物体表面某点反射光的强度,而该点在图像上的位置则与空间物体表面相应点的几何位置有关。这些位置的相互关系,由摄像机成像几何模型所决定,该几何模型的参数称为摄像机参数,这些参数必须由试验与计算来确定,实验与计算的过程称为摄像机标定。摄像机模型是光学成像几何关系的简化,最简单的模型为线性模型,或称为针孔模型(pin-hole model)。然而当计算精度要求较高,或者在近距、广角的情形时,这种线性模型不能准确地描述摄像机的成像几何关系,必须引入线性或非线性畸变补偿,利用校正后的模型进行三维重建才能得到更高的精度。
摄像机定标有传统的摄像机标定方法和摄像机自定标方法。作为一般的工业应用,传统的定标方法,由于其求解简单,概念清楚,易于理解而被广泛使用。摄像机的自定标技术因其不需要定标参照物,直接利用从图像序列中得到的约束关系来计算摄像机模型的参数,使实时的在线定标摄像机参数成为可能。传统的摄像机定标方法中的研究重点是:寻求更准确、更符合人类视觉特点的摄像机模型,建立通用的摄像机标定方法,力求实用,快速简单;如何有效合理的确定非线性畸变校正模型中的定标参数。摄像机自标定方法中的研究重点是:如何解决自标定技术中对噪声敏感的问题,如何使自标定算法更加简单实用,尽量避免复杂的非线性搜索问题。
近期在本课题中只打算采用不考虑畸变的传统的摄像机标定方法对usb摄像头进行标定。
成像变换涉及到不同坐标系统之间的变换。考虑到图像采集最终结果是要得到计算机里的数字图像,在对3D空间景物成像涉及到的坐标系统主要有:世界坐标系,摄像机坐标系;像平面坐标系统;计算机图像坐标系统。
摄像机标定是标定摄像机的内部参数和外部参数,这些内部和外部参数,可以用一个称为投影矩阵的矩阵综合表示出来。如下面的公式所示:
其中, 为空间中一点的摄像机坐标系中Z轴方向的坐标值,在以后的计算中是可以被约去的。 , 。( , )是光轴与图像平面的交点,即为像平面坐标系的原点,单位为像素,是在计算机图像坐标系统中表示的值。该点一般位于图像中心处,但由于摄像机制作的原因,也会有些偏离。 和 分别是每个像素在x轴和y轴方向上的物理尺寸。由于 , , 和 只与摄像机内部结构有关,所以称这些参数为摄像机内部参数; 完全由摄像机相对于世界坐标系的方位决定,称为摄像机的外部参数。这样确定某一摄像机的内外参数,称为摄像机标定。
摄像机标定一般都需要一个放在摄像机前的特制的标定参照物,摄像机获取该物体的图像,并由此计算摄像机的内外参数。标定参照物上的每一个特征点相对于世界坐标系的位置在制作时应精确测量。通过对需要标定的摄像机采集到的图像进行处理,找出用于标定的参照物中的特征点,将其与世界坐标系中的点一一对应上,这样就可以通过公式,通过最小二乘法求出包含摄像机内外参数的投影矩阵。有了投影矩阵,就可以求出摄像机的各个内外参数了,这会带来误差。不过,在双目视觉中,有投影矩阵就足够了,不用再对投影矩阵进行摄像机内外参数的分解。
在本课题中,使用一个棋盘格作为标定参照物。作为传统的没有考虑畸变的摄像机标定方法,其基本步骤很明了,但是难点在于对用于标定的摄像机拍到的标定图像的特征点的提取必须精度高才行,最后得到的图像坐标会达到亚像素的精度。这是属于图像处理那一方面的内容。
曾根据传统的没有考虑畸变的摄像机标定方法,用vc编写过一个进行摄像机标定的程序。里面的关键是图像处理。
大体步骤如下:
1。为方便,在拍到的图像中只保留了真正用于标定的图像的部分。这个时候得到的图像应该是大体黑白分明的,只是由于光线的缘故,图像中还是不只有黑色和白色两种颜色的。
2。检测图像的边缘,这里用到了彩色图像边缘检测。因为如果直接先给一个阈值,将图像进行二值分割,那么首先阈值不太好给定,这样带有太多的主观性。在这里只用了最简单的方法进行彩色图像边缘检测,是根据一篇硕士论文给出的彩色边缘检测算子做的,最后的结果是得到一灰度边缘图像。
3。用大津法(OTSU)法自动求灰度图像分割的阈值,最后通过求得的阈值,将图像二值化。
4。用形态学上的图像的细化的方法,对二值图像进行细化。因为检测到的边缘会有一定的宽度。
5。通过进行hugh变换,求图像中的直线,对横线和纵线分别求。并把直线画在原来的图像和处理后的图像上。
6。求横线和纵线的交点坐标,为此还要对横线和纵线进行排序。在这里主要是解方程组,为了求矩阵的逆,为方便采用了vc和matlab相连的方法。最后求得的图像点的坐标也在原图和变换后的图像中表示了出来。
7。输入图像中对应的点在世界坐标系中的位置,又一次用vc和matlab相连,用最小二乘法求得M矩阵。
存在的问题是,由于图像处理的效果不理想,在实验中,看到的找到的图像中的点不是很准,虽然在图像中看到的不过只是1到2mm左右,但是,最后却会产生不小的误差初步认为是两部分的原因,图像处理方面用到的方法可能不是很好(不是每一步的算法不行,而是自己不知道如何用这些算法,达到最好的效果的问题)。摄像头当时拍出的图像效果也不是很好,而且当时作实验时,也没有精确的测量标定点的世界坐标系的坐标。解决好这些问题,是下一步工作要做的。
立体匹配是双目视觉中的关键技术,也是难点。
立体匹配是寻找同一空间景物在不同视点下投影图像中像素间的一一对应关系。与普通的图像模板匹配不同,立体匹配是在两幅或多幅存在视点差异、几何和灰度畸变以及噪声干扰的图像队之间进行的,不存在任何标准模板。当空间三位场景被投影为二维图象时,受场景中诸多因素,如光照条件、景物几何形状和物理特性、噪声干扰和畸变及摄像机特性等的影响,同一景物在不同视点下的图像会有很大不同,要准确地对包含了如此多不利因素的图像进行无歧义的匹配,是颇为困难的。
目前,对立体视觉的研究可归纳为两个方向:1。从理解人类视觉的立体融合机制出发,试图建立通用的人类双目视觉计算模型。2。从实际应用和要求出发,致力于建立适用于专门领域和面向对象的实用的立体视觉系统,通过强调场景和任务的约束等手段来降低视觉处理问题的难度,从而增加系统的实用性。
任何一种立体匹配方法的设计,都必须解决下面三个问题。1。基元选择:选择适当的图像特征作为匹配基元,如点、直线、区域、相位等。2。匹配准则:将关于物理世界的某些固有特征表示为匹配所必需遵循的若干规则,是匹配结果能真实反映景物的本来面目。3。算法结构:利用适当的数学方法设计能正确匹配所选基元的稳定算法。
首先,要选择合适的匹配基元。匹配基元是指用以进行匹配的图像特征,由于立体成像的视点差异以及噪声干扰等因素的影响,要对图像中所有的像素都进行无歧义的匹配是很困难的,为此,应该选择能表征景物属性的特征作为匹配基元。目前常用的匹配基元主要有:点状特征、现状特征和区域特征等。
匹配准则是根据所选匹配基元将现实物理世界的某些固有属性表示成匹配所必须遵循的若干规则,用以提高系统的去歧义匹配能力和计算效率。Marr提出的唯一性约束、相容性约束和连续性约束被认为是匹配控制中最一般、最基本的物理约束。在这三个基本约束的基础上,针对处理景物的特点和应用要求,通过附加某些先验知识能够引申出一些特定的匹配控制准则。常用的控制准则有:唯一性约束,连续性约束、相容性约束、极线约束、顺序一致性约束。
实现匹配的算法结构是和匹配基元的选择以及匹配准则紧密相关的,一般应该兼顾有效性和计算量。立体匹配实质上是在匹配准则下的最佳搜索问题,许多数学中的最优化技术都可应用于立体匹配,如动态规划方法、松弛法以及遗传算法。
根据匹配基元和方式的不同,目前的立体匹配算法基本上可分为两类:即基于区域相关(Area-based)的匹配和基于特征(Feature-based)的匹配。常用的匹配特征有图像中的边缘点、角点等灰度不连续点和边缘直线等。
这里,如果仅是用双目视觉判断一个小球的位置,也许可以直接求出两幅图像中的小球的球心的位置作为匹配基元,这样想起来会很简单。不过,这样就要求球心的位置要比较准确,而在图像处理中,要准确地找到小球的球心,是一个难点。但是,具体效果如何,还没有经过试验验证,现在这一步还处在试验图像处理的方法的阶段。
当两个摄像头的标定结束,即得到了两个摄像头的投影矩阵,并且,通过图像处理,要求的空间点在两幅图像中的位置也都得到了。这时可以方便的通过公式计算出这个空间点在世界坐标系中的坐标。
由于不可能对实际场景中的每一个点都在两个摄像头上拍到的图片进行精确的匹配,因此,如果要求得整个场景的三维图像,就要进行内插。
在研究生期间,希望能搭建一个进行双目视觉各种算法研究的软件的平台。完成一个基本的程序框架,在其中也实现基本的双目视觉的算法。
因此,初期,可能工作的重点会在搭建这样一个软件平台上。这其中会包括传统的摄像机标定和简单的物体的双目视觉测距。
就如上面所说的,对图像的特征的匹配还没有普遍适用的算法,所以,需要在匹配的时候加入一些先验的知识,只有这样才会有比较好的效果。先验知识越多,得到的结果越好。因此,立体匹配会是针对不同的应用有不同的图像处理的方法。首先将会是从小球的测距开始。
期望的最后搭建的软件平台能在屏幕上看到实时的视频捕捉后图像处理的效果,也就是将立体匹配的结果和测得的物体的距离都实时的显示出来。这个平台打算用vc和directshow实现。而对捕获的视频图像的处理可以用一个filter实现。所以,当这个平台实现后,将来只要编写不同的filter,就可以针对不同的应用场合实现不同的立体匹配,作不同的算法的研究。
要完成这个平台,下一步的工作是摄像机标定还是需要继续做下去,但是作的还是实现方面,即如何提高标定的精度,分析标定不成功,或是标定误差太大的原因,更好地进行图像处理,最终目标是用传统的摄像机标定方法能较好的对摄像机进行标定。另外,对小球的球心的提取,也是图像处理方面的问题。
还要比较深入的学习directshow技术。虽然,用directshow技术,实现了视频流的捕获,抓图。但这是最简单的。如果要编制filter,还有好多要学的,现在还不太明白。
另外,由于是嵌入式课题组的,有必要将wince这个操作系统有了解,才能更好的在上面进行程序的设计。也就是要在wince下应用双目视觉系统。虽然原理是一样的,但是,在具体应用中,肯定会遇到不少问题。但希望首先在普通的windows平台对这个系统的精度进行了验证,再移植过去。这部分工作最晚要在3月份中旬完成。
如果有时间,会进一步研究一下有畸变的摄像机标定算法和自标定方法,以及如何将双目视觉应用到别的场景中。