一种二维码检测方法及装置与流程

文档序号:18741651发布日期:2019-09-21 01:50阅读:239来源:国知局
一种二维码检测方法及装置与流程

本发明涉及二维码检测技术领域,尤其涉及一种二维码检测方法及装置。



背景技术:

目前现有的二维码检测方案中,需要将二维码的码区人为选出并将码区放在指定识读区,才能实现二维码检测及识别,当码区在识读区中所占比例过低或码区背景复杂时,会出现识别耗时较长甚至长时间无法识别的情况。

因此,亟需一种能够快速检测出二维码所在区域的技术方案。



技术实现要素:

有鉴于此,本发明提供一种二维码检测方法及装置,用以解决现有技术中需要快速检测出二维码所在区域的技术问题。

本发明提供了一种二维码检测方法,包括:

获得目标图像;

对所述目标图像进行灰度处理,得到灰度图像;

对所述灰度图像进行二值化处理,得到二值化图像;

基于所述二值化图像的图像能量参数,获得所述二值化图像中的至少一个识别区域,所述识别区域中包含二维码码区。

上述方法,优选的,基于所述二值化图像的图像能量参数,获得所述二值化图像中的至少一个识别区域,包括:

利用滑动窗口对所述二值化图像进行图像遍历,以获得每个所述滑动窗口下的窗口区域的图像能量参数;

基于所述图像能量参数,确定至少一个目标窗口区域,所述目标窗口区域中包含二维码码区;

对存在区域交集的所述目标窗口区域进行合并,得到至少一个识别区域。

上述方法,优选的,对所述灰度图像进行二值化处理,得到二值化图像,包括:

获得所述灰度图像的整图灰度均值;

获得与所述整图灰度均值相对应的阈值区间及所述阈值区间对应的阈值间隔值;

基于所述阈值区间和所述阈值间隔值,确定所述灰度图像的二值化阈值;

以所述二值化阈值,对所述灰度图像进行二值化处理,得到二值化图像。

上述方法,优选的,对所述灰度图像进行二值化处理,得到二值化图像,包括:

对所述灰度图像进行分区,得到多个分区图像;

获得每个所述分区图像的分区灰度均值及其对应的阈值系数;

将所述分区灰度均值与其对应阈值系数相乘,得到所述分区图像的二值化阈值;

以所述二值化阈值,分别对所述二值化阈值对应的分区图像进行二值化处理,得到二值化图像。

上述方法,优选的,获得每个所述滑动窗口下的窗口区域的图像能量参数,包括:

利用积分图计算方法对每个所述滑动窗口下的窗口区域的图像能量参数进行计算,以得到每个所述窗口区域的图像能量参数;

其中,所述图像能量参数包括:所述窗口区域的图像能量值或所述窗口区域的图像能量密度。

上述方法,优选的,基于所述图像能量参数,确定目标窗口区域,包括:

在所述图像能量参数满足预设的标准码区能量范围的情况下,计算所述窗口区域在经过腐蚀处理后的腐蚀能量参数;

对所述图像能量参数与所述腐蚀能量参数满足预设的腐蚀规则的窗口区域进行分块,得到多个区域子块;

计算所述区域子块的子块能量参数;

将所述区域子块的子块能量参数满足预设的子块能量规则的所述窗口区域确定为包含二维码码区的目标窗口区域。

上述方法,优选的,所述图像能量参数与所述腐蚀能量参数满足预设的腐蚀规则,包括:

所述图像能量参数处于第一参数范围,所述腐蚀能量参数处于第二参数范围,所述图像能量参数与所述腐蚀能量参数之间的差值处于第三参数范围;

上述方法,优选的,所述区域子块的子块能量参数满足预设的子块能量规则,包括:

所述区域子块的子块能量参数处于所述第一参数范围,且关于所述窗口区域中预设的基准线对称的区域子块之间的子块能量参数的差值处于第四参数范围。

上述方法,优选的,还包括:

对所述二值化图像利用形态学算法进行滤波;

其中,所述形态学算法包括:开运算、闭运算、膨胀运算和腐蚀运算中一种或多种组合形成的运算算法。

