CN104346597B - 一种qr码检测与校正提取方法及ip核 - Google Patents
一种qr码检测与校正提取方法及ip核 Download PDFInfo
- Publication number
- CN104346597B CN104346597B CN201410597217.5A CN201410597217A CN104346597B CN 104346597 B CN104346597 B CN 104346597B CN 201410597217 A CN201410597217 A CN 201410597217A CN 104346597 B CN104346597 B CN 104346597B
- Authority
- CN
- China
- Prior art keywords
- codes
- point
- image
- scanning
- counter
- 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.)
- Expired - Fee Related
Links
- 238000012937 correction Methods 0.000 title claims abstract description 54
- 238000001514 detection method Methods 0.000 title claims abstract description 53
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000000605 extraction Methods 0.000 claims abstract description 54
- 238000012545 processing Methods 0.000 claims abstract description 21
- 238000003860 storage Methods 0.000 claims abstract description 14
- 230000008569 process Effects 0.000 claims abstract description 11
- 230000004807 localization Effects 0.000 claims abstract description 10
- 238000012216 screening Methods 0.000 claims description 22
- 238000011897 real-time detection Methods 0.000 claims description 13
- 230000005540 biological transmission Effects 0.000 claims description 12
- 230000005055 memory storage Effects 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000004891 communication Methods 0.000 claims description 5
- 239000000284 extract Substances 0.000 claims description 5
- 238000007689 inspection Methods 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 3
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims 2
- 238000010408 sweeping Methods 0.000 claims 1
- 230000004044 response Effects 0.000 abstract description 7
- 238000006073 displacement reaction Methods 0.000 abstract description 4
- 230000008859 change Effects 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 description 7
- 238000013459 approach Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 239000004575 stone Substances 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- ATHVAWFAEPLPPQ-VRDBWYNSSA-N 1-stearoyl-2-oleoyl-sn-glycero-3-phosphocholine Chemical compound CCCCCCCCCCCCCCCCCC(=O)OC[C@H](COP([O-])(=O)OCC[N+](C)(C)C)OC(=O)CCCCCCC\C=C/CCCCCCCC ATHVAWFAEPLPPQ-VRDBWYNSSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007123 defense Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
Landscapes
- Image Processing (AREA)
Abstract
本发明涉及一种QR码检测与校正提取方法及IP核,是通过硬件电路直接对摄像头逐行、逐个像素输出的图像数据流进行QR码实时定位检测与QR码校正提取,而不需要拍照存储后才进行处理,可以极大地提高检测速度和识别率。该检测方法在QR码实时定位检测阶段是基于摄像头获取的相邻两帧图像中的二维码位置、形状等变化不大的基础上的,即在图像采集过程中二维码没有快速移动或形变的情况,处理一帧图像时依据的是前一帧图像得到的参数,在处理当前图像的同时更新相应的参数,为后一帧图像的处理提供依据。在QR码旋转校正与提取阶段,采用改进型CORDIC算法对QR码进行旋转校正和提取,用移位和加法代替乘除法,可以大大节省硬件资源。
Description
技术领域
本发明涉及条码识别技术领域,更具体地,涉及一种QR码检测与校正提取方法及IP核。
背景技术
随着信息技术的飞速发展,一维条码作为一种自动识别技术已经不能满足信息***的数据录入的要求,因此二维条码应运而生。二维条码技术具有信息密度大、纠错能力强、可表示多种信息、可加密、制作成本低等特点。常见的二维码码制有QR码、PDF417码、Code16K码、DM码等。
其中QR码(快速响应码)由于其信息容量大、纠错能力强、安全性高、成本低廉等特点,被广泛应用于国防军事、电子商务、交通物流等各个领域。因此如何快速准确地对二维码进行检测译码成为了国内外研究和开发的热点。目前,二维条码扫描解码技术主要有两种:一是软件解码,一是终端解码。软件解码广泛应用于移动应用,通过软件算法程序对二维条码进行解码,从而获取条码信息;终端解码广泛应用于仓储、物流、票务等领域,如二维码扫描手持终端、检票机、PDA等,使用二维条码解码终端对二维条码进行解码及数据通信。
传统的二维条码解码终端采用的是基于嵌入式平台的软件解码方案,使用嵌入式平台,通过采集并存储摄像模块的图像数据,利用处理器运行软件程序进行图像处理和解码运算。该方案研发难度低,研发周期短。然而,该解决方案受限于处理器运算性能及软件算法优化程度,存在处理速度慢、***功耗高、集成度低及生产成本高的缺陷,且该方案需要在拍摄到一帧图像后才能进行相应的图像处理和扫描译码,不具有实时性,当拍摄到的图像不理想时(如运动模糊等)需要复杂的算法运算才能检测到二维条码。在二维条码应用越来越广泛的大背景下,传统的软件解码方案显然满足不了二维条码发展的需求,限制了二维条码技术的发展。
在实际生活中,摄像头获取到的图像通常会有一定的偏转,因此要从偏转的图像中提取出端正的二维码图形,在硬件实现中,使用CORDIC流水线对图形图像进行旋转,可以极大地节省硬件资源。CORDIC算法最早是1959年由J.E.Volder提出的,该算法是采用一系列的移位和加法操作来近似计算三角函数、双曲线函数、指数、对数等基本函数的运算,非常适用于硬件实现。CORDIC算法的基本思想是通过一组级数收敛的角度来逼近目标角度,其中αi=arctan(2-i)。环形坐标旋转的CORDIC算法包括两种模式:旋转模式RM(Rotation Mode)和矢量模式VM(Vector Mode),RM模式用于给定旋转角度值和向量长度求解相应的正余弦值,即向量(xi,0)旋转β角度后的向量坐标(xo,yo),另外,给定一个向量qi(xi,yi)和旋转角度β可求出该向量旋转β角度后的向量qo(xo,yo),VM模式用于给定向量坐标求解向量长度及其与横坐标的夹角。
由于级数收敛到99.88,故其可表示的范围为(-99.88°,99.88°),不能覆盖到整个圆周。
IP核(Intellectual Property core)是采用硬件描述语言将一些在数字电路中常用的功能块设计成参数可修改的模块以供用户直接调用。随着FPGA的规模越来越大,设计复杂度越来越高,设计使用IP核是一个发展趋势。根据实现不同,IP核可分为IP软核、IP固核和IP硬核,IP软核采用硬件描述语言的形式描述功能块的行为,具有最高的灵活性和可移植性;IP硬核通过掩膜(MASK)的形式给出,具有最优的功耗、速度和集成度,但其与具体的物理实现有关,灵活性和可移植性最低;IP固核以网表的形式提供给用户,其性能介于软核和硬核之间。
发明内容
为了解决上述问题,本发明首先提出一种QR码检测与校正提取方法。该方法具有处理速度快、功耗低、集成度高的特点。
本发明的又一目的是提出一种QR码检测与校正提取IP核,通过一个主端口和一个从端口挂接在***总线上,CPU可通过从端口对IP核进行配置,通过对摄像头输出的图像数据流进行实时的图像预处理和QR码实时检测与QR码校正提取,同时可以选择将图像数据通过主端口存储到外部存储器中,以便CPU或DSP等对其进行其他处理。
为解决上述技术问题,本发明的技术方案为:
一种QR码检测与校正提取方法,通过硬件电路直接对摄像头逐行、逐个像素输出的图像数据流进行实时图像预处理和QR码实时定位检测,并采用改进型CORDIC算法对QR码进行旋转校正与提取,实现QR码的检测与校正提取。
所述QR码实时定位检测的实现方式如下:结合前后相邻两帧图像的扫描信息,实时获取当前图像中QR码的位置及尺寸信息,其主要过程包括了图像灰度化、图像二值化、图像行转列、行列扫描、扫描点筛选;
图像灰度化:将摄像头获取到的RGB图像转换成灰度图;
图像二值化:将转换后的灰度图根据一定的判断规则转换成黑白(0/1)的二值图像,将一帧图像分割成n*n的方块,计算出每个方块的灰度平均值,当下一帧图像数据流到来时,通过双线性插值算法计算出该像素点所对应的阈值并进行对比,从而判断该点为黑(0)还是为白(1),同时更新每个方块的灰度平均值,以便用于下一帧的图像二值化;
图像行转列:用于将按行传送的图像数据流转换成按列传输的数据流,供给后级列扫描黑白条纹满足1:1:3:1:1的点,同时为后级QR码图像提取作缓存;
行列扫描:按行扫描当前图像数据流黑白条纹宽度满足1:1:3:1:1的点,同时对图像行转列模块输出的图像数据流按列扫描前一帧图像数据流黑白条纹宽度满足1:1:3:1:1的点;使用5个初值为0的计数器,计数器1用于计数当前条纹的宽度,每当黑白条纹切换时,对5个计数器中的数值进行比较,判断其是否满足1:1:3:1:1的关系,若满足则记录该线段中点坐标值和此5条条纹的平均宽度值及中间条纹的颜色(0/1),比较后将前一个计数器的值赋值给后一个计数器,即计数器4的值赋值给计数器5,计数器3的值赋值给计数器4,以此类推,并将计数器1中的值置为1,继续扫描,直到所有的像素点都扫描完毕;该算法可以检测到图像黑白反转的情况下的QR码图形,并且在判断黑白条纹的宽度比例关系时,可以根据需要适当放宽和收紧比较标准,从而满足实际的应用需求;
扫描点筛选:该步骤是在两帧图像之间的场同步期间进行的,主要分成以下三步:行列扫描点合并,临近点合并,筛选满足等腰直角关系的点。
进一步的,所述扫描点筛选分三步:行列扫描点合并,临近点合并,筛选满足等腰直角关系的点,其具体方式为:
行列扫描合并:当一帧数据传送完毕时,行列扫描即完成,将行和列扫描得到的点的位置坐标、黑白条纹平均宽度值及中间条纹的颜色进行比对,若在误差允许范围内相等,则该点在行列扫描中均满足1:1:3:1:1关系;
临近点合并:由于图像本身的原因和前级设置的允许误差,导致行列扫描合并后的点分散在周围,故将临近范围内的点合并成一个点;
筛选满足等腰直角关系的点:将前级得到的点进行检测,按照排列组合的关系,检测每三个点之间在允许误差范围内是否满足等腰直角关系,一旦检测到满足等腰直角关系的点后即认为检测到QR码,并将检测到的点的相关信息按照顺序提供给后级。
进一步的,所述采用改进型CORDIC算法对QR码进行旋转校正与提取的具体实现方式为:在前级获得QR码的位置信息后,通过同一条改进型CORDIC算法流水线的不同模式分别计算QR码的旋转角度和对QR码进行校正提取;
首先采用矢量模式下的CORDIC改进算法模块计算出QR码的旋转角度,是在初始的流水线前端增加一级迭代角度为α-3=arctan(23)的流水级,使其能逼近0-360°内的任意旋转角度;然后采用旋转模式下的CORDIC改进算法模块提取出旋转校正后的QR码图像。
采用改进型CORDIC算法对QR码进行旋转校正与提取,在前级获得QR码的位置信息后,采用同一条改进型CORDIC算法流水线的不同模式分别计算QR码的旋转角度和对QR码进行校正提取;在传统的CORDIC算法的基础上,在初始的流水线前端增加一级迭代角度为α-3=arctan(23)的流水级,以扩展CORDIC可表示的角度范围,使其能逼近0-360°内的任意旋转角度;传统的CORDIC算法采用一个级数收敛的角度进行迭代逐次逼近所求的角度,迭代角度为αi=arctan(2-i),可知,CORDIC算法能表示的范围与精度与迭代次数有关,当i减小时,αi增大,可表示的范围增大,当i增大时,迭代角度αi减小,其可表示的精度越高,当i=0时,对应的角度为45°,i增加时,arctanαi逐渐减小,级数收敛到99.88,故其可表示的范围为(-99.88°,99.88°),由于180-99.88=80.12,而当i=-3时,α-3=arctan(23)*180/π=82.8750>80.12,并且82.8750<99.88°,因此可以增加一级i=-3的迭代以扩展旋转角度范围,且不会造成中间存在无法逼近的角度,这是因为的级数收敛值99.88,即当第一次旋转82.8750°后,可以由后面的迭代进行填充。
一种QR码检测与校正提取IP核,QR码检测与校正提取IP核的处理模块采用硬件描述语言实现,包括:
摄像头接口模块:用于配置摄像头,使其输出相应格式的图像数据,并对获取的原始图像数据进行格式转换,传送给后一级模块;
QR码检测提取模块:包括QR码实时检测模块、QR码旋转校正和提取模块;
所述QR码实时检测模块:是直接对摄像头接口模块获取到的图像数据流进行处理,包括图像灰度化、二值化模块、图像行转列模块、行列扫描模块、扫描点筛选模块;
所述QR码旋转校正和提取模块,是所述采用改进型CORDIC算法对QR码进行旋转校正与提取,具体实现方式为:在前级获得QR码的位置信息后,通过同一条改进型CORDIC算法流水线的不同模式分别计算QR码的旋转角度和对QR码进行校正提取;首先采用矢量模式下的CORDIC改进算法模块计算出QR码的旋转角度,是在初始的流水线前端增加一级迭代角度为α-3=arctan(23)的流水级,使其能逼近0-360°内的任意旋转角度;然后采用旋转模式下的CORDIC改进算法模块提取出旋转校正后的QR码图像;
总线接口:用于与***总线相互通信的接口,分为一个主端口和一个从端口;CPU通过从端口对IP核配置其内部寄存器,主端口用于通过***总线与外部存储器进行数据传输。
进一步的,所述图像二值化:用于将灰度图像数据流转换成二值图像数据流;将一帧图像分割成n*n的方块,计算出每个方块的灰度平均值,当下一帧图像数据流到来时,通过双线性插值算法计算出该像素点所对应的阈值并进行对比,从而判断该点为黑0或白1,同时更新每个方块的灰度平均值;
图像行转列模块:用于将按行传送的图像数据流转换成按列传输的数据流,供给后级列扫描黑白条纹满足1:1:3:1:1的点,同时为后级QR码图像提取作缓存;
行列扫描模块:分为行扫描和列扫描,行、列扫描的实现方式相同;其中行扫描是对当前帧图像的扫描;列扫描是对行转列输出的图像数据流进行扫描;行、列扫描的过程如下:使用5个初值为0的计数器,计数器1用于计数当前条纹的宽度,每当黑白条纹切换时,对5个计数器中的数值进行比较,判断其是否满足1:1:3:1:1的关系,若满足则记录该线段中点坐标值和此5条条纹的平均宽度值及中间条纹的颜色,其条纹的颜色为黑0或白1,比较后将前一个计数器的值赋值给后一个计数器,即计数器4的值赋值给计数器5,计数器3的值赋值给计数器4,以此类推,并将计数器1中的值置为1,继续扫描,直到所有的像素点都扫描完毕;
扫描点筛选模块:是在两帧图像之间的场同步期间进行的,主要包括以下三步:行列扫描点合并,临近点合并,筛选满足等腰直角关系的点;
其中行列扫描合并:当一帧数据传送完毕时,行列扫描即完成,将行和列扫描得到的点的位置坐标、黑白条纹平均宽度值及中间条纹的颜色进行比对,若在误差允许范围内相等,则该点在行列扫描中均满足1:1:3:1:1关系;
临近点合并:将临近范围内的点合并成一个点;
筛选满足等腰直角关系的点:将前级得到的点进行检测,按照排列组合的关系,检测每三个点之间在允许误差范围内是否满足等腰直角关系,一旦检测到满足等腰直角关系的点后即认为检测到QR码,并将检测到的点的相关信息按照顺序提供给后级。
进一步的,IP核还包括图像存储控制模块:在QR码硬件检测的同时,将图像数据通过主端口存储到外部存储器中;当图像质量较差或QR码扭曲变形,QR码检测IP核扫描到的位置探测图形中心点,但其个数小于3或没有满足等腰直角关系的组合时,向CPU发起一个中断请求,由CPU读取存储器中的图像数据进行更为复杂的运算处理。
与现有技术相比,本发明的有益效果为:
通过硬件电路直接对摄像头逐行、逐个像素输出的图像数据流进行实时QR码定位检测与QR码校正提取,而不需要拍照存储后才进行处理,可以极大地提高检测速度和识别率。本方法在QR码实时定位检测阶段是基于摄像头获取的相邻两帧图像中的二维码位置、形状等变化不大的基础上的,即在图像采集过程中二维码没有快速移动或形变的情况,处理一帧图像时依据的是前一帧图像得到的参数,在处理当前图像的同时更新相应的参数,为后一帧图像的处理提供依据。在QR码旋转校正与提取阶段,采用改进型CORDIC算法对QR码进行旋转校正和提取,用移位和加法代替乘除法,可以大大节省硬件资源。
依据本发明设计硬件IP软核,通过一个主端口和一个从端口挂接在***总线上,CPU可通过从端口对IP核进行配置,通过对摄像头输出的图像数据流进行实时的图像预处理和实时QR码检测与QR码校正提取,同时可以选择将图像数据通过主端口存储到外部存储器中,以便CPU或DSP等对其进行其他处理。
附图说明
图1为本发明的QR码快速检测提取算法流程图。
图2为本发明的QR码快速检测提取IP核结构图。
图3为QR码快速检测提取IP核的SOC***框图。
图4为改进型CORDIC算法的流水线。
具体实施方式
下面结合具体实施例对本发明作进一步的说明。以上参照附图说明了本发明的优选实施案例,但是只要不背离本发明的实质和范围,本领域的技术人员可以对其进行各种形式上的修改和变更,都属于本发明的保护范围。
本发明所提出的是一种QR码快速检测与校正提取算法,其包括QR码实时定位检测算法、QR码校正提取算法。
QR码实时检测算法:结合前后相邻两帧图像的扫描信息,实时获取当前图像中QR码的位置及尺寸信息,其主要包括了图像二值化、图像行转列、行列扫描、扫描点筛选;
QR码校正与提取算法:采用改进型CORDIC算法对QR码进行旋转校正与提取,在前级获得QR码的位置信息后,首先采用矢量模式下的CORDIC改进算法模块计算出QR码的旋转角度,然后采用旋转模式下的CORDIC改进算法模块提取出旋转校正后的QR码图像。
本发明所提出的是一种QR码快速检测与校正提取算法的QR码实时定位检测算法,结合前后相邻两帧图像的扫描信息,实时获取当前图像中QR码的位置及尺寸信息,其主要包括了图像灰度化、二值化、图像行转列、行列扫描、扫描点筛选;
图像灰度化:将摄像头获取到的RGB图像转换成灰度图;
图像二值化:将转换后的灰度图根据一定的判断规则转换成黑白(0/1)的二值图像,将一帧图像分割成n*n的方块,计算出每个方块的灰度平均值,当下一帧图像数据流到来时,通过双线性插值算法计算出该像素点所对应的阈值并进行对比,从而判断该点为黑(0)还是为白(1),同时更新每个方块的灰度平均值,以便用于下一帧的图像二值化。
图像行转列:用于将按行传送的图像数据流转换成按列传输的数据流,供给后级列扫描黑白条纹满足1:1:3:1:1的点,同时为后级QR码图像提取作缓存;
行列扫描:按行扫描当前图像数据流黑白条纹宽度满足1:1:3:1:1的点,同时对图像行转列模块输出的图像数据流按列扫描前一帧图像数据流黑白条纹宽度满足1:1:3:1:1的点;使用5个初值为0的计数器,计数器1用于计数当前条纹的宽度,每当黑白条纹切换时,对5个计数器中的数值进行比较,判断其是否满足1:1:3:1:1的关系,若满足则记录该线段中点坐标值和此5条条纹的平均宽度值及中间条纹的颜色(0/1),比较后将前一个计数器的值赋值给后一个计数器,即计数器4的值赋值给计数器5,计数器3的值赋值给计数器4,以此类推,并将计数器1中的值置为1,继续扫描,直到所有的像素点都扫描完毕;该算法可以检测到图像黑白反转的情况下的QR码图形,并且在判断黑白条纹的宽度比例关系时,可以根据需要适当放宽和收紧比较标准,从而满足实际的应用需求;
扫描点筛选:该步骤是在两帧图像之间的场同步期间进行的,主要分成以下三步:行列扫描点合并,临近点合并,筛选满足等腰直角关系的点。
行列扫描合并:当一帧数据传送完毕时,行列扫描即完成,将行和列扫描得到的点的位置坐标、黑白条纹平均宽度值及中间条纹的颜色进行比对,若在误差允许范围内相等,则该点在行列扫描中均满足1:1:3:1:1关系;
临近点合并:由于图像本身的原因和前级设置的允许误差,导致行列扫描合并后的点分散在周围,因此需要将一定范围内的点合并成一个点;
筛选满足等腰直角关系的点:将前级得到的点进行检测,按照排列组合的关系,检测每三个点之间在允许误差范围内是否满足等腰直角关系,一旦检测到满足等腰直角关系的点后即认为检测到QR码,并将检测到的点的相关信息按照顺序提供给后级。
本发明所提出的是一种QR码快速检测与校正提取算法的QR码校正提取算法:采用改进型CORDIC算法对QR码进行旋转校正与提取,在前级获得QR码的位置信息后,采用同一条改进型CORDIC算法流水线的不同模式分别计算QR码的旋转角度和对QR码进行校正提取;在传统的CORDIC算法的基础上,在初始的流水线前端增加一级迭代角度为α-3=arctan(23)的流水级,以扩展CORDIC可表示的角度范围,使其能逼近0-360°内的任意旋转角度;传统的CORDIC算法采用一个级数收敛的角度进行迭代逐次逼近所求的角度,迭代角度为αi=arctan(2-i),可知,CORDIC算法能表示的范围与精度与迭代次数有关,当i减小时,αi增大,可表示的范围增大,当i增大时,迭代角度αi减小,其可表示的精度越高,当i=0时,对应的角度为45°,i增加时,arctanαi逐渐减小,级数收敛到99.88,故其可表示的范围为(-99.88°,99.88°),由于180-99.88=80.12,而当i=-3时,α-3=arctan(23)*180/π=82.8750>80.12,并且82.8750<99.88°,因此可以增加一级i=-3的迭代以扩展旋转角度范围,且不会造成中间存在无法逼近的角度,这是因为的级数收敛值99.88,即当第一次旋转82.8750°后,可以由后面的迭代进行填充。
本发明提供的QR码快速检测与校正提取IP核,包括了摄像头接口模块、QR码快速检测提取模块、图像存储控制模块、总线接口模块,所有处理模块均采用硬件描述语言实现,具有很好的灵活性和可移植性;
摄像头接口模块:用于配置摄像头,使其输出相应格式的图像数据,并对获取的原始图像数据进行格式转换,传送给后一级模块;
QR码快速检测提取模块:包括了QR码实时检测模块、QR码旋转校正和提取模块;
QR码实时检测模块:直接对摄像头接口模块获取到的图像数据流进行处理,而非在摄像头拍摄存储一帧图像后对图像进行处理检测,可以达到实时检测的效果。其包括了图像二值化模块、图像行转列模块、行列扫描模块、扫描点筛选模块;
QR码校正提取模块:采用CORDIC改进算法对QR码进行旋转校正与提取。
图像存储控制模块:在QR码硬件检测的同时,将图像数据通过主端口存储到外部存储器中;当图像质量较差或QR码扭曲变形,QR码检测提取IP核无法定位到QR码时,向CPU发起一个中断请求,由CPU读取存储器中的图像数据进行更为复杂的运算处理;
总线接口:用于与***总线相互通信的接口,分为一个主端口和一个从端口。CPU可通过从端口对IP核配置其内部寄存器,主端口用于通过***总线与外部存储器进行数据传输。
该IP核采用硬件描述语言设计,不涉及具体的物理实现,修改总线接口单元可将其应用于不同的SOC(System on Chip),具有很高的灵活性和可移植性。
本发明所提出的QR码快速检测与校正提取算法及IP核设计软核,可应用于SOPC***中,对摄像头获取的图像数据流进行处理,能够实时地检测到QR码图形并将其校正提取出来,当图像不理想而较难检测到二维码时可将获取到的图像存储到外部存储器中,由CPU或DSP对其进行复杂的运算处理,使得二维码的识别率更高。相对于传统的软件处理方案而言,采用QR码快速检测提取IP软核的***处理速度更快、***集成度更高、功耗更低、成本更低。用户可以很方便地嵌入到自身的二维条码解码终端产品中,例如数据采集器、检票机、PDA等,为条码技术的应用提供了更为广阔的发展空间。
本发明的一种QR码检测与校正提取方法及IP核,是通过硬件电路直接对摄像头逐行、逐个像素输出的图像数据流进行QR码实时定位检测与QR码校正提取,而不需要拍照存储后才进行处理,可以极大地提高检测速度和识别率。该检测方法在QR码实时定位检测阶段是基于摄像头获取的相邻两帧图像中的二维码位置、形状等变化不大的基础上的,即在图像采集过程中二维码没有快速移动或形变的情况,处理一帧图像时依据的是前一帧图像得到的参数,在处理当前图像的同时更新相应的参数,为后一帧图像的处理提供依据。在QR码旋转校正与提取阶段,采用改进型CORDIC算法对QR码进行旋转校正和提取,用移位和加法代替乘除法,可以大大节省硬件资源。依据该算法设计硬件IP软核,通过一个主端口和一个从端口挂接在***总线上,CPU可通过从端口对IP核进行配置,通过对摄像头输出的图像数据流进行实时的图像预处理和QR码实时检测与QR码校正提取,另一方面,将图像数据通过主端口存储到外部存储器中,当图像质量较差或QR码扭曲变形,QR码检测提取IP核扫描到的位置探测图形中心点,但其个数小于3或没有满足等腰直角关系的组合时,向CPU发起一个中断请求,由CPU读取存储器中的图像数据进行更为复杂的处理。
Claims (6)
1.一种QR码检测与校正提取方法,其特征在于,通过硬件电路直接对摄像头逐行、逐个像素输出的图像数据流进行QR码实时定位检测,并采用改进型CORDIC算法对QR码进行旋转校正与提取,实现QR码的检测与校正提取;
所述采用改进型CORDIC算法对QR码进行旋转校正与提取的具体实现方式为:在前级获得QR码的位置信息后,通过同一条改进型CORDIC算法流水线的不同模式分别计算QR码的旋转角度和对QR码进行校正提取;
首先采用矢量模式下的CORDIC改进算法模块计算出QR码的旋转角度,是在初始的流水线前端增加一级迭代角度为α-3=arctan(23)的流水级,使其能逼近0-360°内的任意旋转角度;然后采用旋转模式下的CORDIC改进算法模块提取出旋转校正后的QR码图像。
2.根据权利要求1所述的QR码检测与校正提取方法,其特征在于,所述QR码实时定位检测的实现方式如下:结合前后相邻两帧图像的扫描信息,实时获取当前图像中QR码的位置及尺寸信息,其主要流程包括了图像灰度化、图像二值化、图像行转列、行列扫描、扫描点筛选;
图像灰度化:将摄像头获取到的RGB图像转换成灰度图;
图像二值化:用于将获取到的灰度图像数据流转换成二值图像数据流;将一帧图像分割成n*n的方块,计算出每个方块的灰度平均值,当下一帧图像数据流到来时,通过双线性插值算法计算出当前像素点所对应的阈值并进行对比,从而判断该像素点为黑0或白1,同时更新每个方块的灰度平均值;
图像行转列:用于将按行传送的图像数据流转换成按列传输的数据流,供给后级列扫描黑白条纹满足1:1:3:1:1的点,同时为后级QR码图像提取作缓存;
行列扫描:分为行扫描和列扫描,行、列扫描的实现方式相同;其中行扫描是对当前帧图像的扫描;列扫描是对行转列输出的图像数据流进行扫描;行、列扫描的过程如下:使用5个初值为0的计数器,计数器1用于计数当前条纹的宽度,每当黑白条纹切换时,对5个计数器中的数值进行比较,判断其是否满足1:1:3:1:1的关系,若满足则记录所述5个计数器中记录的条纹所组成的线段中点坐标值和此5条条纹的平均宽度值及中间条纹的颜色,其条纹的颜色为黑0或白1,比较后将前一个计数器的值赋值给后一个计数器,即计数器4的值赋值给计数器5,计数器3的值赋值给计数器4,以此类推,并将计数器1中的值置为1,继续扫描,直到所有的像素点都扫描完毕;
扫描点筛选:是在两帧图像之间的场同步期间进行的,主要包括以下三步:行列扫描点合并,临近点合并,筛选满足等腰直角关系的点。
3.根据权利要求2所述的QR码检测与校正提取方法,其特征在于,所述扫描点筛选分三步:行列扫描点合并,临近点合并,筛选满足等腰直角关系的点,其具体方式为:
行列扫描合并:当一帧数据传送完毕时,行列扫描即完成,将行和列扫描得到的点的位置坐标、黑白条纹平均宽度值及中间条纹的颜色进行比对,若在误差允许范围内相等,则该点在行列扫描中均满足1:1:3:1:1关系;
临近点合并:将临近范围内的点合并成一个点;
筛选满足等腰直角关系的点:将前级得到的点进行检测,按照排列组合的关系,检测每三个点之间在允许误差范围内是否满足等腰直角关系,一旦检测到满足等腰直角关系的点后即认为检测到QR码,并将检测到的点的相关信息按照顺序提供给后级。
4.一种QR码检测与校正提取IP核,其特征在于,QR码检测与校正提取IP核的处理模块采用硬件描述语言实现,包括:
摄像头接口模块:用于配置摄像头,使其输出相应格式的图像数据,并对获取的原始图像数据进行格式转换,传送给后一级模块;
QR码检测提取模块:包括QR码实时检测模块、QR码旋转校正和提取模块;
所述QR码实时检测模块:是直接对摄像头接口模块获取到的图像数据流进行处理,包括图像灰度化、二值化模块、图像行转列模块、行列扫描模块、扫描点筛选模块;
所述QR码旋转校正和提取模块,是所述采用改进型CORDIC算法对QR码进行旋转校正与提取,具体实现方式为:在前级获得QR码的位置信息后,通过同一条改进型CORDIC算法流水线的不同模式分别计算QR码的旋转角度和对QR码进行校正提取;首先采用矢量模式下的CORDIC改进算法模块计算出QR码的旋转角度,是在初始的流水线前端增加一级迭代角度为α-3=arctan(23)的流水级,使其能逼近0-360°内的任意旋转角度;然后采用旋转模式下的CORDIC改进算法模块提取出旋转校正后的QR码图像;
总线接口:用于与***总线相互通信的接口,分为一个主端口和一个从端口;CPU通过从端口对IP核配置其内部寄存器,主端口用于通过***总线与外部存储器进行数据传输。
5.根据权利要求4所述的QR码检测与校正提取IP核,其特征在于,
所述图像二值化:用于将灰度图像数据流转换成二值图像数据流;将一帧图像分割成n*n的方块,计算出每个方块的灰度平均值,当下一帧图像数据流到来时,通过双线性插值算法计算出当前像素点所对应的阈值并进行对比,从而判断该点为黑0或白1,同时更新每个方块的灰度平均值;
图像行转列模块:用于将按行传送的图像数据流转换成按列传输的数据流,供给后级列扫描黑白条纹满足1:1:3:1:1的点,同时为后级QR码图像提取作缓存;
行列扫描模块:分为行扫描和列扫描,行、列扫描的实现方式相同;其中行扫描是对当前帧图像的扫描;列扫描是对行转列输出的图像数据流进行扫描;行、列扫描的过程如下:使用5个初值为0的计数器,计数器1用于计数当前条纹的宽度,每当黑白条纹切换时,对5个计数器中的数值进行比较,判断其是否满足1:1:3:1:1的关系,若满足则记录所述5个计数器中记录的条纹所组成的线段中点坐标值和此5条条纹的平均宽度值及中间条纹的颜色,其条纹的颜色为黑0或白1,比较后将前一个计数器的值赋值给后一个计数器,即计数器4的值赋值给计数器5,计数器3的值赋值给计数器4,以此类推,并将计数器1中的值置为1,继续扫描,直到所有的像素点都扫描完毕;
扫描点筛选模块:是在两帧图像之间的场同步期间进行的,主要包括以下三步:行列扫描点合并,临近点合并,筛选满足等腰直角关系的点;
其中行列扫描合并:当一帧数据传送完毕时,行列扫描即完成,将行和列扫描得到的点的位置坐标、黑白条纹平均宽度值及中间条纹的颜色进行比对,若在误差允许范围内相等,则该点在行列扫描中均满足1:1:3:1:1关系;
临近点合并:将临近范围内的点合并成一个点;
筛选满足等腰直角关系的点:将前级得到的点进行检测,按照排列组合的关系,检测每三个点之间在允许误差范围内是否满足等腰直角关系,一旦检测到满足等腰直角关系的点后即认为检测到QR码,并将检测到的点的相关信息按照顺序提供给后级。
6.根据权利要求4所述的QR码检测与校正提取IP核,其特征在于,IP核还包括图像存储控制模块:在QR码硬件检测的同时,将图像数据通过主端口存储到外部存储器中;当图像质量较差或QR码扭曲变形,QR码检测提取IP核扫描到的位置探测图形中心点,但其个数小于3或没有满足等腰直角关系的组合时,向CPU发起一个中断请求,由CPU读取存储器中的图像数据进行更为复杂的运算处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410597217.5A CN104346597B (zh) | 2014-10-29 | 2014-10-29 | 一种qr码检测与校正提取方法及ip核 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410597217.5A CN104346597B (zh) | 2014-10-29 | 2014-10-29 | 一种qr码检测与校正提取方法及ip核 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104346597A CN104346597A (zh) | 2015-02-11 |
CN104346597B true CN104346597B (zh) | 2018-04-27 |
Family
ID=52502173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410597217.5A Expired - Fee Related CN104346597B (zh) | 2014-10-29 | 2014-10-29 | 一种qr码检测与校正提取方法及ip核 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104346597B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105760867A (zh) * | 2016-02-19 | 2016-07-13 | 深圳市润农科技有限公司 | 一种图像中二维码和/或文字的提取方法及装置 |
CN106991460A (zh) * | 2017-01-23 | 2017-07-28 | 中山大学 | 一种qr码快速定位检测算法 |
CN106991354A (zh) * | 2017-01-23 | 2017-07-28 | 中山大学 | 一种多qr码同时提取检测算法 |
US11095876B2 (en) | 2018-01-26 | 2021-08-17 | Samsung Electronics Co., Ltd. | Image processing device |
CN108804085B (zh) * | 2018-06-04 | 2021-11-05 | 厦门夏新移动通讯有限公司 | 一种低成本高集成可编程移动扫码***及其生成方法 |
CN110084080B (zh) * | 2019-04-28 | 2021-07-09 | 上海快仓自动化科技有限公司 | 二维码识别和生成的方法、装置、二维码和小车 |
CN111435417B (zh) * | 2020-01-14 | 2023-07-07 | 珠海市杰理科技股份有限公司 | 一种用于条形码扫描的图像解析方法、装置及存储介质 |
CN111435416B (zh) * | 2020-01-14 | 2023-05-09 | 珠海市杰理科技股份有限公司 | 基于多流水线的条形码图像解析方法、装置及存储介质 |
CN111428707B (zh) * | 2020-06-08 | 2020-11-10 | 北京三快在线科技有限公司 | 图形识别码的识别方法、装置、存储介质及电子设备 |
CN112541370B (zh) * | 2020-12-16 | 2022-03-15 | 电子科技大学 | 一种基于fpga的qr码位置探测图形定位方法 |
CN113095104A (zh) * | 2021-05-08 | 2021-07-09 | 山东新一代信息产业技术研究院有限公司 | 一种缺损二维码定位方法 |
CN113607419A (zh) * | 2021-08-02 | 2021-11-05 | 广东工业大学 | 一种发动机缸体电子标签检测装置及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101827044A (zh) * | 2010-04-01 | 2010-09-08 | 清华大学 | 一种基于混合qr分解的最小二乘fpga求解装置 |
CN102111350A (zh) * | 2009-12-25 | 2011-06-29 | 中国电子科技集团公司第五十研究所 | 矩阵qr分解的fpga装置 |
CN103293519A (zh) * | 2013-05-10 | 2013-09-11 | 东南大学 | 基于流水线工作方式的i/q通道误差校正方法及其*** |
CN103488459A (zh) * | 2013-09-13 | 2014-01-01 | 复旦大学 | 一种基于改进的高基cordic算法的复数乘法运算单元 |
-
2014
- 2014-10-29 CN CN201410597217.5A patent/CN104346597B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102111350A (zh) * | 2009-12-25 | 2011-06-29 | 中国电子科技集团公司第五十研究所 | 矩阵qr分解的fpga装置 |
CN101827044A (zh) * | 2010-04-01 | 2010-09-08 | 清华大学 | 一种基于混合qr分解的最小二乘fpga求解装置 |
CN103293519A (zh) * | 2013-05-10 | 2013-09-11 | 东南大学 | 基于流水线工作方式的i/q通道误差校正方法及其*** |
CN103488459A (zh) * | 2013-09-13 | 2014-01-01 | 复旦大学 | 一种基于改进的高基cordic算法的复数乘法运算单元 |
Non-Patent Citations (1)
Title |
---|
"基于FPGA的二维码图像旋转***";陈怡等;《电子技术应用》;20121231;第38卷(第7期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN104346597A (zh) | 2015-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104346597B (zh) | 一种qr码检测与校正提取方法及ip核 | |
Atcheson et al. | Caltag: High precision fiducial markers for camera calibration. | |
CN109977935A (zh) | 一种文本识别方法及装置 | |
CN109029381A (zh) | 一种隧道裂缝的检测方法、***及终端设备 | |
CN102980535B (zh) | 角度测量方法和装置 | |
CN110264573B (zh) | 基于结构光的三维重建方法、装置、终端设备及存储介质 | |
CN109977718A (zh) | 一种用于识别二维码的方法与设备 | |
Antunes et al. | Unsupervised vanishing point detection and camera calibration from a single manhattan image with radial distortion | |
CN104463067A (zh) | 一种Grid Matrix二维条码宏模块提取方法 | |
Huang et al. | Data matrix code location based on finder pattern detection and bar code border fitting | |
Qu et al. | Image seamless stitching and straightening based on the image block | |
Meng et al. | A feature point matching based on spatial order constraints bilateral-neighbor vote | |
CN104077557B (zh) | 一种获取卡片信息的方法和装置 | |
CN113140036A (zh) | 一种三维建模方法、装置、设备及存储介质 | |
CN105787897A (zh) | 一种模糊二维码图像的处理方法及装置 | |
CN104899589A (zh) | 一种采用阈值二值化算法实现二维条码预处理的方法 | |
Lee et al. | Correspondence matching of multi-view video sequences using mutual information based similarity measure | |
CN111046693B (zh) | 一种二维码扫描方法、装置、终端设备及存储介质 | |
CN113240656B (zh) | 视觉定位方法及相关装置、设备 | |
Chen et al. | An adaptive feature region-based line segment matching method for viewpoint-changed images with discontinuous parallax and poor textures | |
CN104200456A (zh) | 一种用于线结构光三维测量的解码方法 | |
JP6011885B2 (ja) | 符号読取装置および符号読取方法 | |
Li et al. | The research of QR code image correction based on image gray feature | |
Wang et al. | An Improved Canny‐Zernike Subpixel Detection Algorithm | |
CN100454327C (zh) | 数据矩阵码的识别方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180427 |
|
CF01 | Termination of patent right due to non-payment of annual fee |