数据矩阵码识别方法、装置及电子设备与流程

文档序号:16630370发布日期:2019-01-16 06:30阅读:395来源:国知局
数据矩阵码识别方法、装置及电子设备与流程

本发明涉及二维码识别技术领域,特别是涉及数据矩阵码识别方法、装置及电子设备。



背景技术:

随着信息时代的高速发展,条形码因存储容量小而使其应用受到了限制。而二维码可以在水平和垂直方向上同时表达信息,存储容量大,且二维码具有很强的数据纠错能力,可靠性强。数据矩阵码作为二维码中的一种,其特点在于存储效率高、尺寸小、纠错能力强,因此在工业自动化、自动识别等领域有着广泛的应用。图1为常见的数据矩阵码的结构示意图,常见的数据矩阵码包括校正图形(图中未示出)、定位图形101以及数据区。数据区由随机分布的白色模块102和黑色模块103组成,这些白色模块102和黑色模块103对应的比特值组成的矩阵为数据矩阵码数据区的比特矩阵。数据区比特矩阵大小由校正图形得到的模块个数决定。

已知的数据矩阵码识别方法,主要为利用轮廓跟踪法定位数据矩阵码的边界和单个模块的平均尺寸大小;然后垂直方向作一组与码垂直边界平行的直线,相邻平行线间的间距为模块宽度值,其中第一条平行线和边界距离为1.5倍模块宽度值大小;同理在水平方向作与垂直方向同样的一组平行线;根据两组直线的交点确定黑色模块和白色模块的坐标,根据对应坐标点的二值信息提取数据区的比特矩阵,完成数据矩阵码的识别。

可以看出,已知的数据矩阵码识别方法利用均匀分布的平行线确定每个模块,并且利用单个采样点的坐标对应的二值信息确定对应模块的比特值。如此使得,当数据矩阵码定位边界有偏差时,所有的采样点都会出现偏差,使得提取的比特矩阵的错误率较大,进而使得数据矩阵码识别准确率较低。



技术实现要素:

本发明实施例的目的在于提供数据矩阵码识别方法、装置及电子设备,以提高识别数据矩阵码时的识别准确率。具体技术方案如下:

第一方面,本发明实施例提供了一种数据矩阵码识别方法,包括:

获取包含待识别数据矩阵码的数据矩阵码图像;

根据所述数据矩阵码图像中像素的黑、白跳变规律,对所述数据矩阵码图像进行分块;

针对每个分块,根据该分块中像素的所述黑、白跳变规律,确定该分块中包含的各模块,并根据各模块对应的比特值,确定该分块对应的比特矩阵;

合并每个分块对应的所述比特矩阵,得到所述待识别数据矩阵码对应的比特矩阵。

可选的,所述根据所述数据矩阵码图像中像素的黑、白跳变规律,对所述数据矩阵码图像进行分块的步骤包括:

根据所述数据矩阵码图像中像素的所述黑、白跳变规律,确定分块边界;

根据所确定的分块边界对所述数据矩阵码图像进行分块。

可选的,所述根据所述数据矩阵码图像中像素的所述黑、白跳变规律,确定分块边界的步骤包括:

对所述数据矩阵码图像中每行上像素的黑白跳变点进行垂直投影,得到所述数据矩阵码图像水平方向上的第一黑白跳变点累加值,选取所述数据矩阵码图像的垂直中心线预设范围内所述第一黑白跳变点累加值最大的坐标处对应的垂直线作为第一分块垂直分界线;

对所述数据矩阵码图像中每列上像素的黑白跳变点进行水平投影,得到所述数据矩阵码图像垂直方向上的第二黑白跳变点累加值,选取所述数据矩阵码图像的水平中心线预设范围内所述第二黑白跳变点累加值最大的坐标处对应的水平线作为第一分块水平分界线;

将所述第一分块垂直分界线和所述第一分块水平分界线作为分块边界。

可选的,所述根据所述数据矩阵码图像中像素的所述黑、白跳变规律,确定分块边界的步骤包括:

根据所述数据矩阵码图像的水平中心线将所述数据矩阵码图像分为上半部分和下半部分;

对所述上半部分中每行上像素的黑白跳变点进行垂直投影,得到所述数据矩阵码图像水平方向上的第三黑白跳变点累加值,选取所述数据矩阵码图像的垂直中心线预设范围内所述第三黑白跳变点累加值最大的坐标处对应的垂直线作为第二分块垂直分界线;

对所述下半部分中每行上像素的黑白跳变点进行垂直投影,得到所述数据矩阵码图像水平方向上的第四黑白跳变点累加值,选取所述数据矩阵码图像的垂直中心线预设范围内所述第四黑白跳变点累加值最大的坐标处对应的垂直线作为第三分块垂直分界线;

根据所述数据矩阵码图像的垂直中心线将所述数据矩阵码图像分为左半部分和右半部分;

对所述左半部分中每列上像素的黑白跳变点进行水平投影,得到所述数据矩阵码图像垂直方向上的第五黑白跳变点累加值,选取所述数据矩阵码图像的垂直中心线预设范围内所述第五黑白跳变点累加值最大的坐标处对应的垂直线作为第二分块水平分界线;

对所述右半部分中每列上像素的黑白跳变点进行水平投影,得到所述数据矩阵码图像垂直方向上的第六黑白跳变点累加值,选取所述数据矩阵码图像的垂直中心线预设范围内所述第六黑白跳变点累加值最大的坐标处对应的垂直线作为第三分块水平分界线;

将所述第二分块垂直分界线、所述第三分块垂直分界线、所述第二分块水平分界线、所述第三分块水平分界线作为分块边界。

可选的,所述针对每个分块,根据该分块中像素的所述黑、白跳变规律,确定该分块中包含的各模块,并根据各模块对应的比特值,确定该分块对应的比特矩阵的步骤包括:

针对每个分块,根据该分块中像素的所述黑、白跳变规律,确定该分块的模块边界,并根据所确定的模块边界,确定该分块中包含的各模块;