本发明提供了一种二维码检测装置,包括:

图像获得单元,用于获得目标图像;

灰度处理单元,用于对所述目标图像进行灰度处理,得到灰度图像;

二值化处理单元,用于对所述灰度图像进行二值化处理,得到二值化图像;

能量检测单元,用于基于所述二值化图像的图像能量参数,获得所述二值化图像中的至少一个识别区域,所述识别区域中包含二维码码区。

从上述技术方案可以看出,本发明公开的一种二维码检测方法及装置,在对图像进行灰度及二值化处理之后,通过利用二值化图像的图像能量参数来对二值化图像中包含二维码码区的识别区域进行检测,进而在确定包含二维码码区的识别区域之后,对识别区域的图像进行二维码识别,以此来获得识别结果。可见,本发明中对图像二值化之后通过对图像能量参数进行获取,进而找到二值化图像中包含二维码码区的区域,实现二维码所在区域的快速定位,由此在后续二维码识别中只对包含二维码码区的区域进行二维码识别,从而减少识别耗时,达到提高识别效率的目的。

附图说明

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

图1为本发明实施例一提供的一种二维码检测方法的流程图;

图2为本发明实施例一提供的一种二维码检测方法的部分流程图;

图3为本发明实施例二提供的一种二维码检测装置的结构图;

图4为本发明实施例二提供的一种二维码检测装置的另一结构图;

图5为本发明实施例的示例流程图。

具体实施方式

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

参考图1,为本发明实施例一提供的一种二维码检测方法的实现流程图,该方法适用于能够进行图像处理的设备中,如计算机或服务器等。本实施例中的方法主要用于对二维码进行快速有效的识别。

具体的,本实施例中的方法可以包括以下步骤:

步骤101:获得目标图像。

其中,目标图像可以为通过摄像头或相机等设备采集到的图像,如手机摄像头或POS机扫描口等对需要进行二维码识别的区域或场景下进行图像采集所获得的图像,该目标图像中包含待识别的二维码码区图像,也可能包含有背景区域图像。

步骤102:对目标图像进行灰度处理,得到灰度图像。

其中,本实施例中可以利用分量法、最大值法、平均值法或加权平均法等算法对目标图像进行灰度处理,使得目标图像中的RGB三项数据相一致,得到灰度图像。

需要说明的是,灰度图像中像素的像素值可以为0到255中的任一值。

步骤103:对灰度图像进行二值化处理,得到二值化图像。

其中,本实施例中可以根据灰度图像中的清晰度值或者灰度图像中的图像元素多样程度或者像素复杂程度来使用不同的二值化处理算法,对灰度图像进行二值化。例如,如果灰度图像中清晰度较高或者灰度图像中图像元素较少或者像素复杂度较低时,可以采用基于全局阈值的二值化处理算法,反之,可以采用基于局部阈值的二值化处理算法。

需要说明的是,二值化图像中像素的像素值为0或255。

步骤104:基于二值化图像的图像能量参数,获得二值化图像中的至少一个识别区域。

其中,本实施例中获得的识别区域为包含二维码码区的区域。也就是说,本实施例中基于二值化图像的图像能量参数对二值化图像中的二维码码区进行筛选及确定,从而得到二值化图像中包含二维码码区的识别区域。

需要说明的是,本实施例中二值化图像的图像能量参数能够表征二值化图像中各像素的分布及像素值,本实施例中利用二维码码区图像特有的图像能量特点,通过对二值化图像的图像能量参数进行解析,进而获得二值化图像中包含二维码码区的识别区域,实现二维码所在区域的快速定位。

其中,包含二维码码区的识别区域可以为一个或多个,即目标图像中可能包含一个或多个二维码。

步骤105:对识别区域的图像进行二维码识别,得到识别结果。

其中,本实施例中可以利用二维码识别算法对包含二维码码区的识别区域的图像进行识别,以得到识别结果,如网页链接、名片等结果。可见,本实施例中只对二值化图像中包含二维码码区的识别区域进行二维码识别,而对其他区域的图像不进行识别,从而减少识别耗时。

