郭昊冉 黎小琴
在產(chǎn)品外觀上的字符印刷過程中容易出現(xiàn)字符漏印、字符不完整、字符混亂、字符之間粘連和斷裂等問題,給機(jī)器視覺處理帶來一定的困難。
本文通過研究形態(tài)學(xué)處理技術(shù)在字符識(shí)別中的應(yīng)用,解決字符識(shí)別中的字符不完整、粘連和斷裂等問題,提高字符識(shí)別的準(zhǔn)確性,通過德國MvTec公司的圖像處理軟件Halcon軟件實(shí)現(xiàn)字符識(shí)別的過程。
數(shù)學(xué)形態(tài)學(xué)[1,2]進(jìn)行圖像處理的基本思想是:用結(jié)構(gòu)元素對(duì)原圖像進(jìn)行位移、交、并等運(yùn)算,然后輸出處理后的圖像。最基本的形態(tài)學(xué)算子有:膨脹、腐蝕、開啟、閉合。用這些算子及其組合來進(jìn)行圖像形狀和結(jié)構(gòu)的分析及處理,可以解決抑制噪聲、特征提取、邊緣檢測、形狀識(shí)別、紋理分析、圖像恢復(fù)與重建等方面的問題。
腐蝕是一種消除邊界點(diǎn),使邊界向內(nèi)部收縮的過程。設(shè)二值圖像為F,其連通區(qū)域設(shè)為X,結(jié)構(gòu)元素為S,當(dāng)一個(gè)結(jié)構(gòu)元素S的原點(diǎn)移到點(diǎn)(x, y)處時(shí),我們將其記作Sxy。此時(shí)圖像X被結(jié)構(gòu)元素S腐蝕運(yùn)算可表示為:
膨脹是將與目標(biāo)區(qū)域接觸的背景點(diǎn)合并到該目標(biāo)物中,使目標(biāo)邊界向外部擴(kuò)張的處理。設(shè)二值圖像為F,結(jié)構(gòu)元素為S,當(dāng)一個(gè)結(jié)構(gòu)元素S的原點(diǎn)移到圖像的(x,y)處時(shí),我們將其記作Sxy。此時(shí)圖像X被結(jié)構(gòu)元素S膨脹的運(yùn)算可表示如下:
使用同一個(gè)結(jié)構(gòu)元素對(duì)圖像先腐蝕再進(jìn)行膨脹的運(yùn)算稱為開運(yùn)算[3]。在結(jié)構(gòu)元素S下的開運(yùn)算定義如下:
開運(yùn)算通常用來消除小對(duì)象物、在纖細(xì)點(diǎn)處分離物體、平滑較大物體的邊界的同時(shí)并不明顯改變其面積。
使用同一個(gè)結(jié)構(gòu)元素對(duì)圖像先膨脹再進(jìn)行腐蝕的運(yùn)算稱為閉運(yùn)算。在結(jié)構(gòu)元素S下的閉運(yùn)算定義如下:
閉運(yùn)算通常用來填充目標(biāo)內(nèi)細(xì)小空洞、連接斷開的鄰近目標(biāo)、平滑其邊界的同時(shí)并不明顯改變其面積。
圖1所示為一個(gè)邊長為20個(gè)像素單位的方形,圖2 為其原形,下面對(duì)其進(jìn)行腐蝕和膨脹實(shí)驗(yàn)。
經(jīng)過1次腐蝕運(yùn)算,結(jié)果如圖3所示。從圖3中可以看出,細(xì)小的連接被消除,多余的噪聲點(diǎn)被去掉,邊緣也有一定的腐蝕效果。
對(duì)上述一次腐蝕結(jié)果進(jìn)行膨脹后得到圖4。從圖4中可以看出,圖像在一定程度上被擴(kuò)大了,圖中的孔經(jīng)過膨脹后變小,邊緣也有一定的膨脹效果。
對(duì)圖4進(jìn)行二次膨脹運(yùn)算得到圖5,可以從圖5中明顯看出,圖中的縫隙消失,小孔消失。因此,腐蝕和膨脹結(jié)合使用可以進(jìn)行圖像平滑。
圖像預(yù)處理[4,5]的主要目的是消除圖像中無關(guān)的信息,更凸出需要的信息,增強(qiáng)有關(guān)信息的可檢測性和最大限度地簡化數(shù)據(jù),從而改進(jìn)特征抽取、圖像分割、匹配和識(shí)別的可靠性。
本文主要使用閾值處理來提取有用信息,白色為目標(biāo)區(qū)域,黑色為背景區(qū)域。圖6為實(shí)驗(yàn)原始圖片,通過調(diào)試和觀察發(fā)現(xiàn)當(dāng)閾值95時(shí)為分割效果最佳,最佳閾值分割效果如圖7所示。
圖像分割的結(jié)果是二值圖像,從圖7中可以看出,目標(biāo)圖像中存在英文字符等偽目標(biāo)。首先利用半徑為2.5的圓形的結(jié)構(gòu)元素對(duì)圖7進(jìn)行開運(yùn)算,清除干擾項(xiàng),得到圖8所示的二值圖像。
開運(yùn)算關(guān)鍵代碼為:opening_circle(RemovedNoise,ThickStructures, 2.5)。
如圖8所示,可以看到在圖像中,0與1之間有粘連,這會(huì)導(dǎo)致無法準(zhǔn)確識(shí)別字符,所以必須要截?cái)嗾尺B。首先要進(jìn)行填充區(qū)域洞,避免截?cái)辔覀兯璧淖址?。其關(guān)鍵代碼為:fill_up_shape(RawSegmentation,RemovedNoise, ‘a(chǎn)rea’, 1, 5)。填充區(qū)域洞得到的結(jié)果如圖9所示。其次,利用矩形的結(jié)構(gòu)元素對(duì)圖9進(jìn)行開運(yùn)算,截?cái)嗾尺B,得到結(jié)果如圖10所示,其關(guān)鍵代碼為opening_rectangle(Solid,Cut, 1, 7)。最后利用intersection函數(shù)取區(qū)域交集得到目標(biāo)區(qū)域,如圖11所示。
經(jīng)過形態(tài)學(xué)圖像處理,增強(qiáng)了目標(biāo)字符特征,再利用特征直方圖提取目標(biāo)字符,結(jié)果如圖12所示。齊關(guān)鍵代碼為select_shape(NumberCandidates, Numbers, ‘a(chǎn)rea’, 300, 9999)。
本文使用Industrial_0-9A-Z.omc OCR訓(xùn)練字符對(duì)字符進(jìn)行識(shí)別。并利用for循環(huán)識(shí)別每個(gè)字符,并將得到的字符串顯示在窗口上,如圖13所示。
本文利用德國的機(jī)器視覺軟件Halcon,通過開運(yùn)算和閉運(yùn)算等形態(tài)學(xué)處理相關(guān)知識(shí)來實(shí)現(xiàn)對(duì)于光學(xué)字符的準(zhǔn)確識(shí)別。通過對(duì)圖像的預(yù)處理,利用灰度直方圖對(duì)圖像進(jìn)行閾值處理減少干擾獲得所需區(qū)域,利用開運(yùn)算和閉運(yùn)算形態(tài)學(xué)處理相關(guān)知識(shí)解決圖像粘連、模糊、斷裂等問題,最終通過OCR訓(xùn)練字符對(duì)其進(jìn)行識(shí)別。
圖2 原圖
圖3 1次腐蝕結(jié)果
圖4 1次膨脹結(jié)果
圖5 2次膨脹結(jié)果
圖6 原圖
圖7 閾值處理后圖像
圖8 利用圓形結(jié)構(gòu)特征開運(yùn)算
圖9 填充區(qū)域洞后圖像
圖10 利用矩形結(jié)構(gòu)特征開運(yùn)算
圖11 填充前和開運(yùn)算后交集圖
圖12 提取目標(biāo)字符
圖13 實(shí)驗(yàn)結(jié)果