根据各模块中黑色像素和白色像素的数目,确定各模块对应的比特值,并将各模块对应的比特值组合得到该分块对应的比特矩阵。

可选的,所述针对每个分块,根据该分块中像素的所述黑、白跳变规律,确定该分块的模块边界的步骤包括:

针对每个分块,对该分块中每行上像素的黑白跳变点进行垂直投影,选取黑白跳变点累加值的局部极大值点处对应的垂直线作为模块垂直分界线;

对该分块中每列上像素的黑白跳变点进行水平投影,选取黑白跳变点累加值的局部极大值点处对应的水平线作为模块水平分界线;

将所述模块垂直分界线和所述模块水平分界线作为该分块的模块边界。

可选的,在所述确定该分块的模块边界之后,所述方法还包括:

对所述模块边界的预设范围内每行上像素的黑白跳变点进行垂直投影,选取黑白跳变点累加值局部极大值处对应的水平线作为该模块的模块水平分界线;

对所述模块边界的预设范围内每列上像素的黑白跳变点进行水平投影,选取黑白跳变点累加值局部极大值处对应的垂直线作为该模块的模块垂直分界线。

可选的,所述根据各模块中黑色像素和白色像素的数目,确定各模块对应的比特值的步骤包括:

针对每个模块,统计该模块中包括的所述黑色像素的第一数目和所述白色像素的第二数目,将第一数目和第二数目中最大值对应的像素类型对应的比特值作为该模块对应的比特值。

可选的,所述根据所述数据矩阵码图像中像素的黑、白跳变规律,对所述数据矩阵码图像进行分块之前,所述方法还包括:

对所述数据矩阵码图像中包括的所述待识别数据矩阵码进行定位,得到所述待识别数据矩阵码的定位坐标;

根据所述定位坐标对所述数据矩阵码图像进行透视变换,并对所述数据矩阵码图像进行二值化处理,得到目标数据矩阵码图像;

所述根据所述数据矩阵码图像中像素的黑、白跳变规律,对所述数据矩阵码图像进行分块的步骤包括:

根据所述目标数据矩阵码图像中像素的黑、白跳变规律,对所述目标数据矩阵码图像进行分块。

第二方面,本发明实施例还提供了一种数据矩阵码识别装置,包括:

获取模块,用于获取包含待识别数据矩阵码的数据矩阵码图像;

分块模块,根据所述数据矩阵码图像中像素的黑、白跳变规律,对所述数据矩阵码图像进行分块;

确定模块,用于针对每个分块,根据该分块中像素的所述黑、白跳变规律,确定该分块中包含的各模块,并根据各模块对应的比特值,确定该分块对应的比特矩阵;

合并模块,用于合并每个分块对应的所述比特矩阵,得到所述待识别数据矩阵码对应的比特矩阵。

可选的,所述分块模块包括:

第一确定子模块,用于根据所述数据矩阵码图像中像素的所述黑、白跳变规律,确定分块边界;

分块子模块,用于根据所确定的分块边界对所述数据矩阵码图像进行分块。

可选的,所述第一确定子模块,包括:

第一选取单元,用于对所述数据矩阵码图像中每行上像素的黑白跳变点进行垂直投影,得到所述数据矩阵码图像水平方向上的第一黑白跳变点累加值,选取所述数据矩阵码图像的垂直中心线预设范围内所述第一黑白跳变点累加值最大的坐标处对应的垂直线作为第一分块垂直分界线;

第二选取单元,用于对所述数据矩阵码图像中每列上像素的黑白跳变点进行水平投影,得到所述数据矩阵码图像垂直方向上的第二黑白跳变点累加值,选取所述数据矩阵码图像的水平中心线预设范围内所述第二黑白跳变点累加值最大的坐标处对应的水平线作为第一分块水平分界线;

第一确定分块边界单元,用于将所述第一分块垂直分界线和所述第一分块水平分界线作为分块边界。

可选的,所述第一确定子模块,包括:

第一分割单元,用于根据所述数据矩阵码图像的水平中心线将所述数据矩阵码图像分为上半部分和下半部分;

第三选取单元,用于对所述上半部分中每行上像素的黑白跳变点进行垂直投影,得到所述数据矩阵码图像水平方向上的第三黑白跳变点累加值,选取所述数据矩阵码图像的垂直中心线预设范围内所述第三黑白跳变点累加值最大的坐标处对应的垂直线作为第二分块垂直分界线;

第四选取单元,用于对所述下半部分中每行上像素的黑白跳变点进行垂直投影,得到所述数据矩阵码图像水平方向上的第四黑白跳变点累加值,选取所述数据矩阵码图像的垂直中心线预设范围内所述第四黑白跳变点累加值最大的坐标处对应的垂直线作为第三分块垂直分界线;

第二分割单元,用于根据所述数据矩阵码图像的垂直中心线将所述数据矩阵码图像分为左半部分和右半部分;

第五选取单元,用于对所述左半部分中每列上像素的黑白跳变点进行水平投影,得到所述数据矩阵码图像垂直方向上的第五黑白跳变点累加值,选取所述数据矩阵码图像的垂直中心线预设范围内所述第五黑白跳变点累加值最大的坐标处对应的垂直线作为第二分块水平分界线;

第六选取单元,用于对所述右半部分中每列上像素的黑白跳变点进行水平投影,得到所述数据矩阵码图像垂直方向上的第六黑白跳变点累加值,选取所述数据矩阵码图像的垂直中心线预设范围内所述第六黑白跳变点累加值最大的坐标处对应的垂直线作为第三分块水平分界线;

第二确定分块边界单元,用于将所述第二分块垂直分界线、所述第三分块垂直分界线、所述第二分块水平分界线、所述第三分块水平分界线作为分块边界。

可选的,所述确定模块,包括:

第二确定子模块,用于针对每个分块,根据该分块中像素的所述黑、白跳变规律,确定该分块的模块边界,并根据所确定的模块边界,确定该分块中包含的各模块;