需要说明的是,本实施例中在得到识别区域之后,该识别区域可以用于如前述的二维码识别,也可以用于其他场景,如二维码打印输出或者码块的修改等,不仅限于二维码识别场景。基于本实施例中得到的识别区域,所能够实现的各种场景下的技术方案均在本申请的保护范围内。

由上述方案可知,本发明实施例一提供的一种二维码检测方法,在对图像进行灰度及二值化处理之后,通过利用二值化图像的图像能量参数来对二值化图像中包含二维码码区的识别区域进行检测,进而在确定包含二维码码区的识别区域之后,对识别区域的图像进行二维码识别,以此来获得识别结果。可见,本实施例中对图像二值化之后通过对图像能量参数进行获取,进而找到二值化图像中包含二维码码区的区域,实现二维码所在区域的快速定位,由此在后续二维码识别中只对包含二维码码区的区域进行二维码识别,从而减少识别耗时,达到提高识别效率的目的。

在一种实现方式中,图1中的步骤104在基于二值化图像的图像能量参数获得识别区域时,可以通过以下方式实现,如图2中所示:

步骤201:利用滑动窗口对二值化图像进行图像遍历,以获得每个滑动窗口下的窗口区域的图像能量参数。

其中,滑动窗口可以为递变尺寸(N*N,N的上下限可以根据历史实验数据设置)的窗口,本实施例中利用递变尺寸的滑动窗口对二值化图像进行遍历,以得到遍历后的多个窗口区域,并对各窗口区域的图像能量参数进行计算。

具体的,本实施例中可以利用快速的积分图计算方法对每个滑动窗口下的窗口区域的图像能量参数进行计算,以得到每个窗口区域的图像能量参数。

其中,图像能量参数可以包括有:窗口区域的图像能量值或窗口区域的图像能量密度。其中,窗口区域的图像能量值是指窗口区域中基于像素的能量值,如灰度值,而图像能量密度为图像能量值与像素个数的比值。

步骤202:基于图像能量参数,确定至少一个目标窗口区域。

其中,目标窗口区域中包含二维码码区,也就是说,目标窗口区域中预测的可能包含有二维码码区,其他窗口区域不包含二维码码区。

具体的,本实施例中在获得窗口区域的图像能量参数之后,可以首先判断图像能量参数是否满足预设的标准码区能量范围,其中,标准码区能量范围是指:一个标准码区的码图能量或能量密度对应的范围,具体可以根据二维码印刷标准中的印刷像素来计算获得,并通过大量样本(不同种类不同场景下的样本)加以校正,设置能量范围中的上限和下限,由此,本实施例中可以判断图像能量参数中的能量值或能量密度是否处于对应的标准码区能量值范围或密度范围,来判断图像能量参数是否满足标准码区能量范围;

如果图像能量参数是否满足预设的标准码区能量范围,那么计算窗口区域在经过腐蚀处理后的腐蚀能量参数,其中,计算腐蚀能量参数具体可以为:对窗口区域进行腐蚀运算,再对腐蚀后的窗口区域的图像计算得到腐蚀能量值或腐蚀能量密度,由此得到腐蚀能量参数;需要说明的是,腐蚀处理会将像素区域较小的像素腐蚀消除,而保留像素区域较大的像素,也就是说,本实施例中的腐蚀处理可以理解为对窗口区域中的点状的像素区域进行腐蚀消除,而保留块状的像素区域,相应的,在如果窗口区域经过腐蚀处理后,窗口区域的能量参数发生变化,与腐蚀之前的能量参数之间具有较大的区别,如腐蚀处理后的窗口区域的能量值或能量密度会下降等。

