04.03 乾貨|二維碼工作原理及美化設計基本要義

<table><tbody>

除了乾貨,其它什麼也沒有

職場

數據

新媒體

設計

極客

/<tbody>/<table>

高級二維碼定製:021 37218818

干货|二维码工作原理及美化设计基本要义

(GIF 演示 QR 碼識別原理)

昨天我們在《裡有個二維碼彩蛋你看到了嗎?》文中談到了一個神秘二維碼,很多讀者表示為什麼長按識別沒有用?因為二維碼無論生成、復原、美化都需要遵循其本身工作原理。已經模糊的二維碼,只有經過專業處理才能還原。

我們也知道,一部分讀者嘗試過二維碼美化,但是也正如昨天《隨筆|不會做技術的新媒體人將被陸續淘汰》提到,如果本身你沒有深入瞭解過二維碼的技術原理,硬要在像素點上逐個進行加工,那隻能“死磕”二維碼,浪費大量寶貴的時間。

那麼今天不妨跟隨我們讀一篇非常適合入門的碩士論文。其作者是電子科技大學的一位研究生,全文算法代碼我們不粘貼在文章中,如需閱讀原論文,下載方式在文末。

二維碼識別流程圖

一個二維碼被識別,其基本流程是這樣的▼

干货|二维码工作原理及美化设计基本要义

天吶,所以在例如你的微信“滴”的一瞬間,竟然發生了這麼多事情!

1.首先,設備要尋像圖形識別組件,我們來了解其設計與實現。

1.1確定尋像圖形方位

1) 選擇圖象的反射率最大值與最小值之間的中值確定閾值,使用閾值將圖象轉化為一系列深色與淺色像素。(這就是為什麼 JZ 在講座裡一直說,二維碼是採用了灰度識別)

2) 確定尋象圖形,在 QR 碼中的尋象圖形由位於符號的 4 個角中的 3 個角上的 3 個相同的位置探測圖形組成。每一位置探測圖形的模塊序列由一個深色—淺色—深色—淺色—深色次序構成,各元素的相對寬度的比例是 1∶1∶3∶1∶1。對本譯碼算法,每一元素寬度的允許偏差為 0.5(即單個模塊的方塊的尺寸允許範圍為 0.5~1.5,3 個模塊寬度的方塊的寬度允許尺寸範圍為 2.5~3.5)。

a. 當探測到預選區時,注意圖像中一行像素與位置探測圖形的外邊緣相遇的第一點和最後一點 A 和 B(圖 3-3)。對該圖像中的相鄰象素行重複探測,直到在中心方塊

X 軸方向所有穿過位置探測圖形的直線被全部識別。

b. 重複步驟 a,在圖象的 Y 軸方向,識別穿過位置探測圖形中心方塊的所有象素行。

干货|二维码工作原理及美化设计基本要义

1.2.確定尋像圖形中心直線及探測中心

1) 確定探測圖形中心,通過在 X 軸方向穿過位置探測圖形中心塊的最外層的象素線上 A、B 兩點連線的中點連一直線,用同樣方法在另一垂直方向上劃一直線,兩條直線的交點就是位置探測圖形的中心。

2) 重複步驟 1,確定其它兩個位置探測圖形的中心位置。

2.然後,我們來理解一下格式信息探測組件的設計與實現。

干货|二维码工作原理及美化设计基本要义

如上圖,通過位置探測圖形找到格式信息可以分為一下幾步進行:選擇探測圖形左上角頂點(x,y)為起點,首先在 X 軸上移動到探測圖形中點位置。

1) 通過移動 Y 軸探測得出第一個帶狀黑色區域長度 d1

2) 繼續移動 Y 軸探測得出第一個帶狀白色區域長度 m1

3) 繼續移動 Y 軸探測得出第二個帶狀黑色區域長度 d2

4) 繼續移動 Y 軸探測得出第二個帶狀白色區域長度 m2

通過計算(x+m1+m2+2*d1+d2,y+m1+m2+(int)(1.5*d1)+d

2到定位圖形距離(顏色固定為黑白黑)得出第三個帶狀白色區域長度 m3。

所以格式信息理論 X 座標為 x+m1+m2+2*d1+d2+m3。格式信息填充規則如圖3-3,由於在實際讀取中會發生偏差,理論值有可能未達到格式信息區域,而仍舊處於格式信息前面的空白區域,所以通過加上校正偏差值 adjust 校正結果,具體做法為順序讀取格式信息數組如果都為淺色,則通過遞增 adjust 值(首次值為 0),重新計算格式信息 X 座標 x+m1+m2+2*d1+d2+m3+adjust。

3.但日常生活中的二維碼, 並不一定是正放的,所以圖形符號方位校正組件

就有了重大意義,現在我們來理解其設計與實現。

通過符號方位探測算法,主要是解決識別同一圖片旋轉後的問題。識別後的三個中心點座標順序應該為以下為參考的坐上角,右上角和右下角並以此確定符號的方位。這個邏輯比較簡單,而且不涉及我們的後期美化問題,所以就不展開了。

干货|二维码工作原理及美化设计基本要义

4.現在,設備才算剛剛“識別到這裡有個二維碼”,接下去信息解碼組件的設計與實現非常重要。

4.1圖形版本尺寸解碼。

1) 確定:

