一种识别码生成及识别的方法及装置
技术领域
本申请涉及信息技术领域,尤其涉及一种识别码生成及识别的方法及装置。
背景技术
目前,主流识别码通常为条形码以及二维码。二维码以其携带的数据量较大,可以写入图片、音频、视频等信息,识别成功率更高等优势,使得二维码的应用范围更广,逐渐成为用户(如,个人、企业等等)主要使用的识别码。
通常,二维码的基本组成中包括:位置探测图形(Position Detection Pattern,也称为定位桩)、功能性数据、数据码。定位桩用于在识别二维码时,确定二维码的数据存储区域(即,功能性数据、数据码的区域),功能性数据用于提供二维码的版本信息,使得识别时可以确定以何种方式识别数据码,数据码即存储内容的编码(例如,将图像转换为二进制码后,以填充块表示1,未填充块表示0,将图像内容转换为数据码写入二维码中),如图1所示。当然,现有二维码生成技术存在多种编码方式,上述描述仅为示意。
另外,数据码中还可以包括用于容错的纠错码,纠错码可在二维码出现损坏等情况时,协助识别出完整的数据码对应的内容。
基于现有的识别码技术,本申请提供一种新的识别码生成及识别的过程。
发明内容
本说明书实施例提供一种识别码生成及识别的方法及装置,用于解决现有技术生成的识别码,形式较为单一,用户体验不佳的问题。
本说明书实施例采用下述技术方案:
一种识别码生成的方法,包括:
确定圆心;
根据所述圆心确定若干个同心圆,以及,根据所述圆心和指定的半径,确定与所述圆心的距离为所述半径的若干个位置探测图形;其中,所述若干个位置探测图形不完全相同;
从各位置探测图形中确定起始图形;
根据所述起始图形的位置,在所述若干个同心圆上,对待编码内容对应的N进制字符进行编码,得到识别码,其中,所述N进制字符中相邻且相同的字符对应的编码形成弧形线段,所述N进制字符中与相邻字符均不同的字符对应的编码为点,所述N进制字符中不同字符对应的编码的颜色不同,N为不小于二的正整数。
一种识别码识别的方法,包括:
采集图像;
从所述图像中,确定识别码中的各位置探测图形;
根据各位置探测图形,确定所述识别码的圆心;
根据所述圆心和各位置探测图形,从各位置探测图形中确定起始图形;
根据所述起始图形的位置,识别所述识别码,其中,所述识别码包括在若干同心圆上的编码,编码内容中相邻且相同的字符对应的编码形成弧形线段,编码内容中与相邻字符均不同的字符对应的编码为点,编码内容中不同字符对应的编码的颜色不同。
一种识别码生成的装置,包括:
第一确定模块,确定圆心;
第二确定模块,根据所述圆心确定若干个同心圆,以及,根据所述圆心和指定的半径,确定与所述圆心的距离为所述半径的若干个位置探测图形;其中,所述若干个位置探测图形不完全相同;
第三确定模块,从各位置探测图形中确定起始图形;
生成模块,根据所述起始图形的位置,在所述若干个同心圆上,对待编码内容对应的N进制字符进行编码,得到识别码,其中,所述N进制字符中相邻且相同的字符对应的编码形成弧形线段,所述N进制字符中与相邻字符均不同的字符对应的编码为点,所述N进制字符中不同字符对应的编码的颜色不同,N为不小于二的正整数。
一种识别码识别的装置,包括:
采集模块,采集图像;
第一确定模块,从所述图像中,确定识别码中的各位置探测图形;
第二确定模块,根据各位置探测图形,确定所述识别码的圆心;
第三确定模块,根据所述圆心和各位置探测图形,从各位置探测图形中确定起始图形;
识别模块,根据所述起始图形的位置,识别所述识别码,其中,所述识别码包括在若干同心圆上的编码,编码内容中相邻且相同的字符对应的编码形成弧形线段,编码内容中与相邻字符均不同的字符对应的编码为点,编码内容中不同字符对应的编码的颜色不同。
一种服务器,包括:一个或多个处理器及存储器,存储器存储有程序,并且被配置成由一个或多个处理器执行以下步骤:
确定圆心;
根据所述圆心确定若干个同心圆,以及,根据所述圆心和指定的半径,确定与所述圆心的距离为所述半径的若干个位置探测图形;其中,所述若干个位置探测图形不完全相同;
从各位置探测图形中确定起始图形;
根据所述起始图形的位置,在所述若干个同心圆上,对待编码内容对应的N进制字符进行编码,得到识别码,其中,所述N进制字符中相邻且相同的字符对应的编码形成弧形线段,所述N进制字符中与相邻字符均不同的字符对应的编码为点,所述N进制字符中不同字符对应的编码的颜色不同,N为不小于二的正整数。
一种终端,包括:一个或多个处理器及存储器,存储器存储有程序,并且被配置成由一个或多个处理器执行以下步骤:
采集图像;
从所述图像中,确定识别码中的各位置探测图形;
根据各位置探测图形,确定所述识别码的圆心;
根据所述圆心和各位置探测图形,从各位置探测图形中确定起始图形;
根据所述起始图形的位置,识别所述识别码,其中,所述识别码包括在若干同心圆上的编码,编码内容中相邻且相同的字符对应的编码形成弧形线段,编码内容中与相邻字符均不同的字符对应的编码为点,编码内容中不同字符对应的编码的颜色不同。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
通过本说明书提供的方法,在生成识别码时,从各位置探测图形中的起始图形开始,在若干同心圆上,对待编码内容对应的N进制字符进行编码,生成在同心圆弧上以若干弧形线段以及点构成的识别码,使得识别码的形式更加丰富,使得用户在使用识别码时(如,识别、展示识别码)的用户体验更好。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为现有二维码的结构示意图;
图2为本说明书实施例提供的一种识别码生成的过程;
图3为本说明书实施例提供的确定圆心的示意图;
图4a为现有二维码的位置探测图形的示意图;
图4b为本说明书实施例提供的位置探测图形的示意图;
图4c为本说明书实施例提供的不完全相同的各位置探测图形的示意图;
图5a为本说明书实施例提供的确定若干个同心圆的示意图;
图5b为本说明书实施例提供的确定5个不同标记的同心圆的示意图;
图6a-6d为本说明书实施例提供的确定各位置探测图形的过程示意图;
图7a以及7b为本说明书实施例提供的编码得到的图形示意图;
图7c为本说明书实施例提供的极角间隔的示意图;
图8a为本说明书实施例提供的将各同心圆划分为多组同心圆弧的示意图;
图8b以及8c为本说明书实施例提供的在一组同心圆弧的上编写方向的示意图;
图8d为本说明书实施例提供的另一种方法的编写方向的示意图;
图9为本说明书实施例提供的编写起始点以及编写结束点的示意图;
图10为本说明书实施例提供的编写后得到的识别码的示意图;
图11为本说明书实施例提供的一种识别码的识别过程;
图12为本说明书实施例提供的一种识别码生成装置的结构示意图;
图13为本说明书实施例提供的一种识别码识别装置的结构示意图;
图14为本说明书实施例提供的一种服务器的结构示意图;
图15为本说明书实施例提供的一种终端的结构示意图。
具体实施方式
现有技术中,识别码生成方(通常为商户、企业、个人等)通过根据已有的识别码生成规则(如,二维码中常见的有PDF417、QR Code、Code 49、Code16K、Code One等规则),将需要提供的内容进行编码,获得识别码。再通过将该识别码提供给识别对象(通常为用户)以提供内容。
通常识别码除了提供编码对应的内容以外,还可提供非编码内容,可用于提示用户该识别码的用途、编码内容等,使用户大致确定识别码中包含的内容、或者包含的内容的类型。其中,非编码内容可以以图案、字符以及文字等形式添加在识别码中提供给用户。例如,非编码内容为品牌的商标(logo),以使得用户在看到该识别码时,可大致确定该识别码提供的内容是哪一个品牌的信息,或者,非编码内容为该识别码的用途,如文字:“扫码支付”、“扫码获得优惠券”,则看到该非编码内容用户便可大致了解该识别码的用途。
下面以非编码内容为品牌的logo为例进行说明。现有技术中,logo通常用于建立用户对于品牌认知,logo的拥有者(在本方案中可视为是识别码的内容提供方)通过广告等方式,提高logo的曝光率,从而使用户逐渐建立对logo的认知。使得用户在看到不同品牌的logo时,能够直观明确该logo背后所对应的是何种商户、企业或者个人。
而在识别码中添加logo,可以起到提示用户该识别码提供的内容是该logo对应的品牌的信息,可吸引对该品牌有兴趣的用户对该识别码进行识别。
但是,由于识别码出现的目的,主要还是为了能够通过机器大量的、快速的获取内容,而不是提供非编码内容,所以通常非编码内容在识别码中所占的区域较小,使非编码内容所能提供的信息较为局限。
例如,通过现有技术生成的二维码,虽然可以在二维码中添加logo,但是二维码中logo所占区域通常较小,大部分区域还是以二维码的“码”为主,导致logo不明显,在二维码的大小受限的情况下(如,打印出的面积为1平方厘米的二维码),还会影响logo显示的清晰度,进而使得用户难以识别二维码中的logo,也就难以根据logo确定识别码的内容。
可见,虽然现有技术生成的识别码可以添加logo,但是由于logo不明显、不清晰,导致用户对识别码中的logo识别困难。在用户看来,不同的识别码几乎没有区别。但是,在识别码的使用逐步常态化的背景下,识别码被大量使用,却没有带来相应的品牌认知的效果的提高,对于识别码的内容提供方来说,属于一种资源浪费。
也就是说,现有的识别码技术所生成的识别码,难以起到提升品牌认知的效果,产生了较大的资源浪费。并且,识别码形式较为单一,用户体验不佳。
于是,本说明书各实施例提供一种识别码生成及识别的方法以及装置,解决现有技术生成的识别码,形式较为单一,用户体验不佳的问题。
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图2为说明书实施例提供的一种识别码生成的过程,具体可包括以下步骤:
S100:确定圆心。
在本说明书一个或多个实施例中,在生成识别码时,可由识别码的生成方的设备(如服务器、计算机、移动终端等,下面以服务器为例进行说明),根据需要写入识别码中的内容,生成识别码。该服务器可以是单独的一台设备或者由多台设备组成的系统,如,分布式系统,本说明书对此不做限定。
其中,由于本说明书中生成的识别码,从外观上看,整体是以圆形为主要元素的图案。因此,该服务器可以先确定圆心,作为该识别码的中心(如图3所示),并基于该圆心通过后续操作生成该识别码。
图3为本说明书实施例提供的圆心示意图。其中,点表示该圆心,虚线圆表示该点为圆心,用于在图3中做辅助说明该点是圆心。
S102:根据所述圆心确定若干个同心圆,以及,根据所述圆心和指定的半径,确定与所述圆心的距离为所述半径的若干个位置探测图形。
与现有技术类似,服务器需要先确定待生成的识别码的位置探测图形。在本说明书实施例中,服务器可根据在步骤S100中确定的圆心,以及指定的半径,确定若干个与该圆心距离为该指定的半径的位置探测图形。并且,服务器还可根据该圆心确定若干个同心圆,此时确定的若干个同心圆可用于后续进行编码时,确定编码的位置。
在本说明书中,服务器确定的各位置探测图形可不完全相同,各位置探测图形的形状可包括:等距同心圆以及正六边形。并且,区别于现有二维码中位置探测图形为同心正方形,且异色像素在垂直方向以及水平方向上的比例为1:1:3:1:1,如图4a中所示,本说明书中形状为等距同心圆的位置探测图形在任意直径方向上,异色像素的比例为1:1:1:1:1,也就是说每个等距同心圆的线条粗细相同,并且线条粗细可均为预设宽度,如图4b所示。
其中,形状为等距同心圆的位置探测图形的数量可以为3个,形状为正六边形的位置探测图形可以为1个。则此时,形状为等距同心圆的位置探测图形用于在识别该识别码时初步确定该识别码的位置(或者,主要通过形状为等距同心圆的各位置探测图形确定识别码的位置)。形状为正六边形的位置探测图形,作为异型的位置探测图形,可以在该识别该识别码时,用于辅助定位。当然,本说明书中,各位置探测图形的数量也可根据需要进行设置,例如,4个形状为等距同心圆的位置探测图形,2个形状为正六边形的位置探测图形等等。
并且,由于正六边形区别于等距同心圆,其边界为直线,所以形状为正六边形的位置探测图形在识别码的识别过程中,还可用于辅助确定识别码的扭曲情况、倾斜情况等。具体的,形状为正六边形的位置探测图形的边长可以根据需要进行设置,本说明书对此不做限定。例如,形状为正六边形的位置探测图形的外接圆直径与形状为等距同心圆的位置探测图形的最大直径相等,如,图4c所示。
当然,除了上述两种形状的位置探测图形以外,该服务器还可生成不同形状的位置探测图形,例如,正方形、正三角形、同心矩形或者带有符号的图案等等,本说明书对于生成何种形状以及何种图案的位置探测图像不做限定,可根据需要进行设置。
另外,该服务器还可以根据该圆心,确定若干个同心圆,如图5a所示。与上述的各位置探测图形不同,上述位置探测图形为该服务器实际生成的图形,而该若干个同心圆均为虚拟的,仅在识别码生成过程中用于辅助后续进行编码,在生成识别码后显示识别码时,并不显示这些同心圆。
进一步地,在步骤S102中,服务器确定各位置探测图形的步骤,与服务器确定后续用于辅助编码的同心圆的步骤之间可存在逻辑先后顺序,也可不存在逻辑先后顺序。当二者存在逻辑先后顺序时,服务器可先确定各位置探测图形,再根据各位置探测图形,确定若干同心圆,或者,服务器也可先确定若干同心圆,再根据各同心圆中的至少一个,确定各位置探测图形。
下面以上述两个步骤存在逻辑先后顺序为例,提供三种方法。
具体的,在本说明书实施例提供的第一种方法中,服务器可先根据圆心确定若干个同心圆。在根据圆心以及指定的半径,确定各位置探测图形时,可以先从确定出的各同心圆中,选择半径为指定的半径的同心圆,再在选择出的同心圆上确定若干个位置探测图形。
或者,在本说明书实施例提供的第二种方法中,服务器可先根据圆心确定若干个同心圆,从确定出的各同心圆中选择任意一个同心圆,并以选择的同心圆的半径作为指定的半径,再在选择出的同心圆上确定若干个位置探测图形。其中,各位置探测图形所在的同心圆的半径(即,指定的半径)为方便说明以CodeR表示。
进一步地,在本说明书实施例提供的第三种方法中,服务器可先根据圆心和指定的半径确定若干个位置探测图形,在确定各同心圆时,可以以该指定的半径,建立第一个同心圆,再通过对半径增大和/或缩小预设的步长,得到若干半径,再根据该圆心以及得到的若干半径,确定若干同心圆。并且,服务器可以确定预设数量的同心圆,该预设的数量包括:3、4、5中的至少一种。该预设的步长可以根据需要进行设置,例如,该预设的步长为形状为上述的等距同心圆的线条粗细的2倍,如图5b所示。
在图5b中可见,以该指定的半径确定的同心圆标记为0环,在该指定的半径上缩小预设的步长,分别可得到标记为-1环以及-2环的同心圆,在该指定的半径上增加预设的步长,分别可得到标记为1环以及2环的同心圆。该形状为等距同心圆的位置探测图形的圆心位于0环上,而该等距同心圆与-1环以及1环的同心圆相切。
更进一步地,并且,服务器在确定各位置探测图形时,可以在根据所述圆心和指定的半径确定出的同心圆上的指定的极角确定各位置探测图形。为了方便描述,后续以确定3个同心圆、形状为等距同心圆的位置探测图形的数量为3个以及形状为正六边形的位置探测图形为1个,进行说明。
首先,服务器可以以步骤S100确定的圆心为原点建立极坐标系,如图6a所示。之后,可以根据该圆心以及指定的半径,确定圆,如图6b所示,其中确定的圆的指定的半径为CodeR,标记为0环。(同时,服务器还可如前述的确定另外两个同心圆分别标记为-1环和1环,如图6c所示)然后,根据指定的若干极角(由于以4个位置探测图形为例,所示指定的极角的数量也为4个),在确定出的圆上确定若干个间隔相等的位置探测图形,如图6d所示。其中,该指定的极角分别为45度、135度、225度以及315度。
另外,上述间隔相等的位置探测图形,表示各位置探测图形在图6b所示的圆上的间隔弧度相等,均为90度。
S104:从各位置探测图形中确定起始图形。
在本说明书实施例中,服务器在确定了各位置探测图形之后,还可进一步确定各位置探测图形中的起始图形,以便后续可以根据该起始图形的位置,在上述确定的各同心圆上进行编码。
具体的,由于在步骤S102中根据若干指定的极角,确定了若干个位置探测图形,所以服务器可根据各位置探测图形对应的极角,从各位置探测图形中确定起始图形。其中,服务器可以任意选择一个指定的极角以确定起始图形,或者根据需要从各指定的极角中,选择一个指定的极角以确定起始图形,本说明书对此不做限定,只要在识别码的识别过程中,识别方的设备可以确定各位置探测图形中那个为起始图形即可。
当然,为了提高识别效率,以及方便识别,服务器通常可以统一生成识别码的起始图形的位置。如,在本说明书实施例中,服务器可以统一以图6d所示的极坐标系中对应的极角为135度的位置探测图形确定为起始图形。为方便描述,后续也以135度的位置探测图形确定为起始图形为例进行说明。
S106:根据所述起始图形的位置,在所述若干个同心圆上,对待编码内容对应的N进制字符进行编码,得到识别码。
在本说明书实施例中,当服务器确定了各位置探测图形以及起始图形之后,便可以确定该识别码的编码区域(即,进行编码的区域),并进行编码获得识别码。而且,由于服务器在步骤S102中确定了若干个用于编码的同心圆,所以服务器可以按照逆时针或者顺时针的顺序,在各同心圆上对待编码内容对应的N进制字符进行编码,得到识别码。
其中,N进制字符中相邻且相同的字符对应的编码形成弧形线段,N进制字符中与相邻字符均不同的字符对应的编码为点,所述N进制字符中不同字符对应的编码的颜色不同,N为不小于二的正整数。另外,该点可以为圆形点,弧形线段也可以为圆角的圆弧线段,该圆形点的半径与圆弧线段的宽度相同,并且可以等于形状为等距同心圆的位置探测图形的线条粗细。当然,本说明书对此不做限定。
例如,以N为2为例进行说明,假设将一副图片作为待编码内容,服务器可采用与现有技术相同的方法,将该图片转化为二进制的字符,假设为“01001111……”,则在同心圆上进行编码后可得到如图7a所示的弧形线段以及点。其中,以字符“0”对应的颜色为白色、字符“1”对应的颜色为黑色为例进行示意。本说明书中为了方便观察,为字符“0”对应的编码添加黑色轮廓,弧形线段中添加白色轮廓显示字符“1”对应的编码。实际的编码可如图7b所示,即实际显示时,图7a所示的黑色轮廓和白色轮廓均不会显示。
另外,在本说明书中,在将待编码内容对应的N进制字符进行编码时,服务器可以针对每个同心圆,按预设的极角间隔(后续以θ表示),依次将待编码内容对应的N进制字符进行编码,使在该同心圆的任一同心圆弧上相邻的两个编码的间隔相同,如图7c所示。图7c为该识别码中的编码的局部放大图,其中可见,在标识为0环的同心圆上,相邻的两个编码的间隔相同的弧度。
具体的,该极角间隔可根据任一同心圆上最大编码数量确定。例如,当某一个同心圆上最大编码数量为252个,且各位置探测图形占位108个,也就说是说若不存在位置探测图形占位,该同心圆上最多可编码数量为360个,则根据可根据公式θ=360°/β计算确定该预设的极角间隔,其中,θ为极角间隔,β为最大编码数量。
在本说明书中,针对每个同心圆,当该同心圆的数量为3时,每个同心圆环上可编写的编码的最大数量为112个(其中包含各位置探测图形占位),则根据公式θ=360°/β,即可按的极角间隔为3.214285714度依次将待编码内容对应的N进制字符进行编码;或者,当该同心圆的数量为4时,每个同心圆环上可编写的编码的最大数量与为各位置探测图形占位之和为128个,则根据公式θ=360°/β,即可按的极角间隔为2.812度依次将待编码内容对应的N进制字符进行编码;或者,当该同心圆的数量为5时,每个同心圆环上可编写的编码的最大数量与为各位置探测图形占位之和为148个,则根据公式θ=360°/β,即可按的极角间隔为2.432432432度依次将待编码内容对应的N进制字符进行编码,依次将待编码内容对应的N进制字符进行编码。当然,该极角间隔对应的极角度数可以根据需要进行设置,本说明书对此不做限定。
进一步地,在各同心圆上对待编码内容对应的N进制字符进行编码时,本说明书提供以下两种方法。
具体的,在本说明书提供的第一种方法中,首先,服务器可以根据各位置探测图形的位置以及步骤S100中确定的圆心,将各同心圆划分为多组同心圆弧,如图8a所示。在图8a中可见,由于存在4个位置探测图形,所以各同心圆被划分为4组同心圆弧。每组同心圆弧由在相同的极角范围内,不同半径的多个同心圆的圆弧组成。其中,每组同心圆弧所在的区域分别标记为A~D区。
其次,服务器可根据步骤S104中确定的起始图形的位置,以逆时针或顺时针的顺序,依次针对每组同心圆弧,在该同心圆弧上,对该待编码内容对应的N进制字符进行编码。并且,在当前编写的同心圆弧上编码写满时,再在下一组同心圆弧上继续编码。也就是说,以每组同心圆弧为一个编写单位,当一个编写单位写满时,再选择下一个编写单位进行编写。
另外,在对一组同心圆弧进行编写时,该服务器可以先在该组同心圆弧中的0环对应的同心圆弧上进行编写,之后再在-1环上编写,最后再在1环上编写,如图8b所示。其中,实线箭头表示编写方向,在图8b中该编写方向为逆时针方向,虚线箭头连接同心圆弧写满后的结束点与继续编写时下一个同心圆弧的起始点。或者,服务器也可依次在该组同心圆弧上的1、-1、0环或其他顺序上进行编写。或者,在不同同心圆弧上采用不同的编写方向进行编写,如图8c所示,服务器从-1环以逆时针编写,再从0环以顺时针编写,最后在1环上以逆时针编写。
进一步地,在本说明书提供的第二种方法中,服务器可先从若干个同心圆中,选择指定的同心圆,在选择的同心圆上对待编码内容对应的N进制字符进行编码,并当选择的同心圆写满时,按照预设的同心圆选择的规则,选择未进行编码的同心圆继续编码,如图8d所示,数字编号1~12表示编写的先后顺序。其中,指定的同心圆可以为0环的同心圆,或者服务器选择任意同心圆开始编写,则此时选择的同心圆即为指定的同心圆,本说明书对此不作限定。
在图8d中,服务器并未将各同心圆划分为多组同心圆弧,而是以每个同心圆为一个编写的单位,将一个同心圆写满后,再选择下一个同心圆进行编写。并且,在不同的同心圆,以及在同一个同心圆的不同弧段上,服务器都可以采用不完全相同的编写方向,本说明书对此不做限定。
当然,需要说明的是,上述的第一种以及第二种方法亦可以组合使用,当然,本说明书提供的上述两种方法仅为示意,服务器只要是在各同心圆上将待编码内容对应的N进制字符进行编码即可,具体采用何种方式本说明书并不限定。如,先在极角度数0~90度的同心圆的圆弧上编写,再依次在90~180度、180~270度、270~360度的同心圆的圆弧上编写,等等。
更进一步地,在本说明书中,上述待编码内容包括:功能性数据以及数据码。其中,该功能性数据在编写时,可以编写至指定位置,该指定位置可以根据需要进行设置本说明书对此不做限定。
另外,为了防止将待编码内容对应的N进制字符编写得过于接近各位置探测图形,导致各位置探测图形识别困难,以及难以识别识别码的内容。服务器在每段同心圆弧上进行编写时,可以在距离各位置探测图形一段距离的同心圆弧上进行编写。
具体的,服务器可以极角角度R作为起始点对待编码内容对应的N进制字符进行编码,其中,当按照逆时针方向进行编码时,采用R=135°+α·θ,当按照逆时针方向进行编码时,采用R=135°-α·θ,α为预设的参数,θ为所述预设的极角间隔。其中,α可以是3.5、4、5等等,本说明书对此不做限定。另外,由于在本说明书中存在多个位置探测图形,所以服务器在每组同心圆弧上进行编写时,可以按照公式R=θ'±α·θ,确定在每组同心圆弧上进行编写时的起始点。其中,θ'为指定的极角,如,45度、135度、225度、315度。
进一步地,编码结束点也可以是采用上述公式,R=θ'±α·θ确定。如,在对从135°至225°的同心圆弧进行编写时,编写起始点的极角角度为135°+3.5θ,编写结束点为,225°-3.5θ,如图9所示。
需要说明的是,在本说明书中,该识别码还可包括:上述若干个同心圆中半径最小的同心圆所围成的区域内的非编码内容,其中,该非编码内容包括:文字、符号、图案中的至少一种。该非编码内容可以是logo、用户头像等等,用于提高该识别码的品牌认知能力。如图10所示。由于该CodeR可以根据需要进行设置,当CodeR越大时,识别码中心用于填充非编码内容的区域也就越大,用户也就越容易识别该识别码包含的非编码内容。
通过本说明书提供的识别码生成过程,服务器可以生成区别于现有技术生成的识别码的样式的新型识别码,该通过本说明书生成的识别码以圆弧线段和原点组成编码形式丰富,可以为用户带来更好的用户体验。
另外,在本说明书实施例中,该待编码内容对应的N进制字符中不同字符对应的颜色不同,本说明书对于不同字符对应的颜色不做限定。并且该颜色的种类可以与N的数值相同,例如,二进制中可以对应2种不同的颜色,十进制中可对应10中不同的颜色。并且,对于二进制中可以对应2种不同的颜色,也不限于黑色和白色,也可以是黑色和黄色,白色和红色,等等。
基于上述图1至图10所示的识别码生成过程以及示意图,本说明书实施例还对应提供一种识别码的识别过程,如图11所示。
图11为本说明书实施例提供的一种识别码的识别过程,具体包括以下步骤:
S200:采集图像。
与现有技术类似,在识别码的识别过程中,首先需要采集图像。
在本说明书实施例中,可以由终端采集图像,该终端可以是:移动终端、平板电脑、连接摄像头的个人电脑等等设备,本说明书对此不做限定。只要该终端可以采集图像即可。
进一步地,以假设采集的该图像中包含有根据图1生成的识别码为例继续后续说明。
并且,通常由于不同方法生成的识别码,其识别方法也存在差异,所以此时该终端可预先获取该识别码的识别方法。
S202:从所述图像中,确定识别码中的各位置探测图形。
S204:根据各位置探测图形,确定所述识别码的圆心。
在本说明书实施例中,终端在采集图像后,便可从该图像中确定识别码对应的各位置探测图形,以便后续根据各位置探测图形,进一步确定识别码在该图像中的位置(具体可以是确定识别码的编码区域在该图像中的位置),从而获取识别码中的内容。
具体的,终端可以采用与现有技术类似的方法,从采集的图像中,确定疑似为位置探测图形的若干等距同心圆。其中,区别于现有技术确定位置探测图形的方法(即,遍历图像中的各像素点,确定垂直方向以及水平方向异色像素点的比例均为1:1:3:1:1),由于本说明书中位置探测图形包括等距同心圆,所以终端可以以1:1:1:1:1的异色像素点的比例,确定若干等距同心圆。
并且,终端还可以采用与现有技术相同的方法,从疑似为位置探测图形的若干等距同心圆中,确定位置探测图形。其中区别于现有技术获取的数据,终端需要获取的数据中,位置探测图形的单位长度差为等距同心圆的半径差,而位置探测图形的夹角以及长度偏差与现有技术相同。
进一步地,由于在本说明书实施例中,位置探测图形还可包括:正六边形,用于辅助定位,所以终端在确定出若干等距同心圆之后,还可以根据该识别码的位置探测图形的数量,确定若干组等距同心圆。其中,终端可根据预先获取该识别码的识别方法,确定该识别码的位置探测图形的数量(即,识别方法中包含识别码的位置探测图形的数量)。
针对每组等距同心圆,根据该组等距同心圆中每个等距同心圆的位置,确定第一位置,判断该第一位置上是否存在正六边形,若是,则确定该组等距同心圆以及所述正六边形,为识别码的位置探测图形,若否,则确定该组等距同心圆与识别码的各位置探测图形不一一对应,即,该组等距同心圆不是位置探测图形。
例如,假设终端通过确定位置探测图形的方法,确定出4个等距同心圆(分别标记为a~d)均符合位置探测图形的条件,进一步假设该识别码的位置探测图形的数量为3,则终端可以建立表1所示的分组。
分组 |
包含的等距同心圆标识 |
1 |
abc |
2 |
abd |
3 |
acd |
4 |
bcd |
表1
具体的,终端针对每组等距同心圆,以该组等距同心圆在所述图像中的位置,确定圆。根据若干个指定的极角(如,45度、135度、225度、315度),以及该组等距同心圆在所述圆上的位置,建立极坐标系。判断在该圆上,任一指定的极角对应的第一位置,是否存在正六边形。其中,终端可以采用现有的多边形区域填充算法,判断第一位置是否存在正六边形,或者也可采用其他算法,判断第一位置是否存在正六边形,本说明书对此不做限定。例如,确定该圆的45度、135度、225度上存在等距同心圆,则该圆的315度为第一位置。
当然,上述识别过程中,也可以采用与现有技术相同的方法,将所述图像的扭曲以及倾斜等进行校正,具体方法本说明书不在赘述。其中,由于该正六边形的边为直线,所以在进行校正时,可用于参考。
S206:根据所述圆心和各位置探测图形,从各位置探测图形中确定起始图形。
在本说明书实施例中,终端在确定出各位置探测图形后,便可根据服务器预先提供的识别码识别方法,确定其中的起始图形。
例如,当起始图形为对应极角135度位置的位置探测图形时,终端可以根据在步骤S204建立的极坐标系,确定该起始图形。
S208:根据所述起始图形的位置,识别所述识别码。
在本说明书实施例中,终端可根据确定出的各位置探测图形以及圆心,确定所述图像中所述识别码的各编码区域,根据起始图形的位置,按照顺时针或者逆时针的顺序,从确定出的各编码区域中,获取识别码对应的编码内容。
具体的,与现有技术相同,识别码在识别时,终端可以先获取识别码的编码内容中,功能性数据对应的内容。因此,在本说明书中,终端可先根据起始图形的位置,从各编码区域中确定第二位置,再从第二位置识别出所述编码内包括的功能性数据,进而根据识别出的功能性数据,从确定出的各编码区域中,获取所述识别码对应的编码内容。
其中,该第二位置即为在上述图2提供的识别码生成过程中,步骤S106所述的在生成识别码时将功能性数据编写至的指定位置。
例如,假设按照不同的识别码的生成方式,确定出多个识别码的版本,并且该识别码的版本包含在功能性数据中。则当终端识别出功能性数据后,便可根据该功能性数据中包含的识别码的版本,确定该识别码对应的识别方式,以确定出的识别方式,对该识别码进行识别。
另外,由于在图2所示的识别码生成过程中,在步骤S106中,本说明书提供了两种方法用于在各同心圆上对待编码内容对应的N进制字符进行编码,所以可以确定两种识别码的版本(分别称为第一版本和第二版本)。所以相应的,终端也可通过识别该识别码中的该功能性能数据,确定该识别码的版本,并根据该识别码的版本,确定识别方法。
具体的,当识别出的功能性数据表示采用第一识别方法识别识别码时(即,该识别码为第一版本的识别码时),终端可先根据确定出的各位置探测图形以及圆心,将各同心圆划分为多组同心圆弧,再根据起始图形的位置,以顺时针或者逆时针的顺序,依次针对每组同心圆弧,在该组同心圆弧上,识别所述识别码。
当识别出的功能性数据表示采用第二识别方法识别识别码时(即,该识别码为第二版本的识别码时),按照预设的同心圆选择的规则,从若干个同心圆中依次选择同心圆,以顺时针或者逆时针的顺序,在选择的同心圆上识别识别码。具体的,识别识别码时采用的方法,可以与现有技术相同,例如,灰度化识别码信息像素,去掉识别码信息像素的噪点,二值化识别码信息像素等等,本说明书对此不做限定。其中,信息像素即为识别码中编码对应的像素。
需要说明的是,本申请实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤S102和步骤S104的执行主体可以为设备1,步骤S106和步骤S108的执行主体可以为设备2;又比如,步骤S102和骤S106的执行主体可以为设备2,步骤S104和步骤S108的执行主体可以为设备1;等等。上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于图1所示的识别码生成方法,本说明书实施例还提供另一种识别码生成装置,如图12所示。
图12为本说明书实施例提供的一种识别码生成装置的结构示意图,包括:
第一确定模块300,确定圆心;
第二确定模块302,根据所述圆心确定若干个同心圆,以及,根据所述圆心和指定的半径,确定与所述圆心的距离为所述半径的若干个位置探测图形;其中,所述若干个位置探测图形不完全相同;
第三确定模块304,从各位置探测图形中确定起始图形;
生成模块306,根据所述起始图形的位置,在所述若干个同心圆上,对待编码内容对应的N进制字符进行编码,得到识别码,其中,所述N进制字符中相邻且相同的字符对应的编码形成弧形线段,所述N进制字符中与相邻字符均不同的字符对应的编码为点,所述N进制字符中不同字符对应的编码的颜色不同,N为不小于二的正整数。
第二确定模块302,选择半径为所述指定的半径的同心圆,在选择出的同心圆上确定若干个位置探测图形;或从所述若干同心圆中选择任一同心圆,在选择出的同心圆上确定若干个位置探测图形。
第二确定模块302,通过对所述半径增大和/或缩小预设的步长,得到若干半径,根据所述圆心以及得到的所述若干半径,确定若干个同心圆。
第三确定模块304,以所述圆心为原点建立极坐标系,根据所述圆心和所述指定的半径,确定圆,根据若干个指定的极角,在确定出的圆上确定若干个间隔相等的位置探测图形。
第三确定模块304,根据各位置探测图形对应的极角,从各位置探测图形中确定起始图形。
所述若干个指定的极角,包括:45度、135度、225度、315度;
第三确定模块304,将对应的极角为135度的位置探测图形确定为起始图形。
所述位置探测图形包括:等距同心圆以及正六边形,其中,所述等距同心圆中每个同心圆的线条粗细为预设宽度,且所述等距同心圆中相邻两个同心圆的线条颜色不同。
生成模块306,根据所述起始图形的位置,在所述若干个同心圆上,按照逆时针或顺时针方向,对待编码内容对应的N进制字符进行编码。
生成模块306,根据各位置探测图形的位置以及所述圆心,将各同心圆划分为多组同心圆弧,根据所述起始图形的位置,以逆时针或者顺时针的顺序,依次针对每组同心圆弧,在该组同心圆弧上,对待编码内容对应的N进制字符进行编码,在该组同心圆弧上编码写满时,在下一组同心圆弧上继续编码。
生成模块306,按照预设的同心圆选择的规则,从若干个同心圆中选择同心圆,在选择的同心圆上对待编码内容对应的N进制字符进行编码,并当选择的所述同心圆写满时,继续按照所述同心圆选择的规则选择未进行编码的同心圆进行编码。
所述待编码内容包括:功能性数据,生成模块306,将所述功能性数据对应的N进制字符编码至指定位置。
生成模块306,针对每个同心圆,按预设的极角间隔,依次将待编码内容对应的N进制字符进行编码,使在该同心圆上相邻的两个编码的间隔相同。
生成模块306,在所述若干个同心圆上,按照逆时针或顺时针方向,从极角角度R作为起始点对待编码内容对应的N进制字符进行编码,其中,当按照逆时针方向进行编码时,采用R=135°+α·θ,当按照逆时针方向进行编码时,采用R=135°-α·θ,α为预设的参数,θ为所述预设的极角间隔。
所述预设的极角间隔是根据任一同心圆上的最大编码数量确定的。
第一确定模块300,根据所述圆心确定预设数量的同心圆,其中,所述预设数量包括:3、4、5中的至少一种。
所述识别码还包括:非编码内容,所述非编码内容位于所述若干个同心圆中半径最小的同心圆所围成的区域内,所述非编码内容包括:文字、符号、图案中的至少一种。
基于图11所示的识别码生成方法,本说明书实施例还提供另一种识别码识别装置,如图13所示。
图13为本说明书实施例提供的一种识别码识别装置的结构示意图,包括:
采集模块400,采集图像;
第一确定模块402,从所述图像中,确定识别码中的各位置探测图形;
第二确定模块404,根据各位置探测图形,确定所述识别码的圆心;
第三确定模块406,根据所述圆心和各位置探测图形,从各位置探测图形中确定起始图形;
识别模块408,根据所述起始图形的位置,识别所述识别码,其中,所述识别码包括在若干同心圆上的编码,编码内容中相邻且相同的字符对应的编码形成弧形线段,编码内容中与相邻字符均不同的字符对应的编码为点,编码内容中不同字符对应的编码的颜色不同。
所述位置探测图形包括:等距同心圆以及正六边形;
第一确定模块402,从所述图像中识别若干组等距同心圆,针对每组等距同心圆,根据该组等距同心圆中每个等距同心圆的位置,确定第一位置,判断所述第一位置上是否存在正六边形,若是,则确定该组等距同心圆为位置探测图形,若否,则确定该组等距同心圆不是位置探测图形。
第三确定模块406,根据各位置探测图形以及所述圆心在所述图像中的位置,以所述圆心为原点建立极坐标系,将对应的极角为135度的位置探测图形确定为起始图形。
识别模块408,根据所述起始图形的位置,在各同心圆上确定第二位置,从所述第二位置识别出所述编码内容中包括的功能性数据,根据识别出的功能性数据,识别所述识别码。
识别模块408,当识别出的功能性数据表示采用第一识别方法识别所述识别码时,根据确定出的各位置探测图形以及所述圆心,将各同心圆划分为多组同心圆弧,根据所述起始图形的位置,以顺时针或者逆时针的顺序,依次针对每组同心圆弧,在该组同心圆弧上,识别所述识别码。
识别模块408,当识别出的功能性数据表示采用第二识别方法识别所述识别码时,按照预设的同心圆选择的规则,从若干个同心圆中依次选择同心圆,以顺时针或者逆时针的顺序,在选择的同心圆上识别所述识别码。
本说明书还对应提供一种服务器以及一种终端,如图14~15所示。、
图14为本说明书实施例提供的一种服务器的结构示意图,该服务器,包括:一个或多个处理器及存储器,存储器存储有程序,并且被配置成由一个或多个处理器执行以下步骤:
确定圆心;
根据所述圆心确定若干个同心圆,以及,根据所述圆心和指定的半径,确定与所述圆心的距离为所述半径的若干个位置探测图形;其中,所述若干个位置探测图形不完全相同;
从各位置探测图形中确定起始图形;
根据所述起始图形的位置,在所述若干个同心圆上,对待编码内容对应的N进制字符进行编码,得到识别码,其中,所述N进制字符中相邻且相同的字符对应的编码形成弧形线段,所述N进制字符中与相邻字符均不同的字符对应的编码为点,所述N进制字符中不同字符对应的编码的颜色不同,N为不小于二的正整数。
图15为本说明书实施例提供的一种终端的结构示意图,该终端,包括:一个或多个处理器及存储器,存储器存储有程序,并且被配置成由一个或多个处理器执行以下步骤:
采集图像;
从所述图像中,确定各位置探测图形;
从各位置探测图形中确定起始图形;
根据所述起始图形的位置,从所述图像中,获取识别码对应的编码内容。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于本申请实施例提供的移动终端以及服务器而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。