之后,对图像能量参数与腐蚀能量参数满足预设的腐蚀规则的窗口区域(没有经过腐蚀处理的窗口区域)进行分块,得到多个区域子块,其中,图像能量参数与腐蚀能量参数满足腐蚀规则,是指:所述图像能量参数处于第一参数范围,腐蚀能量参数处于第二参数范围,所述图像能量参数与所述腐蚀能量参数之间的差值处于第三参数范围,例如,第一参数范围为30-150的能量值范围,第二参数范围为10-40的能量值范围,第三参数范围可以为10-60的能量值范围,对于腐蚀前的能量值处于30-150,腐蚀后的能量值处于10-40,且腐蚀前后的能量差在10-60的窗口区域可以认为是包含二维码码区的区域,而对于其他区域则认为是噪声或者其他情况的区域,例如:如果某个窗口区域腐蚀前的图像灰度平均值为40,而腐蚀后的图像灰度平均值为20,那么差值20大于10且小于60,那么认为窗口区域是包含二维码码区的区域,而如果某个窗口区域腐蚀前的图像灰度平均值为150,而腐蚀后的图像灰度平均值为20,那么差值130已经超出10-60的范围,那么认为窗口区域中属于噪声较多的区域,而并不是包含二维码码区的区域,等等,由此,本实施例中对图像能量值在第一参数范围、腐蚀能量值在第二参数范围且能量值差值在第三参数范围的窗口区域进行分块,每个窗口区域可以被分为多个区域子块;

具体的,对窗口区域的分块可以按照一定的规则进行,例如,将窗口区域平均分成四个子块外加取中间部分共五个子块,进一步的取中间十字区域及四周边框的区域子块,等等;

然后,对分块来的区域子块分别计算子块能量参数,如子块能量值或子块能量密度等,具体的可以利用快速的积分图计算方法计算子块能量值和子块能量密度;

最后,将区域子块的子块能量参数满足预设的子块能量规则的窗口区域确定为包含二维码区域的目标窗口区域,其中,区域子块的子块能量参数满足预设的子块能量规则,可以为:所述区域子块的子块能量参数处于所述第一参数范围,且关于所述窗口区域中预设的基准线对称的区域子块之间的子块能量参数的差值处于第四参数范围,也就是说,在窗口区域中区域子块之间关于子块能量值或子块能量密度相同或相近到差值在值较小的第四参数范围内,如0-10的能量值范围,且区域子块的子块能量值仍然处于窗口区域的图像能量值所在的第一参数范围内,此时,确定该窗口区域中包含二维码码区,并标记该窗口区域为目标窗口区域。

需要说明的是,目标窗口区域可以为一个或者多个,即在滑动窗口下的各个窗口区域中可能存在一个或多个包含二维码码区的窗口区域。

步骤203:对存在区域交集的目标窗口区域进行合并,得到至少一个识别区域。

其中,本实施例中可以通过对目标窗口区域之间在水平、数值、倾斜等各个方向上进行判断,以确定出在各方向上存在交集的目标窗口区域,将这些存在交集的目标窗口区域进行合并,即:对目标窗口区域之间取合集,获得能够属于同一片图像区域即连成片的目标窗口区域,最终得到合并的区域,即为识别区域,而不能进行合并的目标窗口区域则作为一个单独的识别区域保留,由此,这里的识别区域可能是一个或者多个。

在一种实现方式中,图1中的步骤103在对灰度图像进行二值化处理时可以根据灰度图像的清晰度或者灰度图像中的元素复杂度采用不同的二值化处理方式,如下:

在一种处理方式中,步骤103可以通过全局阈值的二值化算法实现,如下:

首先,获得灰度图像的整图灰度均值,如计算整图的各个像素的灰度值的平均值;

之后,获得与整图灰度均值相对应的阈值区间及阈值区间对应的阈值间隔值,其中,本实施例中可以利用历史经验数据预先设置多个阈值区间及其阈值间隔值,例如,通过收集基于全局阈值的二值化处理中所收敛到的多个历史阈值来确定不同的全局灰度均值对应的阈值区间及相应进行迭代的阈值间隔,本实施例中在获得整图灰度均值之后在这些阈值区间中确定与整图灰度均值相对应的阈值区间及该阈值区间对应的阈值间隔值;

然后,基于阈值区间和阈值间隔值,确定灰度图像的二值化阈值,例如,在阈值区间内,每隔一个阈值间隔值取一个阈值对灰度图像进行迭代计算,最终确定灰度图像的二值化阈值;

最后,以灰度图像的二值化阈值,对灰度图像进行二值化处理,得到二值化图像,例如,对于灰度值大于二值化阈值的像素设置像素值为255,即白色像素,对于灰度值小于二值化阈值的像素设置像素值为0,即黑色像素。

