基于OpenCV的生產(chǎn)日期字符識別研究*
商品的標識技術(shù)是對標簽進(jìn)行編碼和標記的技術(shù)手段,也是產(chǎn)品可追溯性的基礎。標識技術(shù)關(guān)系到物流、食品和電子商務(wù)等多個(gè)行業(yè),影響深遠。伴隨人們生活水平的提高,對于健康和安全的關(guān)注越來(lái)越多,每個(gè)行業(yè)對產(chǎn)品的品質(zhì)和安全性的要求也越來(lái)越高[1]。編碼標識的不統一阻礙了各個(gè)行業(yè)的發(fā)展,包括對產(chǎn)品的溯源、電子商務(wù)及對產(chǎn)品標簽標準化的要求,因此,國家商品生產(chǎn)日期標識規范體系的建立顯得尤為必要。
本文引用地址:http://dyxdggzs.com/article/202107/427161.htmOCR 技術(shù)通過(guò)照相機拍攝圖片,利用檢測模式掃描圖像,從中排除干擾信息并提取文本信息,然后對文本信息進(jìn)行字符識別,用一系列算法翻譯成計算機處理文本 [2]?,F在,還可直接連接攝像頭或照相機直接進(jìn)行視頻識別。典型的OCR 技術(shù)首先是對輸入圖像進(jìn)行預處理,再對處理過(guò)的圖像進(jìn)行文字檢測識別,在不同項目背景下,根據光照、背景顏色、產(chǎn)品材質(zhì)和產(chǎn)品要求的不同,預處理和識別方法也會(huì )有所差異。
識別過(guò)程將由計算機端的Python 程序完成。本文采用的商品標簽識別過(guò)程如圖1 所示。
作者簡(jiǎn)介:李佳琪(1995~),女,安徽舒城,回族,碩士生,研究方向:神經(jīng)網(wǎng)絡(luò )字符識別,E-mail:568950838@qq.com。
*國家自然科學(xué)基金,61873004,多源傳感器環(huán)境下基于異構特征信息融合的行為識別
國家自然科學(xué)基金,51474007,基于領(lǐng)域本體的煤礦安全數據融合方法及應用
圖1 商標標簽識別過(guò)程
1 預處理與識別
1.1 OpenCV
OpenCV 是一個(gè)跨平臺的輕量級開(kāi)源計算機視覺(jué)庫,支持多種機器語(yǔ)言。OpenCV 模塊覆蓋全面,其中囊括了字符識別、圖像處理、人臉識別等。OpenCV 涵蓋300 多個(gè)C 語(yǔ)言函數的中、高層API,對于輸入圖像的格式也非常包容,用它進(jìn)行應用開(kāi)發(fā)非常高效和簡(jiǎn)潔,而且包含了豐富的工業(yè)檢測類(lèi)函數,能夠用于實(shí)時(shí)圖像處理,使用便捷,功能完善,適用于本文實(shí)驗環(huán)境。
1.2 Tesseract-OCR
Tesseract-OCR 是19 世紀80 年代由惠普實(shí)驗室開(kāi)發(fā)的,谷歌改進(jìn)了其中的算法,通過(guò)排除引擎缺陷進(jìn)行了優(yōu)化。Tesseract-OCR 的功能強大,應用廣泛,是開(kāi)源的OCR 識別系統[3]。Tesseract-OCR 識別引擎在開(kāi)源別引擎中占有重要地位,完整識別過(guò)程由一種頁(yè)面結構闡發(fā)方法對圖片做布局剖析,旨在辨別圖像上的表格、文本、圖片等內容,為后續識別工作做鋪墊。
2 圖像預處理
將背景信息和文本信息分開(kāi),消除圖像無(wú)關(guān)信息、加強有效信息,從而簡(jiǎn)化后續辨認字符步調,減輕辨認難度和錯誤率。
2.1 圖像傾斜校正
產(chǎn)品在流水線(xiàn)輸送帶上運動(dòng)時(shí),經(jīng)過(guò)高速攝像機拍攝照片,可能會(huì )遇到產(chǎn)品放置不規范的問(wèn)題,導致拍攝的照片歪斜,不平行于水平線(xiàn)。預處理第一步是將扭曲的原始圖片進(jìn)行校正。在此環(huán)境中,使用傅里葉變換做圖像的傾斜校正。
二維圖像的傅里葉變換公式:
式中,f 和F 分別為空間域值和頻域值,示出了傅立葉變換后的結果需要使用的真實(shí)圖像加虛擬圖像,或振幅圖像(magitude 圖像)加相位圖像[4](如圖2)。
(a)傾斜校正前
(b)傾斜校正后
圖2 校正前后對比
2.2 圖像噪聲處理
在收集、傳輸和處理圖像的過(guò)程中,圖像會(huì )產(chǎn)生一些不可避免的噪聲,包含與圖像無(wú)關(guān)和冗余滋擾信息。降低圖像噪聲不僅可以使圖像更加清晰,而且可以突出圖像的感興趣區域,易于識別(如圖3)。
(a)原圖
(b)中值濾波對噪聲的處理
圖3 噪聲處理前后的對比
2.3 圖像二值化
遍歷像素點(diǎn),通過(guò)選取合適的值,灰度值二分為255 或0,白色為255,黑色為0,如式(3)所示。分類(lèi)后圖像變?yōu)楹诎?,分辨圖像中的圖形和文本,便于后續將文本信息提取出來(lái)[5]。
1)Otsu 算法
此算法是把背景和目標閾值的差距拉大,分裂性較強,所求的是類(lèi)內方差min,和類(lèi)間方差的max,首先遍歷所有像素點(diǎn),統計灰度級像素的個(gè)數,將圖像灰度化,再次遍歷計算出最大類(lèi)間方差,程序略顯復雜[6],效果圖如圖4 所示。
圖4 Otsu對光照不均的處理
2)Sauvola 算法
該算法通過(guò)引入以像素點(diǎn)為中心領(lǐng)域的wide 為參數windowsize 和自定義系數比例因子k 來(lái)降低對噪聲的敏感性,也就是對niblack 算法進(jìn)行改進(jìn)。它集中于當前像素,閾值是根據該像素的當前像素的附近灰度平均值和標準偏差動(dòng)態(tài)計算[7]。
灰度均值m 與標準方差s:
然后是該點(diǎn)的閾值T(x, y),其中T的大小可以根據k 來(lái)調節:
圖5 Sauvola對光照不均的處理
2.4 邊緣檢測
邊緣檢測是通過(guò)卷積或微分計算后得到的二值化
圖像。
1)Laplacian 算子邊緣檢測
拉普拉斯算子被分成4 個(gè)和8 個(gè)鄰域,域是像素梯度需求鄰域的4 個(gè)相鄰方向上的中央附近的方向和梯度[8](如圖6)。
圖6 Laplacian的邊緣處理
2)Canny 邊緣檢測算法
Canny 從信噪比、單邊緣和定位性能方面來(lái)判定邊緣的優(yōu)劣,Canny 邊緣檢測算法可以分為以下5 個(gè)步驟:
①圖像灰度化
通過(guò)RGB 三個(gè)通道,為了降維,將圖片圖像進(jìn)行灰度化。
②高斯模糊處理
此步驟是對圖像進(jìn)行smooth 處理,通過(guò)濾波器將高斯函數離散化[9],高斯函數與濾波器的計算:
③圖像梯度、梯度幅值、梯度方向計算
該點(diǎn)通過(guò)計算當前像素與其附近的像素差值來(lái)進(jìn)行位置判斷,接近這個(gè)差值稱(chēng)為圖像梯度。首先計算一階導數:
計算梯度幅值M:
計算梯度值的方向:
④ NMS(非極大值抑制)
留存邊緣方向上具有極大值的像素,通過(guò)NMS 找出其中的局部最大值,將其他位置的值取0。
⑤雙閾值的邊界選取
梯度大于任何邊緣的最大閾值是真正的邊緣,而低于最小閾值的邊緣為非邊緣,非邊緣即舍去(如圖7)。
圖7 Canny的邊緣處理
2.5本文算法的選取
中值濾波是對光滑脈沖噪聲表現良好,效果圖像的邊界順滑清晰。與平均灰度法比較,Sauvola 使用二值化的圖像,能解決產(chǎn)生照度不均的影響。拉普拉斯對噪聲敏感,分辨邊緣像素的位置表現優(yōu)異,但易出現雙像素邊界,導致日期顯示模糊不清晰;Canny 對比Laplacian 克制了噪聲引起的非邊緣,對于光照不均的圖像也能有如圖所示的效果,線(xiàn)條更流暢光滑,同時(shí)細化過(guò)的邊緣比較清晰,易于后續的識別工作。
綜上,根據實(shí)際檢測考慮,本項目的噪聲處理、二值化及邊緣檢測的算法分別借用的是中值濾波、Sauvola算法和Canny 邊緣檢測法。
3 商品生產(chǎn)日期字符識別
3.1 識別目的
在車(chē)間生產(chǎn)中,生產(chǎn)日期是由操作工人設置噴印裝置并對生產(chǎn)日期進(jìn)行噴印。生產(chǎn)日期的錯誤為后續的溯源、倉儲造成困難。為避免生產(chǎn)資料的浪費和后續工作的開(kāi)展,制作日期字符識別數據集并校驗成果。
本文通過(guò)jTessBoxEditor 進(jìn)行字符識別訓練工作,Tesseract 深度學(xué)習樣本訓練工具基于Java 開(kāi)發(fā),當Tesseract 的自帶字符庫不足以滿(mǎn)足需要時(shí), 通過(guò)jTessBoxEditor 訓練得到專(zhuān)屬字符庫,提高生產(chǎn)日期識別率和準確率。
3.2 字符集的創(chuàng )建和測試
在jTessBoxEditor 編輯器中點(diǎn)擊merge tiff,打開(kāi)拍攝到的商品生產(chǎn)日期圖片,并為文件命名,以生成訓練集的tif 文件(如圖8)。
圖8 訓練集部分樣本圖
通過(guò)輸入命令行生成box 文件,再導入tif 文件,然后它會(huì )主動(dòng)識別box 文件并主動(dòng)導入(如圖9)。
圖9 字符識別界面
利用窗口上方的模塊,對文件內字符進(jìn)行框選,調整字體坐標,標準為一字一框,并對識別的字符進(jìn)行修正,最后點(diǎn)擊save。
在輸入命令后創(chuàng )建字體特征文件,之后開(kāi)始對字符文件進(jìn)行訓練,并把生成的文件合并,即得到訓練文件(如圖10)。
圖10 字符集訓練界面
字符識別的正確率受前期圖片處理的程度和字符庫的影響,訓練集中包含英文、中文和數字三種字符,為了驗明三種字符的單獨測試效果,從以下四個(gè)方向進(jìn)行
觀(guān)察測試:
1)中文字符正確率
2)英文字符正確率
3)數字字符正確率
4)全部字符正確率
通過(guò)測試顯示,錯誤率最高為5.00% 的中文字符,Tesseract 對于英文和數字字符還是比較精準的,錯誤主要在于字符“期”容易識別為分開(kāi)的兩個(gè)字“其”和“月”,接下來(lái)對字符偏旁部首誤分割的判定準確率進(jìn)行研究?jì)?yōu)化。
4 結束語(yǔ)
本文基于OpenCV 和開(kāi)源庫Tesseract,在Python平臺根據現有的完善字符識別算法,利用訓練出的專(zhuān)屬字符庫初步實(shí)現了在簡(jiǎn)單環(huán)境下對商品生產(chǎn)日期的識別功能。
本實(shí)驗項目?jì)H針對普通場(chǎng)景下的圖像進(jìn)行商品標簽日期字符的識別,對于復雜場(chǎng)景下或復雜字體、混合字體或彎曲識別界面的圖像文字識別還有待研究。后續將在圖像預處理和字符識別方面進(jìn)行優(yōu)化,即將著(zhù)手的工作如下:
1)研究生產(chǎn)日期標簽污損情況下的字符識別。
2)識別結果僅顯示于界面,未能聯(lián)系產(chǎn)品進(jìn)行操控。
3)進(jìn)一步提高字符識別的速度和正確率。
參考文獻:
[1] 于穎.追溯無(wú)國界——追溯實(shí)施中的軟件,自動(dòng)化與數據標準化[J].中國自動(dòng)識別技術(shù),2015(4):60-64.
[2] 王德青,吾守爾·斯拉木,許苗苗.場(chǎng)景文字識別技術(shù)研究綜述[J].計算機工程與應用,2020,56(18):1-15.
[3] 李志昂,李少波,白強,等.基于視覺(jué)的機器人目標抓取研究[J].組合機床與自動(dòng)化加工技術(shù),2020(9):108-111.
[4] 馬鎖冬,曾春梅,許峰.基于4f系統的光學(xué)圖像加密與解密仿真教學(xué)[J].大學(xué)物理實(shí)驗,2018,31(6):39-45.
[5] 石鵬飛,劉慧.基于OpenCV的偏光片檢測方法[J].機械管理開(kāi)發(fā),2020,35(10):162-164+202.
[6] 陳飛.改進(jìn)的交互式Otsu紅外圖像分割算法[J].計算機測量與控制,2020,28(9):248-251.
[7] 李藝杰,鄒坤霖,孫煒,等.基于Sauvola算法和神經(jīng)網(wǎng)絡(luò )的圖像自適應二值化方法[J].測控技術(shù),2020,39(8):62-69+75.
[8] 趙慧娟,姜盼松,黃文聰.基于圖像識別算法的圖像傳感器質(zhì)量檢測方法改善研究[J].工業(yè)工程,2020,23(3):115-122.
[9] 白松讓,段敏,曹景勝,等.基于OpenCV的車(chē)道線(xiàn)智能檢測和識別[J].遼寧工業(yè)大學(xué)學(xué)報(自然科學(xué)版),2020,40(2):92-95.
(本文來(lái)源于《電子產(chǎn)品世界》雜志2021年7月期)
評論