二维码提取(不包括识别)

二维码提取(不包括识别)

实验室相关课题需要对二维码中心点作为特征点来提取,得到其像素坐标,然后利用深度相机恢复其三维空间坐标,用于后续实验。本文主要针对二维码中心点像素坐标提取做介绍。

二维码概述

二维码在日常生活中非常常见,其符号图形如图所示,QR二维码全称Quick Response,简称为QR码,QR码是在1994年9月由Denso公司研制而成。
在这里插入图片描述
QR码是由一系列相同尺寸的黑白小方格组成的正方形条码,其由编码区、分隔符、寻像图形、位置探测图形、校正图形和定位图形等识别功能图形组成。QR码和其它传统二维码相比具有高信息量、高可靠性以及高速全方位识读等特点,所以QR码已经广泛应用于各行各业。QR码由很多不同的符号结构组成,每一块符号结构均具有特定的功能,QR二维码的符号结构说明图如图所示。在这里插入图片描述
由二维码的符号结构说明图可以看到其有三个分别位于左上角、右上角和左下角的“回”字形图案,这三个“回”字形图案被称为位置探测图形,如下图所示。将位置探测图形的黑白交界从左到右或从上到下画一条直线,则这条直线经过的图案黑白比例大约为1:1:3:1:1,其不仅具有独特的像素比例关系,而且具有旋转不变性,比较容易从图像中提取出来,所以利用其三个位置探测图形,二维码可在图片中被快速地定位和提取出来。
在这里插入图片描述

ZBar算法实现二维码检测

由于二维码是标准化产品,并且在日常生活中应用广泛,目前已经有开源的二维码检测算法用于工业、物流业等行业中实现对二维码的快速检测。目前二维码检测算法应用较多的有ZBar算法和ZXing算法,但是ZBar算法是基于C语言编写,并且检测效率比ZXing算法高,所以本文采用ZBar算法来实现对QR码的检测定位,ZBar算法的流程如图所示。
在这里插入图片描述
ZBar算法的基本流程为首先建立4×4的窗口对图像整体以Z字形进行逐行扫描并均值去噪,根据梯度变换得到每行每列的明暗宽度流;然后判断明暗宽度流是否满足QR码的图案特征,若满足则保存明暗宽度流并设置扫码种类为QR码;根据QR码位置探测图形的黑白比例大约为1:1:3:1:1对明暗宽度流线段进行筛选并聚类之后求出横向和纵向线段的交叉点,进而可以求出QR码的四个顶点坐标。
求出QR码的四个顶点坐标之后,通过绘制矩形框在图像上显示出QR码的位置信息,并求出矩形框的中心点的像素坐标即为QR码在像素坐标系下的坐标值。

最终实现结果

对于简单背景:
在这里插入图片描述
对于复杂背景:
在这里插入图片描述
可以看出对于简单背景和复杂背景,ZBar算法都能较好地检测出二维码中心点,并能提取出其像素坐标。

猜你喜欢

转载自blog.csdn.net/tkzky001/article/details/107709015