在另一种处理方式中,步骤103可以通过局部阈值的二值化算法实现,如下:

首先,对灰度图像进行分区,得到多个分区图像;

之后,获得每个分区图像的分区灰度均值及其对应的阈值系数,其中,分区灰度均值可以通过对每个分区图像的像素的灰度值进行加和再平均计算得到,而阈值系数为预设值,不同的分区灰度均值对应于不同的阈值系数,如0.1、0.3或0.6等,而预设的阈值系数的总和为1,也就是说,对于不同的分区灰度均值在其阈值计算中所占的权重不同;

然后,将分区灰度均值与其对应的阈值系数相乘,得到分区图像的二值化阈值,也就是说,将分区图像的分区灰度均值与其对应的阈值系数相乘,得到的乘积即为该分区图像的二值化阈值;

最后,以二值化阈值,分别对二值化阈值对应的分区图像进行二值化处理,得到二值化图像,例如,在各个分区图像中,对于灰度值大于该分区图像的二值化阈值的像素设置像素值为255,即白色像素,对于灰度值小于该分区图像的二值化阈值的像素设置像素值为0,即黑色像素。

在具体实现中,为了提高包含二维码码区的识别区域的准确性,可以在得到二值化图像之后,对二值化图像进行滤波,例如,利用形态学算法对二值化图像进行滤波,再对滤波之后的二值化图像进行图像能量参数计算及后续的区域识别,进而得到包含二维码码区的识别区域,并进行二维码识别,得到识别结果。

具体的,本实施例中的形态学算法中可以为:开运算、闭运算、膨胀运算和腐蚀运算中的一种或多种组合形成的运算算法,例如:对于二值化图像可以进行一次开运算,可以消除这部分噪声同时保持码点不变,同时进行一次闭运算,可以使码区变得充实显著,而在开运算和闭运算的过程中对二值化图像穿插加入膨胀运算和腐蚀运算的组合运算,将若干次的运算结果进行复合,得到滤波后的二值化图像,从而消除二值化图像中的噪声,也能够得到二值化图像中更清晰的码图。

参考图3,为本发明实施例二提供的一种二维码检测装置的结构示意图,该装置适用于能够进行图像处理的设备中,如计算机或服务器等。本实施例中的装置主要用于对二维码进行快速有效的识别。

具体的,本实施例中的装置可以包括以下功能单元:

图像获得单元301,用于获得目标图像。

其中,图像获得单元301可以为摄像头或相机等设备上的功能单元,用于对目标图像进行采集,目标图像可以为如手机摄像头或POS机扫描口等对需要进行二维码识别的区域或场景下进行图像采集所获得的图像,该目标图像中包含待识别的二维码码区图像,也可能包含有背景区域图像。

灰度处理单元302,用于对所述目标图像进行灰度处理,得到灰度图像。

其中,本实施例中灰度处理单元302可以利用分量法、最大值法、平均值法或加权平均法等算法对目标图像进行灰度处理,使得目标图像中的RGB三项数据相一致,得到灰度图像。

需要说明的是,灰度图像中像素的像素值可以为0到255中的任一值。

二值化处理单元303,用于对所述灰度图像进行二值化处理,得到二值化图像。

其中,本实施例中二值化处理单元303可以根据灰度图像中的清晰度值或者灰度图像中的图像元素多样程度或者像素复杂程度来使用不同的二值化处理算法,对灰度图像进行二值化。例如,如果灰度图像中清晰度较高或者灰度图像中图像元素较少或者像素复杂度较低时,可以采用基于全局阈值的二值化处理算法,反之,可以采用基于局部阈值的二值化处理算法。

需要说明的是,二值化图像中像素的像素值为0或255。

能量检测单元304,用于基于所述二值化图像的图像能量参数,获得所述二值化图像中的至少一个识别区域。

其中,本实施例中获得的识别区域为包含二维码码区的区域。也就是说,本实施例中能量检测单元304基于二值化图像的图像能量参数对二值化图像中的二维码码区进行筛选及确定,从而得到二值化图像中包含二维码码区的识别区域。

