徐寬廣,何東隅,韓冰,劉宇佳,李家棟
(1.南京鋼鐵股份有限公司板材事業部寬厚板廠,江蘇 南京210035;2.東北大學軋制技術及連軋自動化國家重點實驗室,遼寧 沈陽 110819)
光學字符識別(OCR)文本圖像的扭曲變形會影響OCR檢測效果,而在鋼板號識別的工業應用場景中,鋼板位置、鋼板號書寫位置都存在隨機性,每次識別的鋼板號圖像幾乎都存在一定的傾斜角度,人工書寫的鋼板號則更加復雜,除了更加沒有規律的傾斜外,書寫的字符行本身還存在扭曲現象,結合字跡深淺不一等情況,更加重了檢測難度和識別難度[1-6]。
傳統文本區域傾斜校正算法多采用兩種方式:一種是采用Hough變換進行圖像校正的方法,利用Hough變換發現圖像中最長直線,然后計算最長直線的斜率,根據斜率計算水平偏差角度,最后旋轉圖像使最長直線水平完成傾斜校正;另一種是先獲取圖像文本區域的最小包圍盒,然后同樣以最小包圍盒的上下邊求斜率計算水平偏差角度,最后旋轉圖像實現傾斜校正。上述兩種方式適用于噴印的標準字符檢測,對手寫造成的字符行扭曲現象糾正效果較差,最終影響識別效果[7-15]。
基于此,本文針對手寫鋼板號的OCR圖像,提出一種OCR文本圖像增強及矯正算法。該算法主要基于色階調整的方式增強手寫字符區域與鋼板背景的對比度,起到提升檢測率的作用,并基于骨骼提取+多項式擬合的方式獲取字符行扭曲曲線,再根據二維空間變換算法實現字符行的矯正,消除扭曲效果,起到提升識別率作用。
基于機器視覺的鋼板號在線檢測裝置主要由工業相機、輔助光源、圖像處理服務器組成。工業相機采用面陣相機拍攝鋼板表面圖像,獲取鋼板號信息;輔助光源用于提升拍攝場景亮度,消除日光、頂棚大燈等其他光線影響,保證相機拍攝區域范圍亮度足夠且相對均衡;圖像處理服務器與工業相機連接,接收采集的圖像進行識別處理,同時與過程控制系統通信,傳遞識別的鋼板號信息[16-20]。
在本文項目應用場景中,鋼板號在線檢測裝置部署于輥道旁,使用立柱支架固定,或利用現場墻壁、橫梁、立柱固定,保證檢測裝置高度足夠,且視野能夠覆蓋一定的輥道范圍。在本文應用中,相機識別覆蓋的輥道范圍定義為視覺檢測區域,檢測區域長度方向范圍要求大于鋼板號字符行寬度,保證鋼板經過輥道運輸進入檢測區域后,工業相機采集的一幀圖像可以呈現完整的鋼板號。檢測區域示意圖如圖1所示。

圖1 檢測區域示意圖Fig.1 Schematic diagram of detection area
系統檢測方式采用動態檢測方式,鋼板在輥道上運動,當鋼板頭部觸發檢測區域前的光柵信號時,檢測裝置進入工作狀態,開始循環采集圖像進行鋼板號識別處理,直至鋼板尾部離開檢測區域,或成功識別鋼板號停止。
鋼板號識別首先需要對采集圖像進行預處理,目標是對圖像進行降噪及增強,減弱背景干擾,提升鋼板號字符區域的特征,然后采用字符檢測模型提取鋼板號字符行所在位置,再之后進行字符行的矯正處理,最后通過識別模型得到識別的文本,至此完成一輪圖像的檢測識別。對于識別結果,檢測系統發送給生產跟蹤控制系統進行校驗,當識別鋼板號與計劃下發鋼板號匹配時,完成該塊鋼板號的識別檢測。
基于機器視覺的手寫鋼板號自動檢測的總體實現流程如圖2所示。

圖2 鋼板號識別檢測流程Fig.2 Steel plate numbering identification detection procedure
鋼板號識別硬件裝置通常部署在上料輥道處,由于物料鋼板是由行車、真空吸盤機從上方吊運至輥道上,為避免干涉,鋼板號識別裝置通常部署在上料輥道外的立柱高處,斜下拍攝鋼板圖像,原始圖像拍攝效果如圖3所示。

圖3 原始圖像Fig.3 Original image
為了保證最終的識別效果,首先需要對圖像進行透視變換,將圖像矯正到俯視的角度,透視變換后修正圖像如圖4所示。

圖4 透視變換后的修正圖像Fig.4 Corrected image after perspective transformation
手寫字體的線條相比噴印字體往往更加纖細,特征不明顯,更容易受到背景的干擾,此時直接基于原圖使用檢測模型檢測字符區域效果較差,存在字符行檢查不完整以及漏檢的情況。因此,在進行字符行區域檢測前,需要提升字符行區域與鋼板背景的對比度,使其更加“顯眼”[21-24]。
本文采用色階調整的方式對單駝峰特征圖像進行增強,以圖4為例,首先獲得圖像的灰度直方圖,如圖5(a)所示,在直方圖中的175附近出現了單駝峰,也是唯一波峰,可以看出整張圖的像素點都集中在該峰附近,參照應用場景可知,該區域應為鋼板背景區域,因此低于該波峰的區域都屬于背景,需要弱化處理,此處通過提升色階的起點,起到弱化作用;高于該峰區域部分為偏白色部分,手寫字符區域存在于該區域,考慮到圖像光照不均勻以及光滑物體反光影響等,白色粉筆字跡通常并不能達到灰度的最大值,因此高于波峰區域需要降低色階終點,起到字體增強的作用。此外,兼顧手寫文本區域的字體存在落筆輕重不一、鋼板背景存在明暗不均的情況,最終選擇的色階范圍需要包括單峰,也就是鋼板區域,色階起止點則定在波峰左右的兩個谷底附近,具體谷底位置采用三角閾值法進行確定,經過三角閾值法的計算,谷底位置如圖5(b)中的箭頭所示,依據此位置點進行色階增強,增強后效果如圖5(c)所示,可見對比度提升明顯。

圖5 色階增強過程Fig.5 Color scale enhancement process
首先使用機器學習中的文本區域檢測模型對文本區域進行提取,本文基于百度PaddleOCR框架的RES-FPN文本區域檢測算法,采集500張現場實拍圖像進行文本區域檢測的標注及finetune優化訓練,最終獲得字符區域效果如圖6所示。

圖6 字符區域檢測效果Fig.6 Character region detection effect
從圖6可以看出,白色粗線條代表了字符行所在的位置,可見字符區域并非水平直線,存在傾斜以及扭曲現象。
基于圖6進行輪廓提取,首先進行一次圖像形態學中的膨脹操作,擴大白色區域,目的是保證將手寫鋼板號邊緣部分囊括進區域中,保證字符選取完整,避免截斷,具體膨脹比例通常設定為:高度 2倍,寬度1.2倍。然后以該圖像白色區域作為掩碼,提取原始圖像的字符區域部分,效果如圖7所示。

圖7 輪廓字符行提取流程Fig.7 Outline character line extraction procedure
基于圖7(c),首先采用傳統方式進行傾斜矯正,具體方式為:先獲得字符區域的最小包圍盒,設包圍盒寬為w、高為h,然后以w、h為尺寸創建新圖片,最后將包圍盒的4個頂點坐標以及新圖片的4個頂點坐標一對一建立對應關系,并作為輸入條件,使用透視變換方法進行矯正處理,轉換效果如圖8所示,轉換后字符行兩端基本處于同一水平線。

圖8 字符區域透視變換Fig.8 Character region perspective transformation
字符行的骨骼表達了字符行的彎曲程度,如從圖8可以看到,進行傾斜校正后字符行左右兩端基本處于統一水平位置,但中間區域仍存在扭曲偏離,手寫鋼板號受書寫習慣的影響,通常都會出現該現象,因此需要繼續進行扭曲矯正處理。
首先基于圖8的轉換結果進行寬度方向的圖像像素遍歷,遍歷每一列,然后提取列中白色區域的垂直方向中心點,最后前后連接起來即是字符行的中心線,假設用y0表示x列中從上向下數第1個白色像素位置的縱坐標,y1為x列中從上向下數最后一個白色像素位置的縱坐標,則x列的中心坐標yc如式(1)所示:
yc=y0+(y1+y0)/2
(1)
由此方法遍歷圖像的每一列后,求得的字符行骨骼中心線如圖9所示。

圖9 中心線提取Fig.9 Centerline extraction
由于字符行受書寫時筆畫輕重、字符傾斜、字符扭曲以及背景干擾,導致提取的骨骼可能存在斷點及毛刺噪聲問題,而且鋼板號存在字符數量少、扭曲程度小的特征,因此本文方法采用多項式擬合的手段對骨骼進行平滑優化調整,多項式擬合的原理為冪函數可逼近任意函數,如式(2)所示:

(2)
其中:N為標識多項式階數,階數越高,擬合的曲線可變化程度越大。由于字符行變化較小,因此在本文方法應用中N為常量,固定取3,如式(3)所示:
y=k0+k1x+k2x2+k3x3
(3)
將中心線上各個點的橫坐標x、縱坐標y代入式(3)中,求得常量k0、k1、k2、k3,然后根據已知公式重新求取骨骼,效果如圖10所示。

