欢迎来到我的范文网!

二维码解析

座右铭 时间:2020-07-22

【www.myl5520.com--座右铭】

二维码解码部分
篇一:二维码解析

zxing源码分析——QR码部分

2013-07-10 17:16:03| 分类: | 标签: |字号大中小 订阅

Java代码结构:

zxing源码的结构还是比较清晰的,有关QR码的代码主要在以下几个package中。Java代码中有生成QR码的代码,在C++代码中是没有生成部分,只有解析部分。

其中qrcode中是编解码的接口,外部代码通过这两个类来进行QR码的编解码。

detector是用来在摄像头抓取的图像中检测出QR码的那部分,并将其提取出来。这部分代码是解码的关键,也是可以进行优化的部分。

decoder是按照QR码的编码规范将之前detector中提取出的QR码符号进行解码操作,将图像解析为真实的信息。

QR码解码流程:

1、将图像进行二值化处理,1、0代表黑、白。

2、寻找定位符、校正符,然后将原图像中符号码部分取出。(detector代码实现的功能)

3、对符号码矩阵按照编码规范进行解码,得到实际信息(decoder代码实现的功能) 二值化:

zxing中条码的二值化都是使用Binarizer实现,一维码使用getBlackRow方法,二维码的使用getBlackMatrix方法。Binarizer有两个生成类,GlobalHistogramBinarizer和

HybridBinarizer;这两个类对getBlackMatrix方法的实现有不同,HybridBinarizer中的实现对于某些条件下的图像有些特殊的处理,暂时没有看懂,这里只介绍

GlobalHistogramBinarizer中二值化的方法。

二值化的关键就是定义出黑白的界限,我们的图像已经转化为了灰度图像,每个点都是由一个灰度值来表示,就需要定义出一个灰度值,大于这个值就为白(0),低于这个值就为黑(1)。在GlobalHistogramBinarizer中,是从图像中均匀取5行(覆盖整个图像高度),每行取中间五分之四作为样本;以灰度值为X轴,每个灰度值的像素个数为Y轴建立一个直方图,从直方图中取点数最多的一个灰度值,然后再去给其他的灰度值进行分数

计算,按照点数乘以与最多点数灰度值的距离的平方来进行打分,选分数最高的一个灰度值。接下来在这两个灰度值中间选取一个区分界限,取的原则是尽量靠近中间并且要点数越少越好。界限有了以后就容易了,与整幅图像的每个点进行比较,如果灰度值比界限小的就是黑,在新的矩阵中将该点置

1,其余的就是白,为0。

提取符号码:

这部分是解码的关键部分,解码能力的高低也主要体现在这里(不过我感觉二维码本身设计的就比较好,对图像扭曲变形的纠错能力比较高,所以代码部分对这方面的处理就比较少)。这部分的目标是从像素为单位的原始图像中提取出符号码部分,并转换为模块为单位的符号码矩阵。

将二值化之后的矩阵交给Detector,其detect方法就是接口方法。调用这个方法就会返回取好的符号码矩阵。下面详细介绍detect方法所做的工作:

1、寻找定位符

寻找定位符是FinderPatternFinder这个类来实现的。

在图像中每隔iSkip就采样一行,

int iSkip = (3 * maxI) / (4 * MAX_MODULES);

在这一行中将连续的相同颜色的像素个数计入数组中,数组长度为5位,即去找黑\白\黑\白\黑的图像(如开始检测到黑色计入数组[0],直到检测到白色之前都将数组[0]的值+1;检测到白色了就开始在数组[1]中计数,以此类推)。填满5位后检测这5位中像素个数是否比例为1:1:3:1:1(可以有50%的误差范围),如果满足条件就说明找到了定位符的大概

位置,将这个图像交给handlePossibleCenter方法去找到定位符的中心点,方法是先从垂直方向检测是否满足定位符的条件,如满足就定出Y轴的中心点坐标值,然后用这个坐标值去再次检测水平方向是否满足定位符条件,如满足就定出X

轴的中心点坐标值。至此就找到了一个定位符的中心坐标。

按照上面所说的步骤找出所有三个定位符的中心坐标,接下来开始定位三个定位符在符号中的位置,即左上(B点)、左下(A点)、右上(C点)三个位置。先通过两两之间的距离定出哪个是左上那一点(左上那点到其他两点的距离应该相差不远),然后通过计算BA、BC向量的叉乘定出A和C两点。

2、寻找校正符

通过ABC三点的坐标计算出校正符的可能位置,然后交给AlignmentPatternFinder去寻找最靠近右下角的那个校正符,寻找方法与寻找定位符的方法基本相同,如果找到就返回校正符的中心坐标,如果没有找到也没关系,解码程序可以继续。

