一种视觉导航用的CRC二维码的生成方法及识别方法
技术领域
本发明主要涉及到视觉导航领域,特指一种适用于视觉导航的CRC二维码的生成方法及识别方法。
背景技术
目前,随着科学技术的日益进步,导航已经在各行各业、甚至是普通人的生活当中得以普及。视觉导航是指依据视觉图像,利用图像处理、计算机视觉、模型识别等相关技术获取运动体的运动信息和空间位置信息,实现导航。比如无人机自主着落、仓储智能车导航、室内机器人导航等均需要视觉导航系统同时提供位置和姿态信息。与此同时,导航技术逐渐在根据实际运用的状况与其他技术进行融合,以达到在特定应用场合中最佳的导航效果。
二维码迅速走向市场,被各行各业的用户熟识并广泛使用。在水平和垂直方向的二维空间存储信息的条形码称为二维条形码(2-dimensional Barcode),简称二维码。根据二维码的编码原理,通常可以分为两种类型:行排式二维条码和矩阵式二维码;典型的行排式二维码有:Code16K、Code49、PDF417等。典型的矩阵式二维码有:CodeOne、MaxiCode、QRCode、DataMatrix等。
从已经公开的专利和文献来看,目前还没有专门针对视觉导航应用而设计的二维码。但视觉导航应用区别于其它应用而言,对二维码的性能需求是不同的:第一,视觉导航应用对二维码的形状是否美观以及所含信息是否安全并不关注,而是要求其易于在大视角变换以及远距离的情况下能够准确的从获取的图像中识别;第二,视觉导航应用对二维码是否能够从局部区域中恢复数据并不关注,而是要求能够准确的从图像中检测出尽量多的顶点,进而根据成像原理估计出载体的位置和姿态。
由此可见看出,通用二维码图像在导航应用中的两大缺点:(1)通用二维码图像在大视角变换条件下难以准确识别;(2)通用二维码图像的顶点不易精确提取,一般只适用于邻近定位;而本发明设计的基于CRC的二维码具有内外一共8个顶点,且在图像中易于准确提取,可以根据成像原理同时估计载体的位置和姿态。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种原理简单、易实现和推广、能够快速准确的从场景图像中检测与识别的视觉导航用的CRC二维码的生成方法及识别方法。进一步利用本发明的方法设计一种视觉导航专用的CRC二维码图案,能够快速准确的从场景图像中检测与识别,为视觉导航应用提供技术支撑。
为解决上述技术问题,本发明采用以下技术方案:
一种视觉导航用的CRC二维码的生成方法,其步骤为:
设置数据区和ID编号,所述数据区包括ID的二进制位码区和对应的CRC校验码区,所述ID编号是该二维码在二维码数据库中唯一的十进制编号;
构建CRC二维码的边框和设置边框顶点:边框包括具有对比度的内边框和外边框;顶点包括4个外边框顶点和4个内边框顶点;
生成CRC二维码图片。
作为本发明生成方法的进一步改进:所述边框采用连续边线组成的对称结构,所述内边框和外边框之间的对比度为颜色的对比度,或亮度的对比度,或者是两者的组合。
作为本发明生成方法的进一步改进:所述外边框的宽度为2个码元宽度,所述内边框的宽度为1个码元宽度。
作为本发明生成方法的进一步改进:所述数据区的宽度为5个码元宽度,所述数据区包含5×5=25个bit的信息;其中前21个bit用于存放该二维码ID对应的二进制位码,后4个bit用于存放二进制位码的CRC校验码。
作为本发明生成方法的进一步改进:利用二进制数表示二维码的ID,并用循环冗余码技术计算ID的校验码,将二进制表示的ID与校验码组合,构成固定长度的位码。
作为本发明生成方法的进一步改进:所述CRC校验码由二进制位码对应的多项式与生成多项式相除取余得到。
作为本发明生成方法的进一步改进:选取那些仅能从0°旋转方向正确读取的ID,即对于一个给定的ID编号,将其转换为二进制数据得到位码,并计算相应的CRC校验码码;然后将位码和校验码填入到数据区,形成5×5的编码矩阵。
一种基于上述CRC二维码的识别方法,其步骤为:
S1:检测二维码图像的边缘和顶点;即,进行图像二值化及边缘检测,提取可能的CRC二维码边沿和顶点;
S2:并对提取的二维码区域进行单应变换,读取位码;即,对图像中的CRC二维码区域进行单应变换,根据像素值读取位码和CRC校验码;
S3:利用循环冗余码校验技术对位码进行错误检测,识别二维码的ID。
作为本发明识别方法的进一步改进:所述步骤S1的具体流程为:首先将输入图像转换为二值图像,提取黑白区域的边缘像素点;然后在提取的图像边缘中,选取满足具有4个顶点的凸闭合边缘,得到二维码区域的候选集。
作为本发明识别方法的进一步改进:所述步骤S2中,对每个二维码区域的候选集,根据数据库中的二维码顶点pi和场景图像二维码顶点pi'之间的关系,估计单应矩阵H;计算公式为:
[pi'×]Hpi=0(i=1,2,3,4)
其中[pi'×]表示由齐次坐标pi'形成的反对称阵;上式是关于H的线性方程,将4个顶点的齐次坐标代人上式,用最小二乘估计算法求出H。
与现有技术相比,本发明的优点在于:
(1)、本发明视觉导航用的CRC二维码具有同时估计相机的位置和姿态的优点;
(2)、本发明视觉导航用的CRC二维码具有大视角图像变换下实时识别的优点;
(3)、本发明视觉导航用的CRC二维码的生成方法及识别方法,有效提高了二维码在视觉导航应用中的环境适应性和导航精度。
附图说明
图1是本发明生成方法的流程示意图。
图2是本发明在具体应用实例中生成的CRC二维码图像的示意图。
图3是本发明在具体应用实例中数据区表示的四种可能的编码矩阵示意图。
图4是本发明识别方法的流程示意图。
图5是本发明在具体应用实例中单应矩阵H与数据库中的二维码顶点和场景图像二维码顶点之间的关系示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
如图1所示,本发明的视觉导航用的CRC二维码的生成方法,其步骤为:
设置数据区和ID编号,所述数据区包括ID的二进制位码区和对应的CRC校验码区,所述ID编号是该二维码在二维码数据库中唯一的十进制编号。
构建CRC二维码的边框和设置边框顶点:边框包括具有一定对比度的内边框和外边框;顶点包括4个外边框顶点和4个内边框顶点;具体应用时,黑色外边框和白色内边框的宽度以码元宽度为单位,作为优选的方案,黑色外边框的宽度可以为2个码元宽度,白色内边框的宽度可以为1个码元宽度。
生成CRC二维码图片。
在上述方案当中,可以先进行数据区和ID编号的设置,然后再进行边框和顶点的设置;也可以先进行边框和顶点的设置,然后再进行数据区和ID编号的设置。根据实际需要来选择即可,都应在本发明的保护范围之内。
具体应用时,边框采用连续边线组成的对称结构,内边框和外边框之间具有一定的对比度,可以是颜色的对比度,也可以是亮度的对比度,或者是两者的组合。例如,可以采用黑色外边框和白色内边框,但不仅限于这种设定方式。
具体应用时,作为优选的方案,数据区的宽度可以为5个码元宽度,则数据区包含5×5=25个bit的信息。其中,前21个bit用于存放该二维码ID对应的二进制位码,后4个bit用于存放二进制位码的CRC校验码。
具体应用时,CRC二维码的编码规则为:利用二进制数表示二维码的ID,并用循环冗余码技术计算ID的校验码,将二进制表示的ID与校验码组合,构成固定长度的位码。
具体应用时,CRC校验码由二进制位码对应的多项式与生成多项式相除取余得到。作为优选的方案,可以是选取x4+x2+1为生成多项式。
参见图2,为在一个具体应用实例中CRC二维码的示意图。黑色外边框为图中的黑色边框边长为11个位码,宽度为2个位码,白色内边框为图中的白色边框宽度为1个位码。外边框上有4个外顶点,内边框上有4个内顶点。数据区的大小为5×5个位码;数据区的前21个bit为位码区,用于存放ID的二进制表示,最后4个bit为CRC校验码区,用于存放CRC校验码。
例如:ID70939的二进制表示是:10001010100011011,则加零补齐21位之后位码区的值为000010001010100011011。本实施案例中,CRC生成多项式是x4+x2+1,该示例中位码区数据对应的4bit的CRC校验码为1101。所以最终得到的25bit的数据区的值为:0000100010101000110111101。
在上述步骤的基础上,还包括:判断给定二维码ID是否是有效ID;由于位码区为21bit,所以能够表示的有效的ID范围是:0~2097151,那么给定的ID必须在能够表示的有效范围以内。对于有效的ID形成的编码矩阵,分别用黑色和白色来填充对应码元方块。然后按照CRC二维码图像的结构,添加白色内边框和黑色外边框。最后在外边框的右上角添加ID的十进制数字,形成一幅完整的CRC二维码图片。
对于通用的二维码,比如QR二维码,其结构的三个顶点处设置有定位码,可以通过这三个定位码来判断QR二维码在图像中的旋转方向,从而正确的读取数据区的编码。对于本发明设计的CRC二维码,由于需要精确确定边框的顶点,所以边框采用连续边线组成的对称结构。因此无法根据检测的边框确定CRC二维码在图像中的旋转方向,这会给CRC二维码的识别带来模糊问题。为了解决本问题,本发明选取那些仅能从0°旋转方向正确读取的ID。即对于一个给定的ID编号(比如70939),将其转换为二进制数据得到位码,并计算相应的CRC校验码。然后将位码和校验码填入到数据区,形成5×5的编码矩阵。如图3所示,将编码矩阵分别旋转0°、90°、180°、270°,得到4个编码矩阵,对应的编码分别是:0000100010101000110111101,1001101000001110001100101,1011110110001010100010000,1010011000111000001011001。这以上的四组编码中,只有第一组的校验码与位码正确匹配,即只能从0°旋转方向正确读取。因此70939是一个有效的ID编号。
如图4所示,本发明进一步提供一种基于上述CRC二维码的识别方法,步骤为:
S1:检测二维码图像的边缘和顶点;即,进行图像二值化及边缘检测,提取可能的CRC二维码边沿和顶点。
二维码图像的边缘检测包括图像二值化边缘提取和凸四边形校验。因为本发明设计的二维码的黑色边缘是正四边形,经过图像透视变化后,应该保持凸四边形的特点,所以对于场景图像中提取的闭合边缘,必须满足凸四边形的条件,才有可能是二维码的图像。
因此,步骤可以为:
首先,将输入图像转换为二值图像,提取黑白区域的边缘像素点。然后,在提取的图像边缘中,选取满足具有4个顶点的凸闭合边缘,得到二维码区域的候选集。
S2:并对提取的二维码区域进行单应变换,读取位码;即,对图像中的CRC二维码区域进行单应变换,根据像素值读取位码和CRC校验码。
对每个二维码区域的候选集,如图5所示,根据数据库中的二维码顶点pi和场景图像二维码顶点pi'之间的关系,估计单应矩阵H。计算公式为:
[pi'×]Hpi=0(i=1,2,3,4)
其中[pi'×]表示由齐次坐标pi'形成的反对称阵。上式是关于H的线性方程,将4个顶点的齐次坐标代人上式,用最小二乘估计算法求出H。
利用估计的单应矩阵H,将数据库中二维码的数据区域内每个位码的中心位置投影到图像中,得到像素坐标(μi,νi),从而读取该坐标的位码bi:
其中g(μi,νi)是像素坐标(μi,νi)处的图像灰度值,gthreshold是判断位码为1或者0的灰度值阈值。将数据区域的所有位码{bi}组成二进制串,则可得到编码。图5所示的二维码图像中数据区域的编码为:0000100010101000110111101。
S3:利用循环冗余码校验(CRC)技术对位码进行错误检测,识别二维码的ID。
对于本实施案例中提取的二维码编码,其前21位为二维码ID对应的二进制数据,后4位是该二进制数据的CRC校验码。本实例案例中,采用与二维码生成算法中相同的CRC生成多项式(即:x4+x2+1)。对于图5所示的二维码图像,前21位二进制码为:000010001010100011011,对应的CRC校验码为1101。将由前21位二进制数据计算的CRC码与提取的编码后4位相比,如果相同,则该二维码图像被正确提取,识别结构有效。如该例中计算的CRC校验码与图像中检测的CRC二维码均为1101,说明ID编码正确,000010001010100011011对应的ID号为70939。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。