CN109948392B - 二维码边界检测方法、分割方法、存储介质和电子设备 - Google Patents
二维码边界检测方法、分割方法、存储介质和电子设备 Download PDFInfo
- Publication number
- CN109948392B CN109948392B CN201910209238.8A CN201910209238A CN109948392B CN 109948392 B CN109948392 B CN 109948392B CN 201910209238 A CN201910209238 A CN 201910209238A CN 109948392 B CN109948392 B CN 109948392B
- Authority
- CN
- China
- Prior art keywords
- column
- max
- value
- row
- pixel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Image Analysis (AREA)
Abstract
本发明实施例提供一种用于图像的二维码边界检测方法、二维码区域分割方法、存储介质和电子设备。用于图像的二维码区域分割方法包括:获取含有二维码的二值化图像;通过二维码边界检测方法对所述二值化图像执行X方向的投影,获取所述二维码在X方向上的第一边界行号和第二边界行号;通过二维码边界检测方法对所述二值化图像执行Y方向的投影,获取所述二维码在Y方向上的第一边界列号和第二边界列号;根据所述第一边界行号和第二边界行号以及第一边界列号和第二边界列号,获得所述二维码所在的图像区域。由此,能够使用已有的硬件模块快速地计算获得二值化图像中二维码在X方向和Y方向上的边界。此外,由于并行地执行部分运算,因此进一步地提高了二维码边界的检测效率,并且能够适应高品质图像的处理需求。
Description
技术领域
本发明实施例涉及图像处理技术,尤其涉及一种用于图像的二维码边界检测方法、二维码区域分割方法、存储介质和电子设备。
背景技术
二维码技术是一种为了实现对信息进行录入和自动扫描识别而设计的数字采集手段。由于二维码技术具有输入速度快、信息量大、准确率高、成本低、可靠性强等特点,目前已经广泛应用于网络支付、商业流通、物流仓储和工业生产控制等各个领域。二维码通常是用某种特定的几何图形按照一定的规律在平面上分布的黑白相间的图形来记录信息符号。其主要分为两大种类,一种是堆叠式/行排式二维条码如PDF417码和Code 16K码。一种是矩阵式二维码如QR码和Data Matrix码。
目前,二维码扫描解码技术主要有两种:一种是高级软件解码,广泛应用于手机移动应用,通过高级软件算法来进行扫描解码。另一种是终端解码。广泛引用于便捷支付,仓储物流,票务等领域。其采用的是基于嵌入式系统的嵌入式软件解码算法。一直以来,基于嵌入式系统的二维码解码终端始终受限于嵌入式系统中的处理器性能和嵌入式软件算法优化程度,存在着处理速度慢、实时性低和系统功耗高等问题。特别是在二维定位裁切功能上,传统的嵌入式软件解码算法,由于需要反复发起对片外存储器中的图像像素的单一读写操作,并且在匹配算法上无法进行并行化处理,使得这一功能成为了制约解码终端性能的瓶颈。
同时,随着二维码技术标准的升级和应用场景的不断扩大,在技术上首先会对摄像头所采集的图像尺寸提出更高的要求。目前广泛使用的二维码终端设备的图像采集尺寸一般在30万-40万像素左右。但随着应用场景的变化,高清图像采集已经成为趋势,这将使得以嵌入式软件算法来进行二维码搜寻的方式将更加的低效和不满足需求。其次,对终端系统的功耗和面积的要求也将不断提高。这意味着在技术上需要用更低频率的处理器和更快速的处理时间来满足这一需求。因此,作为性能瓶颈的二维码定位裁切功能应该采用硬件加速的方式,来应对技术上的发展。
发明内容
本发明实施例的目的在于,提供一种用于图像的二维码边界检测方案和二维码区域分割方案,以通过硬件电路快速、有效地完成图像的边界检测和二维码区域分割。
根据本发明实施例的第一方面,提供一种用于图像的二维码边界检测方法,包括:S11:通过DMA逐行地遍历含有二维码的二值化图像,将所述二值化图像的各行含像素值为0的像素个数顺序写入第一RAM,并且求得每行含像素值为0的平均行像素个数;S12:遍历第一RAM,将第一RAM中的像素个数读出值小于所述平均行像素个数的行号值累计计入第一触发器,对像素个数读出值小于所述平均行像素个数的行数进行计数,并且通过除法器将所述第一触发器中累计的行号值与所述计数的行数相除,得到分割行号平均值;S13:以所述二值化图像的中心行为第一行分界点将所述第一RAM分为两个行等分区re1和re2,并行地遍历行等分区re1和re2,分别将两个所述行等分区内每行含像素值为0的最大行像素个数max_re1和max_re2锁存到寄存器中,其中,最大行像素个数max_re1与第一行等分区re1对应,最大行像素个数max_re2与第二行等分区re2对应;S14:通过两个乘法器并行地计算第一行等分区re1的第一上限行分割像素个数阈值max_re1_upper和第一下限行分割像素个数阈值max_re1_lower;通过所述两个乘法器并行地计算第二行等分区re2的第二上限行分割像素个数阈值max_re2_upper和第二下限行分割像素个数阈值max_re2_lower;S15:以所述分割行号平均值为第二行分界点,将所述第一RAM分为第一行均值分区rf1和第二行均值分区rf2;S16:并行地执行以下处理:S161:顺序地遍历所述第一RAM的第一行均值分区rf1,根据所述第一上限行分割像素个数阈值max_re1_upper和第一下限行分割像素个数阈值max_re1_lower计算含有所述二维码的区域的X方向的第一边界行号阈值thres_x_1,并且逆序地遍历所述第一行均值分区rf1,将首个大于所述第一边界行号阈值thres_x_1的像素个数读出值对应的行号确定为X方向的第一边界行号bound_x_1;S162:顺序地遍历所述第一RAM的第二行均值分区rf2,根据所述第二上限行分割像素个数阈值max_re2_upper和第二下限行分割像素个数阈值max_re2_lower计算含有所述二维码的区域的X方向的第二边界行号阈值thres_x_2,并且顺序地遍历所述第二行均值分区rf2,将首个大于所述第二边界行号阈值thres_x_2的像素个数读出值对应的行号确定为X方向的第二边界行号bound_x_2。
可选地,所述顺序地遍历所述第一RAM的第一行均值分区rf1,根据所述第一上限行分割像素个数阈值max_re1_upper和第一下限行分割像素个数阈值max_re1_lower计算含有所述二维码的区域的X方向的第一边界行号阈值thres_x_1,包括:在遍历所述第一行均值分区rf1的过程中,累计所述第一行均值分区rf1的像素个数读出值大于所述第一上限行分割像素个数阈值max_re1_upper的行数,将满足以下条件的像素个数读出值swidth1累计到锁存器X_feng1中,并且将计数器X_num1的值递增,直到完成所述第一行均值分区rf1的遍历为止:所述累计的行数小于第一黑像素密集行数阈值comp_value1且像素个数读出值swidth1大于max_re1_lower,或者所述累计的行数大于等于第一黑像素密集行数阈值comp_value1且max_re1_lower<swidth1<max_re1_upper;通过除法器将锁存器X_feng1的值除以计数器X_num1的值,得到含有所述二维码的区域的X方向的第一边界行号阈值thres_x_1。
可选地,所述顺序地遍历所述第一RAM的第二行均值分区rf2,根据所述第二上限行分割像素个数阈值max_re2_upper和第二下限行分割像素个数阈值max_re2_lower计算含有所述二维码的区域的X方向的第二边界行号阈值thres_x_2,包括:在遍历所述第二行均值分区rf2的过程中,累计所述第二行均值分区rf2的像素个数读出值大于所述第二上限行分割像素个数阈值max_re2_upper的行数,将满足以下条件的像素个数读出值swidth2累计到锁存器X_feng2中,并且将计数器X_num2的值递增,直到累计的行数达到第二黑像素密集行数阈值comp_value2或者完成所述第二行均值分区rf2的遍历为止:所述累计的行数小于第二黑像素密集行数阈值comp_value2且像素个数读出值swidth2大于max_re2_lower,或者所述累计的行数大于等于第二黑像素密集行数阈值comp_value2且max_re2_lower<swidth2<max_re2_upper;通过除法器将锁存器X_feng2的值除以计数器X_num2的值,得到含有所述二维码的区域的X方向的第二边界行号阈值thres_x_2。
可选地,第一上限行分割像素个数阈值max_re1_upper=max_re1*0.98,第一下限行分割像素个数阈值max_re1_lower=max_re1*0.96,第二上限行分割像素个数阈值max_re2_upper=max_re2*0.98,第二下限行分割像素个数阈值max_re2_lower=max_re2*0.96。
根据本发明实施例的第二方面,提供一种用于图像的二维码边界检测方法,包括:S21:通过DMA逐列地遍历含有二维码的二值化图像,将所述二值化图像的各列含像素值为0的像素个数顺序写入第二RAM,并且求得每列含像素值为0的平均列像素个数;S22:遍历第二RAM,将第二RAM中的像素个数读出值小于所述平均列像素个数的列号数累计计入第二触发器,对像素个数读出值小于所述平均列像素个数的列数进行计数,并且通过除法器将所述第二触发器中累计的列号数与所述计数的列数相除,得到分割列号平均值;S23:以所述二值化图像的中心列为第一列分界点将所述第一RAM分为两个列等分区c1和c2,并行地遍历列等分区c1和c2,分别将两个所述列等分区内每列含像素值为0的最大列像素个数max_c1和max_c2锁存到寄存器中,其中,最大列像素个数max_c1与第一列等分区c1对应,最大列像素个数max_c2与第二列等分区c2对应;S24:通过两个乘法器并行地计算第一列等分区c1的第一上限列分割像素个数阈值max_c1_upper和第一下限列分割像素个数阈值max_c1_lower;通过所述两个乘法器并行地计算第二列等分区c2的第二上限列分割像素个数阈值max_c2_upper和第二下限列分割像素个数阈值max_c2_lower;S25:以所述分割列号平均值为第二列分界点,将所述第一RAM分为第一列均值分区cf1和第二列均值分区cf2;S26:并行地执行以下处理:S261:顺序地遍历所述第二RAM的第一列均值分区cf1,根据所述第一上限列分割像素个数阈值max_c1_upper和第一下限列分割像素个数阈值max_c1_lower计算含有所述二维码的区域的Y方向的第一边界列号阈值thres_y_1,并且逆序地遍历所述第一列均值分区cf1,将首个大于所述第一边界列号阈值thres_y_1的像素个数读出值对应的列号确定为Y方向的第一边界列号bound_y_1;S262:顺序地遍历所述第二RAM的第二列均值分区cf2,根据所述第二上限列分割像素个数阈值max_c2_upper和第二下限列分割像素个数阈值max_c2_lower计算含有所述二维码的区域的Y方向的第二边界列号阈值thres_y_2,并且顺序地遍历所述第二列均值分区cf2,将首个大于所述第二边界列号阈值的像素个数读出值对应的列号确定为Y方向的第二边界列号bound_y_2。
可选地,所述顺序地遍历所述第二RAM的第一列均值分区cf1,根据所述第一上限列分割像素个数阈值max_c1_upper和第一下限列分割像素个数阈值max_c1_lower计算含有所述二维码的区域的Y方向的第一边界列号阈值thres_y_1,包括:在遍历所述第一列均值分区cf1的过程中,累计所述第一列均值分区cf1的像素个数读出值大于所述第一上限列分割像素个数阈值max_c1_upper的列数,将满足以下条件的像素个数读出值swidth3累计到锁存器Y_feng1中,并且将计数器Y_num1的值递增,直到完成所述第一列均值分区cf1的遍历为止:累计的列数小于第一黑像素密集列数阈值comp_value3且像素个数读出值swidth3大于max_c1_lower,或者累计的列数大于等于第一黑像素密集列数阈值comp_value3且max_c1_lower<swidth3<max_c1_upper;通过除法器将锁存器Y_feng1的值除以计数器Y_num1的值,得到含有所述二维码的区域的Y方向的第一边界列号阈值thres_y_1。
可选地,所述顺序地遍历所述第二RAM的第二列均值分区cf2,根据所述第二上限列分割像素个数阈值max_c2_upper和第二下限列分割像素个数阈值max_c2_lower计算含有所述二维码的区域的Y方向的第二边界列号阈值thres_y_2,包括:在遍历所述第二列均值分区cf2的过程中,累计所述第二列均值分区cf2的像素个数读出值大于所述第二上限列分割像素个数阈值max_c2_upper的列数,将满足以下条件的像素个数读出值swidth4累计到锁存器Y_feng2中,并且将计数器Y_num2的值递增,直到完成所述第二列均值分区cf2的遍历为止:累计的列数小于第二黑像素密集列数阈值comp_value4且像素个数读出值swidth4大于max_c2_lower,或者累计的列数大于等于第二黑像素密集列数阈值comp_value4且max_c2_lower<swidth2<max_c2_upper;通过除法器将锁存器Y_feng2的值除以计数器Y_num2的值,得到含有所述二维码的区域的Y方向的第二边界列号阈值thres_y_2。
可选地,第一上限列分割像素个数阈值max_c1_upper=max_c1*0.98,第一下限列分割像素个数阈值max_c1_lower=max_c1*0.96,第二上限列分割像素个数阈值max_c2_upper=max_c2*0.98,第二下限列分割像素个数阈值max_c2_lower=max_c2*0.96。
根据本发明实施例的第三方面,提供一种用于图像的二维码区域分割方法,包括:获取含有二维码的二值化图像;通过任一前述二维码边界检测方法对所述二值化图像执行X方向的投影,获取所述二维码在X方向上的第一边界行号bound_x_1和第二边界行号bound_x_2;通过任一前述二维码边界检测方法对所述二值化图像执行Y方向的投影,获取所述二维码在Y方向上的第一边界列号bound_y_1和第二边界列号bound_y_2;根据所述第一边界行号bound_x_1和第二边界行号bound_x_2以及第一边界列号bound_y_1和第二边界列号bound_y_2,获得所述二维码所在的图像区域。
根据本发明实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,其中,所述程序指令被处理器执行时实现任一所述用于图像的二维码边界检测方法的步骤。
根据本发明实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,其中,所述程序指令被处理器执行时实现任一所述用于图像的二维码边界检测方法的步骤。
根据本发明实施例的第五方面,提供一种电子设备,包括:处理器、存储器、通信元件和通信总线,所述处理器、所述存储器和所述通信元件通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行任一所述用于图像的二维码边界检测方法对应的操作。
根据本发明实施例提供的用于图像的二维码边界检测方案,能够使用已有的硬件模块快速地计算获得二值化图像中二维码在X方向上的两个边界行号和在Y方向上的两个边界列号。此外,由于在步骤S14和步骤S16,并行地执行相应的运算,因此进一步地提高了二维码边界的检测效率,并且能够适应高品质图像的处理需求。
根据本发明实施例提供的用于图像的二维码区域分割方案,由于使用了前述通过已有硬件模块实现的二维码边界检测方法对经过二值化处理的图像分别进行X方向的投影和Y方向的投影,快速地计算获得二维码在X方向上的两个边界行号以及二维码在Y方向上的两个边界列号,因此能够快速地从含有二维码的图像获得二维码所在的图像区域,并且能够适应高品质图像的处理需求。
附图说明
图1是示出根据本发明一些实施例的用于图像的二维码边界检测方法的流程图;
图2是示出根据本发明另一些实施例的用于图像的二维码边界检测方法的流程图;
图3是示出根据本发明一些实施例的图1步骤S161中的用于第一行均值分区rf1的遍历处理流程图;
图4是示出根据本发明一些实施例的用于图像的二维码区域分割方法的流程图;
图5是示出根据本发明实施例的电子设备的结构示意图。
具体实施方式
下面结合附图详细描述本发明实施例的示例性实施例。
在本申请中,“多个”指两个或两个以上,“至少一个”指一个、两个或两个以上。对于本申请中提及的任一部件、数据或结构,在没有明确限定一个的情况下,可理解为一个或多个。
根据本发明的总体发明构思,通过已有的硬件模块对经过二值化处理的图像分别进行X方向的投影和Y方向的投影,获得二维码在X方向上的两个边界行号以及二维码在Y方向上的两个边界列号,再根据二维码在X方向上的两个边界行号以及二维码在Y方向上的两个边界列号,获得所述二维码所在的图像区域,以对图像进行切割,获得二维码图像区域。
这里,将二值化图像在X方向排列的像素集合称为行,将二值化图像在Y方向排列的像素集合称为列。
图1是示出根据本发明一些实施例的用于图像的二维码边界检测方法的流程图。该二维码边界检测方法用于对二值化图像进行X方向的投影,以获得二维码在X方向上的两个边界行号。
参照图1,在步骤S11,通过DMA逐行地遍历含有二维码的二值化图像,将所述二值化图像的各行含像素值为0的像素个数顺序写入第一RAM,并且求得每行含像素值为0的平均行像素个数。
这里,可通过DMA(直接内存存取)电路模块逐行地读取含有二维码的二值化图像的图像像素。其中,对于每行图像像素,可每次读取一定数量的图像像素,分批次地进行读取,而无需占用处理器资源。
使用第一RAM来存储各行包含的像素值为0(即黑色像素)的像素个数。具体地,从行号0开始逐行地遍历二值化图像,在遍历二值化图像任一行的过程中,可使用计数器来对当前遍历的行中包含像素值为0的像素个数进行计数,并且将该行包含像素值为0的像素个数写入第一RAM。由此,当完成二值化图像的遍历后,第一RAM中存储有从行号0到最后一行各自包含像素值为0的像素个数,第一RAM的内部逻辑地址分别对应于二值化图像的各个行号,以便于各行包含像素值为0的像素个数的读取。此后,使用加法器将第一RAM中存储的像素个数相加获得二值化图像包含像素值为0的总像素个数,使用除法器将该总像素个数与总的行数相除,求得该二值化图像的每行含像素值为0的平均行像素个数。该平均行像素个数为二值化图像在X方向上的平均投影值。
在步骤S12,遍历第一RAM,将第一RAM中的像素个数读出值小于所述平均行像素个数的行号值累计计入第一触发器,对像素个数读出值小于所述平均行像素个数的行数进行计数,并且通过除法器将所述第一触发器中累计的行号值与经过计数的行数相除,得到分割行号平均值。
具体地,在遍历第一RAM的过程中,如果像素个数读出值小于所述平均行像素个数,则将该像素个数读出值对应的行号与第一触发器已有的行号值累加,计入第一触发器,并且使用计数器对像素个数读出值小于所述平均行像素个数的行数进行计数。由此,获得像素个数读出值小于所述平均行像素个数的行号值以及行的个数。此后,通过除法器将所述第一触发器中累计的行号值与所述行数相除,得到分割行号平均值。该分割行号平均值对应的行号必然处于二维码图像区域中。
也就是说,在该步骤,先找到较平均行像素个数(X方向上的平均投影值)小的投影像素点的位置和数量,然后与累计的行号值相除得到平均位置点,即为“分割行号平均值”。
在步骤S13,以所述二值化图像的中心行为第一行分界点将所述第一RAM分为两个行等分区re1和re2,并行地遍历行等分区re1和re2,分别将两个所述行等分区内每行含像素值为0的最大行像素个数max_re1和max_re2锁存到寄存器中,其中,最大行像素个数max_re1与第一行等分区re1对应,最大行像素个数max_re2与第二行等分区re2对应。
这里,处于行中心的行为中心行,以该中心行作为第一行分界点,将第一RAM分为两个行等分区,第一行等分区re1和第二行等分区re2,第一行等分区re1和第二行等分区re2分别与二值化图像中的相应图像分区对应。例如,如果二值化图像包含3600行图像像素,则以中心行1900作为第一行分界点,将第一RAM分为两个行等分区re1和re2。
此后,并行地遍历该两个行等分区,获得两个所述行等分区内每行含像素值为0的最大行像素个数max_re1和max_re2,将max_re1和max_re2锁存到寄存器中。
在步骤S14,通过两个乘法器并行地计算第一行等分区re1的第一上限行分割像素个数阈值max_re1_upper和第一下限行分割像素个数阈值max_re1_lower。
第一上限行分割像素个数阈值max_re1_upper和第一下限行分割像素个数阈值max_re1_lower用于大致圈定第一行等分区re1的二维码区域边界。由于在二维码图像的边界处,黑色像素相对较多,因此通过计算这两个分割像素个数阈值(max_re1_upper和max_re1_lower)来大致圈定横向的边界。第一上限行分割像素个数阈值max_re1_upper和第一下限行分割像素个数阈值max_re1_lower是通过大量测试得到的经验值,例如,可如下设置这两个值:max_re1_upper=max_re1*0.98,max_re1_lower=max_re1*0.96。
通过前述处理,计算获得对应于第一行等分区re1的两个行分割像素个数阈值。
另一方面,在步骤S14,通过所述两个乘法器并行地计算第二行等分区re2的第二上限行分割像素个数阈值max_re2_upper和第二下限行分割像素个数阈值max_re2_lower。
同理,其中,第二上限行分割像素个数阈值max_re2_upper和第二下限行分割像素个数阈值max_re2_lower用于大致圈定第二行等分区re2的二维码区域边界。例如,可如下设置这两个值:max_re2_upper=max_re2*0.98,max_re2_lower=max_re2*0.96。
通过前述处理,计算获得对应于第二行等分区re2的两个行分割像素个数阈值。
在步骤S15,以所述分割行号平均值为第二行分界点,将所述第一RAM分为第一行均值分区rf1和第二行均值分区rf2。第一行均值分区rf1和第二行均值分区rf2分别与分别与二值化图像中的相应图像分区对应。
在步骤S16,并行地执行步骤S161和S162的处理。
其中,在步骤S161,顺序地遍历所述第一RAM的第一行均值分区rf1,根据所述第一上限行分割像素个数阈值max_re1_upper和第一下限行分割像素个数阈值max_re1_lower计算含有所述二维码的区域的X方向的第一边界行号阈值thres_x_1,并且逆序地遍历所述第一行均值分区rf1,将首个大于所述第一边界行号阈值thres_x_1的像素个数读出值对应的行号确定为X方向的第一边界行号bound_x_1。
该第一边界行号bound_x_1为对应于低行号的第一行均值分区rf1中的二维码边界行。
例如,顺序地遍历所述第一RAM的第一行均值分区rf1,根据所述第一上限行分割像素个数阈值max_re1_upper和第一下限行分割像素个数阈值max_re1_lower计算含有所述二维码的区域的X方向的第一边界行号阈值thres_x_1可包括:
在遍历所述第一行均值分区rf1的过程中,累计所述第一行均值分区rf1的像素个数读出值大于所述第一上限行分割像素个数阈值max_re1_upper的行数,将满足以下条件的像素个数读出值swidth1累计到锁存器X_feng1中,并且将计数器X_num1的值递增,直到完成所述第一行均值分区rf1的遍历为止:所述累计的行数小于第一黑像素密集行数阈值comp_value1且像素个数读出值swidth1大于max_re1_lower,或者所述累计的行数大于等于第一黑像素密集行数阈值comp_value1且max_re1_lower<swidth1<max_re1_upper;
通过除法器将锁存器X_feng1的值除以计数器X_num1的值,得到含有所述二维码的区域的X方向的第一边界行号阈值thres_x_1。
图3示出了前述遍历第一行均值分区rf1的示例性处理流程。参照图3,从第一行均值分区rf1中与行号0对应的像素个数开始读取,直到累计行号达到分割行号平均值为止。其中,每读取与行号i对应的像素个数读出值swidth1,先判断该像素个数读出值swidth1是否大于max_re1_upper;如果像素个数读出值swidth1大于max_re1_upper,则计数器num_1累计加1。此后,判断num_1是否小于第一黑像素密集行数阈值comp_value1。在num_1未达到第一黑像素密集行数阈值comp_value1时,将大于max_re1_lower的像素个数读出值swidth1累计到锁存器X_feng1中,并且将计数器X_num1的值加1;在num_1已达到第一黑像素密集行数阈值comp_value1时,将大于max_re1_lower且小于max_re1_upper的像素个数读出值swidth1累计到锁存器X_feng1中,并且将计数器X_num1的值加1。同理,在步骤S162,顺序地遍历所述第一RAM的第二行均值分区rf2,根据所述第二上限行分割像素个数阈值max_re2_upper和第二下限行分割像素个数阈值max_re2_lower计算含有所述二维码的区域的X方向的第二边界行号阈值thres_x_2,并且顺序地遍历所述第二行均值分区rf2,将首个大于所述第二边界行号阈值thres_x_2的像素个数读出值对应的行号确定为X方向的第二边界行号bound_x_2。
类似地,该第二边界行号bound_x_2为对应于高行号的第二行均值分区rf2中的二维码边界行。
例如,顺序地遍历所述第一RAM的第二行均值分区rf2,根据所述第二上限行分割像素个数阈值max_re2_upper和第二下限行分割像素个数阈值max_re2_lower计算含有所述二维码的区域的X方向的第二边界行号阈值thres_x_2,包括:
在遍历所述第二行均值分区rf2的过程中,累计所述第二行均值分区rf2的像素个数读出值大于所述第二上限行分割像素个数阈值max_re2_upper的行数,将满足以下条件的像素个数读出值swidth2累计到锁存器X_feng2中,并且将计数器X_num2的值递增,直到完成所述第二行均值分区rf2的遍历为止:所述累计的行数小于第二黑像素密集行数阈值comp_value2且像素个数读出值swidth2大于max_re2_lower,或者所述累计的行数大于等于第二黑像素密集行数阈值comp_value2且max_re2_lower<swidth2<max_re2_upper;
通过除法器将锁存器X_feng2的值除以计数器X_num2的值,得到含有所述二维码的区域的X方向的第二边界行号阈值thres_x_2。
同理,第二行均值分区rf2的遍历处理与前述第一行均值分区rf1的遍历处理类似,在此不予赘述。
通过前述步骤S11~S16的处理,能够使用已有的硬件模块快速地计算获得二值化图像中二维码在X方向上的两个边界行号。此外,由于在步骤S14和步骤S16,并行地执行相应的运算,因此进一步地提高了二维码边界的检测效率,并且能够适应高品质图像的处理需求。
图2是示出根据本发明另一些实施例的用于图像的二维码边界检测方法的流程图。该二维码边界检测方法用于对二值化图像进行Y方向的投影,以获得二维码在Y方向上的两个边界列号。
对二值化图像进行Y方向的投影的处理从原理和处理方式上与前述图1示出的对二值化图像进行X方向的投影的处理类似,在此不做扩展说明。
参照图2,在步骤S21,通过DMA逐列地遍历含有二维码的二值化图像,将所述二值化图像的各列含像素值为0的像素个数顺序写入第二RAM,并且求得每列含像素值为0的平均列像素个数。
在步骤S22,遍历第二RAM,将第二RAM中的像素个数读出值小于所述平均列像素个数的列号数累计计入第二触发器,对像素个数读出值小于所述平均列像素个数的列数进行计数,并且通过除法器将所述第二触发器中累计的列号数与计数的列数相除,得到分割列号平均值。
在步骤S23,以所述二值化图像的中心列为第一列分界点将所述第一RAM分为两个列等分区c1和c2,并行地遍历列等分区c1和c2,分别将两个所述列等分区内每列含像素值为0的最大列像素个数max_c1和max_c2锁存到寄存器中,其中,最大列像素个数max_c1与第一列等分区c1对应,最大列像素个数max_c2与第二列等分区c2对应。类似地,第一列等分区c1和第二列等分区c2分别与二值化图像中的相应图像分区对应。
在步骤S24,通过两个乘法器并行地计算第一列等分区c1的第一上限列分割像素个数阈值max_c1_upper和第一下限列分割像素个数阈值max_c1_lower。
例如,可将该两个阈值设置为,max_c1_upper=max_c1*0.98,max_c1_lower=max_c1*0.96。
通过所述两个乘法器并行地计算第二列等分区c2的第二上限列分割像素个数阈值max_c2_upper和第二下限列分割像素个数阈值max_c2_lower。
例如,可将该两个阈值设置为,max_c2_upper=max_c2*0.98,max_c2_lower=max_c2*0.96。
在步骤S25,以所述分割列号平均值为第二列分界点,将所述第一RAM分为第一列均值分区cf1和第二列均值分区cf2。第一列均值分区cf1和第二列均值分区cf2分别与二值化图像中的相应图像分区对应。
在步骤S26,并行地执行步骤S261和S262的处理。
在步骤S261,顺序地遍历所述第二RAM的第一列均值分区cf1,根据所述第一上限列分割像素个数阈值max_c1_upper和第一下限列分割像素个数阈值max_c1_lower计算含有所述二维码的区域的Y方向的第一边界列号阈值thres_y_1,并且逆序地遍历所述第一列均值分区cf1,将首个大于所述第一边界列号阈值thres_y_1的像素个数读出值对应的列号确定为Y方向的第一边界列号bound_y_1。
例如,顺序地遍历所述第二RAM的第一列均值分区cf1,根据所述第一上限列分割像素个数阈值max_c1_upper和第一下限列分割像素个数阈值max_c1_lower计算含有所述二维码的区域的Y方向的第一边界列号阈值thres_y_1可包括:
在遍历所述第一列均值分区cf1的过程中,累计所述第一列均值分区cf1的像素个数读出值大于所述第一上限列分割像素个数阈值max_c1_upper的列数,将满足以下条件的像素个数读出值swidth3累计到锁存器Y_feng1中,并且将计数器Y_num1的值递增,直到完成所述第一列均值分区cf1的遍历为止:累计的列数小于第一黑像素密集列数阈值comp_value3且像素个数读出值swidth3大于max_c1_lower,或者累计的列数大于等于第一黑像素密集列数阈值comp_value3且max_c1_lower<swidth3<max_c1_upper;
通过除法器将锁存器Y_feng1的值除以计数器Y_num1的值,得到含有所述二维码的区域的Y方向的第一边界列号阈值thres_y_1。
在步骤S262,顺序地遍历所述第二RAM的第二列均值分区cf2,根据所述第二上限列分割像素个数阈值max_c2_upper和第二下限列分割像素个数阈值max_c2_lower计算含有所述二维码的区域的Y方向的第二边界列号阈值thres_y_2,并且顺序地遍历所述第二列均值分区cf2,将首个大于所述第二边界列号阈值的像素个数读出值对应的列号确定为Y方向的第二边界列号bound_y_2。
例如,顺序地遍历所述第二RAM的第二列均值分区cf2,根据所述第二上限列分割像素个数阈值max_c2_upper和第二下限列分割像素个数阈值max_c2_lower计算含有所述二维码的区域的Y方向的第二边界列号阈值thres_y_2可包括:
在遍历所述第二列均值分区cf2的过程中,累计所述第二列均值分区cf2的像素个数读出值大于所述第二上限列分割像素个数阈值max_c2_upper的列数,将满足以下条件的像素个数读出值swidth4累计到锁存器Y_feng2中,并且将计数器Y_num2的值递增,直到完成所述第二列均值分区cf2的遍历为止:累计的列数小于第二黑像素密集列数阈值comp_value4且像素个数读出值swidth4大于max_c2_lower,或者累计的列数大于等于第二黑像素密集列数阈值comp_value4且max_c2_lower<swidth2<max_c2_upper;
通过除法器将锁存器Y_feng2的值除以计数器Y_num2的值,得到含有所述二维码的区域的Y方向的第二边界列号阈值thres_y_2。
通过前述步骤S21~S26的处理,能够使用已有的硬件模块快速地计算获得二值化图像中二维码在Y方向上的两个边界列号。此外,由于在步骤S24和步骤S26,并行地执行相应的运算,因此进一步地提高了二维码边界的检测效率,并且能够适应高品质图像的处理需求。
图4是示出根据本发明一些实施例的用于图像的二维码区域分割方法的流程图。
参照图4,在步骤S41,获取含有二维码的二值化图像。
可通过对原始的含有二维码的图像进行二值化处理获得该二值化图像,也可读取已经过二值化处理的二值化图像。
此后,可并行地、顺序地或逆序地执行步骤S42和S43的处理。
在步骤S42,通过如图1示出的二维码边界检测方法对所述二值化图像执行X方向的投影,获取所述二维码在X方向上的第一边界行号bound_x_1和第二边界行号bound_x_2。
在步骤S43,通过如图2示出的二维码边界检测方法对所述二值化图像执行Y方向的投影,获取所述二维码在Y方向上的第一边界列号bound_y_1和第二边界列号bound_y_2。
在步骤S44,根据所述第一边界行号bound_x_1和第二边界行号bound_x_2以及第一边界列号bound_y_1和第二边界列号bound_y_2,获得所述二维码所在的图像区域。
例如,可根据第一边界行号bound_x_1和第二边界行号bound_x_2获得第一切割线,根据第一边界列号bound_y_1和第二边界列号bound_y_2获得第二切割线,根据第一边界行号bound_x_1和第一边界列号bound_y_1获得第三切割线,并且根据第二边界行号bound_x_2和第二边界列号bound_y_2获得第四切割线。这四条切割线圈出的图像区域为二维码所在的图像区域。
此后,可根据前述四条切割线对二值化图像或原始的图像进行分割,获得二维码图像。
由于使用了前述通过已有硬件模块实现的二维码边界检测方法对经过二值化处理的图像分别进行X方向的投影和Y方向的投影,快速地计算获得二维码在X方向上的两个边界行号以及二维码在Y方向上的两个边界列号,因此能够快速地从含有二维码的图像获得二维码所在的图像区域,并且能够适应高品质图像的处理需求。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序指令,其中,所述程序指令被处理器执行时实现如图1所示的用于图像的二维码边界检测方法的步骤。本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序指令,其中,所述程序指令被处理器执行时实现如图2所示的用于图像的二维码边界检测方法的步骤。
图5是示出根据本发明实施例的电子设备的结构示意图。
本发明实施例还提供了一种电子设备,例如可以是移动终端、个人计算机(PC)、平板电脑、服务器等。下面参考图5,其示出了适于用来实现本发明实施例的终端设备或服务器的电子设备500的结构示意图。
如图5所示,电子设备500包括一个或多个处理器、通信元件等,所述一个或多个处理器例如:一个或多个中央处理单元(CPU)501,和/或一个或多个图像处理器(GPU)513等,处理器可以根据存储在只读存储器(ROM)502中的可执行指令或者从第一存储部分508加载到随机访问存储器(RAM)503中的可执行指令而执行各种适当的动作和处理。通信元件包括通信组件512和通信接口509。其中,通信组件512可包括但不限于网卡,所述网卡可包括但不限于IB(Infiniband)网卡,通信接口509包括诸如LAN卡、调制解调器等的网络接口卡的通信接口,通信接口509经由诸如因特网的网络执行通信处理。
处理器可与只读存储器502和/或随机访问存储器530中通信以执行可执行指令,通过总线504与通信组件512相连、并经通信组件512与其他目标设备通信,从而完成本发明实施例提供的任一项方法对应的操作。
例如,S11:通过DMA逐行地遍历含有二维码的二值化图像,将所述二值化图像的各行含像素值为0的像素个数顺序写入第一RAM,并且求得每行含像素值为0的平均行像素个数;S12:遍历第一RAM,将第一RAM中的像素个数读出值小于所述平均行像素个数的行号值累计计入第一触发器,对像素个数读出值小于所述平均行像素个数的行数进行计数,并且通过除法器将所述第一触发器中累计的行号值与计数的行数相除,得到分割行号平均值;S13:以所述二值化图像的中心行为第一行分界点将所述第一RAM分为两个行等分区re1和re2,并行地遍历行等分区re1和re2,分别将两个所述行等分区内每行含像素值为0的最大行像素个数max_re1和max_re2锁存到寄存器中,其中,最大行像素个数max_re1与第一行等分区re1对应,最大行像素个数max_re2与第二行等分区re2对应;S14:通过两个乘法器并行地计算第一行等分区re1的第一上限行分割像素个数阈值max_re1_upper和第一下限行分割像素个数阈值max_re1_lower;通过所述两个乘法器并行地计算第二行等分区re2的第二上限行分割像素个数阈值max_re2_upper和第二下限行分割像素个数阈值max_re2_lower;S15:以所述分割行号平均值为第二行分界点,将所述第一RAM分为第一行均值分区rf1和第二行均值分区rf2;S16:并行地执行以下处理:S161:顺序地遍历所述第一RAM的第一行均值分区rf1,根据所述第一上限行分割像素个数阈值max_re1_upper和第一下限行分割像素个数阈值max_re1_lower计算含有所述二维码的区域的X方向的第一边界行号阈值thres_x_1,并且逆序地遍历所述第一行均值分区rf1,将首个大于所述第一边界行号阈值thres_x_1的像素个数读出值对应的行号确定为X方向的第一边界行号bound_x_1;S162:顺序地遍历所述第一RAM的第二行均值分区rf2,根据所述第二上限行分割像素个数阈值max_re2_upper和第二下限行分割像素个数阈值max_re2_lower计算含有所述二维码的区域的X方向的第二边界行号阈值thres_x_2,并且顺序地遍历所述第二行均值分区rf2,将首个大于所述第二边界行号阈值thres_x_2的像素个数读出值对应的行号确定为X方向的第二边界行号bound_x_2。
再例如,S21:通过DMA逐列地遍历含有二维码的二值化图像,将所述二值化图像的各列含像素值为0的像素个数顺序写入第二RAM,并且求得每列含像素值为0的平均列像素个数;S22:遍历第二RAM,将第二RAM中的像素个数读出值小于所述平均列像素个数的列号数累计计入第二触发器,对像素个数读出值小于所述平均列像素个数的列数进行计数,并且通过除法器将所述第二触发器中累计的列号数与累计的列数相除,得到分割列号平均值;S23:以所述二值化图像的中心列为第一列分界点将所述第一RAM分为两个列等分区c1和c2,并行地遍历列等分区c1和c2,分别将两个所述列等分区内每列含像素值为0的最大列像素个数max_c1和max_c2锁存到寄存器中,其中,最大列像素个数max_c1与第一列等分区c1对应,最大列像素个数max_c2与第二列等分区c2对应;S24:通过两个乘法器并行地计算第一列等分区c1的第一上限列分割像素个数阈值max_c1_upper和第一下限列分割像素个数阈值max_c1_lower;通过所述两个乘法器并行地计算第二列等分区c2的第二上限列分割像素个数阈值max_c2_upper和第二下限列分割像素个数阈值max_c2_lower;S25:以所述分割列号平均值为第二列分界点,将所述第一RAM分为第一列均值分区cf1和第二列均值分区cf2;S26:并行地执行以下处理:S261:顺序地遍历所述第二RAM的第一列均值分区cf1,根据所述第一上限列分割像素个数阈值max_c1_upper和第一下限列分割像素个数阈值max_c1_lower计算含有所述二维码的区域的Y方向的第一边界列号阈值thres_y_1,并且逆序地遍历所述第一列均值分区cf1,将首个大于所述第一边界列号阈值thres_y_1的像素个数读出值对应的列号确定为Y方向的第一边界列号bound_y_1;S262:顺序地遍历所述第二RAM的第二列均值分区cf2,根据所述第二上限列分割像素个数阈值max_c2_upper和第二下限列分割像素个数阈值max_c2_lower计算含有所述二维码的区域的Y方向的第二边界列号阈值thres_y_2,并且顺序地遍历所述第二列均值分区cf2,将首个大于所述第二边界列号阈值的像素个数读出值对应的列号确定为Y方向的第二边界列号bound_y_2。
此外,在RAM 503中,还可存储有装置操作所需的各种程序和数据。CPU 501、ROM502以及RAM 503通过总线504彼此相连。在有RAM 503的情况下,ROM 502为可选模块。RAM503存储可执行指令,或在运行时向ROM 502中写入可执行指令,可执行指令使处理器501执行上述通信方法对应的操作。输入/输出(I/O)接口505也连接至总线504。通信组件512可以集成设置,也可以设置为具有多个子模块(例如多个IB网卡),并在总线链接上。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信接口509。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
需要说明的是,如图5所示的架构仅为一种可选实现方式,在具体实践过程中,可根据实际需要对上述图5的部件数量和类型进行选择、删减、增加或替换;在不同功能部件设置上,也可采用分离设置或集成设置等实现方式,例如GPU和CPU可分离设置或者可将GPU集成在CPU上,通信组件512可分离设置,也可集成设置在CPU或GPU上,等等。这些可替换的实施方式均落入本发明的保护范围。
特别地,根据本发明实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,计算机程序包含用于执行流程图所示的方法的程序代码,程序代码可包括对应执行本发明实施例提供的方法步骤对应的指令。在这样的实施例中,该计算机程序可以通过通信元件从网络上被下载和安装,和/或从第一可拆卸介质511被安装。在该计算机程序被第一中央处理单元(CPU)501执行时,执行本发明实施例的方法中限定的上述功能。
需要指出,根据实施的需要,可将本申请中描述的各个部件/步骤拆分为更多部件/步骤,也可将两组或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。
可能以许多方式来实现本发明的方法和设备。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明实施例的方法和设备。用于方法的步骤的上述顺序仅是为了进行说明,本发明实施例的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明实施例的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
本发明实施例的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
Claims (10)
1.一种用于图像的二维码边界检测方法,包括:
S11:通过DMA逐行地遍历含有二维码的二值化图像,将所述二值化图像的各行含像素值为0的像素个数顺序写入第一RAM,并且求得每行含像素值为0的平均行像素个数;
S12:遍历第一RAM,将第一RAM中的像素个数读出值小于所述平均行像素个数的行号值累计计入第一触发器,对像素个数读出值小于所述平均行像素个数的行数进行计数,并且通过除法器将所述第一触发器中累计的行号值与所述计数的行数相除,得到分割行号平均值;
S13:以所述二值化图像的中心行为第一行分界点将所述第一RAM分为两个行等分区re1和re2,并行地遍历行等分区re1和re2,分别将两个所述行等分区内每行含像素值为0的最大行像素个数max_re1和max_re2锁存到寄存器中,其中,最大行像素个数max_re1与第一行等分区re1对应,最大行像素个数max_re2与第二行等分区re2对应;
S14:通过两个乘法器并行地计算第一行等分区re1的第一上限行分割像素个数阈值max_re1_upper和第一下限行分割像素个数阈值max_re1_lower;
通过所述两个乘法器并行地计算第二行等分区re2的第二上限行分割像素个数阈值max_re2_upper和第二下限行分割像素个数阈值max_re2_lower;
S15:以所述分割行号平均值为第二行分界点,将所述第一RAM分为第一行均值分区rf1和第二行均值分区rf2;
S16:并行地执行以下处理:
S161:顺序地遍历所述第一RAM的第一行均值分区rf1,根据所述第一上限行分割像素个数阈值max_re1_upper和第一下限行分割像素个数阈值max_re1_lower计算含有所述二维码的区域的X方向的第一边界行号阈值thres_x_1,并且逆序地遍历所述第一行均值分区rf1,将首个大于所述第一边界行号阈值thres_x_1的像素个数读出值对应的行号确定为X方向的第一边界行号bound_x_1;
S162:顺序地遍历所述第一RAM的第二行均值分区rf2,根据所述第二上限行分割像素个数阈值max_re2_upper和第二下限行分割像素个数阈值max_re2_lower计算含有所述二维码的区域的X方向的第二边界行号阈值thres_x_2,并且顺序地遍历所述第二行均值分区rf2,将首个大于所述第二边界行号阈值thres_x_2的像素个数读出值对应的行号确定为X方向的第二边界行号bound_x_2,
或者,
S21:通过DMA逐列地遍历含有二维码的二值化图像,将所述二值化图像的各列含像素值为0的像素个数顺序写入第二RAM,并且求得每列含像素值为0的平均列像素个数;
S22:遍历第二RAM,将第二RAM中的像素个数读出值小于所述平均列像素个数的列号数累计计入第二触发器,对像素个数读出值小于所述平均列像素个数的列数进行计数,并且通过除法器将所述第二触发器中累计的列号数与所述计数的列数相除,得到分割列号平均值;
S23:以所述二值化图像的中心列为第一列分界点将所述第一RAM分为两个列等分区c1和c2,并行地遍历列等分区c1和c2,分别将两个所述列等分区内每列含像素值为0的最大列像素个数max_c1和max_c2锁存到寄存器中,其中,最大列像素个数max_c1与第一列等分区c1对应,最大列像素个数max_c2与第二列等分区c2对应;
S24:通过两个乘法器并行地计算第一列等分区c1的第一上限列分割像素个数阈值max_c1_upper和第一下限列分割像素个数阈值max_c1_lower;
通过所述两个乘法器并行地计算第二列等分区c2的第二上限列分割像素个数阈值max_c2_upper和第二下限列分割像素个数阈值max_c2_lower;
S25:以所述分割列号平均值为第二列分界点,将所述第一RAM分为第一列均值分区cf1和第二列均值分区cf2;
S26:并行地执行以下处理:
S261:顺序地遍历所述第二RAM的第一列均值分区cf1,根据所述第一上限列分割像素个数阈值max_c1_upper和第一下限列分割像素个数阈值max_c1_lower计算含有所述二维码的区域的Y方向的第一边界列号阈值thres_y_1,并且逆序地遍历所述第一列均值分区cf1,将首个大于所述第一边界列号阈值thres_y_1的像素个数读出值对应的列号确定为Y方向的第一边界列号bound_y_1;
S262:顺序地遍历所述第二RAM的第二列均值分区cf2,根据所述第二上限列分割像素个数阈值max_c2_upper和第二下限列分割像素个数阈值max_c2_lower计算含有所述二维码的区域的Y方向的第二边界列号阈值thres_y_2,并且顺序地遍历所述第二列均值分区cf2,将首个大于所述第二边界列号阈值的像素个数读出值对应的列号确定为Y方向的第二边界列号bound_y_2。
2.根据权利要求1所述的方法,其中,所述顺序地遍历所述第一RAM的第一行均值分区rf1,根据所述第一上限行分割像素个数阈值max_re1_upper和第一下限行分割像素个数阈值max_re1_lower计算含有所述二维码的区域的X方向的第一边界行号阈值thres_x_1,包括:
在遍历所述第一行均值分区rf1的过程中,累计所述第一行均值分区rf1的像素个数读出值大于所述第一上限行分割像素个数阈值max_re1_upper的行数,将满足以下条件的像素个数读出值swidth1累计到锁存器X_feng1中,并且将计数器X_num1的值递增,直到完成所述第一行均值分区rf1的遍历为止:所述累计的行数小于第一黑像素密集行数阈值comp_value1且像素个数读出值swidth1大于max_re1_lower,或者所述累计的行数大于等于第一黑像素密集行数阈值comp_value1且max_re1_lower<swidth1<max_re1_upper;
通过除法器将锁存器X_feng1的值除以计数器X_num1的值,得到含有所述二维码的区域的X方向的第一边界行号阈值thres_x_1。
3.根据权利要求1所述的方法,其中,所述顺序地遍历所述第一RAM的第二行均值分区rf2,根据所述第二上限行分割像素个数阈值max_re2_upper和第二下限行分割像素个数阈值max_re2_lower计算含有所述二维码的区域的X方向的第二边界行号阈值thres_x_2,包括:
在遍历所述第二行均值分区rf2的过程中,累计所述第二行均值分区rf2的像素个数读出值大于所述第二上限行分割像素个数阈值max_re2_upper的行数,将满足以下条件的像素个数读出值swidth2累计到锁存器X_feng2中,并且将计数器X_num2的值递增,直到累计的行数达到第二黑像素密集行数阈值comp_value2或者完成所述第二行均值分区rf2的遍历为止:所述累计的行数小于第二黑像素密集行数阈值comp_value2且像素个数读出值swidth2大于max_re2_lower,或者所述累计的行数大于等于第二黑像素密集行数阈值comp_value2且max_re2_lower<swidth2<max_re2_upper;
通过除法器将锁存器X_feng2的值除以计数器X_num2的值,得到含有所述二维码的区域的X方向的第二边界行号阈值thres_x_2。
4.根据权利要求1~3任一项所述的方法,其中,第一上限行分割像素个数阈值max_re1_upper=max_re1*0.98,第一下限行分割像素个数阈值max_re1_lower=max_re1*0.96,第二上限行分割像素个数阈值max_re2_upper=max_re2*0.98,第二下限行分割像素个数阈值max_re2_lower=max_re2*0.96。
5.根据权利要求1所述的方法,其中,所述顺序地遍历所述第二RAM的第一列均值分区cf1,根据所述第一上限列分割像素个数阈值max_c1_upper和第一下限列分割像素个数阈值max_c1_lower计算含有所述二维码的区域的Y方向的第一边界列号阈值thres_y_1,包括:
在遍历所述第一列均值分区cf1的过程中,累计所述第一列均值分区cf1的像素个数读出值大于所述第一上限列分割像素个数阈值max_c1_upper的列数,将满足以下条件的像素个数读出值swidth3累计到锁存器Y_feng1中,并且将计数器Y_num1的值递增,直到完成所述第一列均值分区cf1的遍历为止:累计的列数小于第一黑像素密集列数阈值comp_value3且像素个数读出值swidth3大于max_c1_lower,或者累计的列数大于等于第一黑像素密集列数阈值comp_value3且max_c1_lower<swidth3<max_c1_upper;
通过除法器将锁存器Y_feng1的值除以计数器Y_num1的值,得到含有所述二维码的区域的Y方向的第一边界列号阈值thres_y_1。
6.根据权利要求1所述的方法,其中,所述顺序地遍历所述第二RAM的第二列均值分区cf2,根据所述第二上限列分割像素个数阈值max_c2_upper和第二下限列分割像素个数阈值max_c2_lower计算含有所述二维码的区域的Y方向的第二边界列号阈值thres_y_2,包括:
在遍历所述第二列均值分区cf2的过程中,累计所述第二列均值分区cf2的像素个数读出值大于所述第二上限列分割像素个数阈值max_c2_upper的列数,将满足以下条件的像素个数读出值swidth4累计到锁存器Y_feng2中,并且将计数器Y_num2的值递增,直到完成所述第二列均值分区cf2的遍历为止:累计的列数小于第二黑像素密集列数阈值comp_value4且像素个数读出值swidth4大于max_c2_lower,或者累计的列数大于等于第二黑像素密集列数阈值comp_value4且max_c2_lower<swidth2<max_c2_upper;
通过除法器将锁存器Y_feng2的值除以计数器Y_num2的值,得到含有所述二维码的区域的Y方向的第二边界列号阈值thres_y_2。
7.根据权利要求5~6任一项所述的方法,其中,第一上限列分割像素个数阈值max_c1_upper=max_c1*0.98,第一下限列分割像素个数阈值max_c1_lower=max_c1*0.96,第二上限列分割像素个数阈值max_c2_upper=max_c2*0.98,第二下限列分割像素个数阈值max_c2_lower=max_c2*0.96。
8.一种用于图像的二维码区域分割方法,包括:
获取含有二维码的二值化图像;
通过如权利要求1~4任一项所述的二维码边界检测方法对所述二值化图像执行X方向的投影,获取所述二维码在X方向上的第一边界行号bound_x_1和第二边界行号bound_x_2;
通过如权利要求1或5~7任一项所述的二维码边界检测方法对所述二值化图像执行Y方向的投影,获取所述二维码在Y方向上的第一边界列号bound_y_1和第二边界列号bound_y_2;
根据所述第一边界行号bound_x_1和第二边界行号bound_x_2以及第一边界列号bound_y_1和第二边界列号bound_y_2,获得所述二维码所在的图像区域。
9.一种计算机可读存储介质,其上存储有计算机程序指令,其中,所述程序指令被处理器执行时实现权利要求1~7中任一项所述用于图像的二维码边界检测方法的步骤。
10.一种电子设备,包括:处理器、存储器、通信元件和通信总线,所述处理器、所述存储器和所述通信元件通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1~7任一项所述用于图像的二维码边界检测方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910209238.8A CN109948392B (zh) | 2019-03-19 | 2019-03-19 | 二维码边界检测方法、分割方法、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910209238.8A CN109948392B (zh) | 2019-03-19 | 2019-03-19 | 二维码边界检测方法、分割方法、存储介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109948392A CN109948392A (zh) | 2019-06-28 |
CN109948392B true CN109948392B (zh) | 2022-03-18 |
Family
ID=67010260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910209238.8A Active CN109948392B (zh) | 2019-03-19 | 2019-03-19 | 二维码边界检测方法、分割方法、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109948392B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009032202A (ja) * | 2007-07-30 | 2009-02-12 | Toshiba Tec Corp | 2次元コード読取装置及びその方法 |
CN102184378A (zh) * | 2011-04-27 | 2011-09-14 | 茂名职业技术学院 | 一种pdf417标准二维条码图像切割的办法 |
CN107437294A (zh) * | 2017-08-01 | 2017-12-05 | 深圳怡化电脑股份有限公司 | 一种字符分割方法、装置、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105069394B (zh) * | 2015-07-23 | 2017-10-10 | 福建联迪商用设备有限公司 | 二维码加权平均灰度法解码方法及系统 |
-
2019
- 2019-03-19 CN CN201910209238.8A patent/CN109948392B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009032202A (ja) * | 2007-07-30 | 2009-02-12 | Toshiba Tec Corp | 2次元コード読取装置及びその方法 |
CN102184378A (zh) * | 2011-04-27 | 2011-09-14 | 茂名职业技术学院 | 一种pdf417标准二维条码图像切割的办法 |
CN107437294A (zh) * | 2017-08-01 | 2017-12-05 | 深圳怡化电脑股份有限公司 | 一种字符分割方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109948392A (zh) | 2019-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lai et al. | Self-supervised learning for video correspondence flow | |
JP7026165B2 (ja) | テキスト認識方法及びテキスト認識装置、電子設備、記憶媒体 | |
Munoz-Mejias et al. | A low-complexity pre-processing system for restoring low-quality QR code images | |
CN110929626A (zh) | 确定库存货物件数的方法、仓库盘点方法、装置及设备 | |
CN115759148B (zh) | 图像处理方法、装置、计算机设备及计算机可读存储介质 | |
CN111047496A (zh) | 阈值确定方法、水印检测方法、装置和电子设备 | |
CN112163443A (zh) | 一种扫码方法、扫码装置及移动终端 | |
CN110765799A (zh) | 客户端扫码识别方法、装置、设备及存储介质 | |
US11995890B2 (en) | Method and apparatus for tensor processing | |
CN113129298B (zh) | 文本图像的清晰度识别方法 | |
CN114299030A (zh) | 物体检测模型处理方法、装置、设备及存储介质 | |
CN111797642B (zh) | 条形码识别方法及终端 | |
CN109948392B (zh) | 二维码边界检测方法、分割方法、存储介质和电子设备 | |
CN112200004A (zh) | 图像检测模型的训练方法、装置及终端设备 | |
CN110807342B (zh) | 条形码定位方法、装置、计算机设备和存储介质 | |
CN116306731A (zh) | 一种识别条形码的方法、装置、电子设备和存储介质 | |
CN113780278A (zh) | 一种识别车牌内容的方法、装置、电子设备以及存储介质 | |
CN113516738B (zh) | 一种动画处理方法、装置、存储介质及电子设备 | |
CN110569684B (zh) | 一种小容量缓存的图像二值化方法 | |
CN108388825B (zh) | 快速反应码搜寻方法和装置 | |
CN112906728A (zh) | 一种特征比对方法、装置及设备 | |
CN113496134A (zh) | 二维码定位方法、装置、设备及存储介质 | |
CN113761960B (zh) | 用于识别条形码的方法和装置 | |
CN113095211B (zh) | 一种图像处理方法、系统及电子设备 | |
CN108765259B (zh) | 一种基于gpu的高光谱图像ratgp和rosp并行优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |