背景技术
增强现实是在虚拟现实的基础上发展起来的新技术。它是通过计算机系统提供的信息增加用户对现实世界感知的技术,将虚拟的信息应用到真实世界,并将计算机生成的虚拟物体、场景或系统提示信息叠加到真实场景中,从而实现对现实的增强。基于视觉标志的跟踪注册技术是目前开发增强现实系统运用最广泛的。所谓的“标志”,是指由用户自定义的一个特殊的图形图案,通过识别标志的位置来确定虚拟信息的空间位置信息。
典型的增强现实开发框架ARToolkit,其视觉图形标志是由一个正方形的黑色边框和内部的模版图组成的,由于它在编码匹配方面采用了图形相关性匹配,匹配效率和编码数量都受到了很大的限制,而且被遮挡时失效;ARTag标志对之前的ARToolkit标志进行了相应的改进,采用了编码的形式,它是将正方形的边长分成10个等分,从而得到100个方格子区域,标志的边框为宽度为2格的白色或黑色边框,通过对标志内部的6*6个方格子进行编码,为支持解码纠错,使用了海明码等编码技术。
海明码是奇偶校验的一种扩充。它采用多位校验码的方式,在这些校验位中的每一位都对不同的信息数据位进行奇偶校验,通过合理地安排校验位和原始数据的组合,达到发现错误,纠正错误的目的。由于海明码是一个可以有多个校验位,具有检测并纠正一位错误代码的纠错码,所以它也仅用于信道特性比较好的环境中,如以太局域网中,因为如果信道特性不好的情况下,出现的错误通常不是一位。海明码的检错、纠错基本思想是将有效信息按某种规律分成若干组,每组安排一个校验位进行奇偶性测试,然后产生多位检测信息,并从中得出具体的出错位置,最后通过对错误位取反来将其纠正。
在上述增强现实系统中,标志图案的设计往往分为两个独立的部分,一部分是专门用于标志图形的编码,另一部分用于特征点的提取与姿态的计算,这样分离的结果是造成标志图案需要大面积的编码区域,不利于减小标志的尺寸和提高单位面积可提供的精度。
例如,授权发明专利《一种基于视觉不变量的新型标志点图形及其识别、跟踪定位算法》,采用黑色带有白色圆形标记的五边形作为标志点图形的增强现实跟踪注册系统,它的有益效果在于,充分利用了标志点图形自身所具有的视觉不变量信息,节省了编码图案的面积,但设计的五边形图形不规则,设计考虑因素多,不容易设计大数量的标志,外观与本发明相比而言也不具有可观性。
论文《基于视觉的增强现实虚实注册关键技术研究》提出了一种基于海明码编码,黑白颜色区分的图形标志,该标志可分为7*7格,内部的5*5部分为ID信息区,每一行的1、3、5位是海明码的校验位,2、4是标识ID的信息位,将包裹5*5的信息区的外层边框全设为黑色,这样方便标识角点的有效定位。但是,黑色边框的设计是为了能够检测出四边形来识别该标志,所以该标志面积的利用率是25/49=0.51,如果标志被遮挡,系统就不能检测出四边形。
发明内容
为了解决上述背景技术提出的技术问题,本发明旨在提供一种高鲁棒性的视觉图形标志及其识别方法,通过对海明码编码设计的视觉图形标志进行解码,得到虚拟信息,在真实空间坐标系中渲染并输出虚拟物体。
为了实现上述技术目的,本发明的技术方案为:
一种高鲁棒性的视觉图形标志,该视觉图形标志为正方形,该正方形等分成n*n的方格阵列,每个方格由某种颜色填充,基于颜色对视觉图形标志进行海明编码,每种颜色分别代表二进制数1或0,其中n≥7。
其中,上述正方形等分成7*7的方格阵列。
其中,上述7*7的方格阵列中心处的3*3的方格阵列中的各个方格由黄色或白色填充,7*7的方格阵列其余的各个方格由红色或蓝色填充,黄色和蓝色代表二进制数1,白色和红色代表二进制数0。
本发明还包括一种高鲁棒性的视觉图形标志的识别方法,包括以下步骤:
(1)利用摄像机捕获含有视觉图形标志的真实场景图像;
(2)扫描场景图像中的视觉图形标志,将视觉图形标志转换成灰度图像,并对灰度图形进行阈值处理;
(3)对阈值处理后的灰度图像进行边缘检测,得到边缘图像;
(4)对边缘图像进行轮廓的提取和分析,并通过四边形检测筛选出最终的轮廓,存储轮廓四个顶点的坐标;
(5)根据存储的轮廓四个顶点坐标计算出仿射变换矩阵,通过仿射变换将倾斜的视觉图形标志转正,并将转正后的视觉图形标志转换为HSV颜色空间;
(6)根据海明码的编码原则,对视觉图形标志进行解码,获得编码信息,所述编码信息包括码字、朝向及码距;
(7)根据标志的跟踪注册,计算摄像机的姿态,得到真实世界与摄像头坐标系的转换矩阵,然后再计算摄像机到屏幕坐标系的转换矩阵,从而得到真实世界坐标系到屏幕坐标系的转换矩阵,根据真实世界坐标系到屏幕坐标系的转换矩阵,在真实场景中视觉图形标志的一定偏移位置处,渲染并输出显示与海明码对应的虚拟信息;
(8)当视觉图形标志被识别后,如果视觉图形标志被部分遮挡,判断遮挡区域,计算并判断标志的码距,依据码距信息对标志编码进行恢复,解决遮挡问题。
其中,在步骤(2)中,采用OTSU最大类间方差法对灰度图像进行阈值处理。
其中,在步骤(3)中,采用Canny算子对视觉图形标志进行边缘检测。
采用上述技术方案带来的有益效果:
(1)本发明设计的彩色海明码视觉图形标志解决了增强现实中黑白海明码标志不能被遮挡的问题;
(2)本发明设计的7*7方格组成的正方形标志,与黑白色海明码标志不同的是,该彩色标志的信息区域是7*7方格,严格遵守海明码的编码原则,1、2、4位是校验位,3、5、6、7位是信息位,扩展了海明码的信息位和校验位,在标志可用数量上明显增多,使标志面积的利用率提高到100%;
(3)本发明与ARTag一类能被部分遮挡的标志相比,总的遮挡比率达到28.57%,明显高于ARTag。
具体实施方式
以下将结合附图,对本发明的技术方案进行详细说明。
如图1所示本发明的视觉图形标志示意图,该标志为7*7方格组成的正方形标志,它严格遵守海明码的编码原则,1、2、4位是校验位,3、5、6、7位是信息位,该彩色标志的颜色设计分为两个区域,正方形中心内部3*3方格的用黄色和白色填充,黄色表示二进制位“1”,白色表示二进制位“0”,外部方格用红色和蓝色填充,蓝色表示二进制位“1”,红色表示二进制位“0”。标志通过码距判断标志方向,但由于该海明码的码字不具有旋转不对称性,因此在正确朝向的标志的第一行、第一列的方格的二进制位是“1”时,颜色为黄色,二进制位是“0”时,颜色为白色。
本发明通过摄像机获取视觉图形标志的图像,使用OpenCV进行图像处理。由ARToolKit函数库获取得到的视频帧数据流dataPtr=(ARUint8*)arVideoGetImage()数据存储到OpenCV图像变量中。
视频帧像素数据由(R,G,B,A)四个分量组成,由于本发明只处理(R,G,B)三个分量的图像像素数据。先将视频帧转换为(R,G,B)分量,并将图像转换为灰度图像。
使用OTSU最大类间方差法对灰度图像进行阈值处理。类间方差法对噪音和目标大小十分敏感,它仅对类间方差为单峰的图像产生较好的分割效果。当目标与背景的大小比例悬殊时,类间方差准则函数可能呈现双峰或多峰,此时效果不好,但是类间方差法是用时最少的。
使用Canny算子对图像进行边缘检测,使用滞后阈值的两个阈值高阈值与低阈值,跟踪给定曲线中模糊的部分,并且避免将没有组成曲线的噪声像素当成边缘。较大的阈值标志出比较确信的真实边缘,较小的阈值用来跟踪曲线的模糊部分直到回到起点。
使用OpenCV的cvFindContours函数对图像边缘提取轮廓,cvFindContours将轮廓标记为cX和hX,分别表示真轮廓和孔。检测出该轮廓为cX轮廓,利用CV_RETA_CCOMP方法将检测出的所有轮廓组织成双层结构,顶层边界是成分的外部边界,第二层边界是孔的边界,判断一个轮廓的四边形特点后使用横向连接(h_next和h_prev)方法联系下一cX轮廓,判断该轮廓的四边形特点。
对每个轮廓进行形状分析,将轮廓的顶点数目变少,使用cvApproxPoly进行多边形逼近,返回新的轮廓序列,序列中存储轮廓的顶点元素数据。由序列对象的total是否为4判断轮廓是否为四边形,根据fabs(cvContourArea())获取轮廓面积,剔除掉面积较小的轮廓,由cvCheckContourConvexity判断轮廓的凹凸形,筛选出轮廓。存储轮廓的四个顶点元素,将轮廓顶点以逆时针方向存储。
由轮廓的四个顶点带入cvGetPerspectiveTransform,计算仿射变换矩阵,通过cvWarpPerspective将图像转正。
将图像转换为HSV颜色空间,标准的HSV范围H:0-360°,S:0-1V:0-1。OpenCV中,HSV的H为0-180°,S为0-255,V为0-255。将S和V转换为0-1区间后,判断标志各像素点数据。
标志是由7*7的方格组成,转正的标志大小是140*140,每个方格大小为20*20。先对标志内部的3*3方格进行解码,标志颜色为黄色的表示二进制位“1”,白色表示二进制位“0”,然后对外部区域解码,蓝色方格表示二进制为“1”,红色方格表示二进制位“0”。判断标志颜色进行解码。
然后,判断标志的朝向:
A:本发明判断标志的朝向是判断第一行第一列的标志区域,对该区域进行解码,判断是否为“1”或“0”。若为“1”或“0”,则进行步骤C,否则进行步骤B。
B:将标志的二进制位进行逆时针旋转,实施步骤A。
C:判断码距,码字一共有16种情况。当计算出的二进制码位与16种码字相比较,判断每行二进制字的码距,若标志的7行码距都为0,则该标志为海明码标志,返回标志的二进制位矩阵,否则返回NULL,实施步骤D
D:若返回的不是NULL,则将二进制信息存储到标志的结构体中。
接下来计算转换矩阵,标志坐标系下的物体信息首先转换到摄像机坐标系,然后在摄像机的映射下,将三维信息投射到屏幕坐标系。将四边形的检测提取四个顶点坐标以及标志在世界坐标系下该内部四边形的顶点坐标建立起如下的转换关系:
其中,λ=1/Z0,Z0为标志在摄像头坐标系下Z轴的坐标值,K0为摄像头的内参矩阵,P0为摄像头的外参矩阵,H为单应性矩阵。(xp,yp,1)为屏幕坐标系下指定点的坐标,(Xm,Ym,1)是世界坐标系下该点的坐标。本发明根据内参矩阵、世界坐标系下的顶点坐标和屏幕坐标系下的顶点坐标求出摄像头外参矩阵P0。
根据矩阵P0,在真实场景中海明码彩色标志的一定偏移位置处,渲染并输出显示所述与海明码对应的虚拟信息。
上述视觉图形标志的识别过程如图2所示。
本发明还对标志遮挡问题做了进一步的解决,如图3所示,用于标志遮挡时,对标志的解码过程:
(1)标志二进制位解码。将转正标志图像转换为HSV颜色空间,根据方格区域的颜色进行解码。解码的数据为存储在7行7列的矩阵变量中,每行的元素为“0”、“1”或“-842150451”。元素数据为“-842150451”时,说明该方格的二进制解码不是彩色标志方格的对应元素。
(2)确定标志朝向。本发明彩色标志的正确朝向的第一个方格以黄色和白色确定二进制位“1”和“0”。在上文(1)中的二进制位解码中,外围边框方格是以蓝色和红色像素数据解码的,判断朝向的方格解码后定不为“1”或“0”。在此处判断该第一个方格的二进制位是不是“1”或“0”,若是的话,则转到下个步骤判断该二进制矩阵的码距。否则将二进制解码的7行7列矩阵逆时针旋转,重复以上(1)和(2)的步骤。
(3)判断码距。由步骤(1)和(2)可知,已将彩色标志的所有方格解码成功。将每行的码字与表1编码码字比较,计算码距,存储最小的码距为该行码字的码距,每行的码距相加。7行码字比较完后,判断总码距是否为0。若为0,则输出该彩色标志的二进制位矩阵。否则将二进制位矩阵逆时针旋转,判断旋转后的四边形图案是否为标准彩色标志。
(4)若旋转四次以后,正方形图案与标准彩色标志的二进制位码距不为0,则返回NULL。
标志被遮挡时,计算码距主要分为两部分:
1、第1,2,6,7行码字码距的计算:
如图4所示本发明计算码距流程1示意图,对1,2,6,7行码字码距的计算,计算该行码字的海明距minSum,以及遮挡位cover。minSum为与16种码字比较得出的最小的海明码距离,如果彩色标志被遮挡,海明距距离也会加1。当手指遮挡时,手指的颜色与标准标志的颜色冲突,该行码字解码后非“0”也非“1”的话,则表示遮挡,cover加1。并存储最小码距minSum对应的该行标准码字的索引index。若码距minSum小于3,且遮挡位cover等于minSum。若码距minSum等于3,且遮挡位cover等于minSum,可判断出其他标志。
2、第3,4,5行码字码距的计算:
如图5所示本发明计算码距流程2示意图,具体步骤如下:
(1)计算前两位的遮挡位cover,若二进制位非“0”也非“1”时,cover加。
(2)若cover大于0,则计算后5位码距,否则转到步骤(6)。当海明码是7位时,即使在前两位不知的情况下,后5位能够唯一确定,因此可以只根据后5位计算海明码距离,并存储最小码距sum5min对应的该行标准码字的索引index。
(3)根据步骤(2)得出的最小码距海明码的index索引,与该索引的海明码比较并计算码距sump。
(4)如果cover等于sump,sum5min等于0,则根据该索引index确定遮挡位的海明码位,并将且sum赋值为0,确定该行码字的海明码距离为0,码距的计算结束。
(5)若不满足cover等于sump,且Sum5min等于0的条件,则该行码字的海明码距离为前两位海明码距离加上后5位海明码距离sum=sump+Sum5min,码距的计算结束。
(6)若前两位的遮挡位是0时,计算后两位的遮挡位cover,判断后两位是否被遮挡。
(7)计算前5位的码距,得出最小码距Sum5min和对应海明码码字的索引index。根据该索引,计算该行码字后两位的海明码码距sump。
(8)若cover等于sump,且Sum5min等于0,则确定遮挡位的二进制位,且该行码字的将海明码码距赋值为0,码距的计算结束。
(9)若不满足cover等于sump,且Sum5min等于0的条件,则该行码字的海明码距离为前两位海明码距离加上后5位海明码距离sum=sump+Sum5min,码距的计算结束。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。