需要说明的是,本实施例中二值化图像的图像能量参数能够表征二值化图像中各像素的分布及像素值,本实施例中能量检测单元304利用二维码码区图像特有的图像能量特点,通过对二值化图像的图像能量参数进行解析,进而获得二值化图像中包含二维码码区的识别区域,实现二维码所在区域的快速定位。

其中,包含二维码码区的识别区域可以为一个或多个,即目标图像中可能包含一个或多个二维码。

区域识别单元305,用于对所述识别区域的图像进行二维码识别,得到识别结果。

其中,本实施例中区域识别单元305可以利用二维码识别算法对包含二维码码区的识别区域的图像进行识别,以得到识别结果,如网页链接、名片等结果。可见,本实施例中只对二值化图像中包含二维码码区的识别区域进行二维码识别,而对其他区域的图像不进行识别,从而减少识别耗时。

由上述方案可知,本发明实施例二提供的一种二维码检测装置,在对图像进行灰度及二值化处理之后,通过利用二值化图像的图像能量参数来对二值化图像中包含二维码码区的识别区域进行检测,进而在确定包含二维码码区的识别区域之后,对识别区域的图像进行二维码识别,以此来获得识别结果。可见,本实施例中对图像二值化之后通过对图像能量参数进行获取,进而找到二值化图像中包含二维码码区的区域,实现二维码所在区域的快速定位,由此在后续二维码识别中只对包含二维码码区的区域进行二维码识别,从而减少识别耗时,达到提高识别效率的目的。

在一种实现方式中,二值化处理单元303对所述灰度图像进行二值化处理可以通过以下方式实现:

获得所述灰度图像的整图灰度均值;获得与所述整图灰度均值相对应的阈值区间及所述阈值区间对应的阈值间隔值;基于所述阈值区间和所述阈值间隔值,确定所述灰度图像的二值化阈值;以所述二值化阈值,对所述灰度图像进行二值化处理,得到二值化图像。

或者,二值化处理单元303对所述灰度图像进行二值化处理也可以通过以下方式实现:

对所述灰度图像进行分区,得到多个分区图像;获得每个所述分区图像的分区灰度均值及其对应的阈值系数;将所述分区灰度均值与其对应阈值系数相乘,得到所述分区图像的二值化阈值;以所述二值化阈值,分别对所述二值化阈值对应的分区图像进行二值化处理,得到二值化图像。

在一种实现方式中,能量检测单元304在基于所述二值化图像的图像能量参数,获得所述二值化图像中的至少一个识别区域时,可以通过以下方式实现:

首先,利用滑动窗口对所述二值化图像进行图像遍历,以获得每个所述滑动窗口下的窗口区域的图像能量参数,例如,利用积分图计算方法对每个所述滑动窗口下的窗口区域的图像能量参数进行计算,以得到每个所述窗口区域的图像能量参数;其中,所述图像能量参数包括:所述窗口区域的图像能量值或所述窗口区域的图像能量密度;

其次,基于所述图像能量参数,确定至少一个目标窗口区域,所述目标窗口区域中包含二维码码区,例如,在所述图像能量参数满足预设的标准码区能量范围的情况下,计算所述窗口区域在经过腐蚀处理后的腐蚀能量参数;对所述图像能量参数与所述腐蚀能量参数满足预设的腐蚀规则(如所述图像能量参数处于第一参数范围,所述腐蚀能量参数处于第二参数范围,所述图像能量参数与所述腐蚀能量参数之间的差值处于第三参数范围)的窗口区域进行分块,得到多个区域子块;计算所述区域子块的子块能量参数;将所述区域子块的子块能量参数满足预设的子块能量规则(如所述区域子块的子块能量参数处于所述第一参数范围,且关于所述窗口区域中预设的基准线对称的区域子块之间的子块能量参数的差值处于第四参数范围)的所述窗口区域确定为包含二维码码区的目标窗口区域;

最后,对存在区域交集的所述目标窗口区域进行合并,得到至少一个识别区域;

