法律状态公告日
法律状态信息
法律状态
2019-11-15
专利权的转移 IPC(主分类):G06K19/06 登记生效日:20191028 变更前: 变更后: 变更前:
专利申请权、专利权的转移
2019-10-08
专利权的转移 IPC(主分类):G06K19/06 登记生效日:20190912 变更前: 变更后:
专利申请权、专利权的转移
2018-01-30
授权
授权
2015-12-23
实质审查的生效 IPC(主分类):G06K19/06 申请日:20150805
实质审查的生效
2015-11-25
公开
公开
技术领域
本发明涉及一种识别方法,特别涉及一种圆形阵列图形码的视觉识别方法。
背景技术
图形码是利用特定图像结构描述字符信息的一种编码方式,相较于直接字符识别,图形码由于具有统一编码标准、辨识度明显、识别稳定性高等特点,已经广泛应用于物流、商业、工业生产、办公自动化以及家庭生活等诸多方面。
现阶段广泛采用的图形编码方式包括条形码和二维码。条形码是将线条与空白按照一定的编码规则组合起来的图形,在读取过程中,采用的特定的扫描器通过扫描黑白间隙,再经光电转换生成易被计算机识别的二进制码。条形码是一种一维的编码方式,只能依据一维方向上条和空的组合以及宽度进行编码,相比于这种方式,二维码充分利用了图像空间,将字符信息通过图像矩阵的方式进行了编码,因此信息量更大,同时二维码因引入了更多的校验纠错码,具有错误检测和恢复删除数据的能力。
发明内容
本发明为了解决现有的图形码识别方法仅适用于近距离识别的问题和复杂背景中提取条形码或二维码较为困难、识别准确率低的问题。
本发明提出一种圆形阵列图形码。一种圆形阵列图形码绘制于载体上,用于载体的识别;圆形阵列图形码包括外框定位圆和内部的圆形阵列;圆形阵列为多个半径相等的圆形呈阵列排布,一个圆形称为一个阵列圆;所述内部的圆形阵列的行数和列数按需要进行设定;所有阵列圆均匀分布于外框定位圆的一个内接矩形中;每个阵列圆采用内部完全填涂或者内部无填涂表示0或1信息,按以下方式表示:
阵列圆内部完全填涂表示1,阵列圆内部无填涂表示0;或者,阵列圆内部完全填涂表示0,阵列圆内部无填涂表示1。
本发明针对上述圆形阵列图形码,提出一种基于直线聚类的圆形阵列图形码的视觉识别方法,包括以下步骤:
步骤一、通过高清摄像头采集一张含有圆形阵列图形码的图像,记作原始图像,并对原始图像进行灰度化和高斯滤波处理;
步骤二、对步骤一得到的处理后的图像,采用Hough变换寻找图像中所有的圆;
步骤三、根据步骤二寻找到的所有圆形,定位圆形阵列图形码区域,定位方法如下:从找到的半径最大的圆开始,判断是否该圆内部是否存在有总数为M*N个半径相等的小圆,如果存在,则该大圆为圆形阵列图形码的外框定位圆,M*N个小圆为内部的阵列圆,其中,M、N分别为圆形阵列的行、列数;
如果不存在上述情况,说明圆形阵列图形码定位失败,返回步骤一,重新采集图像;
步骤四、对于步骤三找到的圆形阵列,分别对每个阵列圆进行标记,将每个阵列圆赋予一个唯一的标识序号:序号从1~M*N;并建立阵列圆信息列表,该列表内容包括:每个阵列圆的圆心坐标,每个阵列圆内部区域所有像素的平均灰度值,记作该阵列圆平均灰度;
第i个阵列圆的平均灰度gi计算公式如下:
>
其中,i=1,2,……,M*N,(xk,yk)是第i个阵列圆内部区域第k个像素的坐标;K为第i个阵列圆内部区域中包含的像素个数,g(xk,yk)为第k个像素对应的灰度值;
步骤五、对于步骤四得到的阵列圆信息列表,按照以下方法确定灰度分割阈值:寻找所有阵列圆信息列表中阵列圆平均灰度的最大值max(gi)和最小值min(gi),如果阵列圆平均灰度的最大值和最小值之差小于某一预设阈值thresh,即max(gi)-min(gi)<thresh,则约定对应圆形阵列所对应的信息矩阵为全1矩阵,结束执行;
否则,将阵列圆平均灰度最大值和最小的均值作为灰度分割阈值seg_thresh,即>执行步骤六;
步骤六、根据步骤四得到的阵列圆信息列表确定阵列圆标识图像:
建立一个像素灰度值均为0、且大小与原始图像相同的背景图像;并在背景图像中,将对应原始图像中每个阵列圆圆心位置处的像素(一个像素)灰度值变为原始图像中对应阵列圆的标识序号,此时的背景图像即为阵列圆标识图像;
阵列圆标识图像上的每个非0灰度值的像素称为等效阵列圆,所有等效阵列圆构成的阵列称为等效圆形阵列;原始图像中有M*N个阵列圆,对应背景图像中就有M*N个等效阵列圆,等效阵列圆实质为一个像素,阵列圆与等效阵列圆一一对应;
然后,在阵列圆标识图像中,计算相邻等效阵列圆的间距△γ,将此间距作为等效阵列圆间距典型值;
步骤七、利用步骤六得到的阵列圆标识图像和等效阵列圆间距典型值△γ,进行等效圆形阵列局部分析,确定等效圆形阵列粗略偏转角度;方法如下:
以阵列圆标识图像上任意一个等效阵列圆为中心,在3△γ半径范围内,搜索-45°~45°,45°~135°、135°~225°、-135°~-45°这四个扇形方向范围内的最近等效阵列圆;
如果四个方向上均不存在等效阵列圆,则重新选择其他等效阵列圆作为中心进行搜索;
如果存在,利用每个方向上找到的最近等效阵列圆,确定等效圆形阵列粗略偏转角度△θ,在图像坐标系下,△θ以顺时针方向为正;
步骤八、利用步骤六得到的阵列圆标识图像和等效阵列圆间距典型值△γ以及步骤七得到的等效圆形阵列粗略偏转角度△θ,对所有行、列等效阵列圆进行直线聚类分析,得到行、列等效阵列圆蔟;
步骤九:利用步骤八得到的行、列等效阵列圆簇,进行行、列直线拟合,并通过拟合得到的行、列直线交点坐标,在阵列圆标识图像上,确定每行等效阵列圆中每个等效阵列圆的标识序号(阵列圆标识图像上的灰度值);然后对应到阵列圆信息列表中该阵列圆内部区域所有像素的平均灰度,再结合灰度分割阈值seg_thresh,进行此行列位置上阵列圆的0或1信息判断;
步骤十:根据步骤九中得到的每个行、列位置上的阵列圆0或1信息,按如下方法建立对应的圆形阵列图形码信息矩阵:圆形阵列图形码信息矩阵的行、列数和图像中阵列圆的行、列数一致,圆形阵列图形码信息矩阵对应行列位置上的0或1信息由对应阵列圆的0或1信息确定。
本发明提及的图形码以及对应动态视觉识别方法有如下的优点:
(1)圆形阵列图形码编码方式灵活,用户可以根据不同使用环境,自定义阵列大小、校验方式,建立自己的码制。
(2)圆形阵列图形码在识别过程中,读取设备只需一个高清摄像头,识别系统成本低。
(3)圆形阵列图形码对绘制精度要求低,没有尺寸方面的特殊要求,用户完全可以在载体上徒手绘制。
(4)本发明的图形码额识别方法不但适用于近距离识别,而且适用于工业环境下远距离的识别情况,只要绘制的图形码复合高清摄像头读取范围的要求,就能够实现工业环境下远距离的识别。
(5)在复杂背景下,本发明的图形码识别方法能够鲁棒的对圆形阵列图形码进行提取,同时对于图形码发生偏转,识别方法仍能够进行稳定识别,识别率较高。
(6)本发明的图形码识别方法是一种基于视频的动态识别方法,对于附着在运动载体上的图形码仍然能够准确进行识别。在复杂背景下运动载体上的图形码识别率依然可以达到99%以上。
附图说明
图1为圆形阵列图形码示例图;
图2为圆形阵列图形码示例图;
图3为本发明圆形阵列图形码的视觉识别流程图;
图4为步骤七中对圆形阵列进行局部分析确定阵列偏转角度示意图;
图5为步骤八中对所有阵列圆进行行列直线聚类分析的示意图;
图6为步骤九中通过阵列圆行列搜索确定信息矩阵的示意图。
具体实施方式
具体实施方式一:
结合图3说明本实施方式,
本发明首先提出一种圆形阵列图形码。一种圆形阵列图形码绘制于载体上,用于载体的识别;圆形阵列图形码包括外框定位圆和内部的圆形阵列;圆形阵列为多个半径相等的圆形呈阵列排布,一个圆形称为一个阵列圆;所述内部的圆形阵列的行数和列数按需要进行设定;所有阵列圆均匀分布于外框定位圆的一个内接矩形中;每个阵列圆采用内部完全填涂或者内部无填涂表示0或1信息,按以下方式表示:
如图1,阵列圆内部完全填涂表示1,阵列圆内部无填涂表示0;或者,如图2,阵列圆内部完全填涂表示0,阵列圆内部无填涂表示1。
然后针对上述圆形阵列图形码,发明了一种基于直线聚类的圆形阵列图形码的视觉识别方法。
一种基于直线聚类的圆形阵列图形码的视觉识别方法,包括以下步骤:
步骤一、通过高清摄像头采集一张含有圆形阵列图形码的图像,记作原始图像,并对原始图像进行灰度化和高斯滤波处理;
步骤二、对步骤一得到的处理后的图像,采用Hough变换寻找图像中所有的圆;
步骤三、根据步骤二寻找到的所有圆形,定位圆形阵列图形码区域,定位方法如下:从找到的半径最大的圆开始,判断是否该圆内部是否存在有总数为M*N个半径相等的小圆,如果存在,则该大圆为圆形阵列图形码的外框定位圆,M*N个小圆为内部的阵列圆,其中,M、N分别为圆形阵列的行、列数;
如果不存在上述情况,说明圆形阵列图形码定位失败,返回步骤一,重新采集图像;
步骤四、对于步骤三找到的圆形阵列,分别对每个阵列圆进行标记,将每个阵列圆赋予一个唯一的标识序号:序号从1~M*N;并建立阵列圆信息列表,该列表内容包括:每个阵列圆的圆心坐标,每个阵列圆内部区域所有像素的平均灰度值,记作该阵列圆平均灰度;
第i个阵列圆的平均灰度gi计算公式如下:
>
其中,i=1,2,……,M*N,(xk,yk)是第i个阵列圆内部区域第k个像素的坐标;K为第i个阵列圆内部区域中包含的像素个数,g(xk,yk)为第k个像素对应的灰度值;
步骤五、对于步骤四得到的阵列圆信息列表,按照以下方法确定灰度分割阈值:寻找所有阵列圆信息列表中阵列圆平均灰度的最大值max(gi)和最小值min(gi),如果阵列圆平均灰度的最大值和最小值之差小于某一预设阈值thresh,即max(gi)-min(gi)<thresh,则约定对应圆形阵列所对应的信息矩阵为全1矩阵,结束执行;
否则,将阵列圆平均灰度最大值和最小的均值作为灰度分割阈值seg_thresh,即>执行步骤六;
步骤六、根据步骤四得到的阵列圆信息列表确定阵列圆标识图像:
建立一个像素灰度值均为0、且大小与原始图像相同的背景图像;并在背景图像中,将对应原始图像中每个阵列圆圆心位置处的像素(一个像素)灰度值变为原始图像中对应阵列圆的标识序号,此时的背景图像即为阵列圆标识图像;
阵列圆标识图像上的每个非0灰度值的像素称为等效阵列圆,所有等效阵列圆构成的阵列称为等效圆形阵列;原始图像中有M*N个阵列圆,对应背景图像中就有M*N个等效阵列圆,等效阵列圆实质为一个像素,阵列圆与等效阵列圆一一对应;
然后,在阵列圆标识图像中,计算相邻等效阵列圆的间距△γ,将此间距作为等效阵列圆间距典型值;
步骤七、利用步骤六得到的阵列圆标识图像和等效阵列圆间距典型值△γ,进行等效圆形阵列局部分析,确定等效圆形阵列粗略偏转角度;方法如下:
以阵列圆标识图像上任意一个等效阵列圆为中心,在3△γ半径范围内,搜索-45°~45°,45°~135°、135°~225°、-135°~-45°这四个扇形方向范围内的最近等效阵列圆;
如果四个方向上均不存在等效阵列圆,则重新选择其他等效阵列圆作为中心进行搜索;
如果存在,利用每个方向上找到的最近等效阵列圆,确定等效圆形阵列粗略偏转角度△θ,在图像坐标系下,△θ以顺时针方向为正;
步骤八、利用步骤六得到的阵列圆标识图像和等效阵列圆间距典型值△γ以及步骤七得到的等效圆形阵列粗略偏转角度△θ,对所有行、列等效阵列圆进行直线聚类分析,得到行、列等效阵列圆蔟;
步骤九:利用步骤八得到的行、列等效阵列圆簇,进行行、列直线拟合,并通过拟合得到的行、列直线交点坐标,在阵列圆标识图像上,确定每行等效阵列圆中每个等效阵列圆的标识序号(阵列圆标识图像上的灰度值);然后对应到阵列圆信息列表中该阵列圆内部区域所有像素的平均灰度,再结合灰度分割阈值seg_thresh,进行此行列位置上阵列圆的0或1信息判断;
步骤十:根据步骤九中得到的每个行、列位置上的阵列圆0或1信息,按如下方法建立对应的圆形阵列图形码信息矩阵:圆形阵列图形码信息矩阵的行、列数和图像中阵列圆的行、列数一致,圆形阵列图形码信息矩阵对应行列位置上的0或1信息由对应阵列圆的0或1信息确定。
具体实施方式二:
本实施方式步骤七包括以下步骤:
步骤七一、在阵列圆标识图像上,选择任一个等效阵列圆作为分析中心;
步骤七二、在该中心的3△γ半径范围内,分别搜索[-45°,45°)、[45°,135°)、[135°,225°)、(-45°,-135°]的四个方向范围的最近相邻等效阵列圆,如果四个方向的等效阵列圆均不存在,重新执行步骤七一;
步骤七三、对于每个方向找到的最近等效阵列圆,分别按照如下公式求取对应的等效圆形阵列粗略偏转角度,如图4:
其中,j=1,2,3,4,分别代表四个[-45°,45°)、[45°,135°)、[135°,225°)、(-45°,-135°]的四个方向范围;(xcenter,ycenter)和
其它步骤及参数与具体实施方式一相同。
具体实施方式三:
本实施方式步骤八包括以下步骤:
步骤八一、根据等效圆形阵列粗略偏转角度△θ,确定等效圆形阵列的行直线方程表达式y=tan(△θ)x+brow和等效圆形阵列的列直线方程表达式y=tan(△θ+90°)(x-bcol),如5所示;
其中,x、y为图像坐标系下的坐标值,brow行直线在图像坐标系y轴的截距,bcol列直线在图像坐标系x轴的截距;
步骤八二、确定等效阵列圆行列分类阈值
步骤八三、对等效阵列圆进行行聚类:利用第i个等效阵列圆的位置
>
步骤八四、基于等效阵列圆行列分类阈值intercept_thresh,对所有等效阵列圆得到的行截距
步骤八五、将步骤八四聚类后,行等效阵列圆蔟内元素个数为1的行等效阵列圆簇视为干扰予以剔除;
然后对所有行等效阵列圆蔟按照对应行截距聚类中心进行升序排序,得到的排序后的行等效阵列圆蔟以行序号排列;
步骤八六、对等效阵列圆进行列聚类:利用第i个等效阵列圆的位置
步骤八七、基于等效阵列圆行列分类阈值intercept_thresh,对所有等效阵列圆得到的列截距
步骤八八、将步骤八七聚类后,列等效阵列圆蔟内元素个数为1的列等效阵列圆簇视为干扰予以剔除;
然后对所有列等效阵列圆蔟按照对应列截距聚类中心进行升序排序,得到的排序后的列等效阵列圆蔟以列序号排列。
其它步骤及参数与具体实施方式二相同。
具体实施方式四:
本实施方式步骤九的具体实现步骤如下:
步骤九一、利用步骤八得到的行、列等效阵列圆簇,进行行、列直线拟合,求解拟合得到的对应行直线方程和列直线方程的交点,并以该交点为中心在阵列圆标识图像上进行半径为△γ/2局部搜索,如6所示,如果搜索到非0灰度值的像素,则对应灰度值为该行、列交点位置上的等效阵列圆的标识序号;
步骤九二、然后根据等效阵列圆的标识序号,在阵列圆信息列表中确定对应的阵列圆,根据该阵列圆内部区域所有像素的平均灰度,再结合灰度分割阈值seg_thresh,进行此行列位置上阵列圆的0或1信息判断。
其它步骤及参数与具体实施方式三相同。
具体实施方式五:
本实施方式步骤九二中所述进行此行列位置上阵列圆的0或1信息判断的具体实现步骤如下:
如果该阵列圆内部区域所有像素的平均灰度值大于等于seg_thresh,则该阵列圆对应记作1,否则,该阵列圆对应记作0;
或者,
如果该阵列圆内部区域所有像素的平均灰度值大于等于seg_thresh,则该阵列圆对应记作0,否则,该阵列圆对应记作1。
其它步骤及参数与具体实施方式四相同。
具体实施方式六:
本实施方式步骤五中所述预设阈值thresh根据实际情况确定,与圆形阵列图形码和载体对比度有关。
其它步骤及参数与具体实施方式五相同。
机译: 基于线性聚类的多类型BGA芯片的视觉识别方法
机译: 基于行聚类的多类型BGA芯片视觉识别方法
机译: 基于线性聚类的多类型BGA芯片的视觉识别方法