新闻  |   论坛  |   博客  |   在线研讨会
二维码究竟是怎么被扫出来的
电巢 | 2022-11-27 22:58:21    阅读:5959   发布文章

image.png


我们每天都会扫大量的二维码,乘坐地铁需要扫描二维码、付款时需要扫描二维码,那你有没有想过,二维码到底是怎么被识别出来的呢?

image.png


虽然每一个二维码都是不同的样子,但它们本质上都是由无数个黑色小方块和白色小方块组成。二维码虽然看起来就是一坨正方形的东西,但实际上我们可以根据它们的功能将其分别理解为定位区、储存区以及格式区,我们用不同的颜色将它们区分开来。如下图。

image.png


首先是定位区由三个大的方块儿,以及两条与其他区域藏在一起的直线组成。无论是二维码内储存的任何信息,手机在照射到二维码时,首先便通过识别这三个方块进行定位,确定二维码的范围和方向。通过定位之后,我们无论用任何角度去扫机器,都能对二维码进行准确的识别。

除去定位区,剩下的部分全部由造型规整的黑白方块组成,就是数据储存的区域。在这里,我们就要提一下二进制。我们都知道在计算机上所有的信息都由数字0和1交替组成。而在二维码中黑色小方块代表了1,白色小方块代表了0。数据信息在不同的编码规则中,按照着0和1交替组成。假如在使用的二进制编码,中英文数字O的二进制排列是01001111。那么在二维码中就有一个白色方块,一个黑色方块,两个白色方块和四个黑色方块依次组成。手机对着一扫以八个方块为主,由右下角开始依次读取,并把这些黑白方块转换为0和1。再将其识别为二进制数字序列,然后进行编码,便能知道二维码中的信息了。当然这只是一个简单的原理,具体实际应用中整个识别的运算过程会更加复杂一些。

image.png


说到这,二维码中的信息就被提取出来了。我们刚刚还提到一个格式区,这是干什么的呢?实际在识别方面呢,二维码还包含了一定的容错机制。数据序还可以做更细的划分,将其中一部分划出来作为容错区域。当二维码出现破损和遮挡时,容错区的数据备份便可以作为补充辅助识别。而根据容错区域的大小,我们可以将二维码的容错等级分为四级,大小由7%到30%不等,区域越大,容错率自然越高。储存区域也会相应减小,而这个容错等级就被藏在了格式区内。那么在识别前,机器就需要先对格式区进行扫描。了解到二维码的容错等级后,再对内容进行准确识别。

image.png


image.png


除此之外,二维码还根据大小分为了四十个不同的版本,不同的大小可以包含的数据多少也不尽相同。在格式区内也包含了二维码大小的版本信息。机器在识别前也会对这一部分提前扫描识别。在实际应用中,二维码的识别顺序是按照定位去进行定位,格式去预识别二维码信息,最后在储存区读取二维码数据的顺序进行的。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客