QR代码(Quick Response Code, 高速响应码)属于二维矩阵码在一个。由DENSO(日本电装)公司开发,由JIS和ISO将其标准化。

QR码分为两种模式:模式1、模式2。当中。模式1相应旧的标准,眼下普遍採用的是模式2,即,新的开放式标准;

QR码的基本特征:

1、编码字符集:

(1)数字型数据:(数字0--9)

(2)字母数字型数据:(数字0--9;大写字母A--Z,9个其他字符:space,$,%,*,+,-,.,/,:);

(3)8位字节型数据;

(4)日本汉字字符

(5)中文汉字字符

2、数据表示

深色模块表示二进制1。浅色模块表示二进制0;或者相反;

3、 符号规格

从21*21的模块到177*177的模块(分别相应版本号1--版本号40。每添加一个版本号添加4个模块的大小)

4、 掩码

能够使得符号中深色与浅色模块的比例接近1:1,从而使得相邻模块的排列造成译码困难的可能性降到最低

5、 ECI扩充解释

这样的方式使得符号能够表示缺省字符集以外的数据(如。阿拉伯字符、希腊字符)。以及其他解释(如,用一定的压缩方式表示的数据)或者对行业特点的须要进行编码。

依据ISO的规定,每一个QR码符号由N*N个正方形模块构成一个正方形阵列,它由编码区、切割符、寻像图形、定位图形、校正图形在内的功能图形组成。

QR码的编码流程:

(1)数据分析:分析输入数据,确定要进行编码的字符类型。选择所需的错误检測及纠正等级。

根据数据码和纠错码字符串长度,选择合适的QR码符号版本号,使得其容量能包括改数据串。

(2)数据编码

对于所採用的模式,依照其定义的规则。将数据字符转换为位流。在当须要进行模式转换时,在新的模式段開始前增加模式指示符进行模式转换。

在数据序列后面增加终止符。将产生的位流分为每8位一个码字。必要时增加填充字符以填满依照版本号要求的数据码字数。

(3)纠错编码

按须要将码字序列分块,以便按块生成对应的纠错码字,并将其增加到对应的数据码字序列后面。

(4) 构造终于信息

在每一块中置入数据和纠错码字。必要时增加剩余位。

(5) 在矩阵中布置模块

将寻像图形、切割符、定位图形等放入矩阵

(6)掩模

依次将掩模图形用于符号的编码区域,评价结果,选择当中使得深色浅色模块比率最优且使不希望出现的图形最少化的结果;

(7)增加格式与版本号信息

QR码定位校正流程

(1)精确定位

QR码有三个同样位置的寻像图形。分别位于符号的左上角、右上角、左下角,用来确定QR码的位置和方向。QR码的寻像图形的模块宽度比例为,1:1:3:1:1。例如以下图所看到的。能够利用该特征定位QR码区域。

(1) 图像校正

上一步得到三个寻像图形的中心位置。由此能够确定QR码图形的偏转角度,旋转原图以校正QR码的位置。

一般的图像旋转算法对直线边界easy产生锯齿效应。这里建议採用双线性插值算法来处理。

(2) 确定採样网络

能够利用QR码的位置探測图形和校正图形来确定採样网络。

首先,将校正后的QR图像二值化,初步计算得到模块宽度=位置探測图像宽度/7。由位置探測图形之间的距离或者右上角位置探測图形左側和左下角位置探測图像上側的版本号信息。得到QR码的版本号号;

对于一定版本号的QR码,位置探測图形和校正图形在QR码矩阵中的位置是确定的。以位置探測图形中心的实际位置为參考点。能够估算校正图形的大致位置,再由校正图形1:1:1的特征。确定校正图形中心的精确位置。

由位置探測图形和校正图形在QR码矩阵中的位置以及它们的实际位置。就能够划分採样网络。根据校正图形将QR码图像划分为几个块,分别进行採样,以提高採样尺寸的精确性。

QR码译码流程:

版权声明:本文博主原创文章。博客,未经同意不得转载。

QR代码简单的更多相关文章

  1. demo工程的清单文件及activity中api代码简单示例

    第一步注册一个账户,并创建一个应用.获取app ID与 app Key. 第二步下载sdk 第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定. 3.1 修改清单文件,主要是加入 ...

  2. C# 防止同时调用=========使用读写锁三行代码简单解决多线程并发的问题

    http://www.jb51.net/article/99718.htm     本文主要介绍了C#使用读写锁三行代码简单解决多线程并发写入文件时提示"文件正在由另一进程使用,因此该进程无 ...

  3. DCGAN 代码简单解读

    之前在DCGAN文章简单解读里说明了DCGAN的原理.本次来实现一个DCGAN,并在数据集上实际测试它的效果.本次的代码来自github开源代码DCGAN-tensorflow,感谢carpedm20 ...

  4. jq超简单的流式布局,代码简单,容易修改

    1.看看效果吧! 2.html代码index.html <!DOCTYPE html> <html lang="en"> <head> < ...

  5. C#使用读写锁三行代码简单解决多线程并发写入文件时线程同步的问题

    (补充:初始化FileStream时使用包含文件共享属性(System.IO.FileShare)的构造函数比使用自定义线程锁更为安全和高效,更多内容可点击参阅) 在开发程序的过程中,难免少不了写入错 ...

  6. php分页代码简单实现

    版权声明:本文为博主原创文章,未经博主允许不得转载. 数据库操作类代码:mysqli.func.php <?php // 数据库连接常量 define('DB_HOST', 'localhost ...

  7. 使用DotNetOpenAuth搭建OAuth2.0授权框架——Demo代码简单说明

    前段时间随意抽离了一部分代码作为OAuth2的示例代码,若干处会造成困扰,现说明如下: public class OAuthController : Controller { private stat ...

  8. HTML QQ聊天代码 简单的一行代码

    简单的一行代码: <a href="tencent://message/?uin=173007740&Site=&Menu=yes">和17300774 ...

  9. WPF内嵌代码和后台代码简单混合使用

    下面实例展示了WPF内嵌代码和后台代码混合使用,一个简单基础的实例: xaml文件: <Window x:Class="WPF内嵌代码和后台代码混合使用.MainWindow" ...

随机推荐

  1. net MVC 的八个扩展点

    net MVC 的八个扩展点 MVC模型以低耦合.可重用.可维护性高等众多优点已逐渐代替了WebForm模型.能够灵活使用MVC提供的扩展点可以达到事半功倍的效果,另一方面Asp.net MVC优秀的 ...

  2. vb实现多用户登录

    利用vb实现多用户登录,主要是将vb与数据库实现链接,这个问题在作品展中我们的软件“天天迹录”的登录时用到,但是当时自己只是知道有这么个功能,但是那些代码的含义并不明白,在3个月后的我又有机会接触到它 ...

  3. 如何解决Windows8.1(32bit&amp;64bit)下Cisco VPN Client拨号时报442错误的问题

    Cisco VPN Cient大多数网络管理员.技术支持project最流行的教师和最终用户VPNclient一间.对于外部网络访问内部网络,技术类人员. 随着Windows8.1的推出.Cisco ...

  4. Trie图

    AC自动机是KMP的多串形式,当文本串失配时,AC自动机的fail指针告诉我们应该跳到哪里去继续匹配(跳到当前匹配串的最长后缀去),所以AC自动机的状态是有限的 但是AC自动机具有不确定性, 比如要求 ...

  5. php定时运行任务(windows7)

    1:自己写的php档,下面是我的一些php档 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzE2MDAyNA==/font/5a6L5L2T/f ...

  6. 【原创】ZOJ_1649 Rescue 解题报告

    Rescue Time Limit: 2 Seconds      Memory Limit: 65536 KB Angel was caught by the MOLIGPY! He was put ...

  7. 关于VCL的编写 (一) 如何编写自己的VCL控件

    如何编写自己的VCL控件 用过Delphi的朋友们,大概对Delphi的最喜欢Delphi的不是他的强类型的pascal语法,而是强大的VCL控件,本人就是一位VCL控件的爱好者. VCL控件的开源, ...

  8. ASCII与Unicode编码消息写文件浅析

    [文章摘要] ASCII与Unicode是两种常见的字符编码. 它们的表示方法不一样,因而在程序中就要差别处理. 本文基于作者的实际开发经验,对ASCII与Unicode两种字符编码消息的写文件过程进 ...

  9. CSU 1659: Graph Center(SPFA)

    1659: Graph Center Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 63  Solved: 25 [id=1659"> ...

  10. POJ 1798 Truck History

    Description Advanced Cargo Movement, Ltd. uses trucks of different types. Some trucks are used for v ...