岳曉峰,龔青池
(長春工業(yè)大學(xué) 機(jī)電工程學(xué)院,吉林 長春 130012)
由于血袋使用的特殊性,所以血袋上的編號必須清晰、準(zhǔn)確、唯一。為了識別視頻中血袋上面排列的均勻有序的血袋熱轉(zhuǎn)印編號,本文以視頻流識別算法實(shí)現(xiàn)為主要目標(biāo),利用Simulink平臺的模塊功能,對視頻流圖像字符識別系統(tǒng)進(jìn)行研發(fā)。
首先讀入視頻,視頻圖像像素為480×720,然后利用Color Space Conversion模塊對視頻進(jìn)行灰度轉(zhuǎn)換,轉(zhuǎn)換后的圖像如圖1所示(由于篇幅有限,將圖縮放30%)。在模塊中選擇 R′G′B′to intensity,灰度(intensity)計(jì)算公式如下:
其中:R′、G′和B′分別為圖像的R、G、B值。
為了降低視頻圖像的矩陣大小,以減少后期的數(shù)據(jù)運(yùn)算量,提高整體運(yùn)行速度,利用Rerise模塊改變視頻圖像維度。改變維度后的圖像如圖2所示。在模塊中將Rerise factor in%設(shè)置為[20 20],即把圖片維度縮放20%,此時(shí)視頻圖像像素為96×144。
圖1 灰度轉(zhuǎn)換后的圖像
圖2 改變維度后的圖像
觀察視頻圖像會發(fā)現(xiàn)圖像中的字符排列整齊有序,大小相同(除個別較扭曲),所以利用Simulink中的位置分割模塊對視頻圖像中各個字符進(jìn)行分割,得到20×14的像素區(qū)域,從而在視頻圖像中分割出依照參數(shù)得出的字符,運(yùn)用這種方法可以得到從0到9以及字母P的分割圖像,如圖3所示。
圖3 字符分割
首先利用MATLAB中DIP工具箱函數(shù)im2bw對圖像進(jìn)行二值化處理,I=im2bw(I,0.2);原始圖像的像素點(diǎn)值范圍為0~255,而二值圖像的像素點(diǎn)值只能為0和1。其運(yùn)算法則如下(其中0.2為變換的閾值):
其中:I和Y分別為運(yùn)算前、后像素點(diǎn)的值。
以數(shù)字3為例,從圖4中可以看出,對于黑色的區(qū)域像素為0,而對于白色的區(qū)域像素為1。
使用Simulink封裝模塊將MATLAB程序封裝在模塊中,以備在流程圖中調(diào)用。程序采用圖像四分法以及孔洞補(bǔ)充算法對字符進(jìn)行識別。圖像四分法即把圖像均分成四部分,對于具有內(nèi)容的圖像,通過獲取其行列的邊界值可以得到其坐標(biāo)系,然后在坐標(biāo)系中計(jì)算各個象限中非零像素的百分比及整個字符占整個圖像的百分比。
圖4 數(shù)字3的圖像空間域顯示
首先在圖像中將字符區(qū)域框選出來,算法如下:
以數(shù)字3為例,來演示字符框選效果,見圖5。算法如下:
[a0b0]是處理后的圖像,然后獲取圖像的維度,找到X軸的行坐標(biāo)以及Y軸的縱坐標(biāo)和中心原點(diǎn)row_zero和col_zero,接下來開始劃分各個象限。此處以0為例,圖6為四分法劃分結(jié)果。代碼如下:
[a1b1]即為第一象限非零像素。以此類推,[a2 b2]為第二象限非零像素,[a3b3]為第三象限非零元素,[a4b4]為第四象限非零像素。然后依次計(jì)算四個象限非零元素占整個圖像的百分比out(1,1)、out(1,2)、out(1,3)、out(1,4),以及整個字符占整個圖像的百分比out(1,5):
圖5 數(shù)字3演示效果
圖6 數(shù)字0的四分法劃分
在計(jì)算時(shí),對視頻流里每個字符隨機(jī)選取5個樣本,將結(jié)果匯總得到一個5列、55行的數(shù)據(jù)庫(1到0,以及字母P,故55行)。表1為四分法運(yùn)算結(jié)果,因篇幅問題,只列舉了1和2的數(shù)據(jù)結(jié)果(共10行)。
表1 數(shù)字1和2的5個隨機(jī)樣本四分法數(shù)據(jù)
匹配算法采用最小二乘法,它通過最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配。根據(jù)算法原理可以得到匹配算法的代數(shù)形式為:
其中:Yk為本算法中的虛擬距離;Xk為根據(jù)四分法得到的待識別字符的計(jì)算數(shù)據(jù);αk為數(shù)據(jù)庫里的數(shù)據(jù)。設(shè)i是從1到5的自然數(shù)即數(shù)據(jù)庫中的列數(shù),j為行數(shù),把公式編成語句如下:
然后對每一行的數(shù)據(jù)進(jìn)行求和,并且找到和值最小的數(shù)據(jù),這個和值最小的數(shù)據(jù)即為算法最終要尋找的匹配數(shù)據(jù)。
在系統(tǒng)實(shí)現(xiàn)時(shí)發(fā)現(xiàn)僅靠四分法算法的識別率并不是很好,原因是視頻流中有一些字符比較模糊、扭曲,所以還需要一些補(bǔ)充算法來對一些識別結(jié)果進(jìn)行校正。
3.4.1 孔洞識別
我們觀察這11個字符,發(fā)現(xiàn)1、2、3、5、7沒有孔洞,0、4、6、9、P具有一個孔洞,8具有兩個孔洞。因而孔洞這個特征在識別上具有一定意義。
根據(jù)對圖像黑色和白色像素點(diǎn)的描述可以知道,孔洞位置處的像素點(diǎn)值為0,所以為了將孔洞標(biāo)記出來,需要將圖像取反,從而將原來的黑色變?yōu)榘咨?,原來的白色變?yōu)楹谏D7為數(shù)字8取反后的圖像。
隨后需要運(yùn)用bwlabel函數(shù)對二值圖像非零區(qū)域進(jìn)行元素標(biāo)記。然后計(jì)算孔洞數(shù)目holenum。圖8為數(shù)字8的bwlabel函數(shù)轉(zhuǎn)換。從圖8中可以看出此時(shí)原來被框選的像素值為1的點(diǎn)均被重標(biāo)記為自然數(shù),且每個區(qū)域的值都不同,數(shù)字“8”被標(biāo)記的最大值為3。根據(jù)前面的介紹可以知道,對于只有一個孔洞的數(shù)字則標(biāo)記的最大值為2,沒有孔洞的數(shù)字則標(biāo)記的只有原來的背景,故最大值為1。
此外孔洞的坐標(biāo)也可以作為識別字符的一個參量。重復(fù)以上步驟,對圖像取反并且對圖像標(biāo)記:
對于6與9的標(biāo)記位flag69,根據(jù)孔洞平均行坐標(biāo)與行原點(diǎn)的關(guān)系確定是6還是9,代碼如下:
3.4.2 像素點(diǎn)識別
在實(shí)現(xiàn)四分法識別以及孔洞識別算法之后發(fā)現(xiàn)數(shù)字0、6、9仍然存在個別錯誤識別,所以需要專門對這三個數(shù)字進(jìn)行一次補(bǔ)充識別。識別算法選擇像素點(diǎn)求和算法。
根據(jù)前文步驟,首先仍然先找到圖像中非零像素點(diǎn),找到最大、最小位置點(diǎn),獲取邊緣圖像,然后找到行列中心點(diǎn),確定橫、縱坐標(biāo)軸及原點(diǎn)(這里rowzeros為X軸,與前文不同,望讀者注意),代碼如下:
找到原點(diǎn)附近的9個像素點(diǎn),提出0、6、9識別的標(biāo)志位flag069,然后對這9個像素點(diǎn)求和并且判定求和與3的關(guān)系:“if sum((sum(I_zeros))')<=3”,則輸出結(jié)果flag069為0。分別找出X軸以上及以下的非零元 素 點(diǎn) “num_up=length(find(row_temp>rowzeros));num_down=length(find(row_temp<rowzeros))。如果num_up大于num_down,即X軸上面的元素點(diǎn)多于X軸下面的元素點(diǎn),則flag069為9,否則為6。
圖7 數(shù)字8的取反
圖8 數(shù)字8的bwlabel函數(shù)轉(zhuǎn)換
采用本文的算法對一段20s的視頻進(jìn)行字符識別,進(jìn)行了上述幾個步驟的處理。312個字符中,僅有一個數(shù)字9因過于扭曲,識別錯誤,識別率接近100%,故本方法能夠?qū)崟r(shí)有效地識別視頻流中的字符,滿足實(shí)際系統(tǒng)的要求。圖9為圖1中字符的最終識別結(jié)果(圖中11即代表P,10代表O)。
圖9 圖1中字符最終識別結(jié)果
[1]Feizenszwalb P F,Huttenlocher D P.Efficient belief propagation for early vision[J].International Journal of Computer Vision,2006,70(5):41-54.
[2]袁振濤,郭俊,師福明.利用BP神經(jīng)網(wǎng)絡(luò)識別圖像基點(diǎn)[J].機(jī)械工程與自動化,2012(3):200-201.
[3]遲健男,王先梅,胡四泉,等.視覺測量技術(shù)[M].北京:機(jī)械工業(yè)出版社,2011.
[4]凌彤輝,黃山,王新增,等.車牌字符分割算法的研究[J].中國測試技術(shù),2005(1):41-43.
[5]薛定宇,陳陽泉.基于 MATLAB/Simulink的系統(tǒng)仿真技術(shù)與應(yīng)用[M].北京:清華大學(xué)出版社,2002.
[6]劉成安,孫濤.車牌自動定位與識別方法研究[J].微計(jì)算機(jī)信息(測控自動化),2007(25):263-265.