第三确定子模块,用于根据各模块中黑色像素和白色像素的数目,确定各模块对应的比特值,并将各模块对应的比特值组合得到该分块对应的比特矩阵。

可选的,所述第二确定子模块包括:

第七选取单元,用于针对每个分块,对该分块中每行上像素的黑白跳变点进行垂直投影,选取黑白跳变点累加值的局部极大值点处对应的垂直线作为模块垂直分界线;

第八选取单元,用于对该分块中每列上像素的黑白跳变点进行水平投影,选取黑白跳变点累加值的局部极大值点处对应的水平线作为模块水平分界线;

确定模块边界单元,用于将所述模块垂直分界线和所述模块水平分界线作为该分块的模块边界。

可选的,所述装置还包括:

第一选取模块,用于对所述模块边界的预设范围内每行上像素的黑白跳变点进行垂直投影,选取黑白跳变点累加值局部极大值处对应的水平线作为该模块的模块水平分界线;

第二选取模块,用于对所述模块边界的预设范围内每列上像素的黑白跳变点进行水平投影,选取黑白跳变点累加值局部极大值处对应的垂直线作为该模块的模块垂直分界线。

可选的,所述第三确定子模块具体用于针对每个模块,统计该模块中包括的所述黑色像素的第一数目和所述白色像素的第二数目,将第一数目和第二数目中最大值对应的像素类型对应的比特值作为该模块对应的比特值。

可选的,所述装置还包括:

定位模块,用于对所述数据矩阵码图像中包括的所述待识别数据矩阵码进行定位,得到所述待识别数据矩阵码的定位坐标;

二值化处理模块,用于根据所述定位坐标对所述数据矩阵码图像进行透视变换,并对所述数据矩阵码图像进行二值化处理,得到目标数据矩阵码图像;

所述分块模块具体用于根据所述目标数据矩阵码图像中像素的黑、白跳变规律,对所述目标数据矩阵码图像进行分块。

第三方面,本发明实施例还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器、所述通信接口、所述存储器通过所述通信总线完成相互间的通信;

所述存储器,用于存放计算机程序;

所述处理器,用于执行所述存储器上所存放的程序时,实现第一方面所述的方法步骤。

本发明实施例提供的数据矩阵码识别方法、装置及电子设备,可以根据数据矩阵码图像中像素的黑、白跳变规律,对该数据矩阵码图像进行分块,进而针对每个分块确定分块中包括的模块,确定每个分块中每个模块对应的比特值,然后确定出每个分块对应的比特矩阵,最后将每个分块中对应的比特矩阵组合得到数据矩阵码图像的比特矩阵,完成对待识别数据矩阵码的识别。本发明数据矩阵码识别方法、装置及电子设备,根据数据矩阵码图像本身像素的黑、白跳变规律,对数据矩阵码图像进行划分,而不依赖于数据矩阵码图像的定位边界,从而可以提高对数据矩阵码识别的准确率。当然,实施本发明的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为常见的数据矩阵码的结构示意图;

图2为本发明实施例提供的数据矩阵码识别方法的流程图;

图3为本发明实施例中对待识别数据矩阵码进行定位的示意图;

图4为对图3所示待数据矩阵码进行预处理之后的效果示意图;

图5为本发明实施例中垂直投影的投影曲线示意图;

图6为本发明实施例中水平投影的投影曲线示意图;

图7为本发明实施例中分块边界的示意图;

图8为本发明实施例中模块边界的示意图;

图9为图8中第二行第三列模块的模块边界示意图;

图10为对图9中所示模块边界进行调整过程的示意图;

图11为对图9中所示模块边界进行调整后的示意图;

图12为本发明实施例中分块对应的比特矩阵的示意图;

图13为本发明实施例中分块合并后数据矩阵码的比特矩阵示意图;

图14为本发明实施例提供的数据矩阵码识别装置的结构示意图;

图15为本发明实施例提供的电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

已知的数据矩阵码识别方法中,当数据矩阵码定位边界有偏差时,所有的采样点都会出现偏差,最终导致对数据矩阵码的识别准确率较低。可以看出,已知的数据矩阵码识别方法中,数据矩阵码识别的准确率依赖于数据矩阵码的定位边界。但是实际的应用过程中,无法保证数据矩阵码的定位边界不出现偏差,为了避免定位不准确对最终数据矩阵码识别结果的影响,本发明实施例提供了一种具有鲁棒性的数据矩阵码识别方法,以提高对数据矩阵码识别的准确率。

图2为本发明实施例提供的数据矩阵码识别方法的流程图,参照图2,对本发明实施例提供的数据矩阵码识别方法进行详细说明,该方法包括:

步骤201,获取包含待识别数据矩阵码的数据矩阵码图像。

本发明实施例提供的方法可以应用于电子设备。具体地,该电子设备可以为台式计算机、便携式计算机、智能移动终端等。

在本发明实施例中,电子设备可以对产品包装等地方的数据矩阵码进行识别。具体的,电子设备可以首先通过扫描产品包装上的图片、拍照等方式获取包含待识别数据矩阵码的数据矩阵码图像,以通过该数据矩阵码图像实现对数据矩阵码的识别。

步骤202,根据数据矩阵码图像中像素的黑、白跳变规律,对数据矩阵码图像进行分块。

获取到包含待识别数据矩阵码的数据矩阵码图像之后,电子设备可以对数据矩阵码图像进行识别,以得到数据矩阵码的比特矩阵,从而实现对数据矩阵码的识别。对数据矩阵码的识别,即识别出数据矩阵码中包括的黑色模块和白色模块,进而根据黑色模块和白色模块的分布最终得到数据矩阵码的比特矩阵。简单地讲,也可以将识别数据矩阵码图像中每个模块的过程理解为,对数据矩阵码图像从大到小进行切分,最终得到每个模块。

电子设备可以首先对数据矩阵码图像进行分块,也即对数据矩阵码图像进行初始切分。具体的,电子设备可以根据数据矩阵码图像中像素的黑、白跳变规律,对数据矩阵码图像进行分块。如,可以在水平方向任一侧,识别出像素发生跳变且与水平中心线存在预设距离的位置,并将该位置对应的水平线作为水平分界线;在垂直方向任一侧,识别出像素发生跳变且与垂直中心线存在预设距离的位置,并将该位置对应的垂直线作为垂直分界线,进而可以根据水平分界线和垂直分界线对数据矩阵码图像进行分块。

或者,电子设备可以根据数据矩阵码图像中黑色像素与白色像素之间跳变点数,分别在水平和垂直方向,在黑色像素与白色像素之间跳变点数大于预设阈值的位置进行切分,将该数据矩阵码图像进行分块。其中,像素发生跳变的位置即为像素由黑变为白,或由白变为黑的位置;黑、白跳变规律可以是将数据矩阵码图像中像素的黑白跳变点累加值最大处对应的位置确定为分块的分界线。

本发明实施例不对分块的个数作限定,可以根据实际应用中的需求确定分块的个数,具体地可以是4个、9个等。

步骤203,针对每个分块,根据该分块中像素的黑、白跳变规律,确定该分块中包含的各模块,并根据各模块对应的比特值,确定该分块对应的比特矩阵。

为了进一步对数据矩阵码进行识别,电子设备可以在数据矩阵码图像中划分白色模块和黑色模块。具体的,电子设备可以基于对数据矩阵码图像的分块结果,针对每个分块进行模块划分。需要说明的是,对数据矩阵码图像进行分块和针对每个分块进行模块划分基于相似的原理,即数据矩阵码图像中像素的黑、白跳变规律。

针对每个分块,确定每个分块中的模块,也即针对每个分块,确定该分块中每个模块的边界,然后根据边界确定该分块包括的每个模块。具体地,针对每个分块,电子设备可以根据该分块中像素的黑、白跳变规律,确定该分块中各模块的边界,进而根据各模块的边界将该分块进行划分得到该分块包括的每个模块。

例如,电子设备可以针对每个分块,根据该分块中黑色像素与白色像素之间的跳变点数,分别在水平和垂直方向,在黑色像素与白色像素之间跳变点数大于预设阈值的位置进行切分,确定该分块中的模块。

针对每个分块确定出该分块包括的每个模块之后,电子设备可以进一步确定该分块包括的每个模块对应的比特值,例如,电子设备可以针对每个分块,根据每个分块中每个模块所在区域的颜色,确定每个模块对应的比特值。

该分块包括的每个模块对应的比特值确定了,该分块中所有模块对应的比特值即可组合得到该分块对应的比特矩阵。

步骤204,合并每个分块对应的比特矩阵,得到待识别数据矩阵码对应的比特矩阵。

得到每个分块对应的比特矩阵后,电子设备可以将所有的分块对应的比特矩阵进行合并,得到数据矩阵码图像中待识别数据矩阵码对应的比特矩阵,也即实现了对数据矩阵码的识别。

本发明实施例提供的数据矩阵码识别方法,根据数据矩阵码图像中像素的黑、白跳变规律,对该数据矩阵码图像进行分块,进而针对每个分块确定分块中包括的模块,确定每个分块中每个模块对应的比特值,然后确定出每个分块对应的比特矩阵,最后将每个分块中对应的比特矩阵组合得到数据矩阵码图像的比特矩阵,完成对待识别数据矩阵码的识别。可以看出,本发明实施例是根据数据矩阵码图像本身像素的黑、白跳变规律,对数据矩阵码图像进行划分,而不依赖于数据矩阵码图像的定位边界,从而可以提高对数据矩阵码识别的准确率。

可以理解,电子设备获取到的数据矩阵码图像是灰度图像,或者有时候获取到的数据矩阵码图像可能是倾斜的,这些情况可能会使数据矩阵码的识别过程变的复杂,甚至影响数据矩阵码的识别结果。所以,作为本发明实施例的一种实施方式,为了简化识别的过程和提高对数据矩阵码的识别准确率,电子设备在进行数据矩阵码的识别之前,可以先对获取到的数据矩阵码图像进行预处理。

例如,可以对数据矩阵码图像进行定位、进行二值化处理得到二值化图像、对数据矩阵码图像进行透视变换将数据矩阵码图像转换到标准坐标系、对数据矩阵码图像中模块的大小进行归一化处理等。

图3为本发明实施例中对待识别数据矩阵码进行定位的示意图,图4为对图3所示数据矩阵码进行预处理之后的效果示意图。参照图3和图4对本发明实施例进行数据矩阵码的识别之前对数据矩阵码图像进行预处理的过程进行详细说明。

电子设备可以对数据矩阵码图像中包括的待识别数据矩阵码进行定位,得到待识别数据矩阵码的定位坐标。如图3所示,电子设备可以定位数据矩阵码图像中待识别数据矩阵码的四个顶点a,b,c,d,根据构建的坐标系得到四个顶点的定位坐标a(x1,y1),b(x2,y2),c(x3,y3),d(x4,y4),并将这四个顶点的定位坐标作为从数据矩阵码图像中定位得到的待识别数据矩阵码的定位坐标。需要说明的是,有些情况下,四个顶点a,b,c,d的定位坐标有可能偏移过大,定位不准确,如图3中a点的定位坐标a(x1,y1)。

得到数据矩阵码的定位坐标后,电子设备可以进一步根据定位坐标对数据矩阵码图像进行透视变换,并对数据矩阵码图像进行二值化处理,得到目标数据矩阵码图像,如图4所示。

透视变换是指利用透视中心、像点、目标点三点共线的条件,按透视旋转定律使承影面(透视面)绕迹线(透视轴)旋转某一角度,破坏原有的投影光线束,仍能保持承影面上投影几何图形不变的变换。简单也可以理解为,将数据矩阵码图像从一个坐标系变换到另一个标准坐标系,进而满足人类视觉系统,方便处理。

