上上千 发表于 2023-07-18 12:15:17

科学思维-----二维码破损了为什么还能扫出来?

         二维码如今已经非常流行了,我父母那一代第一次感受到移动互联网真的到来了,生活变了天,再也不会劝我不要网购,容易上当,就是他们几年前有一次看电视,报道了一个在深圳的乞丐,要饭时身前放的已经不是一个破碗了,而是一张又脏又大的二维码。

二维码在中国的兴起就是跟wei/信紧紧绑定的,那是在2011年底,因为那一年12月14日,wei/信3.5版本第一次支持了二维码,但那时候只支持个人名片的扫码。

一年后,wei/信4.3版本才正式支持所有二维码。这些重要时间节点我们可以查查百度指数得到印证。

二维码其实来自于条形码:

条形码最早是1949年美国的食品公司为了追溯食品来源发明的。到了一九五几年的时候,美国的大型超市里出现了一个问题,收银员少,顾客数量多,每人都买一整车的东西运回去,收银员手动输入购物小票的内容实在太慢,为了加快速度,还得再配一个专门打字的。但当某个超市从当地食品公司进货时发现,他们登记食物信息来源只要扫一下条形码就行,突然意识到自己可以这么做,就不用再给那个打字员开工资了。以至于现在所有超市都这么做。

条形码是靠宽窄不同的线存储着信息的,它可以按一套规则翻译成一串数字的,这串数字背后又有一套规则,定义了每一位都是什么含义,所有信息完全存储在线条宽窄里。但线条长短这个维度其实没用来存储信息,可是作为一个贴在物品上的标签来说,不能只有长度没宽度,所以条形码这张纸至少浪费了一个维度。

如果我们能利用上另外的维度,那岂不是更好?

但这也需要契机,因为“如非必须,勿增实体”,是工程领域最流行的行事方法。 条形码只要够用,就不会去发明其他的替代品。

但问题最终还是来了:

当时丰田汽车公司的最大的零配件供应商,叫电装株式会社就发现,他们的零件品类实在太多了,喷油器、散热器、氧传感器、起动机、点火单元、发电机、冷凝器、仪表、车锁、雨刮器、电子钥匙、安全气囊、车载导航,上百种。东西一多,就觉得还是用日语更方便,可是传统条形码不支持片假名,想办法扩容的话条形码标签又会变得很长,于是自力更生,组建了一个研发团队,其实就俩人,用了1年半的时间就研发出了现在我们看到的二维码,那一年是1994年,距今23年,这个二维码就支持数字,字母,符号,拉丁文,中文,当然,肯定还支持日文的片假名。

这些就是二维码一路走来的故事。
为什么二维码涂抹两下不会认不出来?
手机在识别二维码之前其实都是先给它拍照,然后再分析。

二维码的4个角上,除了右下角以外,在其他3个角都有个大眼睛一样的框框,这3个大眼睛是告诉手机二维码这张图在哪里,方向是朝哪边的,右下角虽然没有大眼睛,但仔细看,你能看到这张图横平竖直地还分布着22个小眼睛,它和3个大眼睛配合在一起,用来调整图形畸变。

比如你是歪着扫二维码,或者二维码贴在一个曲面上,都是需要靠这些小眼睛帮忙正畸,这4个点【违规内容】好,手机就知道,哪儿是边框,哪儿是左上方了,所以我们扫码时无论正着扫还是斜着扫都可以识别出来。

三个大眼睛靠近内侧的那个直角的尖尖其实还有虚线连着,但这个实在淹没在信息里看不太出来了,虚线是刻度,这很重要。

除此之外剩下的区域就可以用来存储正文了,剩下的格子越多,能存入的内容就越多,现在总共有40个二维码版本,最低版本是21×21个格子,最高的是177×177个方格,上图里给的就是最高版本,现实中很少用到。

接下来就是编码规则:比如我要存01234567这8位数,先3个3个分组,012一组,345一组,67一组,然后再把这3组数用二进制表示出来,写好以后前面再加上14位的标志位,具体怎么加就不说了。

现在编码的原文就写好了,但是这不能直接转换成二维码,否则转换出来的图形少了一个角都会导致整张图片都读不出来。
那怎么办呢?

就要用到 Reed Soloman 这种方法,把纠错码加进去,纠错码怎么加就不解释了,估计通讯工程的本科课程才会学到。

总之,原理上说,其实就是把01234567这串信息多写几遍,然后打散,这样有地方受损也能有机会在其他地方找到原文。

纠错码可以纠多少错误是有分级的,有7%,15%,25%,30%四个级别,也就是最多遮挡住30%的区域不影响解码。
加入30%纠错码的二维码
所以这就是为什么我在刚刚的二维码上画了个笑脸还能读出来,因为我设的30%的纠错码,我这张二维码是一段200多字的文章,感兴趣的同学可以扫扫看。

现在你知道为什么二维码破损了或者添几笔还能读出来了吧!

纵观二维码的整个发展过程,我们就可以体会到工程师的视角,也许在他们的世界上有2类问题:

一类问题,他们可以准确把握每一个细节,就像二维码图形,每个像素点都能说清是怎么来的。比它更复杂的系统也多得是,比如天河二号超级计算机,虽然极其复杂,但任何故障我们都能查出来,这是因为整套系统从零开始都是工程师们一手搭建的。
但另一种问题,比如为什么有些女生一遇到具体技术细节就特别抗拒?这种问题工程师就很难回答了,因为这些女生的知识构架,不是工程师从零一手搭建起来的,这些人过往的经历、思维习惯都在影响着这些女生的行为方式,对工程师来说,信息缺失太多,没法回答,所以只能尽量体谅对方,用简单的语言把这个过程大致描述出来。



许多鱼 发表于 2023-07-18 12:16:16

                           支持一下,୧(๑•̀⌄•́๑)૭                                             

梦想天堂 发表于 2023-07-18 12:17:30

看看了……………

偶得桑 发表于 2023-07-18 12:17:35

看看看看看看看看看看看看看看看了

青言 发表于 2023-07-18 12:18:51

不太懂               

南易. 发表于 2023-07-18 12:21:06

看看                                       

小豆. 发表于 2023-07-18 12:22:06

看看看看看看看看看看看看看看看看。

詹姆斯 发表于 2023-07-18 12:29:19

不太懂               

深圳建鑫塑胶 发表于 2023-07-18 12:29:46

科学思维-----二维码破损了为什么还能扫出来?

珍惜 发表于 2023-07-18 12:29:56

看帖后回帖是一种美德,同时对发帖人也是一种尊重
页: [1] 2 3 4
查看完整版本: 科学思维-----二维码破损了为什么还能扫出来?