进一步的,本实施例中的装置还可以包括有滤波单元306,如图4中所示,其中滤波单元306主要用于:

在二值化处理单元303得到二值化图像之后,对所述二值化图像利用形态学算法进行滤波,经过滤波的二值化图像传输给能量检测单元304;

其中,所述形态学算法包括:开运算、闭运算、膨胀运算和腐蚀运算中一种或多种组合形成的运算算法,由此,利用形态学算法对二值化图像进行滤波后,消除二值化图像中的噪声,也能够得到二值化图像中更清晰的码图。

以下结合图5中的流程图,以用户手机识别建筑物墙体上的二维码为例,对本实施例中的方案进行举例说明:

步骤1、获得图像,将图像为灰度图像,对灰度图像进行二值化处理:

其中,在实际应用中分两种情况,一种手机所拍图片比较清晰,干扰因素较少,此时采用码图清晰,与背景相差比较大,此种情况采用基于全局阈值的二值化算法效果好并且耗时低,全局阈值的大小通过大量的不同类型不同场景的样本实验得出,通过一定的增量进行迭代;另一种所拍图片有一定的干扰因素(码图上印有背景,周围图案影响,噪声,阴影,曝光等),此时采用一种自适应局部二值化效果较好,先对图片领域进行划分,通过快速积分图的计算方法求当前像素领域内的灰度均值,根据均值确定阈值系数(根据不同的灰度级设定不同的阈值区间),因此每一块领域内阈值系数均与当前块内的灰度有关,为自适应阈值,灰度均值与阈值系数的乘积来确定当前的二值阈值,此种方法可以很好的处理码图有复杂背景、阴影、曝光等情况,同时,因为采用快速能量密度的方式避免了重复计算,耗时低,通过上面两种二值化方式的结合,效果显著。

步骤2、对二值化图像采用形态学滤波:在二值化产生的图像中会有少量的图像含有噪声点,此种噪声点相比码图小很多而且分布不规则,先利用开运算可以消除这部分噪声同时保持码图不变,同时再进行闭运算,可以使码图区的码图变得充实显著,在两次过程中穿插加入膨胀腐蚀组合,将若干次的结果进行复合可以消除噪音同时得到清晰的码图。

步骤3,在步骤2的过程后用递变尺寸的滑动窗口对二值化图像进行遍历,通过一种快速积分图方法计算滑动窗口下窗口区域的能量值或能量密度,并与标准码区的码图能量或能量密度进行比对,其中,一个标准码区的码图能量或能量密度可以根据二维码印刷标准中计算获得,并通过大量样本(不同种类不同场景等)加以校正,设定能量值或密度的阈值上下限,对满足要求的区域进行腐蚀操作,此时再对腐蚀后的区域计算能量值或能量密度,当前腐蚀的形态学元素大小通过计算获得。如果窗口区域包含二维码码区,那么腐蚀操作过后码区中的码图会全被腐蚀,能量会降到某个阈值以下(此阈值也是大量实验样本所得),由此,符合上述两次能量要求的窗口区域即认为可能包含二维码码区的区域,进入步骤4。

步骤4、对步骤3所挑选的框即窗口区域进行二次判断,将框平均分成四个子框外加取中间部分共五个部分作为五个子框,同时取中间十字区域子框及四周边框子区域,判断每一个子框的能量密度与整体框区域能量密度是否相近,且判断子框之间能量密度是否相近,如果是,那么记录该框(窗口区域),该框即为包含二维码码区的区域。其中,相近是指子框间的差异小于阈值,而阈值大小通过大量实验样本获得。子框的选取与码的类型有关,不仅限于上述的几种形状,判别的方式可根据相似对称性来决定。

步骤5、通过步骤4的框作为一个候选框,会被临时记下,每一个新产生的框会与已经产生的候选框进行对比,在水平、竖直、倾斜的方向有交集即可进行合并,并更新历史框的记录位置,若不能进行合并会被作为一个单独的候选框记录下来,也就是说,将包含二维码码区的框按照相似相融原理进行区域合并,得到最大的可能包含二维码码区的候选框。

最后,对包含二维码码区的候选框进行二维码识别,得到识别结果。

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

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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