图像二值化处理,就是将图像上的像素点的灰度值转换为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。具体地,可以根据预设阈值,将大于该预设阈值的像素点的灰度值转换为255,小于该预设阈值的像素点的灰度值转换为0。对数据矩阵码图像进行预处理之后,接下来对待识别数据矩阵码进行识别。即对数据矩阵码图像进行预处理之后得到的目标数据矩阵码图像中的待识别数据矩阵码进行识别。

通过对数据矩阵码图像进行透视变换,可以将数据矩阵码图像几何不变地变换到更加方便处理的标准坐标系;同时,对数据矩阵码图像进行二值化处理,可以得到更加符合实际的数据矩阵码图像,进而可以提高对数矩矩阵码的识别准确率,且更加方便处理。

在本发明实施例的一种实施方式中,电子设备根据数据矩阵码图像中像素的黑、白跳变规律,对数据矩阵码图像进行分块的过程可以包括:根据数据矩阵码图像中像素的黑、白跳变规律,确定分块边界;根据所确定的分块边界对数据矩阵码图像进行分块。其中,根据数据矩阵码图像中像素的黑、白跳变规律,确定分块边界是对数据矩阵码图像进行分块的重点,确定分块边界后,根据分块边界对数据矩阵码图像进行分块很容易实现。

在本发明实施例一种可选的实施例中,根据数据矩阵码图像中像素的黑、白跳变规律,确定分块边界的过程可以包括:

第一步,对数据矩阵码图像中每行上像素的黑白跳变点进行垂直投影,得到数据矩阵码图像水平方向上的第一黑白跳变点累加值,选取数据矩阵码图像垂直中心线预设范围内该第一黑白跳变点累加值最大的坐标处对应的垂直线作为第一分块垂直分界线。

需要说明的是,垂直投影是指二维图像按行向x轴方向投影,在本发明实施例应用中,即数据矩阵码图像按每行上像素的黑白跳变点向x轴方向投影,垂直投影的结果可以看成是一维图像。

根据数据矩阵码图像中像素的黑、白跳变点投影曲线确定分块边界。确定左右分界线时,对数据矩阵码图像的行黑白跳变点进行垂直投影,即对数据矩阵码图像中每行上像素的黑白跳变点进行垂直投影。然后得到垂直投影对应的投影曲线,如图5所示。其中,需要说明的是,投影曲线的坐标与数据矩阵码图像的坐标一一对应。最后,选取数据矩阵码图像垂直中心线预设范围内黑白跳变点累计值最大的坐标处对应的垂直线作为分块垂直分界线,该分块垂直分界线即确定出的对数据矩阵码图像进行分块时的左右边界。

具体地,数据矩阵码图像每行的黑白跳变点可以用向量表示为{0,1.0,…,1,1,0,…,0,1,1},跳变包括从黑跳变到白或者从白跳变到黑,其中,“0”表示没有跳变,“1”表示有跳变;或者,“1”表示没有跳变,“0”表示有跳变。将数据矩阵码图像中每行的黑白跳变点进行垂直投影,得到对应于x轴的投影曲线,具体地可以按垂直方向将每行上的黑白跳变点的跳变次数相加,例如,将第一列上每行的黑白跳变点的跳变次数相加,得到投影曲线的第一个值,同理地,将所有列上每行的黑白跳变点的跳变次数相加,得到对应的所有投影值。数据矩阵码图像中每行的黑白跳变点累加值,即对应的投影值可以用向量表示为{10,15,17,…,20,15,25,…,17,19,20}。投影曲线中在数据矩阵码图像垂直中心线预设范围内,黑白跳变点累加值为25对应的投影值最大,则选取黑白跳变点累加值为25对应的坐标处的垂直线作为分块时的左右边界。

可选的,在本发明实施例一种实施方式中,可以根据数据矩阵码图像的水平中心线将数据矩阵码图像分为上半部分和下半部分。对上半部分中每行上像素的黑白跳变点进行垂直投影,得到数据矩阵码图像水平方向上的第三黑白跳变点累加值,选取数据矩阵码图像的垂直中心线预设范围内第三黑白跳变点累加值最大的坐标处对应的垂直线作为第二分块垂直分界线。对下半部分中每行上像素的黑白跳变点进行垂直投影,得到数据矩阵码图像水平方向上的第四黑白跳变点累加值,选取数据矩阵码图像的垂直中心线预设范围内第四黑白跳变点累加值最大的坐标处对应的垂直线作为第三分块垂直分界线。

具体地,可以将数据矩阵码图像按照水平中心线分为上半部分和下半部分,针对上半部分和下半部分,分别对上半部分和下半部分中每行上像素的黑白跳变点进行垂直投影,得到上半部分对应的投影曲线和下半部分对应的投影曲线,进而根据上半部分对应的投影曲线和下半部分对应的投影曲线,确定上半部分对应的垂直分界线和下半部分对应的垂直分界线。最后将上半部分对应的垂直分界线作为上半部分对应的左右边界,如图7中701所示;下半部分对应的垂直分界线作为下半部分对应的左右边界,如图7中702所示。

第二步,对数据矩阵码图像中每列上像素的黑白跳变点进行水平投影,得到数据矩阵码图像垂直方向上的第二黑白跳变点累加值,选取数据矩阵码图像水平中心线预设范围内该第二黑白跳变点累加值最大的坐标处对应的水平线作为第一分块水平分界线。

同理地,确定上下分界线时,对数据矩阵码图像的列黑白跳变点进行水平投影,即对数据矩阵码图像中每列上像素的黑白跳变点进行水平投影。然后得到水平投影对应的投影曲线。最后,选取数据矩阵码图像水平中心线预设范围内投影值最大、即黑白跳变点累计值最大的坐标处对应的水平线作为分块水平分界线,该分块水平分界线即确定出的对数据矩阵码图像进行分块时的上下边界。

