一種顏色攜帶資訊的彩色EAN13碼生成和識別的技術實現方法
2022-04-09由 小碼兒來了 發表于 農業
商品條碼中 x如何計算
1
、引言
我國條碼起始於
80
年代,商品條碼經過
30
年的發展已成功應用於國內各行業領域,商品條碼的編碼由國際組織
GS1
統一管理,商品條碼符號在國標
12904
中要求為
EAN/UPC
碼
,
標準中規定了條碼的符號中的條空顏色搭配,市場上常見的條碼一般都是條為黑色、空為白色,也有部分其它顏色搭配,但均為外觀設計,並沒有將顏色進行編碼設計,讓條碼顏色攜帶資訊。
2015
年彩虹碼的出現增加條碼符號資訊表達。本文以
EAN13
碼為例,透過對條碼的顏色編碼設計,來增加條碼攜帶資訊的實現方法。本文僅描述如何實現顏色編碼及識別過程,
EAN13
條碼識別演算法不在本文討論之內。
2
、彩色條碼顏色編碼設計
2。1
、
EAN13
碼的符號組成以及特徵分析
根據
EAN13
碼的規定,條碼共計有
13
位數字字元組成,其中左側第一位是前置碼數值,不參與編碼。剩餘
12
位數字字元分別由
A
、
B
、
C
三種不同型別的字元子集組成。透過分析下表可知,每個字元的子集按顏色都有連續的
2
塊空和
2
塊條組成。整個條碼符號中有
30
個連續(或單個)顏色條組成,其中
12
數字字元有
24
個,起始符
2
個、中間分隔符
2
個和終止符
2
個,總計
30
個。
2。2
、標準
EAN13
顏色搭配特徵分析與編碼容量分析
根據標準規定,條碼空色為白色,可與之匹配的條色的顏色可以是黑色、藍色、綠色、深棕色四種顏色;條碼空色為橙色,可與之匹配的條色有黑色、藍色、綠色、深棕色四種顏色;條碼空色為紅色,可與之匹配的條色有黑色、藍色、綠色、深棕色四種顏色;條碼空色為黃色,可與之匹配的條色有黑色、藍色、綠色、深棕色。無論空色為那種顏色,均有
4
種(黑色、藍色、綠色、深棕色)可與之匹配條色。
根據上述分析,
EAN13
碼中
30
個連續(或單個)顏色條,其中每個條可以有
4
種顏色來編碼(空色不參與編碼),那麼整個顏色編碼容量計算公式如下:
顏色編碼容量(
4
種顏色)
=4^30
共計有
1152921504606846976
編碼容量。實際使用中為提高顏色識別率,不建議使用棕色,僅使用黑色、藍色、綠色
3
色,這種情況下顏色編碼容量計算公式如下:
顏色編碼容量(
3
種顏色)
=3^30
總計有
205891132094649
編碼容量。
2。3
、顏色編碼演算法設計
我們採用
3
種顏色進行編碼,表
2
是對
3
種顏色值進行定義。
結合上文分析,以
EAN13
碼為例,總計有
30
組顏色條,按照每相鄰
3
個為一組,進行顏色編碼,組合編碼從
000~120
表達
0~F
,滿足十六進位制編碼需要,
121~222
段為保留段,待以後啟用。顏色碼總計
10
位數,每位數可表達
0~F,
也就是總的編碼資源為
16
的
10
次方
1 099 511 627 776
。編碼規定按
10
位編碼,不足
10
位的左前補‘
0
’。具體如表
3
所示。
2。4
、彩色條碼示例分析
觀察示例
1
,我們根據前文所述,我們將該條碼按
3
個顏色條為一組進行分割,並按表
2
顏色定義值進行轉化,得到如下編碼:
“002000001100000021001012001000”
透過表
3
字元編碼表轉化後值為
2019071510
3
、彩色條碼識別演算法實現
3。1
、定位每個條的中心點
利用影象處理技術,將彩色條碼透過高斯濾波處理,灰度化,二值化處理後,得到黑白影象,為防止條碼底部供人識別的數字影像影象識別演算法,將整個圖片的
Y
軸下的
2/5
部分全部用白色替換。透過影象矩形框演算法定位出每個條的位置,計算出每個條的中心點後儲存到連結串列,並按
X
軸的方形進行排序。
3。2
、獲取條的中心點顏色值
透過定位演算法獲得的中心位置,在原圖(彩色圖)的資料中找到每個條的中心點顏色值(
RGB
值),也可以透過識別每個條的矩形框後計算
RGB
的均值。
3。3
、利用
SVM
支援向量機(
AI
技術)演算法識別條的顏色
因拍照的光線以及條碼印刷等因素的影響,每個待識別的條碼影象條的中心點
RGB
值並不是統一的,但會落在一個動態區間範圍,需要利用人工智慧技術對其識別,提高識別效率。
3。3。1
、資料訓練
透過模擬實際使用環境,在不同的光線用不同品牌的攝像頭拍攝指定的條碼影象。透過影象識別技術獲取這些圖片每個條的中心點
RGB
值,並將這些資料透過資料歸一化處理,與對應預期識別結果一起作為訓練資料,提交給
SVM
進行識別演算法訓練。
3。3。2
、目標識別
利用影象處理技術,採集到條碼圖片中每個條的中心點
RGB
值後,按
X
軸
的方向將中心點數值進行排序並儲存到連結串列。利用
SVM
預測出連結串列中的每個中心點結果,並根據顏色編碼演算法轉化成最終結果。透過不斷的調整訓練資料,識別準確率可提高到
97%
,基本滿足正常使用。
4
、總結
本文提供了一種彩色條碼的編碼及識別實現方法,並透過利用
AI
技術提高其識別率。