當前位置:
首頁 > 知識 > 菊花綻放:微信是如何識別小程序碼的?

菊花綻放:微信是如何識別小程序碼的?

【小程序碼-設計篇】菊花綻放 一文中介紹了小程序碼的設計過程,本文繼續分享我們在小程序碼識別上面的一些心得,權當拋磚引玉,歡迎有共同興趣的同事一起討論。

識別之前,我們需要對照片做什麼處理

引擎其實並不關心這朵菊花是什麼顏色,因此,我們把圖片簡化,處理成灰度圖。

二值化可以讓引擎做的事情更簡單,因此再將灰度圖處理成點陣圖。

如何在黑白圖中快速找到菊花的位置

細心的朋友肯定注意到,每一朵菊花都有兩個共同點:

3 個圓形的「牛眼」(定位點)

右下角的「小程序 LOGO」

以上是小程序碼的定位信息,準確的定位是識別的第一步。

如何快速找出所有可能的定位點

在設計這個菊花碼時,我們是按照 0.8 : 1.2 : 1 : 1.2 : 0.8 繪製定位點的。

為什麼不採用 1:1:1:1:1 的比例?因為前者比例比較貼近黃金比例,更符合人類審美需求。(下圖右為 1:1:1:1:1)

基於這個特性,使用水平,垂直,45 度角等三個方向的掃描線掃描全圖。如果三個方向的黑白像素都接近這個比例,顯然它極可能是一個定位點。

怎麼定位「小程序 LOGO」

最簡單的方法,根據 3 個定位點的位置,預估小程序 LOGO 的中心位置(平行四邊形)

在很多扭曲的情況下,上述方法仍有較大偏差。因此我們提出了一種改進方法:基於 LOGO 為圓形的特性,將預估的中心點修正到圓心位置

具體校正方法如下:

GIF/32K

拍攝出來的碼這麼「歪」,能否進行「擺正」

由於上文中,我們已經找到了碼在圖像中的位置,但由於這個碼可能已經被旋轉,扭曲,所以,我們需要再做一次矩陣變換(透視變換),將其變換到直角坐標系。變換後的碼,已經比較易於被機器解讀了。

怎麼讀碼

二維碼怎麼讀碼

點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 JavaScript 的精彩文章:

4種JavaScript的內存泄露及避免方法
如何在沒有實際項目經驗的情況下找到工作
JavaScript 學者必看「new」
程序員才有的表情包,拿走不謝!
細數程序員七大恨

TAG:JavaScript |