[发明专利]一种基于FPGA的QR码位置探测图形定位方法有效
申请号: | 202011484527.8 | 申请日: | 2020-12-16 |
公开(公告)号: | CN112541370B | 公开(公告)日: | 2022-03-15 |
发明(设计)人: | 翟亚红;杨锋;杜涛;李威;曹飞飞 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06K7/14 | 分类号: | G06K7/14 |
代理公司: | 电子科技大学专利中心 51203 | 代理人: | 吴姗霖 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 fpga qr 位置 探测 图形 定位 方法 | ||
1.一种基于FPGA的QR码位置探测图形定位方法,其特征在于,具体包括以下步骤:
S1、利用摄像头实时采集QR码图像,图像尺寸为M*L,M表示图像矩阵列数,L表示图像矩阵行数;
S2、对图像矩阵建立直角坐标系:以图像矩阵左上角像素点为原点,水平向右方向为x轴,水平向下方向为y轴,其中,0≤x≤M-1,0≤y≤L-1;
S3、对采集的QR码图像进行灰度化处理,将像素点的位宽压缩至8比特;
S4、对步骤S3灰度化处理后的图像进行中值滤波处理,消除图像中的噪声;
S5、利用Kittler阈值法对中值滤波后的QR码图像进行二值化,利用第i帧图像计算得到的最佳阈值为第i+1帧图像二值化;
S6、接收任意一帧二值化后的串行图像比特流,经串并转换后,以N位像素块为单位存入图像缓存RAM中;
S7、对步骤S6接收的整帧图像行扫描,得到满足位置探测图形特征的疑似点信息;具体过程为:
假设C1-C6分别表示6条子线段的颜色,S1-S6分别表示6条子线段起点的x坐标,L1-L6分别表示6条子线段的长度,疑似点数量的上限值为T;MEM1用于存储行疑似点信息,深度为T,位宽为A表示行疑似点索引号,初始值为0,每扫描到一个疑似点则自增1;MEM2存储每一行扫描完成后的最新索引号,深度为L,位宽为表示向下取整;
S7.1、开始扫描前,x=y=0,A置为0,C1-C6全部置为0,S1-S6全部置为0,L1-L6全部置为0;
S7.2、横坐标x=0~(M-2),若二值化后像素点的值G(x,y)=C6,则L6=L6+1;若G(x,y)≠C6,则将C2、C3、C4、C5、C6分别赋值给C1、C2、C3、C4、C5,C6取反,S2、S3、S4、S5、S6分别赋值给S1、S2、S3、S4、S5,S6=x,L2、L3、L4、L5、L6分别赋值给L1、L2、L3、L4、L5,L6=1,同时判断赋值后的五条子线段是否满足位置探测图形特征:判断C1-C5的值是否分别为0、1、0、1、0,若不是,忽略,继续扫描;若是,则判断L1:L2:L3:L4:L5是否满足(0.5-1.5):(0.5-1.5):(2-4):(0.5-1.5):(0.5-1.5),若满足,则将C1-C5这五条子线段组成的长线段的中心横坐标和行扫描长度S6-S1存储至MEM1的地址A处,然后将索引号A自增1,若不是,则忽略,继续扫描;
S7.3、若最后1个像素点的值G(M-1,y)=C6,则将C2、C3、C4、C5、C6分别赋值给C1、C2、C3、C4、C5,S2、S3、S4、S5、S6分别赋值给S1、S2、S3、S4、S5,S6=M,L2、L3、L4、L5、L6+1分别赋值给L1、L2、L3、L4、L5;若G(M-1,y)≠C6,则将C2、C3、C4、C5、C6分别赋值给C1、C2、C3、C4、C5,S2、S3、S4、S5、S6分别赋值给S1、S2、S3、S4、S5,S6=M-1,L2、L3、L4、L5、L6分别赋值给L1、L2、L3、L4、L5;然后判断赋值后的五条子线段是否满足位置探测图形特征:判断C1-C5的值是否分别为0、1、0、1、0,若不是,忽略,继续扫描;若是,则判断L1:L2:L3:L4:L5是否满足(0.5-1.5):(0.5-1.5):(2-4):(0.5-1.5):(0.5-1.5),若满足,则将C1-C5这五条子线段组成的长线段的中心横坐标和行扫描长度S6-S1存储至MEM1的地址A处,然后将索引号A自增1,若不是,则忽略,继续扫描;
S7.4、将得到的最新索引号A存储至MEM2中的地址y处,若y=L-1,则进入步骤S8;否则,令y=y+1,将C1-C6全部置为0,S1-S6全部置为0,L1-L6全部置为0,然后跳转到步骤S7.2;
S8、对图像进行列扫描,并判断位置探测图形中心,具体过程为:
假设Cm1-Cm6分别表示列扫描过程中6条子线段的颜色,Sm1-Sm6分别表示6条子线段起点的y坐标,Lm1-Lm6分别表示列扫描中6条子线段的长度,m=x%N;6个存储器Q1-Q6分别对应存储1条子线段的Cm、Sm、Lm信息,每个存储器的位宽为深度为N;MEM3用于存储列扫描中的疑似点信息,深度为N,位宽为NUM记录扫描到的疑似点数量,POS记录扫描到的疑似点对应的列;
S8.1、对图像的x~x+N-1列同时进行扫描,开始扫描前,令x=y=0,NUM=0,POS每一位置为0,Cm1-Cm6全部置为0,Sm1-Sm6全部置为0,Lm1-Lm6全部置为0;
S8.2、读取Q1~Q6中地址m=x%N存储的扫描信息,若二值化后像素点的值G(x,y)=Cm6,则Lm6=Lm6+1;若G(x,y)≠Cm6,则将Cm2、Cm3、Cm4、Cm5、Cm6分别赋值给Cm1、Cm2、Cm3、Cm4、Cm5,Cm6取反,Sm2、Sm3、Sm4、Sm5、Sm6分别赋值给Sm1、Sm2、Sm3、Sm4、Sm5,Sm6=y,Lm2、Lm3、Lm4、Lm5、Lm6分别赋值给Lm1、Lm2、Lm3、Lm4、Lm5,Lm6=1,同时判断赋值后的五条子线段是否满足位置探测图形特征:判断Cm1-Cm5的值是否分别为0、1、0、1、0,若不是,忽略,继续扫描;若是,则判断Lm1:Lm2:Lm3:Lm4:Lm5是否满足(0.5-1.5):(0.5-1.5):(2-4):(0.5-1.5):(0.5-1.5),若满足,则这五条子线段组成的长线段满足位置探测图形特征,若不是,则忽略,继续扫描;将满足位置探测图形特征的长线段的中点对应的横坐标x、纵坐标和行扫描长度Sm6-Sm1存储至MEM3的地址x%N处,NUM自增1;将POS的第x%N位置为1,然后将更新后的Cm1-Cm6、Sm1-Sm6、Lm1-Lm6写回Q1-Q6的地址m=x%N处;当x%N=N-1时,进入步骤S8.3,否则令x=x+1,重复步骤S8.2的过程;
S8.3、判断NUM的值是否为0,若为0表示疑似点数量为0,若y=L-1且x=M-1,跳转到步骤S8.8;若y=L-1,令y=0,x=x+1,将6个存储器Q1-Q6中存储的Cm、Sm、Lm初始化为0,进行下一个N列的扫描,跳转到步骤S8.2;若y≠L-1,则令y=y+1,x=x-N+1,跳转到步骤S8.2;若NUM≠0,寻找POS中置1的位,将NUM的值自减1,进入步骤S8.4;
S8.4、读取MEM3地址为POS置1的位对应的列扫描疑似点信息,假设读取的横坐标、纵坐标、列扫描长度分别为x1、y1、LY,进入步骤S8.5;
S8.5、读取MEM2的地址y1-1和y1存储的索引号A0和A1,若A0=A1,跳转到步骤S8.3;若A0A1,进入步骤S8.6;
S8.6、读取MEM1地址为索引号A0处存储的行疑似点信息,假设其横坐标为x2,行扫描长度为LX,进入步骤S8.7;
S8.7、若x2x1,跳转到步骤S8.3;若x2=x1,记录其横坐标x1、纵坐标y1、行扫描长度LX、列扫描长度LY,跳转到步骤S8.3;若x2x1,将索引号A0自增1,若此时A0A1,跳转到步骤S8.6,若此时A0=A1,跳转到步骤S8.3;
S8.8、核对记录的位置探测图形中心数量是否为3,若是,则进入步骤S9;否则,跳转到步骤S6缓存一帧新图像重新扫描;
S9、输出3个位置探测图形的中心坐标和扫描长度,包括横坐标、纵坐标、行扫描长度和列扫描长度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011484527.8/1.html,转载请声明来源钻瓜专利网。