我們幾乎每天都要掃碼,登錄網站、登記信息、消費支付、添加好友……隻要打開掃一掃,能省去不少繁瑣步驟。
而當每次打開工具掃碼時,這些工具通常都會給出 1:1 的掃碼框,将框對準二維碼,手機就能馬上識别碼内的信息。
然而,不知你有沒有發現,即使這些工具會将「掃描區」框出來,有時候其實不需要對準框就能完成掃描,隻要二維碼在相機取景範圍内,系統就能馬上将内容識别出來。
那這個框有何用處?
其實這跟每款 app 對掃描功能的用途有很大關系。縱觀我們目前日常最常用的 10 款 app,二維碼掃描頁的設計可以分為幾類:
固定區域掃描是我們目前接觸最多的掃碼模式,用戶需要将手機對準二維碼掃描才能讓手機完成識别,若是目标二維碼不在框内,app 就無法識别内容。
而在一些我們較為常用的 app,比如微信、支付寶,則是從過去的「固定框掃描」變成「全屏掃描」,即整個手機屏幕都是掃描框。
手機無需正對着二維碼也能完成識别,識别速度也比有框掃描快很多,相機還沒對上焦,系統就能馬上識别出信息。
▲ 二維碼不在框内也能完成識别(實際速度比 GIF 更快)
當然在此其中也有特别個例。當我打開微博掃碼時,頁面是個有固定掃碼區的設計,但 app 的掃描機制本質上其實是全屏掃描。所以每當我準備掃描時,二維碼還沒進框,信息就已經被讀取出來了。
莫非是設計師偷懶了?也不一定。
要扒開掃描頁的細節,單從表面看顯然是不夠的,還需要從多方面考慮,比如掃碼用的硬件,還有軟件層面上的解碼能力。
實際上要将掃碼頁做成全屏并不難,但專門騰出一個方框作為掃描區也并非多此一舉。
究其原因,在二維碼剛進入我們的生活時,無論是 app 本身或是掃碼設備,都沒有做專門的優化,掃碼成功率往往和二維碼所處環境光線、距離和清晰度有關。
于用戶個人而言,掃碼區所提供的是一個掃碼識别的提示,它的任務是告訴用戶相機已經準備好掃描,隻要對準即可讀取信息。
而對于設備本身,相機能否快速識别二維碼,這跟相機的對焦性能、處理器的解碼運算能力不無關系。
二維碼的曆史最早可以追溯到上世紀八十年代,但直到過去十年才開始普及到我們的日常生活中。
但早期智能手機的對焦反應、速度都相對較慢,而且也容易受環境光和鏡頭清晰度的影響,因而在開發 app 掃描頁時,開發者需要通過調整相機取景範圍,讓相機向特定區域對焦,而不是廣域對焦。
▲ 舊手機的掃碼速度要比新手機慢一些(留意對焦拉風箱,使用魅族 MX5 測試)
簡單來說,将掃碼區域獨立出來,實際上也是為了照顧早期對焦速度相對較慢的設備。原理類似于相機的定點對焦區域,相機隻對方框内區域測量、對焦,從而減少目标二維碼周邊的其他因素幹擾,以此提升相機對焦速度和掃碼成功率。
換個角度看,掃碼方框除了是告訴用戶掃描功能開啟外,也是一種提高識别準确率的方法。隻要方框内二維碼關鍵元素符合要求,識别準确率約等于百分之百。
為了讓用戶能在不同環境和條件下掃碼,開發者在使用如 zxing 等掃碼開發庫時,會集成如調用閃光燈、遠距離自動變焦等等等等,其目的都是為了讓手機能看清方框内的二維碼信息,方便用戶在任何使用場合掃描。
不過,近幾年智能手機的相機對焦速度提升很快,核心處理器對圖像處理的能力也逐步提升,因此現代手機掃碼也不需要長時間的對焦,即便需要,也隻是在不到一秒内就能完成。
與此同時,随着二維碼的應用漸成主流,app 開發商也通過自創掃碼引擎的方式,提高掃碼的速度和成功率,而不僅隻依靠硬件層面來完成識别過程——微信便是其中一家。
微信雖然不是最早使用二維碼的 app,但不得不承認它是應用二維碼和掃碼最頻密的一款 app,這除了讓用戶一旦提起「掃碼」就想到微信以外,也間接推動了微信對掃碼技術的開發。
在 QBar 問世前,掃碼引擎主要為 zxing 和 zbar 兩種,而這兩種引擎有不同的優勢,但都有各自的缺點,同時這兩種引擎對條形碼識别的限制也相對比二維碼更多。
2016 年,由微信技術團隊通過公衆号「微信派」發布的一則推文中,他們曾介紹過 QBar 掃碼引擎的工作原理。
相比于傳統的掃碼方式,QBar 會在掃碼頁工作時通過預判算法篩出有條形碼 / 二維碼内容,通過掃描頁快速識别出畫面前的圖形碼信息,随後通過 QBar 引擎對圖像解碼,輸出最終結果。
換言之,當用戶打開掃碼頁時,隻要框内有條形碼或二維碼圖像,系統就已經開始預判用戶的掃碼目标,并開始進行分類和識别。
▲ 隻有一角都能識别 GIF(使用微信掃一掃功能)
而且由于二維碼本身也有容錯機制(原本是為了讓二維碼在破損下也能正常使用),相機其實并不需要對照完整的二維碼,隻需在容錯範圍内找到二維碼關鍵點就能識别。再結合 QBar 引擎特性,掃碼相機能通過預判和篩選出二維碼及其關鍵信息,在一秒内完成識别和解碼工作。
▲ 微信掃碼預判模塊流程圖,圖片來自:微信派
「微信派」所公布的識别原理看似複雜,但在現代智能手機中,這些都隻是幾毫秒就能完成的任務。根據「微信派」的參考數據,iOS 客戶端微信完成解碼時間為 5 毫秒,Android 客戶端則是 12 毫秒。
至于為什麼 iOS 設備的掃碼速度會比 Android 更快,這可能是跟當時 iOS 與 Android 設備之間的解碼性能有關系。
▲ iPhone 11 Pro Max 使用微信掃碼速度(GIF 幀數原因,有輕微加速)
在日光環境下的測試中,使用 A13 處理器的 iPhone 确實做到還沒對上焦就已經完成識别,即便是 2016 年的 iPhone 7 也能做到的「一舉即掃」的反應;而使用骁龍 865 的 Android 旗艦反應也非常迅速,但相比于 iOS 也有着微小的速度差距。
如果說 iPhone 掃碼是「還沒看清就完成識别」,那麼 Android 則是「看清楚就馬上完成識别」。
兩者之差,僅在毫秒。
▲ 一加 8 使用微信掃碼速度(GIF 幀數原因,有輕微加速)
不過盡管 Android 的掃碼速度稍遜 iOS,但相比于五年前兩個陣營之間的速度差,Android 的提升已經非常明顯,和 iOS 的識别速度相差無幾,若是不留心幾乎看不出兩者的區别。
所以過去 5/12 毫秒的識别時間也不是絕對值,它們會随手機硬件和軟算法的叠代而變化。
值得一提的是,在使用 Android 設備同時掃描多個二維碼時,會将畫面内的 多個二維碼一同識别,随後提供入口讓用戶自行選擇對象;而 iOS 雖然識别速度更快,但在面對多個二維碼時,則是由系統随緣多選一了。
▲ 沒有固定掃描框的微信掃一掃可同時識别多個二維碼(注:目前該功能僅在部分 Android 客戶端中灰度測試)
除微信以外,支付寶也采用了和微信類似的全屏幕掃描,其識别速度雖然比微信稍慢,但也能做到擡手即識别的水準。
根據 CSDN 網友分享的技術文檔,支付寶的掃碼功能由 libqrencode 庫集成,雖然不是微信的 Qbar,但是其深度優化下的識别速度也能做到以毫秒計算。
有了更完善的算法引擎和硬件解碼能力,手機對二維碼的識别也變得「敏感」了起來,它們在無需高清圖像的條件下,也都能快速識别出碼裡的内容。
如此一來,過去用于固定焦點的方框,自然會被全屏掃描所取代。
▲ 支付寶的識别速度也很快(測試平台 iPhone 11 Pro Max)
掃碼形式上的變化,在微信、支付寶、微博這些用戶掃碼行為較多的 app 中體驗升級尤其明顯。
用戶在微信、支付寶可以快速完成掃碼交易;微博則能讓用戶快速完成掃碼二步驗證。
掃碼速度、準确率的變化有賴于幾家頭部企業對掃碼引擎和算法的改良,但從側面看,這其實也得益于手機硬實力不斷升級,隻有分辨率更高的相機、運算性能更強的處理器,才能承載更複雜的解碼引擎和算法,實現毫秒級的掃碼識别能力。
▲ iPhone 7 與舊版微信掃描框
從掃碼頁面的進化,可見手機掃碼效率正在不斷提升,常用 app 在掃碼時都無需對準碼,即能完成掃描。那我們回頭來看,最為原始的掃碼方框還有存在的意義嗎?
其實還是有的。
首先一方面是當前舊設備的留存率較高,智能手機的使用壽命普遍都在 2-3 年,甚至長達 4-5 年,舊手機的對焦和識别能力都不如現在的新手機。
掃描方框的作用,正如在前文所述,便于舊手機快速找到焦點,提升二維碼的掃描速度和準确率,而且它也能直觀引導用戶将手機對準掃碼,這其實也間接提升了舊手機在每次掃碼時的識别效率。
▲ 京東、淘寶掃碼雖是全屏但仍需要對準框内掃描
此外,盡管微信有自己的掃碼引擎,但并非所有 app 開發商都具備開發引擎或專門優化引擎的能力。
對于掃碼需求不大的 app 來說,掃描功能主要也是掃描二維碼,掃描成功率比速度更重要,因此在沒有對識别引擎進行特定優化的前提下,使用原始的框内掃描,可以保障新舊設備掃碼都有較高的識别成功率。
二維碼的普及極大簡化了我們在查詢、支付、登記時的操作,而用于掃描它的手機,也在随着軟件和硬件的解碼能力升級,變得高效且多樣化。
如今的掃碼頁所能掃描的已經不止二維碼,它還能結合神經網絡進行識物。根據微信最新功能文檔介紹,基于中國科學院昆明植物研究所提供的 85 萬份植物圖像數據,目前掃一掃功能能對 3.6 萬多種植物進行識别,基本涵蓋了我們日常所見的花草樹木數據。
可見,掃碼頁正随着更多元的算法,承載着更多功能。
正因如此,過去用于引導用戶、提高設備對焦速度的掃碼框也随算法升級、硬件叠代、掃碼頁支持更多掃描目标而漸漸退出舞台。然而它并沒有真正離開我們,隻是從過去的 1:1 演變成和手機屏幕比例一緻而已。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!