為什么二維碼被遮擋一部分也可以?huà)呙璩鰜?lái)
古韻千秋
掃碼支付省去了沒(méi)零錢(qián)的煩惱,給買(mǎi)賣(mài)雙方都帶來(lái)了便利。但是有時(shí)候二維碼被遮擋不完整也是能識(shí)別的,這是為什么呢?下面就來(lái)說(shuō)說(shuō)為什么二維碼被遮擋一部分也可以?huà)呙璩鰜?lái)。
簡(jiǎn)要答案
二維碼在發(fā)明時(shí)有“容錯(cuò)度”設(shè)計(jì),二維碼生成器會(huì)將部分信息重復(fù)表示(也就是冗余)來(lái)提高其容錯(cuò)度。所以即使被遮擋一部分也可以?huà)呙璩鰜?lái)。
詳細(xì)內(nèi)容
二維碼的原理可以都簡(jiǎn)單概括為:在矩陣相應(yīng)元素位置上用“點(diǎn)”表示二進(jìn)制“1”, 用“空”表示二進(jìn)制“0”,“點(diǎn)”和“空”的排列組成代碼。
現(xiàn)在我們大家所看到的二維碼絕大多數(shù)是“QR碼”,QR碼是“Quick Response”(快速反應(yīng))的縮寫(xiě),由日本Denso-Wave公司發(fā)明。
之所以QR碼缺一部分或者被遮蓋一部分也能被正確掃描,要?dú)w功于QR碼在發(fā)明時(shí)的“容錯(cuò)度”設(shè)計(jì),生成器會(huì)將部分信息重復(fù)表示(也就是冗余)來(lái)提高其容錯(cuò)度。QR碼在生成時(shí)可以選擇四種程度的容錯(cuò)度(可修正的字碼量),分別是L,M,Q,H,對(duì)應(yīng)7%,15%,25%,30%的容錯(cuò)度。也就是說(shuō),如果你在生成二維碼時(shí)選擇H檔容錯(cuò)度,即使30%的圖案被遮擋,也可以被正確掃描。這也就是為什么現(xiàn)在許多二維碼中央都可以加上LOGO。
不過(guò),大家不要把QR碼圖案三個(gè)角上的“回字形”圖案遮擋住,那是幫助解碼軟件進(jìn)行定位的位置檢測(cè)符(Position Detection Patterns),在較大的QR碼中還會(huì)有幾個(gè)小回字形,那是位置對(duì)齊符,與檢測(cè)符的用處類(lèi)似。有了這幾個(gè)回字形圖案,你才可以從任何角度準(zhǔn)確掃描二維碼信息。