a) 距離 D,是左上角位置探測圖形中心與右上角位置探測圖形中心之間的距離,

b) 兩個探測圖形的寬度,Wul和Wur

干货|二维码工作原理及美化设计基本要义

2) 計算符號的名義模塊寬度尺寸 X

X=(WUL+W

UR)/14

3) 初步確定符號的版本

V = [(D/X) - 10] / 4

4) 如果初步確定的符號版本等於或小於 6,那麼該計算值即為版本號。如果初步確定的符號版本等於或大於 7,那麼版本信息應按下列步驟譯碼:

a) 用 7 除以右上角位置探測圖形的寬度尺寸 WUR,得到模塊尺寸 CPUR

CPUR=WUR/7

b) 見圖 3-13, 由 A,B 和 C 找出通過三個位置探測圖形中心的導向線 AC、AB。根據與導向線相平行的直線、位置探測圖形的中心座標和模塊尺寸 CPUR 確定在版本信息 1 區域中每一模塊中心的取樣網格。二進制值 0 和 1 根據採樣網格上的深色淺色的圖形來確定。

干货|二维码工作原理及美化设计基本要义

c) 通過檢測並糾錯確定版本,如果有錯,根據 BCH 糾錯原理,對版本信息模塊出現的錯誤進行糾錯。因為糾錯編碼我們採用 BCH(18,6)編碼,具體信息請參考糾錯算法的設計與實現一節。用 BCH(18,6)碼進行糾錯。用數據位作係數的多項式除以生成多項式 G(x)=X12+x11+x10+x9+x8+x5+x2+1。將剩餘多項式的係數串附加到數據位串後形成(18,6)BCH 碼串。

4.2除此以外,如果幹擾較大的話,設備還需要校正圖形中心和採樣網格,隨後才能恢復數據和糾錯碼字。

網格的每一交點上的圖象象素取樣,並根據閾值確定是深色塊還是淺色塊,構造一個位圖,用二進制的“1”表示深色的象素,用二進制的“0”表示淺色的象素。譯碼的順序則如本文開頭 GIF 動態圖所描述的順序逆序進行。

顯然

在瞭解了二維碼的真正編碼和解碼邏輯後,我們發現一個二維碼中有多數區域是不允許被改動。通俗所謂的容錯率,並不平均分佈在二維碼的點陣當中。所以當設計師需要美化二維碼時,應該記住:

1)將二維碼恢復為點陣圖狀態;

2)無論探測圖形如何設計,必需滿足兩個軸向的標準比例;

3)格式信息探測組件的灰度關係不可更改;

4)版本核對區不可更改;

相信以後各位讀者在製作藝術化二維碼時就可以更好避開雷區了。而美觀的二維碼,對於新媒體而言可以顯著提升用戶關注率。最後,我們來欣賞一部分品牌企業的藝術二維碼吧,其中一部分是 JZ 設計的。如需定製高級藝術二維碼,你也可以致電:

(021)37218818

干货|二维码工作原理及美化设计基本要义干货|二维码工作原理及美化设计基本要义
干货|二维码工作原理及美化设计基本要义

高級二維碼定製:021 37218818

其他你會感興趣的內容

回覆 data下載數據挖掘專業電子書

回覆 python瞭解機器學習熱門語言

回覆 GitHub看七大頂級生產力工具

回覆 EXCEL看圖表設計的重要原則

H5、平面、視頻等數字營銷服務請致電

TEL:(021)3721 8818

客戶案例:APEC 峰會 | 中國航天科技集團 | 香奈兒 | 肯德基(湖南) | 中國國際航空 | 湖北省電視臺 | 河南衛視 | 浙江省人民廣播電臺 | 三生製藥 | 交通銀行 | 建設銀行 | 真格基金 | 南方週末 | 上海閔行教育學院 | 牛津大學出版社 | 新東方集團 | 偉巴斯特 | 雪佛蘭汽車 | 觀致汽車 | 雷諾汽車 | TNS 新華信 | 高力國際|第一太平戴維斯|德國萊茵|蓋茨基金會|追星集團

抱歉,除了乾貨,其他什麼也沒有。


分享到:


相關文章: