zoukankan      html  css  js  c++  java
  • 二维码

      二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。一维条码的宽度记载着数据,而其长度没有记载数据。二维条码的长度、宽度均记载着数据。二维条码有一维条码没有的“定位点”和“容错机制”。容错机制在即使没有辨识到全部的条码、或是说条码有污损时,也可以正确地还原条码上的资讯。

        二维条码的编码是指将源数据信息流转化为数据码字及根据数据码字流生成纠错码字的过程;码字流的二维条码符号表示是指在完成二维条码的编码之后,按照特定的规则将码字流用相应的二维条码符号表示的过程。

         二维条码的编码

    二维条码的编码包括两部分内容:一是将数据信息流通过一定的数据压缩模式转换成数据码字;二是根据Reed—Solomon错误控制码算法及数据纠错要求,在数据码字的基础上生成相应纠错码字。 

        数据信息的编码 

    二维条码对物品的描述,是通过一定的数据信息转化方法,将描述物品的数字、字母、符号、文字、图像等信息转化为数据码字流,然后用二维条码表示来实现,对不同的数据息,每一码制提供了相应的数据压缩模式来实现数据信息的转换,其主要的数据压缩模式包括:数字压缩模式、文本压缩模式(字母 压缩模式)、字节压缩模式。数字压缩模式主要用于对数字信息的表示;文本压缩模式(字母压缩模式)主要用于对ASCⅡ字符集及ASCⅡ扩展字符集中字:符信息的表示,也可用于对数字信息0~9的表示,但会降低表示效率;字节压缩模式主要用于对文字信息,如汉字、图像信息的表示,也能用于表示数字、字母信息,但会大大降低表示效率。不同码制表示信息的范围及方法各有特色。 

       二维条码的纠错

      一维条码的应用建立在这样一个基础上,那就是识读时拒读(即读不出)要比误读(读错)好。因此,一维条码通常同其表示的信息一同印刷出来。当条码受到损坏(如污染、脱墨等)时,可以通过键盘录入 代替扫描条码。鉴于以上原则,一维条码没有考虑到条码本身的纠错功能,尽管引入了校验字符的概念, 但仅限于防止读错。 早期出现的Code 49、Code 16K等几种二维码,在其信息表示密度方面与一维条码相比有了很大提 高,但由于是在一维条码的基础上生成的,没有纠错功能。人们在使用中发现,尽管早期开发的二维条码 能表示大量的数据信息,但由于条高的截短,使二维条码因质量问题出现不可识读的概率大大增加,一 旦不能识读,则变得毫无意义。因此,在某种程度上限制了二维条码的应用。 为了解决早期几种二维码在使用中出现的问题,拓宽二维码的应用,后期研制的二维码PDF417、 Data Matrix、QR Code等都采用了Reed—Solomon纠错技术,从而为二维条码在各领域的广泛使用奠定 了基础。 

      在二维条码的识读过程中,通常出现两种识读错误:一种是拒读错误,即在确定位置上的符号字符 的丢失或不可译码;另一种是替代错误,即在随机位置上的符号字符的错误译码。用一个纠错码字可恢复一个拒读错误,用两个纠错码字可纠正一个替代错误。例如QR Code符号,如果由于一个缺陷导致某一深色模块变成浅色模块或相反某一浅色模块变成深色模块,从而导致受影 响的符号错误地译解为另一个符号字符,这种数据替代错误,由于既要确定错误码字的位置,又要对错 误码字进行纠正,因此,需要两个纠错码字来纠正它。 可纠正的替代和拒读错误数量由下式给出:                                                    P+2t≤d-P 

    其中:P一拒读错误数; t替代错误数; d一纠错码字数; P一错误译码保护码字数。 

         纠错码字的生成 

    1)纠错等级的选择
    在计算纠错码字前,首先应根据使用环境及不同纠错等级所对应的纠错能力,合理地选择满足使用要求的纠错等级。 

    2)纠错码字的计算
    然后根据所选定的纠错等级和数据码字,用Reed—Solomon错误控制码算法计算相对应的纠错码

    字,计算步骤如下:

        二维条码符号表示
    二维条码的符号表示是指在完成二维条码的编码,即数据信息流转换为码字流之后,将码字流用相应的二维条码符号进行表示的过程。根据二维条码符号的结构特点及生成原理,通常将二维条码分为行排式二维条码矩阵式二维条码两类。具有代表性的行排式二维条码有四一七条码、Code 49、Code16K等。具有代表性的矩阵式二维码有QRCode、Data Matrix、Codeone、Maxi code等。

       对行排式二维条码,由于它是在一维条码的基础上产生的,它的符号字符的结构与一维条码符号字符的结构相同,由不同宽窄的条空组成,属模块组合型。

       行排式二维条码在符号字符设计、符号的基本构成、识读方式等方面,承继了一维条码的特点,符号识读设备与符号生成与一维条码兼容,但与一维条码不同的是,由于它是一个多行结构,从符号结构上要求增加行标识功能。行排式二维码在行标识上,不同码制采取了不同的行标识方法。

      矩阵式二维条码符号在结构形体及元素排列上与代数矩阵具有相似的特征。它以计算机图像处理技术为基础,每一矩阵二维条码符号结构的共同特征是均由特定的符号功能图形及分布在矩阵元素位置上表示数据信息的图形模块(如正方形、圆、正多边形等图形模块)构成。用深色模块单元表示二进制的"1",用浅色模块单元表示二进制的“0”。数据码字流通过分布在矩阵元素位置上的单元模块的不同组合来表示。具有代表性的有QRCode、DataMatrix、Code one、MaxiCode等矩阵二维码。

       矩阵式二维码是在行排式二维条码不能满足某些应用领域对符号小型化要求及需要表示更多信息量的条件下产生的。它是建立在计算机图像处理技术、组合编码原理基础上的一种新型图形符号自动识读处理码制。其符号字符由若干个深色或浅色模块按规律排列构成。大多数矩阵二维条码的符号字符由8个模块按特定规律排列构成。
    对Data Matrix码,ECC200符号其符号字:符由8个深色或浅色正方形模块构成,每一模块表示一个二进制位1或0,通常符号字符中每一模块按从左到右,从上到下的顺序进行排列。

                     

      每一种矩阵二维码符号都有其独特的功能图形,用于符号标识,确定符号的位置、尺寸及对符号模块的校正等。

      二维码安全问题

    二维码藏病毒 扫一扫瞬间被盗 http://business.sohu.com/20140304/n395997236.shtml

  • 相关阅读:
    二维码生成库phpqrcode使用小结
    微信扫码支付开发小结
    Xcode下开发c静态库for ios CPU架构 静态库合并
    Android.mk的用法和基础
    Android.mk介绍
    查看与修改网关,DNS
    WebRTC编译系统之GYP,gn和ninja
    sed awk文本处理教程
    有哪些自媒体平台?
    camke使用例程
  • 原文地址:https://www.cnblogs.com/yongwangzhiqian/p/3580582.html
Copyright © 2011-2022 走看看