CN111951329B - 二维码的识别方法、装置、设备及存储介质 - Google Patents
二维码的识别方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111951329B CN111951329B CN202010821260.0A CN202010821260A CN111951329B CN 111951329 B CN111951329 B CN 111951329B CN 202010821260 A CN202010821260 A CN 202010821260A CN 111951329 B CN111951329 B CN 111951329B
- Authority
- CN
- China
- Prior art keywords
- dimensional code
- position information
- point
- auxiliary
- standard
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000009466 transformation Effects 0.000 claims description 92
- 239000011159 matrix material Substances 0.000 claims description 20
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 8
- 230000001131 transforming effect Effects 0.000 claims description 4
- 238000013519 translation Methods 0.000 claims description 3
- 230000008859 change Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 239000007787 solid Substances 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 210000001145 finger joint Anatomy 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Abstract
本申请公开了一种二维码的识别方法、装置、设备及存储介质,属于信息自动识别领域。该方法包括:识别二维码图像中的二维码的定位点,确定出已知定位点的位置信息;响应于已知定位点的数目属于阈值范围,根据已知定位点的位置信息查找出二维码中的辅助定位点;根据已知定位点的位置信息与辅助定位点的位置信息确定出缺失定位点的位置信息;基于辅助定位点的位置信息、已知定位点的位置信息与缺失定位点的位置信息对二维码进行解码,得到二维码中所包含的信息,无需重新采集二维码图像即可对二维码解码成功,提高了二维码的识别效率。
Description
技术领域
本申请涉及信息自动识别领域,特别涉及一种二维码的识别方法、装置、设备及存储介质。
背景技术
二维码的应用领域越来越广泛,涉及了会员认证、电子票券交易、移动执法、商品溯源等各个领域。
以终端扫描识别二维码为例,终端通过摄像头采集一帧二维码图像,对二维码图像进行灰度化,再对灰度化后的二维码图像进行二值化,从二值化的二维码图像中查找二维码中的三个定位点,在查找到三个定位点之后对二维码数据进行采样和解码。
若查找到的二维码的定位点不足三个,则无法对当前帧中二维码进行成功解码,以得到二维码中所包含的信息,需要重新获取一帧二维码图像进行重新识别,降低了二维码的识别效率。
发明内容
本申请实施例提供了一种二维码的识别方法、装置、设备及存储介质,在二维码的定位点缺失时仍可以对二维码进行成功解码,提高了二维码的识别效率。所述技术方案如下:
根据本申请的一个方面,提供了一种二维码的识别方法,该方法包括:
识别二维码图像中的二维码的定位点,确定出已知定位点的位置信息;
响应于已知定位点的数目属于阈值范围,根据已知定位点的位置信息查找出二维码中的辅助定位点;
根据已知定位点的位置信息与辅助定位点的位置信息确定出缺失定位点的位置信息;
基于辅助定位点的位置信息、已知定位点的位置信息与缺失定位点的位置信息对二维码进行解码,得到二维码中所包含的信息。
根据本申请的另一个方面,提供了一种二维码的识别装置,该装置包括:
识别模块,用于识别二维码图像中的二维码的定位点,确定出已知定位点的位置信息;
查找模块,用于响应于已知定位点的数目属于阈值范围,根据已知定位点的位置信息查找出二维码中的辅助定位点;
确定模块,用于根据已知定位点的位置信息与辅助定位点的位置信息确定出缺失定位点的位置信息;
解码模块,用于基于辅助定位点的位置信息、已知定位点的位置信息与缺失定位点的位置信息对二维码进行解码,得到二维码中所包含的信息。
根据本申请的另一方面,提供了一种计算机设备,上述计算机设备包括:处理器和存储器,上述存储器存储有计算机程序,上述计算机程序由上述处理器加载并执行以实现如上所述的二维码的识别方法。
根据本申请的另一方面,提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,上述计算机程序由处理器加载并执行以实现如上所述的二维码的识别方法。
根据本申请的另一个方面,提供了一种计算机程序产品,上述计算机程序产品包括计算机指令,上述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从上述计算机可读存储介质读取上述计算机指令,上述处理器执行上述计算机指令,使得上述计算机设备执行如上所述的二维码的识别方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
在二维码识别的过程中,需要根据定位点识别且采集二维码图像中二维码的像素点,在二维码的定位点缺失的情况下,若已知定位点的数目在设定的阈值范围内,则可以根据已知定位点的位置查找出辅助定位点,继而根据已知定位点的位置信息与辅助定位点的位置信息计算缺失定位点的位置信息,通过辅助定位点的位置信息、已知定位点的位置信息与缺失定位点的位置信息定位出二维码图像中二维码所在区域,进而采集二维码的像素点并对二维码进行解码,最终得到二维码中所包含的信息,无需重新采集二维码图像即可对二维码解码成功,提高了二维码的识别效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一个示例性实施例提供的计算机系统的结构框图;
图2示出了本申请一个示例性实施例提供的二维码的识别方法的流程图;
图3示出了本申请一个示例性实施例提供的定位点的示意图;
图4示出了本申请一个示例性实施例提供的缺失定位点的定位示意图;
图5示出了本申请另一个示例性实施例提供的二维码的识别方法的流程图;
图6示出了本申请另一个示例性实施例提供的二维码的识别方法的流程图;
图7示出了本申请一个示例性实施例提供的辅助定位点的定位示意图;
图8示出了本申请一个示例性实施例提供的辅助定位点的示意图;
图9示出了本申请另一个示例性实施例提供的二维码的识别方法的流程图;
图10示出了本申请另一个示例性实施例提供的二维码的识别方法的流程图;
图11示出了本申请另一个示例性实施例提供的二维码的识别装置的示意图;
图12示出了本申请一个示例性实施例提供的计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先对本申请涉及的几个名词进行介绍:
二维码:是用特定的几何图形按照一定规律在平面上分布的、黑白相间的、记录数据符号信息的图形。二维码在代码编制上利用了构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用k个与二进制相对应的几何形体来表示文字数值信息,通过图像输入设备或光电扫描设备自动识读以实现信息自动处理。二维码中包括定位点与辅助定位点,用于在二维码识别的过程中,通过定位点与辅助定位点确定二维码图像中二维码的像素点。
请参考图1,示出了本申请的一个示例性实施例提供的计算机系统100的结构示意图,该计算机系统100包括二维码的终端120和服务器集群140。
终端120可以是用户持有的电子设备,还可以是服务平台提供的电子设备。终端120上安装并运行有客户端;可选地,该客户端是服务平台的客户端,或者,该客户端中运行有服务平台的小程序,或者,该客户端是浏览器,该浏览器中运行有网页版的服务平台。终端120上设置有摄像头,该摄像头用于扫描识别二维码;示例性的,终端120上连接有扫描设备122,该扫描设备122专门用于二维码的扫描,该扫描设备122在扫描得到二维码图像之后,将上述二维码图像传输至识别设备124,由识别设备124完成对二维码图像的识别。其中,上述服务平台用于提供有二维码参与实现的服务,比如二维码支付服务、二维码验证服务等。在本申请中,终端120用于执行本申请提供的二维码识别方法来实现二维码的识别。
可选地,上述客户端可以是生活服务类客户端、支付类客户端、金融类客户端、通讯类客户端、游戏客户端中的至少一种,本申请中对客户端的类型不加以限定。
示例性的,上述终端120可以包括智能手机、平板电脑、电子书阅读器、MP3(MovingPicture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机中、笔记本电脑的至少一种。
终端120与服务器集群140之间通过有线或者无线网络连接。服务器集群140用于为服务平台提供后台服务。示例性的,终端120在扫描得到二维码图像之后识别二维码图像中的二维码,得到二维码中所包含的信息;终端120将上述信息发送至服务器集群140,由服务器集群140根据上述信息提供二维码所请求的服务。比如,在采用二维码进行订单支付时,通过扫描设备122扫描用户终端上展示的二维码,采集得到二维码图像,由识别设备124对二维码图像中的二维码进行识别,得到二维码中的帐户信息,之后将识别设备124上生成的支付订单与扫描得到的帐户信息上传至服务器集群140,由服务器集群140根据帐户信息将支付订单发送至用户终端,服务器集群140在接收到用户终端发送的支付确认信息之后,向识别设备124与用户终端返回完成订单支付的信息。
又比如,在采用二维码进行物品信息查询时,终端120通过摄像头采集二维码图像,对二维码图像中的二维码进行识别得到物品编号;终端120向服务器集群140发送携带有上述物品编号的查询请求;服务器集群140查询得到与上述物品编号对应的物品信息之后,将上述物品信息返回给终端120,由终端120进行展示。示例性的,终端120对扫描识别结果的展示可以是通过显示屏进行显示,也可以是通过扬声器进行播报。
上述服务器集群140可以包括一台服务器、多台服务器、云计算平台和虚拟化中心中的至少一种。本领域技术人员可以知晓,上述终端120的数量可以更多或更少。比如,上述终端120可以仅为一个,或者上述终端120为几十个或几百个,或者更多数量,本申请实施例对终端120的数量和设备类型不加以限定。
请参考图2,示出了本申请一个示例性实施例提供的二维码的识别方法的流程图。以该方法应用于图1所示的终端中来举例说明,该方法包括:
步骤201,识别二维码图像中的二维码的定位点,确定出已知定位点的位置信息。
终端通过摄像头采集二维码图像,识别二维码图像中二维码的定位点,确定出已知定位点的位置信息。
可选地,终端对二维码图像进行扫描识别,识别出符合定位点特征的已知定位点,且确定出已知定位点的位置信息。示例性的,终端通过摄像头采集一帧二维码图像;提取二维码图像的灰度信息,对二维码图像进行灰度化;对灰度化后的二维码图像进行二值化,二值化后的二维码图像中每个像素点包括0和1两种状态,分别表示明和暗两种状态,明和暗这两种状态用于标识定位点特征;在二值化后的二维码图像中查找符合定位点特征的已知定位点,并记录已知定位点的中心点的位置作为位置信息。可选地,二维码按照定位点特征和辅助定位点特征的不同来划分类型,不同类型的二维码之间二维码的定位点特征和辅助定位点特征中的至少一项特征不同。示例性的,定位点特征包括在定位点的中心点的水平和竖直方向上的明暗变化比例均为暗:明:暗:明:暗=1:1:3:1:1,如图3所示。
示例性的,二维码可以展示在另一个终端中,该终端中安装有客户端,该客户端提供了二维码的展示功能;比如,在该终端上显示客户端的用户界面,该用户界面上包括展示控件;该终端接收展示控件上的触发对二维码的展示操作,该展示操作可以包括在展示控件上触发的点击操作、滑动操作、长按操作等。或者,在该用户界面上通过指定手势触发对电子票据的展示操作,该指定手势可以包括在用户界面上的双指滑动操作、指关节双击操作、手指悬空操作等。本实施例中对在终端上展示二维码的展示操作的操作方式不加以限定。示例性的,二维码还可以展示在其他载体上,比如,二维码可以印在纸上、或者印在布上、或者印在各种材质的板面上,本实施例中对二维码的展示方式不加以限定。
步骤202,响应于已知定位点的数目属于阈值范围,根据已知定位点的位置信息查找出二维码中的辅助定位点。
上述阈值范围是在终端中预先设置的;示例性的,阈值范围是指大于第一阈值且小于第二阈值的范围。终端响应于已知定位点的数目属于阈值范围,根据已知定位点的位置信息查找出二维码中的辅助定位点。
示例性的,标准二维码中包括三个定位点,相应地,阈值范围为(1,3),即大于1且小于3;终端识别出二维码中的2个已知定位点之后,确定已知定位点的数目属于阈值范围,根据已知定位点的位置信息确定出一个查找区域,在该查找区域中查找出二维码中的辅助定位点。上述辅助定位点用于对二维码图像中的二维码进行辅助定位,示例性的,以一个正方形的二维码为例,该二维码上存在3个定位点和1个辅助定位点,3个定位点分别位于正方形的3个顶点上,辅助定位点则位于最后一个顶点的方向上,辅助3个定位点确定出一个四边形,保证该四边形为一个正方形。
步骤203,根据已知定位点的位置信息与辅助定位点的位置信息确定出缺失定位点的位置信息。
终端根据已知定位点的位置信息与辅助定位点的位置信息确定出缺失定位点的位置信息。示例性的,已知定位点的两两之间具有第一位置关联、已知定位点与辅助定位点之间具有第二位置关联,终端基于第一位置关联与第二位置关联确定出缺失定位点的位置信息,比如,如图4所示,以正方形的二维码中包括三个定位点和一个辅助定位点为例,对缺失定位点的确定方式进行说明,终端识别得到二维码中的已知定位点P1与P2、以及辅助定位点P0,终端基于已知定位点P1与P2确定出候选定位点P3、P4、P5、P6、P7、P8;由于辅助定位点P0在三个定位点所确定的正方形内,且辅助定位点P0不与定位点处于同一个顶点的方位上,因此,基于辅助定位点P0的位置,可以确定候选定位点P5为缺失定位点,记录缺失定位点P5的位置信息。
示例性的,终端按照标准二维码中定位点与辅助定位点的位置信息,确定出二维码中的缺失定位点的位置信息。比如,终端确定标准二维码中标准定位点与二维码中已知定位点、标准辅助定位点与辅助定位点之间的对应关系,进而确定出与缺失定位点对应的标准定位点,基于该标准定位点的位置信息确定出缺失定位点的位置信息。
步骤204,基于辅助定位点的位置信息、已知定位点的位置信息与缺失定位点的位置信息对二维码进行解码,得到二维码中所包含的信息。
终端基于辅助定位点的位置信息、已知定位点的位置信息与缺失定位点的位置信息确定出二维码图像中二维码的像素点的所在区域,终端在上述区域中采集二维码,对二维码进行解码得到二维码中所包含的信息。
步骤205,响应于已知定位点的数目等于目标数目,根据已知定位点的位置信息确定出二维码中的辅助定位点。
上述目标数目是在终端中预先设置的,目标数目用于指示二维码中定位点不缺失。终端响应于已知定位点的数目等于目标数目,根据已知定位点的位置信息确定出二维码中的辅助定位点;示例性的,正方形的二维码中包括三个定位点和一个辅助定位点,三个定位点和一个辅助定位点分别位于四个顶点的区域,在识别得到三个定位点之后,在不包含定位点的一个顶点区域查找出二维码的辅助定位点。
步骤206,基于辅助定位点的位置信息与已知定位点的位置信息对二维码进行解码,得到二维码中所包含的信息。
终端基于辅助定位点的位置信息与已知定位点的位置信息确定出二维码图像中二维码的像素点的所在区域,终端在上述区域中采集二维码,对二维码进行解码得到二维码中所包含的信息。
需要说明的是,若二维码图像中识别到的二维码的已知定位点小于最小阈值,则终端重新获取一帧二维码图像进行二维码的识别。示例性的,最小阈值是在终端中预先设置的,比如,二维码中存在三个定位点,若终端在二维码图像中仅识别得到二维码的一个已知定位点,则终端重新获取一帧二维码图像进行二维码的识别。
综上所述,本实施例提供的二维码的识别方法,在二维码识别的过程中,需要根据定位点识别且采集二维码图像中二维码的像素点,在二维码的定位点缺失的情况下,若已知定位点的数目在设定的阈值范围内,则可以根据已知定位点的位置查找出辅助定位点,继而根据已知定位点的位置信息与辅助定位点的位置信息计算缺失定位点的位置信息,通过辅助定位点的位置信息、已知定位点的位置信息与缺失定位点的位置信息定位出二维码图像中二维码所在区域,进而采集二维码的像素点并对二维码进行解码,最终得到二维码中所包含的信息,无需重新采集二维码图像即可对二维码解码成功,提高了二维码的识别效率。
基于图2,对采用标准二维码确定缺失定位点的方式进行详细说明,示例性的,上述步骤203可以包括步骤2031至步骤2033,如图5,步骤如下:
步骤2031,建立二维码与标准二维码的位置信息之间的变换关系。
上述二维码与标准二维码的位置信息之间的变换关系包括:已知定位点与标准二维码的第一标准定位点的位置信息之间的变换关系、以及辅助定位点与标准辅助定位点的位置信息之间的变换关系。
示例性的,终端基于标准二维码建立直角坐标系,确定三个标准定位点的坐标为A1、A2、A3,确定标准辅助定位点的坐标为A0;将二维码中的已知定位点和辅助定位点标记至坐标系中,得到与第一标准定位点A1对应的已知定位点的坐标B1、与第一标准定位点A2对应的已知定位点的坐标B2、以及与标准辅助定位点A0对应的辅助定位点B0,建立二维码与标准二维码的位置信息之间的变换关系,上述A1与B1之间、A2与B2之间、以及A0与B0之间均满足上述变换关系。
可选地,在终端中,不同类型的二维码设置有各自对应的标准二维码。终端在对定位点缺失的二维码进行识别的过程中,获取与该二维码的类型匹配的标准二维码,进而建立二维码与标准二维码的位置信息之间的变换关系。示例性的,标准二维码与定位点特征对应设置,终端在扫描得到已知定位点之后,获取与已知定位点的定位点特征对应的标准二维码,建立二维码与标准二维码的位置信息之间的变换关系;或者,标准二维码与定位点特征、以及辅助定位点特征对应设置,终端在扫描得到已知定位点与辅助定位点之后,获取与已知定位点的定位点特征、以及辅助定位点的辅助定位点特征对应的标准二维码,建立二维码与标准二维码的位置信息之间的变换关系。
可选地,上述变换关系包括仿射变换关系,该仿射变换关系用于将二维码所在的向量空间进行一次线性变换并接上一个平移变换之后,变换为另一个向量空间;即对二维码所在的向量空间进行一次线性变换,之后进行一次平移变换,则二维码所在的向量空间从一个向量空间变换为另一个向量空间。终端中设置有夹角阈值,该夹角阈值用于确定上述变换关系的类型。终端判断二维码的展示平面与扫描摄像头所在平面之间为锐角的平面夹角是否小于或者等于夹角阈值,若是,终端响应于二维码的展示平面与扫描摄像头所在平面之间的平面夹角小于或者等于夹角阈值,建立二维码与标准二维码的位置信息之间的仿射变换关系。
可选地,上述变换关系包括投影变换关系,投影变换关系用于将二维码所在平面变换为和二维码的投影平面平行的平面;即对二维码所在的向量空间进行投影变化,则二维码所在的向量空间从一个向量空间变换为二维码的投影所在的一个向量空间。终端判断二维码的展示平面与扫描摄像头所在平面之间为锐角的平面夹角是否大于夹角阈值,若是,终端响应于二维码的展示平面与扫描摄像头所在平面之间的平面夹角大于夹角阈值,建立二维码与标准二维码的位置信息之间的投影变换关系。
步骤2032,根据变换关系确定出二维码与标准二维码之间的变换矩阵。
终端对变换关系求解,得到二维码与标准二维码之间的变换关系中的变换矩阵。示例性的,终端基于上述A1与B1之间、A2与B2之间、以及A0与B0之间的变换关系,进行求解得到上述变换矩阵λ。可选地,上述变换矩阵是仿射变换矩阵或者投影变换矩阵。
步骤2033,基于变换矩阵计算与标准二维码的第二标准定位点对应的缺失定位点的位置信息。
终端将变换矩阵与标准二维码的第二标准定位点的位置信息代入变换关系中,求解得到与第二标准定位点对应的缺失定位点的位置信息。示例性的,将第二标准定位点的坐标A3与变换矩阵λ代入变换关系中,求解得到缺失定位点的坐标B3。
综上所述,本实施例提供的二维码的识别方法,采用了标准二维码与二维码之间的变换关系来确定缺失定位点的位置信息,以能够准确的计算出缺失定位点的位置信息,进而提高对二维码识别的成功率。
在该实施例中终端还基于摄像头扫描二维码的角度来匹配更适合的变换关系,以计算出更准确的缺失定位点的位置信息,即提高了计算出的缺失定位点的位置信息的准确率。
基于图2,对辅助定位点的确定方式进行详细说明,示例性的,如图6所示,步骤202可以包括步骤2021至步骤2022,步骤如下:
步骤2021,响应于已知定位点的数目属于阈值范围,根据已知定位点的位置信息确定出辅助定位点的候选位置信息。
终端响应于已知定位点的数目属于阈值范围,终端根据已知定位点的位置信息确定出辅助定位点的n个候选位置信息,n为正整数。
示例性的,如图7所示,正方形的二维码中包含了三个定位点与一个辅助定位点,终端在识别出已知定位点R1和R2之后,基于辅助定位点的候选位置信息的查找规则,确定出辅助定位点的6个候选位置。其中,上述查找规则包括:以R1和R2之间的连线为边长绘制正方形,将除R1和R2之外的正方形顶点的位置确定为辅助定位点的候选位置;以R1和R2之间的连线为对角线绘制正方形,将将除R1和R2之外的正方形顶点的位置确定为辅助定位点的候选位置。
步骤2022,基于候选位置信息查找出符合辅助定位点特征的辅助定位点。
示例性的,终端将候选位置信息作为辅助定位点的中心点,依次识别每个候选位置信息上是否存在与辅助定位点特征匹配的图形,若存在则查找得到辅助定位点。示例性的,辅助定位点特征包括在辅助定位点的中心点的水平和竖直方向上的明暗变化比例均为暗:明:暗:明:暗=1:1:1:1:1,如图8所示。
可选地,终端以候选位置信息为中心确定出查找区域,从查找区域中查找出符合辅助定位点特征的辅助定位点;示例性的,如图7所示,终端以候选位置R6为中心,确定出一个圆形区域,该圆形区域即为R6对应的查找区域。
综上所示,本实施例提供的二维码的识别方法,基于已知定位点的位置信息定位出辅助定位点可能存在的候选位置,基于候选位置能够更有效的实现对辅助定位点的识别,无需在整个二维码图像中进行扫描识别,提高了辅助定位点的查找效率。本实施例中,还基于候选位置信息确定出一定的查找区域,避免了由于候选位置信息的定位偏差,错过辅助定位点的问题。
需要说明的是,存在终端在二维码中无法识别到辅助定位点的情形,对于此种情形,如图9所示,基于图6所示的实施例,增加以下步骤2023至步骤2024以实现对二维码的识别,步骤如下:
步骤2023,响应于不存在与候选位置信息对应的辅助定位点,将候选位置信息确定为缺失定位点的位置信息。
示例性的,终端在无法识别到辅助定位点时,将n个候选位置信息确定为缺失定位点的位置信息,得到n个缺失定位点的位置信息。
步骤2024,基于已知定位点的位置信息与缺失定位点的位置信息对二维码进行解码,得到二维码中所包含的信息。
终端依次将n个缺失定位点的位置信息中的第i个位置信息与已知定位点的位置信息结合,从二维码图像中确定出二维码的像素点,采集二维码的像素点,进而对二维码进行解码,得到二维码中所包含的信息,i为小于或者等于n的正整数。
需要说明的是,若n个缺失定位点的位置信息中不存在能够对二维码成功解码的位置信息,则终端重新获取一帧二维码图像进行解码。
综上所示,本实施例提供的二维码的识别方法,存在缺失定位点的位置信息与一个候选位置信息重合的情形,在终端在二维码中无法识别到辅助定位点的情形下,直接将辅助定位点的候选位置信息确定为缺失定位点的位置信息,进行解码探索,能够避免漏掉正确的缺失定位点的位置信息,也提高了二维码的解码成功率。
请参考图10,示出了本申请的一个示例性实施例提供的二维码的识别方法的流程图,以该方法应用于图1所示的终端中来举例说明,该方法包括:
步骤301,采集二维码图像。
终端通过摄像头采集二维码图像。
步骤302,对二维码图像进行灰度化与二值化。
终端对二维码图像进行灰度化,之后将灰度化后的二维码图像进行二值化,得到二值化后的二维码图像。
步骤303,识别二维码图像中二维码的已知定位点。
二维码的定位点在水平和竖直方向上的明暗变化为暗:明:暗:明:暗=1:1:3:1:1,终端按照上述定位点的明暗变化对二值化的二维码图像进行扫描识别,从二维码图像中识别出符合上述明暗变化的二维码的已知定位点。
步骤304,判断已知定位点的数目是否等于3。
终端判断识别得到的已知定位点的数目是否等于3,若是,执行步骤311;若不是,执行步骤305。
步骤305,判断已知定位点的数目是否等于2。
终端判断识别得到的已知定位点的数目是否等于2,若是,执行步骤306;若不是,返回执行步骤301。
步骤306,查找出二维码中的辅助定位点。
二维码的辅助定位点在水平和竖直方向上的明暗变化为暗:明:暗:明:暗=1:1:1:1:1,终端按照上述定位点的明暗变化对二值化的二维码图像进行扫描识别,从二维码图像中识别符合上述明暗变化的二维码的辅助定位点。
步骤307,判断是否存在辅助定位点。
终端判断是否从二维码图像中识别出符合上述明暗变化的二维码的辅助定位点,若是,执行步骤308;若不是,执行步骤310。
步骤308,构建变换矩阵。
终端建立二维码与标准二维码之间的变换关系,基于二维码的2个已知定位点和1个辅助定位点、与标准二维码中第一标准定位点和标准辅助定位点,求解变换关系中的变换矩阵。
步骤309,通过变换矩阵计算缺失定位点。
终端根据变换矩阵计算出与标准二维码中第二标准定位点对应的缺失定位点,即将第二标准定位点作为输入,基于变换矩阵计算出缺失定位点。终端计算得到缺失定位点之后,执行步骤311。
步骤310,通过正方形顶点关系计算缺失定位点。
终端将2个已知定位点之间的连线作为边长确定出两个正方形,将上述正方形中除上述2个已知定位点所在顶点之外的顶点确定为缺失定位点所在位置;将2个已知定位点之间的连线作为对角线确定出一个正方形,将上述正方形中除上述2个已知定位点所在顶点之外的顶点确定为缺失定位点所在位置。终端计算得到缺失定位点之后,执行步骤311。
步骤311,根据3个定位点对二维码进行采样。
终端根据3个定位点确定出二维码的像素点在二维码图像中的所在位置,对二维码的像素点进行采样;或者,终端根据3个定位点与1个辅助定位点确定出二维码的像素点在二维码图像中的所在位置,对二维码的像素点进行采样。其中,上述3个定位点包括3个已知定位点,或者2个已知定位点和1个缺失定位点。
步骤312,对二维码进行解码。
终端对采样得到的二维码进行解码。
步骤313,判断是否解码成功。
终端判断对二维码是否解码成功,若是,则执行步骤314;若不是,则返回执行步骤301。
步骤314,输出对二维码解码得到的信息。
终端对二维码进行解码得到二维码所包含的信息,终端输入上述信息。
综上所述,本实施例提供的二维码的识别方法,在二维码识别的过程中,需要根据定位点识别且采集二维码图像中二维码的像素点,在二维码的定位点缺失的情况下,若已知定位点的数目为2,则可以继续查找出辅助定位点,继而根据已知定位点的位置信息与辅助定位点的位置信息计算缺失定位点的位置信息,通过辅助定位点的位置信息、已知定位点的位置信息与缺失定位点的位置信息定位出二维码图像中二维码所在区域,进而采集二维码的像素点并对二维码进行解码,最终得到二维码中所包含的信息,无需重新采集二维码图像即可对二维码解码成功,提高了二维码的识别效率。
请参考图11,示出了本申请一个示例性实施例提供的二维码的识别装置的框图。该装置可以通过软件、硬件、或者二者结合实现成为终端的部分或者全部。该装置包括:
识别模块401,用于识别二维码图像中的二维码的定位点,确定出已知定位点的位置信息;
查找模块402,用于响应于已知定位点的数目属于阈值范围,根据已知定位点的位置信息查找出二维码中的辅助定位点;
确定模块403,用于根据已知定位点的位置信息与辅助定位点的位置信息确定出缺失定位点的位置信息;
解码模块404,用于基于辅助定位点的位置信息、已知定位点的位置信息与缺失定位点的位置信息对二维码进行解码,得到二维码中所包含的信息。
在一些实施例中,确定模块403,包括:
建立子模块4031,用于建立二维码与标准二维码的位置信息之间的变换关系,变换关系包括已知定位点与标准二维码的第一标准定位点的位置信息之间的变换关系、以及辅助定位点与标准二维码的标准辅助定位点的位置信息之间的变换关系;
确定子模块4032,用于根据变换关系确定出二维码与标准二维码之间的变换矩阵;
计算子模块4033,用于基于变换矩阵计算与标准二维码的第二标准定位点对应的缺失定位点的位置信息。
在一些实施例中,变换关系包括仿射变换关系,仿射变换关系用于将二维码所在的向量空间进行一次线性变换并接上一个平移变换之后,变换为另一个向量空间;
建立子模块4031,用于响应于二维码的展示平面与扫描摄像头所在平面之间的平面夹角小于夹角阈值,建立二维码与标准二维码的位置信息之间的仿射变换关系。
在一些实施例中,变换关系包括投影变换关系,投影变换关系用于将二维码所在平面变换为和二维码的投影面平行的平面;
建立子模块4031,用于响应于二维码的展示平面与扫描摄像头所在平面之间的平面夹角大于夹角阈值,建立二维码与标准二维码的位置信息之间的投影变换关系。
在一些实施例中,查找模块402,用于根据已知定位点的位置信息确定出辅助定位点的候选位置信息;基于候选位置信息查找出符合辅助定位点特征的辅助定位点。
在一些实施例中,查找模块402,用于以候选位置信息为中心确定出查找区域;从查找区域中查找出符合辅助定位点特征的辅助定位点。
在一些实施例中,确定模块403,还用于响应于不存在与候选位置信息对应的辅助定位点,将候选位置信息确定为缺失定位点的位置信息;
解码模块404,用于基于已知定位点的位置信息与缺失定位点的位置信息对二维码进行解码,得到二维码中所包含的信息。
综上所述,本实施例提供的二维码的识别装置,在二维码识别的过程中,需要根据定位点识别且采集二维码图像中二维码的像素点,在二维码的定位点缺失的情况下,若已知定位点的数目在设定的阈值范围内,则可以根据已知定位点的位置查找出辅助定位点,继而根据已知定位点的位置信息与辅助定位点的位置信息计算缺失定位点的位置信息,通过辅助定位点的位置信息、已知定位点的位置信息与缺失定位点的位置信息定位出二维码图像中二维码所在区域,进而采集二维码的像素点并对二维码进行解码,最终得到二维码中所包含的信息,无需重新采集二维码图像即可对二维码解码成功,提高了二维码的识别效率。
请参考图12,示出了本申请一个示例性实施例提供的计算机设备的结构示意图。该计算机设备可以是执行如本申请提供的二维码的识别方法的终端。具体来讲:
计算机设备500包括中央处理单元(CPU,Central Processing Unit)501、包括随机存取存储器(RAM,Random Access Memory)502和只读存储器(ROM,Read Only Memory)503的系统存储器504,以及连接系统存储器504和中央处理单元501的系统总线505。计算机设备500还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统,Input Output System)506,和用于存储操作系统513、应用程序514和其他程序模块515的大容量存储设备507。
基本输入/输出系统506包括有用于显示信息的显示器508和用于用户输入信息的诸如鼠标、键盘之类的输入设备509。其中显示器508和输入设备509都通过连接到系统总线505的输入输出控制器510连接到中央处理单元501。基本输入/输出系统506还可以包括输入输出控制器510以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器510还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备507通过连接到系统总线505的大容量存储控制器(未示出)连接到中央处理单元501。大容量存储设备507及其相关联的计算机可读介质为计算机设备500提供非易失性存储。也就是说,大容量存储设备507可以包括诸如硬盘或者紧凑型光盘只读存储器(CD-ROM,Compact Disc Read Only Memory)驱动器之类的计算机可读介质(未示出)。
计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、可擦除可编程只读存储器(EPROM,Erasable Programmable Read Only Memory)、带电可擦可编程只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory)、闪存或其他固态存储其技术,CD-ROM、数字通用光盘(DVD,Digital Versatile Disc)或固态硬盘(SSD,Solid State Drives)、其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器504和大容量存储设备507可以统称为存储器。
根据本申请的各种实施例,计算机设备500还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即计算机设备500可以通过连接在系统总线505上的网络接口单元511连接到网络512,或者说,也可以使用网络接口单元511来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。
在一个可选的实施例中,提供了一种计算机设备,该计算机设备包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上所述的二维码的识别方法。
在一个可选的实施例中,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如上所述的二维码的识别方法。
可选地,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、固态硬盘(SSD,Solid State Drives)或光盘等。其中,随机存取记忆体可以包括电阻式随机存取记忆体(ReRAM,Resistance RandomAccess Memory)和动态随机存取存储器(DRAM,Dynamic Random Access Memory)。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
本申请还提供一种计算机可读存储介质,该存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,该至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述各方法实施例提供的二维码的识别方法。
本申请还提供了一种计算机程序产品,上述计算机程序产品包括计算机指令,上述计算机指令存储在计算机可读存储介质中。计算机设备的处理器从上述计算机可读存储介质读取上述计算机指令,上述处理器执行上述计算机指令,使得上述计算机设备执行如上所述的二维码的识别方法。
应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (6)
1.一种二维码的识别方法,其特征在于,所述方法包括:
识别二维码图像中的所述二维码的定位点,确定出已知定位点的位置信息;
响应于所述已知定位点的数目属于阈值范围,根据所述已知定位点的位置信息查找出所述二维码中的辅助定位点;
根据所述已知定位点的位置信息与所述辅助定位点的位置信息确定出缺失定位点的位置信息;
基于所述辅助定位点的位置信息、所述已知定位点的位置信息与所述缺失定位点的位置信息对所述二维码进行解码,得到所述二维码中所包含的信息;
其中,所述根据所述已知定位点的位置信息与所述辅助定位点的位置信息确定出缺失定位点的位置信息,包括:
建立所述二维码与标准二维码的位置信息之间的变换关系,所述变换关系包括所述已知定位点与所述标准二维码的第一标准定位点的位置信息之间的变换关系、以及所述辅助定位点与所述标准二维码的标准辅助定位点的位置信息之间的变换关系;
根据所述变换关系确定出所述二维码与所述标准二维码之间的变换矩阵;
基于所述变换矩阵计算与所述标准二维码的第二标准定位点对应的所述缺失定位点的位置信息;
其中,所述变换关系包括仿射变换关系,所述仿射变换关系用于将所述二维码所在的向量空间进行一次线性变换并接上一个平移变换之后,变换为另一个向量空间;
所述建立所述二维码与标准二维码的位置信息之间的变换关系,包括:
响应于所述二维码的展示平面与扫描摄像头所在平面之间的平面夹角小于夹角阈值,建立所述二维码与所述标准二维码的位置信息之间的所述仿射变换关系;
其中,所述根据所述已知定位点的位置信息查找出所述二维码中的辅助定位点,包括:
根据所述已知定位点的位置信息确定出所述辅助定位点的候选位置信息;基于所述候选位置信息查找出符合辅助定位点特征的所述辅助定位点;
其中,所述基于所述候选位置信息查找出符合辅助定位点特征的所述辅助定位点,包括:
以所述候选位置信息为中心确定出查找区域;
从所述查找区域中查找出符合所述辅助定位点特征的所述辅助定位点。
2.根据权利要求1所述的方法,其特征在于,所述变换关系包括投影变换关系,所述投影变换关系用于将所述二维码所在平面变换为与所述二维码的投影面平行的平面;
所述建立所述二维码与标准二维码的位置信息之间的变换关系,包括:
响应于所述二维码的展示平面与扫描摄像头所在平面之间的平面夹角大于夹角阈值,建立所述二维码与所述标准二维码的位置信息之间的所述投影变换关系。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于不存在与所述候选位置信息对应的所述辅助定位点,将所述候选位置信息确定为所述缺失定位点的位置信息;
基于所述已知定位点的位置信息与所述缺失定位点的位置信息对所述二维码进行解码,得到所述二维码中所包含的信息。
4.一种二维码的识别装置,其特征在于,所述装置包括:
识别模块,用于识别二维码图像中的所述二维码的定位点,确定出已知定位点的位置信息;
查找模块,用于响应于所述已知定位点的数目属于阈值范围,根据所述已知定位点的位置信息查找出所述二维码中的辅助定位点;
确定模块,用于根据所述已知定位点的位置信息与所述辅助定位点的位置信息确定出缺失定位点的位置信息;
解码模块,用于基于所述辅助定位点的位置信息、所述已知定位点的位置信息与所述缺失定位点的位置信息对所述二维码进行解码,得到所述二维码中所包含的信息;
其中,所述根据所述已知定位点的位置信息与所述辅助定位点的位置信息确定出缺失定位点的位置信息,包括:
建立所述二维码与标准二维码的位置信息之间的变换关系,所述变换关系包括所述已知定位点与所述标准二维码的第一标准定位点的位置信息之间的变换关系、以及所述辅助定位点与所述标准二维码的标准辅助定位点的位置信息之间的变换关系;
根据所述变换关系确定出所述二维码与所述标准二维码之间的变换矩阵;
基于所述变换矩阵计算与所述标准二维码的第二标准定位点对应的所述缺失定位点的位置信息;
其中,所述变换关系包括仿射变换关系,所述仿射变换关系用于将所述二维码所在的向量空间进行一次线性变换并接上一个平移变换之后,变换为另一个向量空间;
所述建立所述二维码与标准二维码的位置信息之间的变换关系,包括:
响应于所述二维码的展示平面与扫描摄像头所在平面之间的平面夹角小于夹角阈值,建立所述二维码与所述标准二维码的位置信息之间的所述仿射变换关系;
其中,所述根据所述已知定位点的位置信息查找出所述二维码中的辅助定位点,包括:
根据所述已知定位点的位置信息确定出所述辅助定位点的候选位置信息;基于所述候选位置信息查找出符合辅助定位点特征的所述辅助定位点;
其中,所述基于所述候选位置信息查找出符合辅助定位点特征的所述辅助定位点,包括:
以所述候选位置信息为中心确定出查找区域;
从所述查找区域中查找出符合所述辅助定位点特征的所述辅助定位点。
5.一种计算机设备,其特征在于,所述计算机设备包括:处理器和存储器,所述存储器存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至4任一所述的二维码的识别方法。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现如权利要求1至4任一所述的二维码的识别方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010821260.0A CN111951329B (zh) | 2020-08-14 | 二维码的识别方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010821260.0A CN111951329B (zh) | 2020-08-14 | 二维码的识别方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111951329A CN111951329A (zh) | 2020-11-17 |
CN111951329B true CN111951329B (zh) | 2024-04-19 |
Family
ID=
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018006841A1 (zh) * | 2016-07-06 | 2018-01-11 | 北京金山安全软件有限公司 | 二维码信息传输方法、装置以及设备 |
CN109190436A (zh) * | 2018-07-30 | 2019-01-11 | 努比亚技术有限公司 | 一种二维码识别方法、移动终端及存储介质 |
CN109977718A (zh) * | 2019-03-21 | 2019-07-05 | 连尚(新昌)网络科技有限公司 | 一种用于识别二维码的方法与设备 |
CN111488753A (zh) * | 2019-01-29 | 2020-08-04 | 北京骑胜科技有限公司 | 二维码识别方法、装置、电子设备以及可读存储介质 |
WO2020156552A1 (zh) * | 2019-01-31 | 2020-08-06 | 北京嘀嘀无限科技发展有限公司 | 二维码生成、识别方法及装置 |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018006841A1 (zh) * | 2016-07-06 | 2018-01-11 | 北京金山安全软件有限公司 | 二维码信息传输方法、装置以及设备 |
CN109190436A (zh) * | 2018-07-30 | 2019-01-11 | 努比亚技术有限公司 | 一种二维码识别方法、移动终端及存储介质 |
CN111488753A (zh) * | 2019-01-29 | 2020-08-04 | 北京骑胜科技有限公司 | 二维码识别方法、装置、电子设备以及可读存储介质 |
WO2020156552A1 (zh) * | 2019-01-31 | 2020-08-06 | 北京嘀嘀无限科技发展有限公司 | 二维码生成、识别方法及装置 |
CN109977718A (zh) * | 2019-03-21 | 2019-07-05 | 连尚(新昌)网络科技有限公司 | 一种用于识别二维码的方法与设备 |
Non-Patent Citations (2)
Title |
---|
基于图像处理的复杂条件下手机二维码识别;黄宏博;穆志纯;;北京信息科技大学学报(自然科学版)(05);全文 * |
存在干扰环境下二维码提取技术;吴洪渝;;电脑迷(09);全文 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230067071A1 (en) | System and method for document processing | |
US7886978B2 (en) | Techniques for decoding images of barcodes | |
CN111259889A (zh) | 图像文本识别方法、装置、计算机设备及计算机存储介质 | |
US10169629B2 (en) | Decoding visual codes | |
CN110659529B (zh) | 条形码识别方法、装置、计算机设备和存储介质 | |
Dubská et al. | Real-time precise detection of regular grids and matrix codes | |
CN111860502A (zh) | 图片表格的识别方法、装置、电子设备及存储介质 | |
US11574492B2 (en) | Efficient location and identification of documents in images | |
CN111222382A (zh) | 一种基于图像的商品结算方法、装置、介质及电子设备 | |
CN111767750A (zh) | 图像处理方法和装置 | |
CN112052702A (zh) | 一种识别二维码的方法和装置 | |
CN112396048B (zh) | 图片信息提取方法、装置、计算机设备及存储介质 | |
CN111951329B (zh) | 二维码的识别方法、装置、设备及存储介质 | |
CN111797642B (zh) | 条形码识别方法及终端 | |
CN110321858B (zh) | 视频相似度确定方法、装置、电子设备及存储介质 | |
CN111951329A (zh) | 二维码的识别方法、装置、设备及存储介质 | |
US20140312113A1 (en) | Method, apparatus and system for obtaining location information | |
CN112163655B (zh) | 一种动态隐式二维码及其生成和检测方法及设备 | |
CN113761960B (zh) | 用于识别条形码的方法和装置 | |
CN113496134A (zh) | 二维码定位方法、装置、设备及存储介质 | |
CN110807452A (zh) | 预测模型构建方法、装置、系统及银行卡卡号识别方法 | |
CN109190735B (zh) | 一种用于柱形表面的二维码生成方法、系统及装置 | |
KR102248858B1 (ko) | 2차원 코드 인식 및 정보 표시 방법 | |
Dong et al. | A Real-Time Algorithm for Multiple Data Matrix Codes Localization | |
JP2017072940A (ja) | 画像処理システム、画像処理方法および画像処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |