鄒 彤,樂(lè) 健,3,諶珺瑤,徐 繁,張 華
(1.南昌大學(xué)信息工程學(xué)院,江西南昌 330031;2.南昌大學(xué)江西省機(jī)器人與焊接自動(dòng)化重點(diǎn)實(shí)驗(yàn)室,江西南昌 330031;3.上海交通大學(xué)材料科學(xué)與工程學(xué)院,上海 200240)
數(shù)字儀表相對(duì)于傳統(tǒng)的指針式儀表更加方便,易讀,精準(zhǔn),在工業(yè)環(huán)境中大量使用。在許多情況下,仍然需要人工識(shí)別數(shù)字,如焊接時(shí)需要不斷調(diào)整焊接電源的電壓與電流大小,操作人員需要往返于焊接點(diǎn)與焊接電源之間,耗時(shí)且不安全,同時(shí)焊接自動(dòng)化研究中[1-4],對(duì)于焊接電源的電流與電壓的自動(dòng)識(shí)別研究較少,不能做到真正的自動(dòng)化;一些變電站中的數(shù)字儀表不能自動(dòng)同步到系統(tǒng)中,需要人工抄寫,既存在數(shù)據(jù)質(zhì)量問(wèn)題,也不能保證實(shí)時(shí)性[5],大多數(shù)變電站的巡檢機(jī)器人數(shù)字儀表的識(shí)別度不高[6]。船舶等行業(yè)也存在類似問(wèn)題。
針對(duì)數(shù)字儀表的數(shù)字字符識(shí)別問(wèn)題,國(guó)內(nèi)外研究人員發(fā)明改進(jìn)了許多識(shí)別算法。孫順遠(yuǎn)等利用改進(jìn)的SSD目標(biāo)檢測(cè)算法對(duì)儀表進(jìn)行定位檢測(cè)與數(shù)字識(shí)別[7]。段會(huì)川等基于模糊理論,模糊識(shí)別最大隸屬原則的數(shù)字識(shí)別器,快速識(shí)別儀表數(shù)字[8]。周曼等基于OCR光學(xué)字符識(shí)別的數(shù)字儀表自動(dòng)識(shí)別[9]。朱立倩提出基于深度學(xué)習(xí)的DDICRNet的數(shù)顯儀表字符識(shí)別算法[10]。
在工業(yè)設(shè)備中許多儀表沒(méi)有人機(jī)接口,不能將設(shè)備信息及時(shí)錄入系統(tǒng),需要人工識(shí)別,既費(fèi)時(shí)也不能保證準(zhǔn)確率,不利于工業(yè)智能化,依據(jù)儀表數(shù)字的特征,提出了一種自適應(yīng)×字算法識(shí)別儀表顯示數(shù)字,既不需要收集大量的數(shù)據(jù)圖片進(jìn)行訓(xùn)練,也相比模板匹配[11]、穿針引線法[12]等更快速,具備普遍性。利用USB攝像頭采集圖片,進(jìn)行預(yù)處理后裁剪出ROI(regio of interest)即數(shù)字區(qū)域,去除圖片中的小數(shù)點(diǎn),將數(shù)字單個(gè)剪裁出來(lái),利用橫縱比識(shí)別數(shù)字1,其他數(shù)字畫出×字,根據(jù)交點(diǎn)個(gè)數(shù)與交點(diǎn)位置做出判斷,進(jìn)行識(shí)別。
圖像中過(guò)多的其他色彩對(duì)于識(shí)別的數(shù)字來(lái)說(shuō)相當(dāng)于“噪聲”,所以要對(duì)圖像進(jìn)行灰度化并且灰度化對(duì)要識(shí)別的數(shù)字沒(méi)有影響,故將圖像中的所有像素點(diǎn)變成只含有亮度信息的像素點(diǎn),常用計(jì)算像素點(diǎn)的亮度值L的公式為
L=0.299×R+0.114×B+0.587×G
(1)
式中:R、G、B分別代表像素點(diǎn)對(duì)應(yīng)的紅、綠、藍(lán)的顏色值。
灰度化后邊緣檢測(cè),并設(shè)定灰度圖像的上下值消除數(shù)字區(qū)域以外的其他線條,使圖像成為二值圖像。再進(jìn)行膨脹,腐蝕操作方便下一步水平矯正,剪裁出ROI。
利用radon算子進(jìn)行水平矯正,其原理如圖1所示。圖1(a)中線段L的像素點(diǎn)在X軸上累加的結(jié)果為線段T,在Y軸上累加的結(jié)果為線段P,可以看出X、Y坐標(biāo)軸上像素點(diǎn)的累加都很平均,不存在突變,即某一個(gè)位置像素點(diǎn)的累加要多于其他像素點(diǎn)。在坐標(biāo)軸從0°逐漸旋轉(zhuǎn)至179°過(guò)程中,當(dāng)坐標(biāo)軸旋轉(zhuǎn)到線段L水平偏移角度θ,如圖1(b)所示位置時(shí),線段L的像素點(diǎn)在旋轉(zhuǎn)后的X′軸上累加的結(jié)果為線段T′,在旋轉(zhuǎn)后的軸上Y′累加的結(jié)果為線段P′,相較于坐標(biāo)軸旋轉(zhuǎn)角度小于θ時(shí)線段P′發(fā)生了突變,并且當(dāng)坐標(biāo)軸旋轉(zhuǎn)角度大于θ時(shí),線段P′又將變得平緩,以此得到旋轉(zhuǎn)角度θ,將圖像順時(shí)針旋轉(zhuǎn)θ后就可以完成水平矯正。當(dāng)對(duì)象為一副圖像時(shí),可以對(duì)圖像進(jìn)行膨脹處理,然后邊緣提取,再通過(guò)radon算子提取直線,旋轉(zhuǎn)角度為提取直線中像素累計(jì)點(diǎn)最大的直線所對(duì)應(yīng)的角度。
定位ROI的方法有基于顏色特征的HSV色彩空間[13],基于數(shù)學(xué)形態(tài)學(xué)的腐蝕、膨脹[14],小波變換[15]、遺傳算法[16]、神經(jīng)網(wǎng)絡(luò)[17]等。逐行累加圖像中的像素點(diǎn)的值并按行保存,圖像膨脹腐蝕后,只有數(shù)字區(qū)域存在大量的圖像,脫離數(shù)字區(qū)域時(shí)像素點(diǎn)的值存在突變。傳統(tǒng)的像素點(diǎn)的值累加為逐行逐點(diǎn)或逐列逐點(diǎn)的累加,圖像的分辨率往往很高,識(shí)別速度過(guò)慢,采用式(2)累加像素點(diǎn)的值可大幅度提高識(shí)別速度。
(2)
式中:sum為(x+1)行1列的矩陣,存放像素點(diǎn)的值的累加;m、n為圖片分辨率即長(zhǎng)、寬;N為步長(zhǎng),每行每列移動(dòng)的距離;f為圖片所對(duì)應(yīng)的矩陣;i為像素點(diǎn)的橫坐標(biāo);AxN為步長(zhǎng)整數(shù)倍行的像素點(diǎn)值的累加。
取分辨率為1 280像素×720像素的圖片,當(dāng)步長(zhǎng)N為20時(shí),像素點(diǎn)的累加程序改進(jìn)后運(yùn)行時(shí)間由1.03 s變?yōu)?.08 s,速度顯著提高且剪裁出的數(shù)字區(qū)域與傳統(tǒng)方法得到的剪裁區(qū)域基本相同,分別如圖2(a)、圖2(b)所示。
需將數(shù)字單個(gè)分割出來(lái)分別進(jìn)行識(shí)別,分別使用傳統(tǒng)的投影法,將數(shù)字的上下多余空間去除以及分割提取出單個(gè)數(shù)字,分割后的結(jié)果如圖3所示。
當(dāng)USB攝像頭超出數(shù)字區(qū)域的右邊或左邊一定距離時(shí),數(shù)字存在垂直傾斜,影響數(shù)字識(shí)別,不能正確分割出小數(shù)點(diǎn)并進(jìn)行識(shí)別。大多數(shù)算法依據(jù)小數(shù)點(diǎn)位置直接在識(shí)別結(jié)果中添加小數(shù)點(diǎn),不具備普遍性。提出一種方法矯正垂直傾斜,并識(shí)別出小數(shù)點(diǎn),在需要進(jìn)行垂直矯正時(shí)可作如下處理。其原理為:將圖片底部固定不動(dòng),頂部向傾斜相對(duì)的方向移動(dòng),將原本的矩形拉伸為平行四邊形,如圖4所示,矯正前后如圖5(a)、圖5(b)所示,移動(dòng)的單位個(gè)數(shù)l由式(3)~式(5)得出。
tanθ=k
(3)
(4)
(5)
式中:θ為垂直傾斜的角度;k為線段3、5的斜率,k=tanθ;x1、y1,x2、y2為l1、l2與線段3、5的交點(diǎn);d為過(guò)中心點(diǎn)做一條豎線與線段6交點(diǎn)的縱坐標(biāo)與交點(diǎn)p的縱坐標(biāo)的差值;l為移動(dòng)的單位個(gè)數(shù)。
長(zhǎng)、寬為m、n的圖片,即n×m的二值矩陣,將矩陣大小由n×m拓展為n×(m+l),新增的像素點(diǎn)的值都為0。矩陣按從上往下每行元素向傾斜相對(duì)的方向移動(dòng)l個(gè)單位,每向下一行更新d值即減1,l值隨著d值改變,元素向傾斜相對(duì)的方向移動(dòng)l個(gè)單位,至d值為0即到線段1后d值為負(fù)數(shù)即每行開始向著傾斜的方向移動(dòng)l個(gè)單位至最后一行,完成后字符分割,判別分割后的2張圖片是否有小數(shù)點(diǎn)。公式求解過(guò)程:中心點(diǎn)為(m/2,n/2),中心點(diǎn)上或下移動(dòng)(有時(shí)中心點(diǎn)會(huì)在線段1的上方)距離s與線段1的交點(diǎn)記為p(m/2,n/2±s),若無(wú)交點(diǎn)則將中心點(diǎn)作為交點(diǎn)p,利用交點(diǎn)p與圖片右方邊界上兩點(diǎn)確定l1、l2,用x1、y1,x2、y2求出斜率后根據(jù)d值求出l。
計(jì)算得到l后進(jìn)行垂直矯正,矯正后可以準(zhǔn)確分割出小數(shù)點(diǎn),再結(jié)合小數(shù)點(diǎn)的統(tǒng)計(jì)特征和幾何特征[18]、位置特征等進(jìn)行識(shí)別。
傳統(tǒng)的數(shù)字識(shí)別方法有穿針引線法、模板匹配法等,現(xiàn)在的數(shù)字識(shí)別方法多為支持向量機(jī)、深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)算法等。傳統(tǒng)的數(shù)字識(shí)別有識(shí)別率不高、識(shí)別速度慢的缺點(diǎn),而深度學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)算法需要大量的數(shù)據(jù)進(jìn)行學(xué)習(xí),數(shù)據(jù)的收集過(guò)于繁鎖。本文根據(jù)數(shù)字儀表顯示的數(shù)字具有的結(jié)構(gòu)特征,設(shè)計(jì)一種準(zhǔn)確識(shí)別數(shù)字的×字法,如圖6所示,原理如下:m、n為圖片的長(zhǎng)、寬,取圖像長(zhǎng)寬的一半為中心點(diǎn),在圖片左右邊界上分別取n/4與3n/4兩點(diǎn),共4點(diǎn)分別與中心點(diǎn)得到4條線段。將中心點(diǎn)與線段向上或向下移動(dòng)小段距離,若中心點(diǎn)與水平線段1有交點(diǎn)則將對(duì)應(yīng)線段編號(hào)值置1;反之置0,且中心點(diǎn)與線段回到起始位置。所求得的4條線段分別對(duì)應(yīng)線段2、3、4、5,同理當(dāng)與對(duì)應(yīng)線段有交點(diǎn)時(shí)對(duì)應(yīng)線段編號(hào)值置1,反之置0。數(shù)字3識(shí)別過(guò)程如圖7所示。
數(shù)字的識(shí)別由以下過(guò)程確定:
(1)線段1是否有交點(diǎn):有交點(diǎn)的為1、2、3、4、5、6、8、9歸為A類,無(wú)交點(diǎn)的為0、7歸為B類。
(2)線段2、3、4、5與所求得的4條線段的交點(diǎn)個(gè)數(shù):A類中,1的交點(diǎn)個(gè)數(shù)為0;2、3、5的交點(diǎn)個(gè)數(shù)為2;4、6、9的交點(diǎn)個(gè)數(shù)為3;8的交點(diǎn)個(gè)數(shù)為4。B類中,0的交點(diǎn)個(gè)數(shù)為4;7的交點(diǎn)個(gè)數(shù)為2。可識(shí)別出數(shù)字0、1、7、8,將2、3、5歸為C類,4、6、9歸為D類。
(3)線段2、3、4、5與所求得的4條線段編號(hào)的值:C類中,2為0、1、0、1;3為0、1、1、0;5為1、0、1、0;D類中,4為1、1、1、0;6為1、0、1、1;9為1、1、1、0??勺R(shí)別出數(shù)字2、3、5、6,剩余4、9。
(4)識(shí)別數(shù)字4、9:以中心點(diǎn)的橫坐標(biāo)做豎線,統(tǒng)計(jì)豎線與圖像的交點(diǎn)個(gè)數(shù),個(gè)數(shù)為1時(shí),識(shí)別為數(shù)字4,個(gè)數(shù)為3時(shí),識(shí)別為數(shù)字9。
當(dāng)?shù)玫骄€段2、3、4、5上的4個(gè)交點(diǎn)后,識(shí)別下一張分割出的數(shù)字圖片時(shí),可根據(jù)得到的交點(diǎn)位置,以交點(diǎn)為中心拓寬成I×J的矩陣,檢測(cè)該矩陣內(nèi)的像素點(diǎn)值是否含有1即可確定該交點(diǎn)所對(duì)應(yīng)的線段是否有交點(diǎn),不需要再作“×”,實(shí)現(xiàn)自適應(yīng)。
在實(shí)際識(shí)別中發(fā)現(xiàn)對(duì)數(shù)字1的識(shí)別準(zhǔn)確率不高,原因是數(shù)字1字符分割后像素點(diǎn)在X軸上的投影范圍為其他數(shù)字的一半左右,當(dāng)將分割后的圖片歸一化為統(tǒng)一的分辨率后,數(shù)字1被橫向拉伸,垂直壓縮,骨架提取,骨刺消除后仍存在許多骨刺,干擾識(shí)別。故提出一種基于橫縱比的方法識(shí)別數(shù)字1與其他數(shù)字,算法的描述如下:
li=ci-di
(6)
(7)
(8)
式中:li為除數(shù)字1外其余數(shù)字在X軸上的投影范圍長(zhǎng)度;ci、di為對(duì)應(yīng)數(shù)字在X軸上的投影起點(diǎn)與終點(diǎn)橫坐標(biāo);m為圖片寬度;ki為其余數(shù)字的橫縱比;V為選取的其余數(shù)字圖片的個(gè)數(shù);W為判別數(shù)字1的閾值。
當(dāng)識(shí)別圖片的橫縱比小于0.7W時(shí),判定其為數(shù)字1,反之為其余數(shù)字用×字法進(jìn)一步識(shí)別。
使用USB攝像頭采集焊接電源的電壓與電流圖像,并且圖像具有一定傾斜,統(tǒng)計(jì)各個(gè)數(shù)字在不同位置下的識(shí)別準(zhǔn)確度。
由表1能夠看出,在一定傾斜角度下,不同數(shù)字在不同位置下識(shí)別的準(zhǔn)確率非常高。識(shí)別的時(shí)間在0.60~0.75 s之間,能夠適用于大多數(shù)實(shí)時(shí)識(shí)別的場(chǎng)合。
表1 數(shù)字的識(shí)別結(jié)果
依據(jù)儀表顯示數(shù)字的結(jié)構(gòu)特點(diǎn)設(shè)計(jì)了一種識(shí)別儀表數(shù)字的算法,本設(shè)計(jì)不需要收集大量數(shù)據(jù)進(jìn)行權(quán)值訓(xùn)練,依據(jù)儀表數(shù)字的特征,相比部分算法更準(zhǔn)確、更快速;當(dāng)需要進(jìn)行垂直傾斜矯正時(shí),與自適應(yīng)×字算法配備了相容的垂直傾斜矯正的算法;具有自適應(yīng)性,可進(jìn)一步提高識(shí)別速度。