二维码的原理是什么?

随小刘


二维码是在一维码的基础上发展而来的,最常见的一维码就是超市商品的条形码,它将每种商品进行编号,用粗细不同的黑条相互组合来组成独一无二的商品指纹,但是一维码只能在同一个方向上进行编码,各种组合的数量有限,因此才产生了二维码。

二维码可以在水平和竖直方向上进行编码,用正方形的黑白格来记录信息,原理是利用了二进制的0和1,打个比方,现在有一个10乘10格子的二维码,每一行都有黑白格,如果用1表示白色的格子,0表示黑色的格子,那么我们可以用类似“0100101100”这样的一行数字来表示每一行的代码,那么将10个这样的数字行排列起来,就组成了一个二维码,我们扫码就相当于解码的过程,可以识别二维码上的信息。二维码还具有容错性,一些二维码只需要扫前面几行就可以识别出信息,哪怕二维码局部破损丢失都可能识别信息,不需要扫全,它比普通条形码译码错误率50万分之1还要低,误码率低于1000万分之1。


科学薛定谔的猫


二维码的原理可以分为生成原理和工作原理。

首先是生成原理:

该原理是,用特定的几何图形按编排规律在二维方向上分布,采用黑白相见的图形来记录数据符号信息。

为了利用计算机内部逻辑,用数字“0”和数字“1”作为代码,同时使用若干个与二进制相对应的几何形体表示文字数值信息。

这里面我有几个小知识点想提一提。

知识点一:二维码共有40个尺寸

也就是版本version,Version 1.0是21 x 21的正方形,Version 2.0是 25 x 25的(公式:(V-1)*4 + 21)。所以最大的尺寸就是177 x 177 的正方形。


知识点二:三个点确定一个面

二维码只有三个角上有位置探测图案,就是这个就是为了更好的读取二维码。那有人问为什么不是四个能,这个角也不是多余的,可以镶嵌别的信息。

知识点三:旋转二维码,也可以识别

因为有知识点二中所说的位置探测图案和分隔符,所以,无论是正着扫码,还是竖着扫码,或者斜着扫码,信息都可以被识别。

再来看看,二维码的工作原理:

通过常见的图象输入设备或光电扫描设备,它们可以自动读取,并且会对识别出的信息进行自动处理。

因为每个码制有自己的字符集,一个一个的字符占据自己的位置。所以,通过扫描能读取的数据信息在二维码中的位置是由定位图形和分隔符决定的。才能够快速地识别和处理图形旋转、变化等问题。

这里同样有几个有趣的小知识点。

首先,二维码不但只有黑白色的,普遍使用黑白色是为了提高其工作效率。

其次,二维码最早源于日本,但在我国被发扬光大



镁客网


二维码的原理说简单也简单,就是把编码的内容,用二维图像的形式显示出来;但说难也难,难在如何让手机方便识别,如何即使有了污损也能还原。

前者的原理:把编码的内容,用二维图像的形式显示出来。其实我们已经做了几千年了,绘画、书写,都是这样的原理。所以没有什么稀奇的。二维码最有意思的是他的困难之处。

(二维码,不过扫不出来,因为少了一个定位点)

我们用手机扫描二维码的时候,可不一定是正对着的。我们知道,根据透视的原理,我们拍到的东西基本上不是真正的正方形。这个时候,程序就要能还原回去。二维码四周的三个大黑块和一个中型黑块,就是辅助手机定位的。知道了这几个点的位置,我们就能把二维码还原成正方形。

还原成正方形之后,程序再将其中的0-1数据(黑白)识别出来,然后再解码,就能获得二维码的内容了。

二维码还需要能够承受一定的污损,这样即便有一点瑕疵,也不妨碍我们使用。这就要求在编码中要有一定的冗余。比如把数据重复很多遍,这样损坏一部分,仍然能知道全部的数据。


章彦博



二维码是一种比一维码更高级的一种条码格式。一维码只能在水平方向上表达信息,而二维码在水平和垂直方向都可以存储信息。一维码只能由数字和字母组成,而二维码能存储汉字、数字和图片等信息。二维条码有一维条码没有的“定位点”和“容错机制”,容错机制在即使没有辨识到全部的条码、或是说条码有污损时,也可以正确地还原条码上的信息。

常见的二维码矩阵式二维条码,是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点的出现表示二进制“1”,点的不出现表示二进制的“0”,这样的排列组合确定了矩阵式二维条码所代表的意义。

二维码的高密度编码,信息容量大,常见的QR码可容纳多达1850个字母或2710个数字或1108个字节或500多个汉字。二维码在最早1994年发明时,基本信息就是只存放在二维码内的,但现在的二维码的用法多是互联网应用,所以更多的是一个网址。

二维码中需要三个定位点,可以理解方块用于定位,三点确定一个面,可以帮助机器正确的解读,用三个点是为了能够让倾斜条件下,也能阅读并识别,三个点可以完整的定位一个正方形,这样就能很容易确定数据范围。所以二维码看起来像个正方形,现在也有很多变异的二维码,但我们常见的基本轮廓大都是正方形。


震长


来来来,极果君又来讲课讲了~

虽说二维码的标准有很多,但现在说起它,基本上指的就是常见的QR码。QR,代表了快速响应。拿起手机,对准,滴,所以叫QR。你应该注意到了,QR码上有三个大的黑色方块,有些中间还会被logo挡住一部分。

二维码的原理是用黑色和白色的方块来代表数据中的0和1,摄像头识别出颜色和排列就能解读出二维码包含的信息。但这有个问题,方块不分上下左右,换个方向去读,程序还能认出原来的信息吗?

能。

这靠的就是上面的三个大黑块,他们在整个图案中起到一个定位的作用。程序识别到这三个块,就会意识到这是一个二维码,并且会自动识别它的正确朝向:两个黑块在上,一个黑块在左下。

有些朋友可能会问为什么不是放四个,有这种想法的同学请自觉面壁( ͡° ͜ʖ ͡°)。

问为什么不放俩的同学也去一起站好。


至于为什么不放一个,其实并不是因为不可行,而是因为不够可靠。你想啊,就一个定位标志,万一污损了,这二维码就读不出来了对不对?

那中间挡住了一块儿怎么还能读呢?


那是因为QR码带有纠错功能,只要定位部分保持清晰,就算有部分区域被遮挡破坏也能保证正常还原数据。根据需求不同,纠错一共有四级,分别能恢复7%到30%不等的数据量。这样只要logo别太大,被挡住也没问题啦。


极果网


二维码在我们的生活中已经越来越不可代替,买个早点付个款,甚至追上喜欢的妹子要个微信,也都是展示出二维码自己来扫一扫。但是这个天天见着的小黑白块,为什么就能让你输出金钱,勾搭妹子呢 ?

二维码是一维码的扩展。 在超市购物时,最终的清算,基本上都是柜员扫一遍所有物品的条码然后得出总价。这个条码就是一维条码,将黑色条纹和空白间隙按照一定的规则排列,做成一个平行线图案,就能表达一组相对简单的数字符号信息。

一维条码只在排列黑白条纹的一个方向上记录数据,而二维码则将另一个方向扩展使用上,使其在另一个垂直方向上也记载数据 。虽然形式上有排列式,矩阵式等不同的形式,但是底层代码编码编制上都还是基础的0,1逻辑,使用与二进制相关的图形表达文字数字信息,扫描设备识别图形并在相应特定的字符集中取出对应的数据字符实现自动处理。 并且二维码在一维码的基础上,增设了“定位点”以及“容错机制”,记载数据量更多,能准确传递如图片链接,网络链接等数据。

定位点是二维条码的一个特殊的定位标记。通常的二维码我们都能看到三个角是一样的黑白包容的方块,但是另一个角则不一样,因为三个点就能表示限定出一个矩形的范围,并能让识别设备从正确的方向来识别它,所以二维码不管是从哪个方向上都能识别出来的。

二维码编码生成过程本身是将数据信息转换为图形的过程,读取也就是从图形中读取数据信息。二维码容错性是通过在二维码生成时进行冗余设定,我们将要存入的数据,进行冗余运算在二维码中存入多条相同的数据。经过这个冗余运算的步骤后,生成出来的二维码在有部分破损或者遮挡的情况下仍可识别。如常见的二维码为 QR 码,QR 码的容错率从低到高就有 L,M,Q,H 四个容错等级,等级越高容错性越好,相同破坏比例下被识别的概率越大。而平常使用一般的二维码生成软件也能达到 30%的高容错率,有一点破损污点来识别也是基本OK的。


stormzhang


条码就是由一组按一定编码规则排列的条、空符号,用以表示一定的字符、数字及符号组成的信息。条码可能是迄今为止最经济、实用的一种自动识别技术。条码技术具有输入速度快、可靠性高、采集信息量大、灵活实用几个方面的优点。

二维码出现之前,还有一种一维码,也就是条形码,条形码由于是一维条码,更多的描述物品的信息只能依赖于后台的数据库。但随着人们对编码的大容量和高精度要求的进一步提高,一维码已经不能满足人们在某些领域的需要,正是在这种技术背景下,二维码的概念出现了。

二维码是在一维码的基础上,在两个方向上进行的编码和解码。二维码是用某种特定的集合图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息;这将极大地增大编码的容量,从而很好地解决条形码容量不足和编码加密机制过于简单的问题,从而增强了条形码的容量和加密功能。在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图形输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制都有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能及处理图形旋转变化等特点。

一切正在发生,思想陶熔鼓铸。


一切正在发生


这个问题,我以一名专业性学生的知识给大家解释下。

我们先了解什么是二维码。不知道从什么时候开始,我们的生活突然之间就充满了二维码。看网页要二维码,加好友要二维码,现在就连楼下卖水果的大爷付款也要扫二维码。

那么大家有没有想过,这个长得奇怪的东西,到底是怎么来的呢?二维码到底是什么原理?今天我就用我专业性的知识给大家科普一下。

我们在介绍二维码原理之前,给大家说下条形码,也就是超市收银员结账的时候扫的那个东西。电脑在水平方向上识别粗细不均的黑白条,就能找出藏在里面的商品编号信息,比如价格,商品名称。相比于条形码只在一个纬度上工作的原理,二维码在水平和垂直两个纬度上都携带了信息,也就是做成了这个方块状的东西。条形码和二维码这对好基友,说白了其实就是给数字和母还有符号这类的信息换了一身衣服,把他们打扮成了能给电脑识别的黑白条和方块。

那么最关键的问题来了,这种方块是怎么变成能被电脑识别的图案的呢?这就要提到一个人类具有划时代的发明了,那就是二进制。我们平时使用的数字和字母还有汉字等各种字符,虽然画风完全不同,但是机智的人类发明了一种方法,使他们都能被统一转变为0和1组成的二进制数字序列,这个转化的过程叫做编码。

国际上有几套通用的编码规则。我们今天就用一个例子给大家感受下,编码是怎么回事。比如AB,这个由两个英文字母组成的字符。根据编码规则,每一个独立的英文字母都有一个唯一的十进制数字与之对应,而想AB这样的字符串,则要在对应数字的基础上在做运算,而运算结果在转化成二进制,就是一串数字。对了,在整个计算机和物联网文明都是建立在这种二进制编码上的。你在看的视频,在你的手机上只是一串0和1而已。

我们回到二维码的生成原理上,字符在变成只有0和1组成的数字序列后,在进行一系列优化算法后,就得到了最终的二进制编码。在最后这串编码中,一个0对应的就是一个白色小方块,一个1对应的就是一个黑色的小方块。我们把这些小方块按照8个一组,填进大方块里,这就是一个完整的,可以被手机相机识别的二维码图案了。

对了,不知道大家注意到没有,为什么所以的二维码,都有三个小方块在边上?其实这个三个一模一样的小方块是用来给手机相机定位的,这样不管你的二维码是正的扫还是倒着左右扫,都能被手机相机识别,并且扫出来的结果都一样。


南色空儿


安静区域:空白边框,可以将代码与其他打印信息隔离(例如,在脏信封上,报纸的黑白打印或污迹产品包装上)。

Finder模式:三个角落中的大黑色和白色方块可以很容易地确认这是一个QR码(而不是,例如,Aztec代码)。由于它们只有三个,所以很明显代码的哪个方向以及它指向的角度(除非代码在某种程度上被部分遮挡或损坏)。

对齐模式:这确保代码可以被破译,即使它是扭曲的(以某个角度查看,打印在曲面上,等等)。

定时模式:在三个取景器模式之间水平和垂直地运行,由交替的黑色和白色方块组成。时序模式可以轻松识别QR码中的各个数据单元,在代码损坏或失真时尤其有用。

版本信息:QR码标准有各种不同版本;版本信息(位于两个取景器模式附近)简单地识别在特定代码中使用哪一个。

数据单元:每个单独的黑色或白色方块不属于标准特征之一(时序,对齐和其他模式),包含代码中的一些实际数据。


我会在这里发布所有与科技、科学有关的有趣文章,欢迎订阅我的头条号。偶尔也回答有趣的问题,有问题可随时在评论区回复和讨论。


杨沐白


这个问题好,我的毕业设计就是做二维码的,做一个电脑生成二维码的软件,输入文字,网址,一点自动生成二维码,


然后做了一个识别的实物设备,用一块触摸屏,一个摄像头,一块STM32开发板,做好编程完成后,用摄像头一扫就可以识别出二维码的信息。对了,我用的是自定义的编码规则,想了解的可以关注交流。

其实很简单,就是将你输入的文字网址等先转变为二定位的0.1代码,然后将01分别对应成黑白像素块,然后按照一定的排列规则分布排列在二维码的信息存储区,当然这中间少不了加密。


目前市面上的二维码大都用两三种编码规则,但二维码编码规则好几十种,当然你也可以自己定义,其实很简单的。


对了,二维码的三个角的那个大方块叫做定位区,里面右下角还有个辅助定位区,这点看着名字大家都能理解吧


分享到:


相關文章: