浅谈二维码②与世浮沉

一、引言

上次我们讲到二维码比条形码更优秀,可以承载更多信息等;也讲到了我们平常所说的二维码是QR Code,是狭义的二维码。后文所说的二维码除特殊说明外,也都指的是 QR 码。
忘了的同学或者没看过上一篇的同学可以点这里

扫一扫

这个界面想必大家都很熟悉,那么扫二维码的这一过程到底发生了什么呢,作为社交和移动支付“宠儿”的二维码是如何与世浮沉的呢,今天我们来了解一下。

二、二维码识别基本过程

简易流程图

我随意画了一张简陋的流程图,你们也随意看一下吧~
(普通的迪斯科要普通地摇,随意的流程图要随意地看)

好了,你应该看懂了吧,那本文到此为止,散了吧!(哎哎哎,你不会真的走了吧,后面还有精彩的,嘿嘿~)

我们以一张彩色二维码图为例子。(里面承载了一串文本信息,不信你可以扫一扫试试,没毒的,死不了,放心吧,哈哈~)
不正经警告! 下面将以第一人称视角来描述,欢迎来到戏精表演现场。

嗨,大家好,我来自二维码种族,是一位地下工作者,我的使命是传递信息,虽然我长得很美,但我很害羞。什么?你不相信?那我先收起我的矜持,给你发张我的自拍照,我大概长这样子:

–怎么样,我美吗?
–美爆!!!
–(窃喜~)

关键步骤阐述

因为珍贵的信息被藏在了我的身体里,为了完成传递信息的使命,我要经历许多“磨难”,不过我相信我可以的。
古有云,天降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤……
这次地下任务和我接头的是一位外科医生(好像叫“扫一扫”的家伙),他高超的手术技术能将藏在了我的身体的信息取出来。

1. 读取图像,将原始图像变成黑白图像

为了让外科医生方便地取出我身体里的珍贵信息,我要舍弃我美丽的容颜,剥去华丽的外衣,换上病号服,做好手术前的准备。

原本美丽的我(原始图像) 花容失色的我(灰度图像) 以身殉道的我(二值化图像或称黑白图像)

2. 判断黑白图像中是否存在二维码

他和我接头的时候小心翼翼,会确认我的身份,观察我的头和双手、摸摸我的肩膀、骨架,以初步确认我到底是不是他的接头人。
确认之后,他才开始和我聊起天来。从聊天中我发现这个外科医生对我们二维码种族的身体构造十分了解,简直比我自己还了解我的身体。他还向我介绍相关的知识。
他说,他见到过许多二维码,都是方方正正的,一共有 40 种尺寸(Version),最小的尺寸是 21 x 21 的正方形,最大的尺寸是 177 x 177 的正方形,每加一个尺寸长和宽都会增加 4。
他还给我画了两张图,向我解释刚刚为什么要观察摸索我的那几个部位。

基本构造图
定位图案
  • 位置探测图形、位置探测图形分隔符: 用于对二维码的定位,对每个 QR 码来说,位置都是固定存在的,只是尺寸规格会有所差异。
  • 定位图形: 辅助定位,尺寸过大了后需要有根标准线,不然扫描的时候可能会扫歪了。
  • 校正图形: 尺寸规格确定,校正图形的数量和位置也就确定了。
功能性数据
  • 格式信息: 表示改二维码的纠错级别,分为 L、M、Q、H;
  • 版本信息: 即二维码的尺寸规格,QR 码符号共有 40 种尺寸规格的矩阵(一般为黑白色),从 21x21(版本 1),到 177x177(版本 40),每一版本符号比前一版本 每边增加 4 个模块。
数据码和纠错码
  • 数据和纠错码字: 实际保存的二维码信息,和纠错码字(用于修正二维码损坏带来的错误)。

只要了解二维码种族的基本构造,就可以通过鉴别头和双手(三个位置探测图形)、肩膀(定位图形)、骨架(校正图形)来初步判断来者是否是二维码了。

3. 通过解码,读取二维码承载信息,并做相应处理

之后这位外科医生给我打了全麻,我昏睡了过去,等我醒来,他已经拿到了藏在我体内的信息。
后来他给我解释他用了一种名为“解码”的高超手术,还说如果我感兴趣,可以教我。(不,我不感兴趣!)
(解码可以简单理解为将已加密的信息,通过对应的解密方法,还原出原本的信息,暂时不深入探讨。)
最后,他将信息不知道到交给了谁(扫描二维码的使用者和调用方),不过这已经不是我需要关心的了,我已经完成了我的使命。
不过后来,我听到“滴”的一声。听说那天是情人节,阿珍收到了阿强的 520 元转账。

三、走出二维码认知误区

  • 二维码就是微信、支付宝等应用吗?

非也,虽然平常我们一看到二维码就习惯用微信或者支付宝去扫,但是微信和支付宝也只是二维码的使用者
二维码是独立存在的,它并不依赖某一个特定的应用而存在。通用的信息,例如文本信息,普通的网页链接等,一般的扫一扫程序都能扫出来;

  • 为什么有的二维码只能微信扫才能扫出来,有的二维码只能支付宝扫才能才出来呢?

那是因为这样的二维码往往承载的不是通用的信息而是特殊的链接信息,需要程序做出对应的处理。
比如我的微信的个人二维码实际承载的信息是这样的“ http://weixin.qq.com/cgi-bin/readtemplate?check=false&t=weixin_getdownurl_sms&s=download&from=100&stype=10037102 ”,这种携带了微信特有信息的链接用支付宝当然扫不出来了。
实际就是每个二维码的用户(微信、支付宝等)在上面流程图中最后一步对二维码扫描结果的相应处理(显示文本、跳转链接)都有着自己不同的一套处理机制。

  • 二维码有一个正面,需要正面才能扫?

二维码没有所谓的正面,从 360° 都可以扫描,甚至镜面反转后都可以扫描,这都归功于二维码的三个定位点,三个定位点可以确定一个二维码,甚至扫描的时候图像有倾斜都可以通过算法复原后扫描。

四、结语

经过上面的介绍,二维码扫描的基本过程想必大家已经有了初步了解,那么对于二维码具体的编解码过程又是怎样的呢?(教练,orz,我想做手术)那么预知后事如何,请听下回分解!(啪,拍案!)


浅谈二维码系列文章



本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!