一种编码方法及装置与流程

文档序号:14796849发布日期:2018-06-29 19:10阅读:174来源:国知局
本发明涉及数据识别领域,尤其涉及二维码编码方法。
背景技术
:二维码由于其信息容量大、编码范围广、纠错能力强、保密性好等诸多优点,已经迅速在各行各业得到广泛应用。目前流行的二维码多为矩阵码,在一个约定的矩形区域内以规则排列的黑、白色块表示数据1或0。黑、白色块在约定的矩形区域内不同位置的所有可能的排列组合构成该二维码系统的数据域。为了识别并获取二维码中包含的数据信息,往往需要先对二维码的图像进行定位,以确定其中各个条码单元在二维码阵列中的位置。设置定位特征块能够快速定位整个条码单元阵列所在区域,进而判别该条码单元阵列的识读方向。技术实现要素:本发明采用与定位特征块不同的方式进行二维码编码。具体的,本发明提供了一种编码方法,包括:步骤1、提供图标;步骤2、获取所述图标的图标特征码;步骤3、根据上述获得的图标特征码设定编码区域及编码参考位置;步骤4、在所述编码区域从所述编码参考位置生成编码信息。在一个技术方案中,步骤3中设定编码区域包括设定数据信息区域和纠错信息区域。在一个技术方案中,步骤3后还包括设定编码轮廓区,所述编码轮廓区设置于所述编码区域外侧。在一个技术方案中,所述图标为圆形,所述编码区域设定为圆环形,所述图标与所述编码区域同圆心设置。在一个技术方案中,步骤3中设定编码区域包括设定数据信息区域、纠错信息区域以及编码轮廓区。在一个技术方案中,步骤3设定编码区域后还包括设定用于分离所述图标以及所述编码区域的内静音区和设定用于分离所述编码区域与编码轮廓区的外静音区的步骤。在一个技术方案中,所述编码区域设置为多条数据轨道,所述数据轨道采用同圆心设置。在一个技术方案中,所述数据位元在每个数据轨道上所占弧度相同。在一个技术方案中,还包括对所述数据位元进行掩码处理的步骤。本发明还提供了一种编码装置,包括:图标提供模块,被配置为执行:提供图标;图标特征码获取模块,被配置为执行:获取所述图标的图标特征码;编码区域生成模块,被配置为执行:根据上述获得的图标特征码设定编码区域及编码参考位置;编码信息生成模块,被配置为执行:在所述编码区域从所述编码参考位置生成编码信息。本发明所提供的技术方案可以包括以下有益效果:1、根据图标特征码确定编码参考位置,从而省略了定位特征块的设置;2、通过图形特征码建立的编码参考位置和编码区域的设定具有隐蔽性;3、通过建立图标特征码与编码区域的相对位置关系,有利于提高识别的准确性。应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。图1是编码图案与编码身份图案对应的示意图;图2是一个实施例中编码图案分区示意图;图3是一个实施例中编码图案分区比例示意图;图4是一个实施例中编码图案数据信息区域示意图;图5是一个实施例中解码识别示意图;图6是一个实施例中编码图案生成流程示意图;图7是一个实施例中解码图案生成流程示意图。具体实施方式这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。首先,简要说明本发明的几个概念:1、图标特征码:是计算机视觉系统中用来提取特征以及推测图像内容的一种方法,可采用角检测或兴趣点检测的方法完成,可采用Moravec角检测算法、Harris&Stephens/Plessey/Shi–Tomasi角检测算法、角检测算法、多尺度Harris算子等。2、编码区域:用于存储编码信息。编码区域可以设定为规则形状,例如正方形、圆形、三角形等,也可以设定为不规则形状。3、编码参考位置:编码信息的识别通常需要编码的起始位置、结束位置以及起始位置到结束位置的读取顺序构成。设定编码参考位置的目的在于确定编码的起始位置或者结束位置,以完成编码信息的准确读取。4、编码信息:采用一维或者二维码形式,记录特定信息。例如,采用深色代表1,浅色代表0,通过识别形成的二进制码转化为特定的数字或者字符,最终形成特定的信息。特定的信息包括网页链接地址、程序相应命令等。5、数据位元:用于表述编码信息,通常采用深色代表1,浅色代表0。数据位元的大小和形状可以自由设定,例如,可以是固定尺寸设定数据位元大小,也可以采用固定比例设定数据位元大小。数据位元之间可以进行区分或者分隔,也可以不进行区分,直接计算获得数据位元的边界。6、内静音区:用于分隔图标和编码区域,通常采用单一颜色背景设置,不存放编码信息。7、外静音区:用于分隔编码轮廓区和数据信息区域的区域,通常采用单一颜色背景设置,不存放编码信息。8、编码轮廓区:用于将编码区域与本编码区域以外的图形、背景等分隔,通常采用单一颜色背景设置,编码轮廓区不存放编码信息。本发明在一个实施例中提供了一种编码方法,包括以下步骤:步骤1、提供图标;本步骤中提供的图标可以为圆形、正方形、三角形等规则图标。在其他的实施例中,也可以提供不规则图标,例如椭圆形、多边形等图标。步骤2、获取所述图标的图标特征码;本步骤可采用Moravec角检测算法、Harris&Stephens/Plessey/Shi–Tomasi角检测算法、角检测算法、多尺度Harris算子等。在本实施例中,采用Moravec角检测算法获取所述图标的图标特征码。步骤3、根据上述获得的图标特征码设定编码区域及编码参考位置;本步骤可通过Moravec角检测算法获得的图标特征码可进一步构建为一坐标系统(原点,X轴,Y轴)。在视觉上,编码区域的设置可以与图标有关联,也可以将编码区域与图标设置在独立的区域,仅需要通过构建的坐标系统(原点,X轴,Y轴)可以确定编码区域以及编码参考位置即可。图标通过图标特征码作为图标唯一的身份予以保留。图1展示了不同类型的编码以及多对应的编码的身份图标。步骤4、在所述编码区域从所述编码参考位置生成编码信息。无论是在视觉上编码区域与图标有关联或者不相关联,均可采用规定尺寸、规定比例进行编码区域的数据位元的设置,并对数据位元的写入顺序进行预设。圆形、椭圆形等编码区域的编码方式采用以圆心的弧度作为数据轨道单元的划分。在另一个实施例中,步骤1中所提供的图标为圆形,步骤3中编码区域设定为圆环形,图标与编码区域同圆心设置。编码区域设定数据信息区域、纠错信息区域以及编码轮廓区,还设定用于分离所述图标以及所述编码区域的内静音区和设定用于分离所述编码区域与编码轮廓区的外静音区。具体的,图标设置为圆形,设置编码区域内静音区、数据信息区域、纠错信息区域、外静音区、编码轮廓区,依次由圆形图标的圆心向外设置。数据信息区域、纠错信息区域以数据轨道的形式设置,数据轨道设置为圆环形。其中,数据信息区域设置为4个数据轨道,纠错信息区域设置为1个数据轨道,每一个数据位元——也称“位”(BIT),在数据轨道上所占的孤度是2*PI/96(大约等于3.75度)。所以一个数据轨道可存放360/3.75=96位。因此,本编码图案可以支持一个480BITS的二进码。根据打印或者显示的分辨率可以调整编码图案的大小。在普通手机摄像头可识别的范围内,整个图案的最小尺寸可设置为10mm*10mm,最大尺寸没有限制。在其他的实施例中,根据编码图案的大小、编码信息量的多少,可以调整每一个位(BIT)在数据轨道上所占的孤度,从而增加或者减少每一个数据轨道上的数据位元的数量。同时,也可以采用增加或者减少数据信息区域的数据轨道的数量的方式进行调整,本发明并没有限制。在采用其他形状的编码区域的设置时,由于需要对各种特殊形状的边界以及区块划分进行控制和识别,因此,采用同心圆的设置可以加强数据信息区域的编码信息的识别速度。内静音区、外静音区对编码区域的确定有校验和纠正的功能,可以提高编码识别的准确率。同时,内静音区、外静音区以及编码轮廓区对编码信息的初始定位也有辅助识别的功能。进一步的,内静音区对编码身份的识别和定位有辅助作用。在本实施例中,编码信息包括数据信息和纠错信息,对应设置于数据信息区域和纠错信息区域。数据信息区域、纠错信息区域均设置为若干轨道,纠错信息轨道设置于所述数据信息区域轨道外侧。在其他的实施例中,数据信息区域和纠错信息区域也可以分别集中在某特定扇区的方式进行数据存放。在本实施例中,前景色(FgColor)的设置:用数据位‘1’,代表二进制的‘1’,用前景色(FgColor)表示。前景色是任何亮度值<=0.4的颜色。亮度值和颜色的关系在表一。背景色(BgColor)的设置:数据位‘0’,代表二进制的‘0’,用背景色(BgColor)表示。背景色是任何亮度值>=0.6的颜色。亮度值和颜色的关系为:亮度=红*0.2126+绿*0.7152+蓝*0.0722。具体的,如图2所示,本实施例的编码图案包含以下功能分区:1、编码身份区(CodeIdentityArea)一个编码身份区域,扫瞄器会利用图形识别技术(比方说HarrisCorner方法)把此区域的图标与“编码身份图案”比较及识别,图标经识别后可以根据此成作为本编码的唯一身份,并根据“编码身份图案”的位置及方向,生成一个扫描用的坐标系统(原点,X轴,Y轴),用作扫描本编码的数据轨道用。2、内静音区(InnerQuietArea)在这区域只有背景色,没有数据,功能是分隔编码身份区和数据轨道区。在这个区域中不存在任何数据。3、数据轨道区(DataArea)即编码区域,这是放置数据的区域,一共有5个数据轨道,如图4所示,其中,数据轨道0、数据轨道1、数据轨道2、数据轨道3用于存储信息数据,数据轨道4用于存储纠错信息。Bit‘0’用暗象素表示Bit‘1’用背景色表示,数据轨道设计容量为96Bits。4、外静音区(OutterQuietArea)在这区域只有背景色,功能是把本编码和编码图案轮廓线分隔及检查背景色,在这个区域中不存在任何数据。5、编码图案轮廓线(CodePatternSilhouette)即编码轮廓区,在这区域只有前景色,功能是把本编码和本编码以外的图形分隔及检查前景色,在这个区域中不存在任何数据。如图2所示,本实施例中编码图案的分区如下表1所示:表1编码图案的分区标志分区名称(中文)分区名称(英文)1编码身份区CodeIdentityArea2内静音区InnerQuietArea数据轨道區DataArea3a数据位元‘1’DataBit‘1’3b数据位元‘0’DataBit‘0’3c数据轨道0DataTrack03d数据轨道1DataTrack13e数据轨道2DataTrack23f数据轨道3DataTrack33g数据轨道4DataTrack44外静音区OuterQuietArea5编码图案轮廓线CodePatternSilhouette如图3所示,本实施例中编码图案的尺寸比例如下表2所示:表2编码图案的尺寸比例本实施例中编码图案的尺寸为512*512像素,获得的具体尺寸如下表3所示:表3像素为512*512的编码图案的尺寸本实施例的编码图案的生成方法如图6所示,具体步骤为:(1)确定图形宽=W,高=H;(2)计算各区域尺寸;(3)编码身份区开始半径=0;(4)设定内静音区开始半径(INNER_QUIET_BEGIN)=(106/160)*W;(5)设定数据轨道0开始半径(TRACK_0_BEGIN)=(109/160)*W;(6)设定数据轨道1开始半径(TRACK_1_BEGIN)=(117/160)*W;(7)设定数据轨道2开始半径(TRACK_2_BEGIN)=(125/160)*W;(8)设定数据轨道3开始半径(TRACK_3_BEGIN)=(133/160)*W;(9)设定数据轨道4开始半径(TRACK_4_BEGIN)=(141/160)*W;(10)外静音区开始半径(OUTER_QUIET_BEGIN)=(149/160)*W;(11)设定编码图案轮廓线开始半径(CODE_PATTERN_SILHOUETTE_BEGIN)=(152/160)*W;(12)设定编码图案轮廓线开始半径:(CODE_PATTERN_SILHOUETTE_END)=(160/160)*W;(13)将全个图(W*H)的区域,用背景色BgColor填充;(14)将图标(ICON)缩放,并划到编码身份区内(R<INNER_QUIET_BEGIN);(15)以背景色BgColor划出内静音区,使用函数DrawRing(INNER_QUIET_BEGIN,INNER_QUIET_END,BgColor);(16)以背景色BgColor划出数据轨道区,使用函数DrawRing(TRACK_0_BEGIN,TRACK_1_BEGIN,BgColor);(17)将每个数据都跟掩码0xa5做XOR运算(data=data^0xa5);(18)使用Reed-Soloman算法,计算96位纠错码;(19)以前景色FgColor,在轨道划上数据位0至数据位384及纠错位0至纠错位95,drawTrack(TRACK_0_BEGIN,TRACK_1_BEGIN,TrackNum*48+0,TrackNum*48+47,FgColor);(20)以背景色BgColor划出外静音区,使用函数DrawRing(OUTER_QUIET_BEGIN,OUTER_QUIET_END,BgColor);(21)以前景色FgColor划出编码图案轮廓线,使用函数DrawRing(CODE_PATTERN_SILHOUETTE_BEGIN,CODE_PATTERN_SILHOUETTE_END,FgColor);在本实施例中,掩码的设定采用与0xa5做XOR运算,在其他的实施例中也可以采用掩码可以采用0xa5以外的掩码,也可以采用其他运算法则进行设定。在本实施例中,掩码的设定未包含纠错码,在其他的实施例中可以将纠错码进行掩码运算。纠错码有容错功能,即使有<=16%的面积数据被损坏,涂污,遮盖等等原因不能被扫描,原数据也可以被纠正及检察。在本实施例中为一网页地址链接,获取该地址链接所展示图形并展示于编码身份区的原点上。在另一个实施例中,编码图案的解码方法如图5和图7所示:步骤A、将待解码图标与编码身份比对,获取该图标的图标特征码;本实施例中采用HarrisCorner方法及参照图标,确定编码身份——亦即获得图标原点、X轴、Y轴。步骤B、根据所述图标特征码获取编码区域及编码参考位置;采用图5所示方法确定编码身份区顶点(P1,P2,P3,P4)。计算方法如图7所示如下:设O=原点坐标;X=X轴向量;Y=Y轴向量;P1=O+X+Y;P2=O+X-Y;P3=O-X-Y;P4=O-X+Y;根据编码身份区顶点(P1,P2,P3,P4)近似算到整个图标的顶点角(A1,A2,A3,A4)。在本实施例中,编码身份区和整个编码图案是按照规定尺寸比例生成的,具体的,在本实施例中比例设定为:RATIO=160/106;根据编码身份区顶点角(P1,P2,P3,P4),近似算到整个图标的顶点角(A1,A2,A3,A4)计算方法如下:设定:RATIO(比例)=160/106(整个图标半径/编码身份区半径);O=原点坐标;A1=(P1-O)*RATIO+O;A2=(P2-O)*RATIO+O;A3=(P3-O)*RATIO+O;A4=(P4-O)*RATIO+O;以上计算,我们用函数getImageCorner()概括,即:[A1,A2,A3,A4]=getImageCorner([P1,P2,P3,P4],O,RATIO){A1=(P1-O)*RATIO+O;A2=(P2-O)*RATIO+O;A3=(P3-O)*RATIO+O;A4=(P4-O)*RATIO+O;}根据在图标的顶点角(A1,A2,A3,A4)内的一个点的u,v坐标计算其在拍摄图的对应点。如图7所示,本实施例中采用内插法,根据四边形(A1,A2,A3,A4)的四个项点近似算出内的所有点的位置,计算方法如下:设定:u=A23/(A2-A3);v=A34/(A4-A3);计算得出:A23=(A2-A3)*u+A3;A14=(A1-A4)*u+A4;A=(A14-A23)*v+A23;所以,我们也可用同样方法近似计算得出,在实际拍摄图片中:A23=(A2-A3)*u+A3;A14=(A1-A4)*u+A4;A=(A14-A23)*v+A23;以上计算,我们用函数getCoordinate,即:A=getCoordinate(A1,A2,A3,A4,u,v){A23=(A2-A3)*u+A3;A14=(A1-A4)*u+A4;返回(A14-A23)*v+A23;}步骤C、读取编码码元数据,形成解码内容。首先,获取数据点的位置。根据编码方法可知,在本实施例中,数据轨道0-4和整个编码图案是有固定尺寸比例,而且一个圈也有固定的位元数。所以,我们可以算出每个BIT在不同的数据轨道的位置。在本实施例中,有4个数据轨道,一轨道有96位元,那一个位元在图的坐标计算如下:设定:i=轨道的几个位元;u=r*cos(i/96*3.1416)+0.5;v=r*sin(i/96×3.1416)+0.5;位元坐标=bitpos=getPoint(A1,A2,A3,A4,u,v);通过上述计算可以得到在第t个轨道的,第i个位元的位置,以上计算,我们用函数GetBitCoordinate()概括,即:bitpos=GetBitCoordinate(t,i,A1,A2,A3,A4){r=r[i];u=r*cos(i/96*3.1416)+0.5;v=r*sin(i/96*3.1416)+0.5;返回getCoordinate(A1,A2,A3,A4,u,v);}然后,读取数据并利用反遮罩恢复原数据,利用纠错数据进行纠错。利用GetBitCoordinate,把所有轨道的位元之后。把数据先以ASCII码表示,再用一个遮罩(16进a5a5a5a5)来做XOR处理,再用REED-SOLOMON方法计算其16位元的修错码。在另一个实施例中,提供了一种编码装置,包括:图标提供模块,被配置为执行:提供图标;图标特征码获取模块,被配置为执行:获取所述图标的图标特征码;编码区域生成模块,被配置为执行:根据上述获得的图标特征码设定编码区域及编码参考位置;编码信息生成模块,被配置为执行:在所述编码区域从所述编码参考位置生成编码信息。在另一个实施例中,提供了一种解码装置,包括:图标特征码获取模块,被配置为执行:将待解码图标与编码身份比对,获取该图标的图标特征码;编码区域及编码参考位置获取模块,被配置为执行:根据所述图标特征码获取编码区域及编码参考位置;解码模块,被配置为执行:读取编码码元数据,形成解码内容。应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围执行各种修改和改变。本发明的范围仅由所附的权利要求来限制。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1