本發(fā)明涉及視覺識別,具體地涉及外包裝字符自動識別系統(tǒng)及方法。
背景技術(shù):
1、在各種商品、尤其是食品的生產(chǎn)過程中,外包裝表面噴涂的生產(chǎn)日期、批次號等文本信息是判斷商品包裝是否合格的重要依據(jù)
2、現(xiàn)有技術(shù)多采用人工檢測的手段,顯然不僅速度慢、效率低、準(zhǔn)確率差,還極度依賴人的主觀性,大大降低了工廠的生產(chǎn)效率;
3、此外,當(dāng)前的現(xiàn)有技術(shù)也有采用了視覺識別訓(xùn)練的方式,但現(xiàn)有的外包裝視覺識別技術(shù)的缺陷在于:
4、1.由于現(xiàn)有技術(shù)很少考慮商品在傳送帶上位置不確定的情況,而是基于擺正后的理想截圖,從而實際上不具備容錯性;
5、2.由于現(xiàn)有技術(shù)需要大量的人工截圖作為訓(xùn)練樣本,構(gòu)建訓(xùn)練數(shù)據(jù)集,從而極大耗費人力資源;
6、3.由于現(xiàn)有技術(shù)速度不高,且對計算機硬件的要求很高,需要消耗大量的gpu資源才能運轉(zhuǎn),從而無法適應(yīng)工業(yè)生產(chǎn)對硬件成本控制的要求;
7、4.由于現(xiàn)有技術(shù)需要人工預(yù)設(shè)大量參數(shù),從而又進(jìn)一步消耗了大量人力資源;
8、5.由于現(xiàn)有技術(shù)字符識別領(lǐng)域目前主流的深度學(xué)習(xí)方法需要構(gòu)建海量的數(shù)據(jù)集,且數(shù)據(jù)集的生成需要大量的人工標(biāo)注過程,從而又極大耗費人的工作量。
9、綜上所述,在商品包裝過程中,運用計算機去自動檢測和識別商品外包裝上的文本信息,不僅能大幅提高工廠的生產(chǎn)效率,還能減少人力資源的浪費。因此,研究一款準(zhǔn)確性高、穩(wěn)定性強的商品外包裝文本檢測與識別系統(tǒng),實現(xiàn)商品外包裝生產(chǎn)自動化,具有重要的意義。當(dāng)然,要將該系統(tǒng)用于實際工業(yè)生產(chǎn),快速性也是必須要考慮的重要因素。
技術(shù)實現(xiàn)思路
1、本發(fā)明針對上述問題,提供外包裝字符自動識別系統(tǒng)及方法,其目的在于適用于實際生產(chǎn)線上包裝盒在傳送帶上位置不確定的情況;不需要人工干預(yù)、自動高精度分割單個字符圖像,建立單個字符數(shù)據(jù)集,用于svm模型訓(xùn)練;節(jié)約大量的人力;速度快且對計算機硬件的要求較低適應(yīng)工業(yè)生產(chǎn)對硬件成本控制的要求;對于同一類商品外包裝僅需預(yù)設(shè)參數(shù)一次即可,操作便捷;極大降低人的工作量,極大提高工作效率;大大降低硬件成本。
2、為解決上述問題,本發(fā)明提供的技術(shù)方案為:
3、一種外包裝字符自動識別系統(tǒng),包含傳送帶、光電傳感器組、圖像采集單元、字符識別系統(tǒng);其中:
4、所述光電傳感器組通過一個龍門吊架懸掛在所述傳送帶的上方,且距離所述傳送帶的兩側(cè)邊緣距離相等;
5、所述圖像采集單元通過另一個龍門吊架懸掛在所述傳送帶的上方,且距離所述傳送帶的兩側(cè)邊緣距離相等;
6、所述光電傳感器組按所述傳送帶的傳送方向,處于所述圖像采集單元的上游;
7、所述字符識別系統(tǒng)安裝在工控機中;所述工控機分別與所述光電傳感器組、所述圖像采集單元電信號耦接;所述字符識別系統(tǒng)用于自動訓(xùn)練生成svm模型,并利用訓(xùn)練好的所述svm模型自動識別外包裝上的字符。
8、優(yōu)選地,所述光電傳感器組包含一個倒扣的空心半球形的光電設(shè)備陣列固定裝置、第一光電傳感器、第二光電傳感器、第三光電傳感器、第四光電傳感器、第五光電傳感器;其中:
9、所述光電設(shè)備陣列固定裝置的下部邊緣構(gòu)成的圓形,與所述傳送帶的上表面平行;
10、以所述傳送帶的傳送方向為方向,仰視以所述光電設(shè)備陣列固定裝置的下部邊緣構(gòu)成的圓形,則有:所述第一光電傳感器固定安裝在所述光電設(shè)備陣列固定裝置的下部邊緣的0方向處;所述第二光電傳感器固定安裝在所述光電設(shè)備陣列固定裝置的下部邊緣的π方向處;所述第三光電傳感器固定安裝在所述光電設(shè)備陣列固定裝置的下部邊緣的方向處;所述第四光電傳感器固定安裝在所述光電設(shè)備陣列固定裝置的下部邊緣的方向處;所述第五光電傳感器固定安裝在所述光電設(shè)備陣列固定裝置的下部邊緣的方向處。
11、優(yōu)選地,所述圖像采集單元為工業(yè)相機;
12、當(dāng)所述傳送帶上有目標(biāo)經(jīng)過所述第一光電傳感器,或所述第二光電傳感器,或所述第三光電傳感器,或所述第四光電傳感器,或所述第五光電傳感器下方時,則被經(jīng)過的所述第一光電傳感器,或所述第二光電傳感器,或所述第三光電傳感器,或所述第四光電傳感器,或所述第五光電傳感器被觸發(fā),并將采集到的光電傳感器信號發(fā)送到所述字符識別系統(tǒng);
13、以所述光電傳感器組第一次被觸發(fā)并發(fā)出所述光電傳感器信號的時刻為0時刻,則所述圖像采集單元采集圖形的時刻按下式表達(dá):
14、
15、其中:t_c為所述圖像采集單元采集圖形的時刻;t_i為目標(biāo)移出所述光電傳感器組的時刻;v為所述傳送帶的運動速度;r為所述光電設(shè)備陣列固定裝置的下部邊緣的半徑;d為從所述光電設(shè)備陣列固定裝置的下部邊緣的圓心,到所述圖像采集單元采集圖形的像平面區(qū)域的幾何中心點之間的距離。
16、一種利用上述外包裝字符自動識別系統(tǒng)的外包裝字符自動識別方法,包含以下步驟:
17、s100.利用所述字符識別系統(tǒng)自動分割字符圖像,生成關(guān)于字符識別模型的字符數(shù)據(jù)集;然后利用生成的所述字符數(shù)據(jù)集訓(xùn)練所述svm模型;
18、s200.利用所述字符識別系統(tǒng),載入訓(xùn)練好的所述svm模型,自動識別所述傳送帶上的目標(biāo)的外包裝上的字符。
19、優(yōu)選地,s100具體包含以下步驟:
20、s110.根據(jù)用戶要求,手工從1個目標(biāo)的表面的圖像上,截取1張目標(biāo)上的待識別區(qū)域作為模板圖像;所述模板圖像為矩形,且無旋轉(zhuǎn)正對屏幕,且所述模板圖像上顯示的字符無旋轉(zhuǎn)正對屏幕;
21、s120.利用模板匹配算法從多個目標(biāo)上自動獲取所述待識別區(qū)域的圖像;
22、s130.對s120獲得的多個所述待識別區(qū)域的圖像,分割并識別單個字符;然后將單個字符保存并打包,得到所述字符數(shù)據(jù)集;
23、s140.利用s130獲得的所述字符數(shù)據(jù)集,訓(xùn)練所述svm模型。
24、優(yōu)選地,s200具體包含以下步驟:
25、s210.利用快速模板匹配獲得所述待識別區(qū)域的圖像;
26、s220.采用輪廓法,分割出單個字符區(qū)域;
27、s230.利用訓(xùn)練好的所述svm模型,識別單個字符圖像得到每個所述字符圖像對應(yīng)的字符。
28、優(yōu)選地,s110具體包含以下步驟:
29、s111.利用所述圖像采集單元,對1件目標(biāo)的包含了所述待識別區(qū)域的表面拍照,得到1幅原始圖像;
30、s112.獲取用戶要求;根據(jù)用戶要求手工從s111獲取的所述原始圖像上,截取并保留僅包含所述待識別區(qū)域的圖像,作為所述模板圖像;同時丟棄所述原始圖像上其余的圖像區(qū)域。
31、優(yōu)選地,s120具體包含以下步驟:
32、s121.利用所述圖像采集單元,對多件目標(biāo)的包含了所述待識別區(qū)域的表面拍照,得到多幅所述原始圖像;本步驟中各所述原始圖像包含的字符不完全一致,且全部字符的集合覆蓋目標(biāo)上可能出現(xiàn)的所有字符;
33、s122.自下而上逐層對所述原始圖像進(jìn)行采樣,構(gòu)建得到匹配用的金字塔;
34、s123.采用金字塔匹配策略,采用所述模板圖像逐層對所述原始圖像進(jìn)行遍歷匹配;每次遍歷匹配都利用所述模板圖像按照人工預(yù)設(shè)的遍歷路徑對所述原始圖像上被所述模板圖像覆蓋的區(qū)域計算匹配度,直至遍歷完成,覆蓋整個所述原始圖像;所述匹配度按下式表達(dá):
35、
36、其中:r(x,y)為所述模板圖像中的一個點在所述原始圖像上的所述匹配度,且取值范圍為[0,1],且取值越大表示所述模板圖像與所述模板圖像的被覆蓋區(qū)域的匹配度越高;t(x,y)為所述模板圖像;i(x,y)為所述原始圖像;w為所述模板圖像的寬度;h為所述模板圖像的高度;(x,y)為所述原始圖像上被所述模板圖像覆蓋的區(qū)域的左上角點在所述原始圖像中的坐標(biāo);(x',y')為所述模板圖像上的當(dāng)前被計算所述匹配度的點在所述模板圖像中的坐標(biāo);
37、s124.記錄下每次計算時所述模板圖像得到的幾何中心點的坐標(biāo)、旋轉(zhuǎn)角度、對應(yīng)的所述匹配度;
38、s125.將所述模板圖像以自身的幾何中心點為旋轉(zhuǎn)中心,逆時針旋轉(zhuǎn)1個單位的人工預(yù)設(shè)的旋轉(zhuǎn)偏移量;
39、所述旋轉(zhuǎn)角度為所述旋轉(zhuǎn)偏移量與旋轉(zhuǎn)次數(shù)的簡單代數(shù)積;
40、s126.重復(fù)執(zhí)行s124~s125,直至所述旋轉(zhuǎn)角度為2π;
41、s127.瀏覽至s126得到的所有所述匹配度,選出其中絕對值最大的1個所述匹配度;以這個所述匹配度對應(yīng)的所述模板圖像在所述原始圖像上覆蓋的區(qū)域作為最佳匹配區(qū)域;然后保留所述最佳匹配區(qū)域,丟棄所述原始圖像的其余部分;
42、s128.獲取s127中這個所述匹配度對應(yīng)的所述旋轉(zhuǎn)角度;然后將所述最佳匹配區(qū)域以自身的幾何中心點為旋轉(zhuǎn)中心,順時針旋轉(zhuǎn)所述旋轉(zhuǎn)角度;將最終得到的圖像作為本次得到的所述待識別區(qū)域的圖像。
43、優(yōu)選地,s130具體包含以下步驟:
44、s131.從s120獲得的所述待識別區(qū)域的圖像中隨機取出一個,然后同時分別用paddleocr字符識別算法、ctpn?crnn字符識別算法對其中顯示的字符進(jìn)行識別;
45、s132.分別對采用paddleocr字符識別算法、ctpn?crnn字符識別算法得到矩形框內(nèi)的圖像采用垂直投影法對文字進(jìn)行分割;具體來說包含以下步驟:
46、sa1321.對單個矩形框內(nèi)的圖像采用otsu閾值分割算法獲取二值圖像;
47、sa1322.對sa1321獲得的二值圖像以此采用一次腐蝕操作、一次膨脹操作剔除噪聲,然后對這個二值圖像進(jìn)行垂直投影;
48、sa1323.在兩個字符之間,找到投影像素數(shù)量為0的像素段,再找到每段0像素的中間坐標(biāo),作為相鄰兩字符的分割線;
49、sa1324.重復(fù)執(zhí)行sa1321~sa1323,直至所有相鄰之間都劃分出了分割線;
50、s133.逐一將經(jīng)由paddleocr字符識別算法識別出的字符與對應(yīng)位置的經(jīng)由ctpncrnn字符識別算法識別出的字符進(jìn)行對比;然后根據(jù)對比結(jié)果,做出如下操作:
51、如果經(jīng)由paddleocr字符識別算法識別出的字符與對應(yīng)位置的經(jīng)由ctpn?crnn字符識別算法識別出的字符相同,則保留這個字符,然后執(zhí)行s134;
52、否則,丟棄這個字符;然后回到并再次重新執(zhí)行s133;
53、s134.計算當(dāng)前字符與庫中原有模板的均值的哈希相似度;然后根據(jù)計算結(jié)果,做出如下操作:
54、如果所述哈希相似度大于50%,則保留這個字符,然后執(zhí)行s135;
55、否則,丟棄這個字符;然后回到并再次重新執(zhí)行s133;
56、所述哈希相似度的評價方法具體包含以下步驟:
57、sa1341.將圖片縮小到8x8的尺寸,總共64個像素;
58、sa1342.將縮小后的圖片,轉(zhuǎn)為64級灰度;
59、sa1343.計算所有64個像素的灰度平均值;
60、sa1344.將每個像素的灰度,與sa1343計算得到的所述灰度平均值進(jìn)行比較,然后根據(jù)比較結(jié)果,做出如下操作:
61、如果一個像素的灰度大于或等于sa1343計算得到的所述灰度平均值,則對此像素記為1;
62、否則,對此像素記為0;
63、sa1345.將sa1344的計算結(jié)果按人工預(yù)設(shè)的順序組合在一起,構(gòu)成一個64位整數(shù),作為這張圖片的指紋信息;
64、sa1346.分別得到兩張圖片的指紋信息后,計算兩組64位數(shù)據(jù)的漢明距離,然后計算得到兩張圖片的所述哈希相似度的值,按下式表達(dá):
65、
66、其中:hsim為所述哈希相似度的值;dist為兩幅圖像不同位數(shù);
67、s135.對兩張圖片計算結(jié)構(gòu)相似性,然后根據(jù)計算結(jié)果,做出如下操作:
68、如果兩張圖片的所述結(jié)構(gòu)相似性大于80%,則將這個字符保存到這個區(qū)域?qū)?yīng)的所述字符數(shù)據(jù)集的文件夾中;
69、否則,丟棄這個字符;然后回到并再次重新執(zhí)行s133;
70、所述結(jié)構(gòu)相似性的計算方法按下式表達(dá):
71、
72、其中:ssim(m,n)為所述結(jié)構(gòu)相似性,且取值范圍為[0,1],且取值越大表示m和n的結(jié)構(gòu)相似性越高;m和n分別表示參與本次結(jié)構(gòu)相似性評價的兩張圖片;μm為m的平均值;μn為n的平均值;σm2為m的方差;σn2為n的方差;σmn為m和n的協(xié)方差;c1、c2為用于避免分母為0而添加的常數(shù);
73、s136.重復(fù)執(zhí)行s131~s135,直至所有所述待識別區(qū)域的圖像都被識別完畢。
74、優(yōu)選地,s140具體包含以下步驟:
75、s141.加載s130中獲得的所述字符數(shù)據(jù)集;其中:所述字符數(shù)據(jù)集中的每個字符所對應(yīng)收集的圖像不低于200張;
76、s142.python庫中安裝skimage包,然后調(diào)用hog()函數(shù)對圖像提取shog向量,然后以圖像的hog特征作為所述svm模型的輸入;
77、s143.使用train_test_split函數(shù)將所述字符數(shù)據(jù)集分為訓(xùn)練數(shù)據(jù)集和測試數(shù)據(jù)集,其中所述訓(xùn)練數(shù)據(jù)集與所述測試數(shù)據(jù)集的比例為8:2;
78、s144.使用svc類創(chuàng)建所述svm模型,然后利用所述訓(xùn)練數(shù)據(jù)集對所述svm模型進(jìn)行訓(xùn)練;
79、s145.使用所述測試數(shù)據(jù)集評估所述svm模型的性能,然后輸出本次訓(xùn)練的準(zhǔn)確率;
80、s146.保存訓(xùn)練完成的svm分類模型文件。
81、優(yōu)選地,s210具體包含以下步驟:
82、s211.利用所述圖像采集單元實時從所述傳送帶上采集目標(biāo)的外部包含了所述待識別區(qū)域的表面拍照,得到每件目標(biāo)的所述原始圖像;
83、s212.將每個目標(biāo)的所述待識別區(qū)域的個數(shù)設(shè)為1;
84、s213.添加旋轉(zhuǎn)因子,使每個目標(biāo)的所述待識別區(qū)域與所述模板圖像在[0,2π]區(qū)間內(nèi)多次旋轉(zhuǎn)匹配;
85、s214.采用金字塔匹配策略,自下而上對每個所述原始圖像,得到擺正后的所述待識別區(qū)域的圖像。
86、優(yōu)選地,s220具體包含以下步驟:
87、s221.采用opencv中的形態(tài)學(xué)函數(shù),對自s214傳來的每個目標(biāo)所對應(yīng)的所述待識別區(qū)域的圖像,進(jìn)行預(yù)處理操作,具體包含以下步驟:
88、sa2211.利用opencv函數(shù)cvtcolor()將所述待識別區(qū)域的圖像轉(zhuǎn)換成灰度圖;
89、sa2212.利用opencv函數(shù)adaptivethreshold()對sa2211的結(jié)果進(jìn)行自適應(yīng)閾值分割;其中,使用的自適應(yīng)閾值算法局部鄰域塊高斯加權(quán)和為adaptive_thresh_gaussian_c;使用的鄰域塊大小取值為25;
90、sa2213.利用opencv函數(shù)erode()進(jìn)行腐蝕操作,利用opencv函數(shù)dilate()函數(shù)進(jìn)行膨脹操作;腐蝕操作與膨脹操作的次數(shù)及順序根據(jù)目標(biāo)的外表面特征由人工預(yù)設(shè);
91、s222.分割出的所述單個字符區(qū)域;具體包含以下步驟:
92、sa2221.利用opencv函數(shù)findcontours()找到預(yù)處理后圖像的所有輪廓,并利用opencv函數(shù)boundingrect()找到所有輪廓外接矩形;
93、sa2222.對所有所述輪廓外接矩形根據(jù)面積有限原則進(jìn)行第一次矩形框優(yōu)化處理,保留面積大于矩形框面積下限閾值,且小于矩形框面積上限閾值的所述輪廓外接矩形;其中:所述矩形框面積下限閾值與所述矩形框面積上限閾值的獲取方法為:
94、pa100.對同一類目標(biāo)的外包裝,獲取s110中截取的那1張所述模板圖像;
95、pa200.用pa100中獲取的那1張所述模板圖像進(jìn)行矩形框檢測,然后將所有矩形框的面積顯示在對應(yīng)框中;
96、pa300.篩選出所有的真實字符框;所述真實字符框為包含真實且有意義的字符的矩形框;
97、pa400.篩選出所有所述真實字符框中的矩形面積的最大值和最小值;
98、pa500.計算得到所述矩形框面積下限閾值、所述矩形框面積上限閾值,按下式表達(dá):
99、
100、其中:mina為所述矩形框面積下限閾值;minar為所述真實字符框中的矩形面積的最小值;maxa為所述矩形框面積上限閾值;maxar為所述真實字符框中的矩形面積的最大值;α為人工預(yù)設(shè)的最小值折算系數(shù);β為人工預(yù)設(shè)的最大值折算系數(shù);
101、sa2223.對sa2222的結(jié)果進(jìn)行第二次矩形框優(yōu)化處理,具體包含以下步驟:
102、pb100.計算得到矩形框中心距離下限閾值,按下式表達(dá):
103、
104、其中:dx為所述模板圖像中左上角第一個字符與這個字符右側(cè)第一個字符之間的中心距;dy為所述模板圖像中左上角第一個字符與這個字符下側(cè)第一個字符之間的中心距;tc為所述矩形框中心距離下限閾值;
105、pb200.將經(jīng)過sa2222處理后的矩形框之間中心距離與所述矩形框中心距離下限閾值進(jìn)行比較,然后根據(jù)比較結(jié)果,做出如下操作:
106、如果經(jīng)過sa2222處理后的矩形框之間中心距離大于或等于所述矩形框中心距離下限閾值,則保留這個這兩個矩形框;
107、否則,剔除這個這兩個矩形框中面積較小的一個矩形框,只保留面積較大的矩形框;
108、sa2224.將經(jīng)過sa2223處理后剩下的所有矩形框按照中心坐標(biāo)的位置,以從左到右、從上往下的順序存儲在1個鏈表中;其中:
109、所述鏈表中的每個元素由矩形框的左上角坐標(biāo)、右下角坐標(biāo)組成;
110、sa2225.以經(jīng)過sa2224填充后的所述鏈表中的每個元素的左上角坐標(biāo)、右下角坐標(biāo),分割單個字符圖像,并依次用來作為所述svm模型的輸入。
111、優(yōu)選地,s230具體包含以下步驟:
112、s231.對同一類目標(biāo),設(shè)置相同的輸出格式;
113、s232.設(shè)置編碼對照表;所述編碼對照表包含字符編碼和對應(yīng)的字符;每個字符編碼與對應(yīng)的字符之間為一一對應(yīng)關(guān)系;
114、s233.利用所述svm模型對所述鏈表中的字符圖像進(jìn)行識別,得到每個字符圖像的所述字符編碼;
115、s234.將s233得到的所述字符編碼查找所述編碼對照表,得到對應(yīng)的字符;
116、s235.以s231設(shè)置的所述輸出格式,輸出識別結(jié)果。
117、本發(fā)明與現(xiàn)有技術(shù)對比,具有以下優(yōu)點:
118、1.由于本發(fā)明采用一種由5個光電傳感器構(gòu)成位置檢測陣列光電設(shè)備來精確獲得商品外包裝的位置信息,作為工業(yè)相機采集圖像的觸發(fā)信號,從而適用于實際生產(chǎn)線上包裝盒在傳送帶上位置不確定的情況;
119、2.由于本發(fā)明采用了paddleocr和ctpn?crnn字符識別算法相結(jié)合的策略,并結(jié)合哈希相似度、結(jié)構(gòu)相似度條件的方法,從而可以不需要人工干預(yù)、自動高精度分割單個字符圖像,建立單個字符數(shù)據(jù)集,用于svm模型訓(xùn)練;
120、3.由于本發(fā)明全程除了只用人工截取一張圖片外,其余工作全部自動完成,從而相比于目前完全依靠人工截圖來構(gòu)建數(shù)據(jù)集的方法來說,節(jié)約了大量的人力;
121、4.由于本發(fā)明使用快速模板匹配算法可以針各種角度傾斜的原始圖像輸入,快速準(zhǔn)確地輸出與待識別模板相對應(yīng)的正向字符區(qū)域圖像,從而相對于基于深度學(xué)習(xí)的目標(biāo)檢測算法獲取待識別區(qū)域的方法,本發(fā)明方法速度快且對計算機硬件的要求較低,基于cpu即可正常運行,能夠適應(yīng)工業(yè)生產(chǎn)對硬件成本控制的要求;
122、5.由于本發(fā)明采用輪廓法僅需少量的預(yù)設(shè)參數(shù),即可準(zhǔn)確、高效地分割出待識別區(qū)域的單個字符圖像用于svm識別,從而對于同一類商品外包裝僅需預(yù)設(shè)參數(shù)一次即可,操作便捷;
123、6.由于相比于字符識別領(lǐng)域目前主流的深度學(xué)習(xí)方法,本發(fā)明方法不需要構(gòu)建海量的數(shù)據(jù)集,針對不同類型的商品外包裝,每種不同的商品外包裝僅需采集不超過10幅圖構(gòu)建數(shù)據(jù)庫即可,且數(shù)據(jù)集的生成自動化程度高,不需要大量的人工標(biāo)注過程,從而極大降低了人的工作量,并極大提高了工作效率;
124、7.由于本發(fā)明字符識別算法對硬件的依賴程度低,不需要gpu,工業(yè)生產(chǎn)線上原有的工控機cpu即可正常使用,從而大大降低硬件成本。