3、透视转换,生成最终矩阵

找到了三个定位点和一个校正符的坐标(校正符没有找到可以用一个计算值来代替),符号图像的位置就已经确定了,现在要进行图像变形,建立起以模块为单位的符号矩阵与原图像之间的关系,使用的方法是George Wolberg写的Digital Image Warping一书中PerspectiveTransform方法(书中54-56页)。转换关系确立了就将新矩阵(以模块为单位的符号矩阵)中每一个点对应到原图像中的点,去看该点是黑是白,并将0、1置填充到矩阵中。这样就生成了最终的符号码。

二维码生成与识别
篇二:二维码解析

南京航空航天大学

题 目

小组成员:程设计

二维码的生成及识别

何俊豪 韩怀晓 晋晓飞

瞿诗华 薛莉

二〇一五年十一月

第一章 QR码简介

QR码是由日本Denso公司与1994年制定出来的一种矩阵二维码符号,它除了具有信息容量大、可靠性高、可表示汉字及图像信息、保密性强等优点外,还具有超高速响应、全方位识别等特点。

QR码符号是由正方形的细小模块构成,分为功能区和编码区。功能图形包括位置探测图形、分隔符、定位图形、校正图形、格式信息、版本信息等,编码区域包括数据编码块和纠错码图形。普通QR码基本图形及区域功能对照图如图1.1所示。

图1.1 QR码基本结构

1.1 QR码的密度标识图形

位于两个“回”字标识符之间的黑白相间的条纹,用红色线标注的,这个区域可以用于确定QR码符号的像素方块的密度(即一个像素的大小),标识识别模块如图1.2所示。

图1.2 QR码密度标识图形

1.2 位置探测图形

位置探测图形由三个重叠的同心正方形构成,如图1.3所示。通过探测位置探测图形可以迅速的从背景图像中判断出QR码符号的大致位置。

图1.3 QR码探测图形

二维码定位就是找到二维码符号的位置探测图形,对有明显条码特征的区域进行定位,然后根据图形结构特征值对不同的条码符号进行进一步的处理。通过QR码的定位图形,可以得到左上角位置探测图形的边界点和左下角位置探测图形的边界点如图1.4(a)所示,因此可以采用鲁棒性较好的算法拟合条码左边框,然后通过直线拟合得到条码的上边框直线。在此基础上构建直角三角形,寻找出图形中心,如图1.4(b)所示,并可以得到第四个交点,如图1.4(c)所示。

(a)确定左边界和上边界 (b)确定探测图形中心 (c)确定第四个交点

图1.4 条码图像初步定位流程

1.3 版本信息

QR码符号共有40种规格,版本1的规格为21模块×21模块,版本2为25模块×25模块,以此类推,每一版本符号比前一版本每边增加4个模块,直到版本40,规格为177模块×177模块。QR码的版本信息图形在整个二维码图像中的位置如图1.5所示,QR码最高版本40可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。

图1.5 版本信息图形

1.4 纠错码

QR码具有“纠错能力”,即使在使用过程中遇到污损、折叠等现象,也可以自动恢复数据。这一“纠错能力”具备四个级别,级别越高,纠错能力越高,但是数据量也会增加,

编码尺寸也会变大。QR码各级别纠错码纠错能力如表1.1所示。

表1.1 纠错码级别纠错能力对照表

QR码的纠错能力 级别L 级别M 级别Q 级别H

约7% 约15% 约25% 约30%

第二章 QR码编码规则介绍

将输入的数据转变为一个位流,如果最开始的模式指示符不是默认的,其前面要用ECI标头,如果以默认的开始,位流的开头为第一个模式的指示符,如表2.1 所示,该表定义了不同模式下的模式指示符。表2.2定义了不同模式和符号版本下的字符计数指示符的长度。

表2.1 模式指示符

模式 ECI 数字 字母数字 8位字节 日本汉字 中国汉字 结构链接 FNCI

终止符(信息结尾)

表2.2 字符计数指示符的位数

版本 1~9 10~26 27~40

数字模式 10 12 14

字母数字模式

9 11 13

8位字节模式

8 16 16

中国汉字模式

8 10 12

指示符 0111 0001 0010 0100 1000 1101 0011

0101(第一位置) 1001(第二位置)

0000

2.1 数字模式编码实现

将输入的数据从左至右每三位转化成一个10位的二进制数,剩余的一位或者两位数据分别转化成4位或7位二进制数。然后在转换后的二进制数据前加上模式指示符和字符计数指示符。例如输入数据:88899966,编码步骤如图2.1所示。

二维码生成与识别
篇三:二维码解析

河南农业大学

本科生毕业论文

题 目 二维码生成与识别技术研究

学 院 理学院

专业班级 电子信息科学与技术10级(2)班

学生姓名 指导教师二维码解析。

撰写日期:2014年5月15日

二维码生成与识别技术研究

孙佳

摘要

随着二维码的日益普及,二维码的应用正在迅速扩大,条码及条码技术逐渐渗透到人们的生活中,把人们从繁琐和重复的工作中全面解脱出来,本文试从二维码的起源、编码原理、技术标准、阐述二维码技术的发展及应用。

本课题研究的是二维码的生成与识别。在二维码系统中包含有两部分:二维码的生成系统和二维码的识别系统。生成系统完成了从输入数据到生成相应二维码的功能,识别系统完成对采集到的二维码符号进行译码还原出所携带信息的功能。文章最后还检测了整个设计系统,并且对二维码的安全使用提出建议。

关键词:二维码;编码原理;技术标准;应用;二维码的生成;二维码的识别

:

The research of generation and recognition of Two-dimensional code

SUN-Jia

Abstract

With the increasing popularity of the two dimensional bar code, two dimensional bar code applications are expanded rapidly, bar code and bar code technology permeates gradually to people's life, people from trivial and repetitive work, this paper tries to comprehensive liberation from the origin, two dimensional bar code principle, technical standards, and two dimensional bar code applications aspects, two dimensional bar code technology development and application.

This research is the generation and recognition of the two-dimensional codes.Firstly, The system of the two-dimensional code contains two parts: the system of the two-dimensional code and the recognition system of the two-dimensional code .The generation system completes the process from inputting data to corresponding two-dimensional code,the function of the recognition system is to complete the decoding of the collected ,and then to restore the information carried by the two-dimensional code symbol that has been decoded.Finally, the article detects the whole design system, and Put forward the proposals about safe using of the two-dimensional code. Key Words: Two dimensional bar code;Encoding print ;the generation of two-dimensional code; the recognition of two-dimensional code

目录

1绪论 ............................................................................ 1

1.1二维码的特点及研究意义 ......................................................... 1

1.2二维码在国内外的应用及普及 ..................................................... 1

1.3 本课题的研究内容 ............................................................... 3

2 几种常见二维码 .................................................................. 4

2.1 QR CODE码简介 .................................................................. 4

2.2 PDH417码简介 .................................................................. 5

2.3 DATA MATRIX码简介 ............................................................... 6

3 二维码系统研究实现 .............................................................. 8

二维码解析。

3.1 二维码系统的框架设计 ........................................................... 8

3.2 二维码的生成研究 ............................................................... 8

3.2.1数据编码 ................................................................... 8二维码解析。

3.2.2 纠错编码 .................................................................. 9

3.2.3 构造最终数据信息 ........................................................... 9

3.2.4 掩摸 ..................................................................... 10

3.3 二维码生成实现 ................................................................ 11

3.3 二维码的识别研究 .............................................................. 14

3.3.1 图像的二值化处理 .......................................................... 14

3.3.2 图形的定位扫描 ............................................................ 15

3.3.3 译码 ..................................................................... 16

3.5 二维码识别实现 ................................................................ 16

4 二维码生成识别测试 ............................................................. 19

4.1 生成二维码测试 ................................................................ 19

4.1.1 字母信息的生成测试 ........................................................ 19

4.1.2 数字信息的生成测试 ........................................................ 20

4.1.3 汉字信息的生成测试 ........................................................ 21二维码解析。

4.1.4字符信息的生成测试 ........................................................ 22

4.2扫描二维码测试 ................................................................ 23

4.2.1字母信息的解析. ........................................................... 23

4.2.2数字信息的解析 ............................................................ 24

4.2.3汉字信息解析 .............................................................. 25

4.2.4字符信息的解析 ............................................................ 25

4.3结果分析 ...................................................................... 26

5 二维码的安全运用 ............................................................... 27

6 总结与展望 ..................................................................... 28

参考文献 ......................................................................... 28

QR二维码的原理与识别方法
篇四:二维码解析

QR二维码的原理与识别方法

QR码呈正方形,只有黑白两色。在3个角落,印有较小,像「回」字的的正方图案。这三个是帮助解码软件定位的图案,使用者不需要对准,无论以任何角度拍摄,内容仍可正确被读取。 日本QR码的标准JIS X 0510在1999年1月发布,而其对应的ISO国际标准ISO/IEC18004,在2000年6月获得批准。根据Denso Wave公司的资料,QR码是属于开放式的标准,QR码虽然由Denso Wave公司持有的专利,但不会被执行。

一、什么是二维码: 二维码 (2-dimensional bar code),是用某种特定的几何图形按一定规律在平面(二维方向上) 分布的黑白相间的图形记录数据符号信息的。 在许多种类的二维条码中,常用的码制有:Data Matrix, Maxi Code, Aztec, QR Code, Vericode, PDF417, Ultracode, Code 49, Code 16K等。

1.堆叠式/行排式二维条码,如,Code 16K、Code 49、PDF417(如下图)等

2.矩阵式二维码,最流行莫过于QR CODE 二维码的名称是相对与一维码来说的,比如以前的条形码就是一个“一维码”,它的优点有:二维码存储的数据量更大;可以包含数字、字符,及中文文本等混合内容;有一定的容错性(在部分损坏以后可以正常读取);空间利用率高等。

二、QR CODE 介绍

QR(Quick-Response) code是被广泛使用的一种二维码,解码速度快。 它可以存储多用类型

1. 位置探测图形、位置探测图形分隔符:用于对二维码的定位,对每个QR码来说,位置都是固定存在的,只是大小规格会有所差异;这些黑白间隔的矩形块很容易进行图像处理的检测。

2. 校正图形:根据尺寸的不同,矫正图形的个数也不同。矫正图形主要用于QR码形状的矫正,尤其是当QR码印刷在不平坦的面上,或者拍照时候发生畸变等。

3. 定位图形:这些小的黑白相间的格子就好像坐标轴,在二维码上定义了网格。

4. 格式信息:表示该二维码的纠错级别,分为L、M、Q、H;

5. 数据区域:使用黑白的二进制网格编码内容。8个格子可以编码一个字节。

6. 版本信息:即二维码的规格,QR码符号共有40种规格的矩阵(一般为黑白色),从21x21(版本1),到177x177(版本40),每一版本符号比前一版本 每边增加4个模块。

7. 纠错码字:用于修正二维码损坏带来的错误。

三. 简要的编码过程:

1. 数据分析:确定编码的字符类型,按相应的字符集转换成符号字符; 选择纠错等级,在规格一定的条件下,纠错等级越高其真实数据的容量越小。

2. 数据编码:将数据字符转换为位流,每8位一个码字,整体构成一个数据的码字序列。其实知道这个数据码字序列就知道了二维码的数据内容。

数据可以按照一种模式进行编码,以便进行更高效的解码,例如:对数据:

01234567编码(版本1-H), 1)分组:012 345 67 2)转成二进制:012→0000001100 345→0101011001 67 →1000011 3)转成序列:0000001100 0101011001 1000011

4)字符数 转成二进制:8→0000001000 5)加入模式指示符(上图数字)0001:0001 0000001000 0000001100 0101011001 1000011 对于字母、中文、日文等只是分组的方式、模式等内容有所区别。基本方法是一致的

3. 纠错编码:按需要将上面的码字序列分块,并根据纠错等级和分块的码字,产生纠错码字,并把纠错码字加入到数据码字序列后面,成为一个新的序列。

在二维码规格和纠错等级确定的情况下,其实它所能容纳的码字总数和纠错码字数也就确定了,比如:版本10,纠错等级时H时,总共能容纳346个码字,其中224个纠错码字。 就是说二维码区域中大约1/3的码字时冗余的。对于这224个纠错码字,它能够纠正112个替代错误(如黑白颠倒)或者224个据读错误(无法读到或者无法译码), 这样纠错容量为:112/346=32.4%

4. 构造最终数据信息:在规格确定的条件下,将上面产生的序列按次序放如分块中 按规定把数据分块,然后对每一块进行计算,得出相应的纠错码字区块,把纠错码字区块 按顺序构成一个序列,添加到原先的数据码字序列后面。 如:D1, D12, D23, D35, D2, D13, D24, D36, ... D11, D22, D33, D45, D34, D46, E1, E23,E45, E67, E2, E24, E46, E68,...

5. 构造矩阵:将探测图形、分隔符、定位图形、校正图形和码字模块放入矩阵中。

把上面的完整序列填充到相应规格的二维码矩阵的区域中

6. 掩摸:将掩摸图形用于符号的编码区域,使得二维码图形中的深色和浅色(黑色和白色)区域能够比率最优的分布。 一个算法,不研究了,有兴趣的同学可以继续。

7. 格式和版本信息:生成格式和版本信息放入相应区域内。 版本7-40都包含了版本信息,没有版本信息的全为0。二维码上两个位置包含了版本信息,它们是冗余的。 版本信息共18位,6X3的矩阵,其中6位时数据为,如版本号8,数据位的信息时 001000,后面的12位是纠错位。

四. 编程实现 1. 使用第三方库zxing zxing是一个很好的第三方库,可以进行多种条码,图码的解码。我们可以使用这个库进行二维码的生成和识别。

本文来源:http://www.myl5520.com/mingrenmingyan/115240.html

推荐内容