本发明涉及图像处理识别模块,特别涉及一种二维码区域的检测定位方法及系统。
背景技术:
二维码是按照一定规律在二维上分布的黑白相间的图形,主要分为堆叠式和矩阵式二维码,由于其信息容量大,容错能力强,编码范围广等特点已逐渐取代了一维码。目前二维码已广泛应用于产品防伪/溯源、移动支付、仓储管理、电子商务、产品营销等领域。随着二维码的广泛深入应用,同一张图片中存在多个二维码(简称“多码同图”)的情况已日益增多,尤其是在网络媒体、海报营销、银行税票等领域。但是,现有大多数的二维码扫描解码需要将摄像头对准二维码区域,再将采集到的二维码图片通过二维码解码算法来提取数据信息,对于“多码同图”的情况这种方法无疑将耗费用户更多的时间,而且用户体验差。且现有的通过寻找不同类型的二维码特有的寻像图形来检测条码并解码的方法,对于“多码同图”的情况这种方法容易出现牛眼组合错误、无效牛眼组合冗多的情况,导致二维码解码的效率低下,解码成功率低。而对于寻像图形缺失、背景复杂、光照不均等低品质的“多码同图”图像,现有二维码解码的方法解码成功率低。
技术实现要素:
本发明要解决的技术问题是如何提供一种可精确识别一张图片上的多个二维码的二维码区域的检测定位方法及系统。
为了解决上述技术问题,本发明的技术方案为:
一种二维码区域的检测定位方法,包括步骤:
获取待识别二维码的灰度图像;
对灰度图像进行降采样;
对降采样后的图像进行边缘检测;
对边缘检测后的图像进行二值化处理;
对二值化后的图像进行先膨胀后腐蚀处理,获得多个连通区域;
分别对每个连通区域进行二维码的特征分析,筛选出二维码的候选区域;
将获得的所述候选区域所对应的所述灰度图像的区域,作为待解码区域。
优选地,分别对每个连通区域进行二维码特征分析,筛选出二维码的候选区域的步骤包括:
计算每个连通区域的面积,若其面积与降采样后的图像的面积之间比值小于预设值时,剔除该连通区域;
对保留的连通区域做边缘链码追踪,求解其最小面积外接矩形;
计算每个连通区域的面积与其最小面积外接矩形之间的比值,若该比值小于预设比值,剔除该连通区域;
计算保留的连通区域的最小面积外接矩形的长宽比,若长宽比小于预设长宽比,输出该连通区域为二维码的候选区域,若长宽比大于预设长宽比,对该连通区域进行候选区域的分割以得到多个二维码候选区域。
优选地,对灰度图像进行降采样的步骤包括:
根据所述灰度图像大小,采用自适应确定降采样率,以对所述灰度图像进行降采样;自适应的降采样率大小应满足降采样后的灰度图像的较小维度的像素大小在200至400之间;
当灰度化处理后的图像大小为m×n,则降采样率可以用公式表示:
其中,ds为降采样率,min(m,n)为m和n中最小的数,
优选地,对降采样后的图像进行边缘检测的步骤中,边缘检测通过形态学的bottom-hat底帽操作或sobel算符实现。
优选地,获取待识别二维码的灰度图像的步骤中,当图像为彩色图像时,对图像进行灰度化处理以得到灰度图像。
本发明还提出一种二维码区域的检测定位系统,包括:
灰度图像模块:获取待识别二维码的灰度图像;
降采样模块:对灰度图像进行降采样;
边缘检测模块:对降采样后的图像进行边缘检测;
二值化模块:对边缘检测后的图像进行二值化处理;
膨胀腐蚀模块:对二值化后的图像进行先膨胀后腐蚀处理,获得多个连通区域;
筛选模块:分别对每个连通区域进行二维码的特征分析,筛选出二维码的候选区域;
区域选取模块:将获得的所述候选区域所对应的所述灰度图像的区域,作为待解码区域。
优选地,筛选模块包括:
面积比对模块:计算每个连通区域的面积,若其面积与降采样后的图像的面积之间比值小于预设值时,剔除该连通区域;
外接矩形模块:对保留的连通区域做边缘链码追踪,求解其最小面积外接矩形;
第二面积比对模块,计算每个连通区域的面积与其最小面积外接矩形之间的比值,若该比值小于预设比值,剔除该连通区域;
长宽比模块:计算保留的连通区域的最小面积外接矩形的长宽比,若长宽比小于预设长宽比,输出该连通区域为二维码的候选区域,若长宽比大于预设长宽比,对该连通区域进行候选区域的分割以得到多个二维码候选区域。
优选地,降采样模块中:
根据所述灰度图像大小,采用自适应确定降采样率,以对所述灰度图像进行降采样;自适应的降采样率大小应满足降采样后的灰度图像的较小维度的像素大小在200至400之间;
当灰度化处理后的图像大小为m×n,则降采样率可以用公式表示:
其中,ds为降采样率,min(m,n)为m和n中最小的数,
优选地,边缘检测模块中,边缘检测通过形态学的bottom-hat底帽操作或sobel算符实现。
优选地,灰度图像模块中,当图像为彩色图像时,对图像进行灰度化处理以得到灰度图像。
采用上述技术方案,通过对灰度图像先后进行:降采样、边缘检测、二值化处理、膨胀、腐蚀、筛选等步骤,从一张带有多个二维码的复杂图形中检测并定位到多个二维码,以供后续的识别应用。使用本技术方案时,具有以下优点:采集图像时无需将摄像头对准二维码区域,仅需采集的图像中包含二维码即可,可以提升用户体验;解决现有的二维码解码方法中对于“多码同图”的情况这种方法容易出现牛眼组合错误、无效牛眼组合冗多的情况,提高解码成功率;提高在寻像图形缺失、背景复杂、光照不均等低品质的“多码同图”图像的情况下的解码成功率。
附图说明
图1为本发明二维码区域的检测定位方法一实施例的流程图;
图2为图1中步骤s60的流程图;
图3为发明二维码区域的检测定位系统一实施例的模块原理图;
图4为图3中筛选模块的模块原理图;
图5为本发明一实施例中降采样处理后的图;
图6为本发明一实施例中边缘检测处理后的图;
图7为本发明一实施例中二值化处理后的图;
图8为本发明一实施例中先膨胀后腐蚀处理后的图;
图9为本发明一实施例中筛选出二维码的候选区域后的图;
图10为本发明一实施例中待解码区域图。
图中,10-灰度图像模块,20-降采样模块,30-边缘检测模块,40-二值化模块,50-膨胀腐蚀模块,60-筛选模块,70-区域选取模块,61-面积比对模块,62-外接矩形模块,63-第二面积比对模块,64-长宽比模块。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步说明。在此需要说明的是,对于这些实施方式的说明用于帮助理解本发明,但并不构成对本发明的限定。此外,下面所描述的本发明各个实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明提出了一种二维码区域的检测定位方法,在本实施例中,参照图1及图2,该方法包括步骤:
s10:获取待识别二维码的灰度图像;当图像为彩色图像时,对图像进行灰度化处理以得到灰度图像。
s20:对灰度图像进行降采样;根据灰度图像大小,采用自适应确定降采样率,以对灰度图像进行降采样;自适应的降采样率大小应满足降采样后的灰度图像的较小维度的像素大小在200至400之间;
当灰度化处理后的图像大小为m×n,则降采样率可以用公式表示:
其中,ds为降采样率,min(m,n)为m和n中最小的数,
s30:对降采样后的图像进行边缘检测;边缘检测通过形态学的bottom-hat底帽操作或sobel算符实现。
s40:对边缘检测后的图像进行二值化处理。
s50:对二值化后的图像进行先膨胀后腐蚀处理,获得多个连通区域;
s60:分别对每个连通区域进行二维码的特征分析,筛选出二维码的候选区域;
其中该筛选步骤具体包括:
s61:计算每个连通区域的面积,若其面积与降采样后的图像的面积之间比值小于预设值时,剔除该连通区域;
s62:对保留的连通区域做边缘链码追踪,求解其最小面积外接矩形;
s63:计算每个连通区域的面积与其最小面积外接矩形之间的比值,若该比值小于预设比值,剔除该连通区域;
s64:计算保留的连通区域的最小面积外接矩形的长宽比,若长宽比小于预设长宽比,输出该连通区域为二维码的候选区域,若长宽比大于预设长宽比,对该连通区域进行候选区域的分割以得到多个二维码候选区域。
s70:将获得的候选区域所对应的灰度图像的区域,作为待解码区域。
在本发明的另一实施例中,二维码区域的检测定位方法包括了:
b1.对采集图像进行灰度化处理得到灰度图像。需要说明的是,灰度化处理仅针对获得的图像是彩色图像,如rgb或是cmyk或是rgba的情况,如果所得的图像是灰度图像,则无需此步操作。
b2.根据灰度图像大小,自适应确定降采样率,对灰度图像进行降采样;自适应降采样率大小应满足降采样后的灰度图像的较小维度的像素大小在200~400之间;
假设灰度化处理后的图像大小为m×n,则降采样率可以用公式(1)表示:
其中,ds表示降采样率,min(m,n)表示m和n中最小的数,
本实施例中,降采样处理后的图像如图5所示。
b3.对降采样后的图像进行边缘检测:使用形态学的bottom-hat底帽操作或sobel算符对降采样后的图像进行边缘检测。
本实施例中,边缘检测处理后的图像如图6所示。
b4.对边缘检测后的图像进行二值化处理。将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。图像的二值化使图像中数据量大为减少,从而能凸显出目标的轮廓,更加便于后续的处理动作。
本实施例中,二值化处理后的图像如图7所示。
b5.对二值化后的图像进行形态学操作,获得多个连通区域:的形态学操作包括连续的先膨胀后腐蚀处理。为了提高检测性能,本实施例中采用连续的至少3次膨胀再至少3次腐蚀操作。
这里采用的形态学操作包括膨胀和腐蚀。需要先确定用于膨胀腐蚀的结构体及其大小,由于二维码一般都是正方形结构的,因此这里采用正方形的结构体。由于二维码是由黑白相间的块组成的,因此先进行膨胀操作可以将原本分离的二维码连通在一起,再进行腐蚀操作可以将二维码边界上的干扰消除。本发明实施例中采用3×3的正方形结构体,先进行3次连续的膨胀操作,再进行3次连续的腐蚀操作。当然,在实际中,结构体的尺寸以及膨胀腐蚀的操作次数是可以改变的。通过膨胀、腐蚀操作,我们可以获得多个连通的区域,这些区域可能包含二维码,也可能不包含二维码,需要将这些区域输入到下一步做二维码特征分析。
本实施例中,先膨胀后腐蚀处理后的图像如图8所示。
b6.分别对每个连通区域进行二维码特征分析,筛选出二维码候选区域。筛选的过程包含如下分析:
b6-1:计算每个连通区域的面积,若面积小于降采样后的图像的1/144,则剔除该连通区域;
b6-2:对保留的连通区域做边缘链码追踪,求解其最小面积外接矩形(maximumareaboundedrectangle,mabr);
首先,链码,又称为freeman码,是用曲线起始点的坐标和边界点方向代码来描述曲线或边界的方法,这里我们利用链码追踪获得连通区域的边界坐标及其方向,其次,将这些边界坐标中最外层的边界点连接起来,获得凸多边形,最后,对该凸多边形求其最小面积外接矩形(mabr,minimumareaboundedrectangle)。利用一个凸多边形的mabr的一边至少过该凸多边形的一边的定理,可以利用旋转卡壳算法快速实现mabr的求解。
b6-3:计算每个连通区域的面积相对于其mabr的比值,若比值小于0.8,则剔除该连通区域;
b6-4:对保留的连通区域计算其mabr的长宽比;
b6-5:若长宽比小于1.7,输出该连通区域为二维码候选区域;
b6-6:若长宽比大于1.7,对该连通区域进行二维码候选区域的分割得到多个二维码候选区域。
本实施例中,对每个连通区域进行二维码特征分析,筛选出二维码候选区域的处理后的图像如图9所示。
b7.根据降采样率获得候选区域所对应的灰度图像的区域,作为待解码区域。
本实施例中,本步骤处理后的图像如图10所示,其对多个二维码的位置进行了准确定位。
通过以上的步骤快速精确的定位出多个二维码的待解码区域,对待解码区域分别进行二维码解码处理。
参照图3及图4,本发明还提出一种二维码区域的检测定位系统,包括:
灰度图像模块10:获取待识别二维码的灰度图像;
降采样模块20:对灰度图像进行降采样;
边缘检测模块30:对降采样后的图像进行边缘检测;
二值化模块40:对边缘检测后的图像进行二值化处理;
膨胀腐蚀模块50:对二值化后的图像进行先膨胀后腐蚀处理,获得多个连通区域;
筛选模块60:分别对每个连通区域进行二维码的特征分析,筛选出二维码的候选区域;
区域选取模块70:将获得的候选区域所对应的灰度图像的区域,作为待解码区域。
具体地,筛选模块60包括:
面积比对模块61:计算每个连通区域的面积,若其面积与降采样后的图像的面积之间比值小于预设值时,剔除该连通区域;
外接矩形模块62:对保留的连通区域做边缘链码追踪,求解其最小面积外接矩形;
第二面积比对模块63,计算每个连通区域的面积与其最小面积外接矩形之间的比值,若该比值小于预设比值,剔除该连通区域;
长宽比模块64:计算保留的连通区域的最小面积外接矩形的长宽比,若长宽比小于预设长宽比,输出该连通区域为二维码的候选区域,若长宽比大于预设长宽比,对该连通区域进行候选区域的分割以得到多个二维码候选区域。
具体地,降采样模块20中:
根据灰度图像大小,采用自适应确定降采样率,以对灰度图像进行降采样;自适应的降采样率大小应满足降采样后的灰度图像的较小维度的像素大小在200至400之间;
当灰度化处理后的图像大小为m×n,则降采样率可以用公式表示:
其中,ds为降采样率,min(m,n)为m和n中最小的数,
具体地,边缘检测模块30中,边缘检测通过形态学的bottom-hat底帽操作或sobel算符实现。
具体地,灰度图像模块10中,当图像为彩色图像时,对图像进行灰度化处理以得到灰度图像。
采用上述技术方案,通过对灰度图像先后进行:降采样、边缘检测、二值化处理、膨胀、腐蚀、筛选等步骤,从一张带有多个二维码的复杂图形中检测并定位到多个二维码,以供后续的识别应用。使用本技术方案时,具有以下优点:采集图像时无需将摄像头对准二维码区域,仅需采集的图像中包含二维码即可,可以提升用户体验;解决现有的二维码解码方法中对于“多码同图”的情况这种方法容易出现牛眼组合错误、无效牛眼组合冗多的情况,提高解码成功率;提高在寻像图形缺失、背景复杂、光照不均等低品质的“多码同图”图像的情况下的解码成功率。
以上结合附图对本发明的实施方式作了详细说明,但本发明不限于所描述的实施方式。对于本领域的技术人员而言,在不脱离本发明原理和精神的情况下,对这些实施方式进行多种变化、修改、替换和变型,仍落入本发明的保护范围内。