圖10 擬合字符行骨骼曲線Fig.10 Fitting character line skeleton curve
根據第2.6節中求得的骨骼曲線多項式,對圖8變換后的結果進行二維空間變換處理,詳細處理步驟如下:
1)取得字符行骨骼的中心水平線,設擬合曲線各個點的縱坐標為y,中心線h的計算公式如式(4)所示:

(4)
求得的變換后的中心水平線位置如圖11中淺色橫線所示。

圖11 中心水平線位置示意圖Fig.11 Schematic diagram of the center horizontal line position
2)空間變換,主要思路是將原圖中骨骼曲線向目標中心水平線靠攏,采用的方式是對原始圖像橫向掃描,對每一列進行垂直方向的偏移矯正,經過矯正后,根據字符行四周的黑色區域進行剔除(未被寫入像素的區域為黑色,灰度值為0),得到字符的有效區域,最后進行一次中值濾波,削弱圖像變換過程產生的像素錯位問題,算法過程代碼描述如算法1所示。
算法1空問轉換
輸入A bitmap imgSre of sizew×h
輸入lines of size n //擬合曲線數組;
輸入c// 中心水平線
輸出A bitmap imgResult // 輸出轉換后圖像
1. function CORRECTIVETRANSFOR(imgSrc, lines, e)
2. i←0
3. imgResult←0
4. while i 5. r←lines[i].x 6. y←lines[i].y 7. j←y-c 8. r←0 9. while j< y+ h do 10. if j >0 and j< h and r 11. imgResulti[i,r]←imgSrc[x,j] 12. end if 13. r←r+1 14. j←j+1 15. end while 16. i 17. end while 18. imgResult←SpaceFiltering(imgResult)//去除//灰度為0的區域外,最大內切矩形范圍提取 19. imgResult←MedianFiltering(imgResult,3)//進//行一次中值濾波 20. return imgResult 21. end function 經過算法1矯正后,得到的圖像如圖12所示,字符行基本處于水平直線,文字信息更加規整,有助于提升CTC(Connectionist Temporal Classification)的切分效果。 圖12 最終校正結果Fig.12 Final correction result 隨機選擇一些手寫的素材進行驗證,均能得到較好的矯正效果,如圖13所示。 圖13 素材校正驗證效果 Fig.13 Material calibration verification effect 采用第3.1節步驟方式,對現場積累采集的3 220張手寫鋼板號圖像進行矯正處理,然后進行識別模型的finetune訓練,其中訓練集、驗證集和測試集的比例為7∶2∶1,最終訓練集準確度為96.86%,驗證集準確度為91.52%,測試集準確度為89.23%。識別模型訓練過程如圖14所示。 圖14 識別模型訓練過程Fig.14 Recognition model training process 經過圖像增強及字符行矯正的預處理操作,使識別模型訓練達到了較好的效果,增強了鋼板號識別設備應對人工手寫鋼板號的能力。 鋼板號檢測應用于在線生產物料的鋼板號識別,為了不影響生產節奏,校正算法需要滿足一定實時性的要求,通常需要在幾秒內完成檢測與識別。因此,本文方法所涉及步驟最大化考慮利用CPU并發能力以及GPU并行計算能力,將處理過程壓縮在極端時間內,實施現場實際部署的圖形工作站電腦配置為:CPU I7 9850,內存 32 GB DDR4 2 667 MHz;顯卡 NVIDIA Geforce GTX 3060 Ti 8 GB,開發環境為VS2017,OPENCV4.5.3(GPU編譯版本),以此軟硬件配置為例,處理一張4 096像素的原始圖像,連續測試多輪,各步驟處理時間消耗統計如表1所示。 表1 耗時情況說明Table 1 Describes the time consuming 如表1所示,進行一輪檢測合計耗時175 ms,此外本文項目所用識別模型同樣采用GPU編譯,平均耗時約50 ms。因此,本文項目實際進行一輪鋼板號識別總耗時小于等于250 ms,每秒能夠進行4次處理,滿足現場使用要求。 在實際應用場合中,手寫鋼板號存在字符行傾斜及扭曲、字體纖細、字跡對比度不足等情況,檢測漏檢率高,且整體識別率低,傳統鋼板號識別設備系統無法很好應對。本文針對手寫鋼板號的特征,提出一種圖像增強以及手寫字符行矯正方法。經過本文方法處理后文本字跡清晰,字符行工整平直,提供了更好的識別模型訓練素材,提高了識別模型的準確率,在整體上提升了手寫鋼板號識別的應用效果。
3 現場應用與結果分析
3.1 素材校正驗證

3.2 應用效果

3.3 方法效率

4 結束語