需要说明的是,水平投影是指二维图像按列向y轴方向投影,在本发明实施例应用中,即数据矩阵码图像按每列上像素的黑白跳变点向y轴方向投影,水平投影的结果可以看成是一维图像。

具体地,数据矩阵码图像每列的黑白跳变点可以用向量表示为{0,1.0,…,1,1,0,…,0,1,1}。将数据矩阵码图像中每列的黑白跳变点进行水平投影,得到对应于y轴的投影曲线,即按水平方向将每列上的黑白跳变点的跳变次数相加,例如,将第一行上每列的黑白跳变点的跳变次数相加,得到投影曲线的第一个值,同理地,将所有行上每列的黑白跳变点的跳变次数相加,得到对应的所有投影值。数据矩阵码图像中每列的黑白跳变点累加值,即对应的水平投影值可以用向量表示为{11,17,17,…,20,15,29,…,16,19,20}。投影曲线中在数据矩阵码图像水平中心线预设范围内、黑白跳变点累加值为29对应的投影值最大,则选取黑白跳变点累加值为29对应的坐标处的水平线作为分块时的上下边界。

可选的,在本发明实施例一种实施方式中,根据数据矩阵码图像的垂直中心线将数据矩阵码图像分为左半部分和右半部分。对左半部分中每列上像素的黑白跳变点进行水平投影,得到数据矩阵码图像垂直方向上的第五黑白跳变点累加值,选取数据矩阵码图像的垂直中心线预设范围内第五黑白跳变点累加值最大的坐标处对应的垂直线作为第二分块水平分界线。对右半部分中每列上像素的黑白跳变点进行水平投影,得到数据矩阵码图像垂直方向上的第六黑白跳变点累加值,选取数据矩阵码图像的垂直中心线预设范围内第六黑白跳变点累加值最大的坐标处对应的垂直线作为第三分块水平分界线。

具体地,可以将数据矩阵码图像按照垂直中心线分为左半部分和右半部分,针对左半部分和右半部分,分别对左半部分和右半部分中每列上像素的黑白跳变点进行水平投影,得到左半部分对应的投影曲线和右半部分对应的投影曲线,进而根据左半部分对应的投影曲线和右半部分对应的投影曲线,确定左半部分对应的水平分界线和右半部分对应的水平分界线。其中,右半部分对应的投影曲线如图6所示。左半部分对应的投影曲线与图6所示的右半部分对应的投影曲线类似。最后将左半部分对应的水平分界线作为左半部分对应的上下边界,如图7中704所示;右半部分对应的水平分界线作为右半部分对应的上下边界,如图7中703所示。

第三步,将分块垂直分界线和分块水平分界线作为分块边界。

具体地,可以将上述第一分块垂直分界线和第一分块水平分界线作为分块边界。或者,将上述第二分块垂直分界线、第三分块垂直分界线、第二分块水平分界线、第三分块水平分界线作为分块边界。

确定出分块边界后,可以根据所确定的分块边界对数据矩阵码图像进行分块。

本发明实施例提供的数据矩阵码识别方法,通过对图像分块,避免了整图对黑白跳变点进行垂直投影和水平投影,图像尺寸大、形变量随投影长度增大以及投影累加值偏差大,对模块边界确定的影响。将数据矩阵码图像分块进行操作,能够提高对数据矩阵码识别的准确率。

对数据矩阵码图像分块后,接下来可以针对每个分块,确定每个分块中包括的每个模块。总的来说,针对每个分块,确定每个分块中包括的每个模块与对数据矩阵码图像进行分块的原理是相似的,都是基于像素的黑、白跳变规律。具体地,针对每个分块,根据该分块中像素的黑、白跳变规律,确定该分块的模块边界,并根据所确定的模块边界,确定该分块中包含的各模块。具体地,针对每个分块,根据该分块中像素的黑、白跳变规律,确定该分块的模块边界的步骤可以包括:

第一步,针对每个分块,对该分块中每行上像素的黑白跳变点进行垂直投影,选取黑白跳变点累加值的局部极大值点处对应的垂直线作为模块垂直分界线。

第二步,对该分块中每列上像素的黑白跳变点进行水平投影,选取黑白跳变点累加值的局部极大值点处对应的水平线作为模块水平分界线。

每个分块即对应为一个分块图像,从分块图像中确定每个模块,可以通过在分块图像中确定模块边界,然后通过模块边界确定出每个分块中包括的每个模块。对每一个分块图像确定模块边界包括:确定模块行边界和模块列边界,确定边界的方法可以利用对分块图像中每行上像素的黑白跳变点进行垂直投影、和对分块图像中每列上像素的黑白跳变点进行水平投影得到的投影曲线来确定。得到的投影曲线为规律分布的波形,垂直投影得到的投影曲线上局部极大值点处对应的垂直线作为模块垂直分界线,即模块列边界;水平投影得到的投影曲线上局部极大值点处对应的水平线作为模块水平分界线,即模块行边界。具体地垂直投影和水平投影在上述内容中已进行了详述,这里就不再赘述。当然,先确定行边界、后确定列边界或者先确定列边界、后确定行边界都是可以的。

第三步,将该模块垂直分界线和该模块水平分界线作为该分块的模块边界。

通过确定出的每个分块中每个模块的模块边界,就可以确定出每个分块中的每个模块。

最终得到的上述图7中右下分块的模块边界如图8所示。

另外,为了使确定的模块边界更加准确,还可以对确定的模块边界进行微调。本发明实施例一种可选的实施方式中,根据确定出的模块边界预设范围内的黑白跳变点累加值,对该模块边界进行调整。具体可以包括:在确定该分块的模块边界之后,对模块边界的预设范围内每行上像素的黑白跳变点进行垂直投影,选取黑白跳变点累加值局部极大值处对应的水平线作为该模块的模块水平分界线;对模块边界的预设范围内每列上像素的黑白跳变点进行水平投影,选取黑白跳变点累加值局部极大值处对应的垂直线作为该模块的模块垂直分界线。

可以看出通过上述过程确定的图8中第二行第三列对应的模块的上边界不准确,如图9所示。对该上边界进行调整,可以在上述确定的该模块的上边界预设范围内,利用该模块中像素的黑白跳变点累加值对确定的上边界进行微调整。具体地,分别计算该上边界上所有像素和该上边界的上一行和下一行上所有像素的黑白跳变点累加值,例如,该上边界上所有像素的像素值分别为(1,1,1,0,1,1,1,1,1,1,1,0,0,0),该上边界的上一行上所有像素的像素值分别为(1,1,0,1,0,0,0,0,0,0,0,0,0,0),该上边界的下一行上所有像素的像素值全部为1。该上边界的上一行与该上边界的跳变为(0,0,1,1,1,1,1,1,1,1,1,0,0,0),如图10所示,黑白跳变点累加值为9;而该上边界与该上边界的下一行的黑白跳变点累加值为4,则将该模块的上边界微调至上边界的上一行。微调后的上边界如图11所示。

在本发明实施例一种可实施方式中,确定任一分块对应的比特矩阵的过程可以包括:根据各模块中黑色像素和白色像素的数目,确定各模块对应的比特值,并将各模块对应的比特值组合得到该分块对应的比特矩阵。具体地,针对每个模块,可以统计该模块中包括的黑色像素的第一数目和白色像素的第二数目,将第一数目和第二数目中最大值对应的像素类型对应的比特值作为该模块对应的比特值。

对于模块边界组成的模块矩形区域内,统计黑色像素和白色像素数目,将第一数目和第二数目中最大值对应的像素类型对应的比特值作为该模块对应的比特值,也就是将模块中占主导的像素值确定为该模块对应的比特矩阵值。提取每个模块的比特值后可得到该分块图像对应的比特矩阵。其中,上述分块中右下分块对应的比特矩阵如图12所示,其中,黑色标识比特值1,白色标识比特值0,当然,还可以用白色标识比特值1,黑色标识比特值0。

通过统计每个模块占主导的像素值来确定对应模块的比特矩阵,可以避免模块内局部极性相反造成提取比特值错误的情况,且可以减少光斑、污质等模块局部极值相反的干扰,进而能够减小数据矩阵码识别的准确率对图像质量的依赖。

针对每个模块进行上述的处理可以得到每个分块对应的比特矩阵,将所有的分块对应的比特矩阵进行合并即可得到数据矩阵码图像中待识别数据矩阵码对应的比特矩阵,完成对数据矩阵码的识别,上述四个分块对应的比特矩阵进行合并得到的数据矩阵码图像中、待识别数据矩阵码对应的比特矩阵如图13所示。

本发明实施例还提供了一种数据矩阵码识别装置,参照图14,对本发明实施例提供的数据矩阵码识别装置进行详细说明,包括:

获取模块1401,用于获取包含待识别数据矩阵码的数据矩阵码图像。

分块模块1402,根据数据矩阵码图像中像素的黑、白跳变规律,对数据矩阵码图像进行分块。

确定模块1403,用于针对每个分块,根据该分块中像素的黑、白跳变规律,确定该分块中包含的各模块,并根据各模块对应的比特值,确定该分块对应的比特矩阵。

合并模块1404,用于合并每个分块对应的比特矩阵,得到待识别数据矩阵码对应的比特矩阵。

本发明实施例提供的数据矩阵码识别装置,根据数据矩阵码图像中像素的黑、白跳变规律,对该数据矩阵码图像进行分块,进而针对每个分块确定分块中包括的模块,确定每个分块中每个模块对应的比特值,然后确定出每个分块对应的比特矩阵,最后将每个分块中对应的比特矩阵组合得到数据矩阵码图像的比特矩阵,完成对待识别数据矩阵码的识别。可以看出,根据数据矩阵码图像本身像素的黑、白跳变规律,对数据矩阵码图像进行划分,进而完成对数据矩阵码的识别,而不依赖于数据矩阵码图像的定位边界。如此能够提高对数据矩阵码识别的准确率。

可选的,分块模块1402包括:

第一确定子模块,用于根据数据矩阵码图像中像素的黑、白跳变规律,确定分块边界。

分块子模块,用于根据所确定的分块边界对数据矩阵码图像进行分块。

可选的,第一确定子模块,包括:

第一选取单元,用于对数据矩阵码图像中每行上像素的黑白跳变点进行垂直投影,得到数据矩阵码图像水平方向上的第一黑白跳变点累加值,选取数据矩阵码图像的垂直中心线预设范围内第一黑白跳变点累加值最大的坐标处对应的垂直线作为第一分块垂直分界线。

第二选取单元,用于对数据矩阵码图像中每列上像素的黑白跳变点进行水平投影,得到数据矩阵码图像垂直方向上的第二黑白跳变点累加值,选取数据矩阵码图像的水平中心线预设范围内第二黑白跳变点累加值最大的坐标处对应的水平线作为第一分块水平分界线。

第一确定分块边界单元,用于将第一分块垂直分界线和第一分块水平分界线作为分块边界。

可选的,第一确定子模块,包括:

第一分割单元,用于根据数据矩阵码图像的水平中心线将数据矩阵码图像分为上半部分和下半部分。

第三选取单元,用于对上半部分中每行上像素的黑白跳变点进行垂直投影,得到数据矩阵码图像水平方向上的第三黑白跳变点累加值,选取数据矩阵码图像的垂直中心线预设范围内第三黑白跳变点累加值最大的坐标处对应的垂直线作为第二分块垂直分界线。

第四选取单元,用于对下半部分中每行上像素的黑白跳变点进行垂直投影,得到数据矩阵码图像水平方向上的第四黑白跳变点累加值,选取数据矩阵码图像的垂直中心线预设范围内第四黑白跳变点累加值最大的坐标处对应的垂直线作为第三分块垂直分界线。

