一种二维码初步定位方法及系统的制作方法_2

文档序号:9433027阅读:来源:国知局
发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
[0041]本发明最关键的构思在于:将二维码的图形按照一定的宽度进行网格划分,会出现每个网格中均包含黑点,而二维码四周一定距离的图形只包含白点的特点,在接收到的包含二维码的图像中寻找二维码所在区域,所述方法快速、准确。
[0042]请参照图1至图6,本发明的【具体实施方式】为:
[0043]—种二维码初步定位方法,所述方法为:
[0044]SI对接收到的包含二维码的图像的像素点进行二值化;
[0045]S2将接收到的包含二维码的图像划分为至少一个的包含m行*n列个像素点的网格区域;
[0046]S3统计每个网格区域中像素点为黑点的个数,若所述的网格区域的黑点的个数大于0,则将所述网格区域赋值为1,否则,将所述网格区域赋值为O ;
[0047]S4将对网格区域赋值后的包含二维码的图像标记为非目标区域;
[0048]S5对非目标区域从上到下进行逐行扫描,并且从左到右进行逐列扫描,将每个行中第一次遇到的数值连续为I的网格区域与每个列中第一次遇到的数值连续为I的网格区域的并集标记为目标区域,其余标记为非目标区域;
[0049]S6统计目标区域的长度和宽度上包含的网格区域的个数、像素点的个数以及目标区域中包含的数值为I的网格区域的个数,判断目标区域是否为二维码所在区域;
[0050]若所述目标区域不是二维码所在区域,则转到步骤S5继续执行;
[0051]若所述目标区域为二维码所在区域,则输出目标区域的边界所对应的像素点的行号和列号。
[0052]进一步的,步骤S5中,对非目标区域从上到下进行逐行扫描,并且从左到右进行逐列扫描,将每个行中第一次遇到的数值连续为I的网格区域与每个列中第一次遇到的数值连续为I的网格区域的并集标记为目标区域,其余标记为非目标区域,具体为:
[0053]对非目标区域从上到下进行逐行扫描,将每个行中第一次遇到的数值连续为I的网格区域标记为目标区域:
[0054]将每个行中遇到的第I个数值为I的网格区域标记为行目标区域,第I个数值为I的网格区域之前的网格区域标记为非行目标区域;若当前网格区域的前一个网格区域被标记为行目标区域,且当前网格区域的数值为1,则将当前网格区域标记为行目标区域,否则标记为非行目标区域;
[0055]对非目标区域从左到右进行逐列扫描,将每个列中第一次遇到的数值连续为I的网格区域标记为目标区域:
[0056]将每个列中遇到的第I个数值为I的网格区域标记为列目标区域,第I个数值为I的网格区域之前的网格区域标记为非列目标区域;若当前网格区域的前一个网格区域被标记为列目标区域,且当前网格区域的数值为1,则将当前网格区域标记为列目标区域,否则标记为非列目标区域;
[0057]将所述的行目标区域和所述的列目标区域的并集组合成目标区域。
[0058]由上述描述可知,由于按照包含m行*n列个像素点对二维码所在区域进行网格划分,并不是所有的网格区域均包含黑点,但包含黑点的网格区域在行或者列上具有连续性,因此对目标区域进行标记时,进行逐行逐列的扫描,最后取行上搜到到的目标区域和列上搜索到的目标区域的并集作为目标区域,该目标区域所占的最大面积为疑似二维码所在区域,这样可消除行或者列中出现数值为O的网格区域对整个二维码所在区域的范围的影响,不会出现漏掉网格区域的情况,有效保证初步定位到的二维码所在区域的完整性。
[0059]进一步的,步骤S6中,判断目标区域是否为二维码所在区域,具体为:
[0060]统计目标区域中数值为I的网格区域的个数N ;
[0061]统计目标区域的长度上包含的网格区域的个数W,及像素点个数W*n ;
[0062]统计目标区域的宽度上包含的网格区域的个数H,及像素点个数H*m ;
[0063]预设像素点差值阀值d,若N*2〈W*H或者| (W*n) - (H*m) | >d,则所述目标区域不是二维码所在区域;否则所述目标区域为二维码所在区域。
[0064]由上述描述可知,充分利用二维码所在区域接近正方形,且数值为I的网格区域的个数大于整个二维码所在秋雨的网格区域数量的一半的特点,对目标区域是否为二维码所在区域进行判断,因此目标区域需满足N*2>W*H和I (W*n)-(H*m) |〈d两个条件,如果m和η的取值越接近,目标区域的长度W和宽度H的值越接近,则I (W*n)-(H*m) |的值就越小,d值就可设置的越小,所定位到的二维码所在区域就越接近二维码图形,精度越高。
[0065]进一步的,步骤S6中,还包括:
[0066]若所述目标区域为二维码所在区域,则判断目标区域的大小是否满足解码条件,具体为:
[0067]预设最小像素点阀值,若目标区域的长度上包含的像素点的个数小于最小像素点阀值,或者目标区域的宽度上包含的像素点的个数小于最小像素点阀值,则目标区域太小,不能满足解码条件。
[0068]进一步的,所述最小像素点阀值等于21。
[0069]由上述描述可知,若所找到的目标区域太小,则即使目标区域是二维码所在区域,也难以准确解码,因此若目标区域太小,则不能满足解码条件,放弃解码;最小的二维码的长度和宽度上包含有21个数据位,若每个数据位只包含一个像素点,则推算出最小的二维码的长度和宽度上包含的像素点的个数为21个,则取最小像素点阀值等于21 ;所述方法合理,保证二维码解码的有效性。
[0070]进一步的,步骤S6中,若所述目标区域为二维码所在区域,则输出目标区域的边界所对应的像素点的行号和列号,具体为:
[0071]统计目标区域所包含的网格区域所在的行号与列号;
[0072]根据目标区域所包含的网格区域所在的行号与列号以及每个网格区域包含的m行*n列个像素点,计算得到目标区域的边界所对应的像素点的行号和列号。
[0073]由上述描述可知,通过网格区域所在的行号与列号,以及网格区域包含的m行*n列个像素点,可以通过乘法直接计算得到目标区域的边界线所对应的像素点的行号和列号,则可推算出目标区域所包含的像素点的行号和列号,方便二维码的解码,所述方法合理。
[0074]请参照图1至图6,本发明的实施例一为:
[0075]—种二维码初步定位方法,所述方法为:
[0076]SI对接收到的包含二维码的图像的像素点进行二值化;
[0077]S2请参见图2,将接收到的包含二维码的图像划分为至少一个的包含m行*n列个像素点的网格区域,令m = η = 16 ;
[0078]S3请参见图3,统计每个网格区域中像素点为黑点的个数,若所述的网格区域的黑点的个数大于0,则将所述网格区域赋值为1,否则,将所述网格区域赋值为O ;
[0079]S4将对网格区域赋值后的包含二维码的图像标记为非目标区域120 ;
[0080]S5对图3中的非目标区域120从上到下进行逐行扫描,并且从左到右进行逐列扫描,将每个行中第一次遇到的数值连续为I的网格区域与每个列中第一次遇到的数值连续为I的网格区域的并集标记为目标区域111,其余标记为非目标区域121,请参见图4,具体为:
[0081]对图3中的非目标区域120从上到下进行逐行扫描,将每个行中第一次遇到的数值连续为I的网格区域标记为目标区域:
[0082]将每个行中遇到的第I个数值为I的网格区域标记为行目标区域,第I个数值为I的网格区域
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1