第二分割单元,用于根据数据矩阵码图像的垂直中心线将数据矩阵码图像分为左半部分和右半部分。

第五选取单元,用于对左半部分中每列上像素的黑白跳变点进行水平投影,得到数据矩阵码图像垂直方向上的第五黑白跳变点累加值,选取数据矩阵码图像的垂直中心线预设范围内第五黑白跳变点累加值最大的坐标处对应的垂直线作为第二分块水平分界线。

第六选取单元,用于对右半部分中每列上像素的黑白跳变点进行水平投影,得到数据矩阵码图像垂直方向上的第六黑白跳变点累加值,选取数据矩阵码图像的垂直中心线预设范围内第六黑白跳变点累加值最大的坐标处对应的垂直线作为第三分块水平分界线。

第二确定分块边界单元,用于将第二分块垂直分界线、第三分块垂直分界线、第二分块水平分界线、第三分块水平分界线作为分块边界。

可选的,确定模块1403包括:

第二确定子模块,用于针对每个分块,根据该分块中像素的黑、白跳变规律,确定该分块的模块边界,并根据所确定的模块边界,确定该分块中包含的各模块。

第三确定子模块,用于根据各模块中黑色像素和白色像素的数目,确定各模块对应的比特值,并将各模块对应的比特值组合得到该分块对应的比特矩阵。

可选的,第二确定子模块包括:

第七选取单元,用于针对每个分块,对该分块中每行上像素的黑白跳变点进行垂直投影,选取黑白跳变点累加值的局部极大值点处对应的垂直线作为模块垂直分界线。

第八选取单元,用于对该分块中每列上像素的黑白跳变点进行水平投影,选取黑白跳变点累加值的局部极大值点处对应的水平线作为模块水平分界线。

确定模块边界单元,用于将模块垂直分界线和模块水平分界线作为该分块的模块边界。

可选的,装置还包括:

第一选取模块,用于对模块边界的预设范围内每行上像素的黑白跳变点进行垂直投影,选取黑白跳变点累加值局部极大值处对应的水平线作为该模块的模块水平分界线。

第二选取模块,用于对模块边界的预设范围内每列上像素的黑白跳变点进行水平投影,选取黑白跳变点累加值局部极大值处对应的垂直线作为该模块的模块垂直分界线。

可选的,第三确定子模块具体用于针对每个模块,统计该模块中包括的黑色像素的第一数目和白色像素的第二数目,将第一数目和第二数目中最大值对应的像素类型对应的比特值作为该模块对应的比特值。

可选的,装置还包括:

定位模块,用于对数据矩阵码图像中包括的待识别数据矩阵码进行定位,得到待识别数据矩阵码的定位坐标。

二值化处理模块,用于根据定位坐标对数据矩阵码图像进行透视变换,并对数据矩阵码图像进行二值化处理,得到目标数据矩阵码图像。

分块模块具体用于根据目标数据矩阵码图像中像素的黑、白跳变规律,对目标数据矩阵码图像进行分块。

需要说明的是,本发明实施例的数据矩阵码识别装置是应用上述数据矩阵码识别方法的装置,则上述数据矩阵码识别方法的所有实施例均适用于该装置,且均能达到相同或相似的有益效果。

图15为本发明实施例提供的电子设备的结构示意图,如图15所示,本发明实施例提供的电子设备,包括处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器1503,用于存放计算机程序;

处理器1501,用于执行存储器上所存放的程序时,以用于执行本发明实施例的数据矩阵码识别方法,其中,数据矩阵码识别方法包括:

获取包含待识别数据矩阵码的数据矩阵码图像;

根据数据矩阵码图像中像素的黑、白跳变规律,对数据矩阵码图像进行分块;

针对每个分块,根据该分块中像素的黑、白跳变规律,确定该分块中包含的各模块,并根据各模块对应的比特值,确定该分块对应的比特矩阵;

合并每个分块对应的比特矩阵,得到待识别数据矩阵码对应的比特矩阵。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本发明实施例提供的电子设备,根据数据矩阵码图像中像素的黑、白跳变规律,对该数据矩阵码图像进行分块,进而针对每个分块确定分块中包括的模块,确定每个分块中每个模块对应的比特值,然后确定出每个分块对应的比特矩阵,最后将每个分块中对应的比特矩阵组合得到数据矩阵码图像的比特矩阵,完成对待识别数据矩阵码的识别。可以看出,根据数据矩阵码图像本身像素的黑、白跳变规律,对数据矩阵码图像进行划分,进而完成对数据矩阵码的识别,而不依赖于数据矩阵码图像的定位边界。如此能够提高对数据矩阵码识别的准确率。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质内存储有计算机程序,计算机程序被处理器执行时实现本发明实施例的数据矩阵码识别方法,其中,数据矩阵码识别方法包括:

获取包含待识别数据矩阵码的数据矩阵码图像;

根据数据矩阵码图像中像素的黑、白跳变规律,对数据矩阵码图像进行分块;

针对每个分块,根据该分块中像素的黑、白跳变规律,确定该分块中包含的各模块,并根据各模块对应的比特值,确定该分块对应的比特矩阵;

合并每个分块对应的比特矩阵,得到待识别数据矩阵码对应的比特矩阵。

本发明实施例提供的计算机可读存储介质,根据数据矩阵码图像中像素的黑、白跳变规律,对该数据矩阵码图像进行分块,进而针对每个分块确定分块中包括的模块,确定每个分块中每个模块对应的比特值,然后确定出每个分块对应的比特矩阵,最后将每个分块中对应的比特矩阵组合得到数据矩阵码图像的比特矩阵,完成对待识别数据矩阵码的识别。可以看出,本发明实施例中是根据数据矩阵码图像本身像素的黑、白跳变规律,对数据矩阵码图像进行划分,进而完成对数据矩阵码的识别,而不依赖于数据矩阵码图像的定位边界。如此能够提高对数据矩阵码识别的准确率。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1